0000             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

0000             ;; Zmeny v BSrom118 potrebne pre BSDOS  ;;

0000             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

0000             ;; [x] .. zmeny specificke pre BSrom118 ;;

0000             ;; Pre ine romky ich treba spravit inak ;;

0000             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 

0000             ;; Pouzivane sluzby BSDOSu:

0000            

0000             em562   =       #20

0000             em4c6   =       #21

0000             basic   =       #31

0000             funkc   =       #32

0000            

 

04C6             ;; Napichnutie load-save rutiniek pre tape emulaciu

04C6            

04C6 CD CD 0E            call    tstsav  ;; SAVE #4C6

04C9            

 

0559 00                  nop             ;; Predbezne nezakazuj prerusenie

055A            

 

055C 3E                  db      #3E     ;; Predbezne nemen farbu borderu

055D            

 

0562 CD DB 0E            call    tstloa  ;; LOAD #562

0565             

 

060E 00                  nop             ;; Meno = nepovinny parameter

060F 00                  nop             ;; pre LOAD/VERIFY/MERGE

0610 00                  nop

0611            

 

0990 02                  db      #02     ;; Pri SAVE cakaj iba 2/50 sec

0991            

 

0A53 C0                  ret     nz      ;; Nepouzivaj ZX Printer

0A54 00                  nop

0A55 00                  nop

0A56            

 

0B8E 11                  db      #11     ;; Nepouzivaj ZX Printer

0B8F            

 

0EAC             ;; Na tomto mieste boli povodne rutinky pre ZX Printer,

0EAC             ;; ale teraz je toto miesto vyuzite na patchy pre BSDOS.

0EAC            

0EAC C9                  ret             ;; Pre istotu (ak by niekto volal COPY)

0EAD            

0EAD EF          stkdup  rst     #28     ;; Zdvojenie udaja

0EAE 31                  db      #31     ;; na zasobniku kalkulacky

0EAF 38                  db      #38     ;; (pouziva BSDOS pri vypocte)

0EB0 C9                  ret

0EB1            

0EB1 2E 40 24 60 znkcmd  db      '.@$`'  ;; Zaciatocne znaky novych prikazov

0EB5            

0EB5 21 B1 0E    newcmd  ld      hl,znkcmd ;; Rozsireny basic interpreter

0EB8 01 04 00            ld      bc,#04

0EBB ED B1               cpir

0EBD C2 32 3B            jp      nz,#3B32  ;; [x]

0EC0 32 74 5C            ld      (23668),a

0EC3 3E                  db      #3E

0EC4 F1          cmdmgf  pop     af

0EC5 ED 73 3F 5C cmdexe  ld      (23615),sp

0EC9 3E 31               ld      a,basic

0ECB 18 20               jr      doscal

0ECD            

0ECD 21 AE 3C    tstsav  ld      hl,tapdsk ;; Obsluha pre SAVE #4C6

0ED0 CB 46               bit     0,(hl)

0ED2 21 80 1F            ld      hl,#1F80

0ED5 C8                  ret     z

0ED6 6F                  ld      l,a

0ED7 3E 21               ld      a,em4c6

0ED9 18 11               jr      loasav

0EDB            

0EDB 3A AE 3C    tstloa  ld      a,(tapdsk) ;; Obsluha pre LOAD #562

0EDE 0F                  rrca

0EDF 38 09               jr      c,loados

0EE1 F3                  di

0EE2 3E 0E               ld      a,#0e

