[Saidi indeks] [Sisukord]
 

 


3. Kontrolleri signaalide ja töö testimine

3.1. Kontrolleri signaalide testimine

Et kontrolleril pole autonoomset suhtlemisvõimalust, siis on see teostatud loogikaanalüsaatori ja personaalarvuti vahendusel.

[Image - Joonis 3.1.1

Joonis 3.1.1: Suhtlemine kontrolleriga

MUX on multipleksor, mis võimaldab printeriga ühendada kuni 4 personaalarvutit. Kõige esimesena signaali saatnud arvuti saab kõige esimesena printerit kasutada. Järgmised peavad ootama, kuni järjekord nendeni jõuab.
Signaalide testimiseks kasutatakse loogikaanalüsaatorit BLACK STAR 3332 [11]. Testimiseks tuleb analüsaator ühendada mooduliga PM3332 ja see omakorda kontrolleriga. Ühendusteks on olemas vastavad juhtmed.
Analüsaatori toite sisselülitamise järel ilmub ekraanile peamenüü, kus on menüüd SETUP, ACQUIRE, DISPLAY ja UTILITIES. Nende menüüde alammenüüdes kasutada erinevate parameetrite vahel liikumiseks TAB-klahvi (valitud parameeter paistab negatiivis), parameetri muutmiseks aga INC- ja DEC-klahve. Alammenüüst väljutakse ESC-klahviga. Kõigis menüüdes saab abiinfot, kui vajutada HELP-klahvi.
SETUP-menüü alammenüüs CLOCK tuleb kasutatavaks taktiallikaks (CLOCK USED) valida INTRERNAL, käivitushetkeks (CLK1) valida langusfront NEG, trigeri positsioon (TRIG POSITION) seada seisu 0000, TRIG DELAY ja TRIG HOLD-OFF seisu OFF. TRESHOLD-iks valida TTL. Sagedus (INT CLOCK) tuleb valida selline, et analüsaator oleks võimeline signaalide olekuid ajaliselt eristama. Madalaima piiri seab sagedusele protsessori taktsagedus.
SETUP-menüü alammenüüdes TRIGGER1,2 saab paika panna tingimused, millal analüsaator peab käivituma. Kui kasutatakse vaid ühte trigersõna, peab vastavas TRIGGER-menüüs olema valitud sõna ON, teises, mida ei kasutata, aga OFF. Trigersõna saab seada nii heksa-, okta- kui ka kahendkoodis. Seejuures on kõigis koodides olevad sõnad oma tähenduselt identsed, erinev on vaid kood. Kuna analüsaatoril kasutatakse kõiki 32-te andmekanalit, siis on kõige mõtekam trigersõna paika seada kahendkoodis, mille korral igale bitile vastab üks testitav analüsaatori sisendkanal.

Tabel 3.1.1: Trigersõna bittide ja andmekanalite seos
KANAL31302928272625 242322212019181716
HICLKA0A1A2A3A4A5 A6A7A8A9A10A11A12A13 A14
KANAL1514131211109 876543210
LOWA15CLKD0D1D2D3D4 D5D6D7/RD/WR/IORQ/MREQ/M1 CLK

Biti seis 1 vastab kontrolleri signaali kõrgele olekule, seis 0 - madalale olekule ja X märgib signaali suvalist olekut. Kuna signaale on palju, ei piisa 1..2 biti seadmisest, vaid tuleb valida kombinatsioon, mis kindlustaks analüsaatori käivitumise kasutaja poolt soovitud hetkel.
Seejärel valida DISPLAY-menüü alammenüü TIMING, misjärel ilmuvad ekraanile kursor ning 8 kanali seisundite ajadiagramm. Nüüd tuleb vajutada RUN-klahvi ja ekraanile ilmunud alammenüüst valida vajalik reziim. Tavaliselt on selleks SINGLE, mille korral käivitub analüsaator trigersõnaga etteantud tingimuste täitumisel ja loeb andmeid mällu, kuni viimane on täidetud. Andmed ilmuvad kohe ka ekraanile. Seetõttu ongi mugav avada enne analüsaatori käivitamist TIMING-menüü. Loomulikult saab RUN-klahviga analüsaatorit ka teistest menüüdest käivitada. Seejärel käivitada kontrolleris olev programm.
Saadud andmed püsivad analüsaatori ACQ-mälus kuni järgmise käivitamiseni. Andmete mugavamaks töötlemiseks ja salvestamiseks tuleb käivitada programm LA_VIEW:

C:\LOGICANA\>la_view
Antud programmiga saab lugeda analüsaatori mälust andmed personaalarvutisse, need salvestada, graafikuna välja printida. Samuti on võimalik vaadata eelnevalt failidesse salvestatud graafikuid, neid suurendada, vähendada. Printimiseks võib kasutada programmi pakutavaid võimalusi, ent kõige mugavam on kasutada personaalarvuti klahvi PrtSc, millega prinditakse antud hetkel kuvaril olev pilt. Seejuures peab olema aktiveeritud kataloogis DOS620 olev programm graphics.com. Loomulikult peab ka printer olema arvutiga ühendatud ning sisse lülitatud.

Lisas 2 graafikul 1 on kõik 2048 lugemit, mida analüsaator võimaldab, graafikul 2 on ühe programmi ajal siinidel olnud signaalid ja graafikul 3 - sama programmi esimesed käsud.

3.2. Protsessori registrite ja mälu sisu testimine ning muutmine

Kontrolleriga suhtlemiseks tuleb personaalarvutil käivitada programm Z180.

Silumiskeskkonna käsud [12]:


! HELP EXIT BREAK DUMP GO PATCH XREG TRACE MOVE MATH COLDBOOT! READ WRITE LIST VIEW CSUM
Lisainfo saamiseks käsu kohta:
HELP käsk
Kontrollerisse laaditud programmi kontrolleri mälus ja mälupesade sisu saab testida käsuga DUMP:

DUMP [n1 [n2]]
D [n1 [n2]]
Näitab Z180 mälu sisu ekraanil 16-ndsüsteemis ja ASCII tekstina alates aadressist n1
ja lõpetades aadressiga n2 (kui on antud).
Näide: DUMP .256
Näide: D driver_start driver_end-1
Nt.
Z180> d 8390
ADDR  00 01 02 03 04 05 06 07  08 09 0A 0B 0C 0D 0E 0F  01234567 89ABCDEF
----  -- -- -- -- -- -- -- --  -- -- -- -- -- -- -- --  -------- --------
8390  65 73 74 20 4F 4B 0D 00  0D 52 41 4D 65 6D 6F 72  est OK.. .RAMemor
83A0  79 20 74 65 73 74 20 61  62 6F 72 74 65 64 00 20  y test a borted. 
83B0  62 79 74 65 73 20 4F 4B  20 61 6E 64 20 61 76 61  bytes OK  and ava
83C0  69 6C 61 62 6C 65 00 00  00 00 00 00 00 00 00 00  ilable.. ........
83D0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........
83E0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ........ ........
Mälus olevat programmi saab assembleris vaadata käsuga LIST:

LIST [n1 [n2]]
L [n1 [n2]]
Disassembleriga näitab Z180 käske alates aadressist n1 ja lõpetades aadressiga n2 
(kui on antud).
Näide: LIST 0100
Näide: L 0100 cpu_end
Nt: Z180>l 8000
	FILL:			
8000	2600	  	LD	H,00	
8002	DD211A80 	LD	IX,LOOP	
8006	01FF03	  	LD	BC,03FF	
	FILL1:			
8009	DD7400	 	LD	(IX+00),H	
800C	DD23	 	INC	IX	
Mälu sisu saab baithaaval redigeerida käsuga PATCH:

PATCH [n]
P [n]
Alustab mälu sisu baithaaval redigeerimist aadressist n. 
Näide: PATCH 2F60
Näide: P TABLE
Nt: Z180> p 8071
8071H (10H) = 0a
8072H (4aH) = 
Registrite ja lippude seisude vaatamiseks ja redigeerimiseks on käsk XREG:

XREG [rr n]
X [rr n]
Kui argumente pole antud, näitab Z180 registrite jooksvaid väärtusi. Kui argumendid on antud, 
siis register/lipp saab uue väärtuse n.
rr = register/lipp, mida muudetakse, üks järgnevatest:

registrid:  A    F     B     C     D    E    H     L
              AF  BC   DE   HL   IX   IY   SP   PC  
    lipud:    SF  ZF   HF   P/V  NF  CF

Näide: XREG BC .63000 (16-bitine BC)
Näide: XREG B 11 (8-bitine B)
Näide: X ZF 1 ( ZERO lipp tõene)
Näide: X CF 0 ( CARRY lipp väär)
Nt.
Z180> x
A F  B C  D E  H L  IX   IY   SP   PC 
006C F80C 6C39 83AF 2A88 888C B000 8294   SF=0 ZF=1 HF=0 P/V=1 NF=0 CF=0 
          MEM7:
8294 CF           RST     08
Z180> x pc 8000
Z180> x
A F  B C  D E  H L  IX   IY   SP   PC 
006C F80C 6C39 83AF 2A88 888C B000 8000   SF=0 ZF=1 HF=0 P/V=1 NF=0 CF=0 
          INIT0:
8000 210780       LD      HL,TALK0
Programmi saab sammhaaval täita käsuga TRACE:

TRACE [n]
T [n]
Täidab n (vaikimisi = 1) Z180 käsku alates jooksvast Z180 PC väärtusest. Z180 registrite ja 
lippude seis ilmub ekraanile iga käsu täitmise järel.
Näide: TRACE
Näide: T .10
Nt: Z180>x pc algus
Z180>x
Z180> t
A F  B C  D E  H L  IX   IY   SP   PC 
006C F80C 6C39 83AF 2A88 888C B000 8233   SF=0 ZF=1 HF=0 P/V=1 NF=0 CF=0 
8233 CD0080       CALL    INIT0
Z180> t
A F  B C  D E  H L  IX   IY   SP   PC 
006C F80C 6C39 83AF 2A88 888C AFFE 8000   SF=0 ZF=1 HF=0 P/V=1 NF=0 CF=0 
          INIT0:
8000 210780       LD      HL,TALK0
Z180> t
A F  B C  D E  H L  IX   IY   SP   PC 
006C F80C 6C39 8007 2A88 888C AFFE 8003   SF=0 ZF=1 HF=0 P/V=1 NF=0 CF=0 
8003 CD0810       CALL    puts
Kuvari seisu saab vaadata ja salvestada käsuga VIEW:

VIEW [filename]
V [filename]

Ilma parameetrita käsu korral saab vaadata ekraani väljundi salvestust. VIEW-reziimis 
saab ekraanil infot nihutada üles/alla noole- ning PgUp-, PgDown-klahvidega. ESC-klahviga saab 
VIEW-reziimist tagasi normaalsesse reziimi. Kui parameetriks anda faili nimi, siis kirjutatakse 
ekraani puhver faili.

Silumiskeskkonnast väljumiseks on käsk EXIT (E). Kõigi käskude kirjeldused on juhendis [12].

Arvud on monitorprogrammis 16-ndsüsteemis. Numbrilised väärtused käskudes antakse järgneval kujul:

FFFF - 16-ndsüsteemi arv
.99999 - 10-ndsüsteemi arv
.-99999 - Negatiivne 10-ndarv
'A' - Sümboli ASCII kood
xxxxxx - Märgend xxxxxx (defineeritud .ASM lähtetekstis)

3.3. Assemblerprogrammi koostamine

3.3.1. Assebleri SASM kirjeldus

Z180 käskude operandid võivad olla 8- vôi 16-bitised arvud [12]. 8-bitise operandi väärtus võib kujutada:

  1. märgita arvu vahemikus 0..255;
  2. märgiga arvu vahemikus -128..+127;
  3. ASCII sümbolit.

16-bitise operandi väärtuste vahemik on suurem: 0..65535 märgita ja -32768..+32767 märgiga arvudel.
Arvud on assembleris 10-ndsüsteemis. 16-ndsüsteemi arvude tunnuseks on H täht lõpus. Kuna ka 16-ndsüsteemi arv peab algama numbriga, siis tuleb tähega alguse korral ette lisada 0. Assembler ei tee vahet suur- ja väiketähtedel.
Sümboli kood tuleb kirjutada apostroofide vahele. Näited konstantidest:
1) õige on 10, 0123H, 65535, -1234, 0FFH, 'u';
2) vale on FFH (ei alga numbriga), 100000 (liiga suur arv).
Operandiks võib olla ka avaldis, mille koosseisus on konstandid ja märgendid. Avaldises on lubatud liitmine, lahutamine, korrutamine, jagamine, sulud. Avaldise väärtus peab mahtuma vastavalt 8- vôi 16-bitise operandi lubatud piiridesse. Näide avaldisest:


	LD	HL,(RUUT+3*2) 
	.......	
