

                       ******************
                       *** BS rom 118 ***
                       ******************

 Jedn sa o klasick romku zo ZX Spectra 48k (+) na ktorej  boli
spchan tieto pravy:

 - pribudlo zopr novch prkazov - prehad alej
 - rozren syntax niektorch prkazov - prehad alej
 - asi tvornsobne rchle chytanie vodnho tnu z kazeku
 - programov kurzor zmenen zo znaku ">" na znak "*"
 - zven frekvencia chybovho beepu
 - spracovanie hexadecimlnych sel v rozsahu 0-65535
 - monos psania basicovch riadkov v rozsahu 0-16383
   (napr. editcia nultho riadku)
 - rchlej autorepeat na zaiatku po inicializci
 - pri pokuse o odoslanie chybnho prkazu alebo riadku sko
   kurzor na miesto chyby (lepie ako v IZO-ROM)
 - monos vypisova listing programu bez riadiacich kdov
   (nereaguje na farby, TAB a AT - vhodn na zait programy)
 - oetrenie NMI pomocou rozritenho menu - prehad alej
 - opraven niektor chyby - prehad alej
 - dva nov znaky v znakovom sbore - mal podiarnik a tvorek
 - programov kurzor "*" sa vypisuje iba pri autoliste
 - po editanej zne sa d chodi hore a dolu
 - reset a new ma pame pomocou PUSH - je to super rchle
 - autolist mono v kadom okamihu zastavi klvesou "Q"

               Prehad chb, ktor boli opraven
               ---------------------------------
 - Chybn oetenie NMI rutiny - vyrieilo to NMI menu. Ale
   prslun bajt zostal nezmenen - to keby ho nhodou
   nejak program moc usilovne zaal skma a testova.
 - PRINT AT 0,0;CHR$ 8; - posunulo kurzor na pozciu AT -1,31 -
   v tejto romke sa poloha kurzora nemen.
 - Ak sa malo vypsa chybov hlsenie a je zakzan preruenie,
   tak to zmrzlo. V tejto romke sa to neme sta.
 - Normlna romka sama seba na adresch 0..4 prepisuje. Tto
   romka nie, preto me bea aj bez zakzanho zpisu v ramke.
 - Ak je posledn riadok  v  programe  N,  vy  odolete  przdny
riadok N+1 (akoe ho zmaete) a potom stlate EDIT,  editne  sa
vm N-t riadok aj s programovm  kurzorom.  V  tejto  romke  sa
programov kurzor objavuje iba autolistingu  a  preto  sa  nikdy
neme objavi v editnutom riadku.

 Po resete alebo NEWe sa romka  prihlsi  vypsanm  informcie,
koko je vonho miesta (basic  a  premenn  basicu  maj  vtedy
samozrejme nulov dku) a vype sa normlne hlsenie OK.
 48k a 128k reset a ani NEW netestuj pam - predpoklad sa, e
