| | S O R D Creative Computer $$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$ $$ $$$$$$$ $$ $$ $$ $$$$$$$ $$$$$$ $$$$$$ $$ $$$$$$$$$$$$$$$$$ $$$$$$$$$$ $$ $$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$ $$ $$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$ $$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$ $$ $$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$ $$$ $$ $$$$$$$ $$$$$$$$$ $$$$$$$$ $$ $$ $$$$$$$ $$$$$$$ $$$$$$$ $$ $$$$$$$ $$$$$$$ $$$$$$$ $$ $$$$$$$ $$$$$$$ $$$$$$$ $$ $$$$$$$ $$$$$$$ $$$$$$$ $$ $$$$$$$ $$$$$$$ $$$$$$$ $$ $$$$$$$ $$$$$$$ $$$$$$$ $$ $$$$$$$ $$$$$$$ $$$$$$$ ####### $$ $$$$$$$ $$$$$$$ $$$$$$$ ####### $$ $$$$$$$ $$$$$$$ $$$$$$$ ####### $$ $$$$$$$ $$$$$$$ $$$$$$$ ####### $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ -------------------------------------------------- | | | H E A P  | | | -------------------------------------------------- HEAP - 1 - Obsah ===== Uvod ............................................................. 2 Pridavne pameti .................................................. 2 Cinnost M5 pri startu systemu .................................... 3 Cinnosti vyvolane prerusenim od CTC #3 - systemovy tvar .......... 5 Usporadani pameti ROM a RAM ...................................... 7 Usporadani pameti videoprocesoru ................................. 10 Tabulka barev .................................................... 14 Tabulka klavesnice ............................................... 14 Pripojeni I/O zarizeni ........................................... 15 Dolni polovina ASCII tabulky ..................................... 15 Narodni abeceda .................................................. 16 Seznam odezev CTRL + klavesa ..................................... 16 CTRL kody na pocitacich rady SMEP ................................ 17 Zapojeni systemoveho konektoru ................................... 17 Zapojeni konektoru tiskarny ...................................... 18 Zapojeni joysticku ............................................... 18 Cteni klavesnice a joysticku ..................................... 18 Univerzalni brana 50H ............................................ 18 Format zaznamu dat na magnetofonu ................................ 19 Seznam chyb - MONITOR ROM ........................................ 20 Popis vybranych casti z problematiky programovani na Z80 ......... 21 Programovani obvodu TMS9929A - videoprocesor ..................... 23 Programovani obvodu SN76489AN - zvukovy generator ................ 24 Programovani obvodu Z80 CTC - citac .............................. 25 Programovani obvodu I8255 - paralelni port ....................... 26 Definovani novych zarizeni v Basiku-F ............................ 27 Cisla a adresy prikazu a funkci jazyka Basic-F a Basic-D ......... 29 Oddelovace a ostatni urcujici slova jazyka Basic-F a Basic-D ..... 32 Ulozeni basickych promennych ..................................... 33 Cisla a adresy prikazu a funkci jazyka Basic-G a Basic-I ......... 34 Options For M5 ................................................... 35 HEAP - 2 - Uvod **** Tato prirucka obsahuje informace, ktere je potreba znat pri praci s pocitacem SORD M5. Je zde obsazeno nekolik informaci o systemu ( usporadani pameti, beh systemu, chyby a podobne ), ruzne tabulky, informace o zaznamu dat na magneto- fon a o mikroprocesoru Z80. Pridavne pameti *************** Nize popisovany modul 64KBF je typ pameti 64 KB RAM, ktery v sobe obsahuje oproti stavajici nejrozsirenejsi "sedesatctyrce" take jazyk BASIC-F. Velkou vyhodou tohoto modulu je moznost prace v osmi ruznych rezimech, zatim co 64KBI nabizi pouze rezim 32/48/56 nebo 64 kB RAM + povoleni/zakaz zapisu do dolnich 28 kB RAM, pricemz programove lze ovladat pouze rezim 48/56 kB RAM. V modulu 64KBF je dale oddelen zapis od cteni. Prakticky to znamena, ze mozne ukladat data primo do pameti RAM, ktera je zastinena prave aktivni pameti ROM, oproti modulu 64KBI kde je nutne nejprve ROM odpojit a pak teprve je mozny zapis. Dalsi uvedena pamet 64KRD a 64KRX je vpodstate rozsirujici deska, na ktere je 512KB RAM DISK, 56 nebo 88 KB ROM DISK a 64KB RAM. KRD a KRX se od sebe lisi pouze obsazenim ROM DISKu. Programove ovladani pameti 64KB RAM =================================== EM-64, 64KBI: OUT 6CH,00H - pripoji ROM OUT 6CH,01H - pripoji RAM 64KBF: OUT 30H,00000xxxB - pripoji RAM nebo ROM, viz nize 64KRD, 64KRX: OUT 7FH,00000000B - pripoji RAM OUT 7FH,11111111B - pripoji ROM OUT 7FH,xxxxxxxxB - pripoji RAM i ROM, viz nize HEAP - 3 - Cinnost M5 pri startu systemu ***************************** Po zapnuti nebo po restartu pocitace se spusti od adresy 0000 program ve stro- jovem kodu, ktery je ulozen v tzv. MONITORu ROM. Tento program je zakladnim programovym vybavenim pocitace. Je dlouhy 8kB a nelze jej bez uprav provozovat v pameti RAM, do ktere je povolen zapis. Je to zpusobeno tim, ze MONITOR pro- vadi test RAM, pri kterem nutne musi nastat okamzik, kdy prepise prave prova- denou instrukci, coz zpusobi kolizi, ktera je resena skokem na havarijni stav. Tento problem lze vyresit upravou rutiny testu RAM ( CHKRAM ) na adrese &008E. Vyvojovy diagram: ================= +--------------------------------------+ | RST0 | +--------------------------------------+ | DI | | IM 2 | | SP <- SYSTAK | +--------------------------------------+ | +--------------------------------------+ | M5BOT | +--------------------------------------+ | I <- 70H | | inicializace systemovych | | promennych, CTC | | EI | | inicializace SGC, SML, VDP, | | zobrazeni | +--------------------------------------+ | test MONITOR ROM na soucet 0 | +--------------------------------------+ | | / \ / \ - ****************** < OK? >-------------------* havarijni stav * \ / ****************** \ / + | | +--------------------------------------+ | test RAM, nalezeni zacatku a konce | +--------------------------------------+ | | / \ / \ - ****************** < OK? >-------------------* havarijni stav * \ / ****************** \ / + | | (1) HEAP - 4 - (1) | +---------------------------------------------+ | vyhledani modulu, vyber adres IPL a startu | +---------------------------------------------+ | | / \ je modul? - / \ + +------------------< ? >----------------------------+ | \ / | | \ / +---------------+ | V | skok na IPL | | +---------------+ | | | ***************** | * start modulu * | ***************** | | Format hlavicky modulu | ---------------------- | +-----------+ +0000 +--------------------------------------+ | RBTCMT | | identifikator | +-----------+ +0001 +--------------------------------------+ | precti HD | | startovaci adresa | | z CMT |<--------+ +0003 +--------------------------------------+ +-----------+ | | adresa IPL startu | | | +0005 +--------------------------------------+ | je .VM | | instrukce pro vykonani RST4 | / \ nebo .DT | +0008 +--------------------------------------+ / \ + | | instrukce pro vykonani RST5 | < ? >------------>| +000B +--------------------------------------+ \ / | | vlastni program v modulu | \ / | / / | - | \ \ | | / / +-----------+ | | | | cti telo | | +xFFF +--------------------------------------+ +-----------+ | | | Identifikator modulu | | -------------------- / \ je autostart | 00 = 8 KB od 2000H / \ - | 01 = 8 KB od 4000H < ? >-------------+ 02 = 16 KB od 2000H \ / \ / | + | ************* * skok * * na zaznam * ************* HEAP - 5 - Cinnosti vyvolane prerusenim od CTC #3 - systemovy tvar ******************************************************* +--------------------------------------+ | CTC3SP | +--------------------------------------+ | uschova AF, BC, DE, HL | | falesne RETI | | zaznam STATUS VDP | | test na opravnenost INT | +--------------------------------------+ | | / \ je INT povolen - / \ +---------------< ? > | \ / | \ / | | + | | | | | / \ sprity | / \ + +--------+ | < ON? >-------------------->| SPRPRC |--+ | \ / +--------+ | | \ / | | | - | | +---------------->+<-----------------+ | | | | | / \ | +--------+ + / \ | | hodiny |<---< ON? > | +--------+ \ / | | \ / | novy den / \ | - | +--------+ + / \ | | | EVHPRC |<------< ? > | | +--------+ \ / | | | \ / | | | | - | | +-------------->| | | | | | alarm / \ | | +--------+ + / \ | | | ALMPRC |<------< ? > | | +--------+ \ / | | | \ / | | | | - | | | V | | +--------------------------->| | | | UPCNT / \ | +---------+ + / \ | | UPCNTSP |------< ON? > | +---------+ \ / | | \ / | | | - | +------------->| | | (3) (4) HEAP - 6 - (3) (4) | | | DWCNT / \ | +---------+ + / \ | | DWCNTSP |------< ON? > | +---------+ \ / | | \ / | | | - | +------------->| | | | | ^ | RESET / \ HALT / \ | / \ + / \ + +--------+ | < ON? >------< ? >----->| HLTPRC |---+ | \ / \ / +--------+ | | \ / \ / | | | - | - | | | | | | | RESET / \ | | | / \ + +--------+ | | | < ? >------| RSTPRC |-->| | | \ / +--------+ | | | \ / | | | | - | | |<-----------+<---------------------+ | | | JOY / \ | +---------+ + / \ | | JOYSP |------< ON? > | +---------+ \ / | | \ / | | | - | +------------->| | | | KEY / \ | +---------+ + / \ | | KEYSP |------< ON? > | +---------+ \ / | | \ / | | | - | +------------->| | | | uzivatelske eventy / \ | +---------+ + / \ | | UEVSP |------< ON? > | +---------+ \ / | | \ / | | | - | +------------->| | | | +--------------------+ | | povoleni dalsiho | | | preruseni od CTC 3 | | +--------------------+ | | ------------------------------------>| | +----------------------+ | zpet HL, DE, BC, AF | | navrat do normalniho | | behu | +----------------------+ HEAP - 7 - Usporadani pameti ROM a RAM *************************** Standardni usporadani pameti ROM a RAM v pocitaci a modulech ============================================================ Adresa Obsah KB FFFF +----------------------------+ 64 \ | | 62 | F000 | | 60 | | | 58 | E000 | | 56 | | | 54 | D000 | | 52 | | | 50 | C000 | DRAM v modulu EM-5 | 48 > 32kB | | 46 | B000 | | 44 | | | 42 | A000 | | 40 | | | 38 | 9000 | | 36 | +----------------------------+ | | 34 | | RAM v modulech BG a BF | 8000 |----------------------------| 32 < +----------------------------+ | 4kB RAM v pocitaci | 30 > 4kB 7000 |----------------------------| 28 < <--- 6FFF pro Basic-F | | 26 | 6000 | | 24 | <--- 5FFF pro Basic-G | | 22 | 5000 | ROM jazyku BASIC | 20 | | | 18 > 20kB 4000 | v pridavnych modulech | 16 | <--- 3FFF pro Basic-I | | 14 | 3000 | | 12 | | | 10 | 2000 |----------------------------| 8 < | | 6 | 1000 | Monitor ROM v pocitaci | 4 > 8kB | | 2 | 0000 +----------------------------+ 0 / HEAP - 8 - Usporadani pameti ROM a RAM v sestave SORD M5 + modul 64 KBF ============================================================ Adresa Obsah KB Obsah FFFF +----------------------------+ 64 | | 62 F000 | | 60 | | 58 E000 | | 56 | | 54 D000 | | 52 | | 50 C000 | 32KB RAM | 48 | | 46 B000 | | 44 | | 42 A000 | | 40 | | 38 9000 | | 36 | | 34 8000 |----------------------------| 32 +----------------------------+ | 4KB RAM v pocitaci | 30 | | 7000 |----------------------------| 28 | | | | 26 | | 6000 | | 24 | | | | 22 | | 5000 | | 20 | | | ROM jazyka Basic-F | 18 | | 4000 | | 16 | 32KB RAM | | | 14 | | 3000 | | 12 | | | | 10 | | 2000 |----------------------------| 8 | | | | 6 | | 1000 | Monitor ROM v pocitaci | 4 | | | | 2 | | 0000 +----------------------------+ 0 +----------------------------+ Rezimy prace pocitace M5 v sestave s 64KBF ------------------------------------------ Prepinani rezimu prace ( modu ) se deje pomoci instrukce "OUT &30,mod". MODE READ WRITE ---------------------------------------------------------------------- 00 8 KB MON + 20 KB BF + 36 KB RAM 28 KB DIS + 36 KB RAM 01 64 KB RAM 64 KB RAM 02 8 KB MON + 56 KB RAM 64 KB RAM 03 64 KB RAM 28 KB DIS + 36 KB RAM 04 64 KB RAM 16 KB DIS + 48 KB RAM 05 8 KB MON + 20 KB BF + 36 KB RAM 64 KB RAM 06 8 KB MON + 20 KB DIS + 36 KB RAM 64 KB RAM 07 64 KB DIS 64 KB DIS HEAP - 9 - Usporadani pameti ROM a RAM v sestave SORD M5 + deska 64 KRX ============================================================ na desce v pocitaci v pocitaci na desce na desce FFFF +----------+ +----------+ +----------+ +----------+ +----------+ | | | | | | | | | EPROM 16K| | EPROM 16K| | | | 5 | | 7 | C000 | DRAM | +----------+ +----------+ | | | | | | | | | EPROM 16K| | EPROM 16K| | | | 4 | | 6 | 7FFF +----------+ +----------+ +----------+ +----------+ | SRAM | 7000 +----------+ +----------+ | | 6000 | | +----------+ | | | | 5000 | | | EPROM 8K | | | | 3 | 4000 | | +----------+ +----------+ | | | | 3000 | DRAM | | EPROM 8K | | | | 2 | 2000 | | +----------+ | | | | 1000 | | | EPROM 8K | | | | 1 | 0000 +----------+ +----------+ +----------+ +----------+ +----------+ 1 - MONITOR ROM 2 - WINDOWS + BASIC-F 3. cast 3 - BASIC-I 4 - 2. cast BASIC-F + 1. cast BASIC-F 5 - 1. cast BASIC-G + 2. cast BASIC-G 6 - 1. cast MSX 1.C 7 - 2. cast MSX 1.C Poznamka: na pozici 3 muze byt tez staticka RAM 8KB se zalozni baterii! Po zapnuti jsou pripojeny pameti SRAM + 1,2,3,4,5 nebo SRAM + 1,2,3,6,7. Prepinani mezi 4,5 a 6,7 se deje ISOSTATEM, prepinani ROM/RAM se deje instrukci OUT (7FH),A, kde v A kazdy bit oznacuje 8KB pameti ( stav: 0=RAM, 1=ROM, bit: 0=1, 1=2, 2=3, 3=vzdy SRAM, 4=4, 5=5, 6=6, 7=7 ). Pri behu libovolneho jazyka BASIC: 0000 2000 7000 FFFF +-------------------------------------+ | ROM nebo RAM | RAM | | MONITOR | BASIC-x | volno | +-------------------------------------+ Pri behu MSX 1.C: 0000 8000 FFFF +-------------------+ | RAM | | MSX 1.C | volno | +-------------------+ MONITOR ROM vyuziva oblast RAM 7000-72FF pro sve systemove promenne. Tato RAM musi byt po zapnuti pristupna. Jazyky basic vyuzivaji oblast RAM do 7383 (BI), 745A (BG) a 77F2 (BF). System MSX nuluje 3 byte od 8000 a oblast od F0A0-F37F a F380-FFFF vyuziva pro sve systemove buffery a promenne. HEAP - 10 - Usporadani pameti videoprocesoru ******************************** Usporadani pameti VRAM v rezimu TEXT ==================================== Rozvrzeni plati pro pripad, kdy jsou obe obrazovky v rezimu TEXT. Je-li jedna z nich v rezimu GI viz kapitola 3.2. Adresa Obsah KB 0000 +----------------------------+ 0 \ | | | | | | \ \ | / / | \ Volna pamet 10KB \ > 10240 bytu / / | \ \ | | | | | | | 2800 |----------------------------| 10 < | | | | | | | Generator tvaru znaku | | 2C00 | obrazovky 0 | 11 > 2048 bytu | | | | | | | | | 3000 |----------------------------| 12 < | | | | | | | Generator tvaru znaku | | 3400 | obrazovky 1 | 13 > 2048 bytu | | | | | | | | | 3800 |----------------------------| 14 < | Obsah obrazovky 0 | | | ( ASCII kody znaku ) | > 960 bytu 3BC0 |----------------------------| | | Volna pamet 64 bytu | > 64 bytu 3C00 |----------------------------| 15 < | Obsah obrazovky 1 | | | ( ASCII kody znaku ) | > 960 bytu 3FC0 |----------------------------| | | Volna pamet 64 bytu | > 64 bytu 3FFF +----------------------------+ 16 / HEAP - 11 - Usporadani pameti VRAM v rezimu GI ================================== Rozvrzeni plati pro pripad, kdy jsou obe obrazovky v rezimu GI. Je-li jedna z nich v rezimu TEXT, plati pro oblast obsahu obrazovky to co pro rezim TEXT. Adresa Obsah KB 0000 +----------------------------+ 0 \ | | | | | | \ \ | / / | \ Volna pamet 8KB \ > 8192 bytu / / | \ \ | | | | | | | 2000 |----------------------------| 8 < | | | | | | | Generator tvaru sprajtu | | 2400 | obrazovky 0 i 1 | 9 > 2048 bytu | | | | | | | | | 2800 |----------------------------| 10 < | | | | | | | Generator tvaru znaku | | 2C00 | obrazovky 0 | 11 > 2048 bytu | | | | | | | | | 3000 |----------------------------| 12 < | | | | | | | Generator tvaru znaku | | 3400 | obrazovky 1 | 13 > 2048 bytu | | | | | | | | | 3800 |----------------------------| 14 / \ \ / Viz rozvrzeni VRAM v GI / \ od adresy &3800 \ / / 3FFF |----------------------------| 16 HEAP - 12 - Usporadani pameti VRAM v rezimu GII =================================== Rozvrzeni plati pro pripad, kdy je jedna z obrazovek v rezimu GII. Pro druhou plati pro oblast obsahu obrazovky to co pro rezim ve kterem se nachazi. Adresa Obsah KB 0000 +----------------------------+ 0 \ | Barvy znaku | | 0400 | horni tretina obrazovky | 1 > 2048 bytu | | | 0800 |............................| 2 < | Barvy znaku | | 0C00 | stredni tretina obrazovky | 3 > 2048 bytu | | | 1000 |............................| 4 < | Barvy znaku | | 1400 | dolni tretina obrazovky | 5 > 2048 bytu | | | 1800 |----------------------------| 6 < | | | 1C00 | viz poznamka | 7 > 2048 bytu | | | 2000 |----------------------------| 8 < | Tvary znaku | | 2400 | horni tretina obrazovky | 9 > 2048 bytu | | | 2800 |............................| 10 < | Tvary znaku | | 2C00 | stredni tretina obrazovky | 11 > 2048 bytu | | | 3000 |............................| 12 < | Tvary znaku | | 3400 | dolni tretina obrazovky | 13 > 2048 bytu | | | 3800 |----------------------------| 14 / \ \ / Viz rozvrzeni VRAM v GI / \ od adresy &3800 \ / / 3FFF |----------------------------| 16 Poznamka: --------- &1800 az &1FFF: Generator tvaru spritu pro obrazovku 0 i 1 a zaroven generator tvaru znaku pro opacnou obrazovku ( tzn. pro tu, na niz neni rezim GII ). Tiskne-li se do graficke obrazovky, bere se tvar znaku z tohoto generatoru. HEAP - 13 - Usporadani pameti VRAM od adresy &3800 v rezimu GI ================================================== Rozvrzeni plati pro pripad, kdy jsou obe obrazovky v rezimu GI. Je-li jedna z nich v rezimu TEXT, plati pro oblast od &3800 do &3BFF ( obrazovka 0 ), pripadne &3C00 az &3FFF ( obrazovka 1 ) to co pro rezim TEXT. Je-li jedna z obrazovek v rezimu GII, je pro ni vyuzito jen 768 + 128 bytu a zbytek je volny. Adresa Obsah KB 3800 |----------------------------| 14 \ | | | 3880 | | | | | | 3900 | | | | Obsah obrazovky 0 | | 3980 | ( ASCII kody znaku ) | > 768 bytu | | | 3A00 | | | | | | 3A80 | | | | | | 3B00 |----------------------------| < |Tabulka sprajtu obrazovky 0 | > 128 bytu 3B80 |----------------------------| < | Barvy znaku obrazovky 0 | > 32 bytu 3BA0 |----------------------------| < | Volna pamet 96 bytu | > 96 bytu 3C00 |----------------------------| 15 < | | | 3C80 | | | | | | 3D00 | | | | Obsah obrazovky 1 | | 3D80 | ( ASCII kody znaku ) | > 768 bytu | | | 3E00 | | | | | | 3E80 | | | | | | 3F00 |----------------------------| < |Tabulka sprajtu obrazovky 1 | > 128 bytu 3F80 |----------------------------| < | Barvy znaku obrazovky 1 | > 32 bytu 3FA0 |----------------------------| < | Volna pamet 96 bytu | > 96 bytu 3FFF |----------------------------| 16 / HEAP - 14 - Tabulka barev ************* 00 - 0 - zadna barva ( pruhledna ) - no color ( transparent ) 01 - 1 - cerna - black 02 - 2 - zelena - green 03 - 3 - svetle zelena - light green 04 - 4 - tmave modra - deep blue 05 - 5 - svetle modra - light blue 06 - 6 - tmave cervena - deep red 07 - 7 - fialova - cyan 08 - 8 - cervena - red 09 - 9 - svetle cervena - light red 10 - A - tmave zluta - deep yellow 11 - B - svetle zluta - light yellow 12 - C - tmave zelena - deep green 13 - D - purpurova - ruzova - purple 14 - E - seda - gray 15 - F - bila - white Tabulka klavesnice ****************** Prikaz PRINT PEEK(&702A) vraci hodnoty prerazovacich klaves ( 01 az 08 ) a prikaz PRINT PEEK(&702B) vraci hodnoty znakovych klaves ( 09 az 56 ). ,----.----.----.----.----.----.----.----.----.----.----.----.----.-----. | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | ^ | \ | | | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 41 | 42 | 43 | 44 | 48 |RESET| `----'----'----'----'----'----'----'----'----'----'----'----'----'-----' ,----.----.----.----.----.----.----.----.----.----.----.----.----.--------. |FUNC| Q | W | E | R | T | Y | U | I | O | P | @ | [ | RETURN | | 02 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 49 | 50 | 51 | 52 | 08 | `----'----'----'----'----'----'----'----'----'----'----'----'----'--------' ,----.----.----.----.----.----.----.----.----.----.----.----.----.-------. |CTRL| A | S | D | F | G | H | J | K | L | ; | : | ] | SPACE | | 01 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 53 | 54 | 55 | 56 | 07 | `----'----'----'----'----'----'----'----'----'----'----'----'----'-------' ,--------.----.----.----.----.----.----.----.----.----.----.----.-------. | SHIFT | Z | X | C | V | B | N | M | + | . | / | _ | SHIFT | | 04 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 45 | 46 | 47 | 08 | `--------'----'----'----'----'----'----'----'----'----'----'----'-------' HEAP - 15 - Pripojeni I/O zarizeni ********************** brana ( port ) zarizeni 00 az 03 kanaly CTC #0 az #3 10 a 11 VDP 20 SGC 30 az 37 klavesnice a joystick 40 a 50 centronics pro PRT a univerzalni brana ( MGF, rele, ) 60 az 63 rezervovano pro SIO 70 az 73 rezervovano pro PIO 80 az FF volne, systemem M5 nevyuzivane Porty 60 a 70 byvaji vyuzity pro prepinani ROM/RAM a pro pristup k RAM DISKu. Konktetni pouziti se lisi podle hardwarove konstrukce. Dolni polovina ASCII tabulky **************************** 00 00 - znak nic 43 2B + - plus 86 56 V 01 01 A - inverzni A 44 2C , - carka 87 57 W 02 02 B - inverzni B 45 2D - - minus 88 58 X 03 03 C - inverzni C 46 2E . - tecka 89 59 Y 04 04 D - inverzni D 47 2F / - lomitko 90 5A Z 05 05 E - inverzni E 48 30 0 91 5B [ - leva hranata zavorka 06 06 F - inverzni F 49 31 1 92 5C \ - obracene lomitko 07 07 G - inverzni G 50 32 2 93 5D ] - prava hran. zavorka 08 08 H - inverzni H 51 33 3 94 5E ^ - znak mocneni 09 09 I - inverzni I 52 34 4 95 5F _ - podtrzitko 10 0A J - inverzni J 53 35 5 96 60 ` - obraceny apostrof 11 0B K - inverzni K 54 36 6 97 61 a 12 0C L - inverzni L 55 37 7 98 62 b 13 0D M - inverzni M 56 38 8 99 63 c 14 0E N - inverzni N 57 39 9 100 64 d 15 0F O - inverzni O 58 3A : - dvojtecka 101 65 e 16 10 P - inverzni P 59 3B ; - strednik 102 66 f 17 11 Q - inverzni Q 60 3C < - mensi nez 103 67 g 18 12 R - inverzni R 61 3D = - rovnase 104 68 h 19 13 S - inverzni S 62 3E > - vetsi nez 105 69 i 20 14 T - inverzni T 63 3F ? - otaznik 106 6A j 21 15 U - inverzni U 64 40 @ - obchodni at 107 6B k 22 16 V - inverzni V 65 41 A 108 6C l 23 17 W - inverzni W 66 42 B 109 6D m 24 18 X - inverzni X 67 43 C 110 6E n 25 19 Y - inverzni Y 68 44 D 111 6F o 26 1A Z - inverzni Z 69 45 E 112 70 p 27 1B - kursor 70 46 F 113 71 q 28 1C - sipka vpravo 71 47 G 114 72 r 29 1D - sipka vlevo 72 48 H 115 73 s 30 1E - sipka nahoru 73 49 I 116 74 t 31 1F - sipka dolu 74 4A J 117 75 u 32 20 - mezera 75 4B K 118 76 v 33 21 ! - vykricnik 76 4C L 119 77 w 34 22 " - uvozovky 77 4D M 120 78 x 35 23 # - maltezsky kr. 78 4E N 121 79 y 36 24 $ - string, dolar 79 4F O 122 7A z 37 25 % - procenta 80 50 P 123 7B { - leva slozena zavorka 38 26 & - obchodni and 81 51 Q 124 7C | - siroka dvojtecka 39 27 ' - apostrof 82 52 R 125 7D } - prava sl. zavorka 40 28 ( - leva zavorka 83 53 S 126 7E ~ - vlnovka 41 29 ) - prava zavorka 84 54 T 127 7F - trojuhelnicek 42 2A * - hvezdicka 85 55 U 128 80 - plny ctverec 8*8 HEAP - 16 - Narodni abeceda *************** Na ASCII kodech A0h az DFh jsou v M5 znaky narodnich abeced.Pro mistni potreby vznikl tzv. LZR standard pro usporadani znaku s diakritickymi znamenky a nek- tere matenaticke symboly. A0: suma B0: prehlasovane O C0: mezera D0: prehlasovane o A1: dlouhe A B1: O s vokanem C1: dlouhe a D1: o s vokanem A2: prehlasovane A B2: R s hackem C2: prehlasovane a D2: r s hackem A3: C s hackem B3: S s hackem C3: c s hackem D3: s s hackem A4: D s hackem B4: T s hackem C4: d s hackem D4: t s hackem A5: dlouhe E B5: dlouhe U C5: dlouhe e D5: dlouhe u A6: E s hackem B6: U s krouzkem C6: e s hackem D6: u s krouzkem A7: prehlasovane E B7: prehlasovane U C7: prehlasovane e D7: prehlasovane u A8: hacek B8: dlouhe R C8: vlnovka D8: dlouhe r A9: dlouhe I B9: dlouhe Y C9: dlouhe i D9: dlouhe y AA: carka BA: Z s hackem CA: prehlaska DA: z s hackem AB: krouzek BB: <= CB: vokan DB: alfa AC: L s hackem BC: stupne CC: l s hackem DC: beta AD: priblizne BD: => CD: odmocnina DD: libra AE: N s hackem BE: nerovna se CE: n s hackem DE: pi AF: dlouhe O BF: plusminus CF: dlouhe o DF: prumer Seznam odezev CTRL + klavesa **************************** kod znak rutina vyznam 00 DSPCH3 neprovede nic 01 A DSPCH3 neprovede nic 02 B STCSD kursor na zacatek radku 03 C SCRDW rolovani dolu 04 D SCRLF rolovani vlevo 05 E SCRUP rolovani nahoru 06 F SCRRG rolovani vpravo 07 G BEL zvonek 08 H DELTC smazani znaku 09 I TABLT tabulace 0A J LFEED dalsi radka 0B K HOHEP kursor home 0C L CLRSC smazani obrazovky ( ne z klavesnice ) 0D M CRETL kursor na zacatek radku a LF 0E N SNTCSD kursor na zacatek dalsi radky 0F O STOVRM psani 10 P STINSM insert 11 Q MMODE MCOLOR 12 R GMODE GII 13 S CMODE GI 14 T TMODE TEXT 15 U NRMSC navrat do stranky 0 16 V REVSC vymena stranky 17 W CRETL jako CTRL M 18 X CANCL smazani do konce radky 19 Y RVDSPP pohled do opacne stranky 1A Z RVWRTP kursor do opacne stranky 1B [ DSPCH3 ESC - neprovede nic 1C ; RGTAW kursor vpravo 1D : LFTAW kursor vlevo 1E @ UPRAW kursor nahoru 1F _ LWRAW kursor dolu HEAP - 17 - CTRL kody na pocitacich rady SMEP ********************************* kod znak vyznam 00 NUL prazdny znak 01 SOH zacatek zahlavi 02 STX zacatek textu 03 ETX konec textu 04 EOT konec prenosu 05 ENQ otazka 06 ACK potvrzeni 07 BEL zvonek 08 BS krok zpet 09 HT horizontalni tabulace 0A LF dalsi radka 0B VT vertikalni tabulace 0C FF nova stranka 0D CR navrat na zacatek radky 0E SO rusky registr 0F SI latinsky registr 10 DLE autoregistr 11 DC1 ridici znak 1 12 DC2 ridici znak 2 13 DC3 ridici znak 3 14 DC4 ridici znak 4 15 NAK neuspesne potvrzeni 16 SYN synchronizace 17 ETB konec bloku 18 CAN zruseni 19 EM konec media 1A SUB substituce 1B ESC autoregistr 2 1C FS oddelovac souboru 1D GS oddelovac skupin 1E RS oddelovac zaznamu 1F US oddelovac prvku 20 SP mezera Zapojeni systemoveho konektoru ****************************** 28 27 26 25 24 05 04 03 02 01 ,--+--+--+--+--+- ... -+--+--+--+--+--. | | | | | | | | | | | | B pohled shora +--+--+--+--+--+- ... -+--+--+--+--+--+ | | | | | | | | | | | | A `--+--+--+--+--+- ... -+--+--+--+--+--' A B A B A B A B 01:-12V -12V 10: D1 D6 19: A0 A15 28: RST CLK 02:+12V +12V 11: D0 D7 20: WAIT MRQ 03:+12V +12V 12: A7 A8 21:ROMDS RFSH 04: +5V +5V 13: A6 A9 22: ROM0 ROM1 05: +5V +5V 14: A5 A10 23: ROM2 EXM 06: GND GND 15: A4 A11 24: MRD MWR 07: GND GND 16: A3 A12 25: IORD IOWR 08: D3 D4 17: A2 A13 26:EXIOA EXIOB 09: D2 D5 18: A1 A14 27:EXINT EXCLK HEAP - 18 - Zapojeni konektoru tiskarny *************************** 15 13 11 9 7 5 3 1 ,---+---+---+---+---+---+---+---. | NC|GND| NC| D6| D4| D2| D0|STB| +---+---+---+---+---+---+---+---+ pohled zezadu | NC|GND|BUS| D7| D5| D3| D1|GND| `---+---+---+---+---+---+---+---' 16 14 12 10 8 6 4 2 Zapojeni joysticku ****************** konektor ,---------------------------------------------*------O 2 (+) 1 o o 6 | ,-----------------------------------------|------O 3 4 o o 5 | | ,------------------------------------|------O 4 3 o/\o 2 | | | ,--------------------------*----|------O 5 v pocitaci | | | | | | up left down right <- tlacitka smeru ATA ATB <- tlacitka attack | | | | | | <- zde jsou zapojeny diody `---*----*----*--------------------------|----|------O 6 `----*------O 1 (-) Cteni klavesnice a joysticku **************************** 7 6 5 4 3 2 1 0 bit/brana ,-------+-------+-------+-------+-------+-------+-------+-------. | ENTER | SPACE | --- | --- |P.SHIFT|L.SHIFT| FUNC | CTRL | 30 +-------+-------+-------+-------+-------+-------+-------+-------+ | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 31 +-------+-------+-------+-------+-------+-------+-------+-------+ | I | U | Y | T | R | E | W | Q | 32 +-------+-------+-------+-------+-------+-------+-------+-------+ | K | J | H | G | F | D | S | A | 33 +-------+-------+-------+-------+-------+-------+-------+-------+ | , | M | N | B | V | C | X | Z | 34 +-------+-------+-------+-------+-------+-------+-------+-------+ | \ | _ | / | . | ^ | - | 0 | 9 | 35 +-------+-------+-------+-------+-------+-------+-------+-------+ | ] | : | ; | L | [ | @ | P | O | 36 +-------+-------+-------+-------+-------+-------+-------+-------+ | P.JOY | P.JOY | P.JOY | P.JOY | L.JOY | L.JOY | L.JOY | L.JOY | 37 | |v | <-- | |^ | --> | |v | <-- | |^ | --> | `-------+-------+-------+-------+-------+-------+-------+-------' Spoustece ( fire, attack ) jsou napojeny na klavesy 1, 2, 5 a 6. Univerzalni brana 50H ********************* +----------+--------------------+-------------------------------+ | bit | vstup | vystup | | 76543210 +--------------------+-------------------------------+ | 00000001 | vstup OLD z MGF | SAVE na MGF a DSTB na PRT | | 00000010 | BUSY od PRT | STS na PRT a na civku rele | | 00000100 | COM pro PRT | --- | | 10000000 | klavesa | --- | +----------+--------------------+-------------------------------+ HEAP - 19 - Format zaznamu dat na magnetofonu ********************************* +--------------------------------------------------- . . . ---------------+ | bez signalu | uvodni pisk | blok | IBG | blok | | IBG | blok | | 4 sec | 8000 kmitu | HD | pisk | dat | | pisk | EOF | +--------------------------------------------------- . . . ---------------+ Blok HD Blok dat ======= ======== +----------------------------------+ +----------------------------------+ | IDENT | pocet | DATA | kontrolni | | IDENT | pocet | DATA | kontrolni | | | bytu | HD | soucet | | | bytu | | soucet | +----------------------------------+ +----------------------------------+ Format bloku HD ( IDT - hlavicka ) ================================== 00 +--------------------------------------+ Tvar atributu | atribut | ~~~~~~~~~~~~~ 01 +--------------------------------------+ 0 1 | jmeno zaznamu | 0 data BASIC program .CM | maximalne 9 znaku | 1 jen nahravat autostart | jinak ukonceno 00 | 2 souvisla data file .DT 0A +--------------------------------------+ 3 CPU VRAM | nahravaci adresa | 4 bez roz. atr. s roz. atr. 0C +--------------------------------------+ 5 \ | delka dat | 6 > typ dat 0E +--------------------------------------+ 7 / | startovaci adresa | 10 +--------------------------------------+ Typ dat | rozsirujici atribut | ~~~~~~~ 11 +--------------------------------------+ | | 20 BI | nepouzity prostor | 40 FC | | 60 BG 1F +--------------------------------------+ 80 BF Format bytu =========== start bit = 0, stop bit = 1, priklad pro E5h * 0 * 1 * 1 * 1 * 0 * 0 * 1 * 0 * 1 * 1 +----+ +--+ +--+ +--+ +----+ +----+ +--+ +----+ +--+ +--+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +----+ +--+ +--+ +--+ +----+ +----+ +--+ +----+ +--+ +--+ start bit stop bit IBG - pisk pred zaznamem o delce 512 nebo 3600 pulsu u nesouvislych dat IDENT - byt identifikace 'H' - HD 'D' - DATA 'F' - FILE 'E' - EOF Urceni delky IBG pisku ====================== pri CALL je hodnota v C IBG = C*256+C [ pulsu ] HEAP - 20 - Seznam chyb, ktere generuje MONITOR ROM *************************************** navesti kod typ odkud - 7C 3B nepouzita od uzivatele .OVIEW 7D 3C mimo VIEW MVACS, RDSCH .CATRG 7E 3D pretekl rozsah GTSTEP .SPRDA 7F 3E sprite mimo obrazovku MVSPA, MVSPR, GTSPRC .ACMIU 80 3F nepouzita .CHKSM 81 40 chyba kontrol. souctu BLOAD, RFIDC, LOADC .BREAK 82 41 stisk RESET BSAVE, BLOAD, RFIDC, LOADC .FINUM 83 42 rozdilne jmeno RFIDC, BLOAD .BUFFL 84 43 pretekl buffer RDSTM,FUNC,EDTLN,ACELN,PTKDT,LOADC .DADOT 85 44 nal. EOF, nejsou data BLODD, GTKDT, LOADC .ILGDM 86 45 jiny rezim displeje STICOL .TIMOT 87 46 pretekl cas ACECH, WTKDTC, EDTLN, ACELN .SPRPOS 88 47 sprit mimo rozsah MVSPA, GTSPOS, MVSPR, GTSPPC .ILGCM 89 48 chybny parametr VIEW,STCHR,RDCHR,PLAY,ETREIT,GTSTEP .SPNFD 8A 49 chyba sprite GTSPLC .EVNRD 8B 4A nedovolena operace STRTDC, STRTUC .ILGEL 8C 4B jiny blok BLOAD, LOADC - 8D 4C nepouzita Vyznam: Programy v MONITORU volaji jednotlive rutiny, ve kterych je, v pripade, ze nastane chyba, volana rutina obslouzeni chyb, ktera zajisti vypnuti motoru, povoleni preruseni, zahozeni navratove adresy ( na to pozor! ) a predani cisla chyby do akumulatoru. V rutine, kde nastala chyba se tedy jiz nepokracuje, rizeni je predano do podprogramu, ktery vyhodnoti podle stavu CY, jak dal pokracovat. HEAP - 21 - Strucny popis vybranych casti z problematiky programovani na Z80 **************************************************************** Registry ======== AF, BC, DE, HL, IX a IY jsou registrove pary AF', BC', DE' a HL' jsou zrcadlove registrove pary registrove pary AF, BC, DE a HL jsou slozeny ze dvou registru ( registrovy par AF z registru A a z registru F ... atd ) R je Refresh registr I je Interrupt registr Jednotlive bity v registru F znamenaji: S - sign: vysledek operace < 0 Z - zero: vysledek operace = 0 H - half: pro DAA pri prenosu uvnitr cisla P/V - parity/overflow pro logicke/vypocetni operace N - substract: kdyz posledni operace bylo odecitani C - carry: prenos pri vypoctu ( oznacovan take CY ) Zapis podminky ============== Obecna podminka "if NN {operator} QQ then RET" se resi nejjednoduseji: IFTHEN: LD A,NN CP QQ ;if NN ?? QQ then RET ;a nyni v konkretnim pripade nasleduje jedna z moznosti RET Z ;if NN = QQ then RET RET NZ ;if NN <> QQ then RET RET C ;if NN < QQ then RET RET NC ;if NN => QQ then RET ;kde NN a QQ jsou jednobajtova cisla ( nebo pripadne obsahy registru ). Obecne tedy plati - - a kontroluje se : IF NN = QQ THEN Z=1, CY=0 ELSE Z=0, CY=X ; >> Z << IF NN <> QQ THEN Z=0, CY=X ELSE Z=1, CY=0 ; >> NZ << IF NN < QQ THEN Z=0, CY=1 ELSE Z=X, CY=0 ; >> C << IF NN => QQ THEN Z=X, CY=0 ELSE Z=0, CY=1 ; >> NC << ( poznamka: X znamena stav v zavislosti na velikosti QQ a NN ) Podobne se testuje obsah jednoho bitu: IF BIT=1 THEN Z=0 ELSE Z=1 ; >> NZ << a opacne: IF BIT=0 THEN Z=1 ELSE Z=0 ; >> Z << napriklad: TSTBIT: LD HL,FLAG BIT 2,(HL) ;Vrat se, jestlize je druhy bit RET NZ ;promenne FLAG nastaven na 1 ... HEAP - 22 - Relacni operace =============== Relacni operace se zapisuji ( napriklad ) nasledovne ( vysledek je ulozen v registru A ): LD A,#05 ;Vysledky: #05 - 0000 0101 ; #06 - 0000 0110 ; --------------- AND A,#06 ; #05 AND #06 = #04 - 0000 0100 OR A,#06 ; #05 OR #06 = #07 - 0000 0111 XOR A,#06 ; #05 XOR #06 = #03 - 0000 0011 NEG ; = #FB - 1111 1011 Vsechny relacni operace nastavuji CY=0. Chceme-li zjistit, je-li v registru A nula, pouzijeme instrukci OR A. Zero pak vraci vysledek ( je/neni ). Aritmeticke operace =================== Naprikld: ADC A,NN ; A:=A+NN+CY ADD A,NN ; A:=A+NN SBC A,NN ; A:=A-NN-CY SUB A,NN ; A:=A-NN DEC A ; A:=A-1 INC A ; A:=A+1 DAA ; Prevod HEX --> BCD Rotace jednobajtove hodnoty =========================== Rotace znamena vlastne pouhe presunuti jednotlivych bitu v jednom bajtu danym smerem ( vlevo, vpravo ), pricemz bit, ktery je z bajtu "vysunut ven" je vzdy prekopirovan do CY a pripadne jeste do bitu na opacnem konci bajtu. Instrukce RL ( rotate left ) a RLC ( rotate left carry ) se provadeji nasledovne: 7 6 5 4 3 2 1 0 CY 7 6 5 4 3 2 1 0 CY .-.-.-.-.-.-.-.-. .-. .-.-.-.-.-.-.-.-. .-. .-- |1|0|0|1|0|1|1|0| <-- |1| <--. .-- |0|0|0|1|0|1|1|1| <--. |1| <--. | `-`-`-`-`-`-`-`-' `-' | | `-`-`-`-`-`-`-`-' | `-' | `---------------->---------------' `---------------->-------+--------' RL - pred presunem "10010110 1" a po presunu "00101101 1". RLC - pred presunem "00010111 1" a po presunu "00101110 0". ; 76543210 CY Presun bitu o jeden - ; ABCDEFGH X RL A ; BCDEFGHX A - vlevo pres CY RLC A ; BCDEFGHA A - vlevo, sedmy do CY RR A ; XABCDEFG H - vpravo pres CY RRC A ; HABCDEFG H - vpravo, nulty do CY SLA A ; BCDEFGH0 A - vlevo, do nulteho 0, sedmy do CY SLIA A ; BCDEFGH1 A - vlevo, do nulteho 1, sedmy do CY SRA A ; AABCDEFG H - vpravo, sedmy zachovan SRL A ; 0ABCDEFG H - vpravo, do sedmeho 0, nulty do CY HEAP - 23 - Programovani obvodu TMS9929A - videoprocesor ******************************************** VDP data port ( I/O port 10H ) ============================== Brana pro zapis nebo cteni jednoho bajtu do nebo z VRAM na nebo z predem nas- tavene adresy. Po cteni nebo zapisu se adresa automaticky o jednu zvetsi. VDP command port ( I/O port 11H ) ================================= Bity po precteni: 7 - 1 = paprsek dobehl na konec obrazovky 6 - 1 = nastal stret dvou a vice spritu 5 - 1 = na jedne TV radce se nachazi pet a vice spritu 4 az 0 - cislo spritu, ktery je paty na TV radce Bity pro zapis: Je-li nastaven bit 7, pak bity 2 az 0 obsahuji cislo registru VDP, do ktereho ma byt proveden zapis. Je-li shozen bit 7, pak bity 5 az 0 obsahuji adresu VRAM, na kterou se ma VDP nastavit, pricemz bit 6 urcuje, ma-li se VDP nasta- vit pro cteni nebo zapis - 0 = cteni, 1 = zapis. Pozor! Nejdrive se vysilaji data nebo dolni polovina adresy ( bity 7 az 0 nemaji zadny specialni vyznam ) a teprve pote se vysila cislo registru nebo horni polovina adresy ( bity 7 a 6 maji vyse uvedeny vyznam ). Vyznam registru VDP: 7 6 5 4 3 2 1 0 bit/registr ,-------+-------+-------+-------+-------+-------+-------+-------. | 0 | 0 | 0 | 0 | 0 | 0 | M3 | EXTVI | R0 +-------+-------+-------+-------+-------+-------+-------+-------+ | VRAM | BLANK | INTEN | M1 | M2 | 0 | SIZE | MAG | R1 +-------+-------+-------+-------+-------+-------+-------+-------+ | 0 | 0 | 0 | 0 | adresa obrazovky | R2 +-------+-------+-------+-------+-------+-------+-------+-------+ | adresa tabulky barev | R3 +-------+-------+-------+-------+-------+-------+-------+-------+ | 0 | 0 | 0 | 0 | 0 | adresa predloh znaku | R4 +-------+-------+-------+-------+-------+-------+-------+-------+ | 0 | adresa tabulky spritu | R5 +-------+-------+-------+-------+-------+-------+-------+-------+ | 0 | 0 | 0 | 0 | 0 | adresa predloh spritu | R6 +-------+-------+-------+-------+-------+-------+-------+-------+ | barva popredi | barva pozadi nebo ramecku | R7 `-------+-------+-------+-------+-------+-------+-------+-------' Vyznam bitu: EXTVI - 0 = zakazani externiho videosignalu VRAM - vyber pameti pouzitych pro VRAM: 0 = 4027 ; 1 = 4108 / 4116 BLANK - 0 = nezobrazuji se tvary, pouze barva pozadi INTEN - 0 = zakaz generovani prerusovaciho signalu SIZE - 0 = 8*8, 1 = 16*16 MAG - 0 = nezvetseno, 1 = dvakrat zvetseno M1 M2 M3 - nastaveni rezimu 0 0 0 GI 0 0 1 GII 0 1 0 MCOL 1 0 0 TEXT High Low registr R2=adresa/400H - 00xx xx00 0000 0000 -> 0000 0000 0000 xxxx R3=adresa/40H - 00xx xxxx xx00 0000 -> 0000 0000 xxxx xxxx R4=adresa/800H - 00xx x000 0000 0000 -> 0000 0000 0000 0xxx R5=adresa/80H - 00xx xxx0 0000 0000 -> 0000 0000 000x xxxx R6=adresa/800H - 00xx x000 0000 0000 -> 0000 0000 0000 0xxx HEAP - 24 - Programovani obvodu SN76489AN - zvukovy generator ************************************************* SGC data port ( I/O port 20H ) ============================== SGC obsahuje tri zvukove generatory. Kanaly 0 az 2 jsou tonove, kanal je 3 su- movy. Bity pro zapis - prvni byte: Je-li nastaven bit 7, pak bity 6 a 5 vzdy urcuji cislo kanalu SGC, do ktereho je provaden zapis. Bit 4 urcuje, jestli se nastavuje frekvence =0, nebo zesla- beni =1. Bity 3 az 0 pak obsahuji bud velikost zeslabeni nebo v pripade zapisu do kanalu 0 az 2 obsahuji dolni polovinu frekvence. U kanalu 3 urcuje bit 2 periodicky sum =0 nebo bily sum =1 a bity 1 a 0 urcuji jeho frekvenci. - druhy byte: Je-li shozen bit 7, pak bity 5 az 0 obsahuji horni polovinu frekvence. Programovani SGC: 1. byte 2.byte 1000nnnn 0Xnnnnnn - nastaveni kanalu 0 na frekvenci n 1010nnnn 0Xnnnnnn - nastaveni kanalu 1 na frekvenci n 1100nnnn 0Xnnnnnn - nastaveni kanalu 2 na frekvenci n 1110Xp00 - nastaveni sumoveho kanalu na frekvenci F0/512 1110Xp01 - nastaveni sumoveho kanalu na frekvenci F0/1024 1110Xp10 - nastaveni sumoveho kanalu na frekvenci F0/2048 1110Xp11 - nastaveni sumoveho kanalu stejnou frekvenci, jakou ma kanal 2 1kk1zzzz - nastaveni zeslabeni kanalu k. Velikost zeslabeni: 0000 - 0 dB 0001 - 2 dB 0010 - 4 dB 0100 - 7 dB 1000 - 12.5 dB 1111 - umlceni kanalu HEAP - 25 - Programovani obvodu Z80 CTC - citac *********************************** ridici slovo: .----+----+----+----+----+----+----+----. | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | `----+----+----+----+----+----+----+----' D0: =0 V byte select ( channel 0 ) only =1 P byte select Format V bytu: .----+----+----+----+----+----+----+----. | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | `----+----+----+----+----+----+----+----' \_______ _______/ V interrupt vector - dolni byte vektoru preruseni D1,D2: channel number, 0 - 0 0 - cislo kanalu 1 - 0 1 2 - 1 0 3 - 1 1 Format P bytu: .----+----+----+----+----+----+----+----. | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | `----+----+----+----+----+----+----+----' D7: =0 interrupt disable - zakaz prerusovani CPU =1 interrupt enable - povoleno prerusovani CPU D6: =0 counter - CTC kanal funguje jako citac =1 timer - CTC kanal funguje jako casovac D5: =0 sytstem clock division by 256 - hodiny delene 256 ( timer mode ) =0 sytstem clock division by 16 - hodiny delene 16 D4: =0 clock - kanal pobezi podle hodin =1 trigger - kanal bude spousten D3: =0 external trigger - kanal bude spousten zvenci ( timer mode ) =1 auto trigger - kanal bude spousten automaticky D2: =0 no will TC - nenasleduje TC byte =1 load TC - nasleduje TC byte D1: =0 stop - zastaveni kanalu =1 cont - spusteni kanalu - pokracovani Format TC bytu: .----+----+----+----+----+----+----+----. | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | `----+----+----+----+----+----+----+----' D7-D0: data 00 az FFh pro timer counter HEAP - 26 - Programovani obvodu I8255 - paralelni port ****************************************** Obvod I8255 je obsazen v modulu PI-5 PIO. OUT &70,data nebo INP(&70) - zapis/cteni - brana A OUT &71,data nebo INP(&71) - zapis/cteni - brana B OUT &72,data nebo INP(&72) - zapis/cteni - brana C OUT &73,CWR - ridici slovo CWR: ==== volba druhu provozu ------------------- bit 0 - C3-C0, 1=IN, 0=OUT 1 - B7-B0, 1=IN, 0=OUT 2 - druh provozu pro C3-C0 a B7-B0, 0=0, 1=1 3 - C7-C4, 1=IN, 0=OUT 4 - A7-A0, 1=IN, 0=OUT 5,6 - druh provozu pro C7-C4 a A7-A0, 00=0, 01=1, 1X=2 7 - 1 ( probiha volba provozu ) setovani/resetovani bitu ------------------------ bit 0 - 0=bit resetovat, 1=bit nasetovat 0 1 2 3 4 5 6 7 - cislo bitu se kterym se pracuje 1 - 0 1 0 1 0 1 0 1 - B0 2 - 1 1 0 0 1 1 0 0 - B1 3 - 0 0 0 0 1 1 1 1 - B2 4,5,6 - bez vyznamu 7 - 0 ( probiha setovani/resetovani bitu ) druh provozu 0 -------------- +---------+---+---+---+---+ | 4 3 1 0 | A | Ch| B | Cl| +---------+---+---+---+---+ | 0 0 0 0 | O | O | O | O | | 0 0 0 1 | O | O | O | I | | 0 0 1 0 | O | O | I | O | | 0 0 1 1 | O | O | I | I | | 0 1 0 0 | O | I | O | O | | 0 1 0 1 | O | I | O | I | | 0 1 1 0 | O | I | I | O | | 0 1 1 1 | O | I | I | I | | 1 0 0 0 | I | O | O | O | | 1 0 0 1 | I | O | O | I | | 1 0 1 0 | I | O | I | O | | 1 0 1 1 | I | O | I | I | | 1 1 0 0 | I | I | O | O | | 1 1 0 1 | I | I | O | I | | 1 1 1 0 | I | I | I | O | | 1 1 1 1 | I | I | I | I | +---------+---+---+---+---+ HEAP - 27 - Definovani novych zarizeni v Basiku-F ************************************* Zacatek tabulky zarizeni v BF: 609D DB IDENT DW ADRDAL DS 3 DW OPEN,CLOSE,PRINT,PUT,INPUT,GET,RECORD,FIND . . . ADRDAL DB IDENT . . . IDENT - Bitove: 0 ... 0 = platne zarizeni 1 = neplatne zarizeni 1 ... 0 = neni "FX:"; 1 = je "FX:" 2 ... 0 = 1 = 3 ... 0 = CLOSE pred novym OPEN; 1 = mozno opakovat OPEN 4 ... 0 = neni "FX:"; 1 = driver "FX:" ???? 5 ... 0 = 1 = 6 ... 0 = neni "FX:"; 1 = vysle se volba kanalu 7 ... 0 = zarizeni pristune; 1 = zarizeni se ignoruje posledni zarizeni vede do RAM. 73CE DB IDENT / 80h - ignorovani / DW ADRDAL / 0000h - neni / konec tabulky, zde se zadava adresa tabulky noveho zarizeni, tabulka na 73CE je jen odrazem do RAM OPEN "DEV:NAME" [ FOR { INPUT / OUTPUT / APPEND } ] AS #CHANNEL ( #0 je otevren automaticky pro "CNS:", proto pred jeho pouzitim je treba provest CLOSE #0 ) 7369 ;tabulka 16-ti kanalu, ktere mohou byt soucasne OPEN DB typ zarizeni ( 0FFh = kanal uzavren, t.j. volny ) DB cislo driveru DB cislo FX kanalu DW adresa definice zarizeni DB poloha tisku Tyto bajty naplni spravne zavolani prikazu OPEN. Pokud chceme nekterou funkci v definici zarizeni ignorovat, uvedeme adresu 5EE5h . HEAP - 28 - OPEN: ----- vstup: A,D,BC A D IX - bazova adresa kanalu (IX+2) je k dispozici ----- 09 53 neni FOR BC - delka RECORDu ( implicitne 256 ) 04 22 FOR INPUT 0A 31 FOR OUTPUT 0A 37 FOR APPEND Dalsi rutiny nekontroluji, jestli smeji byt vzhledem k FOR pouzity. PRINT, PUT, INPUT, GET: ----------------------- vstup: HL,B,E,SYSFMT,DIFLGA,IX HL - adresa odkud pripadne kam B - maximalni delka pripadne pocet E - (IX+2) z tabulky kanalu SYSFMT bit: 0 - VRAM/RAM, 1 - VERIFY/OLD DIFLGA bit: 1 - zobraz/vykonej CTRL kody vystup: HL,B,A HL - adresa za poslednim zpracovanym kodem B - pocet nezpracovanych znaku A - posledni zpracovany kod U PRINT a INPUT: zakoncit na kod 00 ( nezaznamenava se ) nebo ma 0Dh ( jeste zaznamenat ). RECORD: ------- vstup: BC,E,IX BC - cislo za RECORDem E - (IX+2) z tabulky kanalu ma vyznam jen pro "FX:" pro formatovani diskety CLOSE: ------ vstup: E,IX E - (IX+2) z tabulky kanalu zapise 0FFh do tabulky kanalu FIND: ----- reaguje na oddelovace v PRINT ( tabulace a pod. ). Neni pouzito z vnejsku, zjisti tiskovou pozici Ve vsech rutinach je vystupnim parametrem CY, signalizuje chybu, kod chyby ocekava Basic-F v registru A a uzavira s ni VSECHNY kanaly. SAVE = OPEN + PUT + CLOSE VSAVE = SET 0,(SYSFMT) + SAVE OLD = OPEN + GET + CLOSE HEAP - 29 - Cisla a adresy prikazu a funkci jazyka Basic-F a Basic-D ******************************************************** jmeno kod BD BF navesti err-2 00 79B5 2762 .ERRS REM 01 49BF 49BF .REMN ! or ' 02 49BF 49BF .REM! err-2 03 79B5 2762 .ERRS DATA 04 49BF 49BF .DATA $ 05 4353 4353 .LABL err-2 06 79B5 2762 .ERRS err-2 07 79B5 2762 .ERRS err-2 08 79B5 2762 .ERRS err-2 09 79B5 2762 .ERRS AUTO 0A 435A 435A .AUTO CLEAR 0B 438C 438C .CLEA CLIST 0C 7BD2 441E .CLST CONT 0D 43E2 43E2 .CONT DEL 0E 4401 4401 .DEL KILL 0F 5D89 5D89 .KILL LIST 10 7BCF 441B .LIST NEW 11 44CA 44CA .NEW OLD 12 7B9A 4726 .OLD RENUM 13 4506 4506 .RENM RUN 14 7B2C 45A5 .RUN SAVE 15 4645 4645 .SAVE STEP 16 45FB 45FB .STEP TAPE 17 4614 4614 .TAPE TRACE 18 45FE 45FE .TRCE TYPE 19 4626 4626 .TYPE VERIFY 1A 7B86 4717 .VRFY VSAVE 1B 7B37 46BA .VSAV CHAIN 1C 473D 473D .CAIN CLOSE 1D 5079 5079 .CLSE CONSOLE 1E 5025 5025 .CONS DIM 1F 4938 4938 .DIM END 20 4A09 4A09 .END FOR 21 4A22 4A22 .FOR GET 22 5152 5152 .GET GOSUB 23 4B9C 4B9C .GSUB GOTO 24 4BA9 4BA9 .GOTO IF 25 4BC8 4BC8 .IF INPUT 26 4DA6 4DA6 .INPT LEN 27 5071 5071 .LEN LET 28 4C19 4C19 .LET (LET) 29 4C19 4C19 .LETN NEXT 2A 4B05 4B05 .NEXT ON 2B 7CF2 4C6E .ON OPEN 2C 5096 5096 .OPEN PRINT 2D 4CE2 4CE2 .PRNT PUT 2E 5120 5120 .PUT RANDOMIZE 2F 3F4B 3F4B .RAND READ 30 4E0B 4E0B .READ RECORD 31 517B 517B .RCRD REPEAT 32 4F82 4F82 .RPAT RESTORE 33 4F70 4F70 .RSTR RETURN 34 4F01 4F01 .RSME RETURN 35 4F13 4F13 .RETN STOP 36 4FB0 4FB0 .STOP SWAP 37 4FD9 4FD9 .SWAP THETA 38 5862 5862 .THTA HEAP - 30 - UNTIL 39 4F8F 4F8F .UNTL BCOL 3A 5205 5205 .BCOL CLS 3B 51A1 51A1 .CLS COLOR 3C 520E 520E .CLOR DRAW 3D 5319 5319 .DRAW FCOL 3E 51F9 51F9 .FCOL GINIT 3F 804D 6287 .GNIT GMODE 40 52EC 52EC .GMDE GMOVE 41 530B 530B .GMVE LOC 42 5246 5246 .LOC LOCATE 43 51CA 51CA .LCTE MAG 44 51EA 51EA .MAG PAINT 45 5342 5342 .PAIN PLOT 46 5311 5311 .PLOT SCOD 47 51D0 51D0 .SCOD SCOL 48 51D5 51D5 .SCOL STCHR 49 5288 5288 .STCH VIEW 4A 51AB 51AB .VIEW CALL 4B 56B8 56B8 .CALL EVENT 4C 7D20 56D1 .EVNT EXE 4D 5804 5804 .EXE FX 4E 6D14 6D14 .FX GCOPY 4F 536B 536B .GCPY OUT 50 5796 5796 .OUT POKE 51 57A4 57A4 .POKE POKEW 52 5904 5904 .PKEW SG 53 5708 5708 .SG SLEEP 54 5750 5750 .SLEP VPOKE 55 57B2 57B2 .VPKE WAIT 56 5785 5785 .WAIT NOLIST 57 44ED 44ED .NLST DEF 58 7D5A .DEF WHILE 59 7E1F .WHLE WEND 5A 7E61 .WEND PUSH 5B 7D99 .PUSH POP 5C 7DDD .POP BAR 5D 7FFC .BAR BOX 5E 8001 .BOX CIRCLE 5F 800C .CRCL JOINT 60 7F69 .JONT MOVE 61 7F93 .MOVE ERASE 62 7F53 .ERAS ESCRN 63 7EB4 .ESCR MPRINT 64 7F18 .MPRT PLAY 65 80BD .PLAY PMODE 66 80EF .PMDE TIME$ 67 8162 .TIM$ ALARM$ 68 8159 .ALM$ ALARM 69 7D35 .ALRM COINC 6A 7D03 .CONC ERROR 6B 8152 .ERRO KEY 6C 7D0A .KEY LINE 6D 7E72 .LINE OUTW 6E 819C .OUTW FILES 6F 81AE .FILS err-2 70 79B5 2762 .ERRS err-2 00 79B5 2762 .ERRS ABS 01 537F 537F .ABS ATN 02 5379 5379 .ATN CDBL 03 53FA 53FA .CDBL CINT 04 5400 5400 .CINT HEAP - 31 - COS 05 3C0E 3C0E .COS EXP 06 3A7B 3A7B .EXP FIX 07 3849 3849 .FIX INT 08 3853 3853 .INT LN 09 38C0 38C0 .LN LOG 0A 379D 379D .LOG PI 0B 5389 5389 .PI RND 0C 538F 538F .RND SGN 0D 53C0 53C0 .SGN SIN 0E 3C15 3C15 .SIN SQR 0F 39DE 39DE .SQR TAN 10 3D17 3D17 .TAN XCHG 11 53DD 53DD .XCHG ASCII 12 5425 5425 .ASCI CHR$ 13 5505 5505 .CHR$ HEX$ 14 5513 5513 .HEX$ INSTR 15 5434 5434 .INST LEFT$ 16 5494 5494 .LET$ LEN 17 54FD 54FD .LEN MID$ 18 54B6 54B6 .MID$ NUM$ 19 83A2 5556 .NUM$ RDST$ 1A 567E 567E .RDS$ RIGHT$ 1B 54A2 54A2 .RGH$ RPT$ 1C 5524 5524 .RPT$ VAL 1D 565B 565B .VAL CALC 1E 57C3 57C3 .CALC ERR 1F 584E 584E .ERR ERRL 20 5855 5855 .ERRL ERRL$ 21 585B 585B .ERR$ FRE 22 5869 5869 .FRE INKEY$ 23 58BA 58BA .INK$ INP 24 58E9 58E9 .INP PEEK 25 58F2 58F2 .PEEK PEEKW 26 5919 5919 .PEKW REG 27 53E5 53E5 .REG TIME 28 58CD 58CD .TIME VARPTR 29 58D3 58D3 .VPTR VPEEK 2A 58F9 58F9 .VPEK POS 2B 8403 .POS RCRT 2C 8423 .RCRT MRCRT$ 2D 872A .MRC$ RDCHR$ 2E 86F8 .RDC$ COLOR 2F 83DA .COLR DIST 30 85F4 .DIST DRCT 31 85D8 .DRCT POINT 32 8431 .PONT COINC 33 8449 .CINC LINK 34 8694 .LINK POST 35 86C9 .POST SPRITE 36 866B .SPRT STATUS 37 86BB .STTS INKEY 38 873F .INKE PLAY 39 8754 .PLAY TIME$ 3A 87E4 .TME$ ASW 3B 87B6 .ASW ICOS 3C 8792 .ICOS INPW 3D 8814 .INPW ISIN 3E 878D .ISIN JOY 3F 87CB .JOY HEAP - 32 - Oddelovace a ostatni urcujici slova jazyka Basic-F a Basic-D ************************************************************ kod slovo 80 PROMENNA% B0 OR E0 ALARM 81 B1 XOR E1 KEY 82 PROMENNA# B2 E2 83 B3 E3 84 PROMENNA$ B4 E4 85 B5 E5 86 B6 E6 87 B7 E7 88 KONSTANTA% B8 E8 89 B9 E9 8A KONSTANTA# BA EA 8B BB EB 8C KONSTANTA$ BC EC 8D BD ( ED 8E BE ) EE 8F KONSTANTA& BF NOT EF 90 FN.% C0 cislo radku F0 91 C1 adresa radku F1 92 FN.# C2 navesti F2 93 C3 F3 94 FN.$ C4 TAB F4 95 C5 CURSOR F5 96 C6 F6 97 C7 F7 98 C8 ON F8 99 C9 OFF F9 9A CA TO FA 9B CB IN FB 9C CC # FC ELSE 9D CD @ FD THEN 9E CE , FE : 9F CF ; FF A0 D0 STEP A1 ^ D1 RECORD A2 * D2 MODE A3 / D3 DBL A4 D4 STR A5 MOD D5 GOSUB A6 + D6 GOTO A7 - D7 RESTORE A8 = D8 ERROR A9 D9 EVENT AA < DA FOR AB <= DB AS AC > DC INPUT AD >= DD OUTPUT AE <> DE APPEND AF AND DF ALL HEAP - 33 - Ulozeni basickych promennych **************************** a) ciselne promenne - jednoducha promenna: ATR + JMENO + HODNOTA - promenna typu pole: ATR + JMENO + DELKA + DIM + SEZNAMDIM + HODNOTA b) retezcove promenne - jednoducha promenna: ATR + JMENO + LENM + TEXT - promenna typu pole: ATR + JMENO + DELKA + DIM + SEZNAMDIM + LENM + TEXT vysvetlivky: ============ ATR - 1 byte, vyznam: ---------------------------------------------+ bit | 0 | 1 | 2 | 3 | 4 5 6 7 | ----+-----+-----+-----+-----+----------------+ 0 | INT | - | - | - | bez vyznamu | 1 | - | DBL | STR | pole| | ----+-----+-----+-----+-----+----------------+ JMENO - 1 byte delka + ASCII HODNOTA - 2 nebo 8 bytu podle typu na polozku DELKA - 2 byte - offset na dalsi promennou DIM - 1 byte - pocet dimenzi SEZNAMDIM - max. rozmery dimenzi TEXT - delka textu ( 1 byte ) + vlastni text ( ASCII ) LENM - 1 byte - offset na dalsi promennou HEAP - 34 - Cisla a adresy prikazu a funkci jazyka Basic-G a Basic-I ******************************************************** jmeno kod je v BI? jmeno kod je v BI? jmeno kod je v BI? MID$ 41 + MOD 83 + POKE CA + LEFT$ 42 + + 84 + VPOKE CB + RIGHT$ 43 + - 85 + OUT CC + RPT$ 44 + < 86 + CLS CD + POS 45 + = 87 + MPRINT CE LEN 46 + > 88 + PRINT CF + VAL 47 + AND 89 + MAG D0 + ASCII 48 + XOR 8A + CLEAR D1 + CHR$ 49 + OR 8B + FCOL D2 NUM$ 4A + ( 8C + BCOL D3 HEX$ 4B + ) 8D + ERASE D4 LINK 4C NOT 8E + POKEW D5 SGN 4D + OUTW D6 ABS 4E + TRACE A0 + LOCATE D7 RND 4F + AUTO A1 + VSAVE D8 INP 50 + TAPE A2 + CIRCLE D9 PEEK 51 + CONT A3 + WAIT DA VPEEK 52 + DEL A4 + SLEEP DB PEEKW 53 LIST A5 + JOINT DC INPW 54 RENUM A6 PMODE DD VARPTR 55 NEW A7 + GMODE DE INKEY$ 56 + OLD A8 + PLOT DF COLOR 57 CHAIN A9 + MOVE E0 PLAY 58 RUN AA + GMOVE E1 TIME 59 + SAVE AB + GINIT E2 FRE 5A + VERIFY AC + PAINT E3 ERR 5B + PUSH AD GCOPY E4 ERRL 5C + POP AE DRAW E5 ERRL$ 5D + REM AF + BOX E6 JOY 5E END B0 + CONSOLE E7 RCRT 5F FOR B1 + BAR E8 TIME$ 60 NEXT B2 + SG E9 RDCHR$ 61 REPEAT B3 KEY EA DRCT 62 UNTIL B4 OFF EB DIST 63 RESUME B5 SKIP EC RETL 64 IF B6 + LISTC ED LET B7 + ELIST EE ASW 67 GOTO B8 + ELISTC EF INKEY 68 GOSUB B9 + ON F0 RETURN BA + ERROR F1 POST 6A READ BB + @ F2 POINT 6B RESTORE BC + ALARM F3 STATUS 6C DATA BD + ! F4 COINC 6D CALL BE + ESCRN F5 SPRITE 6E STOP BF + STEP F6 + SIN 6F DIM C0 + IN F7 + COS 70 INPUT C1 + THEN F8 + XCHG 71 VIEW C2 + ELSE F9 + MRCRT$ 72 EVENT C3 TO FA + INSTR 73 ALARM$ C4 # FB + CURSOR 7F + RANDOMIZE C5 + , FC + TAB 7E + LOC C6 + ; FD + ^ 80 + STCHR C7 + : FE + * 81 + SCOL C8 + CR FF + / 82 + SCOD C9 + HEAP - 35 - Options For M5 ************** DR-5: Data Recorder ( cassette tape recorder ) for M5 PT-5: 80 Character width-normal character size 160, character width-small cha- racter size.It is a silent printer with the speed of 60 characters per second EB-5: Extension memory box with 3 slots EC-5: Extension memory card with 2 slots EM-5: DRAM 32 kB. Additional memory FD-5: 3" micro floppy disc drive. 320 kB ( both sides ).Work with system disc and data disc PI-5: Parallel interface ( interface between EB5 + FD5 or others ) SI-5: Serial interface ( interface between EB5 and other computers ) BASIC-I CARTRIDGE: for beginners BASIC-G CARTRIDGE: High graphic capability with 16 different colours and high synthesizer music capability, with 6 octaves and intermediary tones. 3 tone chord available BASIC-F CARTRIDGE: With high arithmetic and graphics capability FALC CARTRIDGE: Spreadsheet programme just 10 commands to control GAME CARTRIDGE: 12 games to choose. GRC1 Tank Battalion GRC2 Step Up GRC3 Guttang Cottong GRC4 Heavy Boxing GRC5 Super Cobra GRC6 Real Tennis GRC7 Poo Yan GRC8 Word Maze GRC9 Wonder Hole GRC10 Up Up Balloon GRC/B1 Fruit Search GRC/B2 Dragon Attack LANGUAGE EDUCATION PROGRAMME: ( Cassette tape ) Designed for 8-10 year old students. Domestic and foreign languages available P. EDITOR: ( Cassette tape ) Cassette tape for drawings BASIC G DEMO: ( Cassette tape ) Demonstration programme for BASIC G GAMES CASSETTES: 8 cassette tapes to choose ( each cassette tape has 2 games ) GCT1 Snaky / Barrier Attack GCT2 Jogging / Side Winder GCT3 Solitaire / Tower Of Hanoi GCT4 Three Circles / Number Search GCT5 Black Jack / Slot Machine GCT6 Mini Star Trek / Last Day Of The Earth GCT7 Biorhythm Diagnosis / Music Tone GCT8 Cowboy / Barricade GCT11 Baseball / Zac Banic TV Adjust TV-5: Colour T.V. ( for G PAL ) JP-5: Joy pads for games. Note: Game may also be played using M5 keyboard only CA-5: Travel case MANUALS: ( in English ) M5 Users Guide, M5 Basic I Manual, M5 Basic G Manual, M5 Basic F Manual M5 Falc Manual, M5 Personal Manual, M5 Creative Manual, M5 Monitor Handling HEAP - 36 - H E A P Podle ruznych materialu a na zaklade vlastnich zku- senosti sestavil a napsal LZR Soft. V Kladne 1991. Vydani prvni,pocet vytisku dle potreby. Vytisteno na tiskarne LA120 firmy DEC. 02-SEP-91