str.92 ---------------------------------------------------------------- | | |----| |-------------------| | | SLA... | | C |<------| B7 <------ B0 |<---- 0 | | | |----| |-------------------| | | | Operand | ---------------------------------------------------------------- | SLA r | s.o. | SZ0P0C | 2 | 8 | CB,20+reg | | SLA (HL) | s.o. | SZ0P0C | 2 |15 | CB,26 | | SLA (IX+d)| s.o. | SZ0P0C | 4 |23 | DD,CB,d,26| | SLA (IY+d)| s.o. | SZ0P0C | 4 |23 | FD,CB,d,26| ---------------------------------------------------------------- | | |--------------------| |----| | | | |---->| B7 -------> B0 |------>| C | | | SRA... | | |--|-----------------| |----| | | | |--------| Operand | ---------------------------------------------------------------- | SRA r | s.o. | SZ0P0C | 2 | 8 | CB,28+reg | | SRA (HL) | s.o. | SZ0P0C | 2 |15 | CB,2E | | SRA (IX+d)| s.o. | SZ0P0C | 4 |23 | DD,CB,d,2E| | SRA (IY+d)| s.o | SZ0P0C | 4 |23 | FD,CB,d,2E| ---------------------------------------------------------------- | | |----------------------| |----| | | SRL... | 0 ---->| B7 ----------> B0 |---->| C | | | | |----------------------| |----| | | | Operand | ---------------------------------------------------------------- | SRL r | s.o. | SZ0P0C | 2 | 8 | CB,38+reg | | SRL (HL) | s.o. | SZ0P0C | 2 |15 | CB,3E | | SRL (IX+d)| s.o. | SZ0P0C | 4 |23 | DD,CB,d,3E| | SRL (IY+d)| s.o. | SZ0P0C | 4 |23 | FD,CB,d,3E| ---------------------------------------------------------------- ---------------------------------------------------------------- | Půlbytové přesouvací povely | ---------------------------------------------------------------- | | |------------------------| | | | | V | | RLD | |--------|--------| |---------|-------| | | |A | B7 B4 | B3 B0 | | B7 B4 | B3 B0|(HL) | | | |--------|--------| |---------|-------| | | | ^ | ^ | | | | |---------------| |------| | ---------------------------------------------------------------- | RLD | s.o. | SZ0P0- | 2 |18 | ED,6F | ---------------------------------------------------------------- | | |------------| |----| | | | | V | V | | | |----------|--------| |----------------| | | RRD |A | B7 B4 | B3 B0 | | B7 B4 | B3 B0|(HL )| | | |----------|--------| |----------------| | | | ^ | | | | |---------------------| | ---------------------------------------------------------------- | RRD | s.o. | SZ0P0- | 2 |18 | ED,67 | ---------------------------------------------------------------- str.93 Skokové povely ---------------------------------------------------------------- | Nepodmíněné skokové povely | ---------------------------------------------------------------- | JP nm | PC=nm | ------ | 3 |10 | C3,m,n | | JP (HL) | PC=HL | ------ | 1 | 4 | E9 | | JP (IX) | PC=IX | ------ | 2 | 8 | DD,E9 | | JP (IY) | PC=IY | ------ | 2 | 8 | FD,ED | | | | | | | | | JR e | PC=PC+e | ------ | 2 |12 | 18,e | ---------------------------------------------------------------- | Podmíněné skokové povely | ---------------------------------------------------------------- | JP Z,nm | if Z=1 PC=nm | ------ | 3 |10 | CA,m,n | | JP NZ,nm | if Z=0 PC=nm | ------ | 3 |10 | C2,m,n | | JP C,nm | if C=1 PC=nm | ------ | 3 |10 | DA,m,n | | JP NC,nm | if C=0 PC=nm | ------ | 3 |10 | D2,m,n | | JP M,nm | if S=1 PC=nm | ------ | 3 |10 | FA,m,n | | JP P,nm | if S=0 PC=nm | ------ | 3 |10 | F2,m,n | | JP PE,nm | if P=1 PC=nm | ------ | 3 |10 | EA,m,n | | JP PO,nm | if P=0 PC=nm | ------ | 3 |10 | E2,m,n | | | | | | | | | JR Z,e | if Z=1 PC=PC+e | ------ | 2 |7/12 | 28,e | | JR NZ,e | if Z=0 PC=PC+e | ------ | 2 |7/12 | 20,e | | JR C,e | if C=1 PC=PC+e | ------ | 2 |7/12 | 38,e | | JR NC,e | if C=0 PC=PC+e | ------ | 2 |7/12 | 30,e | | | | | | | | | DJNZ e | B=B-1 | ------ | 2 |8/13 | 10,e | | |if B<>0 PC=PC+e | | | | | ------------------------------------------------------------- -- Výzvy podprogramu ---------------------------------------------------------------- | Nepodmíněné výzvy podprogramu | ---------------------------------------------------------------- | CALL nm |SP=SP-1,(SP)=PC^H| ------ | 3 |17 | CD,m,n | | |SP=SP-1,(SP)=PC^L| | | | | | |PC=nm | | | | | ---------------------------------------------------------------- | Podmíněné výzvy podprogramu | ---------------------------------------------------------------- | CALL Z,nm | if Z=1 CALL nm | ------ | 3 |10/17| CC,m,n | | CALL NZ,nm| if Z=0 CALL nm | ------ | 3 |10/17| C4,m,n | | CALL C,nm | if C=1 CALL nm | ------ | 3 |10/17| DC,m,n | | CALL NC,nm| if C=0 CALL nm | ------ | 3 |10/17| D4,m,n | | CALL M,nm | if S=1 CALL nm | ------ | 3 |10/17| FC,m,n | | CALL P,nm | if S=0 CALL nm | ------ | 3 |10/17| F4,m,n | | CALL PE,nm| if P=1 CALL nm | ------ | 3 |10/17| EC,m,n | | CALL PO,nm| if P=0 CALL nm | ------ | 3 |10/17| E4,m,n | ---------------------------------------------------------------- | Restart výzvy podprogramu | ---------------------------------------------------------------- | RST 0 | CALL 0000 | ------ | 1 |11 | C7 | | RST 8 | CALL 0008 | ------ | 1 |11 | CF | | RST 10 | CALL 0010 | ------ | 1 |11 | D7 | | RST 18 | CALL 0018 | ------ | 1 |11 | DF | | RST 20 | CALL 0020 | ------ | 1 |11 | E7 | | RST 28 | CALL 0028 | ------ | 1 |11 | EF | | RST 30 | CALL 0030 | ------ | 1 |11 | F7 | | RST 38 | CALL 0038 | ------ | 1 |11 | FF | ---------------------------------------------------------------- str.94 Povely návratu ---------------------------------------------------------------- | Nepodmíněné povely návratu | ---------------------------------------------------------------- | RET |PC^L=(SP),SP=SP+1| ------ | 1 |10 | C9 | | |PC^H=(SP),SP=SP+1| | | | | ---------------------------------------------------------------- | Podmíněné povely návratu | ---------------------------------------------------------------- | RET Z | if Z=1 RET | ------ | 1 | 5/11| C8 | | RET NZ | if Z=0 RET | ------ | 1 | 5/11| C0 | | RET C | if C=1 RET | ------ | 1 | 5/11| D8 | | RET NC | if C=0 RET | ------ | 1 | 5/11| D0 | | RET M | if S=1 RET | ------ | 1 | 5/11| F8 | | RET P | if S=0 RET | ------ | 1 | 5/11| F0 | | RET PE | if P=1 RET | ------ | 1 | 5/11| E8 | | RET PO | if P=0 RET | ------ | 1 | 5/11| E0 | ---------------------------------------------------------------- | Přerušovací povely návratu | ---------------------------------------------------------------- | RETI *1 |PC^L=(SP),SP=SP+1| ------ | 2 |14 | ED,4D | | |PC^H=(SP),SP=SP+1| | | | | | RETN *2 |PC^L=(SP),SP=SP+1| ------ | 2 |14 | ED,45 | | |PC^H=(SP),SP=SP+1| | | | | ---------------------------------------------------------------- *1 maskované přerušení *2 nemaskované přerušení Vstupní a výstupní povely ---------------------------------------------------------------- | Vstupní povely | ---------------------------------------------------------------- | IN r,(C) | r= Port(C) | SZHP0- | 2 |12 |ED,40+08*reg| | IN A,(n) | A= Port(n) | ------ | 2 |11 | DB,n | ---------------------------------------------------------------- | Výstupní povely | ---------------------------------------------------------------- | OUT (C),r | Port (C)=r | ------ | 2 |12 |ED,41+08*reg| | OUT (n),A | Port (n)=A | ------ | 2 |11 | D3,n | ---------------------------------------------------------------- | Vstupní povely s automatikou Increment/Decrement | ---------------------------------------------------------------- | INI | (HL)=Port(C),B=B-1 | ?X??1- | 2 |16 | ED,a2 | | | HL=HL+1 | | | | | | INIR | (HL)=Port(C),B=B-1 | ?1??1- | 2 |16/21| ED,B2 | | | HL=HL+1 do B=0 | | | | | | IND | (HL)=Port(C),B=B-1 | ?X??1- | 2 |16 | ED,AA | | | HL=HL-1 | | | | | | INDR | (HL)=Port(C),B=B-1 | ?1??1- | 2 |16/21| ED,BA | | | HL=HL-1 do B=0 | | | | | |--------------------------------------------------------------| str.95 ---------------------------------------------------------------- | Výstupní povely s automatikou Increment/Decrement | ---------------------------------------------------------------- | OUTI | Port(C)=(HL),B=B-1 | ?X??1- | 2 |16 | ED,A3 | | | HL=HL+1 | | | | | | OTIR | Port(C)=(HL),B=B-1 | ?1??1- | 2 |16/21| ED,B3, | | | HL=HL+1 do B=0 | | | | | | OUTD | Port(C)=(HL),B=B-1 | ?X??1- | 2 |16 | ED,AB | | | HL=HL-1 | | | | | | OTDR | Port(C)=(HL),B=B-1 | ?1??1- | 2 |16/21| ED,BB | | | HL=HL-1 do B=0 | | | | | ---------------------------------------------------------------- X bedeutet:Zůruckgesetzt,wenn.......... CPU Kontrolní povely ---------------------------------------------------------------- | SCF | C=1 | --0-01 | 1 | 4 | 37 | | CCF | C=NOT C | --X-0C | 1 | 4 | 3F | | EI | | ------ | 1 | 4 | FB | | DI | | ------ | 1 | 4 | F3 | | HALT | CPU Stop | ------ | 1 | 4 | 76 | | NOP | žádný účinek | ------ | 1 | 4 | 00 | | IM0 | | ------ | 2 | 8 | ED,46 | | IM1 | | ------ | 2 | 8 | ED,56 | | IM2 | | ------ | 2 | 8 | ED,5E | | CPL | A=NOT A | --1-1- | 1 | 4 | 2F | | NEG | A=0-A | SZHY1U | 2 | 8 | ED,44 | | DAA | | SZHP-C | 1 | 4 | 27 | ---------------------------------------------------------------- X bedeutet Y bedeutet.................. U bedeutet................... str.96 DODATEK D --------- UČEBNÍ PROGRAM: --------------- Návod k obsluze Na dodané kazetě je učební program, který obsahuje veškeré funkce potřebné v tomto kurzu. Tedy calculator, monitor, assemb- ler, disassembler a tracer, které itegrovány v jedinem programu o celkové délce 20 kB. D.1 Nahrání a start ------------------- Učebni soubor je strojový program, který je uložen od adresy 1200 do 5FFF. Nahrává se buď pomoci C v základním menu nebo po- mocí povelu L v Monitoru. Skok do Monitoru se děje klávesou HOME a opakovaný start se provede v Monitoru příkazem J 1200. D.2 Obsluha ----------- Po nahrání programu se na obrazuvce objeví následující: ---------------------------------------- | # 0 | - Calculator ---------------------------------------- | 8000: . 00 | | 8001: . 00 | - Hexmonitor a Dump | 8002: . 00 | | 8003: . 00 | | 8004: . 00 | | 8005: . 00 | | 8006: . 00 | | 8007: . 00 | ---------------------------------------- | 8000: NOP | - Disassembler | | a Assembler | | ---------------------------------------- To je programovací mód učebního programu se třemi okénky pro Calculator, Hexmonitor/Dump a Assembler/Disassembler. Při tomto způsobu provozu se zadávají vedle výpočtů pomocí Calcultoru i vaše strojové programy. Wunder sie sich !!!!!!! chybí preložit na straně 186 !!!!! str.97 Stisknutím klávesy se dostanete do zkušebního módu. Obrazovka pak vypadá takto: ---------------------------------------- | # 0 | - Calculator ---------------------------------------- | 8000: 00 00 00 00 00 00 00 . . . . | - Dump | 8008: 00 00 00 00 00 00 00 . . . . | ---------------------------------------- | 8000: NOP | - Disassembler | 8001: NOP | ---------------------------------------- | A: BC: DE: HL: F: SZ-H-PCN | | 00 0000 0000 0000 00000000 | - CPU | | | IX: IY: PC: SP: | | 0000 0000 0000 0000 | | | ---------------------------------------- | | | * | - Přikazový | | prostor ---------------------------------------- Ve zkušebním módu učebního programu můžete vaše strojové programy přezkoušet a přitom sledovat, co se děje v mikroproce- soru a v paměti. Navíc máte k dispozici, právě tak, jako v programovacím módu, v prvním řádku Calculator, s jehož pomocí můžete mezitím provádět výpočty. Stisknete-li znovu klavesu dostanete se znovu do programovacího módu. Kurzor je stále ještě v okénku Calculator. Abychom se dostali do dalšího okénka - Hexmonitor/Dump je třeba stisknout klávesu . Dalším se dostanete do nejspodnějšího okénka prog- ramovacího módu, do Assembleru/Disassembleru. Třetí vás opět vrátí do Calculatoru. PROGRAMOVACÍ MÓD ----------------- Calculator Calculator funguje pro programátora jako kapesní počítač. Slouží k provedení jednoduchých aritmetických operací mezi jednotlivými číselnými systémy, ale též pro logické operace a bitové přenosy, které se provádějí stejnou logikou, jako to dělá CPU vašeho počítače. Calculator pracuje jako některé kapesní kalkulačky pomocí tzv. "obrácené polské logiky" t.j. nejdříve se vkládají čísla a pak operace, která má být provedena. K tomu se založi číselný stack. Při vkládání čísel se jejich hodnoty ukládají do stacku, jako operandy operací se berou hodnoty z vrchu, operace se pro- vede a její výsledek se uloží do stacku. str.98 Jednotlivé části okénka Calculaturu mají následující funkce: ---------------------------------------- | H # 0 | ---------------------------------------- nastavený číselný ^ ^ vstupní ^ pozice systém kurzor stacku Znak vlevo vedle kurzoru je počátečním písmenem nastaveného číselného systému. Pozice stacku zcela vpravo ukazuje kolik číselných hodnot leží ve stacku. Číselný systém se volí takto: ------------------------------------------------- | Klávesa | Znázornění čísel | Zkratka | ------------------------------------------------- | | hexadecimální | H | | | desítkové | žádná | | | binární | B | ------------------------------------------------- V okénku Calculatoru se objeví vždy hodnota, která je ve stacku navrchu. Při vkladání čísel klávesou je možno vyma- zat naposled vložený znak, pomocí se vkládání ukončuje a vložená hodnota je uložena do stacku. Jestliže se má operace s číslem provést ihned po napsání, se nemusí dávat. Prosím věnujte pozornost tomu, že při vkládání hex čísel musí být první cifra vždy desítkové číslo. Pro hodnotu hex 'FFFF' zadáte tedy '0FFFF'. V následující tabulce jsou popsány operace, které lze pro- vádět v Calculatoru. Nejprve najděte klávesu, pak účinek operace, ve sloupci "stack" se pak ukáže, které hodnoty byly ze stacku odebrány a které ve stacku zbyly. Nejhořejší prvek stacku - nadále TOS ( Top Of Stack) stojí vždy vpravo. --------------------------------------------------------- | Klávesa | Účinek | Stack | --------------------------------------------------------- | | Změna okénka | | | | Změna obrazovky | | | | Návrat do monitoru | | --------------------------------------------------------- | | Kopie TOS | N1 -> N1,N1 | | < | > | Mazání TOS | N1,N2 -> N1 | | | Mazání stacku | ..,.. -> - | | | Záměna | N1,N2 -> N2,N1 | --------------------------------------------------------- | <+> | Sčítání | N1,N2 -> N1+N2 | | <-> | Odčítání | N1,N2 -> N1-N2 | | <*> | Násobení | N1,N2 -> N1*N2 | | | Dělení | N1,N2 -> N1/N2 | | | Modulo-zbytek dělení| N1,N2 -> N1 MOD N2| |-------------------------------------------------------| str.99 --------------------------------------------------------- | | AND | N1,N2 -> N1 AND N2| | | OR | N1,N2 -> N1 OR N2 | | | NOT | N1 -> NOT N1 | | | XOR | N1,N2 -> N1 XOR N2| --------------------------------------------------------- | | Posun vlevo | N1 -> N1*2 | | | Posun vpravo | N1 -> N1/2 | --------------------------------------------------------- V druhém okénku programovacího módu si můžete prohlédnout a měnit paměťové rozsahy. Přitom existuje možnost volby mezi dvěma různými způsoby znázorňování. Hexmonitor V hexmonitoru je zobrazován paměťový rozsah 1 byt/ 1 řádka: ---------------------------------------- | 8000: > 3E | | 8001: . 11 | | 8002: . 06 | | 8003: " 22 | | 8004: . 0E | | 8005: 3 33 | | 8006: . C9 | | 8007: . 00 | ---------------------------------------- adresa obsah hex. hex | obsah v ASCII V řádce, kde je kurzor lze lze uložit číselnou hodnotu do pamě- ti napsáním hex čísla a . Další funkce jsou uvedeny v tabulce: ---------------------------------------------------------- | Klávesa | Funkce | ---------------------------------------------------------- | | Změna na Dump ( 8 byte / řádek ) | | | Změna okénka | | | Změna obrazovky | | | Návrat do Monitoru - Konec | ---------------------------------------------------------- | | Nová adresa | | | Rozsah paměti - tabulka | | | Zpracovat následující byt | | <->> | Listovat dopředu ( 1 řádek ) | | <<-> | Listovat dozadu ( 1 řádek ) | | < | > | Listovat dopředu ( 8 řádek ) | | < ^ > | Listovat dozadu ( 8 řádek ) | | < ' > | Vložit řetězec | ---------------------------------------------------------- Stisknutím klávesy se dostaneme do módu 'Dump'. str.100 Dump Při tomto módu lze číst a kontrolovat, ale nelze nic měnit. ----------------------------------------- | 8000: 3E 11 06 22 0E 33 C9 00 ...":3..| | 8008: 00 00 00 00 00 00 00 00 ........| | 8010: 00 00 00 00 00 00 00 00 ........| | 8018: 00 00 00 00 00 00 00 00 ........| | 8020: 00 00 00 00 00 00 00 00 ........| | 8028: 00 00 00 00 00 00 00 00 ........| | 8030: 00 00 00 00 00 00 00 00 ........| | 8038: 00 00 00 00 00 00 00 00 ........| ----------------------------------------- adresa obsah hex obsah hex ASCII Funkce při Dump: ---------------------------------------------------------- | Klávesa | Funkce | ---------------------------------------------------------- | | Změna na Monitor ( 1 byt / 1 řádek ) | | | Změna okénka | | | Změna obrazovky | | | Konec | ---------------------------------------------------------- | | Novou adresu | | | Rozsah paměti (tabelovat) | | < | > | Listovat dopředu ( 8 řádek ) | | < ^ > | Listovat dozadu ( 8 řádek ) | ---------------------------------------------------------- Disassembler/Assembler V tomto módu můžete listovat v programu, který je zobrazován v mnemonice a můžete zadávat i nové instrukce. ---------------------------------------- | 8000: LD A,11 | | 8002: LD B,22 | | 8004: LD C,33 | | 8006: RET LD D,44 | ---------------------------------------- adresa mnemonika nová instrukce hex str.101 Funkce: ---------------------------------------------------------- | Klávesa | Funkce | ---------------------------------------------------------- | | Změna okénka | | | Změna obrazovky | | | Konec | ---------------------------------------------------------- | | Zadat novou adresu | | | Rozsah paměti (tabelovat-listovat) | | | Zpracovat příští adresu | | < | > | Listovat dopředu | | < ^ > | Zpět k poslední zadané adrese | | < ->> | Příští řádek | | <<- > |Jeden řádek zpět(pouze uvnitř indik.okénka| ---------------------------------------------------------- Všechny číselné hodnoty se udávají hexadecimálně.Pro vstup bez- prostředních číselných hodnot v assemblerových příkazech musí první číslo být vždy decimální cifrou. Pro "LD A,FF" zadejte tedy "LD A,0FF" Test modus Za zkušebního módu máte právě tak jako v programovacím módu k dispozici v nejhořejším okénku kalkulátor. Okénko Dump pod tím vám dává možnost po provedení strojo- vých povelů pozorovat změnu vyvolaného rozsahu pamětí. Třetí okénko,Disassembler ukazuje vždy na obě další instrukce v programu.Obě nejspodnější okénka CPU a povelové okénko jsou v Test módu nejdůležitější. V okénku CPU je stále indikován obsah CPU registru.Do okénka povelů dáváte v Learn-paketu své povely.Při tom máte následující možnosti : Povelové okénko --------------------------------------------------------------- | Klávesa | Funkce | --------------------------------------------------------------- | | Změna okénka | | | Změna obrazovky | | | Konec | -------------------------------------------------------------- | < A > | předeslat A | | < B > | předeslat BC | | < D > | předeslat DE | | < H > | předeslat HL | | < IX > | předeslat IX | | < IY > | předeslat IY | | < F > | předeslat F | | < P > | předeslat PC | --------------------------------------------------------------- | < INST > | novou adresu pro okénko DUMP | | < G > | Go: startovat program v reálném čase | | < T > | Trace :startovat program po krocích | | < CLR > | Tisk protokolu vypnuto/zapnuto | --------------------------------------------------------------- str.102 Povel G slouží ktomu aby se nechal program nebo jeho část přeběhnout najednou.Po < G > vypadá okénko takto: ------------------------------------------ | * G : # | ------------------------------------------ Nyní můžete volit mezi dvěma možnostmi: < CR > startovací adresu z PC v okénku převzít < CR > jinou startovací adresu zadat Po zadání nebo převzetí startovací adresy můžete volit,zda si přejete nechat proběhnout celý program nebo pouze některou část ----------------------------------------- | * G : 0000 -# | ----------------------------------------- < CR > Programový úsek nechat proběhnout až k udané adrese (breakpoint) < CR > Program nechat proběhnout celý V případě,že program se má provésst na způsob Breakpoint,musí být udaná adresa uložena v RAM a obsahovat začátek Op kódu, který bude skutečně programem proběhnut. Povel Trace funguje zcela obdobně jako G povel.Postlačení "T"se objeví: ----------------------------------------- | * T : # | ----------------------------------------- I zde můžete podle volby zadávat jinou startovací adresu než je v PC okénku CPU.K provedení povelu "T" jsou pak dvě možnosti: < šipka dolu > -práce jednotlivými kroky (single step) < CR > -až po přerušení trasovat průběžně < malá prázdná klávesa >-Tracer přerušit Upozorňujeme,že pouze programy uložené v RAMu vašeho po- čítače lze zpracovávat Tracerem. Jak provoz Breakpint tak Tracer je vpravo v okénku indikován písmenem "G" resp."T" tak dlouho,dokud není program zcela zpracován.Zadáním nové hodnoty pro PC může se tento flag posadit zpět. Upozorňujeme,že během užívání učebního programu obsahuje CPU stack rozsah adres od A000 dolů.Uživatel se má sám postarat aby CPU stack nepřeběhl do oblasti vlastních strojových programů str.103 Dodatek E ------------ Paměťový plán,podprogramy E.1 Paměťový plán ----------------- ----------------------- 0000 | | | MONITOR ROM | 1000 | | ----------------------- | | | | ----------------------- D000 | VIDEO RAM | ----------------------- E000 | | | MONITOR ROM | FFFF | | ----------------------- E.2 Podprogramy z ROMu ---------------------- Na následujících stránkách najdete sestavení nejdůleži- tějších podprogramů z ROMu.Adresy jsou udávány hexadecimálně Vkládání z klávesnice ------------------------------------------------- | GETKY adresa: 00B1 | ------------------------------------------------- Funkce: Bere znak z klávesnice.Není-li stisknuta žádná klávesa je do akumulátoru nabrána 0.Jinak stojí ASCII kód stla- čené klávesy na A.Když je stlačena některá z následu- jících zvláštních kláves není do A nabírán ASCII kód, ale speciální kód. Klávesa Kód do ---------------------------- < DEL > 60 < INST > 61 < ALPHA > 62 < BREAK > 64 < CR > 66 <špka dolu> 11 < ^ > 12 < -> > 13 < <- > 14 < HOME > 15 < CLR > 16 Vstupní parametry : žádné Výstupní parametry : A= kód stlačené klávesy A=0 když není stisknuta žádná klávesa Změněné registry a paměť. buňky: A , F Poznámka: Nejsou prováděna žádná opatření aby se zabránilo chybám vzniklým nárazem kláves str.104 ------------------------------------------------- | GETL adresa: 001B | ------------------------------------------------- Funkce: Z klávesnice je brán celý řádek,je ukládán a zobrazen počínaje od adresy stojící v DE. ukončuje zadávání. Zadávání smí obsahovat kurzorové znaky. stiskne-li se a současně,je k adrese stojící v DE dán BREAK kód (1B) a následně CR kód (0D). Vstupní parametry :DE= adresa od které počínaje majíbýt vstup- ní data ukládány Výstupní parametry :počínaje adresou DE se data ukládají Změněné registry a paměť. buňky: A , F Poznámka: Maximálně 80 znaků (vcetně ) může být nabráno ------------------------------------------------- | BRKEY edresa: 009B | ------------------------------------------------- Funkce: Přezkušuje zda a jsou současně stisknuty Vstupní parametry :žádné Výstupní parametry :Zero-Flag =1 ,když a jsou stlačeny současně ,jinak Zero-Flag =0 Změněné registry a paměť. buňky: A , F ------------------------------------------------- | ??KEY adresa: 09B3 | ------------------------------------------------- Funkce: Čeká na znak z klávesnice.Blikající kurzor značí výzvu ke vstupnímu zadávání. Vstupní parametry :žádné Výstupní parametry : A= kód indikace stlačené klávesy Změněné registry a paměť. buňky: A , F Poznámka:Následující výzva id ?DACN dodá kód ASCII Vydávání textu na obrazovku ------------------------------------------------ | PRNT adresa: 0012 | ------------------------------------------------ Funkce: Dává znak do pozice kurzoru.Kontrolní znaky jsou zohledněny Vstupní parametry : A= ASCII kód znaku,který má být vydán Výstupní parametry : žádné Změněné registry a paměť.buňky : A , F ------------------------------------------------ | MSG adresa: 0015 | ------------------------------------------------ Funkce: Dává sled znaků.Kontrolní značky jsou zohledněny. 0D označuje konec sledu znaků. Vstupní parametry : DE=počáteční adresa znaků,které mají být vydávány. Výstupní parametry : žádné Změněné registry a paměť.buňky : všechny str.105 ------------------------------------------------ | LETNL adresa: 0006 | ------------------------------------------------ Funkce: Pohybuje kurzorem na začátek příštího řádku Vstupní parametry : žádné Výstupní parametry : žádné Změněné registry a paměťové buňky: A , F Tónový výstup ------------------------------------------------ | BELL adresa: 003E | ------------------------------------------------ Funkce: Vydává krátký tón cca 800 Hz Vstupní parametry : žádné Výstupní parametry : žádné Změněné registry a paměť.buňky: A , F ------------------------------------------------ | MELDY adresa: 0030 | ------------------------------------------------ Funkce: Reprodukce hudby.Hudební data se musí předkládat ve stejném formátu,jako značky v příkazu MUSIC v Basicu. 0D nebo C8 je konec dat. Vstupní parametry : DE= začáteční adresa hudebních dat Výstupní parametry : C=0 po dokončení předání C=1 když reprodukce byla přerušena Změněné registry a paměť.buňky: A , F ------------------------------------------------- | XTEMP adresa: 0041 | ------------------------------------------------- Funkce: Nastavuje tempo pro MELDY(0030) Vstupní parametry : A=01 pomalé tempo A=04 střední tempo A=07 rychlé tempo Výstupní parametry : žádné Změněné registry a paměť.buňky:žádné ------------------------------------------------ | MSTA adresa: 0044 | ------------------------------------------------ Funkce: Generuje nepřetržitý tón Vstupni parametry : 11A1 ,11A2 dvoubytové číslo,které určuje frekvenci tónu podle vzorce f= 895 kHz/nm Výstupní parametry :žádné Změněné registry a paměť. buňky: A , F ; HL str.106 ------------------------------------------------- | MSTP adresa: 0047 | ------------------------------------------------- Funkce: Zastavuje generovaný tón od MSTA (0044) Vstupní parametry : žádné Výstupní parametry : žádné Změněné registry a paměť. buňky: A , F ------------------------------------------------- | TIMST adresa: 0033 | ------------------------------------------------- Funkce: Nastavení a start vestavěných hodin Vstupní parametry : A=0 pro AM A=1 pro PM DE=4místné hexadecimální číslo,které vyjadřuje čas v sekundách Výstupní parametry : žádné Změněné registry a paměť. buňky: A , F ------------------------------------------------- | TIMRD adresa: 003B | ------------------------------------------------- Funkce: Odečet vestavěných hodin Vstupní parametry :žádné Výstupní parametry :A=0 pro AM A=1 pro PM DE = 4místné hex.číslo pro @očet sekund, které uplynuly od okamžiku startu. Změněné registry a paměť. buňky: AF , DE ------------------------------------------------- | ?DACN adresa: 0BCE | ------------------------------------------------- Funkce: Přeměna indikačního kódu v ASCII Vstupní parametry : A= kód indikace Výstupní parametry : A= ASCII kód Změněné registry a paměť. buňky: A , F Poznámka: používá se po ??KEY ------------------------------------------------- | POUT adresa: 018F | ------------------------------------------------- Funkce: Dává znaky na výstup(plotter) Vstupní parametry : A= ASCII znaky Výstupní parametry : žádné Změněné registry a paměť. buňky: A , F , BC str.107 E.3 Důležitá paměťová místa v RAM ------------------------------------------------------ | Adresa hex. | Význam ------------------------------------------------------ | 1171 | Y pozice kurzoru 0-18 | | 1172 | X pozice kurzoru 0-27 | | | | | 117B | 0=velká písmena | | | 1=malá písmena | | 103B-10EF | Stack pozice | | 10EF | TOS | | 119B | Pro hodiny AM=0 ,PM=1 | | 119C | F0= chod hodin | | 119D | 0=tón při stisku klávesy | | | FF= bez tónu při stisku klávesy | | 119E | Music tempo | | 119F | Délka tónu | | 11AD | Číslo oktávy | | 11A1 | Tónová frekvence LOW | | 11A2 | Tónová frekvence HIGH | | 11A3-11F3 | Stisknutí klávesnice | ------------------------------------------------------ k o n e c Překlad : Milan Bůbel (c)1988