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