Monitor 1Z-013B Monitor 1Z-013B je 4 KB dlouhý provozní systém,který je permanentně uložen v ROM. V tomto monitoru jsou k dispozici všechny důležite rutiny ,které jsou potřebné k programovaní MZ-800. Monitor 1Z-013B byl převzat z MZ-700. To znamená,že všechny programy z MZ-700 běží i na typu MZ-800. Monitor 1Z-013B je uložen v paměti od 0000H do 1000H. Běžně jsou volány pouze rutiny tohoto monitoru.K nastartovaní monitoru dojde: 1.zapnutím počítače nebo stisknutím RESET 2.po objevení nabídky stiknutím M 3.po objevení * zadáním J00AD Tento monitor obsahuje téměř ty samé příkazy,které jsou popsány v návodu. Je třeba se zmínit odvou rozdílech: 1.příkaz GO tlačítko G je nyní J jako JUMP. 2.přikazem BANK SWITCHING tlačitko # je možne monitor odpojit. Současně dojde k teplému startu interpretru BASIC. První část monitoru sestáva z tabulky skoků,které umožňují: 1.slučitelnost s MZ-80K a MZ-80A. 2.nejdůležitější rutiny se dají snadněji zapamatovat. Rutiny se volají příkazem CALL XXXXH. Podprogramy monitoru: 0000H start systému ,skok na E800H tedyna startovací adresu horního monitoru 0003H GET LINE.Umožňuje zadání řadky, tedy více znaků z klávesnice.Zadaný řetězec je uložen v paměti určené registrem DE.Rutina končí stisknutím CR Na konec řetězce je přidáno CR=0dH. Maximálně je možné zadat 80 znaků. Při použití SHIFT+BREAK je na místo určené registrem DE uložen místo řetězce kód BREAK. 0006H NEW LINE.Kurzor je umístěn na počátek následující řadky. 0009H NEW LINE.Kurzor je umístěn na počátek následující řádky,pokud již nestojí na počátku řadky. 000CH PRINT SPACE.Dá na pozici kurzoru prázdný znak. 000FH PRINT 10 SPACES.Zadá od pozice kurzoru max. 10 prázdných znaků až k následující pozici TAB (0,10,20,30). 0012H PRINT CHARACTER.Zobrazení ASCII znaků uložených v akumulatoru.Znaky 11H-16H nebudou zobrazeny ale jejich funkce se provedou. 0015H PRINT MESSAGE.Zobrazení řetězce od pozice kurzoru.Počátečni adresa řetězce bude převzata z DE registru. Řetězec musí být ukončen 0DH.Řídící znaky 11H-16H budou provedeny. 0018H PRINT MESSAGE.Zobrazení řetězce od pozice kurzoru.Počáteční adresa řetězce bude převzata z registru DE. Řetězec musí být ukončen 0DH.Řídící znaky 11H-16H nebudou provedeny,ale zobrazeny inverzně. 001BH GET KEY.Hodnota v ASCII je odečtena z klávesnice a uložena v akumulátoru.Když není stisknuta žádná klávesa je v akumulátoru hodnota 00H. Zvláštní klávesy mají hodnotu: DEL=60H INST=61H ALPHA=62H GRAPH=63H SHIFT+BREAK=64H CR=66H volná klávesa=90H volná klávesa je použita u japonského modelu pro přepínání znaků Hiragana a Katagana.Nelze použít pro funkční tlačítka. 001EH SHIFT,BREAK,KONTROL.Při stisknutí BREAK je v CARRY hodnota 1. Při stisnutí SHIFT ma bit 6 v akumula- toru hodnotu 1. Při stisknuti CONTROL má 5 bit v akumulátoru hodnotu 1. Při současném stisknutí SHIFT+CONTROL má 4 bit v akumulátoru hodnotu 1. 0021H WRITE HEADER.Hlavička programu bude zapsána na kazetu.Hlavička obsa- huje:název,začátek,délku programu, kód nahrávky,startovací adresu.Uvedené údaje jsou uloženy na adresách 11F0H- 116FH. 0024H WRITE DATA.Program označený pocáteční adresou a délkou bude zapsán na kazetu.Program (blok dat) bude nahrán dvakrát rychlostí 1200 bitů/s. 0027H READ HEADER.Hlavička programu bude přečtena z kazety.Obsah hlavičky jako na 0021H. 002AH READ DATA.Nahrává program určený počáteční adresou a délkou. 002DH VERIFY.Srovnání programu z kaze- ty s programem v paměti.Při chybě je hlášeno CHECK SUM ERROR. 0030H MELODY.Hraje melodii,která odpovídá řetězci,jehož počáteční adresa je uložena v DE-registru.Řetězec musí být ukončen 0DH nebo C8H.Současně je připojena rutina odezvy na BREAK.Při stisknutí BREAK se změní hodnota v CARRY. 0033H Nastaví a spouští zabudované ho- diny.Akumulátor obsahuje 0(AM) nebo 1(PM) a DE-registr obsahuje počet seku- nd (max.43200=12 hodin). 0038H INTERRUPT.Při příkazu RESTART skok na adresu 0038H a odtud skok na tam uvedenou adresu.Tato adresa však leží v ROM a nelze ji měnit a proto se skáče na 1038H je uložen INTERRUPT vektor. 003BH READ TIME.Je čten okamžitý čas. Hodnoty jsou uloženy viz.0033H. 003EH BELL.Tón o kmitočtu 880 Hz. 0041H TEMPO SET.Určuje tempo hudby podle obsahu akumulátoru.Rychlost: 01H pomalu,07H rychle. 0044H SOUND START.Produkuje stálý tón se stanovenou frekvencí.Frekvence se vypočítá podle: F=895kHz/NM NM je dvoubytové číslo přičemž N je na adrese 11A2H a M na 11A1H. 0047H SOUND STOP.Zastavuje příkaz SOUND START. 004AH Start monitoru 1Z-013B,pak skok na E800H. 00ADH Teplý start monitoru 1Z-013B. K dispozici jsou příkazy:J,L,F,B,#,P,M, S,V,D. 00F3H JUMP.Při stisknutí J je tento program odstartovan. 00F7H BEEP ON/OFF.Spuštění je provede- no stisknutím B.Při každém stisknutí klávesnice se ozve tón. 00FFH QUICK DISK.Je-li připojen ská- če program na F000H. 0111H LOAD.Po stisknutí L je program odstartován. 0155H Test plotru.Odstartování stisk- nutím P. 018FH PLOT/PRINT CHARAKTER.ASCII hod- nota v akumulátoru je vytištěna.Některé hodnoty ASCII jsou rezervovány pro řízení plotru.Podrobněji v kapitole řízení plotru. 01A5H PLOT/PRINT MESSAGE.ASCII hodnota znaků řetězce je vytičtěna.Pozice řetězce je v DE-registru. Řetězec musí být ukončen 0DH. 01C7H MELODY.Jako 0030H 02A6H INCREMENT DE.4-krát přírůstek DE-registru.Increment znamená +1. 02ABH SOUND START.Jako 0044H. 02BEH SOUND STOP.Jako 0047H. 02E5H SET TEMPO.Jako 0041H. 02F3H CRT MANAGMENT.Program pro vnitřní řízení obrazovky.HL-registr bu- de obsahovat koordináty kurzoru.Sou- řadnice X v L,Y v H.Současně je do DE- registru nahrán údaj o tom zda je na řádce více jak 40 znaků.Údaj je uložen od 1173H do 118BH.Kromě toho je do akumulátoru nahrána 0 nebo 1(dvojná- sobný řádek. 0308H SET TIME.Jako 0033H. 0358H READ TIME.Jako 003BH. 038DH TIME INTERRUPT.Je vymazán stav AM a nahrazen PM nebo obráceně.Současně je do časovače nahráno 43200 sekund. 03B1H DISPLAY SPACE & CHARACTER.Tisk- ne jeden prázdný znak a jeden ASCII, který je určen obsahem akumulátoru. Zobrazení je určeno adresou video RAM v HL-registru. 03BAH ASCII PRINT FOR HL.Obsah HL- registru se zobrazí na pozici kurzoru. 03C3H ASCII PRINT FOR ACCU.Obsah akumulátoru se zobrazí na pozici kur- zoru. 03D5H Data pro přepnutí na 80 znakový plotr.Na tomto místě jsou uložena data nutná pro přepnutí(01H,09H,09H,09H,0DH) 03DAH HEX TO ASCII.Hexadecimální číslo uložené v dolních čtyřech bytech akumu- látoru bude převedeno do ASCII a ulože- no do akumulátoru. 03E5H ASCII TO HEX.Mění hexadecimální číslo v akumulátoru do binární formy a výsledek uloží do dolních čtyř bitů akumulátoru.Při chybě je nastaven CARRY 03F9H ASCII TO HEX.Jako 03E5H. 0410H FOUR CHARACTER ASCII CONVERSION. Mění řetězec čtyř znaků ASCII na jedno hexadecimální číslo a uloží je do HL- registru.DE-registr musí obsahovat počáteční hodnotu řetězce.Např."3410" do hexadecimálního 16-bitového čísla. Při chybě je CARRY na hodnotě 1. 041FH TWO CHARACTER ASCII CONVERSION. Mění dvoumístný řetězec v ASCII na hexadecimální číslo a uloží je do aku- mulátoru.DE-registr musí obsahovat počáteční adresu řetězce.Při chybě zaviněné neplatným řetězcem bude CARRY obsahovat 1. 0436H WRITE HEADER.Jako 0021H. 0470H Přepnutí plotru na 40 znaků.Na této adrese jsou uložena data(01H,09H, 09H,0BH,0DH). 0475H WRITE DATA.Jako 0024H. 04D8H READ HEADER.Jako 0027H. 04F8H READ DATA.Jako 002AH. 0577H BELL.Jako 003EH. 057EH FLASHING AND KEYING.Jeden znak ve video kódu je odečten z klávesnice a uložen v akumulátoru.Současně blikne kurzor.Když není stisknuto tlačítko je v akumulátoru hodnota F0H a je ustaven ZERO. 0588H VERIFY.Jako 002EH. 05FAH NEW LINE AND ASCII PRINT FOR HL. Na počátek následujícího řádku je zobrazen obsah HL-registru. 069FH CASSETTE MOTOR ON.Zapíná motor magnetofonu. 0700H CASSETTE MOTOR OFF.Vypíná motor magnetofonu. 0759H 107 MICROSECOND DELAY.Časové zpoždění 107 mikrosekund. 07A8H M-příkaz.Příkaz MEMORY CORRECTI- ON. 07E6H GET LINE.Jako 0003H. 087CH provede CR a umístí kurzor na počátek následující řádky. 0893H PRINT MESSAGE.Jako 0015H. 08A1H PRINT MESSAGE.Jako 0018H. 08BDH GET KEY.Jako 001BH. 090EH NEW LINE.Jako 0006H. 0918H NEW LINE.Jako 0009H. 0920H PRINT SPACE.Jako 000CH. 0924H PRINT 10 SPACES.Jako 000CH. 0935H PRINT CHARACTER.Jako 0012H. 0996H 7 MILLISECOND DELAY.Časové zpoždění 7 milisekund. 09B3H INPUT KEY.Čeká s blikajícím kurzorem dokud není zadán znak s klávesnice.Není potřeba stisknout CR. Odpovídající hodnota ve videokódu bude uložena v akumulátoru. 0A32H SHIFT,BREAK,CONTROL.Jako 001EH. 0A50H Odezva matice klávesnice.Odezva všech tlačítek včetně funkčních.Během stisknutí tlačítka bude B registr obsahovat: 7.bit=0 žádná klávesa nestisknuta 7.bit=1 jedna klávesa stisknuta 6.bit=0 není stisknut SHIFT 6.bit=1 je stisknut SHIFT 5.bit=0 není stisknut CONTROL 5.bit=1 je stisknut CONTROL 4.bit=0 není stisknut SHIFT+CONTROL 4.bit=1 je stisknut SHIFT+CONTROL C-registr bude obsahovat: bit 0,1,2 číslo řádku matice klávesnice bit 3,4,5 číslo sloupce matice. viz.příloha 0A92H ASCII TO DISPLAY CODE TABLE.Od této adresy jsou uložena data k přemě- ně ASCII do videokódu. 0BB9H ASCII TO DISPLAY.Mění znaky ASCII uložené v akumulátoru na video- kód a uloží je do akumulátoru. 0BCEH DISPLAY TO ASCII.Mění videokód uložený v akumulátoru na ASCII a uloží do akumulátoru. 0BEAH KEY MATRIX TO DISPLAY CODE TABLE Od této adresy jsou uloženy videokódy odpovídající matici klávesnice.Např. při volání 0A50H je naplněn C-registr hodnotou 07H,v této tabulce je třeba hledat 7.Byte (počínaje od 0 a ne od 1 !!).7,Byte je CDH a to je CR. 0C2AH KEY MATRIX TO DISPLAY CODE TABLE je-li stisknut SHIFT. 0C6AH KEY MATRIX TO DISPLAY CODE TABLE je-li stisknut GRAPH. 0CAAH KEY MATRIX TO DISPLAY CODE TABLE je-li stisknut CONTROL. 0CE9H KEY MATRIX TO DISPLAY CODE TABLE pri přepnutí do Katagana.Není na evropských modelech. 0D29H příkaz D.Memory Dump. 0DA6H VERTICAL BLANKING CHECK. Čeká na vertikální mezeru při vymačknu- tí.Potom skok zpět. 0DB5H DISPLAY CODE CHARACTER PRINT.Na pozici kurzoru budou zobrazeny znaky videokódu uložené v akumulátoru. 0DDCH DISPLAY CONTROL.Změna obrazovky. Akumulátor bude obsahovat následujíci znaky: Akumulátor Působení C0H SCROLL o jednu řádku dolů C1H kurzor o jednu řádku dolů C2H kurzor o jednu řádku nahoru C3H kurzor o jeden znak doprava C4H kurzor o jeden znak doleva C5H kurzor na pozici HOME(D000H) C6H video RAM a RAM barvy bude vymazá- na.Kurzor bude umístěn na pozici HOME. C7H jeden znak za kurzorem bude vyma- zán a kurzor se přesune na tuto pozici. Totéž jako stisknutí DEL. C8H jeden znak bude doplněn za kurzor a znaky za ním se přesunou doprava.Jako INST. C9H přepíná klávesnici grafika/písmena CDH Bude proveden jeden CR a kurzor umístěn na počátek následující řádky. 0F5EH příkaz S (SAVE) 0FB1H Současná pozice kurzoru bude přeměněna na adresu video RAM a ulože- na v HL-registru. 0FCBH příkaz V (VERIFY) 0FD8H Maže paměť od adresy v HL.Délka obsahu,který má být vymazán je v B-re- gistru.Obsah uvedené paměti bude pře- psán hodnotou 00H. Monitor 1Z-013B používá oblast 1000H-11FFH jako pracovní,tj. v této oblasti paměti jsou uložena všechna nutná data. PRACOVNÍ OBLAST MONITORU. Adresy: Význam: 1000H-1037H volné 1039H dolní byte vektoru přerušení 103AH horní byte vektoru přerušení 103BH-10EFH oblast STACK programů 10EFH TOP OF STACK 10F0H-1107H data hlavičky programu 10F0H FILECODE (typ programu).Označení: 01=program ve strojovém kódu 02=MZ-80K program BASIC 03=MZ-80K data BASIC 05=MZ-700 a MZ-800 programy BASIC 10F1H-1101H název programu.Max.16 znaků ,musí být ukončen 0DH (CR).Když je na adrese 10F1H hodnota 0DH je program bez názvu. 1102H dolní byte délky programu 1103H horní byte délky programu.Zde uložená délka programu je rozhodující pro počet bytů,které jsou uloženy při SAVE na kazetu (0024H). 1104H dolní byte začátku programu 1105H horní byte začátku programu.Od zde uložené počáteční adresy se začí- ná nahrávat program na kazetu při SAVE (0024H). 1106H dolní byte START adresy 1107H horní byte START adresy.Od této adresy záleží zda bude nahraný program spuštěn nebo ne.Adresa musí být rovná nebo vyšší 1200H. 1108H-116FH tato paměťová místa budou použita jako podávací buffer. 1170H paměťové místo pro malá a velká písmena.Obsah 0 odpovídá velkým a 1 malým písmenům. 1171H Y-pozice kurzoru (0-18H)-řádky 1172H X-pozice kurzoru (0-27H)-sloupce 1173H-118BH každá řádka obrazovky jeden byte,to udává zda tato řádka je druhou částí dvouřádky.V tom případě je obsah 1, jinak 0. 118EH místo pro uložení znaku,který je momentálně na pozici kurzoru. 118FH místo pro dolní byte pozice kur- zoru. 1190H místo pro horní byte pozice kur- zoru.Platí pouze pro MZ-80K. 1191H paměť pro údaj zda je zobrazen kurzor (1) nebo znak (0).Platí pro MZ-80K. 1192H displejkód znaku korzoru. 1193H STRING-Flag.Platí pro MZ-80K. 1194H místo pro počet znaků řádku,do kterého jsou zadávány údaje. 1195H délka zaváděcí části hlavičky na kazetě-dolní byte. 1196H délka zaváděcí části hlavičky na kazetě-horní byte.Údaj pro předpětí pásky při zápisu popř. čtení. 1197H kontrolní součet při nahrávání- dolní byte. 1198H kontrolní součet pri nahrávání- horní byte.V tomto místě je uložen kontrolní součet při nahrávání (CHECK- SUM).Kontrolní sočet je počet bytů "1" v zapsaných bytech dat.Součet slouží ke zjištění chyby záznamu. 1199H kontrolní součet při záznamu- dolní byte. 119AH kontrolní součet při záznamu- horní byte.CHECKSUM jako při 1197H a 1198H. 119BH místo pro údaj o čase AM=0, PM=1. 119CH při údaji F0H běží hodiny. 119DH KEY SOUND.Tón při stisknutí klávesy (0),bez tónu (01). 119EH paměť pro tempo hudby. 119FH paměť pro délku tónu. 11A0H paměť pro číslo oktávy. 11A1H kmitočet tónu-dolní byte. 11A2H kmitočet tónu-horní byte. 11A3H-11F3H buffer pro snímání údajů klávesnice. 11F4H-11FFH volné OBLAST E-MONITORU Monitor-E je druhý přes 4 KB dlouhý provozní systém rovněž uložený v ROM. Jak název ukazuje je uložen v horní části paměti od E010H do F36CH. V této oblasti leží všechny rutiny pro QUICKDISK a další monitir 9Z-504M. Při zapnutí počítače a po každém RESET je proveden skok na 0000H.Odtud okamži- tě na E800H a objeví se úvodí obraz. Když se stiskne M jsme v monitoru 9Z-504M. Podrobný popis rutin QUICKDISKU je uveden v kapitole QUICKDISK. E010H QD IOS.Rozdělení rutin QUICK- DISKU.POdle toho co je uloženo na 1130H jsou volány: 1=QUICKDISK READY-CHECK.Zkouší zda je QD připojen a připraven k provozu. 2=FORMAT.Formování QD. 3=READ.Čtení z QD. 4=WRITE.Zápis na QD. E08AH QD READY-Check rutina. E090H FORMAT-rutina. E0DAH READ-rutina. E14EH WRITE-rutina. E29BH QD MOTOR ON.Zapíná motor QD. E2E8H QD MOTOR OFF.Vypíná motor QD. E44AH FLOPPY-DISK CONTROL PROGRAMM. Řídí připojenou disketu. E4DCH FD-READY CHECK.Zkouší zda je disketa připojena a připravena k pro- vozu. E517H FD MOTOR ON.Zapíná motor diskety E530H FD MOTOR OFF.Vypíná motor diske- ty. E800H Tabulka skoků.Na toto místo se skáče po zapojení počítače nebo po RESET. E801H skok k úvodnímu obrazci monitoru E804H skok do monitoru 9Z-504M. E807H LOAD po 1200H. E80AH SAVE od 1200H. E80DH VERIFY od 1200H.Platí pro kazetu E810H skok k QD-IOS,tedy k E010H. E813H start monitoru (úvodní obrazec). V této části programu jsou aktivovány důležité adresy např.:port 8255,časovač 8253,Z-80 PIO,SIO. E876H inicializace barev a tempa hudby E8A9H pamět PCG je naplněna znakovým generátorem ROM,tj.v pevně uložené zna- ky v CG-ROM jsou přepsány do PCG RAM. E8E1H inicializace palety barev a barev okraje. E945H nahrání programu (IPL) z kazety a odstartování. EA5EH odezva na příkazy monitoru 9Z-504M:J,L,F,B,M,S,V,D,Q+další parame- try,E=exit ramboard,G. EAA9H příkaz J. EAB5H příkaz Q.Možné jsou následující příkazy pro QUICKDISK: QL=LOAD QS=SAVE QC=COPY QF=FORMAT QX=přehrání kazety na QD QD=DIRECTORY. EB34H GETLINE s BREAK CHECK.Tato ruti- na umožňuje zadání řádky (více znaků) z klávesnice.Zadaný řetězec je uložen do vyrovnávací paměti od 11A3H.Rutina je ukončena CR.Po ukončení je na konec doplněno 0DH. EB4CH příkaz-L EBAEH přikaz-S EC00H příkaz-V EC1EH přikaz-B EC29H příkaz-M EEA7H příkaz-QUICK DISK LOAD.Od tohoto místa je uložena rutina QD LOAD s parametry odezvy. EF2EH příkaz-QUICK DISK SAVE.Od tohoto místa je uložena rutina QD SAVE s para metry odezvy. EFEFH příkaz-QUICK DISK DIRECTORY. F0B5H příkaz-QUICK DISK FORMAT.Od to- hoto místa je uložena kompletní rutina pro formátování disku s odezvouOK?(Y/N) F12CH příkaz-QUICK DISK COPY.Od tohoto místa je uložena rutina pro kopírování s parametry odezvy. F1A2H příkaz CASSETTE TO QUICK DISK COPY.Od tohoto místa je uložena komple- tní rutina přepisu z kazety na QD s odezvou. F202H Tabulka chyb.K hodnotám chyb přísluší tabulka chyb. PRACOVÍ OBLAST E-MONITORU. Je popsána v kapitole QUICKDISK.