############################################################################## # BSrom118 - Modifikovana ZX Spectrum ROM - (c) Busy soft - Release 13.03.94 # ############################################################################## Originalna romka: (c) Amstrad (Ak nemate diakritiku Kamenickych, skuste spustit program setkam.com) 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 .. 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 .. 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. 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$ .. ak je vyraz ciselneho typu, tak vysledkom tejto funkcie je stvorznakovy retazec hexadecimalnych cislic - inac povedane prevod DEC -> HEX (pr. VAL$ 33023 = "80ff"). VAL .. 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 ------------------------- , .. (ciarka) editne prislusny basicovy riadok. Ak vyraz nie je uvedeny alebo nadobuda nulovu hodnotu, edituje sa riadok s najnizsim poradovym cislom. ' .. (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. ================================================================== Adresa autora: E-mail: busy@elf.stuba.sk Slavko Labsky http://www.elf.stuba.sk/~busy Gallayova 13 841 02 Bratislava Telefon: Slovenska republika (07) 764 705 (len slovensky a cesky!) ==================================================================