Home

Beschreibung M027 DEVELOPMENT

image

Contents

1. EE EE NE ES gt ea Vorzeichen Bit M P Sign negativ positiv ME AE EE EN EE ER ET Ena an wenn Paritaets Ueberlauf Bit Parity Overflow 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 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 Kennzeichnung H enden z B 200H 3FFFH OEOOOH Zeichenkettenkonstanten sind in Hochkommas Apostroph einzu schliessen Sie stehen fuer den ASCII Wert gemaess Tabelle in Anhang D der jeweiligen Zeichen z B A steht fuer 41H NO fuer 4E4FH Tritt bei der Berechnung der Ausdruecke durch den Assembler ein arithmetischer Ueberlauf auf so wird dieser nicht beruecksichtigt und geht verloren Z B 0E000H 32768 ergibt 6000H 3 3 4 Kommentare Kommentare dienen zu Dokumentationszwecken und zur Erhoehung der Uebersichtlichkeit 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
2. SP I 0054 0055 BE16 1116 3011 0130 01 IX IY FLAGS OP CODE O1FO 68BF ZHP CD5A30 3011 CALL 0305AH AF BC DE HL SP I 361A 0055 8E16 1116 3014 0130 01 IX IY FLAGS OP CODE O1FO 68BF HN CDO3FO 3014 CALL OFOO3H AF BC DE HL PC SP 0054 0055 8E16 1116 301C 0130 IX IY FLAGS OP CODE O1FO 68BF ZHP EB 301C EX DE HL AF BC DE HL SP 0054 0055 1116 8E16 301D 0130 IX IY FLAGS OP CODE O1FO 68BF ZHP CD5A30 301D CALL 0305AH de 55 bc 8005 STEP 3007 AF BC DE HL PC SP 0054 8005 0055 8E16 3008 0130 IX IY FLAGS OP CODE O1FO 68BF ZHP CDO3FO 3008 CALL OFOO3H AF BC DE HL SP 0054 8005 0055 8E16 3011 0130 IX IY FLAGS OP CODE O1FO 68BF ZHP CD5A30 3011 CALL 0305AH AF BC DE HL PC SP 361A 8005 0055 8E16 3014 0130 IX IY FLAGS OP CODE O1FO 68BF HN CDO3FO 3014 CALL OFOO3H AF BC DE HL PC SP 0054 8005 0055 8E16 301C 0130 IX IY FLAGS OP CODE O1FO 68BF ZHP EB 301C EX DE HL AF BC DE HL PC SP 0054 8005 8E16 0055 301D 0130 IX IY FLAGS OP CODE O1FO 68BF ZHP CD5A30 301D CALL 0305AH AF BC DE HL SP 351A 8005 8E16 0055 3020 0130 IX IY FLAGS OP CODE O1FO 68BF HN EB 3020 EX DE HL AF BC DE HL SP 351A 8005 0055 8E16 3021 0130 IX IY FLAGS OP CODE O1FO 68BF HN E5 3021 PUSH HL AF BC DE HL PC SP 351A 8005 0055 BE16 3022 012E IX IY FLAGS OP CODE O1FO 68BF HN D5 3022 PUSH DE AF BC DE HL SP 01 01 351A IX 01F0 3023 AF 351A IX 01F0 3024 AF 351A 01F0 3025 AF 351A IX 01F0
3. r adressierten Speicherplatzes wird vom Inhalt des Akkumulators subtrahiert Das Ergebnis steht im Akkumulator Der Inhalt von Register plus Carry V1 Flag wird vom Akkumulatorinhalt subtra hiert Der Inhalt des durch das Registerpaar HL V1 adressierten Speicherplatzes plus Carry Flag wird vom Inhalt des Akkumulators subtrahiert Die Konstante n plus Carry Flag wird vom V1 Inhalt des Akkumulators subtrahiert Der Inhalt des durch das Indexregister V1 IX bzw IY plus Adressverschiebung V1 adressierten Speicherplatzes plus Carry Flag wird vom Inhalt des Akkumulators subtrahiert Das Ergebnis steht im Akku mulator Logische UND Verknuepfung eines Regi 1POO sters Speicherbytes oder Konstanten mit 1P00 dem Akkumulator Das spezifizierte Byte 1P00 wird bitweise mit dem Inhalt des Akkumu 1P00 lators konjunktiv verknuepft Das logi 1P00 sche UND ist nur dann 1 wenn beide Bits 1 sind Logische ODER Verknuepfung eines Regi 0 00 sters Speicherbytes oder Konstanten mit 0P00 dem Akkumulator Das spezifizierte Byte 0P00 wird bitweise mit dem Inhalt des Akkumu 0P00 lators disjunktiv verknuepft Das logi 0P00 sche ODER ist nur dann 0 wenn beide Bits 0 sind Exklusiv ODER Verknuepfung eines Regi O0POO sters Speicherbytes oder Konstanten mit 0P00 dem Akkumulator Das spezifizierte Byte 0P00 wird bitweise mit
4. INC 04 OC 14 1C 24 2C 34 3C DD34XX FD34XX 0 DEC 05 OD 15 1D 25 2D 35 3D DD35XX FD35XX V 1 S H P VN C DAA 27 BCD Korrektur im Akku CPL 2F 1 1 Komplementiere Akku ler Komplement SCF 37 0 01 Setze Carry Flag CCF 3F x 0 Komplementiere Carry Flag NEG ED44 1 Komplementiere Akku 2er Komplement 16 Bit Arithmetikbefehle ADD HL ADC HL SBC HL ADD IX ADD IY BC 09 ED4A ED42 DDO9 FDO9 03 OB DE 19 ED5A ED52 DD19 FD19 13 1B HL SP IX IY SZHP VNC 29 39 au OK ED6A ED7A x V O ED62 ED72 xxx V 1 DD39 DD29 eig 0 FD39 FD29 x 0 23 33 DD23 FD23 2B 3B DD2B FD2B az Sprung und Unterprogrammbefehle 2 NZ JP CAXXXX C2XXXX CALL CCXXXX CAXXXX RET c8 JR 28XX co 20 XX unbedingt HL JP C3XXXX CALL CDXXXX C NC PE PO M P DAXXXX D2XXXX EAXXXX E2XXXX FAXXXX F2XXXX DCXXXX DAXXXX ECXXXX EAXXXX FCXXXX FAXXXX D 3 8 8XX IX DO E8 EO F8 FO 30XX IY RST 00 08 10 18 20 28 30 38 C7 CF D7 DF E7 EF F7 FF E9 DDE9 FDE9 zurueck vom nicht maskierbaren Interrupt JR 18XX DJNZ 10XX DEC B JR NZ nn RETI ED4D zurueck vom Interrupt RETN ED45 Rotations und Verschiebebefehle SZHP VNC RLCA 07 0 0 Rotiere RRCA OF 0 0 Rotiere RLA 17 0 0 Rotiere RRA IF 0 0 Rotiere RLD ED6F xx0 P 0 Rot Zif RRD ED67 xx0 P 0 Rot Zif B C D E H L RLC CBOO CBO1 CBO2 CBO3 CBO4 CBO5 RRC CBO8
5. RUN CONT DEL Loeschen Zeichen und verdichten Keine Funktion in der CRT Routine G Modulhandhabung Welcher Steckplatz Der Modul ist 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 gleicher 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 Soll 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 Steckplatz 0C 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 dur
6. register ist r I gt r INI 16 Die Eingabekanaladresse wird indirekt x xx1 ueber das Register eingestellt Ziel adresse ist der durch HL adressierte Speicherplatz kann als Bytezaehler arbeiten B wird um 1 vermindert HL um 1 erhoeht I 1 gt HL B 1 gt B HL 1 gt HL INIR 21 Die Eingabekanaladresse wird indirekt x1xx1 16 ueber das Register eingestellt Ziel adresse ist der durch HL adressierte Speicherplatz kann als Bytezaehler arbeiten B wird um 1 vermindert HL um 1 erhoeht Es wird eine Blockuebertragung durchge fuehrt bis 0 ist I gt HL B 1 gt B HL 1 gt HL Wiederholen bis B 0 I IND 16 Die Eingabekanaladresse wird indirekt x xx1 I HL 1 gt HL 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 C B 1 gt B HL 1 gt HL I INDR 21 Die Eingabekanaladresse wird indirekt I x1xx1 16 ueber das Register C eingestellt Ziel adresse ist der durch HL adressierte Speicherplatz kann als Bytezaehler arbeiten und HL werden um 1 vermindert Es wird eine Blockuebertragung durchge fuehrt bis
7. 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 wird der Unterbrechungspunkt und Schrittbetrieb initialisiert Dazu werden die USER Register AF BC DE HL und PC auf Null gesetzt der Anwender Stack auf 160H gelegt bzw unterhalb des Systemstacks der Interruptvektor des fuer den Einzelschrittbetrieb vorbereitet Durch den Sprung in das TEMO Menue ueber das Kommando RETEMO 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 2 2 2 2 2 2 2 Sprungoffsets zweier Zahlen Parameter aaaa bbbb Hex Zahlen Anzeige nnnn mmmm oo nnnn Summe mmmm Differenz bbbb aaaa Offset fuer relativen Sprung von aaaa nach bbbb Beispiel ARITH 1008 1011 Anzeige 2019 0009 07 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 ursprue
8. 0 ist I C gt HL B 1 gt B HL 1 gt HL wiederholen bis 0 I OUT n A 11 Die Ausgabekanaladresse wird mittels der Konstanten n eingestellt Quellregister ist der Akkumulator IA gt n OUT C r 12 Die Ausgabekanaladresse wird indirekt ueber das Register C eingestellt Quell register ist r Ir gt C OUTI 16 Die Ausgabekanaladresse wird indirekt x xx1 ueber das Register eingestellt Quell adresse ist der durch HL adressierte Speicherplatz kann als Bytezaehler arbeiten B wird um 1 vermindert HL um 1 erhoeht HL gt C B 1 gt B HLH gt HL I OTIR 21 Die Ausgabekanaladresse wird indirekt x1xx1 16 ueber das Register C eingestellt Quell adresse ist der durch HL adressierte Speicherplatz kann als Bytezaehler arbeiten Bwird um 1 vermindert HL um 1 erhoeht Es wird eine Blockuebertragung durchge fuehrt bis 0 ist HL gt C B 1 gt B HLH gt HL wiederholen bis 0 I OUTD 16 Die Ausgabekanaladresse wird indirekt x xx1 I OTDR 21 Die Ausgabekanaladresse wird indirekt x1xx1 16 ueber das Register C eingestellt Quell adresse ist der durch HL adressierte Speicherplatz B kann als
9. 3027 AF 001A IX 01F0 3028 AF 8E8C IX 01F0 3029 AF 8090 IX 01F0 302B AF 8090 IX 01F0 302C EXIT 8005 0055 FLAGS 68 BC DE 0055 0055 IY FLAGS 68BF HN POP DE BC DE 0055 BE16 IY FLAGS 68BF HN LD H 011H BC DE 0055 8E16 IY FLAGS 68BF HN LD A B BC DE 0055 8E16 IY FLAGS 68BF HN XOR D BC DE 0055 8E16 IY FLAGS 68BF SP AND 080H BC DE 0055 8E16 IY FLAGS 68BF SH PUSH AF BC DE 0055 8E16 IY FLAGS 68BF SH LD A B 8E16 3023 OP CODE C1 HL PC BE16 3024 OP CODE D1 HL PC BE16 3025 OP CODE 2611 HL PC 1116 3027 OP CODE 78 HL PC 1116 3028 OP CODE AA HL PC 1116 3029 OP CODE E680 HL PC 1116 302B OP CODE F5 HL PC 1116 302C OP CODE 78 DISASS 3007 30A0 3007 3008 300B 300C 300D 300E 300F 3010 3011 3014 3017 3018 301B 301C NOP CALL DEFB DEFB DEFB DEFB DEFB DEFB CALL CALL DEFB 023H DEFM DEFB 000H EX DE HL 023H OOAH OODH 009H 009H 000H OFOO3H 0305AH OFOO3H 012C SP 012E SP 0130 SP 0130 SP 0130 SP 0130 SP 0130 SP 012E 01 301D 3020 3021 3022 3023 3024 3025 3027 3028 3029 302B 302C 302D 302E 3031 3033 3035 3037 3039 303A 303C 303E 303F 3041 3042 3043 3044 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
10. 307B CALL 0305AH EX DE HL PUSH HL PUSH DE POP BC POP DE LD H 011H LD A B XOR D AND 080H PUSH AF LD A B LD B H LD HL 00000H RES 7 A RES 7 D RR H RR L RRA RR JR NC 0303FH ADD HL DE DJNZ 03035H LD B A POP AF OR H LD H A CALL OFOO3H DEFB 023H DEEM DEFB OOOH CALL 0305AH LD H B LD L C CALL 0305AH CALL OFOO3H DEFB 02CH RET LD A H AND OFOH RRA RRA RRA RRA CP OOAH JR C 03067H ADD 007H ADD 030H CALL OFOO3H DEFB 024H LD A H AND OOFH CP OOAH JR C 03076H ADD 007H ADD 030H CALL OFOO3H DEFB 024H 307C LD A L 307D AND OFOH 307F RRA 3080 RRA 3081 RRA 3082 RRA 3083 CP OOAH 3085 JR C 03089H 3087 ADD 007H 3089 ADD 030H 308B CALL OFOO3H 308E DEFB 024H 308F LD A L 3090 AND OOFH 3092 CP OOAH 3094 JR C 03098H 3096 ADD 007H 3098 ADD 030H 309A CALL OFOO3H 309D DEFB 024H 309E RET 309F NOP 8 Literatur Classen L Programmierung des Mikroprozessorsystems U880 K1520 Reihe Automatisierungstechnik VEB Verlag TEchnik Berlin 1982 Schwarze W Meyer G Eckard D Mikrorechner Wirkungsweise Programmierung Applikation VEB Verlag Technik Berlin 1980 Robotron Systemmdokumentation MOS K1520 SCPX 1526 Anleitung fuer den Programmierer Teil II VEB Robotron Buchungsmaschinenwerk Karl Marx Stadt 1984 Lampe D Jorke G Wengel N Algorithmen der Mikrorechentechni VEB Verlag Technik Berlin 1983 280 Assemblersprache Benutzerhandbuch in deu
11. Bytezaehler arbeiten B und HL werden um 1 vermindert Es wird eine Blockuebertragung durchge fuehrt bis B 0 ist HL gt C B 1 gt B HL 1 gt HL Wiederholen bis 0 4 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 Bildschirmseite stehenden Zeilen oooo Offset Verschiebeparameter Mit dem Verschiebeparameter Offset kann man die Ladeadresse eines Programms um den angegebenen Wert veraendern Beispiel Ein Programm das den Bereich von 7A00H 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 2A00H Das Programm wird mit LOAD BOOO in den Computer auf die Adresse 2A00H geladen Damit die Adresse des disassemblierten Programms der Anfangsadresse 7 00 entspricht ist der Verschiebeparameter 0000 5000H einzugeben Eingabe DIS
12. CBO9 CBOA CBOB CBOC CBOD RL CB10 CB11 CB12 CB13 CB14 CB15 RR CB18 CB19 1 CB1B CB1C CBID SLA CB20 CB21 CB22 CB23 CB24 CB25 SRA CB28 CB29 CB2A CB2B CB2C CB2D SRL CB38 CB39 CB3A CB3B CB3C CB3D SZHP VNC RLC RRC 0 P 0 Rotiere Regis RL RR P 0 Rotiere Regis SLA SRA 0 0 Schiebe Regis SRL 0 0 Schiebe Regis Einzelbitbefehle B C D E H L BIT 0 CB40 CB41 CB42 CB43 CB44 CB45 BIT 1 CB48 CB49 CB4A CB4B CB4C CB4D BIT 2 CB50 CB51 CB52 CB53 CB54 CB55 BIT 3 CB58 CB59 CB5A CB5B CB5C CB5D BIT 4 CB60 CB61 CB62 CB63 CB64 CB65 BIT 5 CB68 CB69 CB6A CB6B CB6C CB6D BIT 6 CB70 CB71 CB72 CB73 CB74 CB75 BIT 7 CB78 CB79 CB7A CB7B CB7C CB7D RES 0 CB80 CB81 CB82 CB83 CB84 CB85 RES 1 CB88 CB89 CB8A CB8B CB8C CB8D RES 2 CB90 CB91 CB92 CB93 CB94 CB95 RES 3 CB98 CB99 CB9A CB9B CB9C CB9D RES 4 CBAO CBAl CBA2 CBA3 CBA4 CBA5 Akk Akk Akk Akk fern fern HL CBO6 CBOE CB16 CB1E CB26 CB2E CB3E ter ter ter ter HL CB46 CB4E CB56 CB5E CB66 CB6E CB76 CB7E CB86 CB8E CB96 CB9E CBA6 u links u rechts u links durch Carry u rechts durch Carry links zw Akku und HL rechts zw Akku und HL A IX d IY d CBO7 DDCBXX06 FDCBXX06 CBOF DDCBXXOE FDCBXXOE CB17 DDCBXX16 FDCBXX16 1 DDCBXX1E FDCBXX1E CB27 DDCBXX26 FDCBXX26 CB2F DDCBXX2E FDCBXX2E CB3F DDCBXX3E FDCBXX3E links rechts links rechts durch Carry links rechts arithm rechts logisch A IX d IY d CB47 DDCBXX46 FDCBXX46 CBAF DDCBXX4E FD
13. ED58 ED60 ED68 OUT C ED79 ED41 ED49 ED51 ED59 ED61 ED69 Oz 1a S ZH P V N IN A n DBXX OUT n A D3XX INI EDA2 x x x 1 IN HL C INC HL DEC B INIR EDB2 x 1x x 1 wie INI wiederholen solange B lt gt 0 IND EDAA x x x 1 IN HL C DEC HL DEC B INDR EDBA x 1x x 1 wie IND wiederholen solange B lt gt 0 OUTI EDA3 x x x 1 OUT C HL INC HL DEC B OTIR EDB3 x 1x x 1 wie OUTI wiederholen solange B lt gt 0 OUTD EDAB x x x 1 OUT C HL DEC HL DEC B OTDR EDBB x 1x x 1 wie OUTD wiederholen solange B lt gt 0 Flag Register Bit 7 6 5 4 3 2 1 0 S Z X XP VN gesetzt nicht gesetzt wird bei C Carry Flag C NC Uebertrag von Bit 7 N Add Subtract Flag Subtraktion P V Parity Overflow Flag PE PO gerader Paritaet H Half Carry Flag Uebertrag von Bit 3 2 Zero Flag Z NZ Ergebnis 0 S Sign Flag M P negatives Ergebnis X nicht verwendet Beeinflussung unveraendert gesetzt zurueckgesetzt entsprechend dem Ergebnis der Operation gesetzt wenn erfuellt zurueckgesetzt wenn nicht erfuellt unbestimmt Overflow Funktion Parity Funktion Inhalt des Interrupt Flip Flops IFF2 Or I mi my B Pseudobefehle des Assemblers Marke ORG nn Adresszaehlerzuordnung EQU nn Wertzuweisung fuer Marke DEFB n Legt n auf die naechste Speicherstelle DEFW nn Legt nn auf die naechsten zwei Speicher stellen dabei zuerst niederwertiger dann hoeherwerti
14. FD6EXX DD70XX DD71XX DD72XX DD73XX DD74XX DD75XX FD70XX FD71XX FD72XX FD73XX FD74XX FD75XX DD36XXXX LD IY d n FD36XXXX SZHP VNC 0 F 0 0 F 0 DE HL SP IX IY 11XXXX 21 31 DD21XXXX FD21XXXX 2AXXXX ED7BXXXX DD2AXXXX FD2AXXXX 22XXXX ED73XXXX DD22XXXX FD22XXXX F9 DDF9 FDF9 HL AF IX IY E5 F5 DDE5 FDES El Fl DDE1 FDEI EX DE HL EB EX AF AF 08 EXX D9 BC BC DE DE HL HL Blocktransfer LDI LDIR LDD LDDR CPI CPIR CPD CPDR EDAO EDBO EDA8 EDB8 EDA1 EDB1 EDA9 EDB9 und I tg e O FO FN OOOOM suchbefehle lt HHHHOOOoOoZz l LD DE HL INC HL INC DE DEC BC wie LDI wiederholen bis BC 0 LD DE HL DEC HL DEC DE DEC BC wie LDD wiederholen bis BC 0 CP A HL INC HL DEC BC wie CPI wiederh b BC 0 od A HL CP A HL DEC HL DEC BC wie CPD wiederh b BC 0 od A HL 8 Bit Arithmetik und Logikbefehle B D E H L 1 n IX d IY d SZHP VNC ADD 80 81 82 83 84 85 86 87 C6XX DD86XX FD86XX 0 ADC 88 89 8A 8B 8 8D BE 8F CEXX DD8EXX FD8EXX V 0 SUB 90 91 92 93 94 95 96 97 D6XX DD96XX FD96XX V 1 SBC 98 99 9A 9B 9C 9D 9E DEXX DD9EXX FDIEXX V 1 AND AO Al A2 A4 A5 A6 A7 E6XX DDA6XX FDA6XX 1 P OO XOR AB A9 AA AB AC AD AE AF EEXX DDAEXX FDAEXX 1 P 00 OR BO Bl B2 BA B5 B6 B7 F6XX DDB6XX FDB6XX 1 P 00 B8 B9 BA BB BC BD BE BF FEXX DDBEXX FDBEXX V 1
15. 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 3 5 10 Einzelbitbefehle Diese Befehle erlauben es einzelne Bits in Registern oder auf Speicherplaetzen zu testen zu setzen oder zu loeschen Wirkungsweise des Befehls SZHPNC Mnemonik T BIT b r 8 BIT b m 112 BIT b IX d 20 BIT SET SET SET SET b IY d 20 8 115 b IX d 23 b IY d 23 Die durch b gekennzeichnete Bitposition x 1x0 wird in dem Register r getestet Das Komplement des zu testenden Bits wird in das Z Flag geladen Die durch b gekennzeichnete Bitposition x 1x0 wird in der Speicherstelle getestet diel durch das Register HL adressiert ist Das Komplement des zu testenden Bits wird in das Z Flag geladen Die durch b gekennzeichnete Bitposition x 1x0 wird in der Speicherstelle getestet die x 1x0 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 gekenn
16. Konstante n 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 zulaes sig ID r IX d 19 Inhalt des durch Register IX bzw IY ID r IY d 19 plus Verschiebung d adressierten Spei cherplatzes wird in Register r geladen I LD m r 7 Transportiert ein Byte aus Register r EE 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 r an den LD IY d r 19 Speicherplatz dessen Adresse durch den Inhalt des IX bzw IY Registers plus Verschiebung d spezifiziert ist LD LD LD LD LD LD LD LD LD LD LD LD LD m n IX d n 19 IY d n 19 A BC A DE A nn nn A BC A DE A Bewirkt den Transport der Konstanten n an den durch Registerpaar HL adressier ten Speicherplatz m Fuer m kann HL oder m stehen Bewirkt den Transport der Konstanten n an den Speicherplatz dessen Adresse durch den Inhalt des IX bzw IY Regi sters plus Verschiebung d spezifiziert ist Der Inhalt des durch Registerpaar BC adressierten Speicherplatzes wird in den Akkumulator A Register geladen Der Inhalt des durch Registerpaar DE adressierten Speicherplatzes wird in
17. P V ss Flag gleich 1 ist P nn 110 Sprung nach Adresse nn wenn das S Flag gleich 0 ist M nn 110 Sprung nach Adresse nn wenn das S Flag gleich 1 ist 112 Unbedingter relativer Sprung nach Adres se nn NZ nn 12 Relativer Sprung nach Adresse nn wenn 7 das Z Flag gleich 0 ist Z nn 12 Relativer Sprung nach Adresse nn wenn 7 das Z Flag gleich 1 ist NC nn 12 Relativer Sprung nach Adresse nn wenn 7 das C Flag gleich 0 ist C nn 12 Relativer Sprung nach Adresse nn wenn 7 das C Flag gleich 1 ist m 4 Unbedingter Sprung zur Adresse die im Doppelregister HL steht 8 Unbedingter Sprung zur Adresse die im IY 8 Indexregister IX bzw IY steht nn 13 Der Inhalt des Registers B wird um 1 8 vermindert Bedingter relativer Sprung zur Adresse nn wenn der Inhalt des Re gisters ungleich 0 ist 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 zurueckg
18. der erzeugte Maschinencode enthalten Danach folgt die Quellprogrammzeile O 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 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 Maschinencodes 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 Maschinencode aus nur einem zusammenhaengenden Speicherbereich bestehen darf es darf nur hoechstens eine ORG Anweisung und zwar am Anfang des Quelltextes stehen Nur unter dieser Vor
19. 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 PV 0 CPD xkkk Der Befehl wirkt wie CPI nur das Regi ster HL wird vermindert I CPDR 21 Der Befehl wirkt wie CPIR nur das Regi 1 16 ster HL wird vermindert 3 5 5 8 Bit Arithmetik und Logikbefehle Diese Befehle arbeiten mit Daten die sich im Akkumulator Register A als ersten Operanden und mit Daten in anderen Registern oder auf Speicherplaetzen als zweiten Operanden befinden Das Ergebnis dieser Operationen wird im Akkumulator abgelegt Mnemonik T Wirkungsweise des Befehls SZHPNC I ADD A r 4 Der Inhalt von Register r wird zum Akku V0 mulatorinhalt addiert ADD A m 7 Der Inhalt des durch das Registerpaar HL VO0 adressierten Speicherplatzes wird zum Inhalt des Akkumulators addiert ADD A n 7 Die Konstante n wird zum Inhalt des VO Akkumulators addiert ADD 19 Der Inhalt des durch das Indexregister VO ADD A IY d 19 IX bzw IY plus Adressverschiebung d VO adressierten Speicherplatzes wird zum Inhalt des Akkumulators addiert Das Er gebnis steht im Akkumulator Der Inhalt von Register r plus Carry VO Flag wird zum Akkumulatorinhalt addiert Der Inhalt des durch das Registerpaar HL
20. 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 KC 85 2 und KC 85 3 zeigt der Stackpointer nach dem Einschalten und nach RESET auf die Adresse 01D4H Indexregister Die Indexregister IX und IY werden zur indizierten Adressierung s Abschn 3 2 4 verwendet oder koennen als 16 Bit 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 KC 85 3 wird fuer System 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 n
21. 06 07 08 09 OA OB OC OD OF ASM OPTIONS 2 B L 0 P S 0 END PASS 1 ERRORS 0000 ASM OPTIONS 2 B L 0 P S S END PASS 1 ERRORS 0000 NAME BEISPIELCOM 3000 309F 01 02 ASM OPTIONS 2 B L P S LP END PASS 1 3000 pkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk 3000 BEISPIEL FUER PROGRAMMERSTELLUNG 3000 MIT DEVELOPMENT MODUL 3000 3000 MULTIPLIKATIONSPROGRAMM 3000 Z X Y 3000 PARAMETERUEBERGABE BEI AUFRUF UEBER 3000 DAS MENU 3000 MULT X Y ENTER 3000 3000 Fa 5 5 5 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 20 3000 3000 3002 3006 3007 3008 300B 300C 300E 3010 3011 3014 3017 3018 301B 301 301D 3020 3021 3022 3023 3024 3025 3027 3028 3029 302B 302C 302D 302E 3031 3033 3035 3037 3039 303A 303C 303E 303F 3041 3042 3043 3044 3045 3048 3049 304C 304D 3050 3051 3052 3055 3058 3059 305A 305B 305D 305E TETE 4D554C54 CD5A30 CDO3FO MUL1 23 202A20 00 EB CD5A30 EB MUL2 E5 D5 C1 D1 2611 78 210000 CBBF CBBA CB1C CB1D IF CB19 3001 19 10F4 47 LM24 NCM2 CD5A30 1C CON DEFW DEFM DEFB NOP CALL DEFB DEFW DEFW DEFB CALL CALL DEFB DEFM DEFB EX CALL EX PUSH PUSH POP POP LD LD XOR PUSH CALL DEFB DEFM DEFB CALL LD LD CALL CALL DEFB LD 7F7FH PROLOG FUER MULT MENU EINTRAG 1 EINSPRUNG TEMO OFOO3H SYSTEMAUFR
22. 10B fuer die Bits 3 5 Diese Kodierung erzeugt einen Schiebebefehl nach links mit dem Setzen des Bits 0 Der Befehl wird mit SLS uebersetzt Zu den 4 Byte Indexregisterbefehlen ist zu bemerken dass das letzte Byte die Registeradresse in den Bits 0 bis 2 enthaelt Wird in diese genannten Bits eine andere Kodierung eingetragen als 110B erfolgt ein Eintrag des Operations ergebnisses in ein entsprechendes Register Im Disassembler protokoll steht dafuer der Zusatz LD reg Beispiel FD CB 03 01 FD CB 04 32 RCL 03H amp LDC SLS IY 04H amp LDC Diese Darstellungsweise 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 5 Testmonitor 5 1 Inhalt und Bedienung 5 1 1 Allgemeines Haupteinsatzgebiet 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 in den CPU Registersatz geladen werden Die Einzel schrittabarbeitung erfolgt interruptgeste
23. 7 Oo Oo een D lt gt D E Register Base Seesesrorscssesss H L H L IX Index Tann register o SeSsSaactt rss srcrestsSsrtss IY Befehlszaehler PC Stackpointer SP Interruptvektor 7727272222277 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 s Abschn 3 5 3 getrennt fuer Akkumulator Flag und Allgemein register Danach beziehen sich alle Befehle bis zum erneuten Umschalten auf die Hintergrundregister 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 abgelegt 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 be
24. ASS 2A00 2EFF 1A 5000 Der 3 Parameter nn ist mit 1AH 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 Mit 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 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 oooo 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 a
25. 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 wird 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 Ladevorgang 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 Probiere
26. 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 A C D E F L I und R Die Namen der Doppelregister und Registerpaare Doppelregister sind die 16 Bit Register IX IY 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 AF BC DE 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 Uebertrags Bit C NC Carry oi ET E TN ME a gy EE EE GER EEN Null Bit 2 NZ Zero AE EE
27. CBXX4E CB57 DDCBXX56 FDCBXX56 CB5F DDCBXX5E FDCBXX5E CB67 DDCBXX66 FDCBXX66 CB6F DDCBXX6E FDCBXX6E CB77 DDCBXX76 FDCBXX76 CB7F DDCBXX7E FDCBXX7E CB87 DDCBXX86 FDCBXX86 CB8F DDCBXX8E FDCBXX8E CB97 DDCBXX96 FDCBXX96 CB9F DDCBXX9E FDCBXX9E CBA7 DDCBXXA6 FDCBXXA6 RES 5 CBA8 CBA9 CBAA CBAB CBAC CBAD CBAE CBAF DDCBXXAE FDCBXXAE RES 6 CBBO CBB1 CBB2 CBB3 CBB4 CBB5 CBB6 CBB7 DDCBXXB6 FDCBXXB6 RES 7 CBB8 CBB9 CBBA CBBB CBBC CBBD CBBE CBBF DDCBXXBE FDCBXXBE SET 0 CBCO CBC1 CBC2 CBC3 CBC4 CBC5 CBC6 CBC7 DDCBXXC6 FDCBXXC6 SET 1 CBC8 CBC9 CBCA CBCB CBCC CBCD CBCE CBCF DDCBXXCE FDCBXXCE SET 2 CBDO CBD1 CBD2 CBD3 CBD4 CBD5 CBD6 CBD7 DDCBXXD6 FDCBXXD6 SET 3 CBD8 CBD9 CBDA CBDB CBDC CBDD CBDE CBDF DDCBXXDE FDCBXXDE SET 4 CBEO CBE1 CBE2 CBE3 CBE4 CBE5 CBE6 CBE7 DDCBXXE6 FDCBXXE6 SET 5 CBE8 CBE9 CBEA CBEB CBEC CBED CBEE CBEF DDCBXXEE FDCBXXEE SET 6 CBFO CBF1 CBF2 CBF3 CBF4 CBF5 CBF6 CBF7 DDCBXXF6 FDCBXXF6 SET 7 CBF8 CBF9 CBFA CBFB CBFC CBFD CBFE CBFF DDCBXXFE FDCBXXFE Flagbeeinflussung SZHP VNC BIT x 1 x 0 Komplement des Bits in Z RES O in Bit SET I in Bit CPU Steuerbefehle NOP 00 Leerbefehl HALT 76 NOP bis RESET oder Interrupt DI F3 Interrupts sperren EI FB Interrupts freigeben IM 0 ED46 Interrupt Modus 0 IM 1 ED56 Interrupt Modus 1 IM 2 ED5E Interrupt Modus 2 Ein und Ausgabebefehle A B C D E H L S ZH P V IN C ED78 ED40 ED48 ED50
28. EN SYSTEMAUFRUF AUSGABE Z X Y PARAMETERUEBERGABE BEI AUFRUF UEBER DAS MENU MULT X Y ENTER ISIS IE E E E E E AE AE IG K AE A AE E EKKA IIIS II IIE DEFW 7F7FH DEFM MULT DEFB 1 NOP CALL OFOO3H DEFB 23H DEFW ODOAH DEFW 0909H DEFB 0 CALL CON MUL1 CALL OFOO3H DEFB 23H DEFM 0 DE HL CALL CON MUL2 EX DE HL PUSH HL PUSH DE POP BC POP DE LD H 11H LD A B XOR D AND 80H PUSH AF LD A B LD B H LD HL O RES 7 A RES 7 D LM24 RR H RR L RRA RR c JR NC NCM2 ADD HL DE NCM2 DJNZ LM24 LD B A POP AF OR H LD H A CALL OFOO3H DEFB 23H MUL4 MUL5 CON CON1 CON2 CON3 CON4 FIND TEXT MUL1 DEFB CALL LD LD CALL CALL DEFB DEFB DEFB DEFB MUL1 CALL DEFB DEFM DEFB 0 CON H B L C CON 0F003H SYSTEMAUFRUF 2CH AUSGABE NEWLINE A H ZIFFERNCONVERT OFOH OAH C CON1 7 30H OFOO3H SYSTEMAUFRUF 24H ZIFFERNAUSGEBE A H OFH OAH C CON2 7 30H OFOO3H SYSTEMAUFRUF 24H ZIFFERNAUSGABE A L OFOH OAH C CON3 7 30H OFOO3H SYSTEMAUFRUF 24H ZIFFERNAUSGABE A L OFH OAH C CONA 7 30H OFOO3H SYSTEMAUFRUF 24H ZIFFERNAUSGABE OFOO3H SYSTEMAUFRUF 23H GAUSGABE Vel 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 BOH VORZEICHEN Z PUSH AF LD A B LD B H LD HL O Z 0 RES 7 A Y Y SAVE NAME BEISPIELASM 01 02 03 04 05
29. Interruptanforderungen ermoeglicht Es erfolgt ein Ruecksprung aus einer In terruptbehandlungsroutine die durch ei nen nichtmaskierbaren Interrupt NMI ausgeloest wurde Die Anweisung wirkt zunaechst wie ein RET Anweisung Zu saetzlich wird der Inhalt IFF2 nach IFF1 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 3 5 9 Rotations und Verschiebebefehle Durch diese Befehle wird die Moeglichkeit gegeben im Akkumulator Register A in einem anderen Register oder in einem Speicherplatz Daten einfach zyklisch bitweise zu verschieben Das aus dem Byte herausgeschobene Bit wird dabei im Carry Flag abgelegt Mnemonik Wirkungsweise des Befehls SZHPNC RRCA Linksrotation des Akkumulatorinhalts Der Inhalt des Akkumulators wird um einel Bitposition nach links verschoben Das hoechstwertige Bit 7 wird zum Inhalt des Bits 0 und des Carry Flags CY lt B7 lt B0 lt Rechtsrotation des Akkumulatorinhalts Der Inhalt des Akkumulators wird um einel Bitposition nach rechts verschoben Das niederwertige Bit 0 wird zum Inhalt des Bits 7 und des Carry Flags gt B7 gt BO gt CY Linksrotation des Akkumulatorinhalts durch das Carry Flag Der Inhalt des Ak kumulators wird um eine Bitposition nach l
30. Kleincomputer KC35 Beschreibung zu M027 DEVELOPMENT veb mikroelektronik gt wilhelm pieck lt m hlhausen im veb kombinat mikroelektronik 1 Einleitung Der Modul M 027 DEVELOPMENT ist ein 8 K Byte Festwertspeicher modul Er enthaelt vier 2 K Byte EPROM s einen 2 Pass Assembler mit Editor EDAS fuer die UDOS Sprachversion einen Disassemb ler DISASS einen Testmonitor TEMO sowie zwei Druckertreiberroutinen Der Modul belegt den Speicherbereich COOOH bis DFFFH und kann ueber das Kommando SWITCH zu und abgeschalten 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 im 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 steh
31. P HL 6 I I I SP IX 110 SP IY 110 qq 111 I I IX 115 IY 115 I I 110 I I I IX 14 IY 14 I Inhalt des Doppelregisters HL wird auf die Adressen nn und 1 transportiert Register H gt Inhalt von 1 Register L gt Inhalt von nn Inhalt des Doppelregisters pp wird auf die Adressen nn und nn 1 transportiert hoeherwertiges Reg gt Inhalt von 1 niederwertiges Reg gt Inhalt von nn Inhalt des Indexregisters IX bzw IY wird auf die Adressen nn und nn 1 trans portiert hoeherwert Teil niederwert Teil gt Inhalt von nn 1 gt Inhalt von nn Inhalt des Doppelregisters HL wird in den Stackpointer Kellerzeiger trans portiert Inhalt des Indexregisters IX bzw 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 IY 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 Inhalt der von Stackpointer SP adres sierten 2 Speicherst
32. Stack F ASCII Code Tabelle KC 85 3 HW 0 1 1 2 3 4 5 6 7 IW 0 DUMMY HOME O P c p 1 CLEAR PAGE 1 Q a q 2 ESC SCROL 2 B R b 3 BREAK STOP 3 C S s 4 CLICK 4 D T d t 5 I 5 E U u 6 SHIFT L amp 6 E V v 7 I 7 G W g wl 8 CUL CEL 8 H X h x 9 CCR I1 9 I Y i A CUD INS 1 J 2 j z B CUU K Ik CLS LIST lt L I I D CR RUN I M Im E CONT gt N iIin F HCOPY DEL te DUMMY Fuellzeichen CLEAR Loeschen Zeichen ESC Loeschen Zeile BREAK Programmende BEEP Signaltonausgabe CUL Cursor nach links CUR Cursor nach rechts CUD Cursor nach unten CUU Cursor nach oben CLS Loeschen Bildschirm CR Cursor an den Anfang der naechsten Zeile ENTER HCOPY Aufruf Sonderprogramm z B Hardcopy HOME Cursor nach links oben PAGE Umschalten PAGE Modus SCROL Umschalten SCROLLING Modus STOP CLICK Ein und Ausschalten des Tastenclicks SHIFT L SHIFT LOCK CEL Cursor auf Zeilenende CCR Cursor auf Zeilenanfang INS Einfuegen Zeichen LIST
33. UF 23H STRINGAUSGABE ODOA CRLF 0909H 0 STRINGENDE CON OFOO3H SYSTEMAUFRUF 23H AUSGABE 1I 0 DE HL CON DE HL HL DE BC DE H 11H COUNTER A B D 80H VORZEICHEN 2 AF A B B H HL O Z 0 7 A X 1 Y 7 D X X H 2 2 2 L C NC NCM2 HL DE 2 2 X LM24 B A lt HLBC gt 2 AF VORZEICHEN H H A OFOO3H SYSTEMAUFRUF 23H AUSGABE 0 CON H B L C CON OFOO3H SYSTEMAUFRUF 2CH AUSGABE NEWLINE A H ZIFFERNCONVERT OFOH 305F IF RRA 3060 1F RRA 3061 FEOA CP OAH 3063 3802 JR C CON1 3065 C607 ADD 7 3067 C630 CON1 ADD 30H 3069 CDO3FO CALL OF003H SYSTEMAUFRUF 306C 24 DEFB 24H ZIFFERNAUSGABE 306D 7C LD A H 306E E60F AND OFH 3070 FEOA CP OAH 3072 3802 JR C CON2 3074 C607 ADD 7 3076 C630 CON2 ADD 30H 3078 CDO3FO CALL OF003H SYSTEMAUFRUF 307B 24 DEFB 24H ZIFFERNAUSGABE 307C 7D LD A L 307D E6FO AND OFOH 307F 1F RRA 3080 1F RRA 3081 1F RRA 3082 1F RRA 3083 FEOA CP OAH 3085 3802 JR C CON3 3087 C607 ADD 7 3089 C630 CON3 ADD 30H 308B CDO3FO CALL OF003H SYSTEMAUFRUF 308E 24 DEFB 24H ZIFFERNAUSGABE 308F 7D LD A L 3090 E60F AND OFH 3092 FEOA CP OAH 3094 3802 JR C CON4 3096 C607 ADD 7 3098 C630 CON4 ADD 30H 309A CDO3FO CALL OF003H SYSTEMAUFRUF 309D 24 DEFB 24H ZIFFERNAUSGABE 309E C9 RET ERRORS 0000 EXIT TEMO STEP 3007 AF BC DE HL SP I 361A 0055 BE16 1116 3008 0130 01 IX IY FLAGS OP CODE O1FO 68BF HN CDO3FO 3008 CALL OFOO3H AF BC DE HL
34. VO adressierten Speicherplatzes plus Carry Flag wird zum Inhalt des Akkumulators addiert Die Konstante n plus Carry Flag wird zuml VO Inhalt des Akkumulators addiert ADC 19 Der Inhalt des durch das Indexregister VO ADC A IY d 19 IX bzw IY plus Adressverschiebung VO adressierten Speicherplatzes plus Carry Flag wird zum Inhalt des Akkumulators addiert Das Ergebnis steht im Akkumula tor Der Inhalt von Register r wird vom Akku V1 mulatorinhalt subrahiert 4 7 7 ADC A n SUB r 4 SUB m 7 Der Inhalt des durch das Registerpaar HL V1 adressierten Speicherplatzes wird vom Inhalt des Akkumulators subtrahiert Die Konstante wird vom Inhalt des V1 Akkumulators subtrahiert I SUB IX d 19 Der Inhalt des durch das Indexregister V1 SUB IY d 19 IX bzw IY plus Adressverschiebung V1 7 SUB n SBC SBC SBC SBC SBC OR OR OR OR OR XOR XOR XOR XOR XOR CP CP CP CP CP INC A n 4 7 7 A IX d 19 A IY d 19 r 4 m 7 n 7 IX d 19 IY d 19 4 7 n 7 IX d 19 IY d 19 4 m 7 n 7 IX d 19 IY d 19 r 4 m 7 n 7 IX d 19 IY d 19 4
35. ach Einschalten oder RESET den Wert 1 s dazu Abschn 3 2 3 Refreshregister Dieses 7 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 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 716151413121 11 10 SI ZI X H X IP VIN cC Hierbei bedeuten Uebertragsbit Carry Flag N Additions Subtraktionsbit Add Subtract Flag P V Paritaets Ueberlaufbit Parity Overflow Flag H Halb Byte Ueberlaufbit Half Carry Flag 2 Nullbit Zero Flag S Vorzeichenbit Sign Flag X nicht verwendet Das Carry Flag wird gesetzt 1 wenn bei der Addition zweier Operanden ein Uebertrag von Bit 7 entsteht sowie wenn bei der Subtraktion 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 ergib
36. anfang der folgenden Zeile ein Zeichen nach links ein Zeichen nach rechts Einfuegen einer Leerzeile nach Cursorzeile Loeschen der Cursorseite Loeschen der Cursorzeile Cursor zum Zeilenanfang Eine Seite zurueckblaettern 1 Eine Seite vorwaertsblaettern 1 1 Cursor bleibt an der vorherigen Position stehen Fehlermeldungen BRK SHIFT CUU SHIFT CUD kann die Anzeige gt gt gt NO MEMORY lt lt lt erfolgen keine vollstaendige Textuebernahme moeglich Assembler Hinzufuegen einer neuen Markentabelle zu einer vorhandenen 2 Zweiter Pass wird durchgefuehrt B Kurzform Brief der Bildschirmausgabe L Listenausgabe eines Assemblerprogramms Speichern eines Programms P Druck einer Assemblerliste S Kassettenausgabe eines Assemblerprogramms Fehlermitteilungen des Assemblers 1 Es fehlt ein Semikolon in 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 Flagbedingung zulaessig sind Z NZ C NC PE PO M P B Plus Minus oder Komma in Operanden fehlt D bersicht Disassembler Kommando DISASS aaaa bbbb nn CDISASS aaaa bbbb oooo Funktion oooo Aufruf des Disassemblers Ausgabe des erzeu
37. aussetzung kann der gespeicherte Maschinencode mit dem LOAD Befehl des Monitors korrekt geladen werden Nachdem die Assembler Options eingegeben wurden die Zeile ist mit SENTER 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 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 d h 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 im 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 zunaech
38. ch 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 1 Den Computer ausschalten 2 Den linken und rechten Zeigefinger unter den Modulkopf legen und mit dem Daumen die seitlich am Modul befindlichen Hebel gleichzeitig nach unten druecken Dabei rastet der Modul aus und wird etwa einen Zentimeter aus dem Geraet herausgeschoben Nun den Modul aus dem Schacht nehmen 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 INAKTIV 0 Diode leuchtet nicht Der Modul ist vom Prozessor getrennt 2 AKTIV 1 Diode leuchtet Der Modul kann gelesen werden Adressi
39. chtnummer 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 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 Mit 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 Mit 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 dem Bildschirm ausgegebene Zeichen auch auf dem Drucker ausgegeben Dies ermoeglicht es z B ein Disassemblerlisting zu drucken oder den Schrittbetrieb fuer den Testmonitor zu protokollieren 7 Programmbeispiel Es wird beschrieben wi
40. d durch Setzen der Interrupt Freigabe Flip Flops IFF1 und IFF2 der CPU freigegeben Waehrend der Ausfuehrung des Befehls akzeptiert die CPU keine Interruptanfor derungen I IM 0 Der Befehl bringt die CPU in den Interruptmodus 0 I IM 1 Der Befehl bringt die CPU in den Interruptmodus 1 I IM 2 Der Befehl bringt die CPU in den Interruptmodus 2 3 5 12 Ein und Ausgabebefehle Mit diesen Befehlen koennen Datenbytes 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 C zur Verfuegung stehen Aehnlich den Blocktransferbefehlen existieren auch hier Befehle fuer die Daten Ein und Ausgabe ganzer Speicherbereiche Mnemonik T Wirkungsweise des Befehls SZHPNC Die Eingabekanaladresse wird mittels der Konstanten n eingestellt Zielregister ist der Akkumulator ueber das Register eingestellt Ziel adresse ist der durch HL adressierte Speicherplatz B kann als Bytezaehler arbeiten B und HL werden um 1 vermindert C gt HL B 1 gt I 111 I I gt A IN r C 12 Die Eingabekanaladresse wird indirekt 0PO ueber das Register eingestellt Ziel
41. dem Inhalt des Akkumu 0P00 lators exklusiv verknuepft Das Exklu 0P00 siv ODER ist dann 1 wenn ein Bit 1 und das andere Bit 0 ist Der Inhalt eines Registers eines Spei V1 cherbytes oder eine Konstante wird mit V1 dem Akkumulator verglichen Der ur V1 spruengliche Inhalt des Akkumulators V1 bleibt dabei erhalten Das Vergleichs V1 ergebnis ist durch die Flags Stellungen erkennbar Der Inhalt des Registers r wird um 1 er VO hoeht INC m 11 Der Inhalt des durch HL adressierten Speicherplatzes wird um 1 erhoeht I INC IX d 23 Der Inhalt des durch IX bzw IY plus VO INC IY d 23 Verschiebung adressierten Speicher VO platzes wird um 1 erhoeht Speicherplatzes wird um 1 vermindert DEC IX d 23 Der Inhalt des durch IX bzw IY plus VI DEC IY d 23 Verschiebung adressierten Speicher V1 platzes wird um 1 vermindert DEC r 4 Der Inhalt des Registers r wird um 1 V1 vermindert I DEC m 11 Der Inhalt des durch HL adressierten V1 I DAA 4 Korrigiert nach Addition Subtraktion P zweier gepackter BCD Zahlen den Akkumu latorinhalt so dass im Akkumulator wie der die gepackte BCD Darstellung er reicht wird CPL 4 Bitweises Negieren Komplementieren des 1 1 Akkumulatorinhalts I 8 Subtrahier
42. den Akkumulator A Register geladen Der Inhalt des Speicherplatzes nn wird in den Akkumulator A Register geladen Der Inhalt des Akkumulators A Register wird auf den Speicherplatz 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 Der Inhalt des Interruptregisters I wird 0FO in den Akkumulator A Register geladen Der Inhalt des Refresh Registers I wird in den Akkumulator A Register geladen Der Inhalt des Akkumulators A Register wird in das Interruptregister I geladen Der Inhalt des Akkumulators A Register wird in das Refresh Register R geladen OFO 3 5 2 16 Bit Ladebefehle 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 Unterprogramm Befehle ie POP BC POP DE POP HL RET Nach Beendigung des Unterprogramms besitzen die Register BC DE HL die gleichen Inhalte wie vor dem Auf
43. derungen Parameter aaaa Anfangsadresse bbbb Laenge des Bereiches ueber dem das Pruefpolynom errechnet werden soll Beispiel CHSUM 200 Berechnung des Pruefpolynoms ab Adresse COOOH in der Laenge 200H Anzeige CE6D WORKRAM aa Verlegen von IX Interrupttabellen 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 3FOOH 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 CY Relativsprung Z 1 absoluter Ruf Sprung veraenderte Register AF HL 6 Druckertreiber Routinen 6 1 Inhalt und Bedienung 6 1 1 Allgemeines Die Treiberprogramme V24K6311 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 mehre
44. des Indexregisters IX bzw ass DEC TY 110 IY wird um 1 vermindert 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 im Befehlscode aber erscheint nur die relative Verschiebung zum momentanen Befehlszaehlerstand 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 T Wirkungsweise des Befehls SZHPNC I JP nn 110 Unbedingter Sprung nach Adresse nn in dem der Befehlzzaehler PC mit nn geladen wird JP NZ nn 10 Sprung nach Adresse nn wenn das Z Flag gleich 0 ist JP Z nn 110 Sprung nach Adresse nn wenn das Z Flag gleich 1 ist JP NC nn 10 Sprung nach Adresse nn wenn das C Flag gleich 0 ist JP C nn 110 Sprung nach Adresse nn wenn das C Flag gleich 1 ist PO nn 10 Sprung nach Adresse nn wenn das P V Flag gleich 0 ist PE nn 10 Sprung nach Adresse nn wenn das
45. e 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 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 in hexadezimaler Form SMULT 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 PRINT 1 3C Fa 5 5 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 RR MIT DEVELOPMENT MODUL MULTIPLIKATIONSPROGRAMM Tel DEFM BEISPIEL FUER PROGRAMMERSTELLUNG 3 3 3 PROLOG TEMO MENU EINTRAG EPILOG EINSPRUNG TEMO SYSTEMAUFRUF STRINGAUSGABE CRLF STRINGENDE SYSTEMAUFRUF GAUSGABE COUNTER VORZEICHEN Z 2 0 7X X 2 2 2 Z 2 X lt HLBC gt 2 VORZEICH
46. eit 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 Ausgabebefehle 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 Operanden Das Ergebnis der Operation z B einer Addition steht wieder im Akkumulator und es werden die entsprechenden Flag Bits gesetzt Die Programmverzweigungsbefehle gestatten es in 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 urspru
47. eladen und das Programm wird an der alten Stelle fortgesetzt Mnemonik T Wirkungsweise des Befehls SZHPNC I CALL nn 117 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 Befehlzzaehler PC mit nn geladen wird I CALL NZ nn 17 Unterprogrammaufruf zur Adresse nn wenn 10 das Z Flag gleich 0 ist I CALL Z nn 17 Unterprogrammaufruf zur Adresse nn wenn 10 das Z Flag gleich 1 ist I CALL NC nn 17 Unterprogrammaufruf zur Adresse nn wenn 10 das C Flag gleich 0 ist I CALL C nn 17 Unterprogrammaufruf zur Adresse nn wenn 10 das C Flag gleich 1 ist I CALL PO nn 17 Unterprogrammaufruf zur Adresse nn wenn 10 das P V Flag gleich 0 ist I CALL PE nn 17 Unterprogrammaufruf zur Adresse nn wenn 10 das P V Flag gleich 1 ist I CALL P nn 17 Unterprogrammaufruf zur Adresse nn wenn 10 das S Flag gleich 0 ist CALL M nn 17 Unterprogrammaufruf zur Adresse nn wenn 10 das S Flag gleich 1 ist I RST P 11 Der RST Befehl ist ein spezieller Unter programmaufruf Es sind folgende 8 Re start Adressen zugelassen 00H 08H 10H 18H 20H 28H 30H 38H De
48. ellen wird in das Doppelregister qq uebertragen Inhalt von SP Adr gt niederwertiges Regl erhoehen von SP Inhalt von SP Adr gt hoeherwertiges Regl erhoehen von SP Inhalt der von Stackpointer SP adres sierten 2 Speicherstellen wird in das Indexregister IX bzw IY uebertragen Inhalt von SP Adr gt niederwertig Teill erhoehen von SP Inhalt von SP Adr gt hoeherwertig Teill erhoehen von SP 3 5 3 Registeraustauschbefehle Diese Befehle dienen dem schnellen Doppelregisterinhalten und erschliessen dem Hintergrundregister Zum Beispiel UP EXX Unterprogramm Befehle sats o EXX RET Austausch von Programmierer die 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 und HL werden ausgetauscht DE lt gt HL Die 16 Bit Inhalte der Registerpaare DE EX AF AF 4 Die 16 Bit Inhalte der Registerpaare AF und AF werden ausgetauscht AF lt gt AF EXX 4 Die 16 Bit Inhalte der nachstehenden lt gt BC DE lt gt DE HL lt gt HL plus 1 adressier
49. emonik 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 in denen die Marke definiert ist im Markenfeld 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 gaenigsten Fehler werden jedoch identifiziert 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 zZ B verschiedene Assemblerbefehle nur fuer spezielle Operanden gelten Die Gueltigk
50. en des Akkumulatorinhalts von V1 Null Entspricht wertmaessig dem Zweier komplement 4 Komplementieren des Carry Flags x 0 I SCF 4 Setzen des Carry Flags I 0 01 I 3 5 6 16 Bit Arithmetikbefehle Arbeiten aehnlich wie die 8 Bit Arithmetikbefehle jedoch mit Doppelregistern Als Akkumulator wird eines der Register HL IX oder IY benutzt Mnemonik T Wirkungsweise des Befehls SZHPNC ADD HL dd 11 Der Inhalt des Registerpaares dd wird x 0 zum Inhalt des Registerpaares HL addiert I ADD IX IX 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 x 0 ADD IY pp 15 Indexregisters IX bzw IY addiert x 0 Der Inhalt von dd plus Carry Flag wird xv0 zum Inhalt des Registerpaares HL addiert ADC HL dd 15 SBC HL dd 15 Der Inhalt von dd plus Carry Flag wird xV1 vom Inhalt des Registerpaares HL subtra hiert INC dd 6 Der Inhalt des Doppelregisters dd wird um 1 erhoeht INC IX 110 Der Inhalt des Indexregisters IX bzw INC IY 10 wird um 1 erhoeht DEC dd 6 Der Inhalt des Doppelregisters dd wird um 1 vermindert DEC IX 110 Der Inhalt
51. enden Maschinenprogrammen in die Assemblermnemo nik Der Testmonitor ist zur Unterstuetzung der Assembler und Maschinenprogrammierungen vorgesehen Weiterhin steht ein Unter programm zur Bestimmung der Laenge und Art von Maschinenbefehlen zur Verfuegung Der Disassembler kann in Verbindung mit dem Schrittbetrieb des Testmonitors zur Darstellung der Befehlsmnemonik eingesetzt werden Nach dem Einschalten des Moduls und dem Aufruf des Kommandos MENU erscheinen im Menue des Betriebssystems zusaetzlich die folgenden Kommandos EDAS REEDAS DISASS CDISASS TEMO RETEMO V24K6311 V24K6313 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 O 40H 0C8H 200H 3 4 RAMEnde RAMEnde Seal I ee EDAS Text Speicher gt SEE System fuer Editor MC Marken variablen Speicher Danach tritt das Programm in den Kommando Modus ein und das Edito
52. engliche 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 Prozessor hat variable Befehlswortlaenge 1 bis 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 In den Abschnitten 3 5 1 bis 3 5 12 werden alle Assemblerbefehle und deren Wirkungsweise erlaeutert Dabei werden die folgenden Abkuerzungen verwendet Abkuerzungsverzeichnis E EP Einfachregister A B C D E H L dd Doppelregister BC DE HL SP Doppelregister DE HL PP Doppelregister BC DE SP n 8 Bit Konstante nn 16 Bit Konstante Adresse d 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 L beinhaltet dabei die niederwertigen 8 Bits und Register H die hoeherwertigen 8 Bits der Adresse des Speichp
53. enuebertragungsart 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 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 S6010 sollte zur Nutzung des Programms V24K6313 fuer die Datenausgabe nach der Druckgeraetebeschreibung eingestellt werden 6 3 Anschlu bedingungen Die Ansteuerung Computer Drucker ist in der M003 V24 Modul beschreibung enthalten Bild 5 Ebenfalls gilt dieser Hinweis fuer die Schreibmaschinen 6 4 Initialisierung Mit dem Einstellen des Cursors auf den jeweiligen Programmnamen V24K6311 oder V24K6313 und dem Druecken der ENTER Taste wird der V24 Modul zur Datenuebertragung initialisiert Das muss auch nach einem System Reset erfolgen Die Datenausgabe erfolgt ueber den Anwenderkanal 1 des Systems USER OUT 1 Fuer den Druckeranschluss ist der Kanal K1 des V24 Moduls der die niedrigste Scha
54. er Maschinencode 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 3 4 1 Aufrufbedingungen Der Assembler verlangt nach Aufruf zunaechst die Eingabe von Options zur Steuerung des Uebersetzungsvorgangs Es erscheint die Ausschrift OPTIONS 2 B L 0 P 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 d h es wird keine neue Markentabelle erzeugt B Brief Kurzform Die ueber das Ausgabegeraet kommenden Listen bzw Fehlerzeilen werden auf eine Laenge von 39 Zeichen begrenzt um z B 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
55. er Bildschirm gerollt SHIFT DEL Loeschen der Cursorzeile SHIFT HOME Loeschen der aktuellen Textseite SHIFT CUL Cursor zum Zeilenanfang SHIFT CUU Eine Seite 30 Zeilen zurueckblaettern 1 SHIFT CUD Eine Seite 30 Zeilen vorwaertsblaettern 1 1 Der Cursor bleibt an der Position stehen Fehlermeldungen Bei BRK 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 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
56. erden Im Quellprogramm wird ausser in Zeichenketten nicht zwischen Gross und Kleinbuchstaben unterschieden 3 3 1 Marken Marken sind symbolische Bezugspunkte innerhalb des Programms Sie werden verwendet um in einer anderen Anweisung auf den momentanen Befehlszaehlerstand auf eine andere Marke oder auf eine Konstante Bezug nehmen zu koennen Eine Marke muss in der ersten Spalte der Programmzeile beginnen und sollte 6 Zeichen nicht ueberschreiten Das erste Zeichen muss ein Buchstabe sein als weitere sind Buchstaben Ziffern der Punkt und das Unterstreichungszeichen zulaessig Marken koennen mit Doppel punkt abgeschlossen werden muessen aber nicht Verboten fuer Marken sind folgende Zeichenketten Registernamen A B C D E H L I R AF BC DE HL IX IY SP Flagbedingungen s Abschn 3 3 3 C NC Z NZ M P PE PO 3 3 2 Operationscodes Im Operationscodefeld steht eine der ZILOG Maschinenbefehlsmnemoniken oder eine Assembler Pseudoanweisungen s dazu Abschn 3 3 5 3 5 bzw 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 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
57. erpaar 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 PV 1 Transport mehrerer Datenbytes ab der 000 Speicherstelle die durch das Register paar HL adressiert wird nach der Spei cherstelle die durch das Registerpaar DE adressiert wird Bie 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 LDD 16 Der Befehl wirkt wie LDI nur werden die 0 0 Register DE und HL um 1 vermindert LDDR 21 Der Befehl wirkt wie LDIR nur werden 000 16 die Register DE und HL um 1 vermindert CPI 16 Vergleich des Inhalts des durch HL 1 adressierten Speicherplatzes mit dem In halt des Akkumulators A Register A HL gt Z 1 A lt gt HL gt Z 0 Anschliessend wird das Register HL um 1 erhoeht und das Registerpaar BC um 1 vermindert Das Registerpaar BC kann als Bytezaehler arbeiten BO 0 gt PV 0 BC lt gt 0 gt PV 1 CPIR Vergleich des Inhalts des Akkumulators 1 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
58. erung Der Speicherbereich des Softwaremoduls ist auf die Anfangsadresse COOOH 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 der Anweisung SWITCH 08 1 zugewiesen Modulstrukturbyte Jeder Modul besitzt zur Kennung ein zugeordnetes Strukturbyte Der Software Modul besitzt das Strukturbyte F7H bei EPROM Bestueckung Ueber die SWITCH Anweisung wird das Strukturbyte wie folgt angefordert SWITCH 08 Eingabe Modulsteckplatzadresse 08 F7 Cl Antwort des Computers auf dem Bildschirm vn Betriebszustand AKTIV zuletzt eingegebenes EER Anfangsadresse COOOH Steuerbyte kk Strukturbyte Seren Modulsteckplatzadresse
59. es dem Programmierer erlauben die Arbeitsweise des Uebersetzungsprogramms 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 In 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 in die eigentliche Maschinensprache in binaerer Form des U880 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 27280 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 UDOS und SCPX Assembler programm Quellprogramm gt Computer gt Maschinenprogramm Abb 3 1 Assembliervorgang 3 2 Arbeitsweise des Prozessors Mit dem U880 Prozessor stehen dem Programmierer ueber 600 Opera tionscodes fuer arithme
60. fehls 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 BRK Nach der Anzeige erscheint der Cursor und es kann mit folgenden Tasten fortgesetzt werden ENTER Abarbeiten des naechsten USER Befehls Cursor down 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 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 BRK Uebergang in die Kommandoeingabe des Test monitors Beispiel STEP 100 Abarbeitung des Befehls auf Adresse 100H COPY aaaa bbbb cccc kopieren eines Speicherbereiches Parameter aaaa Quelladresse bbbb Zieladresse eccc Anzahl Bytes Das Umspeichern erfolgt ueber einen LDIR Befehl ohne Ko
61. ger Teil DEFM Text Legt auf die naechsten Speicherstellen die ASCII Werte der Zeichen des Textes Dabei sind n 8 Bit Konstante nn 16 Bit Konstante C bersicht Editor Assembler Editor MENU EXIT CLEAR SAVE LOAD PRINT ASM TOP BOTOM EDIT VERIFY Anzeige aller Kommandofunktionen Verlassen von EDAS und Rueckkehr zur CAOS Systemschleife Loeschen des gesamten Textspeichers Markentabelle und Objektprogramm bleiben erhalten Abspeichern des im Hauptspeicher befindlichen Quelltextes auf Kassette Einlesen eines mit dem EDAS SAVE Kommando abgespeicherten Quelltextes von Kassette Ausdruck des Textspeichers Aufruf des Assemblers Cursor auf Textanfang mit Anzeige der 1 Textseite Cursor auf die Zeile nach dem Textende mit Anzeige der letzten Textseite Anzeige der zuletzt bearbeiteten Textseite Ueberpruefen eines auf Magnetband gespeicherten Programms auf fehlerfreie Aufzeichnung Tastenfunktionen F1 F2 BRK INS DEL CLR HOME CUU CUD CUL CUR ENTER SHIFT HOME SHIFT DEL SHIFT CUL SHIFT CUU SHIFT CUD Tabulator setzen Wiederholung Textsuche s FIND Ende Editier Modus Rueckkehr ins Menue Einfuegen eines Leerzeichens links vom Cursor Loeschen eines Zeichens mit Verdichten der Zeile Loeschen eines Zeichens ohne Verdichten der Zeile Cursor Cursor Cursor Cursor Cursor zum linken oberen Bildschirmrand zum Zeilenanfang der vorherigen Zeile zum Zeilen
62. gten Quelltextes auf Kassette E bersicht Testmonitor Kommando TEMO n ARITH aaaa bbbb BREAK nnnn GO nnnn STEP nnnn COPY aaaa bbbb cccc MOVE aaaa bbbb cccc REG a nnnn reg nnnn SBKR nnnn IN aaaa OUT aaaa nn Funktion Start des Testmonitors Kaltstart ohne Parameter zusaetzliche Aktivierung des Disassemblers beliebige Parameter keine Aktivierung des Disassemblers Start des Testmonitors Warmstart USER Register bleiben unveraendert Ausschreiben des Testmonitormenues Anzeige der Summe Differenz und des Sprung offsets zweier Adressen Vereinbarung eines Unterbrechungspunktes im RAM Sprung in ein Anwenderprogramm mit Initialisierung des Unterbrechungspunktes fehlt USER PC Einzelbefehlsabarbeitung ab nnnn nnnn wird der letzte Wert des verwendet Kopieren eines Speicherbereiches Verschieben eines Speicherbereiches Belegen eines Anwenderdoppelregisters Belegen von Registern reg Name des Registers in Kleinbuch staben Vereinbarung eines Haltepunktes Anzeige eines Datenbytes vom Eingabekanal Ausgabe eines Datenbytes zum Ausgabekanal DISPLAY aaaa bbbb cc Ausgabe HEX ASCII Dump EXIT MODIFY nnnn FILL aaaa bbbb nn CHSUM aaaa bbbb WORKRAM aa Rueckkehr in das Betriebsystemgrundmenue Anzeige und Veraenderung von Speicherzellen Beschreiben eines Speicherbereiches mit einem Byte Berechnen eines Pruefpolynoms Verlegen von IX Interrupttabellen und
63. inks verschoben Das hoechstwertige Bit 7 ersetzt das Carry Flag waehrend das Carry Flag das Bit 0 des Akkumulators ersetzt CY lt B7 lt B0 Rechtsrotation des Akkumulatorinhalts 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 0 0 0 0 0 0 BARE BABB SRA SRA SRA SRA SLA SLA SLA SLA SRL SRL SRL SRL r 8 m 115 IX d 23 IY d 23 IA r 8 m 115 IX d 23 IY d 23 r 8 m 115 IX d 23 IY d 23 IA r 8 m 115 IX d 23 IY d 23 IA r 8 m 115 IX d 23 IY d 23 IA IA 8 m 115 IX d 23 IY d 23 IA IA r 8 m 115 IX d 23 IY d 23 IA IA IA 118 B7 gt B0 gt CY Linksrotation eines Registers oder Speicherbytes analog dem Befehl RLCA Rechtsrotation eines Registers oder Speicherbytes analog dem Befehl RRCA Linksrotation eines Registers oder Speicherbytes durch das Carry Flag analog dem Befehl RLA Rechtsrotation eines Registers oder Speicherbytes durch das Carry Flag analog dem Befehl RRA Rechtsverschiebung eines Registers oder Speicherbytes um ein Bit durch das Carry Flag Der Inhalt des hoechstwerti gen Bit 7 bleibt erhalten g
64. ktor 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 0100H bis O1FFH Von diesen Adressen stehen fuer den Anwender im CAOS System aber nur die Werte von 01D4H bis 01E3H zur Verfuegung d h es ist Platz fuer 8 Anwenderinterruptadressen Die Anwenderbausteine muessen die entsprechenden Interrupt vektoren OD4H OD6H OEOH oder OE2H liefern 3 2 4 Adressierungsarten Der Befehlssatz des 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 Z B LD A B LD 0200H HL Implizite Adressierung Der Operationscode bezieht
65. latzes p Einer der Werte 00H 08H 10H 18H 20H 28H 30H 38H CY 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 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 OHM l mi my NM w r 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 Inhalt des Registers r wird in das Re gister r umgespeichert LD r n 7 Die 8 Bit
66. mit dem Zeilenende Das erste Zeichen eines jeden Kommentars muss ein Semikolon sein 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 so legt der EDAS Assembler den Anfang standardmaessig auf den 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 Bezeichnu
67. ndert werden Die Textseite wird bei Betaetigung der Tasten BREAK SHIFT CUU oder SHIFT CUD in den Textspeicher uebernommen 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 F1 Tabulator in Leerzeilen automatisch gesetzt wenn kein Text auf der Tabulatorposition steht ansonsten wird der Text auf 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 Am Seitenende wird d
68. ngen 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 Z B DEFM HALLO legt die Bytefolge 48H 41H ACH ACH in den Speicher Alle weiteren im orginalen 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 3 4 Abarbeitung des Assemblers Der EDAS Assembler wird vom EDAS Editor Menue ist Bereitschaftszeichen mit dem Kommando ASM aufgerufen ASM SENTER 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 d
69. nglichen Wert zurueckgesetzt anschliessend wird in den Schrittbetrieb uebergegangen Die Speicherplaetze 38H bis 3AH 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 Adresse 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 Programmstart 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 Anwenderbe
70. ns 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 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 m Anzahl der Bildschirmzeilen fuer eine Druckzeile beim Fehlen wird m 1 angenommen n Anzahl der Druckzeilen je Seite bei n 0 keine 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 1 0 _ 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 OB7BEH die Adresse der Ausgaberoutine eingetragen werden Die Ausgaberoutine wird dann ueber den CAOS Programm verteiler UOT1 angesprungen und bekommt im Akkumulator den Zeichencode eines ASCII Zeichens Die Routine ist mit RET abzuschliessen Register muessen nicht gerettet werden Als Steuercodes
71. ntrolle auf ueberlappende Speicherbereiche und ist deshalb auch zum Loeschen oder Beschreiben von Speicherbereichen geeignet Beispiel COPY 100 101 8 beschreibt die Speicherplaetze 101H bis 108H mit dem Inhalt der Adresse 100H MOVE aaaa bbbb cccc Verschieben eines Speicherbereiches Parameter vgl COPY Das Umspeichern erfolgt mit Kontrolle auf ueberlappende Speicherbereiche Beispiel MOVE 100 101 8 Verschieben der Inhalte der Speicherplaetze 100H bis 107H auf die Speicherplaetze 101H 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 AF B7F2H 1 BC B7FAH 2 DE B7F6H 3 HL B7F8H 4 PC B7FAH 5 SP B7FCH 6 IY Register IY direkt Die Flags koennen ueber AF gesetzt werden Beispiel REG 4 100 Setzen des USER Stack auf Adresse 100H 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 reg ist der Name des Anwenderregisters bzw Flags in Kleinbuchstaben anzugeben M
72. nutzt 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 B bzw BC wird vorwiegend als Zaehlregister verwendet Befehlszaehler Das 16 Bit Register PC 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 POP von 16 Bit Daten aus den Registern verwendet werden Durch Setzen 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
73. odes entsprechen Zeichen dargestellt Nach cc Zeilen erscheint der Cursor und wartet auf eine Eingabe Mit der BRK Taste kann abgebrochen werden Durch Betaetigung der STOP Taste wird in den MODIFY Modus uebergegangen Dabei wird die dem Hex Dump folgende Adresse mit ihrem Inhalt auf der naechsten Bildschirmzeile angezeigt Mittels 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 MODIFY nnnn ueberpruefen und aendern von Speicherbereichen Parameter nnnn Adresse entspricht dem Kommando MODIFY des Hauptmenues FILL aaaa bbbb nn Beschreiben Fuellen eines SSS SSS gt SSS SSS gt Spe icherbereiches 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 500H mit FFH CHSUM aaaa bbbb Berechnung eines Pruefpolynoms z B zum Ueberpruefen von EPROM s oder von zu testenden Programmen im RAM auf Veraen
74. oeglich sind folgende Eingaben fuer Einfachregister a b c d e h l fuer Doppelregister bc de hl pc iy fuer Flags z cy Parameter nnnn Wert des Registers bzw Flaginhaltes hexadezimal Beispiel cy 1 Setzen des Carry Flags auf 1 SBRK nnnn Vereinbarung eines Haltepunktes Parameter nnnn 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 down 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 aaaa Anfangsadresse bbbb Endadresse es werden 8 Byte in einer Zeile angezeigt cc Anzahl der zusammenhaengenden Zeilen wenn kein Wert eingegeben wurde gilt cc 8 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 C
75. outine 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 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 n 0 8 10H 18H 20H 28H 30H 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 den 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 Interruptbehandlung 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 Interruptve
76. r 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 Modus erreicht man beim Start ueber EDAS Ist mit EDAS ein Quellprogramm erstellt worden kann als Folge mit REEDAS gestartet werden Dabei erfolgt keine Initialisierung des Speichers Warmstart Quelltexte bleiben dann wie schon erwaehnt erhalten Die Anzeige des Kommandomenues erfolgt in der folgenden Form gt gt gt EDAS V1 3 lt lt lt FREE nnnn PRINT ASM FIND TOP BOTOM EDIT VERIFY 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 in den Kommando Modus FIND TOP 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
77. r hoeherwertige Adressteil ist dabei stets 0 Der RST Befehl entspricht in seiner weiteren Wirkung dem unbedingten RETI RETN NZ NC PO PE Unterprogrammaufruf Unbedingter Unterprogrammruecksprung Die Ausfuehrung erfolgt indem die Rueckkehradresse wie bei einem fehl aus dem Stack 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 Flag gleich 0 ist Unterprogrammruecksprung wenn das 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 In 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 Interrupts 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
78. re V24 Module im Geraet gesteckt wird jeweils der V24 Modul mit der niedrigsten Schachtnummer vom Programm einge schaltet Ausserdem wird der Kanal K1 am Modul fuer die Drucker ausgabe genutzt Die hier auf dem Softwaremodul zur Verfuegung stehenden Treiber programme ermoeglichen die Anwendung der Drucker K6311 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 C0171 genutzt werden Dies gilt auch fuer den Thermodrucker K6303 6 1 2 Uebersicht der Drucker die mit der vorhandenen Software bedient werden koennen Treiberprogramm Druckgeraet V24K6311 K6311 K6312 S6010 1200 Bit s V24K6313 K6313 K6314 S6005 S6010 9600 Bit s 6 1 3 Unterschiede der Treiberprogramme K6311 K6313 Datenuebertragungsrate 1200 Bit s 9600 Bit s Weiterhin unterscheiden sich die Steuersequenzen fuer die Einstellung der Formularlaenge und der Formularendezeile 6 2 Grundeinstellung 6 2 1 Treiberroutine V24K6311 Datenuebertragungsart 1200 Bit s 1 Stoppbit keine Paritaet Hardwareprotokoll Formularlaenge 72 Zeilen 12 Zoll Formularendezeile 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 Dat
79. rrupts NMI nichtmaskierbarer Interrupt hoechster Prioritaet INT maskierbarer Interrupt kann in 3 verschiedenen Interrupt Modi betrieben werden 3 2 3 1 Nichtmaskierbarer Interrupt NMI Die NMI Signalzufuehrung kann nicht gesperrt werden Ein NMI Signal fuehrt also in 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 IFF1 und IFF2 Interruptflipflops Der Befehl EI setzt beide auf 1 und DI beide auf 0 IFF2 dient als Merker der Stellung von IFF1 bei der NMI Behandlung waehrend der NMI Behandlung d h bis RETN ist kein INT moeglich Wird nun ein anstehendes INT Signal erkannt so fuehrt die CPU hardwaremaessig eine DI Operation aus d h IFF1 und IFF2 werden auf gesetzt Sollen weiterhin Interrupts zugelassen werden so ist spaetestens vor Verlassen der Interruptbehandlungsr
80. ruf 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 die 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 T Wirkungsweise des Befehls SZHPNC pelregister dd geladen LD IX nn 14 Die 16 Bit Konstante nn wird in das In LD IY nn 14 dexregister IX bzw IY geladen LD HL nn 16 Inhalt der Speicherplaetze nn und nn 1 wird in das Doppelregister HL geladen Inhalt von 1 Register Inhalt von nn gt Register L I LD pp nn 20 Inhalt der Speicherplaetze nn und nn 1 wird in das Doppelregister pp geladen Inhalt von 1 gt hoeherwertiges Regl Inhalt von gt niederwertiges Regl I LD IX nn 20 Inhalt der Speicherplaetze nn und nntd LD IY nn 20 wird in das Indexregister IX bzw IY ss geladen Inhalt von nn 1 gt hoeherwert Teil Inhalt von nn gt niederwert Teil LD LD LD LD LD LD LD PUSH PUSH PUSH POP POP POP I nn HL 16 I nn pp 20 I I I I nn IX 20 nn IY 20 I I S
81. sich fest auf bestimmte Speicherplaetze oder Register Z B EXX SCF Unmittelbare Adressierung Dem Operationscode folgt unmittelbar eine 8 oder 16 Bit Konstante im Speicher Z B LD A 6 Indirekte Adressierung Die 16 Bit Adresse befindet sich in einem Registerpaar der CPU Der Befehl bezieht sich indirekt auf diese Adresse Z B LD A HL 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 Z B ID A IX 6 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 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 mnemonische 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 w
82. sind OAH fuer Line Feed und fuer Carriage Return zu verwenden ASM Der Editor wird verlassen und der Assembler aufgerufen 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 Editier 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 2 2 Editier Modus Im Editier Modus wird jeweils eine zu bearbeitende Textseite angezeigt Auf diese Seite kann beliebig geschrieben und vorhandener Text verae
83. st mit SAVE auf Kassette abspeichern Da nach kann die Assemblierung mit der Erzeugung des Maschinencodes erfolgen der mit 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 Mit dem Assembler ist 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 Markenfehler 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 Maschinencode erzeugt 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 Mn
84. t B7 gt B0 gt 0 Linksverschiebung eines Registers oder Speicherbytes um ein Bit durch das Carry Flag Das niederwertige Bit 0 wird 0 CY lt B7 lt B0 lt 0 Rechtsverschiebung eines Registers oder Speicherbytes um ein Bit durch das Carry Flag Das hoechstwertige Bit 7 wird 0 0 gt B7 gt B0 gt CY Zyklische Verschiebung nach links zwi 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 Bits des Akkumulators werden in die un teren 4 Bitstellen der Speicherstelle transportiert Die oberen 4 Bits des Ak 0PO 0PO 0PO OPO 0 0 0 0 0 0 0 0 0 0 0 OPO OPO 0PO 0PO OPO OPO OPO OPO OPO OPO 0PO 0PO 0PO 0PO OPO 0PO 0PO 0PO OPO 18 kumulators bleiben unberuehrt Zyklische Verschiebung nach rechts zwi OPO 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
85. t 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 B gesetzt wenn das Ergebnis zweier Vorzeichenzahlen ausserhalb des zulaessigen Bereiches von 128 bis 127 liegt Das Sign Flag zeigt nach Additionen und Subtraktionen an ob 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 Mit 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 3 2 3 Interruptsystem 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 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 Inte
86. t ist H lt gt SP 1 L lt gt SP Registerpaare werden ausgetauscht 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 EX SP IX 23 Der niederwertige Teil des Indexregi 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 3 5 4 Blocktransfer und suchbefehle Mit einem einzigen Befehl koennen beliebig grosse Datenmengen im Speicher verschoben werden bzw es kann in einem Speicherbereich nach einem Datenbyte gesucht werden Die Suche wird dabei beendet wenn das Byte gefunden wurde Beispiel Die Befehlsfolge LD LD LD LDIR HL OEOOOR DE 2000H BC 800H verschiebt einem Teil des CAOS Betriebssystems in den RAM Bereich Wirkungsweise des Befehls SZHPNC Transport eines Datenbytes von der Spei 0 0 LDIR cherstelle die durch das Registerpaar HL adressiert wird nach der Speicher stelle die durch das Regist
87. tische logische Programmorganisations 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 SEEN NANA OT NINI NINININI NL er a E EN ee a a EE er N M1 M2 M3 Befehlszyklus Abb 3 2 Beispiel eines Befehlszyklus Man ersieht aus Abb 3 2 dass folgende Hierarchie besteht Die Befehlszyklen bestehen aus mehreren Maschinenzyklen Die Anzahl der Maschinenzyklen pro Befehl ist unterschiedlich zwischen 1 und 6 Jeder Maschinenzyklus besteht seinerseits aus mehreren Taktzyklen 3 bis 6 Taktzyklen Die Dauer eines Taktzyklus ist durch die Frequenz des Taktgenerators der CPU gegeben Beim KC 85 2 und KC 85 3 betraegt die Taktfrequenz 1 75 MHz h die Dauer eines Taktzyklus betraegt etwa 571 ns Im Abschnitt 3 5 ist fuer die einzelnen Befehle der CPU die Gesamt anzahl der Taktzyklen jeweils angegeben Man kann hieraus die Ausfuehrungszeit eines Befehls ermitteln was z fuer Programme mit Zeitschleifen notwendig ist s Abschn 4 3 2 1 Registerstruktur Der U880 Prozessor hat die in Abb 3 3 dargestellte Registerstruktur Hauptregister Hintergrundregister Akkumulator Flags A F l lt gt A F B B c Allgemeine __ 77 77 777772727
88. tscher Sprache ZILOG 1977 Klein M Klein R D 280 Applikationsbuch Franzisverlag GmbH Muenchen 1983 Osborn A Einfuehrung in die Mikrocomputer Technik te wi Verlag GmbH Muenchen 1982 Systemhandbuch VEB Mikroelektronik Wilhelm Pieck Muehlhausen Beschreibung zu M003 V24 VEB Mikroelektronik Wilhelm Pieck Muehlhausen Beschreibung zur Programmkassette C0171 V24 Software VEB Mikroelektronik Wilhelm Pieck Muehlhausen Befehlsbeschreibung U880D VEB Mikroelektronik Karl Marx Erfurt Stammbetrieb Anhang A Befehlscode Tabelle 8 Bit Ladebefehle A LD A 7E ID B 47 C 4F LD D 57 LD E 5F LD H 67 LD L 6F LD HL 77 LD BC 02 LD DE 12 LD nn 32XXXX A 78 40 48 50 58 60 68 70 LD IX d DD7EXX LD IY d FD7EXX LD IX d LD IY d LD IX d n ED57 ED5F ED47 ED4F DD77XX FD77XX 16 Bit Ladebefehle LD nn LD nn LD nn LD SP PUSH POP BC 01 EDABXXXX ED5BXXXX ED43XXXX ED53XXXX BC DE 5 D5 C1 D1 Registeraustauschbefehle EX SP HL EX SP IX EX SP IY E3 DDE3 FDE3 BC D E H L HL BC DE nn n 79 7A 7B 7C 7D TE OA 1 3AXXXX 3EXX 41 42 43 44 45 46 06XX 49 AA AB 4C AD 4E OEXX 51 52 53 55 55 56 16XX 59 5A 5B 5C 5D 5E 1EXX 61 62 63 66 65 66 26XX 69 6A 6B 6C 6D 6E 2EXX 71 72 73 77 75 36XX B H L DD46XX DD4EXX DD56XX DD5EXX DD66XX DD6EXX FD46XX FDAEXX FD56XX FD5EXX FD66XX
89. uert 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 Einzelschrittabarbeitung 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 n wird kein Parameter angegeben so wird der Disassembler aktiviert und es erfolgt bei Registeranzeige die Anzeige der Befehlsmnemonik im Menuekopf erscheint die Ausschrift DISASS ACHTUNG der Disassembler veraendert den Zweitregistersatz auch fuer Anwenderprogramme wird ein beliebiger Parameter angegeben erfolgt kein Aufruf des Disassemblers im Menuekopf fehlt dann die Ausschrift DISASS Nach dem Start erscheint das Menue des Testmonitors gt gt gt TEMO lt lt lt DISASS
90. uf den Bildschirm erfolgt in Form von Befehls adressen und mnemonik Der Disassembler ist speziell fuer den KC 85 2 und 85 3 erarbeitet worden Deshalb werden die Besonderheiten des Betriebssystems CAOS bei der Rueck uebersetzung einbezogen Beispielsweise fuehrt der Aufruf des Programmverteilers des CAOS Betriebssystems auf Adresse FOO3H zu folgender Ausschrift Beispiel 0100 CALL OFOO3H 0103 DEFB 003H Unterprogrammnummer 3 Beim Aufruf des Unterprogramms 23H Zeichenkettenausgabe werden die der 23H folgenden Bytes bis einschliesslich des ersten Bytes 00H das erkannt wird als Zeichenkette bzw als Datenbytes ausgegeben Beispiel 0100 CALL OFOO3H 0103 DEFB 023H 0104 DEFB OOCH Bildschirm loeschen 0105 DEFM Testprogramm 0111 DEFB OAH Cursor down 0112 DEFB ODH Cursor auf Zeilenanfang 0113 DEFM Eingabe 011A DEFB OOOH Ende der Zeichenkette 4 3 Zus tzliche U880 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 FD 44 DD 85 LD B HY ADD LX In der Gruppe der 2 Byte Befehle fehlt eine Spalte mit der Kodierung 1
91. zeichnete Bitposition wird in der Speicherstelle gesetzt die durch das Indexregister IX bzw IY plus Verschiebung d adressiert ist wird in der Speicherstelle geloescht die durch das Register HL adressiert ist RES b IX d 23 Die durch b gekennzeichnete Bitposition RES b IY d 23 wird in der Speicherstelle geloescht die durch das Indexregister IX bzw IY plus Verschiebung adressiert ist RES b r 8 Die durch b gekennzeichnete Bitposition wird in dem Register r geloescht Null RES b m 15 Die durch gekennzeichnete Bitposition 3 5 11 CPU Steuerbefehle Diese Befehle dienen zur Steuerung des Interruptsystems der CPU Der Interruptmodus ist im 85 2 und KC 85 3 auf IM 2 eingestellt und sollte nicht veraendert werden Mnemonik T Wirkungsweise des Befehls SZHPNC I Die CPU fuehrt keine Operation aus Es werden aber Refresh Zyklen erzeugt I HALT Die CPU fuehrt solange eine Folge von 353s NOP Befehlen aus bis ein Interrupt oder der RESET Eingang an der CPU aktiv wird Es werden Refresh Zyklen erzeugt I Der maskierbare Interrupt wird durch Ruecksetzen der Interrupt Freigabe Flip Flops IFF1 und IFF2 der CPU gesperrt Nichtmaskierbare Interrupts werden aner kannt 4 Der maskierbare Interrupt wir

Download Pdf Manuals

image

Related Search

Related Contents

MODEL 3900 - Donamarc Water Systems Co.  Imetec Iron Max Compact 1900  S1D13705 TECHNICAL MANUAL  MODE D`EMPLOI www.primo    Keysight U1401B Medidor/calibrador multifuncional portátil  Bosch NIT8066SUC Product Information  

Copyright © All rights reserved.
Failed to retrieve file