.org 00000h START: ; 0000h - RESET mvi a,08ah ; nastaveni sluzebniho 8255A. out 0FBH ; CW 8Ah => rezim 0, PA out, PB inp, PC0-3 out, PC4-7 inp nop



Podobné dokumenty
Obsah: strana. 1. Úvod... 5

Program "Světla" pro mikropočítač PMI-80

Obsah: Přílohy. strana

PMI-80 jako informační panel

Struktura a architektura počítačů (BI-SAP) 7

Seznámení s mikropočítačem. Architektura mikropočítače. Instrukce. Paměť. Čítače. Porovnání s AT89C2051

Fakulta informačních technologií VUT v Brně Ústav počítačových systémů Technika personálních počítačů, cvičení ITP Služby ROM BIOS a BootRom

Klimatizace. Třída: 4.C. Střední Průmyslová Škola Elektrotechnická Havířov Protokol do MIT. Skupina: 3. Zpráva číslo: 3

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Procesor z pohledu programátora

Kubatova Y36SAP 8. Strojový kód Jazyk symbolických instrukcí asembler JSA pro ADOP a AVR Kubátová Y36SAP-strojový kód 1

Historie osmibitových mikroprocesoru a mikroradicu ZILOG.


Podprogram DELAY.INC. - konstanty časových prodlev. RB3 equ 11b DEL1MS: DEL800: DEL400: DEL200 DEL100 DELAY: ret DEL1MS

Strojový kód. Instrukce počítače



SIGNUM 3SB3 Tlačítka a signálky

Vysoké učení technické v Brně Fakulta informačních technologií ITP Technika personálních počítačů Služby ROM BIOS a BootROM

Programování PICAXE18M2 v Assembleru

STEREOMETRIE ZÁKLADNÍ POJMY, METRICKÉ VLASTNOSTI, ODCHYLKY, VZDÁLENOSTI. STEREOMETRIE geometrie v prostoru

Mikrořadiče řady 8051.

Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Čísla, reprezentace, zjednodušené výpočty

Jako pomůcka jsou v pravém dolním rohu vypsány binární kódy čísel od 0 do 15 a binární kódy příkazů, které máme dispozici (obr.21). Obr.

8. Laboratoř: Aritmetika a řídicí struktury programu

Model ver SYSTEM EXCLUSIVE KOMUNIKACE CHD Elektroservis

