Obsah této stránky
==================
English manual for BSROM118
Slovenský manuál k BSROM118
Popis změn BSROM 118 potřebných pro BSDOS





EN

BSrom118 - Modified ZX Spectrum ROM - (c) Busy soft - Release 13.03.94

Original rom: (c) Amstrad

Generally
=========

It's classic ZX Spectrum 48k (+) ROM with this modifications:


Corrected errors
================


Initialization (reset,new)
==========================

After start is system report no classic message. There is displayed information about length of basic, variables and free memory. 48k and 128k reset do not test memory. I think damaged memory is past...


Extendable NMI handler
======================

RESET and NMI signals causes jump into address #00 and #66 and this event is indicated by snowing on red border. If SP was in range 0-#4000 then is set to #5800 value. Control keys:

B - warm start of basic system. All variables are inicialized but PROG, VARS and ELINE was not changed. It causes that basic program with variables is not deleted.
N - the same as CLEAR #5FFF: NEW - memory above #6000 is not changed.
R - the same as CLEAR #FFFF: NEW - classic 48k reset.
E - extended 128k reset. It clears all 128k memory on Spectrum 128k
I - sets AY to quiet and on MB-02 resets FDC,DMA and stops disk drive
S - save "" screen$ on tape (on MB-02 can save on disk)
T - like USR 15522 - set tape as actual device (only on MB-02)
D - like USR 15524 - set disk as actual devide (only on MB-02)
Q - return into broken program. Warning: return will be correct only if SP was not set to #5800! All registers (beside low 7 bit of refresh) are restored to original values.
M - jump into MRS 08/09 debugger. MRS must be loaded into memory. All registers on register panel will be set to values from broken program - you can continue broken program by using any trace mode of MRS debugger. Warning: This feature will works only if SP was not set to #5800 (like as Q-quit).
0..9 - switching of RAM banks on ZX Spectrum 128k. If SP is in range #C000-#FFFF then it will be set to #5800. This is the same as OUT (#7FFD),number - you can see second videoram by pressing 8 or 9 key.
U - user function. There are JP XXXX at address #3901. You can set address of this jump to you own routine. Your routine can end with ret - it causes return into NMI handler.
Z - user function like 'U' but this key is reserved for using in MB-02 applications (for example make snapshots,...) However, if you want use this key, place address of you routine into address #3904.


Additional syntax of old commands
=================================