cel 48kB alebo 128k pamt je funkn.

 Po NMI (skoku na adresu #66) zane sra border, o  je  znakom
e ste v NMI menu. Ak by bol zsobnk SP na adresch  #00-#4000,
zmen sa na #5800. Ovldacie klvesy:

 B - tepl tart basicu. Inicializuj sa veky systmov
     premenn okrem PROG, VARS a ELINE - teda basicov
     program a basico premenn zostan zachovan.
 N - to ist ako CLEAR #5fff: NEW - teda pam nad #6000 ostane
     neporuen.
 R - zmae cel pam 48kB - je to klasick 48k reset.
 E - zmae cel pam 128k - (extend reset 128k)
 I - resetuje tieto perifrie: AY, FDC, DMA a mechaniku disku.
 S - save "" screen$ na aktulne zariadenie (MG alebo disk)
 T - ako USR 15522 ie aktulne zariadenie bude pska.
 D - ako USR 15524 ie aktulne zariadenie bude disk.
 Q - nvrat spe do preruenho programu. Pozor: nvrat bude
     korektn iba vtedy, ak SP nebol zmenen na #5800.
     Pri nvrate s vetky registre (okrem dolnch 7 bitov
     registra R) obnoven na pvodn hodnoty.
 M - skok do debuggera v MRS (mus by v pamti!).
     Vetky registre sa nastavia ako boli v okamihu preruenia
     programu pomocou MNI - ie mono preruen program alej
     krokova (PC a SP sa korektne nastavia iba ak sa SP
     nezmenilo na #5800!).
 0..9 - prepnutie ram-banky na 128k. Ak by sa SP nachdzal v
        oblasti hornch 16 kB, bude zmenen na #5800.
        Je to vlastne OUT (#7ffd),slo - ie pomocou 8 a 9 si
        mono pozrie obsah druhej videostrnky.
 U - uvatesk funkcia - na adrese #3901 je  JP  XXX,  kde  si
me uvate napokova adresu svojej aplikcie  a  po  stlaen
klvesy "U" sa tto aplikcia spust. Nvrat je normlne pomocou
RET.
 Z - uvatesk funkcia - na adrese #3904 je DW  xxx,  a  alej
presne tak isto ako "U". Tieto  dve  funkcie  v  samotnej  romke
nerobia ni, ale  s  vyhraden  pre  alie  rozrenia  (napr.
rezidentn monitor).

            Rozrenie syntaxe existujcich prkazov
            ----------------------------------------
            (Poloky v ztvorkch < > s nepovinn.)

 CONTINUE <vraz> .. ak je vraz nenulov tak sa spust strojk
   od tejto adresy. Pozor ! Pri nvrate mus by na rozdiel od
   USR register IY nastaven na #5c3a, ale zato HL' nemus ma
   hodnotu #2758.
 CLS <vraz> .. ak vraz je nenulov tak sa nm nastavia vetky
   farby (pr. CLS 7 = BORDER 0: PAPER 0:INK 7:BRIGHT 0:FLASH 0).
 GOTO, GOSUB, PAUSE, BORDER .. seln parameter pri tchto
   prkazoch je nepovinn - nezadan sa chpe ako nula.
 <PRINT> zoznam poloiek .. Za predpokladu, e zoznam poloiek
   nezana islicou, iarkou, bodkoiarku a apostrofom moete
   pokojne vynecha prkaz PRINT. Toti ak sa pri behu programu
   njde nieo, o nie je iadny prkaz, sko sa do rutinky na
   prkaz PRINT.
 POKE add,byte .. normlne pvodn poke
 POKE add;word .. dvojbajtov poke (ni bajt sa uklada niie)
 POKE add,reazec .. uloene danho reazca do pamti. Prv znak
   sa ulo na adresu add, druh na  adresu  add+1  ...  at.  V
   princpe nezle na tom, i pri  ukladan  reazca  v  tomto
   prkaze  napete  arku  alebo  bodkoiarku,  ale  z  dvodu
   monho rozrenia v budcnosti sa odpora pouva vhradne
   iba iarku.

 VAL$ <vraz> .. ak je vraz selnho typu, tak vsledkom tejto
   funkcie je tvorznakov reazec hexadecimlnych slic - in
   povedan prevod DEC -> HEX (pr. VAL$ 33023 = "80ff").
 VAL <vraz> .. ak je vraz selnho typu, tak vsledkom tejto
   funkcie je dvojbajtov slo uvoen na tejto adrese - in
   povedan dvojbajtov PEEK.
 %,& .. prevod HEX -> DEC podobne ako je BIN prevod BIN -> DEC.
   In povedan ak chcete ako slo zapsa hexadecimlnu
   kontantu, mus zana znakom "%" alebo "&". Znak "#" nebol
   pouit preto, lebo ten sa pouva na nastavenie kanla v
   prkazoch PRINT A INPUT (pr. %80ff = 33023).

                    Nov prkazy a ich syntax
                    -------------------------
 , <vraz> .. (iarka) editne prslun basicov riadok. Ak
      vraz nie je uveden alebo nadobda nulov hodnotu,
      edituje sa riadok s najnim poradovm slom.
 ' <vraz> .. (apostrof) prepna ram-banky na 128k ako OUT
      (#7ffd),vraz. Vraz mus by v intervale 0 a 15. Pozor!
      Pri prepnan mus by RAMTOP men ako #c000 (in ako
      0-9 v NMI menu).
  .. obnov vetky systmov premenn okrem PROG, VARS a ELINE.
      (Ako "B" v NMI menu.) [C v krku]
 ^ .. vek 128k reset - mae cel pam 128k.
      (Ako "E" v NMI menu.) [pka hore]
 ? .. vype informciu o dke programu, dke premennch a
      vekos vonej pamte pre basic.
 * .. header - z psky ta hlaviky a vypisuje o nich toto:
            typ sboru : meno sboru : adresa : dka
 _ .. to ist ako USR 00102 - skok do NMI menu.
 # .. to ist ako USR 54885 - skok do MRS (mus by v pamti!).

                  Jedna nov systmov premenn
                  -----------------------------
 Keԧe NMI rutinka vdy zavol NMI menu, nepotrebuje  u  vektor
na adrese 23728. Preto tri bity na 23728 s takto vyuit:

 bit 0=0:sla basicovch riadkov sa vypisuj ako tvormiestne
 bit 0=1:sla basicovch riadkov sa vypisuj ako pmiestne
 bit 1=0:pri autoliste sa vypisuj riadiace kdy normlne
 bit 1=1:pri autoliste sa vypisuj riadiace kdy poda bitu 2
 bit 2=0:pri autoliste sa vbec nevypisuj riadiace kdy
 bit 2=1:pri autoliste sa vypisuj riadiace kdy ako "?"

Po resete alebo newe sa tu zape nula. Pmiestne sla riadkov
maj vznam vtedy, ak pouvate riadky v rozsahu 10000 a 16383.
Tento bit nijako neovplyvuje beh programu s takmito  riadkami,
len men formt listingu. Pri editovan  riadku  sa  jeho  slo
vype vdy ako pmiestne.


                 ******************************