0EE4 D3 FE               out     (#fe),a

0EE6 DB FE               in      a,(#fe)

0EE8 1F                  rra

0EE9 C9                  ret

0EEA 3E 20       loados  ld      a,em562

0EEC C1          loasav  pop     bc

0EED CD A0 3C    doscal  call    bnkcal  ;; Volanie sluzby bsdosu

0EF0 20 00               dw      #20     ;; adresa pre RST #20

0EF2 C9                  ret

0EF3             

0EF3 3E 32       newfnc  ld      a,funkc ;; Rozsirenie funkcie FN x()

0EF5 CD ED 0E            call    doscal

0EF8 CA 12 27            jp      z,#2712

0EFB DF                  rst     #18

0EFC CD 30 25            call    #2530

0EFF CA C3 27            jp      z,#27C3

0F02 C3 F8 27            jp      #27F8

0F05            

0F05 00                  block   38,0    ;; Volne miesto pre dalsie patchy

0F2B            

 

1304             ;; Zmeny vo vypise chybovych hlaseni

1304            

1304 76                  halt            ;; Pred vypisom hlasenia pockaj na luc

1305 00                  nop             ;; (povodne tu HALT bol ale v bsrom je iba EI)

1306 00                  nop

1307 00                  nop

1308 FD CB 01 AE         res     5,(iy+1)

130C 00                  nop             ;; 6 bajtov je usetrenych vdaka tomu

130D 00                  nop             ;; ze sa nepouziva/nepodporuje ZX Printer

130E 00                  nop             ;; a nie je treba mazat buffer tlaciarne

130F            

 

1AA8             ;; Nova syntax starych prikazov

1AA8            

1AA8 05                  db      #05     ;; NEW <cislo>

1AA9 C5 0E               dw      cmdexe

1AAB            

 

1AD6 05                  db      #05     ;; COPY <cislo>

1AD7 C5 0E               dw      cmdexe

1AD9            

 

1B14 05                  db      #05     ;; CAT <cislo>

1B15 C5 0E               dw      cmdexe

1B17            

 

1B44             ;; Napichnutie basic interpretra

1B44             

1B44 B5 0E               dw      newcmd  ;; Nove basicove prikazy [x]

1B46            

 

1CDC C4 0E               dw      cmdmgf  ;; Prikazy pre magnetofon

1CDE            

 

25F6 F3 0E               dw      newfnc  ;; Nove funkcie FN x()

25F8            

 

393E             ;; Zmeny specificke pre bsrom118

393E            

393E 08                  db      #08     ;; Border 0 pri srsani v NMI menu [x]

393F            

 

397F 57                  db      #57     ;; Korektny OUT na #7FFD pre +2A/+3 [x]

3980            

 

3C98             ;; ROM bios v romke

3C98            

3C98 18 32       setrwp  jr      romdis  ;; #3C98 Set rom bank + write protect

3C9A 18 35       setdwp  jr      dosdis  ;; #3C9A Set dos bank + write protect

3C9C 18 38       setrwe  jr      romena  ;; #3C9C Set rom bank + write enable

3C9E 18 3B       setdwe  jr      dosena  ;; #3C9E Set dos bank + write enable

3CA0 18 0D       bnkcal  jr      bncall  ;; #3C9A Call other bank

3CA2 AF          settap  xor     a       ;; 15522 Set tape

3CA3 E6                  db      #e6

3CA4 3E 7F       setdsk  ld      a,#7f   ;; 15524 Set disk

3CA6 CD 9C 3C            call    setrwe

3CA9 32 AE 3C            ld      (tapdsk),a

3CAC 18 EA               jr      setrwp

3CAE            

3CAE 03          tapdsk  db      #03     ;; Bit0: 0=tape,1=disk

3CAF            

3CAF CD 9C 3C    bncall  call    setrwe

3CB2 22 C7 3C            ld      (reghl+1),hl

3CB5 E1                  pop     hl

3CB6 23                  inc     hl

3CB7 23                  inc     hl

3CB8 E5                  push    hl

3CB9 F5                  push    af

3CBA 2B                  dec     hl

3CBB 7E                  ld      a,(hl)

3CBC 2B                  dec     hl

3CBD 6E                  ld      l,(hl)

3CBE 67                  ld      h,a

3CBF F1                  pop     af

3CC0 E5                  push    hl

3CC1 21 C9 3C            ld      hl,switch

3CC4 E3                  ex      (sp),hl

3CC5 E5                  push    hl

3CC6 21 55 55    reghl   ld      hl,#5555

3CC9 C3 9E 3C    switch  jp      setdwe

3CCC            

3CCC             ;; Nasledujuci kod je hardwerovo zavisla cast ROM biosu,

3CCC             ;; preto sa priamo v samotnej romke nenachadza,

3CCC             ;; ale sa doplni az po nabootovani systemu.

3CCC            

3CCC F5          romdis  push    af

3CCD 3E 40               ld      a,#40   ;; <- stranka rom - zakaz zapisu

3CCF 18 0D               jr      bnkout

3CD1 F5          dosdis  push    af

3CD2 3E 41               ld      a,#41   ;; <- stranka dos - zakaz zapisu

3CD4 18 08               jr      bnkout

3CD6 F5          romena  push    af

3CD7 3E 60               ld      a,#60   ;; <- stranka rom - povolenie zapisu

3CD9 18 03               jr      bnkout

3CDB F5          dosena  push    af

3CDC 3E 61               ld      a,#61   ;; <- stranka dos - povolenie zapisu

3CDE D3 17       bnkout  out     (#17),a

3CE0 F1                  pop     af

3CE1 C9                  ret

3CE2             

3CE2 00                  block   14,0

3CF0