Legend:
num ...... any expresion with number result
string ... any expresion with string result
Items in brackets < > are optional.

  • CONTINUE <num> ... if num is nonzero then run machine code from this address. Different from USR is if machine code returns (very seldom event:)) IY must be set to #5C3A but HL' can be different #2758.
  • CLS <num> ... if num is nonzero then all attributes and border is set to num. For example: CLS 7 = BORDER 0: PAPER 0: INK 7: BRIGHT 0: FLASH 0.
  • GOTO, GOSUB, PAUSE, BORDER ... numer parameter of this commands is optional, not compulsatory. If parameter not present, means zero value.
  • <PRINT> list of items ... Yes, it means that PRINT command is optional ! If list of items is not beginning with characters , ; ' then you may not write PRINT command in your program :)
  • POKE add,byte ... classic original poke (use comma)
  • POKE add;word ... stores 16-bit number into address add (use semicolon)
  • POKE add,string ... stores string into address add (use comma) - first character into address add, second into add+1, third into add+2...etc.
  • VAL num ... 16-bit PEEK. Returns 16-bit word from address num. This function is opposition to 'POKE add;word' command.
  • VAL$ num ... If parameter is number type then result of this function is four character string contains hexadecimal digits of this number. This is very useful for convert number into hexadecimal base.
  • %,& ... prefix characters for writing hexadecimal numbers. The same as BIN for writing binary number. Number must be max 16-bit.


    New commands and its syntax
    ===========================

  • , <num> ... comma ... edit of basic line num.
  • ' <num> ... apostrophe ... switching of RAM banks on ZX Spectrum 128k. The same as OUT #7FFD,num. (Be sure that RAMTOP is under #C000!)
  • © ... 'C' in circle ... the same as 'B' in NMI handler. Inicialize all system variables besides PROG, VARS and ELINE.
  • ^ ... up arrow ... the same as E in NMI handler. Clears all 128k memory.
  • ? ... displays information about length of basic, variables and free memory. This command is called internally after each reset or new.
  • * ... header ... displays header information from tape in following format: type of file : name of file : address : length
  • _ .. the same as USR 00102 - jump into NMI handler ('Q' continues)
  • # .. the same as USR 54885 - jump into MRS 08/09 (MRS must be loaded)


    One new system variable
    =======================

    NMI handler does not need vector at address 23728. This address is used for storing three bits with following meaning:

    bit 0=0: number of basic lines is displayed with four digits
    bit 0=1: number of basic lines is displayed with five digits
    bit 1=0: control codes in autolist is displayed normally
    bit 1=0: control codes in autolist is displayed by bit 2
    bit 2=0: do not display control codes in autolist
    bit 2=1: display all control codes as "?" character

    This variable is initialized to zero value after reset or new.

    Five digits displaying of basic numbers is very useful if you use line range 0 to 16383. This feature has no effect to running of basic program. If you edit any basic line then this line is edited with five digit numbers always. If number is under 10000 then it's space blanked from left.

    ----------------------

    There is a little free space on address #3C98-#3CEF in this rom. The space is reserved for MB-02 extensions. If you have no MB-02 then you can use the space for some your routines as you want.





    SK

    BSrom118 - Modifikovana ZX Spectrum ROM - (c) Busy soft - Release 13.03.94

    Originalna romka: (c) Amstrad


    Vseobecne
    ---------

    Jedna sa o klasicku romku zo ZX Spectra 48k (+) na ktorej boli spachane tieto upravy:
    • pribudlo zopar novych prikazov - prehlad dalej
    • rozsirena syntax niektorych prikazov - prehlad dalej
    • asi stvornasobne rychle chytanie uvodneho tonu z kazetaku
    • programovy kurzor zmeneny zo znaku ">" na znak "*"
    • zvysena frekvencia chyboveho beepu
    • spracovanie hexadecimalnych cisel v rozsahu 0-65535
    • moznost pisania basicovych riadkov v rozsahu 0-16383 (mozete normalne editovat a odosielat aj nulty riadok!)
    • rychlejsi autorepeat na zaciatku po inicializacii
    • pri pokuse o odoslanie chybneho prikazu alebo riadku skoci kurzor na miesto chyby (lepsie ako v IZO-ROM)
    • moznost vypisovat listing programu bez riadiacich kodov (nereaguje na farby, TAB a AT - vhodne na zasite programy)
    • osetrenie NMI pomocou rozsiritelneho menu - prehlad dalej
    • opravene niektore chyby - prehlad dalej
    • dva nove znaky v znakovom subore - maly podciarnik a stvorcek
    • programovy kurzor "*" sa vypisuje iba pri autoliste
    • po editacnej zone sa da chodit hore a dolu
    • reset a new mazu pamet pomocou PUSH - je to super rychle
    • autolist mozno v kazdom okamihu zastavit klavesou "Q"
    • niekolko vymozenosti pre uzivatelov ZX Spektra 128k

    Prehlad chyb, ktore boli opravene
    ---------------------------------

    • Chybne osetenie NMI rutiny - vyriesilo to NMI menu. Ale prislusny bajt zostal nezmeneny - to keby ho nahodou nejaky program moc usilovne zacal skumat a testovat.
    • PRINT AT 0,0;CHR$ 8; - posunulo kurzor na poziciu AT -1,31 - v tejto romke sa poloha kurzora nemeni.
    • Ak sa malo vypisat chybove hlasenie a je zakazane prerusenie, tak to zmrzlo. V tejto romke sa to nemoze stat.
    • Normalna romka sama seba na adresach 0..4 prepisuje. Tato romka nie, preto moze bezat aj bez zakazaneho zapisu v ramke.
    • Ak je posledny riadok v programe N, vy odoslete prazdny riadok N+1 (akoze ho zmazete) a potom stlacite EDIT, editne sa vam N-ty riadok aj s programovym kurzorom. V tejto romke sa programovy kurzor objavuje iba autolistingu a preto sa nikdy nemoze objavit v editnutom riadku.

    Po starte alebo NEWe sa romka prihlasi vypisanim informacie, kolko je volneho miesta (basic a premenne basicu maju vtedy samozrejme nulovu dlzku) a vypise sa normalne hlasenie OK. 48k a 128k reset a ani NEW netestuju pamet - predpoklada sa, ze cela 48kB alebo 128k pamet je funkcna.

    Po resete alebo NMI (skoku na adresy #00 alebo #66) zacne srsat border, co je znakom ze ste v NMI menu. Ak by bol zasobnik SP na adresach #00-#4000, zmeni sa na #5800. Ovladacie klavesy:

    B - teply start basicu. Inicializuju sa vseky systemove premenne okrem PROG, VARS a ELINE - teda basicovy program a basicoe premenne zostanu zachovane.
    N - to iste ako CLEAR #5fff: NEW - teda pamet nad #6000 ostane neporusena.
    R - zmaze celu pamet 48kB - je to klasicky 48k reset.
    E - zmaze celu pamet 128k - (extend reset 128k)
    I - resetuje tieto periferie: AY, FDC, DMA a mechaniku disku.
    S - save "" screen$ na aktualne zariadenie (MG alebo disk)
    T - ako USR 15522 cize aktualne zariadenie bude paska.
    D - ako USR 15524 cize aktualne zariadenie bude disk.
    Q - navrat spet do preruseneho programu. Pozor: navrat bude korektny iba vtedy, ak SP nebol zmeneny na #5800. Pri navrate su vsetky registre (okrem dolnych 7 bitov registra R) obnovene na povodne hodnoty.
    M - skok do debuggera v MRS (musi byt v pameti!). Vsetky registre sa nastavia ako boli v okamihu prerusenia programu pomocou MNI - cize mozno preruseny program dalej krokovat (PC a SP sa korektne nastavia iba ak sa SP nezmenilo na #5800!).
    0..9 - prepnutie ram-banky na 128k. Ak by sa SP nachadzal v oblasti hornych 16 kB, bude zmeneny na #5800. Je to vlastne OUT (#7ffd),cislo - cize pomocou 8 a 9 si mozno pozriet obsah druhej videostranky.
    U - uzivatelska funkcia - na adrese #3901 je JP XXX, kde si moze uzivatel napokovat adresu svojej aplikacie a po stlaceni klavesy "U" sa tato aplikacia spusti. Navrat je normalne pomocou RET.
    Z - uzivatelska funkcia - na adrese #3904 je DW xxx, a dalej presne tak isto ako "U". Tieto dve funkcie v samotnej romke nerobia nic, ale su vyhradene pre dalsie rozsirenia (napr. rezidentny monitor).


    Rozsirenie syntaxe existujucich prikazov
    ----------------------------------------
    (Polozky v zatvorkach < > su nepovinne.)

  • CONTINUE <vyraz> .. ak je vyraz nenulovy tak sa spusti strojak od tejto adresy. Pozor ! Pri navrate musi byt na rozdiel od USR register IY nastaveny na #5c3a, ale zato HL' nemusi mat hodnotu #2758.
  • CLS <vyraz> .. ak vyraz je nenulovy tak sa nim nastavia vsetky farby (pr. CLS 7 = BORDER 0: PAPER 0:INK 7:BRIGHT 0:FLASH 0).
  • GOTO, GOSUB, PAUSE, BORDER .. ciselny parameter pri tychto prikazoch je nepovinny - nezadany sa chape ako nula.
  • <PRINT> zoznam poloziek .. Za predpokladu, ze zoznam poloziek nezacina cislicou, ciarkou, bodkociarku a apostrofom mozete pokojne vynechat prikaz PRINT. Totiz ak sa pri behu programu najde nieco, co nie je ziadny prikaz, skoci sa do rutinky na prikaz PRINT.
  • POKE add,byte .. normalne povodne poke
  • POKE add;word .. dvojbajtove poke (nizsi bajt sa uklada nizsie)
  • POKE add,retazec .. ulozene daneho retazca do pameti. Prvy znak sa ulozi na adresu add, druhy na adresu add+1 ... atd. V principe nezalezi na tom, ci pri ukladani retazca v tomto prikaze napisete carku alebo bodkociarku, ale z dovodu mozneho rozsirenia v buducnosti sa odporuca pouzivat vyhradne iba ciarku.

  • VAL$ <vyraz> .. ak je vyraz ciselneho typu, tak vysledkom tejto funkcie je stvorznakovy retazec hexadecimalnych cislic - inac povedane prevod DEC -> HEX (pr. VAL$ 33023 = "80ff").
  • VAL <vyraz> .. ak je vyraz ciselneho typu, tak vysledkom tejto funkcie je dvojbajtove cislo uvozene na tejto adrese - inac povedane dvojbajtovy PEEK.
    %,& .. prevod HEX -> DEC podobne ako je BIN prevod BIN -> DEC. Inac povedane ak chcete ako cislo zapisat hexadecimalnu konstantu, musi zacinat znakom "%" alebo "&". Znak "#" nebol pouzity preto, lebo ten sa pouziva na nastavenie kanala v prikazoch PRINT A INPUT (pr. %80ff = 33023).


    Nove prikazy a ich syntax
    -------------------------

  • , <vyraz> .. (ciarka) editne prislusny basicovy riadok. Ak vyraz nie je uvedeny alebo nadobuda nulovu hodnotu, edituje sa riadok s najnizsim poradovym cislom.
  • ' <vyraz> .. (apostrof) prepina ram-banky na 128k ako OUT (#7ffd),vyraz. Vyraz musi byt v intervale 0 az 15. Pozor! Pri prepinani musi byt RAMTOP mensi ako #c000 (inac ako 0-9 v NMI menu).
  • © .. obnovi vsetky systemove premenne okrem PROG, VARS a ELINE. (Ako "B" v NMI menu.) [C v kruzku]
  • ^ .. velky 128k reset - maze celu pamet 128k. (Ako "E" v NMI menu.) [sipka hore]
  • ? .. vypise informaciu o dlzke programu, dlzke premennych a velkost volnej pamete pre basic.
  • * .. header - z pasky cita hlavicky a vypisuje o nich toto: typ suboru : meno suboru : adresa : dlzka
  • _ .. to iste ako USR 00102 - skok do NMI menu.
  • # .. to iste ako USR 54885 - skok do MRS (musi byt v pameti!).


    Jedna nova systemova premenna
    -----------------------------

    Kedze NMI rutinka vzdy zavola NMI menu, nepotrebuje uz vektor na adrese 23728. Preto tri bity na 23728 su takto vyuzite:

    bit 0=0:cisla basicovych riadkov sa vypisuju ako stvormiestne
    bit 0=1:cisla basicovych riadkov sa vypisuju ako petmiestne
    bit 1=0:pri autoliste sa vypisuju riadiace kody normalne
    bit 1=1:pri autoliste sa vypisuju riadiace kody podla bitu 2
    bit 2=0:pri autoliste sa vobec nevypisuju riadiace kody
    bit 2=1:pri autoliste sa vypisuju riadiace kody ako "?"

    Po resete alebo newe sa tu zapise nula. Petmiestne cisla riadkov maju vyznam vtedy, ak pouzivate riadky v rozsahu 10000 az 16383. Tento bit nijako neovplyvnuje beh programu s takymito riadkami, len meni format listingu. Pri editovani riadku sa jeho cislo vypise vzdy ako petmiestne.

    ----------------------------

    Na adresach #3C98-#3CEF sa nachadza kusok volneho miesta. Toto miesto je rezervovane pre pouzitie v MB-02. Ale ak nemate MB-02 tak si mozete toto miesto vyuzit pre svoje vlastne ucely.

    ==================================================================

    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