RUUT:	DW	0,1*1,2*2,3*3,4*4
DW-käsuga defineeritaks ruutude tabel, iga arv tabelis vôtab 2 baiti. LD-käsuga loetakse ruutude tabeli algusest 6 baidi võrra suuremalt aadressilt 16-bitine väärtus 3*3=9 HL-registrisse.

Kasutaja koostatavad programmid algavad üldjuhul aadressilt 8000H, s.t. muutmälu algusest. Programmi järel tuleb reserveerida mälu andmete salvestamiseks. Mälu reserveerimiseks on käsud DS, DB, DW.
DS on andmetele mälu reserveerimiseks. Mälu seis programmi töö alguses ei ole määratud. Rea üldkuju on DS NNN , kus NNN on konstant, mis näitab reserveeritavate baitide arvu.
Nt:


DS	1
DS	1000
Nende kahe käsuga reserveeritakse kokku 1001 baiti.
DB on mälus konstantsete andmete kirjeldamiseks. Üldkuju on DB V1,...,VN, kus V1,..,VN tähistab komaga eraldatud 8-bitiste väärtuste loetelu.
Nt:

DB	2,5,7,11,13,17,19,23
DB	0EFH,0CDH,01H,075H,0FFH
DB	'H','e','l','l','o',0
Lisaks on olemas eraldi variand teksti kirjeldamiseks, kus sümbolid on kokku kirjutatud ühiste apostroofide vahele. Eelmise näite viimase rea saaks kirjutada
DB	'Hello',0
16-bitiste arvude kirjeldamiseks on eraldi korraldus DW (define word). Selle korralduse üldkuju on DW W1,..,WN, kus W1,..,WN tähistab komaga eraldatud 16-bitiste väärtuste loetelu. Nt:

