XXXXX XXX X XXXX XXX X X XXX XX X X X X X X X XX X X X XXX XXXXX X X X X X X X XXXX X X X X X X X X X XX X X X X X X XXXXX XXXX XXX X X XXX X XXX **************************************************** *** PROHLÍŽENÍ OBSAHU PAMĚTI V RŮZNÝCH FORMÁTECH *** **************************************************** A - Zobrazení obsahu běžné paměti jako posloupnost ASCII znaků. Nezobrazitelné znaky jsou nahrazeny symbolem kostička. příklad: A 0000 D - Zobrazení obsahu běžné paměti jako posloupnost instrukcí procesoru i8080A, doplněných operačním kódem. příklad: D 0000 M - Zobrazení obsahu běžné paměti jako posloupnost byte, dopl- něných ASCII interpretací a kontrolním součtem. příklad: M 0000 N - Jako příkaz M, ale s tím rozdílem, že vybírá pouze adresy, které spadají do zóny tzv. zápisníku ve videoram (posledních 16kB běžné paměti). Jakkoliv lze prohlížet celou paměť, tento příkaz má smysl pouze v rozmezí adres C000h až FFFFh. příklad: N C030 @ - Zobrazení obsahu běžné paměti v binárním tvaru, doplněného hodnotou byte. příklad: @ 0000 SCAN - Cyklické prohlížení osmice vybraných byte včetně ASCII interpretace a kontrolního součtu. Tento příkaz má smysl pouze při využití přerušení. Příkaz lze ukončit stiskem tlačítka STOP. příklad: SCAN 0007 % - Zobrazení obsahu ROMPACKu jako posloupnost byte, doplněných ASCII interpretací a kontrolním součtem. příklad: % 0000 G - Zobrazení grafické interpretace obsahu paměti v horizontálním nebo vertikálním členění s rozkladem na zadaný počet sloupco- vých bajtů. Pokud není počet rozkladových sloupců uveden, je platná poslední hodnota (standardní hodnota po startu je 2). příklad: G 0000 (horizontální bitmapa od adresy 0000) G H 0000 (horizontální bitmapa od adresy 0000) G V 1234 (vertikální bitmapa od adresy 1234) G V 1234 03 (navíc změna počtu rozkladových sloupců) G H 1234 05 (horiz. bitmapa s rozkl. na 5 sloupců) ******************************************* *** ZÁPIS DO PAMĚTI V RŮZNÝCH FORMÁTECH *** ******************************************* . - (znak tečka) Zápis dat do paměti ve formě instrukcí procesoru i8080A. Po zápisu instrukce je do dialogového řádku připrave- na nová adresa, následující za právě zapsanou instrukcí. příklad: .0000 NOP .0001 MVI A,41 .0003 JMP 8500 > - Zápis dat do paměti ve formě byte nebo znaků. Plynule lze přecházet mezi oběma formami (tj. zápis jako byte nebo jako znaky). Znaky je nutno uzavřít do uvozovek. příklad: >0000 "HELLO WORLD!" 0D 00 ********************************************* *** PRÁCE S VSTUPNĚ/VÝSTUPNÍMI ZAŘÍZENÍMI *** ********************************************* IN - Přečtení hodnoty ze zadaného portu a její zobrazení. příklad: IN F5 OUT - Zápis jedné nebo více hodnot na zadaný port. Vícenásobný zápis se používá u vstupně/výstupních obvodů, kde se na jednu adresu ukládá sekvence hodnot (např. i8253). příklad: OUT F4 00 (zápis hodnoty 00 na port F4) out F4 10 20 30 (postupný zápis hodnot 10,20 a 30) PORT - Cyklické prohlížení obsahu vstupního portu. Zobrazuje se hodnota v hexadecimální podobě a bitová interpretace. Příkaz lze ukončit stiskem tlačítka STOP. příklad: PORT F5 WAIT - Čekání na hodnotu vstupního portu. Tam, kde by vizuální sledování hodnoty vstupního portu příkazem PORT nebylo dostatečně rychlé, lze přímo počkat (přijde-li) na konkrétní hodnotu. Zadává se číslo portu, maska a požadovaná hodnota po odmaskování přečteného obsahu. Pokud přečtená hodnota vyhovuje podmínce, příkaz se ukončí. Ukončit příkaz je možné též stiskem tlačítka STOP. příklad: WAIT F5 20 00 (čekání na stisk klávesy SHIFT) **************************** *** PRÁCE S BLOKY PAMĚTI *** **************************** BLOCK - U všech byte v rozsahu zadaných adres se provede zvolená operace. Je možno zvolit z funkcí + (přičtení konstanty), - (odečtení konstanty), A (logická funkce AND), O (OR), X (XOR), L (cyklická rotace vlevo), R (cyklická rotace vpravo) a M (mirror - otočení pořadí bitů v byte). Příkazy +, -, A, O a X vyžadují uvedení dalšího byte, kterým je konstanta pro provedení funkce. Není-li konstanta uvedena, je hodnota konstanty nastavena na hodnotu nula. příklad: BLOCK 0000 0FFF + 01 (přičtení +1 k vybraným byte) BLOCK C000 C02F X 3F (XOR 3F u vybraných byte) BLOCK C000 C02F L (rotace vybraných byte) CMP - Porovnání dvou paměťových oblastí na shodu. Zadává se začá- tek a konec 1. bloku, začátek 2. bloku. Pomocí přepínače L lze vypnout průběžný výpis rozdílných byte, v tom případě se pouze na konci vypíše počet rozdílných paměťových lokací. Během průběžného výpisu rozdílných adres lze príkaz předčas- ně ukončit stiskem tlačítka STOP. příklad: CMP 0000 00FF 1000 (výpis rozdílných byte a počet) CMP L 0000 00FF 1000 (vypíše pouze počet odchylek) COPY - Kopírování bloku. Zadává se začátek a konec 1. bloku a začá- tek 2. bloku. Pokud se bloky překrývají, upraví se automa- ticky směr kopírování, aby nedošlo ke ztrátě dat. příklad: COPY 0000 00FF 1000 (256 byte od 0000h > 1000h) FILL - Vyplnění bloku paměti posloupností byte. Zadává se začátek a konec bloku, následovaný libovolným počtem byte. Je-li vyplňovaný blok delší než seznam byte, bude se posloupnost byte ukládat do bloku paměti opakovaně znovu a znovu. příklad: FILL 0000 0FFF 4C 49 42 4F 52 20 (vyplnění bloku paměti slovem LIBOR) FIND - Nalezení všech výskytů posloupnosti byte v zadaném bloku paměti. Zadává se začátek a konec bloku a libovolně dlouhá posloupnost byte. Uvedením přepínače L se potlačí průběžný výpis nalezených výskytů a vypíše se pouze jejich počet. Pokud je v posloupnosti byte uveden fiktivní byte XX, pak se tento byte při testu shody přeskočí a považuje za vyhovující. Během tisku průběžných výskytů lze příkaz ukončit stiskem klávesy STOP. příklad: FIND 0000 0FFF 4C 49 42 4F 52 20 (výpis adres výskytů posloupnosti a počet výskytů) FIND L 0000 0FFF 4C 49 42 4F 52 20 (tisk pouze počtu výskytů) FIND 0000 0FFF 4C XX 42 4F 52 20 (vyhledání posloupnosti s nevýznamným 2. byte) REPLACE - Vyhledání posloupnosti byte v bloku paměti a nahrazení posloupností novou. Zadává se začátek a konec bloku, násle- dovaný hledanou posloupností (min. 1 byte dlouhou), pak následuje oddělovač > (znak větší než) a za ním posloupnost, která bude nahrazovat posloupnost hledanou (a nalezenou). Obě posloupnosti musí mít min. délku 1 byte a nemusí být stejně dlouhé. Průběžný výpis adres, kde bude nalezená posloupnost nahrazena posloupností novou, lze vypnout pře- pínačem L. V tom případě se na konci příkazu pouze vypíše celkový počet záměn. Pokud je v posloupnosti byte uveden fiktivní byte XX, pak se tento byte při testu shody přeskočí a považuje za vyhovující. Fiktivní byte XX lze uvést jak u hledané posloupnosti, tak i u nahrazující posloupnosti.Během tisku průběžných adres záměn lze příkaz přerušit stiskem klávesy STOP. příklad: REPLACE 0000 6FFF 4C 49 42 4F 52 20 > 54 (přepis slov LIBOR na TIBOR v uvedeném bloku) REPLACE L 0000 6FFF 4C 49 42 4F 52 20 > 54 (totéž bez tisku adres, kde došlo k záměně) REPLACE 0000 6FFF 4C XX 42 4F 52 20 > 54 XX 4D (komentář není třeba, jen ukázka syntaxe) SUM - Suma bloku paměti. Zadává se začátek a konec bloku. příklad: SUM 8000 8FFF SWAP - Prohození obsahu dvou bloků paměti. Vzhledem k vlastnostem takového datového přenosu nese uživatel plnou zodpovědnost za vzájemnou polohu obou bloků. Obecně lze doporučit, aby se zaměňované bloky paměti nepřekrývaly. Zadává se začátek a konec 1. bloku a začátek 2. bloku paměti. příklad: SWAP 0000 00FF 1000 **************************** *** PRÁCE S MAGNETOFONEM *** **************************** CHECK - Kontrola správnosti souboru na MGF pásce s kontrolou CRC. Odpovídá příkazu MGEND originálního monitoru PMD-85. Zadává se pouze číslo kontrolovaného souboru, typ je ignorován. příklad: CHECK 11 FILE - Výpis informací o naposledy načteném/uloženém souboru na MGF pásek. Příkaz nemá parametry. příklad: FILE HACK - Načtení zavaděče programu s autostartem z MGF pásku, prove- dení úprav v zavaděči a poté povolení autostartu. Zadává se číslo souboru, typ je automaticky zvolen 3F(znak otazník). Za číslem souboru následuje adresa, následovaná posloupností byte, které modifikují zavaděč před provedením autostartu. příklad: HACK 00 7E24 5A 80 (zpřístupnění kódu her VBG) LOAD - Načtení souboru z MGF pásku. Zadává se číslo souboru, typ a nepovinně je možno zadat i adresu, kam se načtený soubor uloží nezávisle na adrese, kterou má uvedenu v hlavičce. Variantu s adresou lze použít pro načtení zavaděče programu s autostartem. Tím, že zavaděč nepřepíše zásobník, nedojde k automatickému startu zavaděče. příklad: LOAD 00 3F (načtení ad adresy dané v hlavičce) LOAD 06 3F 1000 (vynucené načtení od adresy 1000) SAVE - Uložení souboru na MGF pásek. Zadává se číslo souboru, typ, adresa počátku souboru v paměti, adresa konce souboru v paměti a max. 8 znaků dlouhé jméno souboru. příklad: SAVE 00 3F 0000 6DD4 FLAPPY TURBO - Nastavení nebo zobrazení konstanty záznamové rychlosti pro čtení/zápis na MGF pásek. Pokud je příkaz uveden bez para- metru, vypíše se hodnota konstanty. Je-li uveden parametr N (NORMAL), nastaví se standardní hodnota 06ABh, která odpo- vídá záznamové rychlosti 1200Bd. Je-li za příkazem uvedena hodnota, nastaví se konstanta na tuto hodnotu. příklad: TURBO (výpis hodnoty konstanty) TURBO N (nastavení konstanty na 06ABh) TURBO 0400 (nastavení vyšší rychlosti) VERIFY - Porovnání souboru na MGF pásku s obsahem paměti počítače. Zadává se číslo souboru a jeho typ. Porovnává se s obsahem paměti od adresy, která je uvedena v hlavičce porovnávaného souboru. V případě neshody se vypisují adresy s odlišnými hodnotami (max. však jen 8 prvních nalezených adres). Po ukončení kontroly souboru je vypsán celkový počet adres, na kterých se obsah paměti počítače liší od obsahu porovná- vaného souboru. příklad: VERIFY 01 3F *********************** *** LADĚNÍ PROGRAMŮ *** *********************** JUMP - Spuštění programu v paměti od zadané adresy. Vstupní hodnoty registrů možno zadat příkazem / (lomítko). Program je ukončen vykonáním příslušné instrukce RET (nebo podmíněné Rx/RNx). Po ukončení programu je možno si opět prohlédnout stav regi- strů procesoru příkazem / (lomítko). příklad: JUMP 0000 TRACE - Trasování programu od zadané adresy. Vypíše se vždy aktuální instrukce včetně operačních kódů, poté se tato instrukce provede a vytisknou se obsahy všech registrů procesoru. Instrukce volání podprogramů (CALL, RST, Cx, CNx) se provedou tak, že se provede celý podprogram najednou bez trasování a po návratu z něj některou z instrukcí RET se teprve vypíše obsah registrů procesoru. Vždy po vykonání instrukce se čeká na stisk jakékoliv klávesy pro pokračování trasování další instrukce. Stisk STOP ukončí trasování. Trasování se rovněž ukončí vykonáním některé z instrukcí RET, pokud je to závěre- čná instrukce trasované procedury. příklad: TRACE 0000 STACK - Vypíše aktuální hodnotu registru SP. Nemusí se shodovat s hodnotou registru SP ve výpisu pomocí příkazu / (lomítko). příklad: STACK / - Výpis hodnot registrů procesoru nebo jejich změna. Příkaz bez parametrů vypíše hodnoty všech registrů procesoru tak, jakou měly hodnotu při ukončení posledního programu, vola- ného příkazem JUMP. Pokud jsou uvedeny nějaké parametry, mají význam postupného definování registrů v pořadí reg. A, reg. pár HL, reg. pár DE, reg. pár BC a 8 jednotlivých příznakových bitů. Hodnotu registru SP nelze v tomto pohledu měnit, zde slouží pouze pro indikaci hodnoty registru SP během trasování příkazem TRACE. příklad: / (jen zobrazení) / 41 (zadání reg. A) / 41 1234 5678 9ABC 00000010 (kompletní zadání) *********************** *** OSTATNÍ PŘÍKAZY *** *********************** + Znak plus. Součet dvou hexadecimálních čísel délky 2 byte. příklad: + 1111 2222 - Znak mínus. Rozdíl dvou hexadecimálních čísel délky 2 byte. příklad: - 1111 2222 QUIT Ukončení programu. Příkaz nemá parametry. příklad: QUIT V Mostech u Jablunkova 26.11.2012