IMTEE Přednáška č. 8. interrupt vector table CPU při vzniku přerušení skáče na pevně dané místo v paměti (obvykle začátek CODE seg.

POKLADNÍ DISPLEJ LCD. hotline: strana 1


RS485/MODBUS-RTU ver. 4 s rozšířením pro R24

BASPELIN CPM. Popis komunikačního protokolu verze EQ22 CPM EQ22 KOMPR

VIPA systém 300S vysokorychlostní řídicí systém

zení Koncepce připojení V/V zařízení POT POT ... V/V zařízení jsou připojena na sběrnici pomocí řadičů. Řadiče Připojení periferních zařízení

A51 MACRO ASSEMBLER POKUSNY PROGRAM DATE 10/3/007 PAGE 1

MCP BIOS řídicí jednotky Kit386EXR

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Čísla, reprezentace, zjednodušené výpočty

BASPELIN CPM. Popis komunikačního protokolu verze EQ3 CPM EQ3 KOMPR

Mikrořadiče pro přístrojovou techniku

Trojfázové asynchronní motory nakrátko, zavøené 1LA7. 0,04-18,5 kw. Katalog K CZ

KONFIGURACE RS485/MODBUS JEDNOTKY PDU4xx-P

Návod na použití Posilovací vž ATHLET/ Návod na použitie Posilovacia veža ATHLET

14/10/2015 Z Á K L A D N Í C E N Í K Z B O Ž Í Strana: 1

Assembler - 5.část. poslední změna této stránky: Zpět

Jazyk symbolických adres

Popis instrukční sady procesoru ADOP

Polohové spínače. 8/2 Úvod

KS 40-1 pro hořáky Speciální regulátor pro průmyslové hořáky

Kubatova Y36SAP 9. Strojový kód ISA architektura souboru instrukcí střadačově, zásobníkově orientovaná, GPR Kubátová Y36SAP-ISA 1

Kyvné pohony Série Miniaturní kompaktní suporty Série Tlumiče nárazu Série 6900

PicoBlaze lekce 4: Aplikace pro výuku asembleru procesoru PicoBlaze Jiří Svozil, Jaroslav Stejskal, Leoš Kafka, Jiří Kadlec

Elektronické záznamové zařízení EZZ 01

Zkouška z předmětu Počítačové systémy

Universita Pardubice Fakulta elektrotechniky a informatiky. Mikroprocesorová technika. Semestrální práce

Příloha L - tlačítka na panelu systému

Registry 32 bitové pro všeobecné použití: EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP.


Kubatova Y36SAP procesor - control unit obvodový a mikroprogramový řadič RISC Y36SAP-control unit 1

IMP (Mikroprocesorové a vestavěné systémy)

Návod na práci s přípravkem a programem uscope na cvičeních

zařízení. :r3 Počítač obsahuje procesor, DMA kanál a operační paměť.

Architektura systému Pro zajištění shodnosti s normami EMC může být měnič volitelně vybaven odrušovacím filtrem.

Akademický rok: 2004/05 Datum: Příjmení: Křestní jméno: Osobní číslo: Obor:

Distributed Safety: Koncepce

Programátorský model procesoru x51

!"!# TECOREG. Tento dokument lze poskytnout firmám v $%&'(%)*+, nebo se vypne a zapne napájení systému Tecoreg. KEYREG.

9. Rozšiřující desky Evb_Display a Evb_keyboard

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 6

Elektrické servomotory přímočaré (táhlové) MONTÁŽNÍ NÁVOD. Typové číslo /14


Vysoká škola chemicko-technologická v Praze Fakulta chemicko-inženýrská Ústav počítačové a řídicí techniky. Aplikace mikroprocesorů.

SAMOČINNÁ SOLÁRNÍ ELEKTRÁRNA

Struktura a architektura počítačů (BI-SAP) 9

1. OBSAH str. 2. PRÁVNÍ DOKUMENTACE 3. PROJEKTOVÉ PODKLADY

!" " #! "# #$! % " &" následujících podmínek: 1. Celý text musí být kopírován bez úprav a se zahrnutím všech stránek. 2. '&!

EUROTEST Použití Tech. parametry Rozsah dodávky PC software Volitelné příslušenství

MK800. Signalizační a testovací panel

Semestrální práce z předmětu ÚPA MIPS

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT


ISU Cvičení 7. Marta Čudová

B. Sčítání,odčítání adoplňkovýkód

KYVNÉ POHONY. Náhradní díly. Objednací kódy, technická data. Základní rozmìry. Pracovní podmínky. Kyvný pohon s ozubeným høídelem Série 6410

POKLADNÍ DISPLEJ VFD - USB

Principy komunikace s adaptéry periferních zařízení (PZ)

OBSAH. strana. Hroty 1, 2. Céčka a eska. strana 2, 3. strana. Šišky. Gule a polgule. strana 5, strana

Pohled do nitra mikroprocesoru

! "#$ % &'( )* +., %+ - % %.! &/ 0 1%2 %# %> 9? (' / ' AB' &- *- #.:! <> &/ 9 A 1 )* E A9* - & F 9' A 1 )* 1! ;! 1 :! #' 1) #.

Předmluva 13 Použité konvence 14. KAPITOLA 1 Základní číselné soustavy a pojmy Číselné soustavy a převody 15 1.

x86 assembler and inline assembler in GCC


Znakové. Zapojení vývodů. standard. vývod. popiss napájení GND G napájení +5V =data) Data Bus 0


Překladač - Assembler, úloha SW_ UART

Příloha č.:4 Specifikace podvozků

PicoBlaze lekce 1: assembler, C překladač a simulační prostředí Jiří Svozil, Leoš Kafka, Jiří Kadlec svozil@utia.cas.cz

Transkript:

Zdrojovy kod obsluzneho monitoru pocitace PMI-80 ************************************************* * (c) www.nostalcomp.cz 2014 * ************************************************* Disassembled by: DASMx object code disassembler (c) Copyright 1996-1999 Conquest Consultants Version 1.30 (Oct 6 1999) File: pmi80.rom, Size: 1024 bytes, Checksum: 82C9, CRC-32: B93F4407 Soubor PMI-80.ROM byl porovnan s obsahem ROM originalniho PMI a je identicky! Date: Tue Apr 06 20:17:03 2010, revised 7.1. 2014! CPU: Intel 8080 (MCS-80/85 family) Poznamka: RST 7 = FFh a je to nevyuzita (nenaprogramovana) pametova bunka Zaneseny tez upravy pro monitory PMI-80r, PMI-85 a PMI Z-80 (PMI-880) Binarni soubor prelozeny pomoci prekladace TASM 100% odpovida originalu! Definice portu a dulezitych mist v RAM: PORT_A.equ 0F8h PORT_B.equ 0F9h PORT_C.equ 0FAh PORT_CW.equ 0FBh STACK.equ 01FD9h VIDEORAM.equ 01FEFh IN_ADR.equ 01FF8h IN_DATA.equ 01FFAh VIDEO_POINTER.equ 01FFCh INT_VECTOR.equ 01FE6h.org 00000h START: 0000h - RESET mvi a,08ah nastaveni sluzebniho 8255A. out 0FBH CW 8Ah => rezim 0, PA out, PB inp, PC0-3 out, PC4-7 inp lze vlozit DI (adresa 0004h = F3h) pro vsechny verze jmp L002E ------------------------------------------------------------------------------- ENTRY: 0008h - ENTRY (BREAK STOP) shld $1FDF pop h shld $1FE2 lxi h,0000h dad sp shld $1FE4 lxi h,$1fdd sphl push b push d push psw pop h shld $1FDD lhld $1FEC lda $1FEE mov m,a lxi h,text_br_stop jmp L0040