DW	1, 10, 100, 1000, 10000 
DW	0FFFFH, 0ABCDH, 1000H
,/FONT> Iga programmis kirjeldatud masinkäsu või andmevälja ette võib panna märgendi, et edaspidi selle abil vastavale aadressile viidata. Märgend on rea algusesse paigutatud tähtedest ja numbritest koosnev nimi, mis algab tähega ja lõppu lisatud kooloniga.
EQU korralduse abil saab suvalisele arvulisele väärtusele nime anda. Korralduse üldkuju on järgmine:
nimi EQU väärtus.
Erinevalt märgendist ei ole siin nime lõpus koolonit vaja.
Nt:

PORTA	EQU	300H
CR	EQU	0DH
	IN	(PORTA)
	CP	CR
Koostatav programm algab alati reaga include lkz180.inc. Sellega liidetakse programmi algusesse failis lkz180.inc olevad korraldused. Põhiliselt on seal EQU-direktiivid, millega LKZ180 välisseadmetele on antud nimed. Samuti defineeritakse seal programmi algusaadressiks 8000H ja püsimälus olevate alamprogrammide aadressid.

Programmi iga rida koosneb oma ülesehituselt järgnevatest osadest:

märgend käsukood operandid.
Osad peavad olema omavahel tabulaatori või tühikutega eraldatud. Kõige mugavam on eraldajaks kasutada tabulaatorklahvi, siis on käsud ja operandid automaatselt kenasti tulpades. Rea alguses võib olla märgend. Käsukoodi ees peab olema tabulaator või tühik. Operandid on omavahel eraldatud komadega. Rea lõppu võib lisada kommentaari, mis algab semikooloniga. Programmi transleerimisel ignoreeritakse kommentaare.

