Home

Anleitung des M027 - als PDF - KC-Club

image

Contents

1. 59 5 2 Besonderheiten oarn N 64 6 Druckertreiber mar 65 6 1 und Bedienings re an 65 Setzt E Bt 65 Bach Uebersicht der Drucker die mit der vorhandenen Software bedient werden 65 6 653 Unterschiede der Treiberprogramme 65 6 2 G ndeinstellungen ar ara Bee 66 6 2 1 Treiberr ukine 24 6314 454858 88804 22 66 DEVELOPMENT Inhalt 6 2 2 Treiberrdtitine 2 6312 32242558 4 4 85 in 66 6 3 S NN 66 6 4 67 6 5 Editor und Assembler an rn EN 67 6 6 Pr tokollf nktrons anna 67 na e 68 8 Literat r I EE EE 19 Anhang Befehlscode 11 80 Anhang Pseudobefehle des Assembler 84 Anhang Uebersicht Fditor Assembler 85 Anhang D Uebersicht Disassembler 87 Anhang Vebersicht 001 ere NEEN NR Ee EN A NEEN S 88 Anhang ASCIT Lods Tabelle s saen sa aan 89 Anhang M d lnandhab ng ass ie 90 DEVELOPMENT 1 Einleitung Einleitung Der Modul 027 DEVELOPMENT ist ein 8 Byte Festwertspeicher modul Er enthaelt vier 2 Byte 5 einen 2 Pass Assemble
2. Ak kk kk kk kk kk kk ko ke kk kk k kako PROLOG MENU EINTRAG EINSPRUNG TEMO SYSTEMAUFRUF STRINGAUSGABE CRLF STRINGENDE SYSTEMAUFRUF AUSGABE COUNTER VORZEICHEN 2 Z Z X lt HLBC gt Z VORZEICHEN DEVELOPMENT 3045 3048 3049 304C 304D 3050 3051 3052 3055 3058 3059 305A 305B 305D 305E 305F 3060 3061 3063 3065 3067 3069 306C 306D 306E 3070 3072 3074 3076 3078 307B 307C 307D 307 3080 3081 3082 3083 3085 3087 3089 308 308 308F 3090 3092 3094 3096 3098 309A 309D 309E CDO3FO 23 203D20 00 CD5A30 60 14 69 CD5A30 CDO3FO MULS 2 9 TG CON 6 IF FEOA 3802 607 630 CDO3FO 24 7 E60F FEOA 3802 607 630 CDO3FO 24 7D 6 IF IF FEOA 3802 607 630 CDO3FO 24 7D E60F FEOA 3802 607 630 CDO3FO 24 9 CON3 4 ERRORS 0000 EXIT D ALL oBrun gt U D x tg D El HJ D e D Op CH AND RRA RRA 9 oO 2 DD Le ALL Marke gt 12 12 53 gt e 0 003 23 0 H B 0 003 2CH A H OFOH CON1 30H OF003H 24H A L
3. 2 CBE3 4 5 CBE6 7 DDCBXXE6 FDCBXXE6 SET 5 CBE8 9 CBEA CBEC CBED CBEE DDCBXXEE FDCBXXEE SET 6 2 CBF3 4 CBF5 6 7 DDCBXXF6 FDCBXXF6 SET 7 CBF8 CBF9 CBFA CBFB CBFC CBFD CBFE CBFF DDCBXXFE FDCBXXFE Flagbeeinflussung SZHP VNC 1 x 0 Komplement des Bits Z RES BEE SET lin Bit 82 DEVELOPMENT CPU Steuerbefehle 5 2 00 HALT 76 meh DI F3 EI FB sh Fe 0 ED46 S IM 1 056 IM 2 EDS5E Ein und Ausgabebefeh A B ED78 ED40 OUT C 79 41 SZH DBXX OUT n A D3XX EDA2 x EDB2 x 1 x IND EDAA x x INDR EDBA x 1 x OUTI EDA3 x x OTIR EDB3 x 1 x OUTD EDAB x OTDR EDBB x 1 x D a gt Carry Flag N Add Subtract Flag P V Parity Overflow H Half Carry Flag Z Zero Flag S Sign Flag X nicht verwendet Beeinflussung lt Anhang VN Leerbefehl bis RESET oder Interrupt Interrupts sperren Interrupts freigeben Interrupt Modus 0 Interrupt Modus 1 Interrupt Modus 2 le D E H L SZHP VNC D48 050 ED58 ED60 ED68 ze P H vs 049 51 ED59 061 ED69 P V N C x 1 IN HL C INC HL DEC x 1 wie
4. 33 DEVELOPMENT 3 Assembler 3 5 3 Registeraustauschbefehle Diese Befehle dienen dem schnellen Austausch von Doppelregisterinhalten und erschliessen dem Programmierer die Hintergrundregister Zum Beispiel UP Unterprogramm Befehle A RET rettet die Registerinhalte BC DE HL fuer das Hauptprogramm Im Unterschied zur Verwendung von PUSH und POP gehen die der Hintergrundregister ggf im Unterprogramm verloren Inhalte Durch den Befehl EX DE HL kann fuer in DE enthaltene Adressen auch die indirekte Adressierung ueber HL verwendet werden Mnemonik T wirkungsweise des Befehls SZHPNC DE HL 4 Die 16 Bit Inhalte der Registerpaare DE und HL werden ausgetauscht AF AF 4 Die 16 Bit Inhalte der Registerpaare AF und AF werden ausgetauscht 4 Die 16 Bit Inhalte der nachstehenden Registerpaare werden ausgetauscht lt gt lt gt HL lt gt EX SP HL 19 Der Inhalt des Registers L wird gegen den Inhalt der Speicherstelle ausge tauscht die durch den Inhalt des Stack pointers SP adressiert ist Der Inhalt des Registers H wird gegen den Inhalt der Speicherstelle ausgetauscht die durch den Inhalt des Stackpointers SP plus 1 adressiert ist lt gt SP 1 uo SP EX SP 23 Der niederwertige Teil des Indexregi 34 DEVELOP
5. D H AF BC DE HL PC SP I 001A 0055 8E16 1116 3028 0130 01 IX IY FLAGS OP CODE 01 0 68BF HN AA 3028 D DE HL 5 E 8E8C 0055 8E16 16 3029 0130 01 IX FLAGS OP CODE 01 0 68BF SP E680 3029 AND 080 AF BC DE HL 5 I 8090 0055 8 16 1116 3028 0130 01 IX FLAGS OP CODE 01 0 68BF SH 5 302B PUSH DE HL 5 I 8090 0055 8 16 1116 302C 012 01 IX FLAGS OP CODE 01 0 68BF SH 78 302 LD 76 DEVELOPMENT 5015 55 3007 30 0 3007 3008 CALL 300B DEFB 023H 300C DEFB 00 3000 DEFB 00 300E 009 300 009 3010 000 3011 CALL 0305 3014 CALL 3017 DEFB 023H 3018 DEEN 301B DEFB 000 301C EX DE HL 3010 CALL 0305 3020 EX DE HL 3021 PUSH HL 3022 PUSH DE 3023 POP BC 3024 POP DE 3025 1 011 3027 LD 3028 XOR D 3029 AND 080H 302B PUSH AF 302C LD A B 302D LD B H 302E LD 00000 3031 RES 7 A 3033 RES 7 D 3035 RRH 3037 RRL 3039 RRA 303A RR C 303C JR NC 0303FH 303E ADD HL DE 303F DJNZ 03035H 3041 LD B A 3042 POP AF 3043 OR H 3044 LD H A 3045 CALL 3048 023H 3049 DEEN 304 DEFB 000 3040 CALL 0305 3050 10 3051 10 L C 3052 CALL 0305 3055 CALL 3058 DEFB 02CH 3059 RET 305A LD A H
6. 023 0104 Bildschirm loeschen 0105 DEF Testprogramm 0111 DEFB Cursor down 0112 DEFB Cursor auf Zeilenanfang 0113 DEF 011 DEFB 000 Ende der Zeichenkette 56 DEVELOPMENT 4 Disassembler 4 3 Zusaetzliche 0880 Befehle Ueber den offiziellen Befehlssatz hinaus kennt der Disassembler einige spezielle Indexregisterbefehle die wie die 8 Bit Register benutzt werden koennen Die bekannten Lade und Arithmetikbefehle mit den Registern H und L koennen ebenfalls durch Vorsetzen der Umschaltbytes FD und DD auf das nieder wertige low oder hoeherwertige high Byte der Indexregister angewendet werden Die Bezeichungen lauten HX HY LX LY Beispiel 44 LD B HY DD 85 ADD In der Gruppe der 2 Byte Befehle fehlt eine Spalte mit der Kodierung 1108 fuer die Bits 3 5 Diese Kodierung erzeugt einen Schiebebefehl nach links mit dem Setzen des Bits 0 Der Befehl wird mit SLS wuebersetzt Zu den 4 Byte Indexregisterbefehlen ist zu bemerken dass das letzte Byte die Registeradresse den Bits 0 bis 2 enthaelt Wird in diese genannten Bits eine andere Kodierung eingetragen als 1108 erfolgt ein Eintrag des Operations ergebnisses ein entsprechendes Register Im Disassembler protokoll steht dafuer der Zusatz LD reg Beispiel FD 03 01 RCL 03H amp LD FD 04 32 SLS IY 04H LD C Diese Darste
7. ALEINCOMPUTER 44 EEE FREE Te Fade eh de WERTET Rn 027 DEVELOPMENT ALEINEUMPUTER KC 85 A Beschreibung zuM 027 DEVELOPMENT Ri 10 89 Gesamtherstellung Druckerei August Bebel Gotha veb mikroelektronik wilhelm pieck muehlhausen Ohne Genehmigung des Herausgebers ist es nicht gestattet das Buch oder Teile daraus nachzudrucken oder auf fotomechanischem Wege zu vervielfaeltigen DEVELOPMENT Inhalt znhalt Ts Einleitung san RER re ee a 5 2 BLONDE NET 6 2 1 nern Ban 7 22 RB Ra REN 9 3s Assembler seen 10 3 1 Allgemeines 10 352 Arbeitsweise des 2 11 3 2 1 Registerstr kturn 4 8 12 3 22 t S SSK D q bra 15 3 2 3 INterrupesysten d dan 86622004 ee ee ER e eg 16 16 3 2 3 2 Maskierter Intetrupt sen 16 3 2 4 Adressieru ngs arten Rs pas ae eh 18 Syntax der Aasembleraprache a SUS 19 x yumuu AE 20 en en 20 3 33 ee Verne nee EN ee 21 3 3 4 I
8. DEVELOPMENT 3 Assembler Mnemonik T wirkungsweise des Befehls SZHPNC JR 12 Relativer Sprung nach Adresse nn wenn 7 das C Flag gleich 1 ist JP m 4 Unbedingter Sprung zur Adresse die im Doppelregister HL steht JP IX 8 Unbedingter Sprung zur Adresse die im JP IY 8 Indexregister IX bzw steht DJNZ nn 13 Der Inhalt des Registers wird um 1 8 vermindert Bedingter relativer Sprung zur Adresse nn wenn der Inhalt des Re gisters B ungleich 0 ist 43 DEVELOPMENT 3 Assembler 3 5 8 Unterprogrammbefehle Es ist wie bei Sprungbefehlen zwischen bedingten und unbedingten Befehlen zu unterscheiden Der Unterprogrammaufruf geschieht mit einem CALL Befehl bei dem zusaetzlich zum Programmsprung die dem CALL Befehl im Speicher folgende Adresse Rueckkehradresse in den Kellerspeicher Stack gerettet wird Wird nun das Unterprogramm mit einem RET Befehl abgeschlossen so wird diese Rueckkehradresse in den Befehlszaehler aus dem Stack zurueckgeladen und das Programm wird an der alten Stelle fortgesetzt Mnemonik Wirkungsweise des Befehls SZHPNC CALL nn 17 Unbedingter Unterprogrammaufruf zur Adresse nn Die nach dem CALL Befehl folgende Speicheradresse wird wie bei einem PUSH Befehl in den Stack gerettet Rueckkehradresse Danach erfolgt ein unbedingter Sprung zur Adresse nn indem der Befehlszaehler PC mit nn geladen wird
9. interruptroutinen genutzt und sollte in Anwenderprogrammen nicht veraendert werden Interruptvektorregister Dieses Register beinhaltet den hoeherwertigen Adressteil der Tabelle fuer die Interruptroutinen Es hat beim KC 85 2 und KC 85 3 nach Einschalten oder RESET den Wert 1 s dazu Abschn 90225 3 Refreshregister Dieses T7 Bit Register wird bei jeder Befehlsverarbeitung um 1 erhoeht Es dient zum Auffrischen der Inhalte der dynamischen RAM Speicher und ist fuer den Programmierer nicht von Bedeutung 14 DEVELOPMENT 3 Assembler 3 2 2 Flag Bits Die CPU verfuegt ueber zwei Status Flag Register s Abb 3 3 Durch Veraenderung einzelner Bits wird ueber die Art des Ergebnisses der letzten Prozessoroperation Auskunft gegeben Diese Auskunft wird hauptsaechlich dazu benutzt bedingte Spruenge vorzunehmen d h je nach Ergebnis der Pruefung eines dieser Bedingungsbits die eine oder aber eine andere Aktion durchzufuehren Die Stellung der einzelnen Bits innerhalb des Flag Registers F zeigt folgende Tabelle Hierbei bedeuten Vebertragsbit Carry Flag N Additions Subtraktionsbit Add Sukbtract Flag P V Paritaets Ueberlaufbit Parity Overflow Flag H Halb Byte Ueberlaufbit Half Carry Flag 2 Nullbit Zero Flag 5 Vorzeichenbit Sign Flag x nicht verwendet Das Carry Flag wird gesetzt l wenn bei der Addition zweier ein Uebertrag von Bit 7 entsteht sowie wenn bei der Subtra
10. 0 1 2 3 4 5 6 7 DUMMY HOME SPACE 0 CLEAR PAGE 1 A 0 5 SCROL 2 R b BREAK STOP 3 5 5 CLICK 5 4 t 5 U e u SHIFT L amp 6 F V f 7 G w CUL CEL 8 H x h CUR CCR 9 I 1 CUD INS 7 3 2 CUU 4 m k CLS LIST 7 lt L 1 RUN m m CONT 2 gt HCOPY DEL O Fuellzeichen Loeschen Zeichen Loeschen Zeile Programmende Signaltonausgabe Cursor nach links Cursor nach rechts Cursor nach unten Cursor nach oben Loeschen Bildschirm Cursor an den Anfang der naechsten Zeile ENTER Aufruf Sonderprogramm z B Hardcopy Cursor nach links oben Umschalten PAGE Modus Umschalten SCROLLING Modus Ein und Ausschalten des Tastenclicks SHIFT LOCK Cursor auf Zeilenende Cursor auf Zeilenanfang Einfuegen Zeichen Loeschen Zeichen und verdichten Funktion in der CRT Routine 89 DEVELOPMENT Anhang Anhang G Modulhandhabung Welcher Steckplatz Der Modul zur Nutzung in einem Steckplatz des Systems zu kontaktieren Der Software Modul kann prinzipiell in jedem Modulsteckplatz betrieben werden Dies gilt auch fuer Aufsaetze mit weiteren Modulsteckplaetzen Hierbei ist zu beachten dass die Modulprioritaetskette geschlossen bleibt Zur Modulsteuerung im Computer verfuegt der Modul ueber eine Modulprioritaetsschaltung Sind mehrere Module mit gle
11. Befehle erlauben es Speicherplaetzen zu testen zu setzen oder zu loeschen Mnemonik BIT BIT SET SET SET SET W ES ES W 50 b IX d b IY d b IX d b IY d b IX d b IY d 12 20 20 15 23 23 15 23 23 Wirkungsweise des Befehls Die durch b gekennzeichnete Bitposition wird in dem Register r getestet Das Komplement des zu testenden Bits wird in das Z Flag geladen Die durch b gekennzeichnete Bitposition wird in der Speicherstelle getestet die durch das Register HL adressiert ist Das Komplement des zu testenden Bits wird in das Z Flag geladen Die durch b gekennzeichnete Bitposition wird in der Speicherstelle getestet die durch das Indexregister IX bzw IY plus Verschiebung d adressiert ist Das Komplement des zu testenden Bits wird in das Z Flag geladen Die durch b gekennzeichnete Bitposition wird in dem Register r gesetzt auf 1 Die durch b gekennzeichnete Bitposition wird in der Speicherstelle gesetzt die durch das Register HL adressiert ist Die durch b gekennzeichnete Bitposition wird in der Speicherstelle gesetzt die durch das Indexregister IX bzw IY plus Verschiebung d adressiert ist Die durch b gekennzeichnete Bitposition wird in dem Register r geloescht Null Die durch b gekennzeichnete Bitposition wird in der Speicherstelle geloescht die durch das Register HL adressiert ist Die durch b gekennzeichnete Bitpositi
12. ED4D zurueck vom Interrupt RETN ED45 zurueck vom nicht maskierbaren Interrupt 8l DEVELOPMENT Anhang A Rotations und Verschiebebefehle SZHP VNC RLCA 07 e 08 522400 Rotiere Akku links RRCA H 20208 Rotiere Akku rechts RLA 127 Oa i Rotiere Akku links durch Carry RRA IF 09 Rotiere Akku rechts durch Carry RLD ED6F 0 Rot Ziffern links zw Akku und HL RRD ED67 0 0 Rot Ziffern rechts zw Akku und HL B 2 L HL A IX d IY d RLC 01 02 04 05 06 07 DDCBXX06 FDCBXX06 08 09 CBOD DDCBXXOE RL 10 CB11 12 13 14 CB15 16 17 DDCBXX16 16 RR CB18 CB19 1 CB1C 1 1 DDCBXX1E FDCBXX1E SLA 20 21 22 CB23 CB24 25 CB26 27 DDCBXX26 FDCBXX26 SRA CB28 CB29 CB2A CB2B CB2C CB2D CB2E CB2F DDCBXX2E FDCBXX2E SRL CB38 CB39 CB3A CB3B CB3C CB3D CB3E CB3F DDCBXX3E FDCBXX3E S Z H P V N C RLC RRC 0 P 0 Rotiere Register links rechts RL RR 0 P 0 Rotiere Register links rechts durch Carry SLA SRA 0 P 0 Schiebe Register links rechts arithm SRL P 0 Schiebe Register rechts logisch Finzelbitbefehle B H L HL A IX d IY d BIT 0 40 41 42 43 44 45 46 47 DDCBXX46 FDCBXX46 BIT 1 4
13. Modus erreicht man beim Start ueber EDAS Ist mit EDAS ein Quellprogramm erstellt worden kann als Folge mit REEDAS gestartet werden Dabei erfolgt keine lInitialisierung des Speichers Warmstart Quelltexte bleiben dann wie schon erwaehnt erhalten Die Anzeige des Kommandomenues erfolgt in der folgenden Form gt gt gt EDAS 1 3 lt lt lt EDIT VERIFY DEVELOPMENT 2 Editor 2 1 Kommando Modus Das Editor Menue ist aehnlich wie das CAOS Betriebssystem Menue aufgebaut nur erscheint ein als Prompt Zeichen Nach dem Zeichen sind eines der im folgenden beschriebenen Editor Kommandos einzugeben in Grossbuchstaben bzw die entsprechen de Zeile im Menue mit dem Cursor anzuwaehlen Die Kommandos MENU CLEAR SAVE LOAD PRINT und ASM fuehren nach Abarbeitung zurueck den Kommando Modus FIND BOTOM und EDIT leiten den Editier Modus ein Im folgenden wird die Wirkungsweise der einzelnen Kommandos beschrieben MENU Anzeige aller Kommandofunktionen EXIT Verlassen von EDAS und Rueckkehr zur CAOS Systemschleife CLEAR Loeschen des gesamten Textspeichers Die Markentabelle und das uebersetzte Programm bleiben erhalten SAVE Abspeichern des im Hauptspeicher befindlichen Quelltextes auf Kassette Nach Aufruf von SAVE ist ein maximal 8 Zeichen langer Name einzugeben Diese Eingabe ist nach Einschalten des Kassettenrecorders mit lt ENTER gt abzuschliessen Der Name wi
14. Register L gt Inhalt von nn Inhalt des Doppelregisters pp wird auf die Adressen nn und 1 transportiert hoeherwertiges Reg gt Inhalt von 1 niederwertiges Reg gt Inhalt von nn Inhalt des Indexregisters IX bzw wird auf die Adressen nn und 1 trans portiert hoeherwert Teil gt Inhalt von 1 niederwert Teil gt Inhalt von nn Inhalt des Doppelregisters HL wird in den Stackpointer Kellerzeiger trans portiert Inhalt des Indexregisters IX bzw IY wird in den Stackpointer Kellerzeiger transportiert Inhalt des Doppelregisters qq wird in Kellerspeicher Stack transportiert erniedrigen von SP hoeherwertiges Reg gt Inhalt von SP Adr erniedrigen von SP niederwertiges Reg gt Inhalt von SP Adr Inhalt des Indexregisters IX bzw wird in den Kellerspeicher Stack transportiert erniedrigen von SP hoeherwert Teil gt Inhalt von SP Adr erniedrigen von SP niederwert Teil gt Inhalt von SP Adr nhalt der von Stackpointer SP adres sierten 2 Speicherstellen wird in das Doppelregister qq uebertragen nhalt von SP Adr gt niederwertiges Reg erhoehen von SP nhalt von SP Adr gt hoeherwertiges Reg erhoehen von SP nhalt der von Stackpointer SP adres sierten 2 Speicherstellen wird in das ndexregister IX bzw IY uebertragen nhalt von SP Adr gt niederwertig Teil erhoehen von SP nhalt von SP Adr gt hoeherwertig Teil erhoehen von SP
15. 305B AND 305D RRA 305E RRA 305F RRA 3060 RRA 7 Programmbeispiel 77 DEVELOPMENT 78 00 R C 03067H DD 007H LL 024H H 00 00 03076 007 LL 024 C 03089H DD 007H DD 030H ALL EFB 024H R D D ti D C pt ph S Cy bita C Cy h i CT 2 Fl gt O U Z g Z tl gt U D 00 03098 007H CALL DEFB 024H RET NOP DE 7 Programmbeispiel DEVELOPMENT 8 Literatur 8 Literatur Classen L Programmierung des Mikroprozessorsystems U880 K1520 Reihe Automatisierungstechnik VEB Verlag Technik Berlin 1982 Schwarze W Meyer G Eckard D Mikrorechner Wirkungs weise Programmierung Applikation VEB Verlag Technik Berlin 1980 Robotron Systemmdokumentation MOS 1520 SCPX 1526 Anleitung fuer den Programmierer Teil VEB Robotron Buchungsmaschinenwerk Karl Marx Stadt 1984 Lampe Jorke G Wengel N Algorithmen der ikrorechentechni VEB Verlag Technik Berlin 1983 280 Assemblersprache Benutzerhandbuch in deutscher Sprache ZILOG 1977 Klein M Klein R D Z280 Applikationsbuch Franzisverlag GmbH Muenchen 1983 Osborn A Einfuehrung in die Mikrocomputer Technik te wi
16. 66 6E IY j j H EB D9 BC 0A E DD56XX DD5EXX FD56XX FD5EXX DD72XX DD73XX 72 FD73XX d n 7 D73XXXX DES DEI Anhang A DE nn n 1A 3EXX 06 16 1EXX 26 2 36XX H L DD66XX D6EXX FD66XX FD6EXX DD74XX DD75XX FD74XX FD75XX FD36XXXX IX EE DD21XXXX FD21XXXX DD2AXXXX FD2AXXXX DD22XXXX FD22XXXX DDF 9 FDF 9 BC DE DE HL HL DEVELOPMENT Blocktransfer und suchbefehle LDI LDIR LDD LDDR CPI CPIR CPD CPDR 8 Bit Arithmetik EDAO EDBO EDA8 EDB8 1 EDB1 EDA9 EDB9 OO HN Anhang A HL INC DE DEC wiederholen bis 0 HL DEC DE DEC wiederholen bis 0 L DEC BC b BC 0 od A H 1 DE HL INC wie LDI 1 DE HL DEC wie LDD HL INC HI wie CPI wiederh A HL DEC HI L DEC BC BC BC L wie CPD wiederh b BC 0 od A HL und Logikbefehle 1 1 4 S Z H N C ADD 80 81 82 83 84 85 86 87 C6XX DD86XX FD86XX V 0 ADC 88 89 8C 8D DD8EXX FD8EXX V 0 SUB 90 91 92 93 94 95 96 97 D6XX FD96XX 17 SBC 98 99 9A 9B 9 9D 9E 9 DEXX DDIYIEXX FDIEXX V 17 AND 1 2
17. 7 7 1 0 0 23 0 0 090 0 OFO 23H 0 DE co DE HL DE BC FH LT 03H AH 9H 03H HL PROLOG TEMO MENU EINTRAG EPILOG EINSPRUNG TEMO SYSTEMAUFRUF STRINGAUSGABE CRLF STRINGENDE SYSTEMAUFRUF AUSGABE COUNTER VORZEICHEN 2 Z Z X lt HLBC gt Z VORZEICHEN SYSTEMAUFRUF AUSGABE 69 DEVELOPMENT 7 Programmbeispiel CALL CON MUL4 LD H B LD 1 CALL CON MUL5 CALL OFOO3H SYSTEMAUFRUF DEFB 2CH AUSGABE NEWLINE RET LD A H ZIFFERNCONVERT AND OFOH RRA RRA RRA RRA JR C CON1 ADD 7 ADD 30H CALL 0 003 SYSTEMAUFRUF DEFB 24H ZIFFERNAUSGEBE LD A H AND OFH JR C CON2 ADD 7 CON2 ADD 30H CALL SYSTEMAUFRUF DEFB 24H ZIFFERNAUSGABE LD A L AND OFOH RRA RRA RRA RRA JR C CON3 ADD 7 CON3 ADD 30H CALL 0 003 SYSTEMAUFRUF DEFB 24H ZIFFERNAUSGABE LD A L AND OFH JR C CON4 ADD 7 ADD 30H CALL SYSTEMAUFRUF DEFB 24H ZIFFERNAUSGABE RET 70 DEVELOPMENT FIND TEXT MUL1 MUL1 SYSTEMAUFRUF DEFB 23H AUSGABE DEFM DEFB 0 EX DE HL CALL CON MUL2 EX DE HL PUSH HL PUSH DE POP BC POP DE LD H 11H COUNTER LD A B XOR D AND 80H VORZEICHEN 2 PUSH AF LD A B LD B H LD 0 2 0 RES 5 1 B
18. A IY d 19 bzw plus Adressverschiebung 4 adressierten Speicherplatzes plus Carry Flag wird zum Inhalt des Akkumulators addiert Das Ergebnis steht im Akkumula tor SUB r 4 Der Inhalt von Register wird vom Akku V1 mulatorinhalt subrahiert SUB m 7 Der Inhalt des durch das Registerpaar HL V1 adressierten Speicherplatzes wird vom Inhalt des Akkumulators subtrahiert SUB n 7 Die Konstante n wird vom Inhalt des EMS Akkumulators subtrahiert SUB 1 4 19 Der Inhalt des durch das Indexregister SUB IY d 19 bzw plus Adressverschiebung 4 adressierten Speicherplatzes wird vom Inhalt des Akkumulators subtrahiert Das 38 DEVELOPMENT 3 Assembler Ergebnis steht im Akkumulator Mnemonik T Wirkungsweise des Befehls SZHPNC V SBC 4 Der Inhalt von Register r plus Carry SAYS Flag wird vom Akkumulatorinhalt subtra hiert SBC A m 7 Der Inhalt des durch das Registerpaar HL V1 adressierten Speicherplatzes plus Carry Flag wird vom Inhalt des Akkumulators subtrahiert SBC A n 7 Die Konstante plus Carry Flag wird vom V1 Inhalt des Akkumulators subtrahiert SBC A 19 Der Inhalt des durch das Indexregister SBC A 19 IX bzw plus Adressverschiebung FERN adressierten Speicherplatzes plus Carry Flag wird vom Inhalt des Akkumulators subtrahiert Das Ergebnis steht im Akku mulator AND 4
19. CALL NZ nn 17 Unterprogrammaufruf zur Adresse nn 0 das Z Flag gleich 0 ist CALL Z nn 7 Unterprogrammaufruf zur Adresse nn wenn 0 das Z Flag gleich 1 ist CALL 17 Unterprogrammaufruf zur Adresse nn wenn 0 das C Flag gleich 0 ist CALL 7 Unterprogrammaufruf zur Adresse nn wenn 0 das C Flag gleich 1 ist CALL PO nn 17 Unterprogrammaufruf zur Adresse nn wenn 0 das P V Flag gleich 0 ist CALL PE nn 17 Unterprogrammaufruf zur Adresse nn wenn 10 das P V Flag gleich 1 ist CALL P nn 7 Unterprogrammaufruf zur Adresse nn wenn 0 das S Flag gleich 0 ist CALL nn 7 Unterprogrammaufruf zur Adresse nn wenn 0 das S Flag gleich 1 ist RST 1 Der RST Befehl ist ein spezieller Unter programmaufruf Es sind folgende 8 Re start Adressen zugelassen 00H 08H 10H 18H 20H 28H 30H 38H Der hoeherwertige Adressteil ist dabei stets 0 Der RST Befehl entspricht in seiner weiteren Wirkung dem unbedingten Unterprogrammaufruf 44 DEVELOPMENT Mnemonik RET RET NZ RET 2 3 Assembler wirkungsweise des Befehls SZHPNC V Unbedingter Unterprogrammruecksprung 1 Die Ausfuehrung erfolgt indem die Rueckkehradresse wie bei einem POP Be fehl aus dem St
20. Logische UND Verknuepfung eines Regi 1POO AND m 7 sters Speicherbytes oder Konstanten mit 1 00 AND n 7 dem Akkumulator Das spezifizierte Byte 1 00 AND 1 4 19 wird bitweise mit dem Inhalt des 1 00 AND IY d 19 lators konjunktiv verknuepft Das logi 1 00 sche UND ist nur dann 1 wenn beide Bits sind OR r 4 Logische ODER Verknuepfung eines Regis 0 00 OR m 7 ters Speicherbytes oder Konstanten mit 0 00 OR n 7 dem Akkumulator Das spezifizierte Byte 0 00 OR 1 4 19 wird bitweise mit dem Inhalt des 0 00 OR IY d 19 lators disjunktiv verknuepft Das logi 0 00 sche ODER ist nur dann 0 wenn beide Bits 0 sind 4 Exklusiv ODER Verknuepfung eines Regi 0 00 m 7 sters Speicherbytes oder Konstanten mit 0 00 7 dem Akkumulator Das spezifizierte Byte 0 00 XOR 1 4 19 wird bitweise mit dem Inhalt des Akkumu 0P00 XOR IY d 19 lators exklusiv verknuepft Das Exklu 0POO siv ODER ist dann 1 wenn ein Bit 1 und das andere Bit 0 ist CP r 4 Der Inhalt eines Registers eines Spei V1 m 7 cherbytes oder eine Konstante wird mit dem Akkumulator verglichen Der ur 7 spruengliche Inhalt des Akkumulators 1 4 19 bleibt dabei erhalten Das Vergleichs 19 ergebnis ist durch die Flags Stellungen V1 erkennbar INC r 4 Der Inhalt des Registers wir
21. Modulbeschreibung Ist kein V24 Modul gesteckt erfolgt eine ERROR Meldung Ist der Drucker off line geschaltet wartet der Computer bis der Drucker on line geschaltet ist der Cursor wird nicht wieder eingeblendet daher keine Weiterarbeit moeglich 6 5 Editor und Assembler it Anwahl des Menuewortes PRINT m n wird ein Quellprogramm bei initialisiertem Druckertreiber auf dem Drucker ausgelistet Die Bedeutung der Parameter m Anzahl der Bildschirmzeilen pro Druckzeile n Anzahl der Druckzeilen pro Druckseite Diese Parameter werden hexadezimal angegeben Entfaellt die Parametereingabe werden die Zeichen auf den Bildschirm ausgegeben Am Ende der Bildschirm bzw der Druckausgabe erfolgt die Abfrage Weiter ja nein it Aufruf des Assemblers und Anwahl der Option LP wird bei initialisiertem Druckertreiber ein Assemblerprotokoll ausgedruckt 6 6 Protokollfunktion Durch die Tastenkombination SHIFT und CLEAR ist es moeglich den Drucker parallel zu schalten Es wird also jedes auf den Bildschirm ausgegebene Zeichen auch auf dem Drucker ausgegeben Dies ermoeglicht es 2 Disassemblerlisting zu drucken oder den Schrittbetrieb fuer den Testmonitor zu protokollieren 67 DEVELOPMENT 7 Programmbeispiel 7 Programmbeispiel Es wird beschrieben wie ein Programm mit dem Namen MULT zur Multiplikation zweier Zahlen mit Vorzeichen am KC 85 3 erstellt und getestet wird Das Produkt Z X Y soll berechnet werden Dabei sind
22. OFH 30H 7 Programmbeispiel SYSTEMAUFRUF AUSGABE SYSTEMAUFRUF AUSGABE NEWLINE ZIFFERNCONVERT SYSTEMAUFRUF ZIFFERNAUSGABE SYSTEMAUFRUF ZIFFERNAUSGABE SYSTEMAUFRUF ZIFFERNAUSGABE SYSTEMAUFRUF ZIFFERNAUSGABE 73 DEVELOPMENT 74 DISPLAY CD CTT KEEN f_UHDE_ EFR KOR NZ Idfpeese pe lt 7 Programmbeispiel DEVELOPMENT STEP 3007 DE 361A 0055 8E16 FLAGS 01 0 68BF HN 3008 CALL 0F003 DE 0054 0055 8E16 FLAGS 01 0 68BF ZHP 3011 CALL 0305A 1116 AF BC 361A 0055 8E16 FLAGS 01 0 68BF 3014 CALL 0 003 AF BC DE 0054 0055 8E16 FLAGS 01 0 68BF ZHP 301C EX DE HL AF BC DE 0054 0055 1116 FLAGS 01 0 68BF ZHP 301D CALL 0305A de 55 bc 8005 STEP 3007 AF BC DE 0054 8005 0055 FLAGS 01 0 68BF ZHP 3008 CALL 0 3 AF BC DE 0054 8005 0055 IX FLAGS 01 0 68BF ZHP 3011 CALL 0305A 8 16 BC 361A 8005 0055 FLAGS 01 0 68BF HN 3014 CALL 0 03 BC DE 0054 8005 0055 IX FLAGS 01 0 68BF ZHP 301C EX DE HL BC DE 00
23. OPTIONS Py S Durch Eingabe der entsprechenden Buchstaben bzw Zeichen in beliebiger Reihenfolge und an beliebigen Stelle im Cursorfenster koennen die Options angegeben werden Dabei bedeutet Erhalten einer schon vorhandenen Markentabelle und Hinzufuegen der neuen Marken zu dieser Tabelle 2 Es wird nur der zweite Pass durchgefuehrt 1 keine neue Markentabelle erzeugt Brief Kurzform Die ueber das Ausgabegeraet kommenden Listen bzw Fehlerzeilen werden auf eine Laenge von 39 Zeichen begrenzt um z die Ausgabe ueber den Bildschirm uebersichtlicher zu gestalten L Listing Erzeugung einer Assemblerdruckliste und deren Ausgabe ueber das Ausgabegeraet s P Die Ausgabe kann mit der Taste STOP unterbrochen und mit BREAK abgebrochen werden Im Drucklisting ist in der 3 bis 6 Spalte die Speicheradresse und in der 8 bis 16 Spalte der erzeugte Maschinencode enthalten Danach folgt die Quellprogrammzeile Output Erzeugung des Maschinencodes und Ablage im Speicher Dabei ist Vorsicht geboten wenn ORG Anweisungen im Quelltext stehen Die Ueberpruefung dass von EDAS benutzte Speicherbereiche nicht ueberschrieben werden muss der Benutzer selbst vornehmen Ggf muss der EDAS Arbeitsbereich beim EDAS Aufruf entsprechend eingeschraenkt werden Eine ORG Anweisung lt 3000H fuehrt zu einem fehler haften Maschinencode Werden uebersetzte Programme auf bereits durch andere Programme belegte
24. Prozessors beinhaltet 6 verschiedene Adressierungsarten zur Bereitstellung von Register Speicher oder Ein Ausgabe Adressen fuer zu spezifizierende Datenwoerter Direkte Adressierung Der Operationscode beinhaltet vollstaendig die entsprechende Adresse 2 10 LD 0200H HL Implizite Adressierung Der Operationscode bezieht sich fest auf bestimmte Speicherplaetze oder Register 2 B SCF Unmittelbare Adressierung Dem Operationscode folgt unmittelbar eine 8 oder 16 Bit Konstante im Speicher LD A 6 XOR 20H Indirekte Adressierung Die 16 Bit Adresse befindet sich in einem Registerpaar der CPU Der Befehl bezieht sich indirekt auf diese Adresse 1 LDIR Indizierte Adressierung Der Operationscode beinhaltet ein Datenbyte zwischen 128 und 127 dass zum Inhalt des Doppelregisters IX oder IY addiert die vollstaendige Adresse ergibt Zu Baos LD A IX 6 18 DEVELOPMENT 3 Assembler 3 3 Syntax der Assemblersprache Der hier beschriebene EDAS Assembler verarbeitet die ZILOG Mnemonik Dabei gelten allerdings einige Einschraenkungen und Besonderheiten auf die in diesem Abschnitt an entsprechender Stelle eingegangen wird 20 Ein Assemblerprogramm Quellprogramm besteht wie schon erwaehnt aus einer Folge von Anweisungen sog Statements die zusammen das Anwenderprogramm ergeben Jede der Quellprogrammzeilen ist aus einem Markenfeld einem Operationscodefeld mne
25. Speicherbereiche ausgegeben muss am Programmmanfang eine entsprechende ORG Anweisung stehen P Printer Fuer die Dauer des Assembliervorgangs wird das Ausgabegeraet auf den Anwenderausgabekanal 1 eingestellt Damit ist es z B moeglich das Assemblerlisting L und P gleichzeitig auf einen Drucker siehe Pkt 6 auszugeben S Save Nach Abarbeitung der uebrigen Assembleroptions wird ein weiterer dritter Pass zur Kassettenausgabe des aschinencodes gestartet Dabei wird zunaechst ein Programmname bis zu 8 Zeichen abgefordert Dieser wird intern mit dem Dateityp COM ergaenzt Der Kassettenpass kann mit BREAK abgebrochen werden Bei der Kassettenausgabe ist zu beachten dass der erzeugte aschinencode aus nur einem zusammenhaengenden Speicherbereich bestehen darf es darf nur hoechstens eine ORG Anweisung und zwar am Anfang des Quelltextes stehen Nur unter dieser Voraussetzung kann der gespeicherte aschinencode mit dem LOAD Befehl des Monitors korrekt geladen werden 25 DEVELOPMENT 3 Assembler Nachdem die Assembler Options eingegeben wurden die Zeile ist mit lt ENTER gt abzuschliessen beginnt der Assembliervorgang Die Beendigung des ersten Passes wird am Bildschirm durch die Ausschrift END PASS 1 angezeigt Bei der Uebersetzung ermittelte Fehler werden ueber das Ausgabegeraet Bildschirm oder Drucker je nachdem ob P als Option eingegeben wurde durch den Ausdruck der fehlerhaften Zeile und einer
26. Verbindung mit dem Schrittbetrieb des Testmonitors zur Darstellung der Befehlsmnemonik eingesetzt werden Nach dem Einschalten des Moduls und dem Aufruf des Kommandos ENU erscheinen im Menue des Betriebssystems zusaetzlich die olgenden Kommandos DAS EEDAS ISASS DISASS EMO ETEMO V24K6311 V24K6313 DAQ O 1 Ei DEVELOPMENT 2 Editor 2 Editor Nach dem Programmaufruf mit EDAS wird die Groesse des zur Verfuegung stehenden RAM Speicherbereiches ermittelt ohne diesen zu zerstoeren und es wird die oberste Speicheradresse RAM Ende in HEX zur Bestaetigung angeboten Durch Eingabe eines niedrigeren Wertes kann ein Teil des Speicherbereiches vor dem Zugriff von EDAS geschuetzt werden um z B weitere Maschinenprogramme wie Druckertreiberroutine abspeichern zu koennen Eine falsche Zahleneingabe oder eine Eingabe ausserhalb des zugelassenen Zahlenbereiches wird zurueckgewiesen Anschliessend wird der EDAS zugewiesene RAM Speicher wie folgt initialisiert 0 40H 0 8 200H 3 4 RAMEnde RAMEnde Vu WE UK u Tia a De H 1 1 1 1 l l EDAS Text Speicher gt lt System fuer Editor I MC Marken variablen Speicher Danach tritt das Programm in den Kommando Modus ein und das Editor Menue mit den Kommandos zur Bearbeitung des Quelltextes wird angezeigt Dabei sind auf dem Bildschirm rechts oben stets die freien Speicherplaetze in HEX eingeblendet Den Kommando
27. am Drucker einstellbar Formularende am Drucker einstellbar Heftrand 10 Zeichen Der Code 09H wird durch 20H ersetzt Zum Empfang der vom Computer gesendeten Daten ist die hier angegebene Datenuebertragungsart einzustellen Alle weiteren Bedingungen sind der Beschreibung des V24 Moduls und der Druckgeraetebeschreibung zu entnehmen Fuer die Betriebsbereitschaft der Schreibmaschine S6005 ist keine Einstellung des Interface notwendig Das V24 Interface der Schreibmaschine 56010 sollte zur Nutzung des Programms V24K6313 fuer die Datenausgabe nach der Druckgeraetebeschreibung eingestellt werden 6 3 Anschlussbedingungen Die Ansteuerungen Computer Drucker ist in der M003 V24 Modul beschreibung enthalten Bild 5 Ebenfalls gilt dieser Hinweis fuer die Schreibmaschinen 66 DEVELOPMENT 6 Druckertreiber Routinen 6 4 Initialisierung Mit dem Einstellen des Cursors auf den jeweiligen Programmnamen 24 6311 oder 24 6313 und dem Druecken der ENTER Taste wird der V24 Modul zur Datenuebertragung initialisiert Das muss auch nach einem Systemreset erfolgen Die Datenausgabe erfolgt ueber den Anwenderkanal 1 des Systems USER OUT 1 Fuer den Druckeranschluss ist der Kanal des V24 Moduls der die niedrigste Schachtnummer im KC System besitzt zu nutzen V24 Module die eine hoehere Schachtnummer haben werden nicht genutzt und dem Anwender erst nach dem Ausschalten des untersten V24 Moduls wieder zugaenglich siehe v24
28. die Befehlsausfuehrungszeit auf dem 85 2 und KC 85 3 Flag Beeinflussung der Befehle s 3 2 2 In der letzten Spalte der folgenden Befehlsuebersicht ist fuer die einzelnen Flag Bits C N P V H Z S deren Wert nach der Ausfuehrung des Befehls angegeben Dabei bedeutet gesetzt 1 zurueckgesetzt 0 unveraendert entsprechend dem Ergebnis der Operation d h gesetzt wenn erfuellt zurueckgesetzt wenn nicht erfuellt unbestimmt Overflow Funktion Parity Funktion Inhalt des Interrupt Flip Flops IFF2 vgl Abschn 3 2 3 2 lt x I 29 DEVELOPMENT 3 Assembler 3 5 1 8 Bit Ladebefehle Die Ladebefehle transportieren 8 Bit Daten intern zwischen Registern oder zwischen Registern und dem Speicher Dabei steht im Operandenfeld als erstes der Zielspeicherplatz und danach durch Komma getrennt der Quellspeicherplatz Der Inhalt des Quellspeicherplatzes wird bei diesen Befehlen nicht veraendert Mnemonik T Wirkungsweise des Befehls SZHPNC LD 4 Inhalt des Registers r wird in das Re gister r umgespeichert LD 7 Die 8 Bit Konstante wird in das Regi ster r geladen LD r m 7 Inhalt des durch Registerpaar HL adres sierten Speicherplatzes m wird in das Register r geladen Fuer m ist sowohl die Schreibweise HL als auch M zulae ssig LD 19 Inhalt des durch Register IX bzw LD 19 plus Verschiebung adr
29. erscheint der Cursor und es kann mit folgenden Tasten fortgesetzt werden Abarbeiten des naechsten USER Befehls Cursor Setzen eines Haltepunktes auf die dem ange zeigten Befehl folgenden Adressen zum kompletten Abarbeiten von Programmschleifen und Unterpro grammen einschliesslich CAOS Systemrufen Dabei ist zu beachten dass die Abarbeitung nicht in 60 DEVELOPMENT 5 Testmanitor Echtzeit erfolgt da das Programm nach jedem Befehl zum Adressvergleich unterbrochen wird Die zeitliche Dehnung ist etwa 120fach Es kann jederzeit mit der BRK Taste unterbrochen und in die Schrittbetriebsanzeige gesprungen werden Die zeitliche Dehnung macht sich extrem beim Bildschirmloeschen und rollen bemerkbar Kommandoeingabe des Testmonitors Beispiel STEP 100 Abarbeitung des Befehls auf Adresse 100H COPY aaaa bbbb kopieren eines Speicherbereiches Parameter aaaa Quelladresse bbbb Zieladresse Anzahl Bytes Das Umspeichern erfolgt ueber einen LDIR Befehl ohne Kontrolle auf wueberlappende Speicherbereiche und ist deshalb auch zum Loeschen oder Beschreiben von Speicherbereichen geeignet Beispiel COPY 100 101 8 beschreibt die Speicherplaetze 101 bis 108 mit dem Inhalt der Adresse 100H MOVE aaaa bbbb Verschieben eines Speicherbereiches Parameter vgl COPY Das Umspeichern erfolgt mit Kontrolle auf uebe
30. ist HL gt 1 gt wiederholen bis 0 Die Ausgabekanaladresse wird indirekt ueber das Register C eingestellt Quell adresse ist der durch HL adressierte Speicherplatz B kann als Bytezaehler arbeiten B und HL werden um 1 vermindert HL gt B 1 gt HL 1 gt HL Xxx 1 53 DEVELOPMENT Mnemonik 54 3 Assembler wirkungsweise des Befehls SZHPNC Die Ausgabekanaladresse wird indirekt x1xx1 Speicherplatz arbeiten B Es fuehrt bis HL gt B gt 1 gt HL ueber das Register C eingestellt Quell adresse ist der durch HL adressierte B kann als Bytezaehler und HL werden um 1 vermindert wird eine Blockuebertragung durchge 0 ist wiederhole bis 0 DEVELOPMENT 4 Disassembler Disassembler 4 1 Inhalt und Bedienung Nachdem man den Modul zugewiesen hat erscheinen mit dem Aufruf des Kommandos MENU auch die Menueworte DISASS und CDISASS Der Disassembler ermoeglicht das blockweise Rueckuebersetzen von einem im Speicher des Computers stehenden Maschinenprogramm in die mnemonische Form Mit der Eingabe DISASS aaaa bbbb nn 0000 wird der Disassembler aufgerufen Dabei bedeuten die Parameter aaaa Anfangsadresse des zu disassemblierenden Programms bbbb Endadresse 1 des zu disassemblierenden Programms nn Anzahl der auf einer Bildschi
31. steht eine der ZILOG eine Assembler Pseudoanweisungen Anhang A und B Das Operationscodefeld beginnt fruehestens in der 2 Spalte der Programmzeile d h wenn das Markenfeld leer ist muss vor dem Operationscode mindestens ein Trennzeichen Leerzeichen oder Tabulator stehen 20 DEVELOPMENT 3 Assembler 3 3 3 Operanden Je nach Art des Operationscodes muss das Operandenfeld entweder leer sein oder es enthaelt einen oder zwei durch ein Komma getrennte Operanden die eine Adresse Speicher Register oder Ein Ausgabe Kanal eine Konstante oder eine Flag Bedingung repraesentieren Die Operanden ergaenzen die jeweiligen Anweisungen durch eine Information darueber mit welchen Parametern die Operation durchzufuehren ist Es sind folgende Schluesselwoerter fuer die Operandenfelder reserviert vgl dazu Abschn 3 2 1 und 3 2 2 Die Namen der internen Register der CPU die jeweils den 8 Bit Inhalt eines dieser Register ansprechen Die Registernamen sind H L I und Die Namen der Doppelregister und Registerpaare Doppelregister sind die 16 Bit Register IX SP und PC Ueber die Registerpaar Bezeichnungen AF BC DE und HL lassen sich die oben bezeichneten 8 Bit Register der CPU paarweise als 16 Bit Woerter vom Assemblerbefehl ansprechen Die in der CPU integrierten Zweitregister werden in der Assemblersprache mit einem Hochkomma gekennzeichnet Die Namen sind DEI
32. und HL Von diesen Namen ist jedoch lediglich die Kombination AF als Operand zulaessig in der Anweisung EX AF AF Der Zustand der 4 vom Assemblerprogramm testbaren Bedingungs Bits wird in der Flag Bedingung wie folgt notiert Bedingungs Bit Bezeichnung Bedingung erfuellt Flag Bit 1 Bedingung nicht erfuellt Flag Bit 0 1 1 1 1 1 1 I I Uebertrags Bit Carry E gt ige MEHN 1 1 Null Bit 2 NZ Zero I Gg fe kuspa ua maps yaa mapasa 1 1 Vorzeichen Bit M Sign negativ positiv Ta rau Cal akii tt Jet a sl St Ta ut Da a a te 1 1 Paritaets Veberlauf Bit 1 1 1 1 Parity Overflow gerade even vgl Abschn 3 2 2 Als Konstanten oder Speicheradressen koennen arithmetische Ausdruecke stehen die durch beliebige Anzahl von Additionen und Subtraktionen von Dezimalzahlen Hexadezimalzahlen Marken Zeichenkettenkonstanten 5 und bestehen ohne Leerzeichen dazwischen Die Zeichen und sind dabei synonym zur Kennzeichnung des momentanen Befehlszaehlerstandes verwendbar Hexadezimalzahlen muessen mit einer Ziffer 0 bis 9 beginnen und mit der Kennze
33. 4 5 A7 E6XX DDA6XX FDA6XX 1 00 XOR 8 A9 AA AD DDAEXX FDAEXX 1 P 00 OR BO B2 BA B5 B6 B7 F6XX DDB6XX 1 P 00 B8 B9 BD BE DDBEXX V 17 INC 04 0 14 1C 24 2C 34 DD34xXX 4 V 0 DEC 05 90 18 1 28 SI 35 SD 35 D35250 1028 SZHP VNC DAA 27 P BED Korrektur im Akku CPL 2F 1 1 Komplementiere Akku ler Komplement SCF 37 0 0 1 Setze Carry Flag COE 3F x 0 Komplementiere Carry Flag NEG ED44 V 1 Komplementiere Akku 2er Komplement 16 Bit Arithmetikbefehle BC DE HL SP IX S 2 N C ADD HL 09 19 29 39 ER e ADC HL 4 ED5A ED6A 7 HS 5 HL 42 ED52 ED62 72 REBEL ADD DD09 DD19 DD39 0029 ADD FDO9 FD19 FD39 29 gt Sl P OP INC 03 13 23 33 DD23 23 een es DEC 1 2 3B BB2B 2 Sprung und Unterprogrammbefehle 2 NZ JP 2 DAXXXX D2XXXX EAXXXX 2 FAXXXX F2XXXX CAXXXX DAXXXX 4 FAXXXX RET c8 co D8 DO E8 0 F8 JR 28 20 38XX unbedingt HL IX RST 00 08 10 18 20 28 30 38 JP C3XXXX 9 DDE9I 9 7 D7 DF E7 CALL JR 18 DJNZ 10 B JR
34. 54 8005 8 16 IX FLAGS 01 0 68 ZHP 3010 CALL 0305A HL PC 5 1116 3008 0130 OP CODE CDO3FO H HL 5 1116 3011 0130 OP CODE CD5A30 H DE HL 1116 3014 0130 OP CODE CDO3FO H HL PC SP 1116 301C 0130 OP CODE EB HL PC SP 8E16 301D 0130 OP CODE CD5A30 H HL PC SP 8 16 3008 0130 OP CODE CDO3FO HL PC 5 8 16 3011 0130 OP CODE CD5A30 DE HL PC 8 16 3014 0130 OP CODE CDO3FO H HL PC SP 8 16 301C 0130 CODE EB HL PC SP 0055 301D 0130 OP CODE CD5A30 H 5 01 5 01 01 7 Programmbeispiel 75 DEVELOPMENT 7 Programmbeispiel 0055 DE HL Pc sp 351A 8005 8E16 0055 3020 0130 01 IX IY FLAGS OP CODE 01 0 68BF HN EB 3020 EX DE HL DE HL SP I 351A 8005 0055 8 16 3021 0130 01 IX FLAGS OP CODE 01 0 68BF HN 5 3021 PUSH HL DE HL SP 1 351A 8005 0055 8 16 3022 012 01 IX FLAGS OP CODE 01 0 68BF HN D5 3022 PUSH DE AF BC DE HL PC SP I 351A 8005 0055 8 16 3023 012C 01 FLAGS OP CODE 01 0 68BF HN ci 3023 POP BC AF BC DE L sp I 351A 0055 0055 8E16 3024 012E 01 IX FLAGS OP CODE 01 0 68 HN 3024 POP DE BC DE HL SP 351A 0055 8 16 8 16 3025 0130 01 IX IY FLAGS OP CODE 01 0 68BF HN 2611 3025 1 011 BC DE HL sp 351A 0055 8 16 16 3027 0130 01 IX IY FLAGS OP CODE 01 0 68BF HN 78 3027 LD
35. 8 49 CBAA CBAB CBAC CBAD DDCBXXAE 4 BIT 2 50 51 52 CB53 CB54 55 56 57 DDCBXX56 FDCBXX56 BIT 3 58 CB59 5 5 5 5 CB5E 5 DDCBXX5E FDCBXX5E BIT 4 60 61 CB62 CB63 64 65 66 67 DDCBXX66 FDCBXX66 BIT 5 CB68 69 6 6 DDCBXX6E FDCBXX6E BIT 6 CB70 71 CB72 73 74 75 76 77 DDCBXX76 FDCBXX76 7 CB78 79 7 7 7 CB7D 7 7 DDCBXX7E FDCBXX7E RES 0 CB80 81 CB82 CB83 CB84 85 CB86 CB87 DDCBXX86 FDCBXX86 RES 1 CB88 CB89 8 8 8 8 DDCBXX8E FDCBXX8E RES 2 90 91 92 93 94 95 96 97 DDCBXX96 6 RES 3 98 99 9 9 9 CB9D 9 9 DDCBXX9E FDCBXX9E RES 4 1 2 CBA3 4 5 6 7 DDCBXXA6 FDCBXXA6 RES 5 CBA8 CBA9 CBAA CBAB CBAC CBAD CBAE CBAF DDCBXXAE FDCBXXAE RES 6 1 CBB2 4 CBB5 CBB6 CBB7 DDCBXXB6 FDCBXXB6 RES 7 8 9 CBBA CBBC CBBD DDCBXXBE SET 0 CBC1 2 CBC3 4 5 CBC7 DDCBXXC6 FDCBXXC6 SET 1 CBC8 CBC9 CBCA CBCB CBCC CBCD CBCE CBCF DDCBXXCE FDCBXXCE SET 2 CBDO CBD1 CBD2 CBD3 04 CBD5 CBD6 CBD7 DDCBXXD6 FDCBXXD6 SET 3 CBD8 CBD9 CBDA CBDB CBDC CBDD CBDE CBDF DDCBXXDE FDCBXXDE SET 4
36. EISPIELASM 01 02 03 04 05 06 07 08 09 OD OF ASM OPTIONS 2 1 0 5 0 END PASS 1 ERRORS 0000 OPTIONS 2 B L 0 P S 5 END PASS 1 ERRORS 0000 NAME BEISPIELCOM 3000 309F 01 02 7 Programmbeispiel 71 DEVELOPMENT ASM OPTIONS 2 8 S LP 7 Programmbeispiel 55 1 3000 3000 3000 3000 3000 3000 Z X Y 3000 3000 DAS MENU 3000 MUILT X Y 3000 3000 3000 3000 7 7 DEFW 3002 4D554C54 DEFM 3006 01 DEFB 3007 00 NOP 3008 CDO3FO CALL 300B 23 DEFB 300C 0 DEFW 300E 0909 DEFW 3010 00 DEFB 3011 CD5A30 CALL 3014 CDO3FO MUL1 CALL 3017 23 DEFB 3018 202A20 DEFM 301B 00 DEFB 301C EB EX 3010 CD5A30 CALL 3020 EB MUL2 EX 3021 ER PUSH 3022 05 PUSH 3023 3024 01 3025 2611 LD 3027 78 LD 3028 AA XOR 3029 E680 AND 302 5 5 302 78 LD 302D 44 LD 302E 210000 LD 3031 RES 3033 CBBA RES 3035 LM24 RR 3037 10 RR 3039 1E RRA 303A CB19 RR 303C 3001 JR 303E 19 ADD 303F 10 4 NCM2 DJNZ 3041 47 LD 3042 F1 POP 3043 B4 OR 3044 67 LD 72 BEISPIEL FUER PROGRAMMERSTELLUNG MIT DEVELOPMENT MODUL MULTIPLIKATIONSPROGRAMM PARAMETERUEBERGABE BEI AUFRUF UEBER MULT 1 0 003 23H 0 0 0909H 0 0 003 23H 0 DE HL DE HL HL
37. EVELOPMENT 4 Disassembler CDISASS erzeugt also Quellprogramme die mit EDAS weiterbe arbeitet werden Dabei empfiehlt es sich saemtliche Sprung adressen mit Marken zu versehen Werden keine Marken gesetzt muss zum Erhalt der richtigen Sprungweite bei relativen Spruengen eine ORG Anweisung mit der Orginalanfangsadresse des zu disassemblierenden Programms am Anfang des Quelltextes stehen Folgende Parameter sind anzugeben CDISASS aaaa bbbb Bedeutung der Parameter aaaa Anfangsadresse bbbb Endadresse 1 oooo Offset wie DISASS Fuer die Kassettenaufzeichnung sind acht Zeichen zur Benennung des Dateinamens zugelassen Als Dateityp wird ASM vereinbart 4 2 Ausgabe auf den Bildschirm Die Ausgabe auf den Bildschirm erfolgt in Form von Befehls adressen und mnemonik Der Disassembler ist speziell fuer den 85 2 und 85 3 erarbeitet worden Deshalb werden die Besonderheiten des Betriebssystems 5 bei der Rueck uebersetzung einbezogen Beispielsweise fuehrt der Aufruf des Programmverteilers des CAOS Betriebssystems auf Adresse FOO3H zu folgender Ausschrift Beispiel 0100 CALL 0103 003 Unterprogrammnummer 3 Beim Aufruf des Unterprogramms 23H Zeichenkettenausgabe werden die der 23H folgenden Bytes bis einschliesslich des ersten Bytes das erkannt wird als Zeichenkette bzw als Datenbytes ausgegeben Beispiel 0100 CALL 0103
38. Eingabesignal Interruptprogramm das urspruengliche Programm fortzusetzen Die Tastaturabfrage und das Kassetteninterface des KC 85 2 und KC 85 3 arbeiten z B mit Interrupt Die U880 CPU hat zwei getrennte Signaleingaenge zur Ausloesung von Interrupts NMI nichtmaskierbarer Interrupt hoechster Prioritaet INT maskierbarer Interrupt kann in 2 verschiedenen Interrupt Modi betrieben werden 3 2 3 1 Nichtmaskierbarer Interrupt NMI Die NMI Signalzufuehrung kann nicht gesperrt werden Ein NMI Signal fuehrt also jedem Fall zu einer Unterbrechung des laufenden Programms und zu einem erzwungenen Unterprogrammsprung zur Speicheradresse 0066H An dieser Stelle muss die Interruptbehandlungsroutine vom Programmierer eingetragen sein Die Interruptroutine muss am Ende mit einem Ruecksprung ins unterbrochene Programm mit dem Befehl RETN abgeschlossen werden 3 2 3 2 Maskierbarer Interrupt INT Die INT Signalzufuehrung kann mit Hilfe der Befehle EI eingeschaltet enable interrupt und mittels DI ausgeschaltet disable interrupt werden maskieren Ist das Interruptsystem nicht freigegeben DI so werden INT Anforderungen ignoriert Die Steuerung des INT Eingangs der CPU erfolgt ueber zwei Merker IFFl und IFF2 Interruptflipflops Der Befehl EI setzt beide auf 1 und DI beide auf 0 IFF2 dient als Merker der Stellung von 1 bei der NMI Behandlung waehrend der NMI Behandlung bis RETN ist kein INT moeglic
39. Fehlernummer in der ersten Spalte ausgegeben Nach Beendigung des zweiten Assemblerpasses erfolgt die Mitteilung ERRORS nnnn nnnn ist 4 stellige Dezimalzahl mit der Ausgabe der Anzahl der im Quellprogramm enthaltenen Fehler Bei der Programmuebersetzung ist die folgende Vorgehensweise zweckmaessig Zunaechst werden keine Options angegeben 4 1 es wird sofort lt ENTER gt gedrueckt Damit wird das Quellprogramm nur auf syntaktische Fehler getestet und nur die fehlerhaften Zeilen werden am Bildschirm angezeigt Auf Grund der Programmgroesse des Editor Assemblers kann keine umfassende Syntaxpruefung erfolgen d h Fehler Operandenfeld werden nur bedingt erkannt Beim Vorhandensein von Fehlern sind diese mit dem Editor zu beseitigen und anschliessend ist erneut ohne Options zu uebersetzen Hat man schliesslich ein syntaktisch korrektes Quellprogramm ERRORS 0000 wird angezeigt so sollte man die sen Quelltext zunaechst mit SAVE auf Kassette abspeichern Da nach kann die Assemblierung mit der Erzeugung des Maschinencodes erfolgen der mit 0 im Speicher abgelegt oder mit S auf Kassette ausgegeben wird Wenn gewuenscht kann noch eine Druck liste ueber Bildschirm L oder auf den Drucker L P ausgegeben werden Zum Testen des Maschinenprogramms ist EDAS ueber den EXIT Befehl zu verlassen Werden die EDAS Speicherbereiche nicht veraendert so steht nach Aufruf von REEDAS der Programmtext noch zur Verfuegung it dem Assembler ist
40. INI wiederholen solange lt gt 0 x 1 HL C DEC HL DEC x 1 wie IND wiederholen solange lt gt 0 x 1 OUT HL INC HL DEC x 1 wie OUTI wiederholen solange lt gt 0 x 1 OUT HL DEC HL DEC x 1 wie OUTD wiederholen solange lt gt 0 2 100 MUN G gesetzt nicht gesetzt wird bei C NC Uebertrag von Bit 7 Subtraktion Flag PE PO gerader Paritaet Uebertrag von Bit 3 Z NZ Ergebnis 0 M P negatives Ergebnis unveraendert gesetzt zurueck gesetzt entsprechend dem Ergebnis der Operation gesetzt wenn erfuellt zurueckgesetzt wenn nicht erfuellt unbestimmt Overflow Funktion Parity Funktion Inhalt des Interrupt Flip Flops IFF2 83 DEVELOPMENT Anhang B Pseudobefehle des Assemblers ORG Marke DEFB DEFW DEFM Dabei sind n nn 84 Anhang B nn Adresszaehlerzuordnung nn Wertzuweisung fuer Marke n Legt n auf die naechste Speicherstelle nn Legt nn auf die naechsten zwei Speicher stellen dabei zuerst niederwertiger dann hoeherwertiger Teil Text Legt auf die naechsten Speicherstellen die ASCII Werte der Zeichen des Textes 8 Bit Konstante 16 Bit Konstante DEVELOPMENT Anhang C Anhang Uebersicht Editor Assembler Editor MENU Anzeige aller Kommandofunktionen EXIT Verlassen von EDAS und Rueckkehr zur CAOS Systemschleife CLEAR Loeschen des gesamten Textspeichers Markentabelle und Objektprogramm bleiben erhalt
41. MENT Mnemonik wirkungsweise des Befehls 3 Assembler SZHPNC sters IX bzw IY wird gegen den Inhalt der Speicherstelle ausgetauscht die durch den Inhalt des Stackpointers SP adressiert ist Der hoeherwertige Teil des Indexregisters IX bzw IY wird gegen den Inhalt der Speicherstelle aus getauscht die durch den Inhalt des Stackpointers SP plus 1 adressiert ist hoeherwertiger Teil lt gt SP 1 niederwertiger Teil lt gt SP 35 DEVELOPMENT 3 5 4 Blocktransfer und suchbefehle 3 Assembler Mit einem einzigen Befehl koennen beliebig grosse Datenmengen im Speicher verschoben werden bzw es kann in Speicherbereich nach einem Datenbyte gesucht werden wird dabei beendet wenn das Byte gefunden wurde Beispiel Die Befehlsfolge LD LD LD LDIR HL DE 2000H BC 800H einem Die Suche verschiebt einem Teil des CAOS Betriebssystems in den RAM Bereich Mnemonik Wirkungsweise des Befehls SZHPNC LDIR LDD LDDR CPI 36 21 16 16 21 16 16 Transport eines Datenbytes von der Spei cherstelle die durch das Registerpaar HL adressiert wird nach der Speicher stelle die durch das Registerpaar DE adressiert wird Die Register DE und HL werden um 1 erhoeht und das Register BC wird um 1 vermindert BC 0 gt 0 BC lt gt 0 gt 1 Transport mehrerer Datenbytes ab der Speicherstelle die durch das Register
42. Rechner nur wenn ein Signal vom Kassettenrecorder anliegt PRINT Ausdruck des Textspeichers Es koennen folgende Parameter angegeben werden PRINT m n m n in HEX Zahlen DEVELOPMENT 2 Editor m Anzahl der Bildschirmzeilen fuer eine Druckzeile beim Fehlen wird m 1 angenommen Anzahl der Druckzeilen je Seite bei 0 Seitenformatierung Werden weniger als 2 Argumente angegeben so erfolgt die Druckausgabe ueber Bildschirm bei Angabe von 2 Argumenten auf den Drucker User Kanal 1 Beispiele PRINT 10 Ausgabe auf Drucker ohne Seitenformatierung PRINT 2 3C Ausgabe auf Drucker mit Unterbrechung nach jeder Seite 3CH 60 Zeilen Die Zeichenausgabe wird mit BRK abgebrochen und mit STOP angehalten Fortsetzung mit beliebiger Taste Ist kein Aus gabegeraet angeschlossen und PRINT wurde ohne Parameter ein gegeben erfolgt die Ausgabe auf den Bildschirm Soll ein Drucker mit selbsterstellter Ausgaberoutine ange steuert werden so muss vor dem Start von EDAS auf System adresse 0 7 die Adresse der Ausgaberoutine eingetragen werden Die Ausgaberoutine wird dann ueber den CAOS Programm verteiler 0011 angesprungen und bekommt im Akkumulator den Zeichencode eines ASCII Zeichens Die Routine ist mit RET abzuschliessen Register muessen nicht gerettet werden Als Steuercodes sind fuer Line Feed und fuer Carriage Return zu verwenden ASM Der Editor wird verlassen und der Assembler au
43. Verlag GmbH Muenchen 1982 Barthold H Baeurich H Mikroprozessoren Mikroelektronische Schaltkreise und ihre Anwendung Reihe electronica Bde 186 188 oder 202 204 bzw Nachauflagen Berlin Militaeverlag der DDR Systemhandbuch VER Mikroelektronik Wilhelm Pieck Muehlhausen Beschreibung zu M003 V24 VEB Mikroelektronik Wilhelm Pieck Muehlhausen Beschreibung zur Programmkassette 0171 V24 Software VEB Mikroelektronik Wilhelm Pieck Muehlhausen Befehlsbeschreibung U880D VEB Mikroelektronik Karl Marx Erfurt Stammbetrieb 79 DEVELOPMENT Anhang A Befehlscode Tabelle DD H LD L LD HL LD BC LD DE LD nn Li LD IX d LD IY d LD IX d LD A I LD A R LD I A LD R A 40 48 50 58 60 68 77 70 02 12 2 1 1 r 1 1 D IX d DD7EXX LD IY td FD7EXX DD77XX FD77XX D57 DSF D47 D4F EJ EJ PJ DJ BC 01 DE 5 D5 C1 D1 B DD46XX FD46XX DD70XX FD70XX DD36XXXX 5 DE 11 5 ED53XXXX HL 5 El H 0 0 Registeraustauschbefehle EX SP HL EX SP IX EX SP IY 80 E3 DDE3 FDE3 P V F 5 F1 EX DD4EXX FD4EXX DD71XX FD71XX H L D LD HL 21 2 22 DDE5 DDEI DE HL EX AF AF EXX HL 7E 46 4E 56 5
44. X und Y ganze Zahlen von jeweils 2 Byte Laenge die in den Registern DE bzw BC vorgegeben werden Das Produkt Z ist eine ganze Zahl mit Vorzeichen von 4 Byte Laenge und steht in den Registern HL BC Nach dem Aufruf von EDAS und dem Kommando TOP wird das Programm eingegeben Danach wird der Assembler aufgerufen Eventuell vorhandene syntaktische Fehler im Quellprogramm sind mit Hilfe des Editors zu beseitigen Zum Test des Maschinenprogramms ist EDAS mit EXIT zu verlassen Beispiel Berechnung des Produktes 5 51 255 Die Eingabe und Ausgabe der Zahlen erfolgt hexadezimaler Form MULT 8005 33 8005 0033 800000FF Auf den naechsten Seiten ist folgendes dargestellt Anwendung der EDAS Kommandos PRINT FIND SAVE ASM Anwendung der TEMO Kommandos DISPLAY STEP de Einsatz des Disassemblers 68 DEVELOPMENT r PRINT 1 3 7 Programmbeispiel AH BEISPIEL PROGRAMMERSTELLUNG MIT DEVELOPMENT MODUL MULTIPLIKATIONSPROGRAMM Z X DAS MENU MULT X Y K PARAMETERUEBERGABE AUFRUF UEBER kk k kk kk kk kk kk kk kk kk kk kk DEF DEF NOP CA DEI DE DEF DEF CAL MUL1 CAL DEF SC WC Ra D mt DEEM DEF EX CAL MUL2 EX PUS PUS POP W DEFM B Li Li B B
45. aares dd wird x 0 7 zum Inhalt des Registerpaares HL addiert ADD 15 Der Inhalt des Indexregistes IX bzw IY x 0 ADD Iy IY 15 wird mit sich selbst addiert Diese Ver x 0 doppelung ist gleichbedeutend mit einer Linksverschiebung der 16 Bit um eine Position ADD IX pp 15 Der Inhalt von pp wird zum Inhalt des 05 ADD IY pp 15 Indexregisters IX bzw addiert 3 03 ADC DL dd 15 Der Inhalt von dd plus Carry Flag wird 0 zum Inhalt des Registerpaares HL addiert SBC HL dd 15 Der Inhalt von dd plus Carry Flag wird vom Inhalt des Registerpaares HL subtrahiert INC 6 Der Inhalt des Doppelregisters dd wird um 1 erhoeht INC 10 Der Inhalt des Indexregisters IX bzw INC 10 wird um 1 erhoeht C C r C DEC 6 Der Inhalt des Doppelregisters dd wird um 1 vermindert DEC 10 Der Inhalt des Indexregisters IX bzw DEC IY 10 wird um 1 vermindert ln DEVELOPMENT 3 Assembler 3 5 7 Programmverzweigungsbefehle Es ist zwischen unbedingten und bedingten Spruengen zu unterscheiden Es sind weiterhin relative Spruenge moeglich mit denen zu Marken in einer naeheren Umgebung 126 bis 129 Byte um die Befehlsadresse verzweigt werden kann Im Quellprogramm ist dabei zwar die absolute Adresse der Marke anzugeben Befehlscode aber erscheint nur die relative Verschiebung zum momentanen Befehlsz
46. ack geholt und in den Be fehlszaehler PC geladen wird Unterprogrammruecksprung wenn das Z Flag gleich 0 ist Unterprogrammruecksprung wenn das Z Flag gleich 1 ist Unterprogrammruecksprung wenn das C Flag gleich 0 ist Unterprogrammruecksprung wenn das C Flag gleich 1 ist Unterprogrammruecksprung wenn das P V Flag gleich 0 ist Unterprogrammruecksprung wenn das P V Flag gleich 1 ist Unterprogrammruecksprung wenn das S Flag gleich 0 ist Unterprogrammruecksprung wenn das S Flag gleich 1 ist Es erfolgt ein Ruecksprung aus einer terruptbehandlungsroutine die durch ei nen maskierbaren Interrupt ausgeloest wurde Dem peripheren Baustein der den Interrupt ausloeste wird das Ende sei nes Programms mitgeteilt Der Baustein gibt daraufhin die von ihm blockierte Interrupt Kette wieder frei und ermoeg licht damit die Abarbeitung niederwerti ger Interrups Durch die RETI Anweisung wird der mas kierbare Interrupt nicht freigegeben Es sollte deshalb vor jeder RETI Anweisung ein EI Befehl stehen der die Annahme spaeter folgender Interruptanforderungen ermoeglicht 45 DEVELOPMENT Mnemonik 46 wirkungsweise des Befehls 3 Assembler SZHPNC Es erfolgt ein Ruecksprung aus einer In terruptbehandlungsroutine die durch ei nen nichtmaskierbaren Interrupt NMI ausgeloest wurde Die Anweisung wirkt zunaechst wie ein RET Anweis
47. aehlerstand Das Maschinenprogramm wird damit unabhaengig von seiner Lage im Speicher Bei bedingten Spruengen sind Flag Bedingungen als Operanden anzugeben s Abschn 3 3 3 und es werden die entsprechenden Flag Bits getestet In Abhaengigkeit von diesem Test wird der Sprungbefehl entweder ausgefuehrt oder ignoriert Mnemonik Wirkungsweise des Befehls SZHPNC V JP nn 0 Unbedingter Sprung nach Adresse nn in dem der Befehlszaehler PC mit geladen wird JP 0 Sprung nach Adresse nn wenn das Z Flag gleich 0 ist JP Z nn 10 Sprung nach Adresse nn wenn das Z Flag gleich 1 ist JP NC nn 0 Sprung nach Adresse nn wenn das C Flag gleich 0 ist JP 10 Sprung nach Adresse nn wenn das 1 gleich 1 ist JP PO nn O Sprung nach Adresse nn wenn das P V Flag gleich 0 ist JP PE nn O Sprung nach Adresse nn wenn das P V Flag gleich 1 ist JP P nn 0 Sprung nach Adresse nn wenn das S Flag gleich 0 ist JP nn 0 Sprung nach Adresse nn wenn das S Flag gleich 1 ist JR nn 2 Unbedingter relativer Sprung nach Adres senn JR 2 Relativer Sprung nach Adresse nn wenn 7 das Z Flag gleich 0 ist JR Z nn 2 Relativer Sprung nach Adresse nn wenn 7 das Z Flag gleich 1 ist JR NC nn 2 Relativer Sprung nach Adresse nn wenn 7 das C Flag gleich 0 ist 42
48. as Register eingestellt Ziel adresse ist der durch HL adressierte Speicherplatz B kann als Bytezaehler arbeiten B und HL werden um 1 vermindert gt B 1 gt HL 1 gt HL 52 DEVELOPMENT Mnemonik OUTI OTIR OUTD 11 12 16 21 16 16 3 Assembler wirkungsweise des Befehls SZHPNC Die Eingabekanaladresse wird indirekt x1xx1 ueber das Register C eingestellt Ziel adresse ist der durch HL adressierte Speicherplatz kann als Bytezaehler arbeiten B und HL werden um 1 vermindert Es wird eine Blockuebertragung durchge fuehrt bis B 0 ist gt HL 1 HL 1 HL wiederholen bis 0 Die Ausgabekanaladresse wird mittels der Konstanten n eingestellt Quellregister ist der Akkumulator gt n Die Ausgabekanaladresse wird indirekt ueber das Register C eingestellt Quell register ist r Die Ausgabekanaladresse wird indirekt ueber das Register C eingestellt Quell adresse ist der durch HL adressierte Speicherplatz B kann als Bytezaehler arbeiten B wird um 1 vermindert HL um 1 erhoeht HL gt 8 1 gt HL 1 Die Ausgabekanaladresse wird indirekt ueber das Register C eingestellt Quell adresse ist der durch HL adressierte Speicherplatz B kann als Bytezaehler arbeiten B wird um 1 vermindert HL um 1 erhoeht Es wird eine Blockuebertragung durchge fuehrt bis 0
49. as TEMO Menue ueber das Kommando bleibt der Inhalt der USER Register unveraendert Die Initialisierung bezueglich des Disassemblers wird durch das Kommando RETEMO nicht veraendert 5 1 3 Kommandos Im folgenden werden die einzelnen Kommandos des Testmonitors beschrieben MENU Ausschreiben des Testmonitormenues ARITH aaaa bbbb Anzeige der Summe Differenz und des Sprungoffsets zweier Zahlen Parameter aaaa bbbb Hex Zahlen Anzeige nnnn mmmm nnnn Summe mmmm Differenz bbbb aaaa Offset fuer relativen Sprung von aaaa nach bbbb Beispiel ARITH 1008 1011 Anzeige 2019 0009 07 59 DEVELOPMENT 5 Testmonitor BREAK nnnn Vereinbarung eines Unterbrechungspunktes im RAM Parameter nnnn Adresse des Unterbrechungspunktes Beim Start eines Anwenderprogrammes mit GO wird ein Byte FFH entspr Befehl RST 38H auf die angegebene Adresse geschrieben und nach Erreichen der Adresse im Programmlauf wieder auf den urspruenglichen Wert zurueckgesetzt anschliessend wird in den Schrittbetrieb uebergegangen Die Speicherplaetze 38H bis werden fuer einen Sprungbefehl in den Testmonitor benoetigt wird ein mit GO in Echtzeit gestartetes Programm vor Erreichen des Unterbrechungspunktes mit der RESET Taste unterbrochen muss beachtet werden dass auf den Unterbrechungspunkt der RST 38 eingetragen ist und korrigiert werden muss Dazu ist es notwendig mit MODIFY auf der A
50. d um 1 er VO hoeht INC m 11 Der Inhalt des durch HL adressierten Tierkei Speicherplatzes wird um 1 erhoeht 39 DEVELOPMENT Mnemonik DEC r DEC m DEC IX d DEC IY d DAA CPL NEG CCF SCF 40 11 23 23 vermindert zweier gepackter BCD Zahlen den Akkumu latorinhalt so dass im Akkumulator wie der die gepackte BCD Darstellung er reicht wird Bitweises Negieren Komplementieren des Akkumulatorinhalts Subtrahieren des Akkumulatorinhalts von Null Entspricht wertmaessig dem Zweier komplement Komplementieren des Carry Flags Setzen des Carry Flags 3 Assembler wirkungsweise des Befehls SZHPNC V Der Inhalt des durch IX bzw IY plus Verschiebung adressierten Speicher platzes wird um 1 erhoeht Der Inhalt des Registers r wird um 1 ERTL Der Inhalt des durch HL adressierten Speicherplatzes wird um 1 vermindert Der Inhalt des durch IX bzw IY plus Verschiebung adressierten Speicher platzes wird um 1 vermindert Korrigiert nach Addition Subtraktion V1 0 0 01 DEVELOPMENT Arbeiten Doppelregistern 16 Bit Arithmetikbefehle oder IY benutzt aehnlich wie die 8 Bit Arithmetikbefehle 3 Assembler jedoch mit Als Akkumulator wird eines der Register HL IX nemonik T Wirkungsweise des Befehls SZHPNC ADD DL dd 11 Der Inhalt des Registerp
51. dem Hex Dump folgende Adresse mit ihrem Inhalt auf der naechsten Bildschirmzeile angezeigt ittels Cursorbewegung koennen nun beliebige Datenbytes im Hexadezimalteil der Displayanzeige angewaehlt und veraendert werden Die Uebernahme erfolgt in jeder Zeile durch Betaetigung der ENTER Taste Der ASCII Teil wird nicht aktualisiert Alle weiteren Bedingungen entsprechen dem MODIFY Modus Bei Betaetigung einer beliebigen anderen Taste wird die Ausschrift fortgesetzt Beispiel DISPLAY 0 100 Hex ASCII Dump des Bereiches von 0 bis 100H EXIT Rueckkehr in das Betriebssystemgrundmenue Parameter nnnn Adresse entspricht dem Kommando MODIFY des Hauptmenues FILL aaaa bbbb nn Beschreiben Fuellen eines Speicherbereiches Parameter aaaa Anfangsadresse bbbb Endeadresse 1 cc Datenbyte mit dem der angegebene Bereich beschrieben werden soll Beispiel FILL 200 500 FF Beschreiben des Bereiches von Adresse 200H bis 500 mit CHSUM bbbb Berechnung eines Pruefpolynoms z B zum Ueberpruefen von EPROM s oder von zu testenden Programmen im RAM auf Veraenderungen Parameter aaaa Anfangsadresse bbbb Laenge des Bereiches ueber dem das Pruefpolynom errechnet werden soll Beispiel CHSUM 200 Berechnung des Pruefpolynoms ab Adresse 000 in der Laenge 200 Anzeige CE6D 63 DEVELOPMENT 5 Testmonitor WORKRAM aa Verlegen von IX Interrupttabellen
52. dresse B700H die Adressen des BREAK Punktes und des Datenbytes zu ermitteln und das Datenbyte auf der BREAK Punktadresse zu aendern Ein nicht eingegebener BREAK Punkt setzt den Unterbrechungspunkt auf die Adresse 0 beim Start mit GO Beispiel BREAK 109 Vereinbarung eines Unterbrechungspunktes auf Adresse 109H GO nnnn Sprung in ein Anwenderprogramm mit Initialisierung des Unterbrechungspunktes Parameter nnnn Ansprungadresse wird ein Programm mit GO gestartet so muss ein BREAK Punkt auf den Austrittspunkt des zu testenden Programms vorher vereinbart werden wird kein Wert eingegeben so erfolgt der Programnstart ab der Adresse auf welche der USER PC zeigt Das Programm wird im Echtzeitlauf abgearbeitet bis ein Befehl RST 38H erreicht wird Unterbrechungspunkt oder beliebiges Befehls Byte FFH Beispiel GO 100 Start eines Anwenderprogrammes auf Adresse 100H und Eintragen des Unterbrechungspunktes im vorigen Beispiel 109H STEP nnnn Ausfuehren eines Anwenderbefehls mit folgender Anzeige der Register Flags Bytes des Folgebe fehls und ggf der Mnemonik des Folgebefehls bei aktiviertem Disassembler Parameter nnnn Anfangsadresse des Schrittbetriebes Entfaellt nnnn so wird der letzte Wert des USER PC verwendet Wurde vorher mit SBRK ein Haltepunkt vereinbart erfolgt die Unterbrechung erst bei Erreichen des Haltepunktes bzw bei Betaetigung der Taste Nach der Anzeige
53. ee Pat ee ce ee A 22 33 56514 23 3 4 Abarbeitung des 1 24 1 Z Su ann ne we 25 3242 Fehlermitteilungen ar ren seen 27 Se Befehlssatz des 28 SEN E ee er ett na a ma Ce 30 3552 16 1 zn ar FIT 32 3 543 Registeraustauschbefekle sa rn ee 34 3554 Blocektransfer und suchbefehle 2655 36 8 Bit Arithmetik und Logikbefehle 38 35 16 t6 Bit Arithmetikbefehla NN EE 41 Droogrammuerzweigungsbeteble 42 3048 Unterprogrammbefehle nn a ENNEN Nie s 44 3 8538 Rotations und Verschiebebefehle 47 35 1 05 ENEE 50 a deg 51 3 54 12 Ein und Aisgabebefehle ern ne 52 4 Disassemble EE en a 55 4 1 Inhalt und Bedienung ea een Da a 55 4 2 Ausgabe d f den Bildschirm 62 5 56 4 3 Zusaetzliche 0880 1 57 5 58 HE ee 58 N Sa Nee 58 831884 Starten des Ne e E 58 Kommando 080184 AC eg
54. eicherplatz nn geladen Der Inhalt des Akkumulators A Register wird auf den Speicherplatz geladen dessen Adresse im Registerpaar BC steht Der Inhalt des Akkumulators A Register wird auf den Speicherplatz geladen dessen Adresse im Registerpaar DE steht halt des Refresh Registers I wird Akkumulator A Register geladen halt des Akkumulators A Register n das Interruptregister I geladen halt des Akkumulators A Register n das Refresh Register R geladen Der Inhalt des Interruptregisters I wird 0F0 in den Akkumulator A Register geladen 31 DEVELOPMENT 3 Assembler Transportieren 16 Bit Daten intern zwischen den Registern oder zwischen Registern und dem Speicher Der Inhalt des Quellspeichers wird dabei nicht veraendert Spezielle 16 Bit Befehle sind die PUSH und POP Befehle Mit Ihnen werden 16 Bit Daten aus Doppelregistern in den Kellerspeicher gebracht bzw zurueck in die Doppelregister geholt Man verwendet sie haeufig zum Retten von Registerinhalten z B in Unterprogrammen UP PUSH HL PUSH DE PUSH BC Sch Unterprogramm dh Befehle SA POP BC POP DE POP Nach Beendigung des Unterprogramms besitzen die Register DE HL die gleichen Inhalte wie vor dem Aufruf Zu beachten ist dass 16 Bit Daten im Speicher auf 2 Byte mit aufeinanderfolgenden Adressen nn und 1 abgespeichert werden Die unteren 8 Bit niederwertiger Teil stehen auf der Adresse nn und d
55. en SAVE Abspeichern des im Hauptspeicher befindlichen Quelltextes auf Kassette LOAD Einlesen eines mit dem EDAS SAVE Kommando abgespeicherten Quelltextes von Kassette PRINT Ausdruck des Textspeichers ASM Aufruf des Assemblers TOP Cursor auf Textanfang mit Anzeige der 1 Textseite BOTOM Cursor auf die Zeile nach dem Textende mit Anzeige der letzten Textseite EDIT Anzeige der zuletzt bearbeiteten Textseite VERIFY Ueberpruefen eines auf Magnetband gespeicherten Programms auf fehlerfreie Aufzeichnung Tastenfunktionen Tabulator setzen F Wiederholung Textsuche s FIND BRK Ende Editier Modus Rueckkehr ins Menue INS Einfuegen eines Leerzeichens links vom Cursor DEL Loeschen eines Zeichens mit Verdichten der Zeile CLR Loeschen eines Zeichens ohne Verdichten der Zeile HOME Cursor zum linken oberen Bildschirmrand CUU Cursor zum Zeilenanfang der vorherigen Zeile CUD Cursor zum Zeilenanfang der folgenden Zeile CUL Cursor ein Zeichen nach links CUR Cursor ein Zeichen nach rechts ENTER Einfuegen einer Leerzeile nach Cursorzeile SHIFT HOME Loeschen der Cursorseite SHIFT DEL Loeschen der Cursorzeile SHIFT CUL Cursor zum Zeilenanfang SHIFT CUU Eine Seite zurueck blaettern SHIFT CUD Eine Seite vorwaerts blaettern 1 1 Cursor bleibt an der vorherigen Position stehen Fehlermeldungen BRK r SHIFT CUU SHIFT CUD kann die Anzeige gt gt gt NO MEMORY lt lt lt erfolge
56. en fuer die Speicherablage des Maschinenprogramms reservierten Bereich 3000H ohne RAM Modul 6000H bei Verwendung eines 16K RAM Moduls sofern der Gesamtspeicherbereich nicht eingeschraenkt wurde Fuer Ausdruck kann im Operandenfeld eine Marke eine hexadezimale Zahl oder eine Verknuepfung stehen Der EDAS Assembler verarbeitet folgende Pseudoanweisungen ORG Ausdruck Setzt den Adresszaehler auf den Wert des Ausdrucks Ueblicherweise wird damit der Speicherbeginn eines Maschinenprogramms definiert Die Anweisung kann aber auch benutzt werden um im Programm freie Speicherplaetze zu reservieren ORG Ausdruck reserviert die durch den Ausdruck festgelegte Anzahl von Bytes Marke EQU Ausdruck Weist der Marke den Wert des Ausdrucks zu Damit kann im Assemblerprogramm mit symbolischen Bezeichnungen anstelle von Konstanten gearbeitet werden DEFB Ausdruck Definiere Byte legt den durch den Ausdruck festgelegten Byte Wert auf die naechste Speicherstelle Z B DEFB 25 DEFW Ausdruck Definiere Wort legt den durch den Ausdruck festgelegten 2 Byte Wert Wort auf die naechsten beiden Speicherstellen Dabei wird zunaechst das niederwertige Byte und danach das hoeherwertige Byte abgelegt DEFM Text Legt die ASCII Werte der durch Text definierten Zeichenkette im Speicher ab Die Zeichenkette muss in Hochkommas eingeschlossen sein 7 DEFM HALLO legt die Bytefolge 48H 41H ACH ACH den Speicher Alle we
57. es auch moeglich Programmteile die nicht gleichzeitig im Speicher Platz haben zu verbinden zu Linken Dazu kann man wie folgt vorgehen Die Quellprogramme werden nacheinander eingelesen und assembliert wobei die Option mit anzugeben ist Angezeigte arkenfehler 3 sind hierbei zu ignorieren Auf diese Weise wird eine Gesamtmarkentabelle aller zu verbindenden Programme erzeugt Anschliessend werden die Programme erneut geladen unter Verwendung der Options und 2 assembliert und der aschinencode erzeugt 26 DEVELOPMENT 3 Assembler 3 4 2 Fehlermitteilungen Fehlerhafte Quellprogrammzeilen werden beim Assemblieren in der ersten Spalte mit einer Fehlernummer gefolgt von einem versehen und ueber das Ausgabegeraet Bildschirm oder Drucker ausgedruckt Die Fehlernummern haben folgende Bedeutungen 1 Es fehlt ein Semikolon in der Kommentarzeile 2 Marke mehrfach definiert 3 Marke nicht definiert 4 Falsche Mnemonik Befehl unbekannt 5 Falsches Zahlenformat 6 Operandenfehler bei JR IX oder IY ausserhalb des Bereiches 128 127 7 Keine Marke in EQU Anweisung 8 Hochkomma fehlt 9 Operandenfehler bei EX Befehl A Falsche Flag Bedingung zulaessig sind Z NZ C NC PE PO M P B Plus Minus oder Komma im Operanden fehlt Dabei ist zu beachten dass der Fehler 2 nicht in den Programmzeilen angezeigt wird denen die Marke definiert ist im Mar
58. es zwischen Registern oder Speicheradressen und externen Bausteinen ausgetauscht werden Der externe Baustein wird dabei ueber eine sog Portadresse 8 Bit Wert angesprochen Diese Portadresse wird je nach Befehl entweder direkt angegeben als Konstante oder muss im Register zur Verfuegung stehen Aehnlich den Blocktransferbefehlen existieren auch hier Befehle fuer die Daten Ein und Ausgabe ganzer Speicherbereiche Mnemonik T Wirkungsweise des Befehls SZHPNC IN A n 11 Die Eingabekanaladresse wird mittels Konstanten n eingestellt Zielregister ist der Akkumulator n gt A IN r 12 Die Eingabekanaladresse wird indirekt 0 ueber das Register eingestellt Ziel register ist r gt INI 16 Die Eingabekanaladresse wird indirekt 1 ueber das Register eingestellt Ziel adresse ist der durch HL adressierte Speicherplatz B kann als Bytezaehler arbeiten B wird um 1 vermindert HL um 1 erhoeht gt HL B 1 gt 1 HL INIR 21 Die Eingabekanaladresse wird indirekt x1xx1 16 ueber das Register C eingestellt Ziel adresse ist der durch HL adressierte Speicherplatz B kann als Bytezaehler arbeiten B wird um 1 vermindert HL um 1 erhoeht Es wird eine Blockuebertragung durchge fuehrt bis 0 ist gt B 1 HL 1 gt wiederholen bis 0 IND 16 Die Eingabekanaladresse wird indirekt 1 ueber d
59. essierten Spei cherplatzes wird in Register r geladen LD m r 7 Transportiert ein Byte aus Register r auf den durch Registerpaar HL adressier ten Speicherplatz m Fuer m kann HL oder stehen LD IX d r 19 Bringt Daten aus dem Register an den LD IY d r 19 Speicherplatz dessen Adresse durch den Inhalt des IX bzw IY Registers plus Verschiebung d spezifiziert ist LD m n 10 Bewirkt den Transport der Konstanten n an den durch Registerpaar HL adressier ten Speicherplatz m Fuer m kann HL oder m stehen LD IX d n 19 Bewirkt den Transport der Konstanten LD IY d n 19 den Speicherplatz dessen Adresse durch den Inhalt des IX bzw IY Regi ster plus Verschiebung d spezifiziert ist LD A BC 7 Der Inhalt des durch Registerpaar adressierten Speicherplatzes wird in den Akkumulator A Register geladen LD A DE 7 Der Inhalt des durch Registerpaar adressierten Speicherplatzes wird in den Akkumulator A Register geladen LD A nn 113 Der Inhalt des Speicherplatzes nn wird in den Akkumulator A Register geladen 30 DEVELOPMENT Mnemonik LD nn A LD LD DE A 1 LD A R LD DA LD R A Wirkungsweise des Befehls 3 Assembler SZHPNC Der In in den Der In wird i Der In wird i Der Inhalt des Akkumulators A Register wird auf den Sp
60. fgerufen s Abschn 3 FIND Durchsuchen des Quelltextes nach einem Suchwort Nach Aufruf ist ein Suchtext einzugeben Dieser kann maximal 34 Zeichen lang sein Die Texteingabe kann mit BREAK abgebrochen werden Der im Speicher befindliche Quelltext wird nach diesem Suchtext durchmustert Dabei wird zwischen Gross und Kleinbuchstaben unterschieden Begonnen wird in der Zeile nach der aktuellen Cursorposition wird der gesuchte Text gefunden so steht der Cursor anschliessend am Anfang der entsprechenden Zeile sonst nach der letzten Textzeile Der Suchvorgang kann ohne den Suchtext neu eingeben zu muessen im EBEditier Modus mit der Taste F2 wiederholt werden Vor dem Durchsuchen sollte die Cursor position mit TOP auf den Textanfang gestellt werden TOP Cursor auf den Textanfang Anzeige der ersten Textseite BOTOM Cursor auf die Zeile nach dem Textende Anzeige der letzten Textseite 30 Zeilen oder weniger fuer kuerzere Texte EDIT Anzeige der aktuellen Textseite zuletzt bearbeitete Seite VERIFY Ueberpruefung eines auf Magnetband gespeicherten Pro gramms auf fehlerfreie Aufzeichnung siehe Bedienungsanleitung bzw Systembeschreibung DEVELOPMENT 2 Editor 2 2 Editier Modus Im Editier Modus wird jeweils eine zu bearbeitende Textseite angezeigt Auf diese Seite kann beliebig geschrieben und vorhandener Text veraendert werden Die Textseite wird bei Betaetigung der Tasten BREAK SHIFT CUU oder SHIFT CUD in den Texts
61. gelegt und steht dort fuer eine weitere Verarbeitung zur Verfuegung Allgemeine Register Diese koennen als 8 Bit Register B C D E H L oder als 16 Bit Registerpaare BC DE HL benutzt werden Die Register kann man frei als Zwischenspeicher verwenden jedoch beziehen sich bestimmte Befehle auf einzelne Register So dient das HL Registerpaar der indirekten Speicheradressierung Das DE Registerpaar kann mit dem Registeraustauschbefehl ueber HL dem selben Zweck dienen Bei einigen Befehlen werden beide Registerpaare als Adressenspeicher fuer Quell und Zieladressen benutzt z B LDIR Das Register bzw BC wird vorwiegend als Zaehlregister verwendet Befehlszaehler Das 16 Bit Register PG enthaelt den aktuellen Befehlszaehlerstand Beim Einschalten des Rechners wird der Befehlszaehler auf Null gesetzt Bei Sprung und Unterprogrammbefehlen wird er mit einem neuen Wert geladen sonst wird er automatisch jeweils um die Befehlslaenge erhoeht Stackpointer Der Stackpointer SP enthaelt die 16 Bit Adresse der aktuellen Spitze des Kellerspeichers der CPU Der Kellerspeicher arbeitet nach dem Prinzip dass die zuletzt gespeicherten Daten wieder als erste ausgegeben werden last in first out Er dient vorwiegend zur Aufnahme der Rueckkehradressen bei Unterprogramm aufrufen und Interruptroutinen Ausserdem kann er zum Ablegen PUSH und Wiedereinlesen von 16 Bit Daten aus den Registern verwendet werden Durch Set
62. h wird nun ein anstehendes INT Signal erkannt so fuehrt die CPU hardwaremaessig eine DI Operation aus 4 h 1 und IFF2 werden auf 0 gesetzt Sollen weiterhin Interrupts zugelassen werden so ist spaetestens vor Verlassen der Interruptbehandlungsroutine mit RETI der Befehl EI zu programmieren Der maskierbare Interrupt INT kann in 3 Arbeitsweisen betrieben werden die mit den Befehlen IM 0 IM 1 bzw IM 2 eingeschaltet werden Der KC 85 2 und der KC 85 3 arbeiten stets im Interrupt Mode IM 2 Eine Veraenderung wuerde zum Absturz des CAOS Betriebssystems fuehren 16 DEVELOPMENT 3 Assembler Interrupt Mode IM 0 wird ein INT Signal akzeptiert so wird gleichzeitig ein auf dem Datenbus vom Interruptausloeser peripherer Baustein bereitzustellender 1 Byte Befehl eingelesen und anschliessend ausgefuehrt Im Normalfall werden dazu die Restart Befehle RST 0 8 10H 18H 20H 28H 38H verwendet die einen Unterprogrammaufruf zur Speicheradresse n bewirken an der die Interruptbehandlungsroutine beginnen muss Interrupt Mode IM 1 Beim Akzeptieren des INT Signals wird unabhaengig von anderen Eingaengen ein Unterprogrammsprung zur Adresse 0038H durchgefuehrt aehnlich wie NMI Interrupt Mode IM 2 Diese Betriebsart der CPU ist die leistungsfaehigste und gestattet die individuelle Behandlung unterschiedlicher peripherer Bausteine Der KC 85 2 und KC 85 3 arbeiten in diesem Modus Die Interruptbehand
63. icher Anfangsadresse eingeschaltet so sichert die Prioritaetsschal tung dass beim Zugriff des Prozessors nur der Speichermodul aktiviert wird der sich auf der niedrigsten Modulsteckplatz adresse befindet 5011 im weiteren Verlauf der Modul mit der niedrigsten Prioritaet hoechste Modulsteckplatzadresse er reicht werden muessen alle in der Prioritaetskette vorher lie genden Module mit gleicher Anfangsadresse ausgeschaltet sein zur naeheren Erlaeuterung finden Sie im Punkt Adressierung einige Beispiele Hieraus ist zu entnehmen dass erst im Grundgeraet der Steckplatz 08 rechts dann der teckplatz 0 links und anschliessend erst weitere Steckplaetze von Erweiterungsaufsaetzen in vorgesehener Reihenfolge zu belegen sind Kontaktierung ACHTUNG Das Stecken sowie das Entfernen des Moduls aus dem Steckplatz darf nur im ausgeschalteten Zustand des Systems erfolgen Der Modul ist durch folgende Handgriffe zu stecken 1 Den Computer ausschalten 2 Die Kappe des Modulschachtes ist durch leichten Druck mit Daumen und Zeigefinger auf die Griffflaechen abzunehmen 3 Den Modul bis zum fuehlbaren Einrasten einschieben hervorstehender Rand des Moduls liegt unmittelbar an der Geraetewand an Zum Entfernen des Moduls aus dem System sind folgende Schritte notwendig Ty Den Computer ausschalten 2 Den linken und rechten Zeigefinger unter Modulkopf legen und mit dem Daumen die seitlich am Modul befindlichen Hebel g
64. ichnung H enden z B 200H 3FFFH 0 00 21 DEVELOPMENT 3 Assembler Zeichenkettenkonstanten sind in Hochkommas Apostroph einzu schliessen Sie stehen fuer den ASCII Wert gemaess Tabelle in Anhang der jeweiligen Zeichen 2 steht fuer 41H fuer 4 4 Tritt bei der Berechnung der Ausdruecke durch den Assembler ein arithmetischer Ueberlauf auf so wird dieser nicht beruecksichtigt und geht verloren Z 0 000 32768 ergibt 6000H 3 3 4 Kommentare Kommentare dienen zu Dokumentationszwecken und zur Erhoehung der Vebersichtlichkeit der Quellprogramme Sie sind kein funktioneller Bestandteil des Programms und werden beim Assembliervorgang uebersprungen Ein Kommentar darf in jeder Spalte der Programmzeile beginnen und er endet mit dem Zeilenende Das erste Zeichen eines jeden Kommentars muss ein Semikolon sein 22 DEVELOPMENT 3 Assembler 3 3 5 Pseudooperationen Pseudooperationen sind Anweisungen an den Assembler zur Steuerung der Uebersetzung des Quellprogramms Es gibt daher zu Pseudoanweisungen keinen U880 Maschinencode Sie sind aber wie ausfuerbare Anweisungen aufgebaut koennen also mit einer Marke versehen und mit einem Kommentar beendet werden Normalerweise beginnt ein Assemblerprogramm mit einer ORG Pseudoanweisung Sie legt fest auf welche Adresse der Beginn des Maschinenprogramms gelegt wird Wird sie weggelassen 50 legt der EDAS Assembler den Anfang standardmaessig auf d
65. ie oberen 8 Bit hoeherwertiger Teil auf der Adresse nn 1 Alle 16 Bit Woerter auch in Maschinencodes werden vom Prozessor grundsaetzlich auf diese Weise erst niederwertiger dann hoeherwertiger Teil abgespeichert Mnemonik Wirkungsweise des Befehls SZHPNC LD dd nn 10 Die 16 Bit Konstante nn wird das pelregister dd geladen LD 14 Die 16 Bit Konstante nn wird das LD IY nn 14 dexregister IX bzw geladen LD HL nn 116 Inhalt der Speicherplaetze nn und nn l wird in das Doppelregister HL geladen nhalt von nn 1 gt Register H Inhalt von nn gt Register L LD nn 120 Inhalt der Speicherplaetze nn und nn l wird in das Doppelregister pp geladen nhalt von 1 gt hoeherwertiges Reg nhalt von nn niederwertiges Reg LD IX nn 20 Inhalt der Speicherplaetze nn und 1 LD nn 20 wird in das Indexregister IX bzw geladen Inhalt von 1 gt hoeherwert Teil Inhalt von nn niederwert Teil 32 DEVELOPMENT Mnemonik LD nn HL LD nn pp LD an IX LD nn IY LD SP HL LD SP IX LD SP IY PUSH qq PUSH IX PUSH IY POP qq POP IX POP 20 20 20 10 10 11 15 15 10 14 wirkungsweise des Befehls 3 Assembler SZHPNC Inhalt des Doppelregisters HL wird auf die Adressen nn und 41 transportiert Register H gt Inhalt von 1
66. iteren im originalen ZILOG Assembler moeglichen Pseudooperationen auch END fuehren zu einer Fehlermitteilung des Assemblers Innerhalb eines in Hochkommas eingeschlossenen Textes darf statt der Space Taste nicht die CUR Taste verwendet werden da es sonst beim Uebersetzen des Quelltextes zu Fehlern fuehrt 23 DEVELOPMENT 3 Assembler 3 4 Abarbeitung des Assemblers Der EDAS Assembler wird vom EDAS Editor Menue TAN ist Bereitschaftszeichen mit dem Kommando ASM aufgerufen ASM lt ENTER gt Ist dabei kein Quelltext im Speicher vorhanden so wird der Assembler sofort wieder verlassen und es wird in die Editor Kommandoschleife zurueckgekehrt Zum vollstaendigen Assemblieren gehoeren zwei Assemblerlaeufe Paesse die normalerweise hintereinander ablaufen Im ersten Pass wird die Markentabelle erzeugt im zweiten Pass der aschinencode und eine Druckliste Ist im Quelltext keine ORG Anweisung vorhanden wurde das Maschinenprogramm automatisch ab der Adresse 3000H bei 16K RAM bzw 6000H bei 32K RAM mit 16K RAM Modul abgelegt sofern der Gesamtspeicherbereich nicht eingeschraenkt wurde Die Ablage der Markentabelle im Speicher erfolgt von der beim EDAS Aufruf anzugebenden Speicherendadresse rueckwaerts als Stack 24 DEVELOPMENT 3 Assembler 3 4 1 Aufrufbedingungen Der Assembler verlangt nach Aufruf zunaechst die Eingabe von Options zur Steuerung des Uebersetzungsvorgangs Es erscheint die Ausschrift
67. ittabarbeitung Weiterhin beinhaltet der Testmonitor Kommandos zur Verschiebung von Speicherbereichen Kommandos zur Einzelbyte Ein und Ausgabe ueber die anzugebenden Ein Ausgabekanaladressen und weitere allgemein nutzbare Kommandos 5 1 2 Starten des Testmonitors Der Testmonitor wird aus dem erweiterten Grundmenue ueber die Kommandos TEMO n oder RETEMO initialisiert Parameter wird kein Parameter angegeben so wird der Disassembler aktiviert und es erfolgt bei Registeranzeige die Anzeige der Befehlsmnemonik im Menuekopf erscheint die Ausschrift r DISASS 1 ACHTUNG Der Disassembler veraendert den Zweitregistersatz auch fuer Anwenderprogramne wird ein beliebiger Parameter angegeben erfolgt kein Aufruf des Disassemblers im Menuekopf fehlt dann die Ausschrift 15 55 58 DEVELOPMENT 5 Testmonitor Nach dem Start erscheint das Menue des Testmonitors gt gt gt TEMO lt lt lt DISASS MENU ARITH BREAK Go STEP COPY MOVE REG SBKR IN OUT DISPLAY EXIT MODIFY FILL CHSUM WORKRAM Durch den Sprung in das TEMO Menue ueber Kommando TEMO wird der Unterbrechungspunkt und Schrittbetrieb initialisiert Dazu werden die USER Register AF BC DE HL und PC auf Null gesetzt der Anwender Stack auf 160 gelegt bzw unterhalb des Systenstacks der Interruptvektor des fuer den Einzelschrittbetrieb vorbereitet Durch den Sprung in d
68. kenfeld steht sondern in den Zeilen in denen die Marke als Operand auftritt Ausserdem sei darauf hingewiesen dass vom EDAS Assembler keine vollstaendige Analyse aller moeglichen Fehlerquellen durchgefuehrt wird Der EDAS Assembler umfasst nur 2K Byte Speicherplatz Die gaengigsten Fehler werden jedoch identifiziert 27 DEVELOPMENT 3 Assembler 3 5 Befehlssatz des Assemblers In diesem Abschnitt wird der syntaktische Aufbau und die Wirkungsweise der einzelnen Assemblerbefehle beschrieben Der U880 Prozessor verfuegt ueber einen sehr umfangreichen Befehlssatz der nicht nur 8 Bit sondern auch 16 Bit Befehle umfasst Mit der grossen Befehlsliste stehen dem Programmierer meist verschiedene Moeglichkeiten zur Verfuegung ein und dasselbe Problem mehr oder weniger elegant zu loesen Viel haengt dabei von der Uebung und den Erfahrungen des Programm erstellers ab Besonders zu beachten ist dass 2 verschiedene Assemblerbefehle nur fuer spezielle Operanden gelten Die Gueltigkeit des verwendeten Befehls ist also anhand der in diesem Abschnitt angegebenen Uebersicht ueber alle erlaubten Befehle sorgfaeltig zu ueberpruefen Der Befehlssatz laesst sich in folgende Gruppen einteilen Lade und Austauschbefehle Blocktransfer und Blocksuchbefehle Arithmetik und Logikbefehle Programmverzweigungsbefehle Unterprogrammbefehle Rotations und Verschiebebefehle Einzelbitbefehle Steuerbefehle Ein und Au
69. kkumulator Flags A lt gt I B I Allgemeine 2222020 I D I Register UMANA DAGARS I L I H I Tadese e e Giaa Sasa sss register 2554 I Befehlszaehler Stackpointer SP Interruptvekt or Refresh Register I R Abb 3 3 Registerstruktur Die einzelnen Register bestehen aus 16 Bit Speichern die entsprechend der in der Abbildung dargestellten Aufteilung wahlweise als 8 Bit Register oder als 16 Bit Registerpaare benutzt werden koennen Der Zahlenbereich der 8 Bit Register geht von 0 bis 255 bzw 128 bis 127 bei vorzeichenbehafteten Zahlen und der Zahlenbereich der 16 Bit Register von 0 bis 65535 bzw 32768 bis 32767 Nach dem Einschalten des Rechners wird immer der Hauptregistersatz angesprochen Das Umschalten auf die Hintergrundregister geschieht durch 2 Austauschbefehle 5 Abschn 3 5 3 getrennt fuer Akkumulator Flag und Allgemein register Danach beziehen sich alle Befehle bis zum erneuten Umschalten auf die Hintergrundregister 12 DEVELOPMENT 3 Assembler Akkumulator Das 8 Bit Register A dient bei arithmetischen und logischen Befehlen zur Aufnahme eines Operanden Der andere Operand kommt aus einem anderen Register oder aus dem Speicher Das Ergebnis der Operation wird wieder im Akkumulator ab
70. ktion ein Bit geborgt werden muss das Ergebnis negativ wird Darueber hinaus fungiert das Carry Flag als Bit Speicher bei Verschiebe und Rotationsbefehlen Das Zero Flag wird gesetzt wenn das Ergebnis einer Operation den Wert Null ergibt Bei Einzelbitbefehlen dient es zur Uebergabe ausgelesener Bits Die Funktion des P V Flags haengt von der verwendeten Operation ab Bei logischen und Verschiebebefehlen wird die Paritaet des Ergebnisses angezeigt gerade Paritaet P V 1 ungerade Paritaet P V 0 Bei arithmetischen Befehlen wird das P V Flag als Vorzeichen Ueberlaufkennzeichnung benutzt es wird z gesetzt wenn das Ergebnis zweier Vorzeichenzahlen ausserhalb des zulaessigen Bereiches von 128 bis 127 liegt Das Sign Flag zeigt nach Additionen und Subtraktionen das Ergebnis positiv ist S 0 oder negativ S 1 Das Half Carry Flag wirkt wie das Carry Flag jedoch wird der Uebertrag von Bit 3 auf Bit 4 angezeigt it dem Add Subtract Flag wird gekennzeichnet ob als letzter Befehl eine Addition N 0 oder eine Subtraktion N 1 durchgefuehrt wurde Die genaue Reaktion der Flags auf die einzelnen Befehle kann der Befehlsliste Anhang A entnommen werden 25 DEVELOPMENT 3 Assembler Soll der Rechner auf externe Ereignisse reagieren so hat man die Moeglichkeit entweder den betreffenden Eingabekanal staendig abzufragen oder das laufende Programm mittels Interrupt zu unterbrechen und nach Reaktion auf das
71. kumulatorinhalts durch das Carry Flag Der Inhalt des Ak kumulators wird um eine Bitposition nach rechts verschoben Das niederwertigste Bit 0 ersetzt das Carry Flag waehrend das Carry Flag das Bit 7 des Akkumula tors ersetzt 7 gt 0 gt Linksrotation eines Registers oder Speicherbytes analog dem Befehl RLCA 0 0 0 0 0 0 0 0 0P0 0 0 0P0 47 DEVELOPMENT 3 Assembler Mnemonik T Wirkungsweise des Befehls SZHPNC V RRC r 8 Rechtsrotation eines Registers oder 0 RRC m 15 Speicherbytes analog dem Befehl RRCA IX d 123 IY d 123 S OP RL r 8 Linksrotation eines Registers oder RL m 15 Speicherbytes durch das Carry Flag 0 RL 1 4 23 analog dem Befehl RLA RL IY d 23 RR r 8 Rechtsrotation eines Registers oder 0 RR m 15 Speicherbytes durch das Carry Flag 0 RR 1 4 23 analog dem Befehl IY d 23 0 SRA r 8 Rechtsverschiebung eines Registers oder 0 0 SRA m 15 Speicherbytes um ein Bit durch das 0 SRA 23 Carry Flag Der Inhalt des hoechstwerti OPO SRA 23 gen Bit 7 bleibt erhalten 0 gt 7 gt 0 gt 0 SLA r 8 Linksverschiebung eines Registers oder 0 SLA m 15 Speicherbytes um ein Bit durch das 0 5 IX d 23 Carry Flag Das
72. leichzeitig nach unten druecken Dabei rastet der Modul aus und wird etwa einen Zentimeter aus dem Geraet herausgeschoben Nun den Modul aus dem Schacht nehnen 90 DEVELOPMENT Anhang 3 Die Kappe auf die Schachtoeffnung stecken Zuweisung Mit der Anweisung SWITCH mm kk wird der Modul auf den Steckplatz mm zugewiesen kk ist das Steuerbyte Steckplatzadresse mm Die Steckplatzadresse mm ist fuer jeden Steckplatz eines Geraetes in der dazugehoerigen Beschreibung angegeben Im Grundgeraet besitzt der rechte Modulschacht die Adresse 08 und der linke die Adresse 0 Steuerbyte kk Die erste Stelle des Steuerbytes kk legt die Anfangsadresse fuer den Modul fest und die zweite den Betriebszustand Betriebszustaende Fuer die Module unterscheiden wir zwei Betriebszustaende 1 0 Diode leuchtet nicht Der Modul ist vom Prozessor getrennt 2 AKTIV 1 Diode leuchtet Der Modul kann gelesen werden Adressierung Der Speicherbereich des Softwaremoduls Est auf die Anfangsadresse 000 zu legen Da beim KC 85 3 auf dieser Adresse bereits der BASIC Interpreter liegt ist dieser vor der Zuweisung des Moduls INAKTIV zu schalten Dazu wird die zweite Stelle des Steuerbytes 0 gesetzt Der interne BASIC Interpreter besitzt die Steckplatzadresse 02 Somit lautet die Anweisung zum INAKTIV Schalten des BASIC Interpreters SWITCH 02 CO Steckt der Softwaremodul im Schacht 08 so wird dieser entsprechend mit de
73. llungsweise funktioniert nicht mit den Bittest befehlen Da der Hersteller des U 880D diese zusaetzlichen Befehle nicht mit angibt kann dafuer keine Garantie uebernommen werden Der Assembler uebersetzt diese Befehle auch nicht deshalb sollten sie nicht verwendet werden 57 DEVELOPMENT 5 Testmonitor 5 Testmonitor 5 1 Inhalt und Bedienung 5 1 1 Allgemeines Haupeinsatzgebiet des Programmpaketes Testmonitor ist die Unterstuetzung beim Test von Maschinenprogrammen Es dient zur Fehlersuche bzw Programmanalyse mittels Einzelbefehlsabar beitung und Unterbrechungspunktsteuerung mit nachfolgender An zeige der Registerinhalte Fuer die zu testenden Anwenderpro gramme werden eigene USER Register definiert welche nach der Anwenderprogrammabarbeitung im RAM gerettet werden und zur Ab arbeitung den CPU Registersatz geladen werden Die Einzel schrittabarbeitung erfolgt interruptgesteuert Der Kanal 1 des CTC Bausteins des Rechners wird so programmiert dass nach dem Sprung in das Anwenderprogramm auf dem ersten Befehl ein Interrupt ausgeloest wird Anschliessend werden die Register gerettet und angezeigt Die Unterbrechungspunktsteuerung ist auf zwei Arten moeglich 1 Abarbeitung im Echtzeitbetrieb die Unterbrechung wird durch Eintragen eines RST 38 Befehls auf den Unterbrechnungspunkt realisiert 2 die Unterbrechung wird ueber Adressvergleich nach Abarbeitung jedes Befehls realisiert interruptgesteuert wie Einzelschr
74. lung laeuft nach folgendem Schema ab In der CPU wird aus dem Wert des Interruptregisters I und dem vom peripheren Baustein auf dem Datenbus bereitzustellenden Interruptvektor IV eine 16 Bit Adresse gebildet Das Interruptregister I bildet dabei den hoeherwertigen Adressteil und der Interruptvektor IV den niederwertigen Von dieser und der folgenden Speicheradresse wird die eigentliche Startadresse der Interruptbehandlungsroutine ausgelesen und ein Unterprogrammsprung dorthin durchgefuehrt Die Interruptbehandlungsroutine muss mit RETI beendet werden wobei ggf zuvor das Interruptsystem mit EI einzuschalten ist Mit dem Interruptregister I wird also die Lage der Tabelle der Startadressen fuer die Interruptbehandlungsroutinen im Speicher festgelegt Durch den vom peripheren Baustein bereitgestellten Interruptvektor IV der geradzahlig sein muss wird eine der 128 moeglichen Startadressen ausgewaehlt an der die Interruptroutine beginnt Beim KC 85 2 und KC 85 3 hat das Interruptregister nach RESET den Wert 1 d h die Interrupttabelle steht im Speicher von 0100 bis 01 Von diesen Adressen stehen fuer den Anwender im CAOS System aber nur die Werte von 0104 bis 01 zur Verfuegung d h es ist Platz fuer 8 Anwenderinterruptadressen Die Anwenderbausteine muessen die entsprechenden Interrupt vektoren 004 006 oder 0 2 liefern 17 DEVELOPMENT 3 Assembler 3 2 4 Adressierungsarten Der Befehlssatz des
75. monische Ausdruecke einem Operandenfeld und einem Kommentarfeld aufgebaut Beispiel fuer eine Quellprogrammzeile Markenfeld Operationscodefeld Operandenfeld Kommentarfeld START LD A 6 Akku laden Je nach Art der Befehle koennen oder muessen einzelne dieser Felder wegfallen Die einzelnen Felder muessen durch eine beliebige Anzahl von Leerzeichen oder Tabulatoren voneinander getrennt werden Im Quellprogramm wird ausser in Zeichenketten nicht zwischen Gross und Kleinbuchstaben unterschieden 19 DEVELOPMENT 3 Assembler 3 3 1 Marken Marken sind symbolische Bezugspunkte innerhalb des Programms Sie werden verwendet um in einer anderen Anweisung auf den momentanen Befehlszaehlerstand eine Konstante Bezug nehmen zu ersten Spalte der Programmzeile nicht wueberschreiten Das sein Unterstreichungszeichen punkt abgeschlossen werden Ver Registernamen A B C D E AF BC DE HL H 33 M Flagbedingungen s Abschn Z NZ Operationscodes Im Operationscodefeld Maschinenbefehlsmnemoniken oder s dazu Abschn 3 3 3 3 5 bzw als weitere sind Buchstaben zulaessig muessen aber nicht auf eine andere Marke oder auf koennen Eine Marke muss in der beginnen und sollte 6 Zeichen erste Zeichen muss ein Buchstabe Ziffern der Punkt und das Marken koennen mit Doppel boten fuer Marken sind folgende Zeichenketten 5 EAR
76. n keine vollstaendige Textuebernahme moeglich 85 DEVELOPMENT Anhang C Assembler Hinzufuegen einer neuen Markentabelle zu einer vorhandenen Zweiter Pass wird durchgefuehrt Kurzform Brief der Bildschirmausgabe Listenausgabe eines Assemblerprogramms Speichern eines Programms Druck einer Assemblerliste Kassettenausgabe eines Assemblerprogramms Fehlermitteilungen des Assemblers 1 2 3 5 6 7 8 86 Es fehlt ein Semikolon in Kommentarzeile arke mehrfach definiert arke nicht definiert Falsche Mnemonik Befehl unbekannt Falsches Zahlenformat Operandenfehler bei JR IX oder IY ausserhalb des Bereiches 128 127 Keine Marke in EQU Anweisung Hochkomma fehlt Operandenfehler bei EX Befehl Falsche Flagbedingung zulaessig sind Z NZ C NC PE PO M P Plus Minus oder Komma in Operanden fehlt DEVELOPMENT Anhang D Uebersicht Disassembler DISASS aaaa bbbb nn 0000 CDISASS bbbb oooo Anhang D Funktion Aufruf des Disassemblers Ausgabe des erzeugten Quelltextes auf Kassette 87 DEVELOPMENT Anhang E Aanhang E Uebersicht Testmonitor Kommando Funktion TEMO n Start des Testmonitors Kaltstart ohne Parameter zusaetzliche Aktivierung des Disassemblers beliebige Parameter keine Aktivierung des Disassemblers RETEMO Start des Testmonitors Warmstart USER Register bleiben unveraendert MENU Au
77. ndert Der Befehl wirkt wie CPIR nur das Regi ster HL wird vermindert 37 DEVELOPMENT 5 8 Bit Arithmetik und Logikbefehle Diese Register A Befehle 3 Assembler arbeiten mit Daten die sich im Akkumulator als ersten Operanden und mit Daten in anderen Registern oder auf Speicherplaetzen als zweiten Operanden befinden Das Ergebnis dieser Operationen wird im Akkumulator abgelegt nemonik T Wirkungsweise des Befehls SZHPNC ADD A r 4 Der Inhalt von Register wird zum Akku VO mulatorinhalt addiert ADD A m 7 Der Inhalt des durch das Registerpaar HL VO adressierten Speicherplatzes wird zum Inhalt des Akkumulators addiert ADD A n 7 Die Konstante n wird zum Inhalt des Akkumulators addiert ADD A IX d 19 Der Inhalt des durch das Indexregister KARO ADD IY d 19 IX bzw plus Adressverschiebung 4 0 adressierten Speicherplatzes wird zum Inhalt des Akkumulators addiert Das Er gebnis steht im Akkumulator ADC A r 4 Der Inhalt von Register r plus Carry OK Flag wird zum Akkumulatorinhalt addiert ADC A m 7 Der Inhalt des durch das Registerpaar HL VO adressierten Speicherplatzes plus Carry Flag wird zum Inhalt des Akkumulators addiert ADC A n 7 Die Konstante plus Carry Flag wird zum VO Inhalt des Akkumulators addiert ADC A IX d 19 Der Inhalt des durch das Indexregister 0 ADC
78. niederwertige Bit 0 0 SLA IY d 23 wird 0 0 0 lt 1 lt 0 0 SRL r 8 Rechtsverschiebung eines Registers oder 0P0 SRL m 15 Speicherbytes um ein Bit durch das 0 SRL IX d 23 Carry Flag Das hoechstwertige Bit 7 SRL IY d 23 wird 0 0 gt 7 gt 0 lt gt RLD 18 Zyklische Verschiebung nach links zwi 0 0 schen dem Akkumulator und dem Inhalt des durch HL adressierten Speicherplatzes Die unteren 4 Bit des durch HL adres sierten Speicherplatzes werden in die oberen 4 Bitstellen uebertragen und diese ihrerseits in die unteren 4 Bit stellen des Akkumulators Die unteren 4 Bit des Akkumulators werden in die un teren 4 Bitstellen der Speicherstelle transportiert Die oberen 4 Bits des Ak kumulators bleiben unberuehrt 48 DEVELOPMENT Mnemonik 3 Assembler wirkungsweise des Befehls SZHPNC Zyklische Verschiebung nach rechts zwi 0 0 schen dem Akkumulator und dem Inhalt des durch HL adressierten Speicherplatzes Die unteren 4 Bit des durch HL adres sierten Speicherplatzes werden in die unteren 4 Bitstellen des Akkumulators uebertragen und diese in die oberen der durch HL adressierten Speicherstelle Die oberen 4 Bits der durch HL adres sierten Speicherstelle werden in die un teren 4 Bitstellen transportiert Die oberen 4 Bits des Akkumulators bleiben unberuehrt 49 DEVELOPMENT Diese
79. nnn Haltepunktadresse Die Haltepunktadresse zeigt auf das 1 Byte des Befehls Der Haltepunkt kann auch im ROM EPROM Bereich liegen Die Halte punktsteuerung erfolgt ueber Adressvergleich nach jedem abge arbeiteten Befehl vgl STEP Fortsetzung mit Cursor Beispiel SBRK 3155 Vereinbarung eines Haltepunktes auf Adresse 3155H IN aaaa Anzeige eines Datenbytes vom Eingabekanal Parameter aaaa 2 Byte Kanaladresse Bildschirmanzeige nn eingelesenes Datenbyte Beispiel IN 880 Lesen des Strukturbytes des Moduls im rechten Schacht OUT aaaa nn Ausgabe eines Datenbytes zu einem Ausgabekanal Parameter aaaa 2 Byte Kanaladresse nn Datenbyte Beispiel OUT C80 0 Abschalten des Moduls im linken Schacht DISPLAY aaaa bbbb cc Ausgabe HEX ASCII Dump Parameter Anfangsadresse bbbb Endadresse es werden 8 Byte in einer Zeile angezeigt Anzahl der zusammenhaengenden Zeilen wenn kein Wert eingegeben wurde gilt 8 62 DEVELOPMENT 5 Testmonitor Die Ausschrift erfolgt im folgenden Format Adresse 8 1 Byte Hex Zahlen 8 ASCII Zeichen Entsprechend den vorhandenen Zeichenbildtabellen werden im Bereich der ASCII Zeichen die den Hex Codes entsprechen Zeichen dargestellt Nach cc Zeilen erscheint der Cursor und wartet auf eine Eingabe it der BRK Taste kann abgebrochen werden Durch Betaetigung der STOP Taste wird MODIFY Modus uebergegangen Dabei wird die
80. on wird in der Speicherstelle geloescht die durch das Indexregister IX bzw IY plus Verschiebung d adressiert ist 3 Assembler einzelne Bits in Registern oder auf SZHPNC x 1x0 1 0 1 0 DEVELOPMENT 3 Assembler 3 5 11 CPU Steuerbefehle Diese Befehle dienen zur Steuerung des Interruptsystems der CPU Der Interruptmodus ist im 85 2 und 85 3 auf IM 2 eingestellt und sollte nicht veraendert werden Mnemonik T Wirkungsweise des Befehls SZHPNC NOP 4 Die CPU fuehrt keine Operation aus Es werden aber Refresh Zyklen erzeugt HALT 4 Die CPU fuehrt solange eine Folge von NOP Befehlen aus bis ein Interrupt oder der RESET Eingang an der CPU aktiv wird Es werden Refresh Zyklen erzeugt DI 4 Der maskierbare Interrupt wird durch Ruecksetzen der Interrupt Freigabe Flip Flops und IFF2 der CPU gesperrt Nichtmaskierbare Interrupts werden aner kannt EI 4 Der maskierbare Interrupt wird durch Setzen der Interrupt Freigabe Flip Flops 1 und IFF2 der CPU freigegeben waehrend der Ausfuehrung des Befehls akzeptiert die CPU keine Interruptanfor derungen IM 0 8 Der Befehl bringt die CPU in den Interruptmodus 0 IM 1 8 Der Befehl bringt die CPU den Interruptmodus 1 IM 2 8 Der Befehl bringt die CPU den Interruptmodus 2 51 DEVELOPMENT 3 Assembler Mit diesen Befehlen koennen Datenbyt
81. ons Datentransfer sowie Ein Ausgabe Befehle zur Verfuegung Saemtliche Befehle eines abzuarbeitenden Maschinenprogramms stehen in externen Speicherbausteinen dem sog Hauptspeicher des Rechners Die Befehlsablaeufe Befehlszyklen sehen alle im Prinzip gleich aus s Abb 3 2 Taktzyklus Ka KZ 22 N 4 12 74 Ti Maschinenzyklus 2 Befehlszyklus Abb 3 2 Beispiel eines Befehlszyklus Man ersieht aus Abb Die Befehlszykle Anzahl der Masc zwischen 1 und aus mehreren Tak Taktzyklus 156 gegeben Beim KC MHz d h die Abschnitt 3 5 ist anzahl der Taktz Ausfuehrungszeit Programme mit Zei dass folgende Hierarchie besteht n bestehen aus mehreren Maschinenzyklen Die hinenzyklen pro Befehl ist unterschiedlich 6 Jeder Maschinenzyklus besteht seinerseits tzyklen 3 bis 6 Taktzyklen Die Dauer eines durch die Frequenz des Taktgenerators der CPU 85 2 und KC 85 3 betraegt die Taktfrequenz 1 75 Dauer eines Taktzyklus betraegt etwa 571 ns Im fuer die einzelnen Befehle der CPU die Gesamt yklen jeweils angegeben Man kann hieraus die eines Befehls ermitteln was z fuer tschleifen notwendig ist s Abschn 4 3 2 11 DEVELOPMENT 3 Assembler 3 2 1 Registerstruktur Der U880 Prozessor hat die in Abb 3 3 dargestellte Registerstruktur Hauptregister Hintergrundregister A
82. paar HL adressiert wird nach der Spei cherstelle die durch das Registerpaar DE adressiert wird Die Byteanzahl ist im Registerpaar BC enthalten Nach jeder Byteuebertragung wird der Inhalt von HL und von DE um 1 erhoeht und BC um 1 ver mindert Die Uebertragung endet wenn der Inhalt von BC Null ist Der Befehl wirkt wie LDI nur werden die Register DE und HL um 1 vermindert Der Befehl wirkt wie LDIR nur werden die Register DE und HL um 1 vermindert Vergleich des Inhalts des durch HL adressierten Speicherplatzes mit dem In halt des Akkumulators A Register HL gt 7 1 lt gt HL gt 7 0 Anschliessend wird das Register HL um 1 erhoeht und das Registerpaar BC um 1 vermindert Das Registerpaar BC kann als Bytezaehler arbeiten 0 gt 0 lt gt 0 gt 1 000 0 50 000 DEVELOPMENT Mnemonik T CPIR 21 16 CPD 16 CPDR 21 16 wirkungsweise des Befehls 3 Assembler SZHPNC Vergleich des Inhalts des Akkumulators A Register mit dem Inhalt eines adres sierten Speicherbereiches Die Anfangs adresse des Bereiches ist im Register paar HL enthalten Die Laenge des Berei ches im Registerpaar BC Der Vergleich endet wenn A HL oder wenn BC 0 ist Der Befehl ist also ein wiederhol ter Aufruf von CPI mit den Abbruchbedin gungen Z 1 oder 0 Der Befehl wirkt wie CPI nur das Regi ster HL wird vermi
83. peicher wuebernommen Dabei werden Leerzeilen gestrichen wenn nicht mindestens ein Leerzeichen auf dieser Zeile eingegeben wurde Einfuegen vor der ersten Zeile ist nicht moeglich Wird die erste Zeile ueberschrieben kann Quelltext eingefuegt werden Die Sondertasten haben folgende Bedeutungen Fl Tabulator in Leerzeilen automatisch gesetzt wenn kein Text auf der Tabulatorposition steht ansonsten wird der Textauf die naechste Tabulator position verschoben Steht auf der Position jedoch schon Text bleibt dieser erhalten und der zu ver schiebende wird geloescht F2 Wiederholung der Textsuche s FIND BRK Beendigung des Editier Modus und Rueckkehr ins Menue INS Einfuegen eines Leerzeichens links vom Cursor DEL Loeschen eines Zeichens mit Verdichten der Zeile CLR Loeschen eines Zeichens ohne Verdichten der Zeile HOME Cursor zum linken oberen Bildschirmrand CUU Cursor zum Zeilenanfang der vorherigen Zeile bei oberster Zeile nur zum Zeilenanfang CUD Cursor zum Zeilenanfang der folgenden Zeile Am Seitenende wird falls der Text weitergeht der Bildschirm gerollt und die naechste Zeile angezeigt CUL Cursor ein Zeichen nach links bei Zeilenanfang keine Wirkung CUR Cursor ein Zeichen nach rechts bei Zeilenende keine Wirkung CR Einfuegen einer Leerzeile nach Cursorzeile Seitenende wird der Bildschirm gerollt SHIFT DEL Loeschen der Cursorzeile SHIFT HOME Loeschen der aktuellen Tex
84. r mit Editor EDAS fuer die UDOS Sprachversion einen Disassemb ler DISASS einen Testmonitor TEMO sowie zwei Druckertreiberroutinen Der odul belegt den Speicherbereich 000 bis DFFFH und kann ueber das Kommando SWITCH zu und abgeschaltet werden siehe Modulhandhabung Anhang G Beim Einsatz im KC 85 3 muss vor der Arbeit mit dem Development Modul der interne BASIC ROM abgeschaltet werden SWITCH 2 0 da dieser den gleichen Speicherbereich belegt Im Programm EDAS sind der Texteditor mit dem Programme erstellt werden koennen und der Assembler der diese Programme in den abarbeitbaren Zustand uebersetzt enthalten Der Nutzer kann zwischen beiden Programmteilen umschalten ohne dass der Rechner vorhandene Programmtext zerstoert wird bzw nachgeladen werden muss Das Systemhandbuch und die dazugehoerigen Uebersichten sind fuer eine effektive Assemblerprogrammierung unbedingt erforderlich Darin sind unter anderem Hinweise zur Benutzung der Unter programme des CAOS Betriebssystems und zum Einbinden von selbst erstellten Programmen ins Menue des Betriebssystems enthalten Das Programm DISASS dient dem blockweisen Rueckuebersetzen von im Speicher stehenden Maschinenprogrammen in die Assemblermnemo nik Der Testmonitor ist zur Unterstuetzung der Assembler und aschinenprogrammierungen vorgesehen Weiterhin steht ein Unter programm zur Bestimmung der Laenge und Art von Maschinenbefehlen zur Verfuegung Der Disassembler kann in
85. r Anweisung SWITCH 08 1 zugewiesen Modulstrukturbyte Jeder Modul besitzt zur Kennung ein zugeordnetes Strukturbyte Der Software Modul besitzt das Strukturbyte 7 bei EPROM Bestueckung Ueber die SWITCH Anweisung wird das Strukturbyte wie folgt angefordert 91 DEVELOPMENT Anhang SWITCH 08 Eingabe Modulsteckplatzadresse 08 F7 1 Antwort des Computers auf dem Bildschirm en een Betriebszustand AKTIV zuletzt eingegebenes 1 1 1 Anfangsadresse 000 Steuerbyte 1 1 W SSE Strukturbyte I Modulsteckplatzadresse 92 NOTIZEN NOTIZEN NOTIZEN NOTIZEN ais m m mikroelektronik wilheim kombinat
86. rd automatisch durch den Dateityp ASM ergaenzt Waehrend der Namenseingabe und der Kassettenausgabe kann jederzeit mit der BREAK Taste abgebrochen werden LOAD Einlesen eines mit dem EDAS SAVE Kommando abgespeicherten Quelltextes von Kassette Der einzulesende Text wird stets vor die erste Zeile der zuletzt bearbeiteten Textseite eingeschoben Deshalb ist vor LOAD entweder der Textspeicher mit CLEAR zu loeschen oder der Cursor im vorhandenen Quelltext so zu positionieren dass der Text von der Kassette an die richtige Stelle geladen wird Wie beim SAVE Kommando ist ein maximal achtstelliger Name einzugeben der vom Rechner durch den Dateityp ASM ergaenzt wird Name und Typ muessen mit denen des zu ladenden Files uebereinstimmen Anschliessend ist der Recorder zu starten Alle eingelesenen Bloecke werden mit Blocknummer bzw Dateiname bei 1 Block angezeigt Bei Lesefehlern und vor Programmanfang folgt danach ein sonst das Zeichen gt Der wird abgebrochen wenn der Textspeicher vollstaendig belegt ist oder wenn ein EOF Zeichen 03H im Text erkannt wurde Tritt waehrend des Ladevorgangs ein Lesefehler auf erscheint so kann nach Rueckspulen der Kassette erneut versucht werden den fehlerhaften Block zu lesen Gelingt das trotz mehrmaligen Probierens nicht so ist der Ladevorgang mit der BREAK Taste abzubrechen Bei Abbruch ist der bis dahin eingelesene Text verfuegbar Auf die BREAK Taste reagiert der
87. rlappende Speicherbereiche Beispiel MOVE 100 101 8 Verschieben der Inhalte der Speicherplaetze 100 bis 107H auf die Speicherplaetze 101 bis 108H REG a nnnn Belegen eines Anwenderdoppelregisters USER Reg Parameter a Registerpaar nnnn Wert hexadezimal Fuer die Register existieren Speicherplaetze im RAM a Register Adresse 0 2 BC 7 4 2 DE B7F6H 3 HL B7F8H 4 B7FAH 5 SP 7 6 Register direkt Die Flags koennen ueber AF gesetzt werden Beispiel REG 4 100 Setzen des USER Stack auf Adresse 100H 61 DEVELOPMENT 5 Testmonitor Neben dem Kommando REG bietet der Testmonitor noch eine weitere Moeglichkeit die Registerinhalte und die Flagwerte festzulegen was jedoch nicht aus dem TEMO Menue ersichtlich ist Hierzu werden die Registernamen bzw die Flagbezeichnungen als Kleinbuchstaben direkt nach dem Promptzeichen des TEMO Menues eingegeben und der Registerinhalt nach Leerzeichen als Hexazahl angefuegt reg nnn Belegen eines Anwenderregisters bzw Flags Statt ist der Name des Anwenderregisters bzw Flags in Kleinbuchstaben anzugeben Moeglich sind folgende Eingaben fuer Einfachregister a b c d e h l fuer Doppelregister bc de hl pc iy fuer Flags 2 Parameter nnnn Wert des Registers bzw Flaginhaltes hexadezimal Beispiel 1 Setzen des Carry Flags auf 1 SBRK nnnn Vereinbarung eines Haltepunktes Parameter n
88. rmseite stehenden Zeilen Offset Verschiebeparameter it dem Verschiebeparameter Offset kann man die Ladeadresse eines Programms um den angegebenen Wert veraendern Beispiel Programm das den Bereich von 7 00 7EFFH belegt soll disassembliert werden Da aber moeglicherweise kein Speicher erweiterungsmodul verfuegbar ist muss deshalb das Programm auf eine andere Adresse geladen werden Gewaehlt wird z B 2 0 Das Programm wird mit LOAD B000 in den Computer auf die Adresse 2 00 geladen Damit die Adresse des disassemblierten Programms der Anfangsadresse 7 00 entspricht ist der Verschiebeparameter 0000 5000H einzugeben Eingabe DISASS 2 00 2EFF 1 5000 Der 3 Parameter nn ist mit angegeben Das heisst es werden 26 Zeilen mit einmal auf dem Bildschirm angezeigt Wird der Parameter nn nicht angegeben enthaelt eine Bildschirmseite 30 Zeilen Nach dieser Anzahl von Zeilen wartet das Programm bei eingeblendetem Cursor auf eine Tasteneingabe Reaktionen der Tasten BRK Ruecksprung in das CAOS Betriebssystem ENTER Ausgabe der naechsten nn Zeilen SHIFT HOME Loeschen des Bildschirmes und Ausgabe der naechsten nn Zeilen blaettern it dem Menuewort CDISASS wird das erzeugte Quellprogramm auf Kassette ausgegeben Danach kann man mit dem auf Kassette gespeicherten Programm mit EDAS weiterarbeiten Bei der Ausgabe mit CDISASS muss eine Offset Angabe erfolgen 55 D
89. rogramms zu beeinflussen Solche nicht ausfuehrbaren Anweisungen nennt man Pseudobefehle Ein Programm das aus einer Folge von ausfuehrbaren und nicht ausfuehrbaren Anweisungen besteht nennt man Quellprogramm oder Source Programm jeder Zeile dieses Quellprogramms koennen vor dem eigentlichen Befehl und den Operanden dieses Befehls auch eine Marke stehen und nach dem Befehl ggf ein Kommentar zur Erlaeuterung Das gesamte Quellprogramm wird vom Assemblerprogramm die eigentliche Maschinensprache binaerer Form des 0880 Prozessors im folgenden auch CPU central processor unit uebersetzt wobei jedem Assemblerbefehl genau ein Maschinenbefehl entspricht s Abb 3 1 Das auf diese Weise erstellte Maschinenprogramm kann nun auf dem Computer direkt ausgefuehrt werden im Gegensatz z B zu Basic Programmen die den Basic Interpreter benoetigen Es sei darauf hingewiesen dass es mehrere verschiedene Assemblersprachen fuer die 0880 bzw 280 CPU gibt Der hier be schriebene Assembler verarbeitet Quellprogramme in ZILOG Mne monik wie z B die Assembler der Buerocomputer A5120 30 unter den Betriebssystemen 0005 und Quellprogramm gt Computer Maschinenprogramm Abb 3 1 Assembliervorgang 10 DEVELOPMENT 3 Assembler 3 2 Arbeitsweise des Prozessors Mit dem U880 Prozessor stehen dem Programmierer ueber 600 Opera tionscodes fuer arithmetische logische Programmorganisati
90. sgabebefehle Die Ladebefehle tranportieren Daten zwischen den Registern oder zwischen Registern und dem Speicher Registeraustauschbefehle erschliessen dem Programmierer die Hintergrundregister der CPU Blocktransferbefehle transportieren ganze Datenbloecke zwischen verschiedenen Speicherbereichen Mit einem Blocksuchbefehl kann man einen Speicherbereich nach einem Datenbyte durchmustern Die Arithmetik und Logikbefehle arbeiten mit einem Akkumulator A HL IX oder IY als ersten Operanden und einem Register Speicherstelle oder Konstanten als zweiten Das Ergebnis der Operation z B einer Addition steht wieder im Akkumulator und es werden die entsprechenden Flag Bits gesetzt Die Programmverzweigungsbefehle gestatten es Abhaengigkeit von den Flag Bits Spruenge relative oder absolute zu anderen Programmteilen durchzufuehren Im Unterschied zu den Sprungbefehlen bieten die Unterprogrammbefehle die Moeglichkeit nach Abarbeitung des aufgerufenen Programmstuecks wieder das urspruengliche Programm fortzusetzen Die Rotations Verschiebe und Einzelbitbefehle verwendet man um den Inhalt einzelner Bits der Register oder von Speicherstellen abzufragen oder zu veraendern Die Steuerbefehle dienen zur Beeinflussung des Interruptsystems der CPU Mit den Ein und Ausgabebefehlen kann man spezielle Toradressen zur Kommunikation mit externen Bausteinen PIO SIO CTC ansprechen und Daten ein oder ausgeben Der U880 Proze
91. sschreiben des Testmonitormenues ARITH aaaa bbbb Anzeige der Summe Differenz und des Sprung offsets zweier Adressen BREAK nnnn Vereinbarung eines Unterbrechungspunktes im RAM Go nnnn Sprung in ein Anwenderprogramm mit Initialisierung des Unterbrechungspunktes STEP nnnn Einzelbefehlsabarbeitung ab nnnn fehlt nnnn wird der letzte Wert des 05 verwendet COPY aaaa bbbb Kopieren eines Speicherbereiches MOVE aaaa bbbb Verschieben eines Speicherbereiches REG a nnnn Belegen eines Anwenderdoppelregisters reg nnnn Belegen von Registern reg Name des Registers in Kleinbuch staben SBKR nnnn Vereinbarung eines Haltepunktes IN aaaa Anzeige eines Datenbytes vom Eingabekanal OUT aaaa nn Ausgabe eines Datenbytes zum Ausgabekanal DISPLAY aaaa bbbb cc Ausgabe HEX ASCII Dump EXIT Rueckkehr in das Betriebsystemgrundmenue MODIFY nnnn Anzeige und Veraenderung von Speicherzellen FILL aaaa bbbb nn Beschreiben eines Speicherbereiches mit einem Byte CHSUM aaaa bbbb Berechnen eines Pruefpolynoms WORKRAM aa Verlegen von IX Interrupttabellen und Stack 88 DEVELOPMENT Anhang F Anhang F ASCII Code Tabelle KC 85 3 DUMMY CLEAR ESC BREAK BEEP 7 CUL SS CUR CUD CUU CLS HCOPY 5 PAGE SCROL STOP LICK HIET L IST 2 ONT vaxw EY Fi Cy Cy C Keine
92. ssor hat variable Befehlswortlaenge 1 kis 4 Byte Die Byteanzahl und die Kodierung der einzelnen Befehle kann man der Befehlscode Tabelle im Anhang A entnehmen Der Befehlscode erscheint auch im Drucklisting des Assemblers Option L 28 DEVELOPMENT 3 Assembler In den Abschnitten 3 5 1 bis 3 5 12 werden alle Assemblerbefehle und deren Wirkungsweise erlaeutert Dabei werden die folgenden Abkuerzungen verwendet Abkuerzungsverzeichnis ren Einfachregister A B C D E H L Doppelregister BC DE HL SP Doppelregister BC DE HL pp Doppelregister BC DE SP n 8 Bit Konstante nn 16 Bit Konstante Adresse Verschiebung bei Adressierung ueber Indexregister im Bereich 128 lt d lt 127 b Bit das in den Einzelbitbefehlen behandelt werden soll 0 lt b lt 7 m Inhalt des durch HL adressierten Speicherplatzes Fuer m kann sowohl HL als auch M stehen Register beinhaltet dabei die niederwertigen 8 Bits und Register H die hoeherwertigen 8 Bits der Adresse des Speichplatzes p Einer der Werte 00 08 10 18 20 28 30 38 Carry Flag T Anzahl der Taktzyklen des Befehls Bei Befehlen die Flag Bedingungen fuer Programmspruenge auswerten sind 2 Taktzyklen angegeben Dabei bezieht sich die zweite Zahl auf den Fall dass kein Sprung durchgefuehrt und mit dem naechsten im Speicher stehenden Befehl weitergearbeitet wird T 571 Nanosekunden ist
93. tseite SHIFT CUL Cursor zum Zeilenanfang SHIFT CUU Eine Seite 30 Zeilen zurueckblaettern ST SHIFT CUD Eine Seite 30 Zeilen vorwaertsblaettern 4 1 Der Cursor bleibt an der Position stehen Fehlermeldungen Bei SHIFT CUU und SHIFT CUD kann die Anzeige gt gt gt NO MEMORY lt lt lt erscheinen falls die aktuelle Textseite nicht mehr vollstaendig in den Textspeicher uebernommen werden kann Durch Betaetigung einer beliebigen Taste wird der uebernommene Teiltext angezeigt DEVELOPMENT 3 Assembler 3 Assembler 3 1 Allgemeines Der im folgenden beschriebene EDAS Assembler gestattet es dem Anwender Programme in symbolischer Form auf dem Kleincomputer zu schreiben d h durch Eingabe leicht zu merkender Abkuer zungen Dadurch ist es moeglich ohne Kenntnis des eigentlichen binaeren Formats des Maschinenbefehls Maschinenprogramme zu erstellen Darueber hinaus brauchen auch die Werte von Speicher Adressen nicht beruecksichtigt zu werden sondern es genuegt an deren Stelle mit frei waehlbaren symbolischen Namen sog Mar ken oder Labels zu arbeiten die die Speicherstellen kenn zeichnen Als Operanden koennen Namen von Speicherstellen Re gisternamen und Konstanten auftreten Neben den eigentlichen vom Prozessor ausfuehrbaren Anweisungen umfasst die hier beschriebene Assemblersprache auch Anweisungen fuer den Uebersetzungsvorgang die es dem Programmierer erlauben die Arbeitsweise des Uebersetzungsp
94. ul zur Verfuegung stehenden Treiber programme ermoeglichen die Anwendung der Drucker 6311 K6312 K6313 K6314 sowie verschiedener Schreibmaschinentypen Die Programme geben die Daten zeichenweise ueber den USER Kanal 1 aus Soll der USER Kanal 2 genutzt werden koennen die Programme der V24 Software Kassette 0171 genutzt werden Dies gilt auch fuer den Thermodrucker K6303 6 1 2 Uebersicht der Drucker die mit der vorhandenen Software 24 6311 K6311 K6312 56010 1200 Bit s V24K6313 K6313 K6314 56005 56010 9600 Bit s K6311 K6313 Datenuebertragungsrate 1200 Bit s 9600 Bit s Weiterhin unterscheiden sich die Steuersequenzen fuer die Einstellung der Formularlaenge und der Formularendezeile 65 DEVELOPMENT 6 Druckertreiber Routinen 6 2 Grundeinstellung 6 2 1 Treiberroutine V24K6311 Datenuebertragungsart 1200 Bit s 1 Stoppbit keine Paritaet Hardwareprotokoll Formularlaenge 72 Zeilen 12 Zoll Formularendzeile 66 Zeilen Heftrand 10 Zeichen Der Code 09H wird durch 20H ersetzt Zum Empfang der vom Computer gesendeten Daten muss das V24 Interface der Drucker K6311 oder K6313 sowie der Schreibmaschine 56010 auf die oben angegebene Datenuebertragungsart eingestellt werden Die dazu erforderlichen Manipulationen sind den Beschreibungen der Druckgeraete zu entnehmen 6 2 2 Treiberroutine V24K6313 Datenuebertragungsart 9600 Bit s 1 Stoppbit keine Paritaet Hardwareprotokoll Formularlaenge
95. und Stack in anderen RAM Bereich Parameter aa hoeherwertiger Teil der Zieladresse Beispiel WORKRAM 3F Verlegen von IX Interrupttabelle und Stack an das Ende des RAM s auf Adresse Bei Kommandoausfuehrung wird der Bildschirm geloescht das TEMO Menue erscheint und der USER Stack wird neu initialisiert im Beispiel auf Adresse 3F60H 5 2 Besonderheiten Der Testmonitor beinhaltet ein Unterprogramm zum Test von Maschinenbefehlsbytes auf Laenge Gleichzeitig wird getestet ob es sich um einen absoluten oder relativen Sprungbefehl oder einen Unterprogrammaufruf handelt Anfangsadresse D8AFH Eingangsparameter HL Adresse des ersten Befehlsbytes Ausgangsparameter B Befehlslaenge Relativsprung 2 1 absoluter Ruf Sprung veraenderte Register AF HL 64 DEVELOPMENT 6 Druckertreiber Routinen Druckertreiber Routinen 6 1 Inhalt und Bedienung 6 1 1 Allgemeines Die Treiberprogramme 24 6311 und V24K6313 dienen der Ausgabe von Quellprogrammen Assemblerprotokollen und zur Protokollie rung der Arbeitsschritte im Testmonitor Zur Druckerausgabe gehoert der Modul M 003 V24 Hinweise ueber die Handhabung sind dieser Modulbeschreibung zu entnehmen Sind mehrere V24 Module im Geraet gesteckt wird jeweils der V24 odul mit der niedrigsten Schachtnummer vom Programm einge schaltet Ausserdem wird der Kanal Kl am Modul fuer die Drucker ausgabe genutzt Die hier auf dem Softwaremod
96. ung Zu saetzlich wird der Inhalt von IFF2 nach 1 uebertragen so dass die Abarbei tung maskierbarer Interrupts unmittelbar nach Ausfuehrung des RETN Befehls frei gegeben ist falls sie vor der NMI An forderung freigegeben war DEVELOPMENT 3 5 9 Rotations und Verschiebebefehle Durch diese Akkumulator einem Speic verschieben 3 Assembler Befehle wird die Moeglichkeit gegeben im Register A in einem anderen Register oder in Carry Flag abgelegt Mnemonik Wirkungsweise des Befehls herplatz Daten einfach zyklisch bitweise zu Das aus dem Byte herausgeschobene Bit wird dabei im SZHPNC RRCA RLA RRA RLC r RLC m RLC IX d RLC IY d 15 23 23 Linksrotation des Akkumulatorinhalts Der Inhalt des Akkumulators wird um eine Bitposition nach links verschoben Das hoechstwertige Bit 7 wird zum Inhalt des Bit 0 und des Carry Flags lt 7 lt 0 lt Rechtsrotation des Akkumulatorinhalts Der Inhalt des Akkumulators wird um eine Bitposition nach rechts verschoben Das niederwertige Bit 0 wird zum Inhalt des Bits 7 und des Carry Flags gt gt 0 Linksrotation des Akkumulatorinhalts durch das Carry Flag Der Inhalt des Ak kumulators wird um eine Bitposition nach links verschoben Das hoechstwertige Bit 7 ersetzt das Carry Flag waehrend das Carry Flag das Bit 0 des Akkumulators ersetzt lt 7 lt 0 Rechtsrotation des Ak
97. zen des Stackpointers im Initialisierungsprogramm des Rechners wird die Lage des fuer den Kellerspeicher zur Verfuegung stehenden Teils des Operativ speichers RAM Bereich festgelegt Die Groesse ist zunaechst nicht begrenzt Beim Programmerstellen ist aber zu beachten dass fuer das jeweilige Programm ausreichend Kellerspeicher plaetze zur Verfuegung stehen Der Stackpointer wird beim Abspeichern im Keller um 2 Byte verkleinert und beim Einlesen um 2 Byte erhoeht Er zeigt immer auf den zuletzt eingespeicherten Wert Ein Unterprogrammaufruf kellert den Befehlszaehlerstand ein ein Rueckkehrbefehl kellert den PC wieder aus Ausserdem koennen in den Unterprogrammen Daten mit PUSH und POP zwischengespeichert werden Damit nicht versehentlich Befehlszaehler und Daten verwechselt werden ist bei der Verwendung von PUSH und POP groesste Sorgfalt auf ein symmetrisches Ein und Auskellern zu legen Beim 85 2 und 85 3 zeigt der Stackpointer nach dem Einschalten und nach RESET auf die Adresse 0104 13 DEVELOPMENT 3 Assembler Indexregister Die Indexregister IX und werden zur indizierten Adressierung 5 Abschn 3 2 4 verwendet oder koennen als 16 Datenregister verwendet werden Bei der indizierten Adressierung kann auf einen Speicherbereich in einer Umgebung von 128 bis 127 um den im Register gespeicherten Adressenwert direkt zugegriffen werden Das IX Register des 85 2 und 85 3 wird fuer System

Download Pdf Manuals

image

Related Search

Related Contents

CHENBRO  Untitled  gpstdg  フルードパワー部品の電子カタログについて(油圧)*  Installation Instructions and User Guide  Stoves S7-G900C  リクルートHD - Dow AgroSciences  Samsung Galaxy S6 und S6 edge – Die verständliche  Intel DH57JG LGA-1156 mini-ITX DDR3 1333/1066 MHz 8GB  OLS 85 Bedienungsanleitung DE  

Copyright © All rights reserved.
Failed to retrieve file