L002E: lxi h,stack shld $1FE4 jmp L003D PMI Z-80 upravit skok na L_IM na adresu 003Bh: na adresu 0035h staci dat misto 3Dh hodnotu 3Bh ------------------------------------------------------------------------------- INTERRUPT: jmp INT_VECTOR 0038h - pevna adresa preruseni (typu RST7) nasleduji 2 volne byty, ktere lze vyuzit pro vlozeni instrukce IM1 pro Z-80: 003Bh = EDh (label L_IM: IM1 (režim přerušení jako u 8080, 2 byte) 003Ch = 56h (IM1 je dvoubajtova!) ------------------------------------------------------------------------------- L003D: pokracovani ENTRY lxi h,text_pmi_80 L0040: lxi sp,stack L0043: shld VIDEO_POINTER lxi h,videoram shld VIDEO_POINTER L004F: mvi a,01dh lxi h,tabprikazy mvi b,006h L005C: cmp m jz L006D dcr b jnz L005C L0067: lxi h,text_error jmp L0040 L006D: mov c,m mov h,m mov l,c pchl PCHL - obsah HL do PC = skok na adresu, ktery byla v HL (indexovy skok). - adresy v HL jsou adresami exekutiv (rutin) jednotlivych prikazu. Konec hlavni programove smycky. Nasleduji jednotlive vykonne exekutivy prikazu a podprogramy ------------------------------------------------------------------------------- PRIKAZ_MEM: prikaz MEM mvi a,016h L007A:

mov a,m sta IN_DATA mvi a,018h stax b call MODDA lda IN_DATA mov m,a shld IN_ADR call OUTAD jmp L007A ------------------------------------------------------------------------------- TEXT_MG_RUN:.db 01EH, 016H, 020H, 019H, 019H, 012H, 015H, 01BH, 01EH TEXT_MG_STOP:.db 01EH, 016H, 020H, 019H, 005H, 010H, 011H, 013H, 01EH ------------------------------------------------------------------------------- CLEAR: CLEAR lxi d,entry L00AE: lhld VIDEO_POINTER dad d mvi m,019h dcr e jnz L00AE dcx h mov m,a ------------------------------------------------------------------------------- OUTAD: OUTAD lxi b,01ff1h mov a,h call L00C6 L00C5: mov a,l L00C6: push d mov d,a rrc rrc rrc rrc ani 00FH stax b inx b mov a,d ani 00FH stax b inx b pop d ------------------------------------------------------------------------------- MODAD: MODAD call OUTAD

rz jnc L0197 ani 00FH add l mov l,a shld IN_ADR jmp MODAD ------------------------------------------------------------------------------- OUTDA: OUTDA lxi b,$1ff6 lhld IN_DATA jmp L00C5 ------------------------------------------------------------------------------- MODDA: MODDA call OUTDA rz jnc L019D ani 00FH add l mov l,a shld IN_DATA jmp MODDA ------------------------------------------------------------------------------- OUTKE: OUTKE call DISP volej DISP jnc OUTKE bylo neco zmacknuto? Kdyz ne, volej DISP rrc odrotuj vpravo (z DISPu jde hodnota odrotovana vlevo, takze RRC ji jen restauruje) mov c,a ulozime se kod klavesy L011E: call DISP volej DISP jc L011E byly klavesy uvolneny? Kdyz ne, volej DISP call DISP jeste jednou zavolej DISP (proc?) mov a,c natahni hodnotu kodu klavesy z C cpi 090H a porovnej ji s kodem klavesy = (90h) RETURN??? Nemelo by zde byt nejake dalsi vyhodnoceni? Nebo jde jen o nastaveni priznaku? **************************************************************************** pravdepodobne jiz nepouzivany usek s vyhodnocenim (nevedou sem zadne skoky) rozsah adres je 0012Bh - 0013Fh. K dispozici tedy 20 bajtu!.db 008H dad b dcr c dcx b ldax b inx d inr d mvi c,00ch rrc

dcr b ldax d dcr c dcx b ldax b cpo LD9DF cpo $D9DF in 0DDH konec asi jiz nepouzivane casti kodu ***************************************************************************** ------------------------------------------------------------------------------- DISP: DISP tento podprogram byl okomentovan jiz v puvodni dokumentaci v AR 11/1984 ale v tomto AR je spatna tabulka TABKEY. Spravne je to zde. push h push b push d lxi d,0000h nul D,E mov b,d nul B mov a,d nul A sta $1FFE inic STATUS LOOP1: mvi a,07fh blok segmenty out 0F8H port segment mov a,e cma out 0FAH nastav digit lhld VIDEO_POINTER nastav ukazatel vypisu dad d pripocitej digit mov c,m vloz zobrazovana data lxi h,tprev nastav tabulku prevodu znaku dad b mov a,m segment data out 0F8H port segment lda $1FFE lda STATUS ora a jnz NOKEY KEY? mvi c,009h ANO lxi h,0019ah lxi h, TABKEY-9 nastav tabulku prevodu klaves in 0FAH vstup KEY kod ani 070H maska rlc rlc jnc PRVA ANO, první rada rlc NE jnc DRUHA ANO, druhá rada rlc NE jc NOKEY C!=1, zadna rada dad b pripocitej radu DRUHA: dad b pripocitej radu PRVA: dad b pripocitej radu dad d pripocitej KEY mov a,m vyber kod KEY sta $1FFE vloz do STATUS NOKEY: inr e dalsi digit mvi a,00ah cmp e jnz LOOP1 posledni digit?

lda $1FFE lda STATUS ANO, posledni rlc nastav carry pop d pop b pop h L0197: lxi h,text_err_adres jmp L0040 L019D: lxi h,text_err_data jmp L0040 ------------------------------------------------------------------------------- tabulka klaves. 80h-8Fh = klavesy 0-F, 9xh = ridici klavesy, FFh = neosazeno TABKEY:.db 080H, 084H, 088H, 091H, 08DH, 08CH, 089H, 085H, 081H 3. radek matice tl..db 082H, 086H, 08AH, 09AH, 08FH, 08EH, 08BH, 087H, 083H 2. radek matice tl..db 0FFH, 094H, 093H, 0FFH, 097H, 092H, 0FFH, 0FFH, 090H 1. radek matice tl. tabulka pro prevod kodu znaku na sedmisegmentove vyjadreni pozor, je to invertovane! TPREV:.db 040H znak 0.db 079H znak 1, atd. dle tabulky znaku:.db 024H, 030H, 019H, 012H, 002H, 078H, 000H, 018H, 008H, 003H, 046H, 021H.db 006H, 00EH, 007H, 023H, 02FH, 00CH, 047H, 063H, 048H, 071H, 037H, 07FH.db 009H, 02BH, 00BH, 02CH, 05DH, 03FH, 042H, 061H.db 07BH znak c. 22 (carka), posledni v tabulce znaku.db 011H v tabulce znaku v manualu neni volny prostor (lze vyuzit pro upravy).org 001E7h TEXT_PMI_80: zacina na adrese 01E7h.db 01EH, 013H, 016H, 001H, 019H, 01FH, 008H, 000H, 01EH TEXT_PMI_80r:.db 01EH, 013H, 016H, 001H, 01FH, 008H, 000H, 012H 01EH text pro repliku PMI-80r od 01E7h TEXT_PMI_85:.db 01EH, 013H, 016H, 001H, 019H, 01FH, 008H, 005H, 01EH na 01EEh dat hodnotu 05h TEXT_PMI Z-80.db 013H, 016H, 001H, 019H, 019H, 002H, 01FH, 008H, 000H alternativni text pro Z-80 (od 01E7h) TEXT_PMI_880:.db 01EH, 013H, 016H, 001H, 019H, 008H, 008H, 000H, 01EH alternativni text pro U880D na 01EC dat hodnotu 08h TEXT_ERR_ADRES:.db 00EH, 012H, 012H, 018H, 00AH, 00DH, 012H, 00EH, 005H TEXT_ERR_DATA:

.db 00EH, 012H, 012H, 018H, 019H, 00DH, 00AH, 010H, 00AH TEXT_ERROR:.db 01EH, 019H, 00EH, 012H, 012H, 011H, 012H, 019H, 01EH TABPRIKAZY: kod prikazu (klavesy) + adresa obsluzneho programu (low, high).db 092H, 072H, 000H MEM.db 091H, 029H, 002H EX.db 097H, 05AH, 002H BR.db 09AH, 07EH, 002H R.db 094H, 04CH, 003H SAVE.db 093H, 08CH, 003H LOAD.db 0FFH, 0FFH, 0FFH Zde mely byt asi Rst 7 (nevyuzite misto) TEXT_BR_STOP:.db 01EH, 00BH, 012H, 01FH, 005H, 010H, 011H, 013H, 01EH ------------------------------------------------------------------------------- PRIKAZ_EX: prikaz EX mvi a,020h lhld $1FE2 shld IN_ADR shld $1FE2 mvi a,006h out 0F8H mvi a,00fh out 0FAH lxi h,stack sphl pop d pop b pop psw lhld $1FE4 sphl lhld $1FE2 push h lhld $1FDF ------------------------------------------------------------------------------- PRIKAZ_BR: prikaz BR mvi a,00bh lhld $1FEC shld IN_ADR shld $1FEC mov a,m sta $1FEE mvi m,0cfh lhld $1FE2 dcx h shld $1FE2 jmp PRIKAZ_EX ------------------------------------------------------------------------------- PRIKAZ_R: prikaz R mvi a,012h jnc L0067

ani 00FH lxi b,00006h L028E: lxi h,0012ah dcx b dad b inr c dcr c jz L004F cmp m jnz L028E L029C: lxi h,0012fh call L02CD mov e,l lxi h,00134h call L02CD mov h,e shld $1FF6 push b call L02CA push h mov c,m mov h,m mov l,c shld IN_ADR pop d mov a,l stax d inx d mov a,h stax d pop b dcr c jnz L029C jmp L004F L02CA: lxi h,00139h L02CD: mvi b,000h dad b mov l,m mvi h,01fh ------------------------------------------------------------------------------- TOUT: TOUT 02D4h mvi b,009h L02D6: mvi a,0c7h call L02EE mov a,c rar mov c,a mvi a,08fh rar call L02EE mvi a,047h call L02EE dcr b jnz L02D6 L02EE:

mvi d,020h L02F0: out 0F8H mvi e,004h L02F4: dcr e jnz L02F4 xri 040H dcr d jnz L02F0 ------------------------------------------------------------------------------- TIN: TIN 0300h mvi b,008h mvi d,000h L0304: jc L0304 jc L0304 L0310: jnc L0310 jnc L0310 L031C: dcr d jc L031C jc L031C L0329: inr d jnc L0329 jnc L0329 mov a,d ral mov a,c rar mov c,a mvi d,000h dcr b jnz L031C L0342: mvi e,002h L0344: dcr e jnz L0344 in 0FAH ral ------------------------------------------------------------------------------- PRIKAZ_SAVE: prikaz SAVE 034Ch mvi a,005h call MODDA lxi h,text_mg_run shld VIDEO_POINTER

mvi a,023h out 0F8H mvi a,00fh out 0FAH mvi d,0f0h mvi a,0c7h call L02F0 lda IN_DATA mov c,a call TOUT mvi a,010h L037E: mov c,m call TOUT inr l jnz L037E L0386: lxi h,text_mg_stop jmp L0043 ------------------------------------------------------------------------------- PRIKAZ_LOAD: prikaz LOAD 038Ch mvi a,014h call MODDA lxi h,text_mg_run L039A: shld VIDEO_POINTER L03A0: mvi a,007h out 0F8H mvi a,00fh out 0FAH L03AB: mvi d,0a0h L03AD: jc L03AB dcr d jnz L03AD call TIN lda IN_DATA cmp c jnz L03CC L03C1: call TIN mov m,c inr l jnz L03C1 jmp L0386 L03CC: jc L03E7 mvi a,00fh mov a,c lxi b,$1ff6 call L00C6 lxi h,videoram shld VIDEO_POINTER

jmp L03A0 L03E7: lxi h,text_mg_spat jmp L039A TEXT_MG_SPAT:.db 01EH, 016H, 020H, 019H, 005H, 013H, 00AH, 010H, 01EH volny prostor na konci PROM (lze vyuzit pro upravy) 03FFh konec 1KB PROM Poznamka: port PB sluzebni 8255A lze nastavit pouze na jednoduchy vstup/vystup v rezimu 0 vstup: mvi a,08ah out 0FBh vystup: mvi a,088h out 0FBh jina nastaveni tohoto obvodu nejsou mozna! Pridavny 8255A lze nastavit dle libosti. ***************************** www.nostalcomp.cz *****************************.END