Programmi lõpetamiseks on kolm võimalust:

  1. Kui programm lõpeb käsuga RST 8, antakse juhtimine üle monitorprogrammile . Seejuures lõpetab kasutaja programm töö registrite seisu salvestamisega.
  2. Kui programm ei lõpeta tööd, vaid kasutaja vajutab kontrolleri RESET nupule, siis antakse juhtimine monitorprogrammile. Registrite seisu ei salvestata ning neis on seis, mis oli programmi käivitamisel.
  3. Programm lõpetab töö registrite seisu salvestamata, kui suunata monitorprogrammi algusesse käsuga JP 0, mis on praktiliselt identne RESET nupule vajutamisega. Erinevus on selle, et RESET viib mõned välisseadmed tagasi algolekusse, kui nad olid ümber programmeeritud. JP 0 korral seda ei tehta (v.a. ASCI, mis peab sidet kontrolleri ja arvuti vahel).
Programmi lõppu tuleb lisada rida END.
Selle teatatakse assemblerile programmi teksti lõpust. Mingit käsukoodi ei genereerita.

3.3.2. Programmi kirjutamine, transleerimine ja sisestamine kontrollerisse

Programmi lähtetekst tuleb valmis kirjutada ASCII-tekstiredaktoriga, soovitavalt Norton Editoriga. Kirjutamisel tuleb järgida eelnevalt antud reegleid. Lähtefaili laiendiks peab olema .ASM. Programmiga lingitavate failide laiendid võib ise valida.

Programmi transleerimiseks tuleb sisestada MS-DOS-i käsurealt a . Seejuures ei tohi laiendit .ASM lisada ja vastav fail peab olema selles kataloogis, kus a-käsk sisestati. Vastasel juhul tuleb anda käsus tee failini. Kui transleerimisel avastati vigu, tuleb need lähtetekstis parandada ja uuesti transleerida.

Programmi laadimiseks kontrollerisse tuleb sisestada MS-DOS-i käsurealt z180 . Jälle ei tohi mingeid laiendeid lisada. Silumiskeskkonda sisenemiseks ilma programmi kontrollerisse laadimata tuleb sisestada käsk z180. Silumiskeskkonnas saab programmi kontrollerisse laadida käsuga READ. Seejuures pole vaja jälle laiendeid lisada.


READ [n]  
R [n]  
Loeb faili filename.typ alates aadressist n (vaikimisi = 0100h). .HEX faile lugedes n 
ignoreeritakse ja arvestatakse aadresse .HEX kirjetes. See on tavaline moodus laadida 
täidetav programm mällu.
Nt: Z180>r c:\heiki\kylg\kylg
Nt: Z180>r kylg


Üles seatud Thu., 09.07.1998.
Viimati muudetud Sat., 06.11.1999 02:41 PM CEST
WWW-lehekülje kujundus, õigused, vastutus ©
Heiki Kasemägi, 1998-1999

[Tagasi eelmisele leheküljele (JavaScript)] [2. peatükk] [Sisukord] [4. peatükk]