================================================================================
Path: news.uni-mainz.de!news.th-darmstadt.de!fauern!news.dfn.de!server2.rz.uni-leipzig.de!news.uni-jena.de!news
From: ILJA@minet.uni-jena.de (ILJA_FRIEDEL)
Newsgroups: comp.sys.sinclair
Subject: 48K ROM disassembly
Date: 28 Jan 1994 15:07:35 GMT
Organization: Dep. of Mathematics and Computer Science, Jena University, Germany
Lines: 12059
Distribution: world
Message-ID: <2ib9nn$epe@hpux.rz.uni-jena.de>
NNTP-Posting-Host: mav040.mathematik.uni-jena.de
X-News-Reader: VMS NEWS 1.24

Puh, 2 weeks work ;) and a little mistake:

In the 48k Sinclair Spectrum ROM:

              ...

0066   F5               NMI: PUSH AF
0067   E5                    PUSH HL
0068   2A B0 5C              LD HL,(NMIREG)

              ...

                        ilja


..pl61
..op
..mt0
..mb0
                              SP                                PAGE   1
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                     1  PFE:  EQU 0FEH ;Port
                     2  
0000                 3     ORG 0
                     4  
0000   F3            5  RESET:   DI
0001   AF            6     XOR A
0002   11FFFF        7     LD DE,0FFFFH   ;oberste moegliche Ramzelle
0005   C3CB11        8     JP RESET1
                     9  
0008   2A5D5C       10  ERRAUS:  LD HL,(CHADD)  ;der Errorzeiger wird auf die
000B   225F5C       11     LD (XPTR),HL   ;Eingabe gesetzt,welche nicht
000E   1843         12     JR ERROR ;mehr interpretiert werden kann
                    13  
0010   C3F215       14  PRTOUT:  JP AUSGA2   ;Buchstaben in Reg A ausdrucken
0013                15     DEFS 5
                    16  
0018   2A5D5C       17  GETAKT:  LD HL,(CHADD)  ;holt aktuelles Zeichen aus
001B   7E           18     LD A,(HL)   ;Programm oder bei Eingabe
001C   CD7D00       19  AUSWER:  CALL BASZCP ;Pruefen auf Stuerzeichen
001F   D0           20     RET NC      ;druckbares Zeichen/ Basictoken
                    21  
0020   CD7400       22  GETNXT:  CALL NEXZEI ;holt naechstes Zeichen
0023   18F7         23     JR AUSWER
0025                24     DEFS 3
                    25  
0028   C35B33       26  CALRUF:  JP RECHNE   ;zur Rechnerroutine
002B                27     DEFS 5
                    28  
0030   C5           29  REST30:  PUSH BC     ;reserviere Speicherplatz im
0031   2A615C       30     LD HL,(WORKSP) ;Workspace, Anzahl = BC
0034   E5           31     PUSH HL
0035   C39E16       32     JP RESERV
                    33  
                    34  ;Interrupt - Routine (Uhr und Tastatur)
                    35  
0038   F5           36  INTERR:  PUSH AF
0039   E5           37     PUSH HL
003A   2A785C       38     LD HL,(FRAMES) ;3 Byte Bildzaehler (Uhr)
003D   23           39     INC HL      ;Zeit in 1/50 Sekunden
003E   22785C       40     LD (FRAMES),HL
0041   7C           41     LD A,H
0042   B5           42     OR L
0043   2003         43     JR NZ,M0048
0045   FD3440       44     INC (IY+40H)   ;wenn Null drittes Byte
                    45           ;inkrementieren
0048   C5           46  M0048:   PUSH BC
0049   D5           47     PUSH DE
004A   CDBF02       48     CALL KEYBOA ;Tastaturabfrage
004D   D1           49     POP DE
004E   C1           50     POP BC
004F   E1           51     POP HL
0050   F1           52     POP AF
0051   FB           53     EI
0052   C9           54     RET
                    55  
0053   E1           56  ERROR:   POP HL      ;Adresse der Fehlerstelle laden
0054   6E           57     LD L,(HL)   ;die dort stehende Fehlernummer
0055   FD7500       58  M0055:   LD (IY+0),L ;in 'ERRNR' schreiben
                              SP                                PAGE   2
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0058   ED7B3D5C     59     LD SP,(ERRSP)  ;Stackpointer restaurieren
005C   C3C516       60     JP CLRCAL
005F                61     DEFS 7
                    62  
0066   3E00         63  NMI:  LD A,0
0068   CF           64     RST ERRAUS
0069   00           65     NOP
006A   00           66     NOP
006B   7C           67     LD A,H      ;falls HL=0, dann Kaltstart
006C   B5           68     OR L
006D   2001         69     JR NZ,M0070 ;sonst passiert nichts
006F   E9           70     JP (HL)
0070   E1           71  M0070:   POP HL
0071   F1           72     POP AF
0072   ED45         73     RETN
                    74  
                    75  NEXZEI:
0074   2A5D5C       76  M0074:   LD HL,(CHADD)  ;Programmzeiger erhoehen
0077   23           77  M0077:   INC HL
0078   225D5C       78  M0078:   LD (CHADD),HL  ;Adr. des naechsten zu
                    79           ;interpret. Zeichens
007B   7E           80     LD A,(HL)   ;neues Zeichen laden
007C   C9           81     RET
                    82  
                    83  ;Vergleich der Basic - Zeichen
                    84  
007D   FE21         85  BASZCP:  CP 21H      ;Rueckkehr, wenn >=21H
007F   D0           86     RET NC      ;also bei allen druckbaren
                    87           ;Zeichen oder Tokens
0080   FE0D         88     CP 0DH      ;oder CR
0082   C8           89     RET Z
0083   FE10         90     CP 10H      ;Return mit Carry bei 0...0FH
0085   D8           91     RET C
0086   FE18         92     CP 18H
0088   3F           93     CCF
0089   D8           94     RET C    ;Return mit Carry bei 18...20H
                    95  ;Beeinflussung von CHADD, dem aktuellen Basic-Zeichenzeiger
008A   23           96     INC HL      ;bei 10...17H inkrementieren
008B   FE16         97     CP 16H      ;16 u. 17H ausblenden
008D   3801         98     JR C,M0090  ;bei 10...15H nicht inkrementieren
008F   23           99     INC HL
0090   37          100  M0090:   SCF
0091   225D5C      101     LD (CHADD),HL  ;naechstes zu interpret. Zeichen
0094   C9          102     RET
                   103  ;=======================================================
                   104  
0095   BF          105  M0095:   DEFB '?'+80H   ;?
0096   524E        106     DEFM 'RN'   ;RND
0098   C4          107     DEFB 'D'+80H
0099   494E4B45    108     DEFM 'INKEY'   ;INKEY$
009E   A4          109     DEFB '$'+80H
009F   50          110     DEFB 'P' ;PI
00A0   C9          111     DEFB 'I'+80H
00A1   46          112     DEFB 'F' ;FN
00A2   CE          113     DEFB 'N'+80H
00A3   504F494E    114     DEFM 'POIN' ;POINT
00A7   D4          115     DEFB 'T'+80H
00A8   53435245    116     DEFM 'SCREEN'  ;SCREEN$
                              SP                                PAGE   3
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

00AE   A4          117     DEFB '$'+80H
00AF   415454      118     DEFM 'ATT'  ;ATTR
00B2   D2          119     DEFB 'R'+80H
00B3   41          120     DEFB 'A' ;AT
00B4   D4          121     DEFB 'T'+80H
00B5   5441        122     DEFM 'TA'   ;TAB
00B7   C2          123     DEFB 'B'+80H
00B8   56414C      124     DEFM 'VAL'  ;VAL$
00BB   A4          125     DEFB '$'+80H
00BC   434F44      126     DEFM 'COD'  ;CODE
00BF   C5          127     DEFB 'E'+80H
00C0   5641        128     DEFM 'VA'   ;VAL
00C2   CC          129     DEFB 'L'+80H
00C3   4C45        130     DEFM 'LE'   ;LEN
00C5   CE          131     DEFB 'N'+80H
00C6   5349        132     DEFM 'SI'   ;SIN
00C8   CE          133     DEFB 'N'+80H
00C9   434F        134     DEFM 'CO'   ;COS
00CB   D3          135     DEFB 'S'+80H
00CC   5441        136     DEFM 'TA'   ;TAN
00CE   CE          137     DEFB 'N'+80H
00CF   4153        138     DEFM 'AS'   ;ASN
00D1   CE          139     DEFB 'N'+80H
00D2   4143        140     DEFM 'AC'   ;ACS
00D4   D3          141     DEFB 'S'+80H
00D5   4154        142     DEFM 'AT'   ;ATN
00D7   CE          143     DEFB 'N'+80H
00D8   4C          144     DEFB 'L' ;LN
00D9   CE          145     DEFB 'N'+80H
00DA   4558        146     DEFM 'EX'   ;EXP
00DC   D0          147     DEFB 'P'+80H
00DD   494E        148     DEFM 'IN'   ;INT
00DF   D4          149     DEFB 'T'+80H
00E0   5351        150     DEFM 'SQ'   ;SQR
00E2   D2          151     DEFB 'R'+80H
00E3   5347        152     DEFM 'SG'   ;SGN
00E5   CE          153     DEFB 'N'+80H
00E6   4142        154     DEFM 'AB'   ;ABS
00E8   D3          155     DEFB 'S'+80H
00E9   504545      156     DEFM 'PEE'  ;PEEK
00EC   CB          157     DEFB 'K'+80H
00ED   49          158     DEFB 'I' ;IN
00EE   CE          159     DEFB 'N'+80H
00EF   5553        160     DEFM 'US'   ;USR
00F1   D2          161     DEFB 'R'+80H
00F2   535452      162     DEFM 'STR'  ;STR$
00F5   A4          163     DEFB '$'+80H
00F6   434852      164     DEFM 'CHR'  ;CHR$
00F9   A4          165     DEFB '$'+80H
00FA   4E4F        166     DEFM 'NO'   ;NOT
00FC   D4          167     DEFB 'T'+80H
00FD   4249        168     DEFM 'BI'   ;BIN
00FF   CE          169     DEFB 'N'+80H
0100   4F          170     DEFB 'O' ;OR
0101   D2          171     DEFB 'R'+80H
0102   414E        172     DEFM 'AN'   ;AND
0104   C4          173     DEFB 'D'+80H
0105   3C          174     DEFB '<' ;<=
                              SP                                PAGE   4
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0106   BD          175     DEFB '='+80H
0107   3E          176     DEFB '>' ;>=
0108   BD          177     DEFB '='+80H
0109   3C          178     DEFB '<' ;<>
010A   BE          179     DEFB '>'+80H
010B   4C494E      180     DEFM 'LIN'  ;LINE
010E   C5          181     DEFB 'E'+80H
010F   544845      182     DEFM 'THE'  ;THEN
0112   CE          183     DEFB 'N'+80H
0113   54          184     DEFB 'T' ;TO
0114   CF          185     DEFB 'O'+80H
0115   535445      186     DEFM 'STE'  ;STEP
0118   D0          187     DEFB 'P'+80H
0119   44454620    188     DEFM 'DEF F'   ;DEF FN
011E   CE          189     DEFB 'N'+80H
011F   4341        190     DEFM 'CA'   ;CAT
0121   D4          191     DEFB 'T'+80H
0122   464F524D    192     DEFM 'FORMA'   ;FORMAT
0127   D4          193     DEFB 'T'+80H
0128   4D4F56      194     DEFM 'MOV'  ;MOVE
012B   C5          195     DEFB 'E'+80H
012C   45524153    196     DEFM 'ERAS' ;ERASE
0130   C5          197     DEFB 'E'+80H
0131   4F50454E    198     DEFM 'OPEN '   ;OPEN #
0136   A3          199     DEFB '#'+80H
0137   434C4F53    200     DEFM 'CLOSE '  ;CLOSE #
013D   A3          201     DEFB '#'+80H
013E   4D455247    202     DEFM 'MERG' ;MERGE
0142   C5          203     DEFB 'E'+80H
0143   56455249    204     DEFM 'VERIF'   ;VERIFY
0148   D9          205     DEFB 'Y'+80H
0149   424545      206     DEFM 'BEE'  ;BEEP
014C   D0          207     DEFB 'P'+80H
014D   43495243    208     DEFM 'CIRCL'   ;CIRCLE
0152   C5          209     DEFB 'E'+80H
0153   494E        210     DEFM 'IN'   ;INK
0155   CB          211     DEFB 'K'+80H
0156   50415045    212     DEFM 'PAPE' ;PAPER
015A   D2          213     DEFB 'R'+80H
015B   464C4153    214     DEFM 'FLAS' ;FLASH
015F   C8          215     DEFB 'H'+80H
0160   42524947    216     DEFM 'BRIGH'   ;BRIGHT
0165   D4          217     DEFB 'T'+80H
0166   494E5645    218     DEFM 'INVERS'  ;INVERSE
016C   C5          219     DEFB 'E'+80H
016D   4F5645      220     DEFM 'OVE'  ;OVER
0170   D2          221     DEFB 'R'+80H
0171   4F55        222     DEFM 'OU'   ;OUT
0173   D4          223     DEFB 'T'+80H
0174   4C505249    224     DEFM 'LPRIN'   ;LPRINT
0179   D4          225     DEFB 'T'+80H
017A   4C4C4953    226     DEFM 'LLIS' ;LLIST
017E   D4          227     DEFB 'T'+80H
017F   53544F      228     DEFM 'STO'  ;STOP
0182   D0          229     DEFB 'P'+80H
0183   524541      230     DEFM 'REA'  ;READ
0186   C4          231     DEFB 'D'+80H
0187   444154      232     DEFM 'DAT'  ;DATA
                              SP                                PAGE   5
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

018A   C1          233     DEFB 'A'+80H
018B   52455354    234     DEFM 'RESTOR'  ;RESTORE
0191   C5          235     DEFB 'E'+80H
0192   4E45        236     DEFM 'NE'   ;NEW
0194   D7          237     DEFB 'W'+80H
0195   424F5244    238     DEFM 'BORDE'   ;BORDER
019A   D2          239     DEFB 'R'+80H
019B   434F4E54    240     DEFM 'CONTINU' ;CONTINUE
01A2   C5          241     DEFB 'E'+80H
01A3   4449        242     DEFM 'DI'   ;DIM
01A5   CD          243     DEFB 'M'+80H
01A6   5245        244     DEFM 'RE'   ;REM
01A8   CD          245     DEFB 'M'+80H
01A9   464F        246     DEFM 'FO'   ;FOR
01AB   D2          247     DEFB 'R'+80H
01AC   474F2054    248     DEFM 'GO T' ;GO TO
01B0   CF          249     DEFB 'O'+80H
01B1   474F2053    250     DEFM 'GO SU'   ;GO SUB
01B6   C2          251     DEFB 'B'+80H
01B7   494E5055    252     DEFM 'INPU' ;INPUT
01BB   D4          253     DEFB 'T'+80H
01BC   4C4F41      254     DEFM 'LOA'  ;LOAD
01BF   C4          255     DEFB 'D'+80H
01C0   4C4953      256     DEFM 'LIS'  ;LIST
01C3   D4          257     DEFB 'T'+80H
01C4   4C45        258     DEFM 'LE'   ;LET
01C6   D4          259     DEFB 'T'+80H
01C7   50415553    260     DEFM 'PAUS' ;PAUSE
01CB   C5          261     DEFB 'E'+80H
01CC   4E4558      262     DEFM 'NEX'  ;NEXT
01CF   D4          263     DEFB 'T'+80H
01D0   504F4B      264     DEFM 'POK'  ;POKE
01D3   C5          265     DEFB 'E'+80H
01D4   5052494E    266     DEFM 'PRIN' ;PRINT
01D8   D4          267     DEFB 'T'+80H
01D9   504C4F      268     DEFM 'PLO'  ;PLOT
01DC   D4          269     DEFB 'T'+80H
01DD   5255        270     DEFM 'RU'   ;RUN
01DF   CE          271     DEFB 'N'+80H
01E0   534156      272     DEFM 'SAV'  ;SAVE
01E3   C5          273     DEFB 'E'+80H
01E4   52414E44    274     DEFM 'RANDOMIZ'   ;RANDOMIZE
01EC   C5          275     DEFB 'E'+80H
01ED   49          276     DEFB 'I' ;IF
01EE   C6          277     DEFB 'F'+80H
01EF   434C        278     DEFM 'CL'   ;CLS
01F1   D3          279     DEFB 'S'+80H
01F2   445241      280     DEFM 'DRA'  ;DRAW
01F5   D7          281     DEFB 'W'+80H
01F6   434C4541    282     DEFM 'CLEA' ;CLEAR
01FA   D2          283     DEFB 'R'+80H
01FB   52455455    284     DEFM 'RETUR'   ;RETURN
0200   CE          285     DEFB 'N'+80H
0201   434F50      286     DEFM 'COP'  ;COPY
0204   D9          287     DEFB 'Y'+80H
                   288  ;======================================
                   289  
                   290  ;Tabelle der Zuordnung Keyboard Matrix - ASCII
                              SP                                PAGE   6
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                   291  
0205   42485936    292  KEYTAB:  DEFM 'BHY65TGV'      ;Reihe 1
020D   4E4A5537    293     DEFM 'NJU74RFC'      ;Reihe 2
0215   4D4B4938    294     DEFM 'MKI83EDX'      ;Reihe 3
021D   0E          295     DEFB 0EH ;Symbol Shift  Reihe 4
021E   4C4F3932    296     DEFM 'LO92WSZ'
0225   20          297     DEFM ' '    ;Reihe 5
0226   0D          298     DEFB 0DH    ;Enter
0227   50303151    299     DEFM 'P01QA'
                   300  ;=====================================
                   301  
                   302  ;Tabellen der Basic - Tokens
                   303  
                   304  ;gruene Befehle auf den Tasten A....Z
                   305  
022C   E3          306     DEFB 0E3H   ;READ
022D   C4          307     DEFB 0C4H   ;BIN
022E   E0          308     DEFB 0E0H   ;LPRINT
022F   E4          309     DEFB 0E4H   ;DATA
0230   B4          310     DEFB 0B4H   ;TAN
0231   BC          311     DEFB 0BCH   ;SGN
0232   BD          312     DEFB 0BDH   ;ABS
0233   BB          313     DEFB 0BBH   ;SQR
0234   AF          314     DEFB 0AFH   ;CODE
0235   B0          315     DEFB 0B0H   ;VAL
0236   B1          316     DEFB 0B1H   ;LEN
0237   C0          317     DEFB 0C0H   ;USR
0238   A7          318     DEFB 0A7H   ;PI
0239   A6          319     DEFB 0A6H   ;INKEY$
023A   BE          320     DEFB 0BEH   ;PEEK
023B   AD          321     DEFB 0ADH   ;TAB
023C   B2          322     DEFB 0B2H   ;SIN
023D   BA          323     DEFB 0BAH   ;INT
023E   E5          324     DEFB 0E5H   ;RESTORE
023F   A5          325     DEFB 0A5H   ;RND
0240   C2          326     DEFB 0C2H   ;CHR$
0241   E1          327     DEFB 0E1H   ;LLIST
0242   B3          328     DEFB 0B3H   ;COS
0243   B9          329     DEFB 0B9H   ;EXP
0244   C1          330     DEFB 0C1H   ;STR$
0245   B8          331     DEFB 0B8H   ;LN
                   332  
                   333  ;die roten Befehle unter den Tasten A....Z
                   334  
0246   7E          335     DEFB 07EH   ;Schlangenlinie
0247   DC          336     DEFB 0DCH   ;BRIGHT
0248   DA          337     DEFB 0DAH   ;PAPER
0249   5C          338     DEFB 05CH   ;Schraegstrich rueckwaerts
024A   B7          339     DEFB 0B7H   ;ATN
024B   7B          340     DEFB 07BH   ;geschweifte Klammer auf
024C   7D          341     DEFB 07DH   ;     "         "    zu
024D   D8          342     DEFB 0D8H   ;CIRCLE
024E   BF          343     DEFB 0BFH   ;IN
024F   AE          344     DEFB 0AEH   ;VAL$
0250   AA          345     DEFB 0AAH   ;SCREEN$
0251   AB          346     DEFB 0ABH   ;ATTR
0252   DD          347     DEFB 0DDH   ;INVERSE
0253   DE          348     DEFB 0DEH   ;OVER
                              SP                                PAGE   7
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0254   DF          349     DEFB 0DFH   ;OUT
0255   7F          350     DEFB 07FH   ;COPYRIGHT
0256   B5          351     DEFB 0B5H   ;ASN
0257   D6          352     DEFB 0D6H   ;VERIFY
0258   7C          353     DEFB 07CH   ;Strich
0259   D5          354     DEFB 0D5H   ;MERGE
025A   5D          355     DEFB 05DH   ;eckige Klammer auf
025B   DB          356     DEFB 0DBH   ;FLASH
025C   B6          357     DEFB 0B6H   ;ACS
025D   D9          358     DEFB 0D9H   ;INK
025E   5B          359     DEFB 05BH   ;eckige Klammer zu
025F   D7          360     DEFB 0D7H   ;BEEP
                   361  
                   362  ;Befehle ueber den Tasten 0....9
                   363  
0260   0C          364     DEFB 0CH ;DELETE
0261   07          365     DEFB 07H ;EDIT
0262   06          366     DEFB 06H ;SHIFT LOCK
0263   04          367     DEFB 04H ;VIDEO NORMAL
0264   05          368     DEFB 05H ;INVERSE VIDEO
0265   08          369     DEFB 08H ;Cursor nach links
0266   0A          370     DEFB 0AH ;  "    "  unten
0267   0B          371     DEFB 0BH ;  "    "  oben
0268   09          372     DEFB 09H ;  "    "  rechts
0269   0F          373     DEFB 0FH ;Grafik
                   374  
                   375  ;rote Befehle auf den Tasten A....Z
                   376  
026A   E2          377     DEFB 0E2H   ;STOP
026B   2A          378     DEFB 02AH   ;*
026C   3F          379     DEFB 03FH   ;?
026D   CD          380     DEFB 0CDH   ;STEP
026E   C8          381     DEFB 0C8H   ;>=
026F   CC          382     DEFB 0CCH   ;TO
0270   CB          383     DEFB 0CBH   ;THEN
0271   5E          384     DEFB 05EH   ;Pfeil nach oben
0272   AC          385     DEFB 0ACH   ;AT
0273   2D          386     DEFB 02DH   ;-
0274   2B          387     DEFB 02BH   ;+
0275   3D          388     DEFB 03DH   ;=
0276   2E          389     DEFB 02EH   ;.
0277   2C          390     DEFB 02CH   ;,
0278   3B          391     DEFB 03BH   ;;
0279   22          392     DEFB 022H   ;"
027A   C7          393     DEFB 0C7H   ;<=
027B   3C          394     DEFB 03CH   ;<
027C   C3          395     DEFB 0C3H   ;NOT
027D   3E          396     DEFB 03EH   ;>
027E   C5          397     DEFB 0C5H   ;OR
027F   2F          398     DEFB 02FH   ;/
0280   C9          399     DEFB 0C9H   ;<>
0281   60          400     DEFB 060H   ;POUND SIGN
0282   C6          401     DEFB 0C6H   ;AND
0283   3A          402     DEFB 03AH   ;:
                   403  
                   404  ;rote Befehle unter den Tasten 0....9
                   405  
0284   D0          406     DEFB 0D0H   ;FORMAT
                              SP                                PAGE   8
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0285   CE          407     DEFB 0CEH   ;DEF FN
0286   A8          408     DEFB 0A8H   ;FN
0287   CA          409     DEFB 0CAH   ;LINE
0288   D3          410     DEFB 0D3H   ;OPEN
0289   D4          411     DEFB 0D4H   ;CLOSE
028A   D1          412     DEFB 0D1H   ;MOVE
028B   D2          413     DEFB 0D2H   ;ERASE
028C   A9          414     DEFB 0A9H   ;POINT
028D   CF          415     DEFB 0CFH   ;CAT
                   416  ;====================================
                   417  
                   418  ;Keyboard - Abfrageroutine
                   419  ;Output:  E = Taste als Wert 0....27H
                   420  ;    D = Shift - Funktion
                   421  
028E   2E2F        422  KEY:  LD L,2FH ;Zeiger auf Ende der
                   423           ;Keycode-Tabelle +8
0290   11FFFF      424     LD DE,0FFFFH   ;keine Taste
0293   01FEFE      425     LD BC,0FEFEH   ;C = I/O-Port der Tastatur
                   426           ;B = Maske mit einer Null
                   427           ;zum Abfragen der 1. Spalte
0296   ED78        428  NXTREI:  IN A,(C) ;Abfrage
0298   2F          429     CPL      ;'1' = Tastendruck
0299   E61F        430     AND 1FH     ;5 Tasten in einer Spalte
029B   280E        431     JR Z,NOKEY
029D   67          432     LD H,A      ;Matrixwert in H
029E   7D          433     LD A,L      ;Startwert aus L holen
029F   14          434  TEST3:   INC D    ;D haelt 0FFH bei 1-2 ge-
                   435           ;drueckten Tasten
02A0   C0          436     RET NZ      ;bei mehr als zwei gedr. Tasten
02A1   D608        437  KEINTA:  SUB 8    ;A = Tabellenzeiger des Keycodes
02A3   CB3C        438     SRL H    ;Tastendruck suchen
02A5   30FA        439     JR NC,KEINTA
02A7   53          440     LD D,E      ;fuer zwei zulaessige Tasten
                   441           ;nochmals 0FFH laden
02A8   5F          442     LD E,A      ;Tastencode 0....27H in E
02A9   20F4        443     JR NZ,TEST3 ;nochmals Taste in laufender
                   444           ;Reihe suchen
02AB   2D          445  NOKEY:   DEC L    ;naechste Reihe
02AC   CB00        446     RLC B    ;Maske in B schieben
02AE   38E6        447     JR C,NXTREI
                   448  
                   449  ;wenn die Null aus B in Carry gelangt, fertig
                   450  
02B0   7A          451     LD A,D      ;Test auf Funktionstasten
02B1   3C          452     INC A    ;bei einer Taste steht hier 0FFH
02B2   C8          453     RET Z    ;wenn nur eine Taste gedrueckt
                   454  
02B3   FE28        455     CP 28H      ;Taste 'CAPS SHIFT' ?
02B5   C8          456     RET Z
02B6   FE19        457     CP 19H      ;Taste 'SYMBOL SHIFT' ?
02B8   C8          458     RET Z
02B9   7B          459     LD A,E      ;E und D vertauschen
02BA   5A          460     LD E,D
02BB   57          461     LD D,A
02BC   FE18        462     CP 18H      ;Taste 'SYMBOL SHIFT' ?
02BE   C9          463     RET      ;ZERO gesetzt bei 'SYMBOL
                   464           ;SHIFT + andere Taste
                              SP                                PAGE   9
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                   465  
                   466  ;Aufruf der Tastaturabfrage und Auswertung der Eingaben
                   467  ;erfolgt im Interrupt, alle 1/50 Sekunden
                   468  
02BF   CD8E02      469  KEYBOA:  CALL KEY ;Tastaturabfrage
02C2   C0          470     RET NZ
                   471  
                   472  ;hier erfolgt weitere Auswertung in den Faellen:
                   473  ;kein oder einfacher Tastendruck
                   474  ;'CAPS SHIFT' + andere Taste
                   475  ;'SYMBOL SHIFT' + andere Taste
                   476  
                   477  ;die Tastaturauswertung benutzt die 8 Bytes 'KSTATE'
                   478  ;in zwei Gruppen zu 4 Bytes, um zwei folgende
                   479  ;gedrueckte Tasten verarbeiten zu koennen
                   480  
                   481  ;Byte 0: Belegtkennung (FF = frei, 0 = belegt)
                   482  ;Byte 1: Repeat-Zaehler (5...0)
                   483  ;Byte 2: REPDEL (Wartezeit vom Beginn des Repeat)
                   484  ;Byte 3: Code der gedrueckten Taste, ASCII oder Token
                   485  
02C3   21005C      486     LD HL,KSTATE   ;2*4 Speicher fuer Tastatur
02C6   CB7E        487  M02C6:   BIT 7,(HL)  ;Tastaturspeicher frei ?
02C8   2007        488     JR NZ,BLOCK2   ;wenn frei
02CA   23          489     INC HL
02CB   35          490     DEC (HL) ;DEC Repeat-Zaehler
02CC   2B          491     DEC HL
02CD   2002        492     JR NZ,BLOCK2
02CF   36FF        493     LD (HL),0FFH   ;Block freigeben
02D1   7D          494  BLOCK2:  LD A,L
02D2   21045C      495     LD HL,KSTATE+4 ;Block 2 anwaehlen
02D5   BD          496     CP L     ;war es schon Block 2 ?
02D6   20EE        497     JR NZ,M02C6 ;nein
02D8   CD1E03      498     CALL M031E
02DB   D0          499     RET NC      ;Ende, wenn keine Taste
02DC   21005C      500     LD HL,KSTATE
02DF   BE          501     CP (HL)     ;ist es noch dieselbe Taste ?
02E0   282E        502     JR Z,KEYREP ;wenn ja, Repeat
02E2   EB          503     EX DE,HL
02E3   21045C      504     LD HL,KSTATE+4 ;Block 2 pruefen
02E6   BE          505     CP (HL)
02E7   2827        506     JR Z,KEYREP
02E9   CB7E        507     BIT 7,(HL)  ;Block 2 frei ?
02EB   2004        508     JR NZ,M02F1
02ED   EB          509     EX DE,HL ;KSTATE in HL zurueckladen
02EE   CB7E        510     BIT 7,(HL)  ;Freipruefung
02F0   C8          511     RET Z    ;Ende der Tastaturabfrage
                   512           ;bei belegt
                   513  
                   514  ;neue Taste gedrueckt
                   515  
02F1   5F          516  M02F1:   LD E,A
02F2   77          517     LD (HL),A   ;Byte 0
02F3   23          518     INC HL      ;HL zeigt auf Byte 1
02F4   3605        519     LD (HL),5   ;Repeat-Zaehler = 5
02F6   23          520     INC HL      ;Byte 2
02F7   3A095C      521     LD A,(REPDEL)  ;Zeitkonstante bis Repeat
02FA   77          522     LD (HL),A
                              SP                                PAGE  10
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

02FB   23          523     INC HL      ;Byte 3
02FC   FD4E07      524     LD C,(IY+7) ;Mode
02FF   FD5601      525     LD D,(IY+1) ;Flags
0302   E5          526     PUSH HL
0303   CD3303      527     CALL M0333  ;Tastencode (Token) erzeugen
0306   E1          528     POP HL
0307   77          529     LD (HL),A   ;in Byte 3 speichern
0308   32085C      530  M0308:   LD (LASTK),A   ;und in LASTK
030B   FDCB01EE    531     SET 5,(IY+1)   ;neuer Tastencode liegt vor
030F   C9          532     RET
                   533  
                   534  ;Repeat - Funktion
                   535  
0310   23          536  KEYREP:  INC HL      ;zeigt auf Repeat - Zaehler
0311   3605        537     LD (HL),5   ;wieder = 5
0313   23          538     INC HL      ;zeigt auf Wartezeit
0314   35          539     DEC (HL)
0315   C0          540     RET NZ
                   541  
0316   3A0A5C      542     LD A,(REPPER)  ;Zeitkonstante bei Repeat
0319   77          543     LD (HL),A   ;in Byte 2
031A   23          544     INC HL      ;Byte 3 = Tastencode
031B   7E          545     LD A,(HL)
031C   18EA        546     JR M0308 ;setze letzten Tastendruck
                   547  
031E   42          548  M031E:   LD B,D      ;Funktionstaste merken
031F   1600        549     LD D,0
0321   7B          550     LD A,E
0322   FE27        551     CP 27H      ;'CAPS SHIFT'
0324   D0          552     RET NC      ;oder keine Taste: RETURN
                   553  
0325   FE18        554     CP 18H      ;'SYMBOL SHIFT'
0327   2003        555     JR NZ,M032C
0329   CB78        556     BIT 7,B     ;RETURN bei 'SYMBOL SHIFT'
032B   C0          557     RET NZ      ;allein
032C   210502      558  M032C:   LD HL,KEYTAB   ;Tastaturtabelle
032F   19          559     ADD HL,DE   ;aktuelles Zeichen als ASCII-
0330   7E          560     LD A,(HL)   ;Wert aus der Tabelle holen
0331   37          561     SCF      ;CARRY = Zeichen gefunden
0332   C9          562     RET
                   563  ;----------------------------------------------------
                   564  
                   565  ;Auswertung des ermittelten Tastencodes
                   566  ;und Bildung der Basictoken je nach Eingabemodus
                   567  ;(Cursor Mode K,L,C und E)
                   568  
0333   7B          569  M0333:   LD A,E      ;ASCII-Code der Taste
0334   FE3A        570     CP 3AH      ;Ziffer, Space, Enter oder
0336   382F        571     JR C,M0367  ;Shift, dann Sprung
0338   0D          572     DEC C    ;nur A....Z
0339   FA4F03      573     JP M,M034F
033C   2803        574     JR Z,M0341
033E   C64F        575     ADD A,4FH   ;revers Buchstaben liegen ab 90H
0340   C9          576     RET
                   577  
                   578  ;gruene Tokens ueber Tasten A....Z
                   579  
0341   21EB01      580  M0341:   LD HL,1EBH
                              SP                                PAGE  11
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0344   04          581     INC B
0345   2803        582     JR Z,TABDIR
                   583  
                   584  ;rote Tokens unter den Tasten A....Z
                   585  
0347   210502      586     LD HL,KEYTAB   ;Tastaturtabelle
                   587  
                   588  ;endgueltiges Token wird aus der
                   589  ;entsprechenden Tabelle geladen
                   590  
034A   1600        591  TABDIR:  LD D,0      ;E = ASCII - Wert
034C   19          592     ADD HL,DE   ;HL = Basisadresse -41H bzw. 30H
034D   7E          593     LD A,(HL)
034E   C9          594     RET
                   595  
                   596  ;rote Tokens auf den Tasten A....Z
                   597  
034F   212902      598  M034F:   LD HL,229H
0352   CB40        599     BIT 0,B
0354   28F4        600     JR Z,TABDIR ;'SYMBOL SHIFT' + Buchstabe
0356   CB5A        601     BIT 3,D     ;K - Modus
0358   280A        602     JR Z,M0364
035A   FDCB305E    603     BIT 3,(IY+30H) ;FLAGS2 pruefen auf 'CAPS LOCK'
035E   C0          604     RET NZ
035F   04          605     INC B    ;SHIFT ?
0360   C0          606     RET NZ
0361   C620        607     ADD A,20H   ;ASCII - Wert fuer Kleinschreibung
0363   C9          608     RET
                   609  
0364   C6A5        610  M0364:   ADD A,0A5H  ;direkt erzeugbare Tokens
0366   C9          611     RET      ;durch Addition (E6H)
                   612  
0367   FE30        613  M0367:   CP 30H      ;Zeichen <30H ?
0369   D8          614     RET C
036A   0D          615     DEC C    ;Modus
036B   FA9D03      616     JP M,M039D  ;bei K,L,C
036E   2019        617     JR NZ,M0389 ;bei G
                   618  
                   619  ;rote Tokens unter den Tasten 0....9
                   620  
0370   215402      621     LD HL,254H
0373   CB68        622     BIT 5,B
0375   28D3        623     JR Z,TABDIR ;ohne 'CAPS SHIFT'
0377   FE38        624     CP 38H
0379   3007        625     JR NC,M0382
037B   D620        626     SUB 20H     ;aus 30H..37H wird 10H..17H
037D   04          627     INC B
037E   C8          628     RET Z    ;wenn ohne SHIFT
037F   C608        629     ADD A,8     ;Farbcode 18H..1FH
0381   C9          630     RET
                   631  ;Tasten 8 und 9 (Codes fuer BRIGHT und FLASH)
0382   D636        632  M0382:   SUB 36H     ;erzeuge 2 oder 3 ohne SHIFT
0384   04          633     INC B
0385   C8          634     RET Z    ;ohne SHIFT
0386   C6FE        635     ADD A,0FEH  ;erzeuge 0 oder 1 mit SHIFT
0388   C9          636     RET
                   637  
                   638  ;Grafikzeichen auf den Tasten 0....9
                              SP                                PAGE  12
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                   639  
0389   213002      640  M0389:   LD HL,230H  ;(mit 'CAPS SHIFT')
038C   FE39        641     CP 39H      ;Test auf 'GRAPHICS'
038E   28BA        642     JR Z,TABDIR
0390   FE30        643     CP 30H      ;Test auf 'DELETE'
0392   28B6        644     JR Z,TABDIR
0394   E607        645     AND 7    ;nur Tasten '1...7'
0396   C680        646     ADD A,80H   ;80H..87H sind die Grafikzeichen
0398   04          647     INC B
0399   C8          648     RET Z    ;wenn kein SHIFT
039A   EE0F        649     XOR 0FH     ;erzeuge Steuerzeichen ueber den
                   650           ;Tasten 1...8 (Codes:88H..8FH)
039C   C9          651     RET
                   652  
039D   04          653  M039D:   INC B
039E   C8          654     RET Z    ;wenn kein SHIFT
039F   CB68        655     BIT 5,B     ;'CAPS SHIFT' ?
                   656  
                   657  ;Befehle ueber den Tasten 0....9
                   658  
03A1   213002      659     LD HL,230H
03A4   20A4        660     JR NZ,TABDIR
03A6   D610        661     SUB 10H     ;aus 30H..39H wird 20H..29H
03A8   FE22        662     CP 22H      ;'AT-SIGN' ?
03AA   2806        663     JR Z,M03B2
03AC   FE20        664     CP 20H      ;unterstreichen ?
03AE   C0          665     RET NZ
03AF   3E5F        666     LD A,5FH ;UNDERLINE
03B1   C9          667     RET
                   668  
03B2   3E40        669  M03B2:   LD A,40H
03B4   C9          670     RET
                   671  ;-----------------------------------------------------
                   672  
                   673  ;Lautsprecher = Routinen
                   674  ;Bit 4 von Port 0FEH steuert den Lautsprecher
                   675  ;High = stromlos
                   676  
03B5   F3          677  PIEPEN:  DI    ;Tastatur und Uhr gesperrt
03B6   7D          678     LD A,L
03B7   CB3D        679     SRL L
03B9   CB3D        680     SRL L
03BB   2F          681     CPL
03BC   E603        682     AND 3
03BE   4F          683     LD C,A
03BF   0600        684     LD B,0
03C1   DD21D103    685     LD IX,3D1H  ;Basisadresse der Zeitschleife
03C5   DD09        686     ADD IX,BC
03C7   3A485C      687     LD A,(BORDCR)  ;Bordercolor * 8
03CA   E638        688     AND 38H     ;Lautsprecher aktivieren
03CC   0F          689     RRCA     ;in Bit 0...2 von A
03CD   0F          690     RRCA
03CE   0F          691     RRCA
03CF   F608        692     OR 8     ;Kassettenausgang abschalten
03D1   00          693     NOP
03D2   00          694     NOP
03D3   00          695     NOP
03D4   04          696     INC B
                              SP                                PAGE  13
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

03D5   0C          697     INC C
03D6   0D          698  HALBZE:  DEC C    ;Zeitschleife fuer halbe Periode
03D7   20FD        699     JR NZ,HALBZE
03D9   0E3F        700     LD C,3FH
03DB   05          701     DEC B
03DC   C2D603      702     JP NZ,HALBZE
03DF   EE10        703     XOR 10H     ;Bit 4 invertieren
03E1   D3FE        704     OUT (0FEH),A
03E3   44          705     LD B,H      ;B wieder laden
03E4   4F          706     LD C,A      ;A retten
03E5   CB67        707     BIT 4,A     ;Mitte des Zyklus ?
03E7   2009        708     JR NZ,TONMIT   ;ja
03E9   7A          709     LD A,D      ;DE = 0 ?
03EA   B3          710     OR E
03EB   2809        711     JR Z,TONEND ;0 = Pieper Ende
03ED   79          712     LD A,C      ;A zurueck
03EE   4D          713     LD C,L
03EF   1B          714     DEC DE      ;Schleifenzaehler - 1
03F0   DDE9        715     JP (IX)
                   716  
03F2   4D          717  TONMIT:  LD C,L
03F3   0C          718     INC C
03F4   DDE9        719     JP (IX)     ;weiter
                   720  
03F6   FB          721  TONEND:  EI
03F7   C9          722     RET
                   723  
                   724  ;Befehlsausfuehrung 'BEEP'
                   725  
03F8   EF          726  M03F8:   RST CALRUF  ;Aufruf Calculator
                   727           ;um die Werte fuer Tonhoehe
                   728           ;(P bzw I=INT(P)) und die
                   729           ;Zeit T zu berechnen
03F9   31          730     DEFB 031H
03FA   27          731     DEFB 027H
03FB   C0          732     DEFB 0C0H
03FC   03          733     DEFB 003H
03FD   34          734     DEFB 034H
03FE   EC          735     DEFB 0ECH
03FF   6C          736     DEFB 06CH
0400   98          737     DEFB 098H
0401   1F          738     DEFB 01FH
0402   F5          739     DEFB 0F5H
0403   04          740     DEFB 004H
0404   A1          741     DEFB 0A1H
0405   0F          742     DEFB 00FH
0406   38          743     DEFB 038H
                   744  
0407   21925C      745     LD HL,MEMBOT
040A   7E          746     LD A,(HL)   ;Exponent von I holen
040B   A7          747     AND A
040C   205E        748     JR NZ,ERRTON   ;nicht 0: ERROR
040E   23          749     INC HL
040F   4E          750     LD C,(HL)   ;Vorzeichenbyte
0410   23          751     INC HL
0411   46          752     LD B,(HL)   ;Low-Byte
0412   78          753     LD A,B
0413   17          754     RLA
                              SP                                PAGE  14
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0414   9F          755     SBC A,A     ;Test -128<=I<=+127 ?
0415   B9          756     CP C
0416   2054        757     JR NZ,ERRTON
0418   23          758     INC HL
0419   BE          759     CP (HL)
041A   2050        760     JR NZ,ERRTON
                   761  
041C   78          762     LD A,B      ;Low-Byte in A
041D   C63C        763     ADD A,3CH   ;-60 bis +67
041F   F22504      764     JP P,M0425  ;ok
0422   E26C04      765     JP PO,ERRTON
                   766  
                   767  ;Oktave des Tons in B suchen
                   768  
0425   06FA        769  M0425:   LD B,0FAH   ;6 Oktaven unter mittlerem C
0427   04          770  OKTAV:   INC B    ;beginnen
0428   D60C        771     SUB 12      ;pro Oktave 12 Toene abziehen
042A   30FB        772     JR NC,OKTAV
042C   C60C        773     ADD A,12 ;A: Zeiger auf Halbton dieser Oktave
042E   C5          774     PUSH BC     ;Nr der Okt.
042F   216E04      775     LD HL,TONC
0432   CD0634      776     CALL M3406  ;Halbton in A in den
0435   CDB433      777     CALL M33B4  ;Calculator-Stack
0438   EF          778     RST CALRUF  ;Tonhoehe berechnen
0439   04          779     DEFB 4
043A   38          780     DEFB 38H
                   781  
043B   F1          782     POP AF      ;Oktav-Nr
043C   86          783     ADD A,(HL)  ;add. Exponent = *2
043D   77          784     LD (HL),A
                   785  
043E   EF          786     RST CALRUF
043F   C0          787     DEFB 0C0H   ;Frequenz in MEM0
0440   02          788     DEFB 2
0441   31          789     DEFB 31H
0442   38          790     DEFB 38H
                   791  
0443   CD941E      792     CALL INTEG1 ;Zeit muss < 10 sein
0446   FE0B        793     CP 11
0448   3022        794     JR NC,ERRTON   ;sonst Error
                   795  
044A   EF          796     RST CALRUF  ;Berechnung Frequenz*Zeit
044B   E0          797     DEFB 0E0H   ;ermittelte Frequenz holen
044C   04          798     DEFB 4H     ;T * F
044D   E0          799     DEFB 0E0H
044E   34          800     DEFB 34H
044F   80          801     DEFB 80H
0450   43          802     DEFB 43H
0451   55          803     DEFB 55H
0452   9F          804     DEFB 9FH
0453   80          805     DEFB 80H
0454   01          806     DEFB 1H
0455   05          807     DEFB 5H
0456   34          808     DEFB 34H
0457   35          809     DEFB 35H
0458   71          810     DEFB 71H
0459   03          811     DEFB 3H
045A   38          812     DEFB 38H
                              SP                                PAGE  15
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                   813  
045B   CD991E      814     CALL M1E99  ;Zeitschleifenwert holen
045E   C5          815     PUSH BC     ;und retten
045F   CD991E      816     CALL M1E99  ;Frequenz * Zeit --> BC
0462   E1          817     POP HL
0463   50          818     LD D,B
0464   59          819     LD E,C      ;DE=Anzahl der Durchlaeufe
                   820  
0465   7A          821     LD A,D
0466   B3          822     OR E
0467   C8          823     RET Z
                   824  
0468   1B          825     DEC DE
0469   C3B503      826     JP PIEPEN      ;Tonausgabe
                   827  
046C   CF          828  ERRTON:  RST ERRAUS
046D   0A          829     DEFB 0AH
                   830  
                   831  ;Halbtontabelle
                   832  
046E   89          833  TONC: DEFB 89H
046F   02          834     DEFB 2H
0470   D0          835     DEFB 0D0H
0471   12          836     DEFB 12H
0472   86          837     DEFB 86H
0473   89          838  TONCIS:  DEFB 89H
0474   0A          839     DEFB 0AH
0475   97          840     DEFB 97H
0476   60          841     DEFB 60H
0477   75          842     DEFB 75H
0478   89          843  TOND: DEFB 89H
0479   12          844     DEFB 12H
047A   D5          845     DEFB 0D5H
047B   17          846     DEFB 17H
047C   1F          847     DEFB 1FH
047D   89          848  TONDIS:  DEFB 89H
047E   1B          849     DEFB 1BH
047F   90          850     DEFB 90H
0480   41          851     DEFB 41H
0481   02          852     DEFB 2
0482   89          853  TONE: DEFB 89H
0483   24          854     DEFB 24H
0484   D0          855     DEFB 0D0H
0485   53          856     DEFB 53H
0486   CA          857     DEFB 0CAH
0487   89          858  TONF: DEFB 89H
0488   2E          859     DEFB 2EH
0489   9D          860     DEFB 9DH
048A   36          861     DEFB 36H
048B   B1          862     DEFB 0B1H
048C   89          863  TONFIS:  DEFB 89H
048D   38          864     DEFB 38H
048E   FF          865     DEFB 0FFH
048F   49          866     DEFB 49H
0490   3E          867     DEFB 3EH
0491   89          868  TONG: DEFB 89H
0492   43          869     DEFB 43H
0493   FF          870     DEFB 0FFH
                              SP                                PAGE  16
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0494   6A          871     DEFB 6AH
0495   73          872     DEFB 73H
0496   89          873  TONGIS:  DEFB 89H
0497   4F          874     DEFB 4FH
0498   A7          875     DEFB 0A7H
0499   00          876     DEFB 0
049A   54          877     DEFB 54H
049B   89          878  TONA: DEFB 89H
049C   5C          879     DEFB 5CH
049D   00          880     DEFB 0
049E   00          881     DEFB 0
049F   00          882     DEFB 0
04A0   89          883  TONB: DEFB 89H
04A1   69          884     DEFB 69H
04A2   14          885     DEFB 14H
04A3   F6          886     DEFB 0F6H
04A4   24          887     DEFB 24H
04A5   89          888  TONH: DEFB 89H
04A6   76          889     DEFB 76H
04A7   F1          890     DEFB 0F1H
04A8   10          891     DEFB 10H
04A9   05          892     DEFB 5
                   893  
                   894  ;Diese Routine wird nicht benutzt !!!
                   895  
04AA   CDFB24      896     CALL 24FBH
04AD   3A3B5C      897     LD A,(FLAGS)   ;Bit 1= Printer ein
04B0   87          898     ADD A,A
04B1   FA8A1C      899     JP M,M1C8A
04B4   E1          900     POP HL
04B5   D0          901     RET NC
04B6   E5          902     PUSH HL
04B7   CDF12B      903     CALL M2BF1
04BA   62          904     LD H,D
04BB   6B          905     LD L,E
04BC   0D          906     DEC C
04BD   F8          907     RET M
04BE   09          908     ADD HL,BC
04BF   CBFE        909     SET 7,(HL)
04C1   C9          910     RET
                   911  
                   912  
                   913  ;Kassettenrekorder
                   914  
                   915  ;Byte abspeichern
                   916  
04C2   213F05      917  M04C2:   LD HL,SAVLOA   ;Returnadresse fuer SAVE, LOAD
04C5   E5          918     PUSH HL
04C6   21801F      919     LD HL,1F80H ;Konstante fuer 5 s Headerton
04C9   CB7F        920     BIT 7,A
04CB   2803        921     JR Z,M04D0  ;Header speichern
04CD   21980C      922     LD HL,0C98H ;Konstante fuer 2 s
04D0   08          923  M04D0:   EX AF,AF'   ;Programm-Header-Flag retten
04D1   13          924     INC DE
04D2   DD2B        925     DEC IX
04D4   F3          926     DI
04D5   3E02        927     LD A,2      ;Bordercolour rot und 'MIC' ein
04D7   47          928     LD B,A
                              SP                                PAGE  17
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                   929  
04D8   10FE        930  HEADER:  DJNZ HEADER ;Bitperiode Headerton
04DA   D3FE        931     OUT (0FEH),A   ; 'MIC' ein/ausschalten
04DC   EE0F        932     XOR 0FH
04DE   06A4        933     LD B,0A4H   ;Konstante Bitperiode
04E0   2D          934     DEC L
04E1   20F5        935     JR NZ,HEADER
04E3   05          936     DEC B
04E4   25          937     DEC H    ;Wiederholung bis HL < 0
04E5   F2D804      938     JP P,HEADER
                   939  
                   940  ;Synchronimpuls senden
                   941  
04E8   062F        942     LD B,2FH
04EA   10FE        943  SYNC1:   DJNZ SYNC1  ;'MIC' aus
04EC   D3FE        944     OUT (0FEH),A   ;'MIC' ein und rot
04EE   3E0D        945     LD A,0DH ;fuer 'MIC' ein und 'CYAN'
04F0   0637        946     LD B,37H
04F2   10FE        947  SYNC2:   DJNZ SYNC2
04F4   D3FE        948     OUT (0FEH),A   ;'MIC' aus und 'CYAN'
                   949  
04F6   010E3B      950     LD BC,3B0EH
04F9   08          951     EX AF,AF'
04FA   6F          952     LD L,A      ;Flag in L
04FB   C30705      953     JP M0507
                   954  
04FE   7A          955  BYTEAU:  LD A,D
04FF   B3          956     OR E
0500   280C        957     JR Z,M050E  ;Bytes Ende und Parity senden
                   958  
0502   DD6E00      959     LD L,(IX+0) ;sonst naechstes Byte
0505   7C          960  M0505:   LD A,H      ;"Parity"-Bildung in A
0506   AD          961     XOR L    ;mit aktuellem Byte
0507   67          962  M0507:   LD H,A
0508   3E01        963     LD A,1      ;'MIC' ein und 'blau'
050A   37          964     SCF      ;Endemarkierung
050B   C32505      965     JP SAVE8 ;Fuer 8 Bit setzen und senden
                   966  
050E   6C          967  M050E:   LD L,H      ;Ende-"parity" nach L
050F   18F4        968     JR M0505
                   969  
0511   79          970  BITEND:  LD A,C      ;Teil 2 des Bits senden und hierfuer
0512   CB78        971     BIT 7,B     ;Zero setzen
                   972  
0514   10FE        973  BITANF:  DJNZ BITANF ;Zeitschleife
0516   3004        974     JR NC,BITOUT   ;wenn Nullbit
0518   0642        975     LD B,42H
051A   10FE        976  BITSET:  DJNZ BITSET ;bei 1 weiter verzoegern
051C   D3FE        977  BITOUT:  OUT (0FEH),A   ;Teil1: 'MIC' ein und blau
                   978           ;Teil2: 'MIC' aus und gelb
051E   063E        979     LD B,3EH
0520   20EF        980     JR NZ,BITEND   ;Teil2 ausgeben
0522   05          981     DEC B
0523   AF          982     XOR A    ;CY=0
0524   3C          983     INC A    ;'MIC' ein mit blau
                   984  
                   985  ;Beim ersten Bit eines Byte ist Carry gesetzt, sonst immer
                   986  ;geloescht --> Begrenzung auf 8 Bit beim Rotieren des L-Reg.
                              SP                                PAGE  18
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                   987  
0525   CB15        988  SAVE8:   RL L     ;Bit 7 der Ausgabe ins Carry
0527   C21405      989     JP NZ,BITANF   ;weiter bis 8 Bit fertig
                   990  
052A   1B          991     DEC DE      ;Bytezaehler
052B   DD23        992     INC IX      ;Adresse naechstes Byte
052D   0631        993     LD B,31H
052F   3E7F        994     LD A,7FH
0531   DBFE        995     IN A,(0FEH) ;Break-Taste?
0533   1F          996     RRA
0534   D0          997     RET NC      ;ja
                   998  
0535   7A          999     LD A,D
0536   3C         1000     INC A
0537   C2FE04     1001     JP NZ,BYTEAU   ;Ausgabe bis DE=FFFFH
                  1002  
053A   063B       1003     LD B,3BH
053C   10FE       1004  SAVEDE:  DJNZ SAVEDE ;etwas verzoegern
053E   C9         1005     RET
                  1006  
                  1007  
                  1008  ;Nach SAVE oder LOAD hierhin zurueckkehren
                  1009  
053F   F5         1010  SAVLOA:  PUSH AF     ;CY retten
0540   3A485C     1011     LD A,(BORDCR)  ;original Bordercolor
0543   E638       1012     AND 38H     ;nehmen und in Bit 0..2
0545   0F         1013     RRCA
0546   0F         1014     RRCA
0547   0F         1015     RRCA
0548   D3FE       1016     OUT (0FEH),A   ;Border original
054A   3E7F       1017     LD A,7FH
054C   DBFE       1018     IN A,(0FEH) ;Breaktaste?
054E   1F         1019     RRA
054F   FB         1020     EI
0550   3802       1021     JR C,M0554  ;nein
                  1022  
0552   CF         1023     RST ERRAUS  ;Meldung
0553   0C         1024     DEFB 0CH
                  1025  
0554   F1         1026  M0554:   POP AF      ;Flags
0555   C9         1027     RET
                  1028  
                  1029  ;UP fuer LOAD und VERIFY
                  1030  
0556   14         1031  M0556:   INC D    ;Zero loeschen
0557   08         1032     EX AF,AF'   ;und retten
0558   15         1033     DEC D    ;D regen.
0559   F3         1034     DI
055A   3E0F       1035     LD A,0FH ;Border colour weiss
055C   D3FE       1036     OUT (0FEH),A
055E   213F05     1037     LD HL,SAVLOA   ;Returnadr.
0561   E5         1038     PUSH HL
0562   DBFE       1039     IN A,(0FEH) ;1 * zum Initialisieren lesen
0564   1F         1040     RRA
0565   E620       1041     AND 20H     ; 'EAR'-Bit merken
0567   F602       1042     OR 2     ;Border-Colour rot
0569   4F         1043     LD C,A      ;retten (22H = aus, 2 = ein)
056A   BF         1044     CP A     ;fuer Uebersprung RET NZ
                              SP                                PAGE  19
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  1045  
056B   C0         1046  LOABRK:  RET NZ      ;EXIT bei Break
                  1047  
056C   CDE705     1048  LOABEG:  CALL FLANK1 ;CY geloescht: keine Flanke
056F   30FA       1049     JR NC,LOABRK   ;gefunden oder Break gedrueckt
                  1050  
0571   211504     1051     LD HL,415H
0574   10FE       1052  LDWART:  DJNZ LDWART ;Warteschleife etwa 1 s
0576   2B         1053     DEC HL
0577   7C         1054     LD A,H
0578   B5         1055     OR L
0579   20F9       1056     JR NZ,LDWART
057B   CDE305     1057     CALL FLANK2 ;noch mal auf 2 Flanken warten
057E   30EB       1058     JR NC,LOABRK   ;falls nicht, Error
                  1059  
                  1060  ;Nur ein Headersignal akzeptieren
                  1061  
0580   069C       1062  HEADIN:  LD B,9CH ;Zeitkonstante
0582   CDE305     1063     CALL FLANK2 ;2 Flanken erwarten
0585   30E4       1064     JR NC,LOABRK   ;falls nicht Error
0587   3EC6       1065     LD A,0C6H   ;max. Zeitabstand
0589   B8         1066     CP B     ;ca. 3000 T Zyklen
058A   30E0       1067     JR NC,LOABEG   ;sonst noch mal suchen
058C   24         1068     INC H    ;256 Doppelflanken abwarten
058D   20F1       1069     JR NZ,HEADIN
                  1070  
                  1071  ;Jetzt wird ein Synchronimpuls erwartet
                  1072  
058F   06C9       1073  SYNWAR:  LD B,0C9H   ;Zeitkonstante
0591   CDE705     1074     CALL FLANK1
0594   30D5       1075     JR NC,LOABRK
0596   78         1076     LD A,B      ;2 kurz aufeinander folgende
0597   FED4       1077     CP 0D4H     ;Flanken bilden den Sync-Impuls
0599   30F4       1078     JR NC,SYNWAR
059B   CDE705     1079     CALL FLANK1 ;abfallende Sync-Flanke
059E   D0         1080     RET NC      ;muss existieren
                  1081  
                  1082  ;Die Bytes koennen geladen oder verifiziert werden
                  1083  
059F   79         1084     LD A,C      ;Border Colours auf blau
05A0   EE03       1085     XOR 3    ;bzw. gelb schalten
05A2   4F         1086     LD C,A
05A3   2600       1087     LD H,0      ;fuer Parity-Pruefung
05A5   06B0       1088     LD B,0B0H   ;Zeitkonstante fuer FLAG-Byte
05A7   181F       1089     JR M05C8
                  1090  
05A9   08         1091  M05A9:   EX AF,AF'   ;Flags holen
05AA   2007       1092     JR NZ,LOAFLG   ;nur bei Flagpruefung (1. Byte)
05AC   300F       1093     JR NC,VERIFY
05AE   DD7500     1094     LD (IX+0),L ;geladenes Byte speichern
05B1   180F       1095     JR LADWEI   ;und naechstes laden
05B3   CB11       1096  LOAFLG:  RL C     ;CY retten
05B5   AD         1097     XOR L    ;erstes Byte = Typ-Flag
05B6   C0         1098     RET NZ      ;nein Error
                  1099  
05B7   79         1100     LD A,C      ;sonst CY wiederholen
05B8   1F         1101     RRA
05B9   4F         1102     LD C,A
                              SP                                PAGE  20
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

05BA   13         1103     INC DE      ;dieses INC wird unten wieder
05BB   1807       1104     JR M05C4 ;rueckgaengig gemacht
                  1105  
05BD   DD7E00     1106  VERIFY:  LD A,(IX+0) ;bei Verify Originalbyte holen
05C0   AD         1107     XOR L    ;und vergleichen
05C1   C0         1108     RET NZ      ;Verify-Error (Carry geloescht)
                  1109  
05C2   DD23       1110  LADWEI:  INC IX      ;Adresse fuer Load/Verify erhoehen
05C4   1B         1111  M05C4:   DEC DE      ;Zaehler -1
05C5   08         1112     EX AF,AF'   ;Flags retten
05C6   06B2       1113     LD B,0B2H   ;Zeitkonstante
05C8   2E01       1114  M05C8:   LD L,1      ;Endekennung beim 9. Schieben
                  1115  
05CA   CDE305     1116  BITHOL:  CALL FLANK2 ;Laenge der Pulse holen
05CD   D0         1117     RET NC      ;Zeitueberschreitung
                  1118  
05CE   3ECB       1119     LD A,0CBH   ;Zeitvergleich, um daraus eine 0
05D0   B8         1120     CP B     ;oder 1 im CY zu gewinnen und
05D1   CB15       1121     RL L     ;in L zu schieben
05D3   06B0       1122     LD B,0B0H   ;Zeitkonstante naechstes Bit
05D5   D2CA05     1123     JP NC,BITHOL   ;Byte noch nicht kompl.
                  1124  
05D8   7C         1125     LD A,H      ;Parity holen
05D9   AD         1126     XOR L    ;und neues bilden
05DA   67         1127     LD H,A      ;neues Parity
05DB   7A         1128     LD A,D
05DC   B3         1129     OR E
05DD   20CA       1130     JR NZ,M05A9 ;Ende noch nicht erreicht
05DF   7C         1131     LD A,H      ;letztes Parity-Byte muss 0
05E0   FE01       1132     CP 1     ;sein: CY gesetzt
05E2   C9         1133     RET      ;sonst Carry geloescht: Error
                  1134  
                  1135  
                  1136  ;Pegelwechsel (Flanken) am Kassettenrekoordereingang erfassen
                  1137  
                  1138  ;B:  Zeitzaehler
                  1139  ;Innerhalb dieser festgelegten Zeit muessen die geforderten
                  1140  ;Flanken auftreten --> sonst Error mit CY=0
                  1141  
05E3   CDE705     1142  FLANK2:  CALL FLANK1 ;Auf 2 Flanken pruefen
05E6   D0         1143     RET NC      ;Error
                  1144  
05E7   3E16       1145  FLANK1:  LD A,16H ;1 Flanke pruefen
05E9   3D         1146  WARTLD:  DEC A    ;warten
05EA   20FD       1147     JR NZ,WARTLD
05EC   A7         1148     AND A    ;CY=0
05ED   04         1149  FLANKE:  INC B    ;Zeitzaehler
05EE   C8         1150     RET Z    ;Zeitende: CY Z
                  1151  
05EF   3E7F       1152     LD A,7FH
05F1   DBFE       1153     IN A,(0FEH) ;Breaktaste und 'EAR'
05F3   1F         1154     RRA      ;Break gedrueckt:
05F4   D0         1155     RET NC      ;   NC & NZ
                  1156  
05F5   A9         1157     XOR C    ;Flanke aufgetreten ?
05F6   E620       1158     AND 20H
05F8   28F3       1159     JR Z,FLANKE ;nein: weiter warten
                  1160  
                              SP                                PAGE  21
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  1161  ;Innerhalb der erlaubten Zeit wurde Flanke erkannt
                  1162  
05FA   79         1163     LD A,C
05FB   2F         1164     CPL      ;C = Flankenart
05FC   4F         1165     LD C,A
05FD   E607       1166     AND 7    ;Bordercolour ausblenden
05FF   F608       1167     OR 8     ;MIC aus
0601   D3FE       1168     OUT (0FEH),A
0603   37         1169     SCF      ;CY=1: OK
0604   C9         1170     RET
                  1171  
                  1172  ;Einsprung bei LOAD, SAVE, VERIFY & MERGE
                  1173  
                  1174  ;Unterscheidung der Befehle Mittels TADDR
                  1175  
0605   F1         1176  KASHAU:  POP AF      ;Ret-Adr. vernichten
0606   3A745C     1177     LD A,(TADDR)   ;Naechster Token in der Tabelle
0609   D6E0       1178     SUB 0E0H ;-E0H, um 0 fuer SAVE, 1 fuer LOAD,
                  1179           ;2 fuer VERIFY und 3 fuer MERGE zu
                  1180           ;erhalten
060B   32745C     1181     LD (TADDR),A
060E   CD8C1C     1182     CALL PAR0A  ;Namensparameter in Calc.-Stack
0611   CD3025     1183     CALL M2530  ;Syntaxpruefung?
0614   283C       1184     JR Z,M0652  ;ja
                  1185  
0616   011100     1186     LD BC,17 ;Namenslaenge: 17
0619   3A745C     1187     LD A,(TADDR)   ;Adresse des naechsten Tokens
                  1188           ;in der Tabelle
061C   A7         1189     AND A
061D   2802       1190     JR Z,KASPAC ;bei SAVE
061F   0E22       1191     LD C,34     ;sonst Laenge 34
0621   F7         1192  KASPAC:  RST REST30  ;Speicher reservieren
0622   D5         1193     PUSH DE     ;Startadresse in IX
0623   DDE1       1194     POP IX
0625   060B       1195     LD B,11
0627   3E20       1196     LD A,' '
0629   12         1197  CLRNAM:  LD (DE),A   ;Filename loeschen
062A   13         1198     INC DE
062B   10FC       1199     DJNZ CLRNAM
                  1200  
062D   DD3601FF   1201     LD (IX+1),255  ;zeigt 'kein Name' an
0631   CDF12B     1202     CALL M2BF1  ;Namensparameter holen
0634   21F6FF     1203     LD HL,-10
0637   0B         1204     DEC BC
0638   09         1205     ADD HL,BC   ;Laenge=10?
0639   03         1206     INC BC
063A   300F       1207     JR NC,M064B ;<=10
063C   3A745C     1208     LD A,(TADDR)   ;falls nicht SAVE:
063F   A7         1209     AND A
0640   2002       1210     JR NZ,NAMOK ;mehr zulassen
0642   CF         1211  NAMERR:  RST ERRAUS
0643   0E         1212     DEFB 0EH ;'INVALD FILE NAME'
                  1213  
0644   78         1214  NAMOK:   LD A,B
0645   B1         1215     OR C
0646   280A       1216     JR Z,M0652  ;ohne Namensangabe
0648   010A00     1217     LD BC,10 ;Name auf 10 begrenzen
064B   DDE5       1218  M064B:   PUSH IX     ;Adresse des Namens
                              SP                                PAGE  22
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

064D   E1         1219     POP HL      ;in HL
064E   23         1220     INC HL
064F   EB         1221     EX DE,HL
0650   EDB0       1222     LDIR     ;Namen umspeichern
                  1223  
0652   DF         1224  M0652:   RST GETAKT  ;naechstes Zeichen lesen
0653   FEE4       1225     CP 0E4H     ;Token 'DATA' ?
0655   2049       1226     JR NZ,M06A0 ;nein
0657   3A745C     1227     LD A,(TADDR)   ;auf MERGE pruefen
065A   FE03       1228     CP 3
065C   CA8A1C     1229     JP Z,M1C8A  ;'MERGE' mit 'DATA': ERROR
065F   E7         1230     RST GETNXT  ;naechstes Zeichen
0660   CDB228     1231     CALL M28B2  ;in Variablentabelle suchen
0663   CBF9       1232     SET 7,C     ;Bit 7 des Arraynamens setzen
0665   300B       1233     JR NC,M0672 ;bei vorhandenen Array
0667   210000     1234     LD HL,0     ;neues Array
066A   3A745C     1235     LD A,(TADDR)   ;Adresse des naechsten Tokens
                  1236           ;in der Tabelle
066D   3D         1237     DEC A
066E   2815       1238     JR Z,M0685  ;nur 'LOAD' zugelassen
                  1239  
0670   CF         1240     RST ERRAUS
0671   01         1241     DEFB 1      ;'VARIABLE NOT FOUND'
                  1242  
0672   C28A1C     1243  M0672:   JP NZ,M1C8A
0675   CD3025     1244     CALL M2530  ;bei Syntaxpruefung
0678   2818       1245     JR Z,M0692  ;Sprung
067A   23         1246     INC HL      ;sonst Laengenbyte LOW
067B   7E         1247     LD A,(HL)
067C   DD770B     1248     LD (IX+0BH),A
067F   23         1249     INC HL      ;und HIGH in den
0680   7E         1250     LD A,(HL)   ;Workspace
0681   DD770C     1251     LD (IX+0CH),A
0684   23         1252     INC HL
0685   DD710E     1253  M0685:   LD (IX+0EH),C  ;Arrayname speichern
0688   3E01       1254     LD A,1      ;Zahlenarray
068A   CB71       1255     BIT 6,C
068C   2801       1256     JR Z,M068F
068E   3C         1257     INC A    ;Buchstabenarray
068F   DD7700     1258  M068F:   LD (IX+0),A ;erstes Headerbyte
0692   EB         1259  M0692:   EX DE,HL
0693   E7         1260     RST GETNXT  ;naechste Zeichen
0694   FE29       1261     CP ')'
0696   20DA       1262     JR NZ,M0672 ;ERROR C
0698   E7         1263     RST GETNXT
0699   CDEE1B     1264     CALL M1BEE  ;Aussprung bei Syntaxpruefung
069C   EB         1265     EX DE,HL
069D   C35A07     1266     JP M075A ;weiter
                  1267  
06A0   FEAA       1268  M06A0:   CP 0AAH     ;ist Token ='SCREEN$' ?
06A2   201F       1269     JR NZ,M06C3 ;nein
                  1270  
06A4   3A745C     1271     LD A,(TADDR)
06A7   FE03       1272     CP 3     ;bei MERGE ist 'SCREEN$' als
06A9   CA8A1C     1273     JP Z,M1C8A  ;Name nicht zugelassen
06AC   E7         1274     RST GETNXT
06AD   CDEE1B     1275     CALL M1BEE
06B0   DD360B00   1276     LD (IX+0BH),0  ;Laenge des Display- und
                              SP                                PAGE  23
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

06B4   DD360C1B   1277     LD (IX+0CH),1BH   ;Attributspeichers = 1B00H
06B8   210040     1278     LD HL,BILD  ;Video - RAM
06BB   DD750D     1279     LD (IX+0DH),L
06BE   DD740E     1280     LD (IX+0EH),H
06C1   184D       1281     JR M0710
                  1282  
06C3   FEAF       1283  M06C3:   CP 0AFH     ;Token = 'CODE' ?
06C5   204F       1284     JR NZ,M0716 ;nein
06C7   3A745C     1285     LD A,(TADDR)   ;bei MERGE ist 'CODE'
06CA   FE03       1286     CP 3
06CC   CA8A1C     1287     JP Z,M1C8A  ;nicht zugelassen
06CF   E7         1288     RST GETNXT
06D0   CD4820     1289     CALL M2048  ;Eingabeende ?
06D3   200C       1290     JR NZ,M06E1 ;nein
06D5   3A745C     1291     LD A,(TADDR)   ;bei SAVE ist 'CODE'
06D8   A7         1292     AND A
06D9   CA8A1C     1293     JP Z,M1C8A  ;nicht zugelassen
06DC   CDE61C     1294     CALL M1CE6  ;0 auf Calculatorstack fuer Start
06DF   180F       1295     JR M06F0
                  1296  
                  1297  ;Startadresse suchen
                  1298  
06E1   CD821C     1299  M06E1:   CALL PAR06  ;erste Zahl holen
06E4   DF         1300     RST GETAKT  ;naechstes Zeichen
06E5   FE2C       1301     CP ','
06E7   280C       1302     JR Z,M06F5
06E9   3A745C     1303     LD A,(TADDR)   ;ERROR, falls bei 'SAVE'
06EC   A7         1304     AND A    ;nur die Startadresse
06ED   CA8A1C     1305     JP Z,M1C8A  ;und keine Laenge
06F0   CDE61C     1306  M06F0:   CALL M1CE6  ;0 als Laenge auf Calculatorstack
06F3   1804       1307     JR M06F9
                  1308  
06F5   E7         1309  M06F5:   RST GETNXT  ;naechstes Zeichen und die
06F6   CD821C     1310     CALL PAR06  ;Laenge holen
                  1311  
06F9   CDEE1B     1312  M06F9:   CALL M1BEE  ;weiter zum naechsten Befehl,
                  1313           ;falls Syntaxpruefung
06FC   CD991E     1314     CALL M1E99  ;Laenge ins BC Register
06FF   DD710B     1315     LD (IX+0BH),C  ;und in Header
0702   DD700C     1316     LD (IX+0CH),B
0705   CD991E     1317     CALL M1E99  ;ebenso mit der Startadresse
0708   DD710D     1318     LD (IX+0DH),C
070B   DD700E     1319     LD (IX+0EH),B
070E   60         1320     LD H,B      ;Startadresse als Pointer in HL
070F   69         1321     LD L,C
0710   DD360003   1322  M0710:   LD (IX+0),3 ;Typ '3' fuer SCREEN$ und CODE
0714   1844       1323     JR M075A
                  1324  
0716   FECA       1325  M0716:   CP 0CAH     ;Token = 'LINE' ?
0718   2809       1326     JR Z,M0723  ;ja
071A   CDEE1B     1327     CALL M1BEE  ;naechster Befehl bei Syntaxpruef.
071D   DD360E80   1328     LD (IX+0EH),80H   ;falls keine weiteren Parameter
0721   1817       1329     JR M073A
                  1330  
0723   3A745C     1331  M0723:   LD A,(TADDR)   ;pruefen ob 'SAVE', denn eine
0726   A7         1332     AND A    ;Zeilennummer muss folgen
0727   C28A1C     1333     JP NZ,M1C8A ;nicht 'SAVE'
072A   E7         1334     RST GETNXT
                              SP                                PAGE  24
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

072B   CD821C     1335     CALL PAR06  ;Zeilennummer auf Calc-Stack
072E   CDEE1B     1336     CALL M1BEE  ;bei Syntaxpruefung EXIT
0731   CD991E     1337     CALL M1E99  ;sonst Zeilennummer in BC
0734   DD710D     1338     LD (IX+0DH),C
0737   DD700E     1339     LD (IX+0EH),B
073A   DD360000   1340  M073A:   LD (IX+0),0 ;'LINE' und ohne weitere Angaben
                  1341           ;sind vom Typ '0'
                  1342  
073E   2A595C     1343     LD HL,(ELINE)  ;Zeiger auf Variablenende
0741   ED5B535C   1344     LD DE,(PROG)   ;Zeiger auf Start des Basicprogrammes
0745   37         1345     SCF
0746   ED52       1346     SBC HL,DE
0748   DD750B     1347     LD (IX+0BH),L  ;Laenge von Programm + Variablenspeicher
074B   DD740C     1348     LD (IX+0CH),H
074E   2A4B5C     1349     LD HL,(VARS)   ;Beginn der Variablen
0751   ED52       1350     SBC HL,DE
0753   DD750F     1351     LD (IX+0FH),L  ;Programmlaenge
0756   DD7410     1352     LD (IX+10H),H
0759   EB         1353     EX DE,HL ;HL=Programmanfang
                  1354  
                  1355  ;Der Header ist fertig:
                  1356  ;IX+ 0: Typ
                  1357  ;IX+ 1 bis 10: Name bzw. IX+1=FF, wenn kein Name
                  1358  ;IX+ 11,12: Laenge Programm +Variablenspeicher
                  1359  ;IX+ 13,14: Zeilen-Nr.
                  1360  ;IX+ 15,16: Programmlaenge
                  1361  
075A   3A745C     1362  M075A:   LD A,(TADDR)   ;Adresse des naechsten Tokens
                  1363           ;in der Tabelle
075D   A7         1364     AND A    ;SAVE?
075E   CA7009     1365     JP Z,M0970  ;ja
                  1366  
0761   E5         1367     PUSH HL     ;Pointer fuer LOAD etc. retten
0762   011100     1368     LD BC,011H
0765   DD09       1369     ADD IX,BC   ;Adr des 2. Headers
0767   DDE5       1370  M0767:   PUSH IX
0769   111100     1371     LD DE,17 ;17 Bytes laden
076C   AF         1372     XOR A    ;HEADER anmerken
076D   37         1373     SCF      ;LOAD anmerken
076E   CD5605     1374     CALL M0556  ;HEADER laden
0771   DDE1       1375     POP IX      ;2. Headeradr. zurueck
0773   30F2       1376     JR NC,M0767 ;Header noch nicht gefunden
                  1377  
0775   3EFE       1378     LD A,0FEH   ;Kanal S oefffnen
0777   CD0116     1379     CALL OPKAN
077A   FD365203   1380     LD (IY+52H),3  ;Scrolling-Zaehler setzen
077E   0E80       1381     LD C,80H ;Default fuer Haeder falsch
0780   DD7E00     1382     LD A,(IX+0) ;Die beiden Haeder vergleichen
0783   DDBEEF     1383     CP (IX-11H)
0786   2002       1384     JR NZ,M078A ;noch nicht richtig
                  1385  
0788   0EF6       1386     LD C,-10 ;10 Zeichen muessen stimmen
078A   FE04       1387  M078A:   CP 4     ;Typ > 4 ist Unsinn
078C   30D9       1388     JR NC,M0767 ;noch mal Header laden
                  1389  
078E   11C009     1390     LD DE,M09C0 ;Basisadr. Meldungen
0791   C5         1391     PUSH BC
0792   CD0A0C     1392     CALL PRTMEL ;Typ anzeigen
                              SP                                PAGE  25
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0795   C1         1393     POP BC
0796   DDE5       1394     PUSH IX
0798   D1         1395     POP DE      ;Zeiger auf geladenen Haeder
0799   21F0FF     1396     LD HL,-16
079C   19         1397     ADD HL,DE   ;HL: Zeiger auf 1.Header
079D   060A       1398     LD B,10     ;10 Zeichen pruefen
079F   7E         1399     LD A,(HL)
07A0   3C         1400     INC A    ;war Name angegeben?
07A1   2003       1401     JR NZ,M07A6 ;ja
                  1402  
07A3   79         1403     LD A,C      ;nein: Name stimmt immer
07A4   80         1404     ADD A,B
07A5   4F         1405     LD C,A
                  1406  
07A6   13         1407  M07A6:   INC DE
07A7   1A         1408     LD A,(DE)   ;1. Zeichen vergleichen
07A8   BE         1409     CP (HL)     ;und anzeigen
07A9   23         1410     INC HL
07AA   2001       1411     JR NZ,M07AD ;Haeder stimmen nicht
07AC   0C         1412     INC C    ;sonst Zaehler+1
                  1413  
07AD   D7         1414  M07AD:   RST PRTOUT  ;Ausgabe B-mal
07AE   10F6       1415     DJNZ M07A6
                  1416  
07B0   CB79       1417     BIT 7,C     ;C>=0? (Header OK?)
07B2   20B3       1418     JR NZ,M0767 ;nein: noch mal holen
                  1419  
                  1420  ;Weiter, wenn der richtige Header gefunden wurde
                  1421  
07B4   3E0D       1422     LD A,0DH
07B6   D7         1423     RST PRTOUT  ;<CR> ausgeben
07B7   E1         1424     POP HL      ;Pointer
07B8   DD7E00     1425     LD A,(IX+0) ;SCREEN oder
07BB   FE03       1426     CP 3     ;CODE
07BD   280C       1427     JR Z,M07CB  ;ja
                  1428  
07BF   3A745C     1429     LD A,(TADDR)   ;Adresse des naechsten Tokens
                  1430           ;in der Tabelle
07C2   3D         1431     DEC A    ;LOAD-Befehl?
07C3   CA0808     1432     JP Z,M0808  ;ja
                  1433  
07C6   FE02       1434     CP 2     ;MERGE-Befehl?
07C8   CAB608     1435     JP Z,M08B6  ;ja
                  1436  
                  1437  ;Verify-Routine
                  1438  
07CB   E5         1439  M07CB:   PUSH HL     ;Pointer
07CC   DD6EFA     1440     LD L,(IX-6)
07CF   DD66FB     1441     LD H,(IX-5) ;HL: Laenge
07D2   DD5E0B     1442     LD E,(IX+0BH)
07D5   DD560C     1443     LD D,(IX+0CH)  ;DE: Laenge des geladenen Haeders
07D8   7C         1444     LD A,H
07D9   B5         1445     OR L     ;Laenge = 0 ?
07DA   280D       1446     JR Z,M07E9  ;ja
                  1447  
07DC   ED52       1448     SBC HL,DE   ;Neue Laenge > alte Laenge?
07DE   3826       1449     JR C,M0806  ;ja, Error
                  1450  
                              SP                                PAGE  26
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

07E0   2807       1451     JR Z,M07E9  ;gleiche Laenge --> ok
07E2   DD7E00     1452     LD A,(IX+0)
07E5   FE03       1453     CP 3     ;Bei Verify muessen Laengen
                  1454           ;uebereinstimmen
07E7   201D       1455     JR NZ,M0806 ;sonst --> Error
                  1456  
07E9   E1         1457  M07E9:   POP HL      ;Startpointer
07EA   7C         1458     LD A,H
07EB   B5         1459     OR L     ; = 0?
07EC   2006       1460     JR NZ,M07F4 ;nein
                  1461  
07EE   DD6E0D     1462     LD L,(IX+0DH)  ;Startpointer des geladenen
07F1   DD660E     1463     LD H,(IX+0EH)  ;Haeders benutzen
07F4   E5         1464  M07F4:   PUSH HL
07F5   DDE1       1465     POP IX
07F7   3A745C     1466     LD A,(TADDR)   ;Adresse des naechsten Tokens
                  1467           ;in der Tabelle
07FA   FE02       1468     CP 2
07FC   37         1469     SCF      ;CY: LOAD
07FD   2001       1470     JR NZ,M0800
                  1471  
07FF   A7         1472     AND A    ;NC: VERIFY
0800   3EFF       1473  M0800:   LD A,0FFH
                  1474  
                  1475  ;UP-Ruf fuer alle Ladevorgaenge (LOAD, VERIFY, MERGE)
                  1476  
0802   CD5605     1477  M0802:   CALL M0556
0805   D8         1478     RET C    ;kein Fehler
                  1479  
0806   CF         1480  M0806:   RST ERRAUS  ;Meldung:
0807   1A         1481     DEFB 1AH ;'TAPE LOADING ERROR'
                  1482  
                  1483  ;LOAD-Routine
                  1484  
0808   DD5E0B     1485  M0808:   LD E,(IX+11)   ;Laenge aus geladenem Header
080B   DD560C     1486     LD D,(IX+12)
080E   E5         1487     PUSH HL     ;Zielpointer
080F   7C         1488     LD A,H
0810   B5         1489     OR L     ;=0? (nichtdeklariertes Array?)
0811   2006       1490     JR NZ,M0819 ;nein
                  1491  
0813   13         1492     INC DE      ;ja
0814   13         1493     INC DE
0815   13         1494     INC DE      ;+3 fuer Name und Laenge
0816   EB         1495     EX DE,HL
0817   180C       1496     JR M0825
                  1497  
0819   DD6EFA     1498  M0819:   LD L,(IX-6) ;Laenge Programm + Variable
081C   DD66FB     1499     LD H,(IX-5)
081F   EB         1500     EX DE,HL
0820   37         1501     SCF
0821   ED52       1502     SBC HL,DE   ;wird zusaetzlicher Speicherpl. ben.?
0823   3809       1503     JR C,M082E  ;nein
                  1504  
0825   110500     1505  M0825:   LD DE,5
0828   19         1506     ADD HL,DE   ;+ 5 Byte
0829   44         1507     LD B,H
082A   4D         1508     LD C,L
                              SP                                PAGE  27
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

082B   CD051F     1509     CALL M1F05  ;Speicherplatztest
                  1510  
082E   E1         1511  M082E:   POP HL      ;Startadresse
082F   DD7E00     1512     LD A,(IX+0)
0832   A7         1513     AND A    ;wird BASIC-Progr. geladen?
0833   283E       1514     JR Z,M0873  ;ja
                  1515  
0835   7C         1516     LD A,H
0836   B5         1517     OR L     ;neues ARRAY?
0837   2813       1518     JR Z,M084C  ;ja
                  1519  
0839   2B         1520     DEC HL      ;nein
083A   46         1521     LD B,(HL)
083B   2B         1522     DEC HL
083C   4E         1523     LD C,(HL)   ;BC=Laenge des bereits ex. Arrays
083D   2B         1524     DEC HL      ;HL - Zeiger zum alten Namen
083E   03         1525     INC BC
083F   03         1526     INC BC      ;Laenge + 3 fuer Namen und Laenge
0840   03         1527     INC BC
0841   DD225F5C   1528     LD (XPTR),IX   ;IX zwischenspeichern
0845   CDE819     1529     CALL RAUS2  ;altes Array wegwerfen
0848   DD2A5F5C   1530     LD IX,(XPTR)   ;IX regen.
084C   2A595C     1531  M084C:   LD HL,(ELINE)  ;Zeiger auf Endemarkierung (80H)
084F   2B         1532     DEC HL      ; der Variablen
0850   DD4E0B     1533     LD C,(IX+0BH)
0853   DD460C     1534     LD B,(IX+0CH)  ;Laenge des neuen Arrays
0856   C5         1535     PUSH BC
0857   03         1536     INC BC
0858   03         1537     INC BC
0859   03         1538     INC BC      ;+3 fuer Name und Laenge
085A   DD7EFD     1539     LD A,(IX-3) ;Name aus altem Haeder fuer das neue
085D   F5         1540     PUSH AF     ; Array
085E   CD5516     1541     CALL MACHPL ;BC Speicherplaetze beschaffen
0861   23         1542     INC HL
0862   F1         1543     POP AF
0863   77         1544     LD (HL),A   ;Name des Arrays einschreiben
0864   D1         1545     POP DE      ;Laenge
0865   23         1546     INC HL
0866   73         1547     LD (HL),E
0867   23         1548     INC HL
0868   72         1549     LD (HL),D   ; einschreiben
0869   23         1550     INC HL      ;Zeiger auf 1. Platz der vom Band
                  1551           ; geladen wird
086A   E5         1552     PUSH HL
086B   DDE1       1553     POP IX      ;Startadr.
086D   37         1554     SCF      ;LOAD
086E   3EFF       1555     LD A,0FFH   ; und Daten anmerken
0870   C30208     1556     JP M0802 ;zur Laderoutine
                  1557  
                  1558  
                  1559  ;Laden eines BASIC-Programms mit Variablen
                  1560  
0873   EB         1561  M0873:   EX DE,HL ;DE: Zieladresse
0874   2A595C     1562     LD HL,(ELINE)  ;Variablenende suchen
0877   2B         1563     DEC HL
0878   DD225F5C   1564     LD (XPTR),IX   ;Zwischenspeichern
087C   DD4E0B     1565     LD C,(IX+11)
087F   DD460C     1566     LD B,(IX+12)   ;Laenge des neuen Headers
                              SP                                PAGE  28
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0882   C5         1567     PUSH BC
0883   CDE519     1568     CALL RAUS1  ;derzeitiges Programm wegwerfen
0886   C1         1569     POP BC      ;Laenge
0887   E5         1570     PUSH HL     ;Zeiger auf Start
0888   C5         1571     PUSH BC
0889   CD5516     1572     CALL MACHPL ;BC Speicherplaetze freimachen
088C   DD2A5F5C   1573     LD IX,(XPTR)   ;IX regen.
0890   23         1574     INC HL
0891   DD4E0F     1575     LD C,(IX+15)
0894   DD4610     1576     LD B,(IX+16)
0897   09         1577     ADD HL,BC
0898   224B5C     1578     LD (VARS),HL   ;VARS neu setzen
089B   DD660E     1579     LD H,(IX+14)
089E   7C         1580     LD A,H
089F   E6C0       1581     AND 0C0H ;Zeilen-Nr. angeben?
08A1   200A       1582     JR NZ,M08AD ;nein
                  1583  
08A3   DD6E0D     1584     LD L,(IX+0DH)  ;NEWPPC und
08A6   22425C     1585     LD (NEWPPC),HL ;NSPPC neu setzen
08A9   FD360A00   1586     LD (IY+0AH),0
                  1587  
08AD   D1         1588  M08AD:   POP DE      ;Laenge und
08AE   DDE1       1589     POP IX      ;Startadresse holen
08B0   37         1590     SCF      ;'LOAD' und
08B1   3EFF       1591     LD A,0FFH   ;Daten anmerken
08B3   C30208     1592     JP M0802 ;zur Laderoutine
                  1593  
                  1594  ;Merge - Routine
                  1595  
08B6   DD4E0B     1596  M08B6:   LD C,(IX+0BH)  ;Laenge des
08B9   DD460C     1597     LD B,(IX+0CH)  ;Datenblockes holen
08BC   C5         1598     PUSH BC
08BD   03         1599     INC BC      ;Laenge + 1 Speicherplaetze
08BE   F7         1600     RST REST30  ;im Workspace beschaffen
08BF   3680       1601     LD (HL),80H ;Endemarkierung
08C1   EB         1602     EX DE,HL ;Startadresse in HL
08C2   D1         1603     POP DE      ;Laenge in DE
08C3   E5         1604     PUSH HL
08C4   E5         1605     PUSH HL
08C5   DDE1       1606     POP IX      ;Startadr. in IX
08C7   37         1607     SCF      ;laden
08C8   3EFF       1608     LD A,0FFH   ;und Daten anmerken
08CA   CD0208     1609     CALL M0802  ;Laderoutine
08CD   E1         1610     POP HL      ;neuer Start
08CE   ED5B535C   1611     LD DE,(PROG)   ;DE zeigt auf alten Start
                  1612  
                  1613  ;die neuen Zeilen werden in das alte Programm eingefuegt
                  1614  
08D2   7E         1615  M08D2:   LD A,(HL)
08D3   E6C0       1616     AND 0C0H ;fertig ?
08D5   2019       1617     JR NZ,M08F0 ;ja
                  1618  
08D7   1A         1619  M08D7:   LD A,(DE)   ;Zeilennummer HIGH vergleichen
08D8   13         1620     INC DE      ;und beide Pointer + 1
08D9   BE         1621     CP (HL)
08DA   23         1622     INC HL
08DB   2002       1623     JR NZ,M08DF ;nicht gleich
08DD   1A         1624     LD A,(DE)   ;Zeilenummer LOW vergleichen
                              SP                                PAGE  29
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

08DE   BE         1625     CP (HL)
08DF   1B         1626  M08DF:   DEC DE      ;beide Pointer
08E0   2B         1627     DEC HL      ;wieder original
08E1   3008       1628     JR NC,M08EB ;Platz fuer neue Zeile gefunden
08E3   E5         1629     PUSH HL     ;sonst Start der naechsten
08E4   EB         1630     EX DE,HL ;Zeile suchen
08E5   CDB819     1631     CALL M19B8
08E8   E1         1632     POP HL
08E9   18EC       1633     JR M08D7 ;im alten Programm weitersuchen
                  1634  
08EB   CD2C09     1635  M08EB:   CALL M092C  ;neue Zeile einfuegen
08EE   18E2       1636     JR M08D2 ;und weitersuchen
                  1637  
08F0   7E         1638  M08F0:   LD A,(HL)   ;Variablennamen holen
08F1   4F         1639     LD C,A
08F2   FE80       1640     CP 80H      ;fertig ?
08F4   C8         1641     RET Z    ;ja
                  1642  
08F5   E5         1643     PUSH HL     ;aktuellen neuen Pointer retten
08F6   2A4B5C     1644     LD HL,(VARS)   ;alten Pointer holen
08F9   7E         1645  M08F9:   LD A,(HL)   ;Variablenname und
08FA   FE80       1646     CP 80H      ;-Ende pruefen
08FC   2825       1647     JR Z,M0923  ;Ende erreicht
08FE   B9         1648     CP C     ;stimmt Name ?
08FF   2808       1649     JR Z,M0909  ;ja
0901   C5         1650  M0901:   PUSH BC     ;Variablenname retten
0902   CDB819     1651     CALL M19B8  ;naechste alte Variable suchen
0905   C1         1652     POP BC
0906   EB         1653     EX DE,HL ;Pointer wieder richtig
0907   18F0       1654     JR M08F9 ;und weitersuchen
                  1655  
0909   E6E0       1656  M0909:   AND 0E0H ;langer Variablenname ?
090B   FEA0       1657     CP 0A0H
090D   2012       1658     JR NZ,M0921 ;nein
090F   D1         1659     POP DE      ;zeigt auf 1. Buchstaben
0910   D5         1660     PUSH DE     ;des neuen Namens
0911   E5         1661     PUSH HL
                  1662  
0912   23         1663  M0912:   INC HL
0913   13         1664     INC DE
0914   1A         1665     LD A,(DE)   ;den Rest des Namens
0915   BE         1666     CP (HL)     ;vergleichen
0916   2006       1667     JR NZ,M091E ;nicht gefunden
0918   17         1668     RLA      ;letztes Zeichen ?
0919   30F7       1669     JR NC,M0912 ;nein
091B   E1         1670     POP HL      ;Adresse des alten Namens
091C   1803       1671     JR M0921 ;ersetzen
                  1672  
091E   E1         1673  M091E:   POP HL
091F   18E0       1674     JR M0901 ;weitersuchen
                  1675  
0921   3EFF       1676  M0921:   LD A,0FFH   ;Variable ersetzen
                  1677           ;A=80H Variable hinzufuegen
0923   D1         1678  M0923:   POP DE      ;Adresse neu holen
0924   EB         1679     EX DE,HL ;Pointer richtig setzen
0925   3C         1680     INC A    ;Zero fuer ersetzen = 1
0926   37         1681     SCF      ;Variablenbehandlung
0927   CD2C09     1682     CALL M092C  ;Variable eintragen
                              SP                                PAGE  30
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

092A   18C4       1683     JR M08F0 ;naechste Variable suchen
                  1684  
                  1685  ;Subroutine zum Einfuegen einer Zeile oder Variablen
                  1686  ;bei 'MERGE'
                  1687  
092C   2010       1688  M092C:   JR NZ,M093E ;hinzufuegen
092E   08         1689     EX AF,AF'   ;Flags retten
092F   225F5C     1690     LD (XPTR),HL   ;'neu'-Pointer retten
0932   EB         1691     EX DE,HL
0933   CDB819     1692     CALL M19B8  ;naechste Zeile/Variable suchen
0936   CDE819     1693     CALL RAUS2  ;alte Zeile/Variable entfernen
0939   EB         1694     EX DE,HL ;Pointer und
093A   2A5F5C     1695     LD HL,(XPTR)
093D   08         1696     EX AF,AF'   ;Flags zurueck
093E   08         1697  M093E:   EX AF,AF'
093F   D5         1698     PUSH DE     ;Zieladresse speichern
0940   CDB819     1699     CALL M19B8  ;naechste Zeile/Variable und
                  1700           ;deren Laenge suchen
0943   225F5C     1701     LD (XPTR),HL   ;Zeile/Variable 'neu' retten
0946   2A535C     1702     LD HL,(PROG)   ;Prog zwischenspeichern
0949   E3         1703     EX (SP),HL  ;und Pointer 'neu' holen
094A   C5         1704     PUSH BC     ;Laenge retten
094B   08         1705     EX AF,AF'
094C   3807       1706     JR C,M0955  ;wenn Variable neu
094E   2B         1707     DEC HL      ;neuer Zeile vor der Zieladresse
094F   CD5516     1708     CALL MACHPL ;den Platz frei machen
0952   23         1709     INC HL
0953   1803       1710     JR M0958
                  1711  
0955   CD5516     1712  M0955:   CALL MACHPL ;Platz fuer neue Variable machen
0958   23         1713  M0958:   INC HL      ;erste freie Stelle
0959   C1         1714     POP BC      ;Laenge holen
095A   D1         1715     POP DE      ;PROG holen und
095B   ED53535C   1716     LD (PROG),DE   ;Pointer 'neu' retten
095F   ED5B5F5C   1717     LD DE,(XPTR)   ;neuen Pointer holen
0963   C5         1718     PUSH BC     ;Laenge und
0964   D5         1719     PUSH DE     ;Pointer 'neu' retten
0965   EB         1720     EX DE,HL ;Pointer richtig setzen zum
0966   EDB0       1721     LDIR     ;Kopieren der Zeile/Variablen
0968   E1         1722     POP HL      ;Pointer 'neu'
0969   C1         1723     POP BC      ;Laenge
096A   D5         1724     PUSH DE     ;Pointer 'alt'
096B   CDE819     1725     CALL RAUS2  ;Zeile/Variable aus Workspace
096E   D1         1726     POP DE      ;entfernen,Pointer 'alt'
096F   C9         1727     RET      ;zurueckholen und fertig
                  1728  
                  1729  ;UP fuer SAVE
                  1730  
0970   E5         1731  M0970:   PUSH HL
0971   3EFD       1732     LD A,0FDH   ;Kanal K oeffnen
0973   CD0116     1733     CALL OPKAN
0976   AF         1734     XOR A    ;0 = erste Meldung
0977   11A109     1735     LD DE,KASMEL   ;Adresse fuer Kassettenmeldung
097A   CD0A0C     1736     CALL PRTMEL ;Ausgabe 'Start Tape'
097D   FDCB02EE   1737     SET 5,(IY+2)   ;merken: Bildschirm loeschen
0981   CDD415     1738     CALL WARTA  ;auf Tastendruck warten
0984   DDE5       1739     PUSH IX     ;Headeradresse retten
0986   111100     1740     LD DE,17 ;17 Bytes Header
                              SP                                PAGE  31
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0989   AF         1741     XOR A    ;0 = Header
098A   CDC204     1742     CALL M04C2  ;Header abspeichern
098D   DDE1       1743     POP IX      ;Headeradresse
098F   0632       1744     LD B,50     ;Verzoegerung 1 Sek.
0991   76         1745  M0991:   HALT
0992   10FD       1746     DJNZ M0991
0994   DD5E0B     1747     LD E,(IX+0BH)  ;DE = Laenge des zu speichern-
0997   DD560C     1748     LD D,(IX+0CH)  ;den Datenblockes
099A   3EFF       1749     LD A,0FFH   ;FF = Datenblock
099C   DDE1       1750     POP IX      ;Datenanfang
099E   C3C204     1751     JP M04C2 ;abspeichern
                  1752  
                  1753  ;Meldungen fuer Kassettenbetrieb
                  1754  
09A1   80         1755  KASMEL:  DEFB 80H
09A2   53746172   1756     DEFM 'Start tape, then press any key'
09C0   AE         1757  M09C0:   DEFB 0AEH
09C1   0D         1758     DEFB 0DH
09C2   50726F67   1759     DEFM 'Program:'
09CA   A0         1760     DEFB 0A0H
09CB   0D         1761     DEFB 0DH
09CC   4E756D62   1762     DEFM 'Number array:'
09D9   A0         1763     DEFB 0A0H
09DA   0D         1764     DEFB 0DH
09DB   43686172   1765     DEFM 'Character array:'
09EB   A0         1766     DEFB 0A0H
09EC   0D         1767     DEFB 0DH
09ED   42797465   1768     DEFM 'Bytes:'
09F3   A0         1769     DEFB 0A0H
                  1770  
                  1771  ;==========================================
                  1772  
                  1773  ;Ausgaberoutinen fuer Bildschirm und Drucker
                  1774  
                  1775  ;A enthaelt auszugebendes Zeichen, ein Token oder Steuerzeichen
                  1776  
09F4   CD030B     1777  AUSGAB:  CALL POSHOL ;Printposition holen
09F7   FE20       1778     CP ' '      ;alle druckbaren Zeichen und
09F9   D2D90A     1779     JP NC,PRTCHA   ;Tokens
09FC   FE06       1780     CP 6     ;fuer 0-5 ? drucken
09FE   3869       1781     JR C,PRTFRA
0A00   FE18       1782     CP 18H      ;desgleichen fuer 18H-1FH
0A02   3065       1783     JR NC,PRTFRA
0A04   210B0A     1784     LD HL,CONTRO-6 ;Adr. der Control-Zeichen-
0A07   5F         1785     LD E,A      ;Tabelle (6-17H ist zugelassen)
0A08   1600       1786     LD D,0
0A0A   19         1787     ADD HL,DE
0A0B   5E         1788     LD E,(HL)   ;Offset holen
0A0C   19         1789     ADD HL,DE   ;fuer Return-Adresse addieren
0A0D   E5         1790     PUSH HL     ;in Stack
0A0E   C3030B     1791     JP POSHOL   ;Printposition holen
                  1792  
                  1793  ;Tabelle der Offsets fuer Control-Zeichen
                  1794  
0A11   4E         1795  CONTRO:  DEFB M0A5F-$   ;Print Komma
0A12   57         1796     DEFB PRTFRA-$  ;Edit
0A13   10         1797     DEFB M0A23-$   ;Cursor nach links
0A14   29         1798     DEFB M0A3D-$   ;Cursor nach rechts
                              SP                                PAGE  32
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0A15   54         1799     DEFB PRTFRA-$  ;Cursor nach unten
0A16   53         1800     DEFB PRTFRA-$  ;Cursor nach oben
0A17   52         1801     DEFB PRTFRA-$  ;Delete
0A18   37         1802     DEFB M0A4F-$   ;Enter
0A19   50         1803     DEFB PRTFRA-$  ;nicht benutzt
0A1A   4F         1804     DEFB PRTFRA-$  ;nicht benutzt
0A1B   5F         1805     DEFB M0A7A-$   ;Ink
0A1C   5E         1806     DEFB M0A7A-$   ;Paper
0A1D   5D         1807     DEFB M0A7A-$   ;Flash
0A1E   5C         1808     DEFB M0A7A-$   ;Bright
0A1F   5B         1809     DEFB M0A7A-$   ;Inverse
0A20   5A         1810     DEFB M0A7A-$   ;Over
0A21   54         1811     DEFB M0A75-$   ;At
0A22   53         1812     DEFB M0A75-$   ;Tab
                  1813  
                  1814  ;Cursor nach links
                  1815  ;B enthaelt die Zeilennummer und C die Spaltenposition
                  1816  ;die Zeilennummer wird von unten und die Spalte von
                  1817  ;rechts gezaehlt
                  1818  
0A23   0C         1819  M0A23:   INC C
0A24   3E22       1820     LD A,34     ;linker Rand erreicht ?
0A26   B9         1821     CP C
0A27   2011       1822     JR NZ,M0A3A ;nein
0A29   FDCB014E   1823     BIT 1,(IY+1)   ;Printerausgabe ?
0A2D   2009       1824     JR NZ,M0A38 ;ja
0A2F   04         1825     INC B    ;sonst Zeile 1 hoeher
0A30   0E02       1826     LD C,2      ;Spalte = 2
0A32   3E18       1827     LD A,24     ;Bildschirmoberkante erreicht ?
0A34   B8         1828     CP B
0A35   2003       1829     JR NZ,M0A3A ;nein
0A37   05         1830     DEC B    ;Zeile wie vorher
0A38   0E21       1831  M0A38:   LD C,33     ;erste Spalte
0A3A   C3D90D     1832  M0A3A:   JP M0DD9
                  1833  
                  1834  ;Cursor 1 nach rechts
                  1835  ;BC wie oben bei Einstieg
                  1836  ;diese Routine entspricht im BASIC: PRINT OVER1;CHR$32;
                  1837  
0A3D   3A915C     1838  M0A3D:   LD A,(PFLAG)   ;Printerflag
0A40   F5         1839     PUSH AF
0A41   FD365701   1840     LD (IY+57H),1  ;PFLAG auf OVER 1 setzen
0A45   3E20       1841     LD A,' '
0A47   CD650B     1842     CALL M0B65  ;Leerzeichen ausgeben
0A4A   F1         1843     POP AF
0A4B   32915C     1844     LD (PFLAG),A   ;Printerflag zurueck
0A4E   C9         1845     RET
                  1846  
                  1847  ;Behandlung von Carriage Return
                  1848  ;bei Printerausgabe wird Printerbuffer ausgegeben
                  1849  ;bei Display   "     "   erst getestet, ob der
                  1850  ;Bildschirm nach oben gerollt (SCROLL) werden muss
                  1851  
0A4F   FDCB014E   1852  M0A4F:   BIT 1,(IY+1)   ;Printer ?
0A53   C2CD0E     1853     JP NZ,M0ECD ;ja
                  1854  
0A56   0E21       1855     LD C,33     ;linken Rand setzen
0A58   CD550C     1856     CALL M0C55  ;evtl. Scrolling durchfuehren
                              SP                                PAGE  33
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0A5B   05         1857     DEC B    ;1 Zeile nach unten
0A5C   C3D90D     1858     JP M0DD9
                  1859  
                  1860  ;'PRINT KOMMA' Subroutine
                  1861  ;Tabausgabe: Spalte 0 oder 16
                  1862  
0A5F   CD030B     1863  M0A5F:   CALL POSHOL ;Zeile und Spalte in BC holen
0A62   79         1864     LD A,C
0A63   3D         1865     DEC A    ;2 Spalten nach rechts
0A64   3D         1866     DEC A
0A65   E610       1867     AND 10H     ;0 oder 16 wird daraus
0A67   185A       1868     JR TABFIL   ;SPACE daraus machen
                  1869  
0A69   3E3F       1870  PRTFRA:  LD A,'?' ;nicht druckbare Zeichen
0A6B   186C       1871     JR PRTCHA   ;durch ? ersetzen
                  1872  
                  1873  ;Steuerzeichen mit Operanden behandeln
                  1874  ;bei 2 Operanden (AT und TAB): Einstieg 0A75H
                  1875  ; 1 Operand (INK bis OVER): Einstieg 0A7AH
                  1876  ;Steuerzeichen immer in TVDATA merken, bei 2 Operanden
                  1877  ;den ersten in TVDATA+1 merken (Ausgabe auf 0A6DH)
                  1878  
0A6D   11870A     1879  ZWEIOP:  LD DE,EINOP
0A70   320F5C     1880     LD (TVDATA+1),A   ;erster Operand
0A73   180B       1881     JR AUSSET
                  1882  
                  1883  ;Einstieg bei AT und TAB
                  1884  
0A75   116D0A     1885  M0A75:   LD DE,ZWEIOP
0A78   1803       1886     JR M0A7D
                  1887  
0A7A   11870A     1888  M0A7A:   LD DE,EINOP
0A7D   320E5C     1889  M0A7D:   LD (TVDATA),A  ;Steuerzeichen speichern
                  1890  
0A80   2A515C     1891  AUSSET:  LD HL,(CURCHL) ;aktiven Ausgabekanal
0A83   73         1892     LD (HL),E   ;neu setzen
0A84   23         1893     INC HL
0A85   72         1894     LD (HL),D
0A86   C9         1895     RET
                  1896  
0A87   11F409     1897  EINOP:   LD DE,AUSGAB   ;Operanden geholt und Ausgabe
0A8A   CD800A     1898     CALL AUSSET ;wieder normal
0A8D   2A0E5C     1899     LD HL,(TVDATA) ;Steuerzeichen und OP1
0A90   57         1900     LD D,A      ;letzten Operand retten
0A91   7D         1901     LD A,L      ;Steuerzeichen:
0A92   FE16       1902     CP 16H      ;INK bis OVER ?
0A94   DA1122     1903     JP C,M2211  ;ja
0A97   2029       1904     JR NZ,PRTTAB   ;bei TAB
                  1905  
                  1906  ;Behandlung von AT
                  1907  
0A99   44         1908     LD B,H      ;Zeilennummer (1. Oper.)
0A9A   4A         1909     LD C,D      ;Spalten  "
0A9B   3E1F       1910     LD A,31     ;da rueckwaerts gezaehlt wird,
0A9D   91         1911     SUB C    ;umrechnen
0A9E   380C       1912     JR C,M0AAC  ;bei Bereichsueberschreitung
0AA0   C602       1913     ADD A,2
0AA2   4F         1914     LD C,A
                              SP                                PAGE  34
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0AA3   FDCB014E   1915     BIT 1,(IY+1)   ;Printerausgabe ?
0AA7   2016       1916     JR NZ,M0ABF ;ja: LPRINT AT
                  1917  
0AA9   3E16       1918     LD A,22     ;Zeilennummer umrechnen
0AAB   90         1919     SUB B
0AAC   DA9F1E     1920  M0AAC:   JP C,M1E9F  ;ERROR: INTEGER OUT OF RANGE
                  1921  
0AAF   3C         1922     INC A
0AB0   47         1923     LD B,A
0AB1   04         1924     INC B
0AB2   FDCB0246   1925     BIT 0,(IY+2)   ;unterer Teil ?
0AB6   C2550C     1926     JP NZ,M0C55 ;ja, evtl. Scrolling
0AB9   FDBE31     1927     CP (IY+31H) ;innerhalb des Bildschirmes ?
0ABC   DA860C     1928     JP C,M0C86  ;nein: OUT OF SCREEN
0ABF   C3D90D     1929  M0ABF:   JP M0DD9 ;restliche Parameter setzen
                  1930  
                  1931  ;TAB-Ausfuehrung
                  1932  
0AC2   7C         1933  PRTTAB:  LD A,H      ;1. Oper.
0AC3   CD030B     1934  TABFIL:  CALL POSHOL ;Position holen
0AC6   81         1935     ADD A,C     ;Spalte addieren
0AC7   3D         1936     DEC A    ;Spaceanzahl berechnen
0AC8   E61F       1937     AND 1FH
0ACA   C8         1938     RET Z    ;falls keine Space
                  1939  
0ACB   57         1940     LD D,A
0ACC   FDCB01C6   1941     SET 0,(IY+1)   ;fuehrende Space unterdruecken
0AD0   3E20       1942  PRTSPA:  LD A,' '
0AD2   CD3B0C     1943     CALL M0C3B  ;ausgeben
0AD5   15         1944     DEC D
0AD6   20F8       1945     JR NZ,PRTSPA
0AD8   C9         1946     RET
                  1947  
                  1948  ;druckbare Zeichen bzw. Tokens ausgeben
                  1949  
0AD9   CD240B     1950  PRTCHA:  CALL M0B24
                  1951  
                  1952  ;neue Zeilen- und Spaltennummer, sowie Pixel-Adresse
                  1953  ;in den Systemvariablen setzen
                  1954  
0ADC   FDCB014E   1955  NEUSTO:  BIT 1,(IY+1)   ;Printer ?
0AE0   201A       1956     JR NZ,M0AFC ;ja
                  1957  
0AE2   FDCB0246   1958     BIT 0,(IY+2)   ;bei unterem Bildschirmteil
0AE6   2008       1959     JR NZ,M0AF0 ;springen
0AE8   ED43885C   1960     LD (SPOSN),BC  ;Werte des Hauptteiles speichern
0AEC   22845C     1961     LD (DFCC),HL
0AEF   C9         1962     RET
                  1963  
0AF0   ED438A5C   1964  M0AF0:   LD (SPOSNL),BC ;Werte unterer Teil speichern
0AF4   ED43825C   1965     LD (ECHOE),BC
0AF8   22865C     1966     LD (DFCCL),HL
0AFB   C9         1967     RET
                  1968  
0AFC   FD7145     1969  M0AFC:   LD (IY+45H),C  ;Printer Buffer Pointer
0AFF   22805C     1970     LD (PRCC),HL   ;neu setzen
0B02   C9         1971     RET
                  1972  
                              SP                                PAGE  35
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  1973  ;Bildschirm- oder Printerposition in BC und HL holen
                  1974  
0B03   FDCB014E   1975  POSHOL:  BIT 1,(IY+1)   ;Printer ?
0B07   2014       1976     JR NZ,M0B1D ;ja
0B09   ED4B885C   1977     LD BC,(SPOSN)  ;Hauptschirmparameter
0B0D   2A845C     1978     LD HL,(DFCC)   ;laden
0B10   FDCB0246   1979     BIT 0,(IY+2)
0B14   C8         1980     RET Z    ;Return bei Hauptbildschirm
0B15   ED4B8A5C   1981     LD BC,(SPOSNL) ;sonst untere Schirmparameter
0B19   2A865C     1982     LD HL,(DFCCL)  ;laden
0B1C   C9         1983     RET
                  1984  
0B1D   FD4E45     1985  M0B1D:   LD C,(IY+45H)  ;Printerbufferwerte holen
0B20   2A805C     1986     LD HL,(PRCC)
0B23   C9         1987     RET
                  1988  
                  1989  ;Zeichen oder Tokens ausgeben
                  1990  
0B24   FE80       1991  M0B24:   CP 80H      ;normales Zeichen 20H...7FH ?
0B26   383D       1992     JR C,M0B65  ;ja
0B28   FE90       1993     CP 90H
0B2A   3026       1994     JR NC,PRTOU ;alle Tokens und Zeichen >80H
0B2C   47         1995     LD B,A      ;hier nur 80H...8FH
0B2D   CD380B     1996     CALL M0B38  ;Grafikzeichen generieren
0B30   CD030B     1997     CALL POSHOL ;HL wieder holen
0B33   11925C     1998     LD DE,MEMBOT   ;Calculatorspeicher
0B36   1847       1999     JR M0B7F
                  2000  
                  2001  ;aus den Bits 0..3 wird das Grafikzeichen generiert
                  2002  
0B38   21925C     2003  M0B38:   LD HL,MEMBOT   ;Calculatorspeicher zum zwischenspeichern
                  2004           ;des Grafikzeichens
0B3B   CD3E0B     2005     CALL M0B3E  ;2 * aufrufen
0B3E   CB18       2006  M0B3E:   RR B     ;Bit 0 oder 2 auswerten
0B40   9F         2007     SBC A,A     ;A enthaelt 0FH, falls Bit gesetzt
0B41   E60F       2008     AND 0FH     ;war, sonst 00
0B43   4F         2009     LD C,A
0B44   CB18       2010     RR B     ;Bit 1 oder 3 auswerten
0B46   9F         2011     SBC A,A
0B47   E6F0       2012     AND 0F0H ;A wird F0H oder 00
0B49   B1         2013     OR C
0B4A   0E04       2014     LD C,4      ;Bitmuster 4 * speichern
0B4C   77         2015  M0B4C:   LD (HL),A
0B4D   23         2016     INC HL
0B4E   0D         2017     DEC C
0B4F   20FB       2018     JR NZ,M0B4C
0B51   C9         2019     RET
                  2020  
                  2021  ;Token Codes und UDG
                  2022  
0B52   D6A5       2023  PRTOU:   SUB 0A5H
0B54   3009       2024     JR NC,PRTTO ;wenn Token Codes
0B56   C615       2025     ADD A,15H   ;UDGs jetzt 00...0FH
0B58   C5         2026     PUSH BC     ;Position
0B59   ED4B7B5C   2027     LD BC,(UDG) ;Adresse der User Grafikzeichen
0B5D   180B       2028     JR M0B6A
                  2029  
0B5F   CD100C     2030  PRTTO:   CALL PRTTOK ;Token in Befehl umwandeln
                              SP                                PAGE  36
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0B62   C3030B     2031     JP POSHOL
                  2032  
                  2033  ;normales Zeichen ausgeben
                  2034  
0B65   C5         2035  M0B65:   PUSH BC     ;Position
0B66   ED4B365C   2036     LD BC,(CHARS)  ;Zeichensatzadresse -256
0B6A   EB         2037  M0B6A:   EX DE,HL
0B6B   213B5C     2038     LD HL,FLAGS
0B6E   CB86       2039     RES 0,(HL)  ;fuehrende Space zulassen
0B70   FE20       2040     CP ' '
0B72   2002       2041     JR NZ,PRTREA
0B74   CBC6       2042     SET 0,(HL)
0B76   2600       2043  PRTREA:  LD H,0      ;Zeichen berechnen und ausgeben
0B78   6F         2044     LD L,A
0B79   29         2045     ADD HL,HL
0B7A   29         2046     ADD HL,HL
0B7B   29         2047     ADD HL,HL
0B7C   09         2048     ADD HL,BC
0B7D   C1         2049     POP BC
0B7E   EB         2050     EX DE,HL ;DE --> Beginn des Zeichens
                  2051  
                  2052  ;alle 8*8 Zeichen ausgeben
                  2053  
0B7F   79         2054  M0B7F:   LD A,C      ;Spalte
0B80   3D         2055     DEC A
0B81   3E21       2056     LD A,33     ;erste Spalte
0B83   200E       2057     JR NZ,M0B93
0B85   05         2058     DEC B    ;neue Zeile
0B86   4F         2059     LD C,A
0B87   FDCB014E   2060     BIT 1,(IY+1)   ;Printer ?
0B8B   2806       2061     JR Z,M0B93  ;nein
0B8D   D5         2062     PUSH DE     ;Startadresse
0B8E   CDCD0E     2063     CALL M0ECD  ;Printerbuffer ausgeben
0B91   D1         2064     POP DE
0B92   79         2065     LD A,C      ;neue Spalte
0B93   B9         2066  M0B93:   CP C     ;neue Zeile ?
0B94   D5         2067     PUSH DE     ;Zeichenadresse
0B95   CC550C     2068     CALL Z,M0C55   ;neue Zeile: evtl. Scrolling
0B98   D1         2069     POP DE
0B99   C5         2070     PUSH BC
0B9A   E5         2071     PUSH HL
0B9B   3A915C     2072     LD A,(PFLAG)   ;Printerflag
0B9E   06FF       2073     LD B,0FFH
0BA0   1F         2074     RRA      ;PFLAG Bit 0 ?
0BA1   3801       2075     JR C,M0BA4
0BA3   04         2076     INC B    ;OVER1: B=FFH, sonst 0
0BA4   1F         2077  M0BA4:   RRA      ;PFLAG Bit 2 ?
0BA5   1F         2078     RRA
0BA6   9F         2079     SBC A,A
0BA7   4F         2080     LD C,A      ;INVERSE1: C=FFH, sonst 0
0BA8   3E08       2081     LD A,8      ;Pixelzaehler
0BAA   A7         2082     AND A    ;Reset Carry
0BAB   FDCB014E   2083     BIT 1,(IY+1)   ;Printer ?
0BAF   2805       2084     JR Z,M0BB6  ;nein
0BB1   FDCB30CE   2085     SET 1,(IY+30H) ;Printerbuffer nicht leer
0BB5   37         2086     SCF      ;Printer wird benutzt
0BB6   EB         2087  M0BB6:   EX DE,HL ;Ziel- und Basisadr. tauschen
                  2088  
                              SP                                PAGE  37
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  2089  ;8-fach Schleife zur Ausgabe des Zeichens
                  2090  
0BB7   08         2091  M0BB7:   EX AF,AF'
0BB8   1A         2092     LD A,(DE)
0BB9   A0         2093     AND B    ;OVER: 0 Zeichen wie Space
0BBA   AE         2094     XOR (HL)
0BBB   A9         2095     XOR C    ;INVERSE beruecksichtigen
0BBC   12         2096     LD (DE),A
0BBD   08         2097     EX AF,AF'
0BBE   3813       2098     JR C,M0BD3  ;wenn Printer
0BC0   14         2099     INC D
0BC1   23         2100  M0BC1:   INC HL
0BC2   3D         2101     DEC A
0BC3   20F2       2102     JR NZ,M0BB7 ;noch nicht 8*
                  2103  
0BC5   EB         2104     EX DE,HL
0BC6   25         2105     DEC H
0BC7   FDCB014E   2106     BIT 1,(IY+1)   ;Attribut-Byte nur bei
0BCB   CCDB0B     2107     CALL Z,M0BDB   ;Bildschirmhandling bearbeiten
0BCE   E1         2108     POP HL
0BCF   C1         2109     POP BC
0BD0   0D         2110     DEC C    ;Spalte +1
0BD1   23         2111     INC HL      ;Ziel +1
0BD2   C9         2112     RET
                  2113  
0BD3   08         2114  M0BD3:   EX AF,AF'
0BD4   3E20       2115     LD A,32     ;Offset
0BD6   83         2116     ADD A,E
0BD7   5F         2117     LD E,A
0BD8   08         2118     EX AF,AF'
0BD9   18E6       2119     JR M0BC1
                  2120  
                  2121  ;Subroutine zum Setzen der Attribute
                  2122  
0BDB   7C         2123  M0BDB:   LD A,H      ;Highteil des Zieles
0BDC   0F         2124     RRCA     ;dividiert durch 8
0BDD   0F         2125     RRCA
0BDE   0F         2126     RRCA
0BDF   E603       2127     AND 3
0BE1   F658       2128     OR 58H      ;Highbyte des Attributspeichers
0BE3   67         2129     LD H,A
0BE4   ED5B8F5C   2130     LD DE,(ATTRT)  ;D = ATTRT E = MASKT
0BE8   7E         2131     LD A,(HL)   ;altes Attribut
0BE9   AB         2132     XOR E
0BEA   A2         2133     AND D
0BEB   AB         2134     XOR E
0BEC   FDCB5776   2135     BIT 6,(IY+57H)
0BF0   2808       2136     JR Z,M0BFA  ;bei Paper9 springen
0BF2   E6C7       2137     AND 0C7H ;alte Farbe ausbleden
0BF4   CB57       2138     BIT 2,A     ;INK = dunkel ?
0BF6   2002       2139     JR NZ,M0BFA ;nein
0BF8   EE38       2140     XOR 38H     ;Papercolor = weiss
0BFA   FDCB5766   2141  M0BFA:   BIT 4,(IY+57H) ;INK = 9 ?
0BFE   2808       2142     JR Z,M0C08  ;nein
0C00   E6F8       2143     AND 0F8H ;altes INKCOLOUR wegwerfen
0C02   CB6F       2144     BIT 5,A     ;bei Papercol. = weiss
0C04   2002       2145     JR NZ,M0C08 ;INKCOL.= dunkel
0C06   EE07       2146     XOR 7    ;sonst umgedreht
                              SP                                PAGE  38
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0C08   77         2147  M0C08:   LD (HL),A   ;Attributwert speichern
0C09   C9         2148     RET
                  2149  
                  2150  ;Subroutine zum ausgeben von Meldungen und Tokens
                  2151  ;DE enthaelt die Basisadresse der jeweiligen Tabelle
                  2152  ;und A die Nummer der Meldung oder des Tokens
                  2153  
0C0A   E5         2154  PRTMEL:  PUSH HL
0C0B   2600       2155     LD H,0      ;nachfolgende Space unterdruecken
0C0D   E3         2156     EX (SP),HL
0C0E   1804       2157     JR M0C14
                  2158  
0C10   119500     2159  PRTTOK:  LD DE,095H  ;Adresse Tokentabelle
0C13   F5         2160     PUSH AF
0C14   CD410C     2161  M0C14:   CALL M0C41  ;Start in der Tabelle suchen
0C17   3809       2162     JR C,M0C22  ;ausgeben
0C19   3E20       2163     LD A,' '
0C1B   FDCB0146   2164     BIT 0,(IY+1)   ;Leerzeichen ausgeben ?
0C1F   CC3B0C     2165     CALL Z,M0C3B
                  2166  
                  2167  ;Ausgabe der Meldung oder Tokens, bis ein Zeichen mit Bit 7=1
                  2168  
0C22   1A         2169  M0C22:   LD A,(DE)   ;Zeichen aus Tabelle
0C23   E67F       2170     AND 7FH
0C25   CD3B0C     2171     CALL M0C3B  ;Ausgabe
0C28   1A         2172     LD A,(DE)
0C29   13         2173     INC DE      ;Pointer+1
0C2A   87         2174     ADD A,A     ;Bit 7 ?
0C2B   30F5       2175     JR NC,M0C22 ;nein
                  2176  
0C2D   D1         2177     POP DE      ;D=0 Meldung, sonst
                  2178           ;D=0...5AH fuer Tokens
0C2E   FE48       2179     CP 48H
0C30   2803       2180     JR Z,M0C35  ;wenn letztes Zeichen $ war
0C32   FE82       2181     CP 82H
0C34   D8         2182     RET C    ;falls kleiner 41H war
                  2183  
0C35   7A         2184  M0C35:   LD A,D      ;bei Meldungen 'RND', 'INKEY$'
0C36   FE03       2185     CP 3     ;und 'PI' RETURN
0C38   D8         2186     RET C
0C39   3E20       2187     LD A,' ' ;sonst Space ausgeben
                  2188  
                  2189  ;Ausgabe eines Zeichens in Register A und
                  2190  ;retten der Register BC,DE und HL
                  2191  
0C3B   D5         2192  M0C3B:   PUSH DE
0C3C   D9         2193     EXX
0C3D   D7         2194     RST PRTOUT  ;Ausgabe eines Zeichens
0C3E   D9         2195     EXX
0C3F   D1         2196     POP DE
0C40   C9         2197     RET
                  2198  
                  2199  ;in Tabelle (=DE) den Start der Meldung oder des
                  2200  ;Tokens suchen
                  2201  
0C41   F5         2202  M0C41:   PUSH AF     ;A=Nummer
0C42   EB         2203     EX DE,HL ;HL=Anfang der Tabelle
0C43   3C         2204     INC A    ;fuer Suchschleife
                              SP                                PAGE  39
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0C44   CB7E       2205  M0C44:   BIT 7,(HL)  ;bei jedem gesetztem Bit 7
0C46   23         2206     INC HL      ;A dekrementieren bis 0
0C47   28FB       2207     JR Z,M0C44
0C49   3D         2208     DEC A    ;A=0 Meldung gefunden
0C4A   20F8       2209     JR NZ,M0C44
0C4C   EB         2210     EX DE,HL ;DE zeigt auf Meldung
0C4D   F1         2211     POP AF      ;Nummer
0C4E   FE20       2212     CP 32    ;Nummer <32
0C50   D8         2213     RET C    ;RETURN
0C51   1A         2214     LD A,(DE)   ;sonst erstes Zeichen laden
0C52   D641       2215     SUB 41H     ;auf >41H pruefen
0C54   C9         2216     RET
                  2217  
                  2218  ;Subroutine zum Testen, ob ein Scrolling notwendig ist.
                  2219  ;Register B enthaelt die zu testende  Zeilennummer
                  2220  
0C55   FDCB014E   2221  M0C55:   BIT 1,(IY+1)   ;Printer ?
0C59   C0         2222     RET NZ      ;ja
                  2223  
0C5A   11D90D     2224     LD DE,M0DD9 ;Returnadresse
0C5D   D5         2225     PUSH DE
0C5E   78         2226     LD A,B
0C5F   FDCB0246   2227     BIT 0,(IY+2)   ;Test TV-Flag: Sprung,
0C63   C2020D     2228     JP NZ,M0D02 ;falls 'INPUT AT'
0C66   FDBE31     2229     CP (IY+31H) ;Zeilennummer > als DFSZ?
0C69   381B       2230     JR C,M0C86  ;ja, ERROR
0C6B   C0         2231     RET NZ      ;wenn < DFSZ
                  2232           ;weiter wenn =DFSZ
0C6C   FDCB0266   2233     BIT 4,(IY+2)   ;automatisches Listing ?
0C70   2816       2234     JR Z,M0C88  ;nein
0C72   FD5E2D     2235     LD E,(IY+2DH)  ;Zeilenzaehler holen
0C75   1D         2236     DEC E
0C76   285A       2237     JR Z,M0CD2  ;falls =0 Scrolling
0C78   3E00       2238     LD A,0      ;Kanal k eroeffnen
0C7A   CD0116     2239     CALL OPKAN
0C7D   ED7B3F5C   2240     LD SP,(LISTSP) ;Returnadresse bei LIST
0C81   FDCB02A6   2241     RES 4,(IY+2)   ;automatisches Listen beendet
0C85   C9         2242     RET
                  2243  
0C86   CF         2244  M0C86:   RST ERRAUS  ;Meldung 'OUT OF SCREEN'
0C87   04         2245     DEFB 4
                  2246  
0C88   FD3552     2247  M0C88:   DEC (IY+52H)   ;Scroll-Zaehler-1
0C8B   2045       2248     JR NZ,M0CD2 ;zumm direkten Scrolling
                  2249           ;Ausgabe der Meldung 'SCROLL ?'
0C8D   3E18       2250     LD A,24
0C8F   90         2251     SUB B    ;Scroll-Zaehler
0C90   328C5C     2252     LD (SCRCT),A   ;zuruecksetzen
0C93   2A8F5C     2253     LD HL,(ATTRT)  ;ATTRT und MASKT retten
0C96   E5         2254     PUSH HL
0C97   3A915C     2255     LD A,(PFLAG)   ;PFLAG retten
0C9A   F5         2256     PUSH AF
0C9B   3EFD       2257     LD A,0FDH   ;Kanal k oeffnen
0C9D   CD0116     2258     CALL OPKAN
0CA0   AF         2259     XOR A    ;A=0=erste Meldung
0CA1   11F80C     2260     LD DE,SCROLL
0CA4   CD0A0C     2261     CALL PRTMEL ;laden und Ausgabe
0CA7   FDCB02EE   2262     SET 5,(IY+2)   ;merke: unt. Teil nach Tasten-
                              SP                                PAGE  40
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  2263           ;druck loeschen
0CAB   213B5C     2264     LD HL,FLAGS
0CAE   CBDE       2265     SET 3,(HL)  ;L-Modus
0CB0   CBAE       2266     RES 5,(HL)  ;'keine Taste bisher' anmerken
0CB2   D9         2267     EXX
0CB3   CDD415     2268     CALL WARTA  ;1 Zeichen holen
0CB6   D9         2269     EXX
0CB7   FE20       2270     CP 20H      ;falls Tastendruck 'BREAK'
0CB9   2845       2271     JR Z,M0D00  ;'STOP', 'N' oder 'n' war
0CBB   FEE2       2272     CP 0E2H     ;Meldung 'BREAK - CONT repeats'
0CBD   2841       2273     JR Z,M0D00  ;ausgeben
0CBF   F620       2274     OR 20H
0CC1   FE6E       2275     CP 6EH
0CC3   283B       2276     JR Z,M0D00
0CC5   3EFE       2277     LD A,0FEH   ;sonst Kanal 'S' eroeffnen
0CC7   CD0116     2278     CALL OPKAN
0CCA   F1         2279     POP AF
0CCB   32915C     2280     LD (PFLAG),A
0CCE   E1         2281     POP HL
0CCF   228F5C     2282     LD (ATTRT),HL
                  2283  
                  2284  ;Bildschirm rollen und Parameter neu setzen
                  2285  
0CD2   CDFE0D     2286  M0CD2:   CALL M0DFE  ;ganzen Bildschirm rollen
0CD5   FD4631     2287     LD B,(IY+31H)
0CD8   04         2288     INC B    ;Zeilennummer oberer Teil neu
0CD9   0E21       2289     LD C,21H ;erste Spalte
0CDB   C5         2290     PUSH BC
0CDC   CD9B0E     2291     CALL M0E9B  ;fuer diesen Teil entsprechendes
0CDF   7C         2292     LD A,H      ;Attribute suchen
0CE0   0F         2293     RRCA
0CE1   0F         2294     RRCA
0CE2   0F         2295     RRCA
0CE3   E603       2296     AND 3
0CE5   F658       2297     OR 58H
0CE7   67         2298     LD H,A
0CE8   11E05A     2299     LD DE,5AE0H ;Zeiger auf erstes Attribut der
                  2300           ;untersten Zeile
0CEB   1A         2301     LD A,(DE)
0CEC   4E         2302     LD C,(HL)
0CED   0620       2303     LD B,32     ;32 * tauschen
0CEF   EB         2304     EX DE,HL
0CF0   12         2305  M0CF0:   LD (DE),A
0CF1   71         2306     LD (HL),C
0CF2   13         2307     INC DE
0CF3   23         2308     INC HL
0CF4   10FA       2309     DJNZ M0CF0
0CF6   C1         2310     POP BC      ;Zeilen/Spalennummer der untersten Zeile
0CF7   C9         2311     RET
                  2312  
                  2313  ;Meldung 'SCROLL?'
                  2314  
0CF8   80         2315  SCROLL:  DEFB 80H
0CF9   7363726F   2316     DEFM 'scroll'
0CFF   BF         2317     DEFB '?'+80H
                  2318  
0D00   CF         2319  M0D00:   RST ERRAUS  ;Meldung:
0D01   0C         2320     DEFB 0CH ;'BREAK - CONT repeats'
                              SP                                PAGE  41
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  2321  
                  2322  ;unteren Bildschirm behandeln
                  2323  
0D02   FE02       2324  M0D02:   CP 2     ;unterer Teil zu gross ?
0D04   3880       2325     JR C,M0C86  ;ERROR
                  2326  
0D06   FD8631     2327     ADD A,(IY+31H)
0D09   D619       2328     SUB 19H     ;Scrolling notwendig ?
0D0B   D0         2329     RET NC      ;nein
0D0C   ED44       2330     NEG      ;A=Anzahl der Scrolls
0D0E   C5         2331     PUSH BC     ;Zeile/Spalte
0D0F   47         2332     LD B,A
0D10   2A8F5C     2333     LD HL,(ATTRT)  ;ATTRT, MASKT und
0D13   E5         2334     PUSH HL
0D14   2A915C     2335     LD HL,(PFLAG)  ;PFLAG retten
0D17   E5         2336     PUSH HL
0D18   CD4D0D     2337     CALL AKTCOL
0D1B   78         2338     LD A,B      ;Scrollingzahl in A
0D1C   F5         2339  M0D1C:   PUSH AF
0D1D   216B5C     2340     LD HL,DFSZ  ;Zeilenanzahl+1 im unteren Bildschirmteil
0D20   46         2341     LD B,(HL)
0D21   78         2342     LD A,B
0D22   3C         2343     INC A    ;DFSZ + 1
0D23   77         2344     LD (HL),A
0D24   21895C     2345     LD HL,SPOSN+1  ;Zeile/Spalte fuer Print
0D27   BE         2346     CP (HL)     ;unteren Teil scrollen ?
0D28   3803       2347     JR C,M0D2D  ;ja
0D2A   34         2348     INC (HL) ;SPOSN-High +1
0D2B   0618       2349     LD B,18H ;ganzen Bildschirm scrollen
0D2D   CD000E     2350  M0D2D:   CALL M0E00  ;B Zeilen scrollen
0D30   F1         2351     POP AF      ;Scrollzaehler
0D31   3D         2352     DEC A
0D32   20E8       2353     JR NZ,M0D1C ;nochmal
0D34   E1         2354     POP HL
0D35   FD7557     2355     LD (IY+57H),L  ;PFLAG
0D38   E1         2356     POP HL
0D39   228F5C     2357     LD (ATTRT),HL  ;ATTRT und MASKT
0D3C   ED4B885C   2358     LD BC,(SPOSN)
0D40   FDCB0286   2359     RES 0,(IY+2)
0D44   CDD90D     2360     CALL M0DD9  ;DFCC neu berechnen
0D47   FDCB02C6   2361     SET 0,(IY+2)   ;Behandlung unterer Teil
0D4B   C1         2362     POP BC      ;Zeile/Spalte
0D4C   C9         2363     RET
                  2364  
                  2365  ;Subroutine holt die aktuellen Farben in die
                  2366  ;'transparenten' Variablen ATTRT und MASKT
                  2367  
0D4D   AF         2368  AKTCOL:  XOR A
0D4E   2A8D5C     2369     LD HL,(ATTRP)  ;aktuelle ATTRP und MASKP
0D51   FDCB0246   2370     BIT 0,(IY+2)
0D55   2804       2371     JR Z,M0D5B  ;oberer Bildschirmteil
0D57   67         2372     LD H,A      ;A und
0D58   FD6E0E     2373     LD L,(IY+0EH)  ;BORDCR benutzen fuer
0D5B   228F5C     2374  M0D5B:   LD (ATTRT),HL  ;ATTRT und MASKT
                  2375  ;PFLAG neu setzen (fuer unteren Teil A=0)
0D5E   21915C     2376     LD HL,PFLAG
0D61   2002       2377     JR NZ,M0D65 ;Sprung bei unteren Teil
                  2378  
                              SP                                PAGE  42
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0D63   7E         2379     LD A,(HL)   ;oberer Teil: alten Wert holen
0D64   0F         2380     RRCA     ;ungerade Bits (7,5,...)
0D65   AE         2381  M0D65:   XOR (HL) ;in die geraden kopieren
0D66   E655       2382     AND 55H     ;loeschen der geraden Bits
0D68   AE         2383     XOR (HL) ;bei unteren Bildschirm
0D69   77         2384     LD (HL),A
0D6A   C9         2385     RET
                  2386  
                  2387  ;'CLS'-Befehl
                  2388  
0D6B   CDAF0D     2389  M0D6B:   CALL M0DAF  ;ganzen Bildschirm loeschen
0D6E   213C5C     2390  M0D6E:   LD HL,TVFLAG   ;unteren Teil nach Tastendruck
0D71   CBAE       2391     RES 5,(HL)  ;nicht loeschen
0D73   CBC6       2392     SET 0,(HL)  ;unteren Teil setzen
0D75   CD4D0D     2393     CALL AKTCOL ;BORDCR nach ATTRT kopieren
0D78   FD4631     2394     LD B,(IY+31H)  ;laden DFSZ und unteren Teil
0D7B   CD440E     2395     CALL M0E44  ;des Bildschirmes loeschen
0D7E   21C05A     2396     LD HL,5AC0H ;Adresse Attribut der Zeile 22
0D81   3A8D5C     2397     LD A,(ATTRP)   ;ATTRP als Atribut fuer
0D84   05         2398     DEC B    ;unteren Teil
0D85   1807       2399     JR M0D8E ;in die Schleife
                  2400  
0D87   0E20       2401  M0D87:   LD C,32     ;32 Zeichen pro Zeile
0D89   2B         2402  M0D89:   DEC HL
0D8A   77         2403     LD (HL),A   ;Werte setzen
0D8B   0D         2404     DEC C
0D8C   20FB       2405     JR NZ,M0D89
0D8E   10F7       2406  M0D8E:   DJNZ M0D87
                  2407  
0D90   FD363102   2408     LD (IY+31H),2  ;2 Zeilen als unteren Teil setzen
0D94   3EFD       2409  M0D94:   LD A,0FDH   ;Kanal K oeffnen
0D96   CD0116     2410     CALL OPKAN
0D99   2A515C     2411     LD HL,(CURCHL) ;aktuelle I/O Infoadresse
0D9C   11F409     2412     LD DE,AUSGAB   ;Ausgabeadresse
0D9F   A7         2413     AND A
0DA0   73         2414  M0DA0:   LD (HL),E
0DA1   23         2415     INC HL
0DA2   72         2416     LD (HL),D
0DA3   23         2417     INC HL
0DA4   11A810     2418     LD DE,TASTIN   ;Eingabeadresse
0DA7   3F         2419     CCF
0DA8   38F6       2420     JR C,M0DA0
0DAA   012117     2421     LD BC,1721H ;Zeile/Spalte der ersten unteren Zeile
0DAD   182A       2422     JR M0DD9
                  2423  
                  2424  ;Bildschirm loeschen
                  2425  
0DAF   210000     2426  M0DAF:   LD HL,0     ;'COORDS' loeschen
0DB2   227D5C     2427     LD (COORDS),HL ;Koordinaten des letzten Plot
0DB5   FDCB3086   2428     RES 0,(IY+30H) ;FLAGS2: Bildschirm geloescht
0DB9   CD940D     2429     CALL M0D94  ;Ein/Ausgabeadresse und Kanal K
                  2430           ;original setzen
0DBC   3EFE       2431     LD A,0FEH   ;Kanal S oeffnen
0DBE   CD0116     2432     CALL OPKAN
0DC1   CD4D0D     2433     CALL AKTCOL ;permanente Werte benutzen
0DC4   0618       2434     LD B,24     ;24 Zeilen des Bildschirmes loeschen
0DC6   CD440E     2435     CALL M0E44
0DC9   2A515C     2436     LD HL,(CURCHL) ;aktuelle I/O Infoadresse
                              SP                                PAGE  43
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0DCC   11F409     2437     LD DE,AUSGAB
0DCF   73         2438     LD (HL),E
0DD0   23         2439     INC HL
0DD1   72         2440     LD (HL),D
0DD2   FD365201   2441     LD (IY+52H),1  ;Scrollzaehler Reset
0DD6   012118     2442     LD BC,1821H ;erste Zeile, erste Spalte
                  2443  
                  2444  ;Printposition auf Bildschirm setzen
                  2445  ;Einsprung mit Zeilen-/Spaltennummer in BC oder, falls
                  2446  ;Printer angesprochen, Spaltenposition in C fuer Printer
                  2447  
0DD9   21005B     2448  M0DD9:   LD HL,PTRBUF   ;Druckerpuffer
0DDC   FDCB014E   2449     BIT 1,(IY+1)   ;Printer ?
0DE0   2012       2450     JR NZ,M0DF4 ;ja
0DE2   78         2451     LD A,B      ;Zeile
0DE3   FDCB0246   2452     BIT 0,(IY+2)   ;Hauptbildschirmteil ?
0DE7   2805       2453     JR Z,M0DEE  ;ja
0DE9   FD8631     2454     ADD A,(IY+31H) ;+ DFSZ
0DEC   D618       2455     SUB 24      ;- 24 weil von unten gezaehlt wird
0DEE   C5         2456  M0DEE:   PUSH BC
0DEF   47         2457     LD B,A
0DF0   CD9B0E     2458     CALL M0E9B  ;Adresse der Zeile berechnen
0DF3   C1         2459     POP BC
0DF4   3E21       2460  M0DF4:   LD A,33
0DF6   91         2461     SUB C    ;Spaltenzahl umrechnen
0DF7   5F         2462     LD E,A
0DF8   1600       2463     LD D,0
0DFA   19         2464     ADD HL,DE
0DFB   C3DC0A     2465     JP NEUSTO
                  2466  
                  2467  ;Subroutine zum Rollen (Scrolling) des Bildschirmes
                  2468  ;B = Anzahl der gerollten Zeilen
                  2469  
0DFE   0617       2470  M0DFE:   LD B,23     ;Einstieg nach 'SCROLL ?'
0E00   CD9B0E     2471  M0E00:   CALL M0E9B  ;Startadresse der Zeile suchen
0E03   0E08       2472     LD C,8      ;8 Pixel-Zeilen
0E05   C5         2473  M0E05:   PUSH BC     ;Zeilen/Pixelzaehler
0E06   E5         2474     PUSH HL     ;Startadresse
0E07   78         2475     LD A,B
0E08   E607       2476     AND 7    ;oberste Zeile eines Bildschirmdrittels ?
0E0A   78         2477     LD A,B
0E0B   200C       2478     JR NZ,M0E19 ;nein
0E0D   EB         2479  M0E0D:   EX DE,HL
0E0E   21E0F8     2480     LD HL,0F8E0H
0E11   19         2481     ADD HL,DE   ;Adresse berechnen
0E12   EB         2482     EX DE,HL
0E13   012000     2483     LD BC,32 ;32 Zeichen
0E16   3D         2484     DEC A
0E17   EDB0       2485     LDIR
                  2486  
                  2487  ;Pixel-Zeilen innerhalb der Bildschirmdrittel scrollen
                  2488  
0E19   EB         2489  M0E19:   EX DE,HL
0E1A   21E0FF     2490     LD HL,0FFE0H
0E1D   19         2491     ADD HL,DE   ;Adresse berechnen
0E1E   EB         2492     EX DE,HL
0E1F   47         2493     LD B,A      ;Zeilennummer
0E20   E607       2494     AND 7    ;Anzahl, der in diesem Bilddrittel
                              SP                                PAGE  44
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0E22   0F         2495     RRCA     ;vorhandenen Zeichen berechnen
0E23   0F         2496     RRCA
0E24   0F         2497     RRCA
0E25   4F         2498     LD C,A      ;in C
0E26   78         2499     LD A,B      ;Zeilennummer
0E27   0600       2500     LD B,0      ;BC = Anzahl 'ALLE ZEICHEN'
0E29   EDB0       2501     LDIR
0E2B   0607       2502     LD B,7
0E2D   09         2503     ADD HL,BC   ;HL+700H fuer naechstes Drittel
0E2E   E6F8       2504     AND 0F8H ;naechstes Drittel bearbeiten ?
0E30   20DB       2505     JR NZ,M0E0D ;ja
                  2506  
                  2507  ;die obige Routine muss 8 mal, fuer jede Pixelzeile einmal,
                  2508  ;durchlaufen werden
                  2509  
0E32   E1         2510     POP HL      ;Startadresse
0E33   24         2511     INC H    ;+1 fuer naechste Pixelzeile
0E34   C1         2512     POP BC      ;Pixelzaehler
0E35   0D         2513     DEC C
0E36   20CD       2514     JR NZ,M0E05 ;noch nicht 8*
                  2515  
                  2516  ;die Attribute muessen auch noch gescrollt werden
                  2517  
0E38   CD880E     2518     CALL M0E88  ;Attributadresse berechnen
0E3B   21E0FF     2519     LD HL,0FFE0H   ;Differenz von 32 fuer Attribute
0E3E   19         2520     ADD HL,DE   ;von DE abziehen
0E3F   EB         2521     EX DE,HL
0E40   EDB0       2522     LDIR     ;Attribute verschieben
0E42   0601       2523     LD B,1      ;unterste Zeile loeschen
                  2524  
                  2525  ;diese Routine loescht B Zeilen von unten
                  2526  
0E44   C5         2527  M0E44:   PUSH BC     ;Zeilennummer
0E45   CD9B0E     2528     CALL M0E9B  ;Adresse in HL berechnen
0E48   0E08       2529     LD C,8      ;8 Pixelzeilen
0E4A   C5         2530  M0E4A:   PUSH BC     ;Zeilennummer, Pixelzaehler
0E4B   E5         2531     PUSH HL     ;Startadresse
0E4C   78         2532     LD A,B      ;Zeilenzahl
0E4D   E607       2533  M0E4D:   AND 7
0E4F   0F         2534     RRCA     ;Zeilenzahl berechnen und in
0E50   0F         2535     RRCA
0E51   0F         2536     RRCA
0E52   4F         2537     LD C,A      ;C
0E53   78         2538     LD A,B
0E54   0600       2539     LD B,0
0E56   0D         2540     DEC C    ;Zeichenzahl - 1
0E57   54         2541     LD D,H
0E58   5D         2542     LD E,L
0E59   3600       2543     LD (HL),0   ;ein Pixel loeschen
0E5B   13         2544     INC DE
0E5C   EDB0       2545     LDIR     ;weiter loeschen
0E5E   110107     2546     LD DE,701H  ;fuer Pixelreihe im naechsten
0E61   19         2547     ADD HL,DE   ;Drittel
0E62   3D         2548     DEC A    ;Zeilenzahl - 1
0E63   E6F8       2549     AND 0F8H ;nur den Drittelzaehler
0E65   47         2550     LD B,A      ;in B bringen
0E66   20E5       2551     JR NZ,M0E4D ;weitere Drittel bearbeiten
                  2552  
                              SP                                PAGE  45
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  2553  ;pruefen ob 8* die Routine durchlaufen wurde
                  2554  
0E68   E1         2555     POP HL      ;Startadresse
0E69   24         2556     INC H
0E6A   C1         2557     POP BC      ;Zeilen/Pixelzaehler
0E6B   0D         2558     DEC C    ;Pixel - 1
0E6C   20DC       2559     JR NZ,M0E4A ;noch nicht 8*
0E6E   CD880E     2560     CALL M0E88  ;Adresse und Zahl der Attribut-
                  2561           ;bytes suchen
0E71   62         2562     LD H,D
0E72   6B         2563     LD L,E
0E73   13         2564     INC DE
0E74   3A8D5C     2565     LD A,(ATTRP)   ;ATTRP fuer Hauptteil benutzen
0E77   FDCB0246   2566     BIT 0,(IY+2)   ;TVFLAG: Hauptteil Bildschirm ?
0E7B   2803       2567     JR Z,M0E80  ;ja
0E7D   3A485C     2568     LD A,(BORDCR)  ;sonst Bordercolor benutzen
0E80   77         2569  M0E80:   LD (HL),A   ;erstes setzen
0E81   0B         2570     DEC BC
0E82   EDB0       2571     LDIR     ;Rest setzen
0E84   C1         2572     POP BC
0E85   0E21       2573     LD C,33     ;Spaltenzahl auf erste setzen
0E87   C9         2574     RET
                  2575  
                  2576  ;Berechne zu einer Bildschirmstelle die Adresse
                  2577  ;der Attribut-Informationen
                  2578  
0E88   7C         2579  M0E88:   LD A,H      ;hoeheres Byte laden
0E89   0F         2580     RRCA     ;* 32
0E8A   0F         2581     RRCA
0E8B   0F         2582     RRCA
0E8C   3D         2583     DEC A    ;- 1
0E8D   F650       2584     OR 50H      ;Basisadresse der Attributinform.
0E8F   67         2585     LD H,A      ;hoeheres Byte berechnet
0E90   EB         2586     EX DE,HL ;Low-Byte bleibt
0E91   61         2587     LD H,C      ;C ist immer 0
0E92   68         2588     LD L,B      ;Zeilennummer
0E93   29         2589     ADD HL,HL   ;* 32
0E94   29         2590     ADD HL,HL
0E95   29         2591     ADD HL,HL
0E96   29         2592     ADD HL,HL
0E97   29         2593     ADD HL,HL
0E98   44         2594     LD B,H      ;in BC
0E99   4D         2595     LD C,L
0E9A   C9         2596     RET
                  2597  
                  2598  ;bilde Speicheradresse einer Punktreihe des Schirmes in HL
                  2599  
0E9B   3E18       2600  M0E9B:   LD A,18H
0E9D   90         2601     SUB B    ;Zeile wird von unten gezaehlt
0E9E   57         2602     LD D,A      ;* 32
0E9F   0F         2603     RRCA
0EA0   0F         2604     RRCA
0EA1   0F         2605     RRCA
0EA2   E6E0       2606     AND 0E0H ;nur 3 Bits gueltig
0EA4   6F         2607     LD L,A
0EA5   7A         2608     LD A,D
0EA6   E618       2609     AND 18H
0EA8   F640       2610     OR BILD.SHR.8  ;Startadresse des Bildschirmes
                              SP                                PAGE  46
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0EAA   67         2611     LD H,A
0EAB   C9         2612     RET
                  2613  
                  2614  ;COPY SCREEN
                  2615  
0EAC   F3         2616  M0EAC:   DI
0EAD   06B0       2617     LD B,0B0H   ;176 (22*8) Druckzeilen
                  2618           ;zu je einer Nadel
0EAF   210040     2619     LD HL,BILD  ;Video - RAM
0EB2   E5         2620  NXLINE:  PUSH HL
0EB3   C5         2621     PUSH BC
0EB4   CDF40E     2622     CALL PRLINE ;eine Nadelzeile ausgeben
0EB7   C1         2623     POP BC
0EB8   E1         2624     POP HL
0EB9   24         2625     INC H    ;256 Bytes weiter: naechste Zeile
0EBA   7C         2626     LD A,H
0EBB   E607       2627     AND 7
0EBD   200A       2628     JR NZ,NXLIN1   ;noch innerhalb einer Zeile
0EBF   7D         2629     LD A,L
0EC0   C620       2630     ADD A,32 ;32 Bytes weiter: naechste Zeile
0EC2   6F         2631     LD L,A
0EC3   3F         2632     CCF      ;L uebergelaufen ?
0EC4   9F         2633     SBC A,A     ;bei Ueberl. FFH sonst 0
0EC5   E6F8       2634     AND 0F8H ;Bit 0..3 zaehlen Nadelzeilen
0EC7   84         2635     ADD A,H     ;F8H addieren wenn L=0
0EC8   67         2636     LD H,A
0EC9   10E7       2637  NXLIN1:  DJNZ NXLINE
0ECB   180D       2638     JR M0EDA ;Ende COPY
                  2639  
                  2640  ;  Printerbuffer 5B00H...5BFFH ausdrucken
                  2641  
0ECD   F3         2642  M0ECD:   DI
0ECE   21005B     2643     LD HL,PTRBUF   ;Druckerpuffer
0ED1   0608       2644     LD B,8      ;8 Nadeln
0ED3   C5         2645  M0ED3:   PUSH BC
0ED4   CDF40E     2646     CALL PRLINE
0ED7   C1         2647     POP BC
0ED8   10F9       2648     DJNZ M0ED3
0EDA   3E04       2649  M0EDA:   LD A,4      ;Abschaltbit fuer Drucker
0EDC   D3FB       2650     OUT (0FBH),A   ;ausgeben
0EDE   FB         2651     EI
0EDF   21005B     2652  M0EDF:   LD HL,PTRBUF   ;Druckerpuffer
0EE2   FD7546     2653     LD (IY+46H),L
                  2654  ;ganzen Printerbuffer loeschen
0EE5   AF         2655     XOR A
0EE6   47         2656     LD B,A
0EE7   77         2657  CLRPRB:  LD (HL),A
0EE8   23         2658     INC HL
0EE9   10FC       2659     DJNZ CLRPRB ;255 Nullen
0EEB   FDCB308E   2660     RES 1,(IY+30H) ;FLAGS2: Printerbuffer leer
0EEF   0E21       2661     LD C,33
0EF1   C3D90D     2662     JP M0DD9
                  2663  
                  2664  ;Ausgabe einer Druckerzeile (32 Bytes Nadelgrafik)
                  2665  
0EF4   78         2666  PRLINE:  LD A,B      ;Anzahl der noch zu druckenden
0EF5   FE03       2667     CP 3     ;Nadelreihen
0EF7   9F         2668     SBC A,A
                              SP                                PAGE  47
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0EF8   E602       2669     AND 2    ;wenn nur noch 2 Zeilen
0EFA   D3FB       2670     OUT (0FBH),A   ;Printermotor bremsen
0EFC   57         2671     LD D,A
0EFD   CD541F     2672  M0EFD:   CALL M1F54  ;Stoptaste ?
0F00   380A       2673     JR C,M0F0C
0F02   3E04       2674     LD A,4      ;Abschaltbit fuer Printer
0F04   D3FB       2675     OUT (0FBH),A
0F06   FB         2676     EI
0F07   CDDF0E     2677     CALL M0EDF  ;Clear Printerbuffer
0F0A   CF         2678     RST ERRAUS  ;Meldung:
0F0B   0C         2679     DEFB 0CH ;'BREAK - CONT REPEATS'
                  2680  
0F0C   DBFB       2681  M0F0C:   IN A,(0FBH) ;Druckerstatus
0F0E   87         2682     ADD A,A     ;Bit 6 muss 0 sein, sonst
0F0F   F8         2683     RET M    ;kein Drucker da
0F10   30EB       2684     JR NC,M0EFD ;warten wenn Bit 7 0 war
                  2685  
                  2686  ;alles zur Ausgabe bereit
                  2687  
0F12   0E20       2688     LD C,32     ;32 Bytes
0F14   5E         2689  PRTBYT:  LD E,(HL)   ;auszugebendes Byte
0F15   23         2690     INC HL
0F16   0608       2691     LD B,8
0F18   CB12       2692  PRTBIT:  RL D     ;Bit 7 von Port FBH = Nadel
0F1A   CB13       2693     RL E     ;E bitweise ausgeben
0F1C   CB1A       2694     RR D
0F1E   DBFB       2695  M0F1E:   IN A,(0FBH)
0F20   1F         2696     RRA      ;Bit 0 = Drucker Ready
0F21   30FB       2697     JR NC,M0F1E
0F23   7A         2698     LD A,D
0F24   D3FB       2699     OUT (0FBH),A   ;OUT Nadel
0F26   10F0       2700     DJNZ PRTBIT
0F28   0D         2701     DEC C    ;naechstes Byte
0F29   20E9       2702     JR NZ,PRTBYT
0F2B   C9         2703     RET
                  2704  ;==================================================
                  2705  
                  2706  ;Editieren einer Bildschirmzeile
                  2707  ;Aufruf durch Hauptroutine zum eingeben einer Basiczeile
                  2708  ;oder bei einem Inputbefehl in einem Programm
                  2709  
0F2C   2A3D5C     2710  M0F2C:   LD HL,(ERRSP)  ;Errorstackpointer retten
0F2F   E5         2711     PUSH HL
0F30   217F10     2712  M0F30:   LD HL,M107F ;Return fuer Editorerror
0F33   E5         2713     PUSH HL
0F34   ED733D5C   2714     LD (ERRSP),SP  ;Errorstackpointer setzen
0F38   CDD415     2715  M0F38:   CALL WARTA  ;ein Zeichen von Tastatur
0F3B   F5         2716     PUSH AF
0F3C   1600       2717     LD D,0
0F3E   FD5EFF     2718     LD E,(IY-1) ;Tastenklick
0F41   21C800     2719     LD HL,0C8H  ;Tonhoehe
0F44   CDB503     2720     CALL PIEPEN
0F47   F1         2721     POP AF      ;Zeichen
0F48   21380F     2722     LD HL,M0F38 ;als RETURN
0F4B   E5         2723     PUSH HL
0F4C   FE18       2724     CP 18H      ;alle Zeichen, Tokens und
0F4E   3031       2725     JR NC,M0F81 ;Grafikzeichen uebernehmen
0F50   FE07       2726     CP 7     ;Komma ebenfalls
                              SP                                PAGE  48
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0F52   382D       2727     JR C,M0F81
0F54   FE10       2728     CP 10H      ;Editorzeichen ?
0F56   383A       2729     JR C,M0F92  ;ja
                  2730  
                  2731  ;Steuerzeichen 'INK' bis 'TAB'
                  2732  
0F58   010200     2733     LD BC,2     ;2 Plaetze bei 'INK' und 'PAPER'
0F5B   57         2734     LD D,A
0F5C   FE16       2735     CP 16H      ;'INK' und 'PAPER' ?
0F5E   380C       2736     JR C,M0F6C  ;ja
                  2737  
0F60   03         2738     INC BC      ;fuer 'AT' und 'TAB' 3 Plaetze
0F61   FDCB377E   2739     BIT 7,(IY+37H) ;'INPUT LINE' ?
0F65   CA1E10     2740     JP Z,M101E  ;nein
                  2741  
0F68   CDD415     2742     CALL WARTA  ;naechstes Zeichen
0F6B   5F         2743     LD E,A      ;in E
                  2744  
0F6C   CDD415     2745  M0F6C:   CALL WARTA  ;naechstes Zeichen fuer Steuercodes
0F6F   D5         2746     PUSH DE
0F70   2A5B5C     2747     LD HL,(KCUR)   ;Kursoradresse
0F73   FDCB0786   2748     RES 0,(IY+7)   ;'K' - Modus
0F77   CD5516     2749     CALL MACHPL ;2 oder 3 Plaetze besorgen
0F7A   C1         2750     POP BC      ;Steuercodes
0F7B   23         2751     INC HL
0F7C   70         2752     LD (HL),B   ;speichern
0F7D   23         2753     INC HL      ;bei 'INK' und 'PAPER'
0F7E   71         2754     LD (HL),C   ;wird der Zweite wieder ueberschrieben
0F7F   180A       2755     JR M0F8B
                  2756  
                  2757  ;Routine fuegt ein Zeichen zu einer Editor- oder
                  2758  ;Inputzeile hinzu
                  2759  
0F81   FDCB0786   2760  M0F81:   RES 0,(IY+7)   ;K-Modus
0F85   2A5B5C     2761     LD HL,(KCUR)   ;Kursoradresse
0F88   CD5216     2762     CALL NUREIN ;1 Speicherplatz besorgen
0F8B   12         2763  M0F8B:   LD (DE),A
0F8C   13         2764     INC DE      ;Kursor + 1
0F8D   ED535B5C   2765     LD (KCUR),DE   ;Kursoradresse
0F91   C9         2766     RET
                  2767  
                  2768  ;Editiersteuerzeichen behandeln
                  2769  
0F92   5F         2770  M0F92:   LD E,A
0F93   1600       2771     LD D,0      ;Code in DE
0F95   21990F     2772     LD HL,M0FA0-7  ;Adresse Editorzeichen
0F98   19         2773     ADD HL,DE   ;Adresse Zeichen
0F99   5E         2774     LD E,(HL)   ;Offset holen
0F9A   19         2775     ADD HL,DE   ;Routineadresse
0F9B   E5         2776     PUSH HL
0F9C   2A5B5C     2777     LD HL,(KCUR)   ;Kursoradresse
0F9F   C9         2778     RET      ;in die Routine
                  2779  
                  2780  ;Offset der Editorsteuerzeichen
                  2781  
0FA0   09         2782  M0FA0:   DEFB M0FA9-$   ;EDIT
0FA1   66         2783     DEFB M1007-$   ;CURSOR LINKS
0FA2   6A         2784     DEFB M100C-$   ;CURSOR RECHTS
                              SP                                PAGE  49
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

0FA3   50         2785     DEFB M0FF3-$   ;CURSOR DOWN
0FA4   B5         2786     DEFB M1059-$   ;CURSOR UP
0FA5   70         2787     DEFB M1015-$   ;DELETE
0FA6   7E         2788     DEFB M1024-$   ;ENTER
0FA7   CF         2789     DEFB M1076-$   ;SYMBOL SHIFT
0FA8   D4         2790     DEFB M107C-$   ;GRAPHICS
                  2791  
0FA9   2A495C     2792  M0FA9:   LD HL,(EPPC)   ;Zeilennummer
0FAC   FDCB376E   2793     BIT 5,(IY+37H) ;'INPUT MODUS' ?
0FB0   C29710     2794     JP NZ,M1097 ;ja
0FB3   CD6E19     2795     CALL M196E  ;Startadresse der Zeile suchen
0FB6   CD9516     2796     CALL ZSUCHE ;Zeilennummer dazu
0FB9   7A         2797     LD A,D      ;Zeilennummer = 0 ?
0FBA   B3         2798     OR E
0FBB   CA9710     2799     JP Z,M1097  ;nur Editorbereich loeschen
0FBE   E5         2800     PUSH HL     ;Adresse Zeile
0FBF   23         2801     INC HL
0FC0   4E         2802     LD C,(HL)   ;Laenge  Zeile
0FC1   23         2803     INC HL
0FC2   46         2804     LD B,(HL)
0FC3   210A00     2805     LD HL,10
0FC6   09         2806     ADD HL,BC   ;10 + Laenge
0FC7   44         2807     LD B,H
0FC8   4D         2808     LD C,L
0FC9   CD051F     2809     CALL M1F05  ;Speicherplatztest
0FCC   CD9710     2810     CALL M1097  ;Editorbereich loeschen
0FCF   2A515C     2811     LD HL,(CURCHL) ;aktuelle I/O Infoadresse
0FD2   E3         2812     EX (SP),HL
0FD3   E5         2813     PUSH HL
0FD4   3EFF       2814     LD A,0FFH   ;Kanal R oeffnen, um die Zeile
0FD6   CD0116     2815     CALL OPKAN  ;in den Editorbereich zu kopieren
0FD9   E1         2816     POP HL      ;Startadresse Zeile
0FDA   2B         2817     DEC HL
0FDB   FD350F     2818     DEC (IY+0FH)   ;Zeilennummer-1
0FDE   CD5518     2819     CALL M1855  ;Basiczeile listen
0FE1   FD340F     2820     INC (IY+0FH)   ;Zeilennummer+1
0FE4   2A595C     2821     LD HL,(ELINE)  ;Adresse des eingegebenen Befehls
0FE7   23         2822     INC HL      ;Zeilennummer und Laenge uebergehen
0FE8   23         2823     INC HL
0FE9   23         2824     INC HL
0FEA   23         2825     INC HL
0FEB   225B5C     2826     LD (KCUR),HL   ;Kursoradresse
0FEE   E1         2827     POP HL      ;vorherige Kanaladresse
0FEF   CD1516     2828     CALL M1615  ;holen und Flags setzen
0FF2   C9         2829     RET      ;zur Editorschleife
                  2830  
                  2831  ;Cursor-Down-Routine
                  2832  
0FF3   FDCB376E   2833  M0FF3:   BIT 5,(IY+37H) ;INPUT MODUS ?
0FF7   2008       2834     JR NZ,M1001 ;ja
0FF9   21495C     2835     LD HL,EPPC  ;aktuelle Editorzeile
0FFC   CD0F19     2836     CALL M190F  ;naechste Zeilennummer suchen
0FFF   186D       2837     JR M106E ;Listing ausgeben
                  2838  
1001   FD360010   2839  M1001:   LD (IY+0),16   ;ERRNR: Stop in Input
1005   181D       2840     JR M1024
                  2841  
                  2842  ;Cursor eins nach links
                              SP                                PAGE  50
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  2843  
1007   CD3110     2844  M1007:   CALL M1031  ;Cursor bewegen
100A   1805       2845     JR SETKCU   ;und KCUR setzen
                  2846  
                  2847  ;Cursor eins nach rechts
                  2848  
100C   7E         2849  M100C:   LD A,(HL)   ;aktuelles Zeichen=0DH ?
100D   FE0D       2850     CP 0DH
100F   C8         2851     RET Z    ;ja
1010   23         2852     INC HL      ;Kursor auf naechstes Zeichen
1011   225B5C     2853  SETKCU:  LD (KCUR),HL   ;Kursoradresse
1014   C9         2854     RET
                  2855  
                  2856  ;loeschen eines Zeichens beim Editieren
                  2857  
1015   CD3110     2858  M1015:   CALL M1031  ;Cursor nach links
1018   010100     2859     LD BC,1     ;1 Zeichen entfernen
101B   C3E819     2860     JP RAUS2
                  2861  
101E   CDD415     2862  M101E:   CALL WARTA  ;2 Zeichen von der
1021   CDD415     2863     CALL WARTA  ;Tastatur wegwerfen
                  2864  
1024   E1         2865  M1024:   POP HL      ;Aufruf von Editor und
1025   E1         2866     POP HL      ;Editor-Error wegwerfen
1026   E1         2867  M1026:   POP HL      ;alter Wert von ERRSP
1027   223D5C     2868     LD (ERRSP),HL  ;Errorstackpointer
102A   FDCB007E   2869     BIT 7,(IY+0)   ;Fehler ?
102E   C0         2870     RET NZ      ;nein
102F   F9         2871     LD SP,HL ;Sprung in Errorroutine
1030   C9         2872     RET
                  2873  
                  2874  ;Cursor nach links bis maximal an den Anfang der Zeile
                  2875  ;bewegen. HL zeigt auf Cursorposition.
                  2876  
1031   37         2877  M1031:   SCF      ;DE auf ELINE (editieren) oder
1032   CD9511     2878     CALL EDDE   ;auf WORKSP (INPUT) setzen
1035   ED52       2879     SBC HL,DE   ;CARRY =1, wenn Cursor am
1037   19         2880     ADD HL,DE   ;Anfang der Zeile
1038   23         2881     INC HL
1039   C1         2882     POP BC      ;eine Returnadresse wegwerfen
103A   D8         2883     RET C    ;RET in Editorschleife, wenn
                  2884           ;Cursor am Zeilenanfang
103B   C5         2885     PUSH BC
103C   44         2886     LD B,H      ;Cursoradresse in BC
103D   4D         2887     LD C,L
103E   62         2888  M103E:   LD H,D      ;Zeichenadresse nach HL
103F   6B         2889     LD L,E
1040   23         2890     INC HL
1041   1A         2891     LD A,(DE)   ;Zeichen
1042   E6F0       2892     AND 0F0H ;>0F0H
1044   FE10       2893     CP 10H      ;und <20H ?
1046   2009       2894     JR NZ,M1051 ;nein
1048   23         2895     INC HL      ;Parameter+1
1049   1A         2896     LD A,(DE)
104A   D617       2897     SUB 17H
104C   CE00       2898     ADC A,0     ;16H und 17H wird 0
104E   2001       2899     JR NZ,M1051
1050   23         2900     INC HL
                              SP                                PAGE  51
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1051   A7         2901  M1051:   AND A
1052   ED42       2902     SBC HL,BC
1054   09         2903     ADD HL,BC   ;HL wie vorher
1055   EB         2904     EX DE,HL
1056   38E6       2905     JR C,M103E
1058   C9         2906     RET
                  2907  
                  2908  ;Cursor eins nach oben bewegen
                  2909  
1059   FDCB376E   2910  M1059:   BIT 5,(IY+37H) ;FLAGX: INPUT MODUS ?
105D   C0         2911     RET NZ      ;ja
105E   2A495C     2912     LD HL,(EPPC)   ;aktuelle Editorzeile
1061   CD6E19     2913     CALL M196E  ;Startadresse holen
1064   EB         2914     EX DE,HL ;HL eine Zeile davor
1065   CD9516     2915     CALL ZSUCHE ;Zeilennummer holen
1068   214A5C     2916     LD HL,EPPC+1
106B   CD1C19     2917     CALL M191C  ;Zeilennummer speichern
106E   CD9517     2918  M106E:   CALL LISTAU ;ein Listing ausgeben
1071   3E00       2919     LD A,0      ;Kanal K wieder eroeffnen
1073   C30116     2920     JP OPKAN
                  2921  
1076   FDCB377E   2922  M1076:   BIT 7,(IY+37H) ;FLAGX
107A   28A8       2923     JR Z,M1024  ;bei 'INPUT LINE' nicht springen
107C   C3810F     2924  M107C:   JP M0F81
                  2925  
                  2926  ;Einstieg, wenn ein Fehler beim Editieren auftrat
                  2927  
107F   FDCB3066   2928  M107F:   BIT 4,(IY+48)  ;Kanal K ?
1083   28A1       2929     JR Z,M1026  ;nein
1085   FD3600FF   2930     LD (IY+0),0FFH ;Fehlernummer loeschen
1089   1600       2931     LD D,0
108B   FD5EFE     2932     LD E,(IY-2) ;ein Piepser als
108E   21901A     2933     LD HL,1A90H
1091   CDB503     2934     CALL PIEPEN ;Warnung ausgeben
1094   C3300F     2935     JP M0F30 ;in Editor
                  2936  
                  2937  ;Editorbereich oder Workspace loeschen
                  2938  
1097   E5         2939  M1097:   PUSH HL     ;Pointer auf freien Platz
1098   CD9011     2940     CALL EDHLDE ;DE auf erstes und HL auf
109B   2B         2941     DEC HL      ;letztes Zeichen setzen
109C   CDE519     2942     CALL RAUS1  ;Speicher freigeben
109F   225B5C     2943     LD (KCUR),HL   ;Kursoradresse
10A2   FD360700   2944     LD (IY+7),0 ;Modus 'K'
10A6   E1         2945     POP HL
10A7   C9         2946     RET
                  2947  
                  2948  ;diese Routine holt die letzte gedrueckte Taste und
                  2949  ;wertet 'CAPS LOCK', Modusaenderungen und Colorparameter
                  2950  ;direkt aus
                  2951  
10A8   FDCB025E   2952  TASTIN:  BIT 3,(IY+2)   ;Moduswechsel ?
10AC   C41D11     2953     CALL NZ,M111D  ;ja, Editorzeile anzeigen
10AF   A7         2954     AND A
10B0   FDCB016E   2955     BIT 5,(IY+1)   ;CARRY und ZERO = 0 wenn,
10B4   C8         2956     RET Z    ;keine Taste gedrueckt
10B5   3A085C     2957     LD A,(LASTK)   ;Tastencode
10B8   FDCB01AE   2958     RES 5,(IY+1)   ;abgeholt
                              SP                                PAGE  52
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

10BC   F5         2959     PUSH AF
10BD   FDCB026E   2960     BIT 5,(IY+2)   ;unteren Bildschirm loeschen ?
10C1   C46E0D     2961     CALL NZ,M0D6E  ;ja
10C4   F1         2962     POP AF
10C5   FE20       2963     CP ' '      ;alle ASCII-Zeichen und Tokens
10C7   3052       2964     JR NC,M111B ;uebernehmen
10C9   FE10       2965     CP 10H      ;Steuerzeichen 10H...1FH ?
10CB   302D       2966     JR NC,M10FA ;ja
10CD   FE06       2967     CP 6     ;'MODE'-Zeichen und 'CAPS'-Lock
10CF   300A       2968     JR NC,MODCAP   ;ja
                  2969  
10D1   47         2970     LD B,A      ;FLASH, BRIGHT und INVERSE
10D2   E601       2971     AND 1    ;Bit0 fuer aus oder ein
10D4   4F         2972     LD C,A
10D5   78         2973     LD A,B
10D6   1F         2974     RRA      ;FLASH=12H, BRIGHT=13H, INVERSE=14H
10D7   C612       2975     ADD A,12H
10D9   182A       2976     JR M1105
                  2977  
10DB   2009       2978  MODCAP:  JR NZ,MODES
10DD   216A5C     2979     LD HL,FLAGS2   ;Flags Teil 2
10E0   3E08       2980     LD A,8      ;Bit 3 von FLAGS2
10E2   AE         2981     XOR (HL) ;invertieren
10E3   77         2982     LD (HL),A
10E4   180E       2983     JR M10F4
                  2984  
10E6   FE0E       2985  MODES:   CP 0EH      ;nur 0EH (SYMBOL SHIFT) und
10E8   D8         2986     RET C    ;0FH (GRAPHICS) weiter
10E9   D60D       2987     SUB 0DH
10EB   21415C     2988     LD HL,MODE  ;Tastenmodus (K,L,C,E,G)
10EE   BE         2989     CP (HL)     ;Modus geaendert ?
10EF   77         2990     LD (HL),A
10F0   2002       2991     JR NZ,M10F4 ;ja
10F2   3600       2992     LD (HL),0   ;sonst L-Modus
10F4   FDCB02DE   2993  M10F4:   SET 3,(IY+2)   ;Modus kann sich geandert haben
10F8   BF         2994     CP A     ;CARRY = 0
10F9   C9         2995     RET
                  2996  
10FA   47         2997  M10FA:   LD B,A
10FB   E607       2998     AND 7    ;Bit 0...2
10FD   4F         2999     LD C,A
10FE   3E10       3000     LD A,10H ;Codes fuer 'INK'
1100   CB58       3001     BIT 3,B     ;ungeshifteter Code ?
1102   2001       3002     JR NZ,M1105 ;nein
1104   3C         3003     INC A    ;A='PAPER'-Code
1105   FD71D3     3004  M1105:   LD (IY-2DH),C  ;Parameter speichern
1108   110D11     3005     LD DE,TASTI2   ;Input aendern
110B   1806       3006     JR M1113
                  3007  
110D   3A0D5C     3008  TASTI2:  LD A,(KDATA)   ;noch eine Taste als Parameter
1110   11A810     3009     LD DE,TASTIN   ;holen und Input wieder normal
1113   2A4F5C     3010  M1113:   LD HL,(CHANS)  ;aktuelle Kanaladresse
1116   23         3011     INC HL      ;auf Input zeigen lassen
1117   23         3012     INC HL
1118   73         3013     LD (HL),E   ;neuen Input-Einsprung speichern
1119   23         3014     INC HL
111A   72         3015     LD (HL),D
111B   37         3016  M111B:   SCF
                              SP                                PAGE  53
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

111C   C9         3017     RET
                  3018  
                  3019  ;diese Routine wird immer aufgerufen, wenn der
                  3020  ;Editor- oder Inputbereich in den unteren
                  3021  ;Bildschirmteil geschrieben werden soll
                  3022  
111D   CD4D0D     3023  M111D:   CALL AKTCOL ;aktuelle Farben bleiben
1120   FDCB029E   3024     RES 3,(IY+2)   ;keine Mode-Aenderung
1124   FDCB02AE   3025     RES 5,(IY+2)   ;unteren Teil nicht loeschen
1128   2A8A5C     3026     LD HL,(SPOSNL) ;akt. Werte des unteren Teil
112B   E5         3027     PUSH HL     ;retten
112C   2A3D5C     3028     LD HL,(ERRSP)  ;Errorstackpointer
112F   E5         3029     PUSH HL
1130   216711     3030     LD HL,EDERR ;Fehlerreturnadresse
1133   E5         3031     PUSH HL
1134   ED733D5C   3032     LD (ERRSP),SP  ;Errorstackpointer
1138   2A825C     3033     LD HL,(ECHOE)  ;Position fuer Input
113B   E5         3034     PUSH HL
113C   37         3035     SCF
113D   CD9511     3036     CALL EDDE
1140   EB         3037     EX DE,HL ;HL = Anfang; DE = Ende
1141   CD7D18     3038     CALL M187D  ;Zeile ausgeben
1144   EB         3039     EX DE,HL
1145   CDE118     3040     CALL M18E1  ;Cursor anzeigen
1148   2A8A5C     3041     LD HL,(SPOSNL) ;SPOSNL mit ECHOE austauschen
114B   E3         3042     EX (SP),HL
114C   EB         3043     EX DE,HL
114D   CD4D0D     3044     CALL AKTCOL ;akt. Farben noch mal setzen
                  3045  
                  3046  ;den Rest einer Zeile mit Leerzeichen fuellen
                  3047  
1150   3A8B5C     3048  RESTLE:  LD A,(SPOSNL+1)   ;akt. Bildschirmzeile
1153   92         3049     SUB D    ;mit der Alten vergleichen
1154   3826       3050     JR C,M117C  ;Leerzeichenausgabe nicht noetig
1156   2006       3051     JR NZ,REST1 ;nicht die gleiche Zeile
1158   7B         3052     LD A,E      ;alte minus
1159   FD9650     3053     SUB (IY+50H)   ;neue Spaltenposition
115C   301E       3054     JR NC,M117C
115E   3E20       3055  REST1:   LD A,' '
1160   D5         3056     PUSH DE
1161   CDF409     3057     CALL AUSGAB
1164   D1         3058     POP DE
1165   18E9       3059     JR RESTLE
                  3060  
                  3061  ;Fehlerbehandlung im Editor
                  3062  
1167   1600       3063  EDERR:   LD D,0
1169   FD5EFE     3064     LD E,(IY-2) ;= RASP
116C   21901A     3065     LD HL,1A90H
116F   CDB503     3066     CALL PIEPEN ;Warnton
1172   FD3600FF   3067     LD (IY+0),0FFH ;Errornummer loeschen
1176   ED5B8A5C   3068     LD DE,(SPOSNL) ;akt. Wert SPOSNL fuer
117A   1802       3069     JR M117E    ;ECHOE holen
                  3070  
                  3071  ;normaler Ausstieg bei Ausgabe der Editor- oder Inputzeile
                  3072  
117C   D1         3073  M117C:   POP DE
117D   E1         3074     POP HL
                              SP                                PAGE  54
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

117E   E1         3075  M117E:   POP HL
117F   223D5C     3076     LD (ERRSP),HL  ;Errorstackpointer
1182   C1         3077     POP BC      ;SPOSNL alt
1183   D5         3078     PUSH DE     ;SPOSNL neu
1184   CDD90D     3079     CALL M0DD9  ;Systemvariable setzen
1187   E1         3080     POP HL      ;SPOSNL neu in ECHOE
1188   22825C     3081     LD (ECHOE),HL  ;Position fuer Input
118B   FD362600   3082     LD (IY+26H),0  ;Errorzeiger loeschen
118F   C9         3083     RET
                  3084  
                  3085  ;HL auf die letzte Position, DE auf die Erste entweder
                  3086  ;des Editor- oder des Workspacebereichs setzen
                  3087  
1190   2A615C     3088  EDHLDE:  LD HL,(WORKSP) ;derzeitiger Workspace
1193   2B         3089     DEC HL      ;Ende Editorbereich
1194   A7         3090     AND A
1195   ED5B595C   3091  EDDE: LD DE,(ELINE)  ;Anfang Editorbereich
1199   FDCB376E   3092     BIT 5,(IY+37H) ;Editormode Return
119D   C8         3093     RET Z
119E   ED5B615C   3094     LD DE,(WORKSP) ;sonst DE auf Workspace
11A2   D8         3095     RET C
11A3   2A635C     3096     LD HL,(STKBOT) ;Anfang des Calculatorstacks
11A6   C9         3097     RET
                  3098  
                  3099  ;Routine holt die versteckten Floatingpoint-Zahlen
                  3100  ;einer BASIC-Zeile zurueck
                  3101  
11A7   7E         3102  HOLFLO:  LD A,(HL)
11A8   FE0E       3103     CP 0EH      ;Floatingpoint-Zahl ?
11AA   010600     3104     LD BC,6     ;wenn ja, 6 Plaetze
11AD   CCE819     3105     CALL Z,RAUS2   ;beschaffen
11B0   7E         3106     LD A,(HL)
11B1   23         3107     INC HL
11B2   FE0D       3108     CP 0DH      ;Ende ?
11B4   20F1       3109     JR NZ,HOLFLO   ;nein
11B6   C9         3110     RET
                  3111  
                  3112  ;===================================================
                  3113  
                  3114  ;Systeminitialisierung bei Befehl 'NEW' oder durch
                  3115  ;RESET beim Einschalten
                  3116  ;Unterscheidung durch Reg A: FFH = 'NEW'
                  3117  
11B7   F3         3118  NEW:  DI
11B8   3EFF       3119     LD A,0FFH
11BA   ED5BB25C   3120     LD DE,(RAMTOP) ;letzte Speicheradresse fuer Basic
11BE   D9         3121     EXX
11BF   ED4BB45C   3122     LD BC,(PRAMT)  ;letzte Speicheradresse
11C3   ED5B385C   3123     LD DE,(RASP)   ;Laenge Warnton
11C7   2A7B5C     3124     LD HL,(UDG) ;Adresse der User Grafikzeichen
11CA   D9         3125     EXX
                  3126  ;=======================================================
                  3127  
                  3128  ;Resetroutine mit Vorbereitung aller Pointer nach Start
                  3129  
                  3130  ;=======================================================
11CB   47         3131  RESET1:  LD B,A      ;bei Kaltstart B=0
11CC   3E07       3132     LD A,7
                              SP                                PAGE  55
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

11CE   D3FE       3133     OUT (PFE),A
11D0   3E3F       3134     LD A,3FH
11D2   ED47       3135     LD I,A
11D4   00         3136     NOP
11D5   00         3137     NOP
11D6   00         3138     NOP
11D7   00         3139     NOP
11D8   00         3140     NOP
11D9   00         3141     NOP
11DA   62         3142     LD H,D
11DB   6B         3143     LD L,E
11DC   3602       3144  M11DC:   LD (HL),2
11DE   2B         3145     DEC HL
11DF   BC         3146     CP H
11E0   20FA       3147     JR NZ,M11DC
11E2   A7         3148  RAMTES:  AND A
11E3   ED52       3149     SBC HL,DE
11E5   19         3150     ADD HL,DE
11E6   23         3151     INC HL
11E7   3006       3152     JR NC,RAMFER
11E9   35         3153     DEC (HL)
11EA   2803       3154     JR Z,RAMFER
11EC   35         3155     DEC (HL)
11ED   28F3       3156     JR Z,RAMTES
                  3157  
11EF   2B         3158  RAMFER:  DEC HL
11F0   D9         3159     EXX
11F1   ED43B45C   3160     LD (PRAMT),BC  ;letzte Speicheradresse
11F5   ED53385C   3161     LD (RASP),DE   ;Laenge Warnton
11F9   227B5C     3162     LD (UDG),HL ;Adresse der User Grafikzeichen
11FC   D9         3163     EXX
11FD   04         3164     INC B
11FE   2819       3165     JR Z,SETTOP
1200   22B45C     3166     LD (PRAMT),HL  ;letzte Speicheradresse
1203   11AF3E     3167     LD DE,3EAFH ;Zeichengenerator laden
1206   01A800     3168     LD BC,0A8H
1209   EB         3169     EX DE,HL
120A   EDB8       3170     LDDR
120C   EB         3171     EX DE,HL
120D   23         3172     INC HL
120E   227B5C     3173     LD (UDG),HL ;Adresse der User Grafikzeichen
1211   2B         3174     DEC HL
1212   014000     3175     LD BC,040H
1215   ED43385C   3176     LD (RASP),BC   ;Laenge Warnton
1219   22B25C     3177  SETTOP:  LD (RAMTOP),HL ;letzte Speicheradresse fuer Basic
121C   21003C     3178     LD HL,CHARR0-256
121F   22365C     3179     LD (CHARS),HL  ;Zeichensatzadresse -256
                  3180  
1222   2AB25C     3181     LD HL,(RAMTOP) ;letzte Speicheradresse fuer Basic
1225   363E       3182     LD (HL),3EH
1227   2B         3183     DEC HL
1228   F9         3184     LD SP,HL
1229   2B         3185     DEC HL
122A   2B         3186     DEC HL
122B   223D5C     3187     LD (ERRSP),HL  ;Errorstackpointer
122E   ED56       3188     IM 1
1230   FD213A5C   3189     LD IY,ERRNR
1234   FB         3190     EI
                              SP                                PAGE  56
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1235   21B65C     3191     LD HL,KANMEM
1238   224F5C     3192     LD (CHANS),HL  ;Pointer fuer Kanaldaten
123B   11AF15     3193     LD DE,INIKAN
123E   011500     3194     LD BC,21
1241   EB         3195     EX DE,HL
1242   EDB0       3196     LDIR
                  3197  
1244   EB         3198     EX DE,HL
1245   2B         3199     DEC HL
1246   22575C     3200     LD (DATADD),HL ;Zeiger auf Endbyte der letzten Daten
1249   23         3201     INC HL
124A   22535C     3202     LD (PROG),HL   ;Start des Basicprogrammes
124D   224B5C     3203     LD (VARS),HL   ;Beginn der Variablen
1250   3680       3204     LD (HL),80H
1252   23         3205     INC HL
1253   22595C     3206     LD (ELINE),HL  ;Adresse des eingegebenen Befehls
1256   360D       3207     LD (HL),0DH
1258   23         3208     INC HL
1259   3680       3209     LD (HL),80H
125B   23         3210     INC HL
125C   22615C     3211     LD (WORKSP),HL ;derzeitiger Workspace
125F   22635C     3212     LD (STKBOT),HL ;Anfang des Calculatorstacks
1262   22655C     3213     LD (STKEND),HL ;Anfang des freien Speichers
1265   3E38       3214     LD A,38H
1267   328D5C     3215     LD (ATTRP),A   ;aktuelle Farben permanent
126A   328F5C     3216     LD (ATTRT),A   ;aktuelle Farben temporaer
126D   32485C     3217     LD (BORDCR),A  ;Bordercolor * 8
1270   212305     3218     LD HL,523H
1273   22095C     3219     LD (REPDEL),HL ;Zeitkonstante bis Repeat
1276   FD35C6     3220     DEC (IY-3AH)
1279   FD35CA     3221     DEC (IY-36H)
127C   21C615     3222     LD HL,STDATA
127F   11105C     3223     LD DE,STRMS ;Tabelle der offenen Kanaele
1282   010E00     3224     LD BC,0EH
1285   EDB0       3225     LDIR
1287   FDCB01CE   3226     SET 1,(IY+1)
128B   CDDF0E     3227     CALL M0EDF
128E   FD363102   3228     LD (IY+31H),2
1292   CD6B0D     3229     CALL M0D6B
1295   AF         3230     XOR A
1296   113815     3231     LD DE,COPRIG-1
1299   CD0A0C     3232     CALL PRTMEL
129C   FDCB02EE   3233     SET 5,(IY+2)
12A0   1807       3234     JR M12A9
                  3235  
                  3236  ;===================================================
                  3237  
                  3238  ;Hauptschleife des Ausfuehrprogramms
                  3239  
12A2   FD363102   3240  HAUPT:   LD (IY+31H),2
12A6   CD9517     3241     CALL LISTAU
12A9   CDB016     3242  M12A9:   CALL CLREDI
12AC   3E00       3243  HAUEDI:  LD A,0
12AE   CD0116     3244     CALL OPKAN
12B1   CD2C0F     3245     CALL M0F2C
12B4   CD171B     3246     CALL M1B17
12B7   FDCB007E   3247     BIT 7,(IY+0)
12BB   2012       3248     JR NZ,KORRIN
                              SP                                PAGE  57
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

12BD   FDCB3066   3249     BIT 4,(IY+30H)
12C1   2840       3250     JR Z,M1303
12C3   2A595C     3251     LD HL,(ELINE)  ;Adresse des eingegebenen Befehls
12C6   CDA711     3252     CALL HOLFLO
12C9   FD3600FF   3253     LD (IY+0),0FFH
12CD   18DD       3254     JR HAUEDI
                  3255  
12CF   2A595C     3256  KORRIN:  LD HL,(ELINE)  ;Adresse des eingegebenen Befehls
12D2   225D5C     3257     LD (CHADD),HL  ;Adr. des naechsten zu interpret. Zeichens
12D5   CDFB19     3258     CALL M19FB
12D8   78         3259     LD A,B
12D9   B1         3260     OR C
12DA   C25D15     3261     JP NZ,EINFUE
12DD   DF         3262     RST GETAKT
12DE   FE0D       3263     CP 0DH
12E0   28C0       3264     JR Z,HAUPT
12E2   FDCB3046   3265     BIT 0,(IY+30H)
12E6   C4AF0D     3266     CALL NZ,M0DAF
12E9   CD6E0D     3267     CALL M0D6E
12EC   3E19       3268     LD A,19H
12EE   FD964F     3269     SUB (IY+4FH)
12F1   328C5C     3270     LD (SCRCT),A   ;Scrollzaehler
12F4   FDCB01FE   3271     SET 7,(IY+1)
12F8   FD3600FF   3272     LD (IY+0),0FFH
12FC   FD360A01   3273     LD (IY+0AH),1
1300   CD8A1B     3274     CALL M1B8A
                  3275  
                  3276  
                  3277  ;Rueckkehr nach Ausfuehrung der Zeile bzw. Programm
                  3278  ;an diese Stelle zur Ausgabe einer Meldung
                  3279  ;der Interrupt muss freigegeben sein !
                  3280  
1303   76         3281  M1303:   HALT
                  3282  
1304   FDCB01AE   3283     RES 5,(IY+1)
1308   FDCB304E   3284     BIT 1,(IY+30H)
130C   C4CD0E     3285     CALL NZ,M0ECD
130F   3A3A5C     3286     LD A,(ERRNR)
1312   3C         3287     INC A
1313   F5         3288  M1313:   PUSH AF
1314   210000     3289     LD HL,0
1317   FD7437     3290     LD (IY+37H),H
131A   FD7426     3291     LD (IY+26H),H
131D   220B5C     3292     LD (DEFADD),HL ;Argument fuer Funktionen
1320   210100     3293     LD HL,1
1323   22165C     3294     LD (STRMS+6),HL ;Tabelle der offenen Kanaele
1326   CDB016     3295     CALL CLREDI
1329   FDCB37AE   3296     RES 5,(IY+37H)
132D   CD6E0D     3297     CALL M0D6E
1330   FDCB02EE   3298     SET 5,(IY+2)
1334   F1         3299     POP AF
1335   47         3300     LD B,A
1336   FE0A       3301     CP 0AH
1338   3802       3302     JR C,ERRAU
133A   C607       3303     ADD A,7
133C   CDEF15     3304  ERRAU:   CALL M15EF
133F   3E20       3305     LD A,' '
1341   D7         3306     RST PRTOUT
                              SP                                PAGE  58
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1342   78         3307     LD A,B
1343   119113     3308     LD DE,MELDU
1346   CD0A0C     3309     CALL PRTMEL
1349   AF         3310     XOR A
134A   113615     3311     LD DE,MELDS-1
134D   CD0A0C     3312     CALL PRTMEL
1350   ED4B455C   3313     LD BC,(PPC) ;aktuelle Nr. der Basiczeile
1354   CD1B1A     3314     CALL M1A1B
1357   3E3A       3315     LD A,':'
1359   D7         3316     RST PRTOUT
135A   FD4E0D     3317     LD C,(IY+0DH)
135D   0600       3318     LD B,0
135F   CD1B1A     3319     CALL M1A1B
1362   CD9710     3320     CALL M1097
1365   3A3A5C     3321     LD A,(ERRNR)
1368   3C         3322     INC A
1369   281B       3323     JR Z,M1386
136B   FE09       3324     CP 9
136D   2804       3325     JR Z,M1373
136F   FE15       3326     CP 15H
1371   2003       3327     JR NZ,M1376
1373   FD340D     3328  M1373:   INC (IY+0DH)
1376   010300     3329  M1376:   LD BC,3
1379   11705C     3330     LD DE,OSPCC ;naechster Befehl fuer Cont.
137C   21445C     3331     LD HL,NSPPC ;Befehl der Zeile bei Sprung
137F   CB7E       3332     BIT 7,(HL)
1381   2801       3333     JR Z,M1384
1383   09         3334     ADD HL,BC
1384   EDB8       3335  M1384:   LDDR
1386   FD360AFF   3336  M1386:   LD (IY+0AH),0FFH
138A   FDCB019E   3337     RES 3,(IY+1)
138E   C3AC12     3338     JP HAUEDI
                  3339  
                  3340  ;Meldungen des Betriebssystems
                  3341  ;das letzte Byte einer Meldung wird mit 80H geodert
                  3342  
1391   80         3343  MELDU:   DEFB 80H
1392   4F         3344  MELD0:   DEFB 'O' ;OK
1393   CB         3345     DEFB 'K'+80H
1394   4E455854   3346  MELD1:   DEFM 'NEXT without FO'
13A3   D2         3347     DEFB 'R'+80H
13A4   56617269   3348  MELD2:   DEFM 'Variable not foun'
13B5   E4         3349     DEFB 'd'+80H
13B6   53756273   3350  MELD3:   DEFM 'Subscript wron'
13C4   E7         3351     DEFB 'g'+80H
13C5   4F757420   3352  MELD4:   DEFM 'Out of memor'
13D1   F9         3353     DEFB 'y'+80H
13D2   4F757420   3354  MELD5:   DEFM 'Out of scree'
13DE   EE         3355     DEFB 'n'+80H
13DF   4E756D62   3356  MELD6:   DEFM 'Number too bi'
13EC   E7         3357     DEFB 'g'+80H
13ED   52455455   3358  MELD7:   DEFM 'RETURN without GOSU'
1400   C2         3359     DEFB 'B'+80H
1401   456E6420   3360  MELD8:   DEFM 'End of fil'
140B   E5         3361     DEFB 'e'+80H
140C   53544F50   3362  MELD9:   DEFM 'STOP statemen'
1419   F4         3363     DEFB 't'+80H
141A   496E7661   3364  MELDA:   DEFM 'Invalid argumen'
                              SP                                PAGE  59
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1429   F4         3365     DEFB 't'+80H
142A   496E7465   3366  MELDB:   DEFM 'Integer out of rang'
143D   E5         3367     DEFB 'e'+80H
143E   4E6F6E73   3368  MELDC:   DEFM 'Nonsense in BASI'
144E   C3         3369     DEFB 'C'+80H
144F   42524541   3370  MELDD:   DEFM 'BREAK - CONT repeat'
1462   F3         3371     DEFB 's'+80H
1463   4F757420   3372  MELDE:   DEFM 'Out of DAT'
146D   C1         3373     DEFB 'A'+80H
146E   496E7661   3374  MELDF:   DEFM 'Invalid file nam'
147E   E5         3375     DEFB 'e'+80H
147F   4E6F2072   3376  MELDG:   DEFM 'No room for lin'
148E   E5         3377     DEFB 'e'+80H
148F   53544F50   3378  MELDH:   DEFM 'STOP in INPU'
149B   D4         3379     DEFB 'T'+80H
149C   464F5220   3380  MELDI:   DEFM 'FOR without NEX'
14AB   D4         3381     DEFB 'T'+80H
14AC   496E7661   3382  MELDJ:   DEFM 'Invalid I/O devic'
14BD   E5         3383     DEFB 'e'+80H
14BE   496E7661   3384  MELDK:   DEFM 'Invalid colou'
14CB   F2         3385     DEFB 'r'+80H
14CC   42524541   3386  MELDL:   DEFM 'BREAK into progra'
14DD   ED         3387     DEFB 'm'+80H
14DE   52414D54   3388  MELDM:   DEFM 'RAMTOP no goo'
14EB   E4         3389     DEFB 'd'+80H
14EC   53746174   3390  MELDN:   DEFM 'Statement los'
14F9   F4         3391     DEFB 't'+80H
14FA   496E7661   3392  MELDO:   DEFM 'Invalid strea'
1507   ED         3393     DEFB 'm'+80H
1508   464E2077   3394  MELDP:   DEFM 'FN without DE'
1515   C6         3395     DEFB 'F'+80H
1516   50617261   3396  MELDQ:   DEFM 'Parameter erro'
1524   F2         3397     DEFB 'r'+80H
1525   54617065   3398  MELDR:   DEFM 'Tape loading erro'
1536   F2         3399     DEFB 'r'+80H
1537   2C         3400  MELDS:   DEFB ','
1538   A0         3401     DEFB ' '+80H
1539   7F         3402  COPRIG:  DEFB 7FH
153A   20313938   3403     DEFM ' 1982 Sinclair Research Lt'
1554   E4         3404     DEFB 'd'+80H
                  3405  
1555   3E10       3406  NOROOM:  LD A,10H
1557   010000     3407     LD BC,0
155A   C31313     3408     JP M1313
                  3409  
                  3410  ;eine neue BASIC-Zeile ins Programm einfuegen
                  3411  ;wenn die Zeile schon existiert, dann ersetzen oder,
                  3412  ;falls nur eine Zeilennummer eingegeben wurde,
                  3413  ;diese Zeile loeschen
                  3414  
155D   ED43495C   3415  EINFUE:  LD (EPPC),BC   ;aktuelle Editorzeile
1561   2A5D5C     3416     LD HL,(CHADD)  ;Adr. des naechsten zu interpret. Zeichens
1564   EB         3417     EX DE,HL
1565   215515     3418     LD HL,NOROOM
1568   E5         3419     PUSH HL
1569   2A615C     3420     LD HL,(WORKSP) ;derzeitiger Workspace
156C   37         3421     SCF
156D   ED52       3422     SBC HL,DE
                              SP                                PAGE  60
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

156F   E5         3423     PUSH HL
1570   60         3424     LD H,B
1571   69         3425     LD L,C
1572   CD6E19     3426     CALL M196E
1575   2006       3427     JR NZ,EINFU1
1577   CDB819     3428     CALL M19B8
157A   CDE819     3429     CALL RAUS2
                  3430  
157D   C1         3431  EINFU1:  POP BC
157E   79         3432     LD A,C
157F   3D         3433     DEC A
1580   B0         3434     OR B
1581   2828       3435     JR Z,M15AB
                  3436  
1583   C5         3437     PUSH BC
1584   03         3438     INC BC
1585   03         3439     INC BC
1586   03         3440     INC BC
1587   03         3441     INC BC
1588   2B         3442     DEC HL
1589   ED5B535C   3443     LD DE,(PROG)   ;Start des Basicprogrammes
158D   D5         3444     PUSH DE
158E   CD5516     3445     CALL MACHPL
1591   E1         3446     POP HL
1592   22535C     3447     LD (PROG),HL   ;Start des Basicprogrammes
1595   C1         3448     POP BC
1596   C5         3449     PUSH BC
1597   13         3450     INC DE
1598   2A615C     3451     LD HL,(WORKSP) ;derzeitiger Workspace
159B   2B         3452     DEC HL
159C   2B         3453     DEC HL
159D   EDB8       3454     LDDR
159F   2A495C     3455     LD HL,(EPPC)   ;aktuelle Editorzeile
15A2   EB         3456     EX DE,HL
15A3   C1         3457     POP BC
15A4   70         3458     LD (HL),B
15A5   2B         3459     DEC HL
15A6   71         3460     LD (HL),C
15A7   2B         3461     DEC HL
15A8   73         3462     LD (HL),E
15A9   2B         3463     DEC HL
15AA   72         3464     LD (HL),D
15AB   F1         3465  M15AB:   POP AF
15AC   C3A212     3466     JP HAUPT
                  3467  
                  3468  ;Kanalinformationen zum Initialisieren
                  3469  ;K = Keyboard  (Tastatur)
                  3470  ;S = Screen (Bildschirm)
                  3471  ;R = Workspace (Arbeitsspeicher)
                  3472  ;P = Printer   (Drucker)
                  3473  
15AF   F4         3474  INIKAN:  DEFB 0F4H
15B0   09         3475     DEFB 9
15B1   A810       3476     DEFW TASTIN
15B3   4B         3477     DEFB 'K'
15B4   F4         3478     DEFB 0F4H
15B5   09         3479     DEFB 9
15B6   C415       3480     DEFW INVIO
                              SP                                PAGE  61
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

15B8   53         3481     DEFB 'S'
15B9   81         3482     DEFB 81H
15BA   0F         3483     DEFB 0FH
15BB   C415       3484     DEFW INVIO
15BD   52         3485     DEFB 'R'
15BE   F4         3486     DEFB 0F4H
15BF   09         3487     DEFB 9
15C0   C415       3488     DEFW INVIO
15C2   50         3489     DEFB 'P'
15C3   80         3490     DEFB 80H
                  3491  
15C4   CF         3492  INVIO:   RST ERRAUS
15C5   12         3493     DEFB 12H ;'INVALID I/O'
                  3494  
                  3495  ;Stream Daten
                  3496  
15C6   01         3497  STDATA:  DEFB 1
15C7   00         3498     DEFB 0
15C8   06         3499     DEFB 6
15C9   00         3500     DEFB 0
15CA   0B         3501     DEFB 0BH
15CB   00         3502     DEFB 0
15CC   01         3503     DEFB 1
15CD   00         3504     DEFB 0
15CE   01         3505     DEFB 1
15CF   00         3506     DEFB 0
15D0   06         3507     DEFB 6
15D1   00         3508     DEFB 0
15D2   10         3509     DEFB 010H
15D3   00         3510     DEFB 0
                  3511  
                  3512  ;Diese Subroutine ueberwacht den Aufruf der aktuellen
                  3513  ;Input-Subroutine
                  3514  
15D4   FDCB026E   3515  WARTA:   BIT 5,(IY+2)
15D8   2004       3516     JR NZ,M15DE
15DA   FDCB02DE   3517     SET 3,(IY+2)
15DE   CDE615     3518  M15DE:   CALL M15E6
15E1   D8         3519     RET C
15E2   28FA       3520     JR Z,M15DE
                  3521  
15E4   CF         3522     RST ERRAUS
15E5   07         3523     DEFB 7      ;'END OF FILE'
                  3524  
                  3525  ;Inputroutine fuer den gerade aktuellen File
                  3526  
15E6   D9         3527  M15E6:   EXX
15E7   E5         3528     PUSH HL
15E8   2A515C     3529     LD HL,(CURCHL) ;aktuelle I/O Infoadresse
15EB   23         3530     INC HL
15EC   23         3531     INC HL
15ED   1808       3532     JR INDCAL
                  3533  
                  3534  ;allgemeine Ausgaberoutine
                  3535  ;AUSGA2 mit auszugebenden Zeichen in A
                  3536  
15EF   1E30       3537  M15EF:   LD E,30H
15F1   83         3538     ADD A,E
                              SP                                PAGE  62
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

15F2   D9         3539  AUSGA2:  EXX
15F3   E5         3540     PUSH HL
15F4   2A515C     3541     LD HL,(CURCHL) ;aktuelle I/O Infoadresse
                  3542  
                  3543  ;die aktuelle Ausgabe- oder Eingaberoutine aufrufen
                  3544  ;HL zeigt auf die Adresse, an der die Sprungadresse
                  3545  ;zu finden ist
                  3546  
15F7   5E         3547  INDCAL:  LD E,(HL)
15F8   23         3548     INC HL
15F9   56         3549     LD D,(HL)
15FA   EB         3550     EX DE,HL
15FB   CD2C16     3551     CALL INDJMP
15FE   E1         3552     POP HL
15FF   D9         3553     EXX
1600   C9         3554     RET
                  3555  
                  3556  ;Routine um einen Kanal zu eroeffnen
                  3557  ;A enthaelt gueltige 'STREAM'-Nummer und der
                  3558  ;entsprechende Kanal wird eroeffnet
                  3559  
1601   87         3560  OPKAN:   ADD A,A
1602   C616       3561     ADD A,16H
1604   6F         3562     LD L,A
1605   265C       3563     LD H,5CH
1607   5E         3564     LD E,(HL)
1608   23         3565     INC HL
1609   56         3566     LD D,(HL)
160A   7A         3567     LD A,D
160B   B3         3568     OR E
160C   2002       3569     JR NZ,M1610
                  3570  
160E   CF         3571  ISTREA:  RST ERRAUS
160F   17         3572     DEFB 17H ;'INVALID STREAM'
                  3573  
1610   1B         3574  M1610:   DEC DE
1611   2A4F5C     3575     LD HL,(CHANS)  ;Pointer fuer Kanaldaten
1614   19         3576     ADD HL,DE
1615   22515C     3577  M1615:   LD (CURCHL),HL ;aktuelle I/O Infoadresse
1618   FDCB30A6   3578     RES 4,(IY+30H)
161C   23         3579     INC HL
161D   23         3580     INC HL
161E   23         3581     INC HL
161F   23         3582     INC HL
1620   4E         3583     LD C,(HL)
1621   212D16     3584     LD HL,KLOOK
1624   CDDC16     3585     CALL SUCHTA
1627   D0         3586     RET NC
1628   1600       3587     LD D,0
162A   5E         3588     LD E,(HL)
162B   19         3589     ADD HL,DE
162C   E9         3590  INDJMP:  JP (HL)
                  3591  
162D   4B         3592  KLOOK:   DEFB 'K'
162E   06         3593     DEFB KANALK-$
                  3594  
162F   53         3595     DEFB 'S'
1630   12         3596     DEFB KANALS-$
                              SP                                PAGE  63
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  3597  
1631   50         3598     DEFB 'P'
1632   1B         3599     DEFB KANALP-$
                  3600  
1633   00         3601     DEFB 0
                  3602  
1634   FDCB02C6   3603  KANALK:  SET 0,(IY+2)
1638   FDCB01AE   3604     RES 5,(IY+1)
163C   FDCB30E6   3605     SET 4,(IY+30H)
1640   1804       3606     JR KANS1
                  3607  
1642   FDCB0286   3608  KANALS:  RES 0,(IY+2)
1646   FDCB018E   3609  KANS1:   RES 1,(IY+1)
164A   C34D0D     3610     JP AKTCOL
                  3611  
164D   FDCB01CE   3612  KANALP:  SET 1,(IY+1)
1651   C9         3613     RET
                  3614  
                  3615  ;diese Routine schafft einen benoetigten Speicherraum.
                  3616  ;die Bytezahl steht in BC
                  3617  ;HL zeigt hinter die Position an der Platz benoetigt wird.
                  3618  
1652   010100     3619  NUREIN:  LD BC,1
1655   E5         3620  MACHPL:  PUSH HL
1656   CD051F     3621     CALL M1F05
1659   E1         3622     POP HL
165A   CD6416     3623     CALL POINTE
165D   2A655C     3624     LD HL,(STKEND) ;Anfang des freien Speichers
1660   EB         3625     EX DE,HL
1661   EDB8       3626     LDDR
1663   C9         3627     RET
                  3628  
                  3629  ;diese Subroutine veraendert alle Systemvariablen (Pointer),
                  3630  ;die auf den Positionen hinter dem Speicherplatz zeigen (=HL),
                  3631  ;an dem Platz etc. geschaffen werden soll. BC muss die Anzahl der
                  3632  ;Bytes enthalten.
                  3633  
1664   F5         3634  POINTE:  PUSH AF
1665   E5         3635     PUSH HL
1666   214B5C     3636     LD HL,VARS  ;Beginn der Variablen
1669   3E0E       3637     LD A,14
                  3638  
166B   5E         3639  POINTL:  LD E,(HL)
166C   23         3640     INC HL
166D   56         3641     LD D,(HL)
166E   E3         3642     EX (SP),HL
166F   A7         3643     AND A
1670   ED52       3644     SBC HL,DE
1672   19         3645     ADD HL,DE
1673   E3         3646     EX (SP),HL
1674   3009       3647     JR NC,NOCHA
1676   D5         3648     PUSH DE
1677   EB         3649     EX DE,HL
1678   09         3650     ADD HL,BC
1679   EB         3651     EX DE,HL
167A   72         3652     LD (HL),D
167B   2B         3653     DEC HL
167C   73         3654     LD (HL),E
                              SP                                PAGE  64
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

167D   23         3655     INC HL
167E   D1         3656     POP DE
167F   23         3657  NOCHA:   INC HL
1680   3D         3658     DEC A
1681   20E8       3659     JR NZ,POINTL
                  3660  
1683   EB         3661     EX DE,HL
1684   D1         3662     POP DE
1685   F1         3663     POP AF
1686   A7         3664     AND A
1687   ED52       3665     SBC HL,DE
1689   44         3666     LD B,H
168A   4D         3667     LD C,L
168B   03         3668     INC BC
168C   19         3669     ADD HL,DE
168D   EB         3670     EX DE,HL
168E   C9         3671     RET
                  3672  
                  3673  ;holen der Nummer der Zeile, die durch HL adressiert wird.
                  3674  ;Falls ungueltig, Test ob DE auf eine gueltige Nummer zeigt.
                  3675  ;Trifft dies auch nicht zu, so wird 0000 als Zeilennummer in
                  3676  ;DE geladen (Nummer<10000). Normalerweise enthaelt DE die
                  3677  ;Zeilennummer und HL die Startadresse dieser Zeile bei RETURN.
                  3678  
168F   0000       3679  ZEINUL:  DEFW 0
                  3680  
1691   EB         3681  ZDAVOR:  EX DE,HL
1692   118F16     3682     LD DE,ZEINUL
                  3683  
1695   7E         3684  ZSUCHE:  LD A,(HL)
1696   E6C0       3685     AND 0C0H
1698   20F7       3686     JR NZ,ZDAVOR
169A   56         3687     LD D,(HL)
169B   23         3688     INC HL
169C   5E         3689     LD E,(HL)
169D   C9         3690     RET
                  3691  
                  3692  ;Routine wird normalerweise ueber RESTART 30, (BC) Plaetze
                  3693  ;besorgen, aufgerufen. Stack enthaelt daher als letzten Wert
                  3694  ;'WORKSPACE' und davor die Anzahl 'BC'.
                  3695  
169E   2A635C     3696  RESERV:  LD HL,(STKBOT) ;Anfang des Calculatorstacks
16A1   2B         3697     DEC HL
16A2   CD5516     3698     CALL MACHPL
16A5   23         3699     INC HL
16A6   23         3700     INC HL
16A7   C1         3701     POP BC
16A8   ED43615C   3702     LD (WORKSP),BC ;derzeitiger Workspace
16AC   C1         3703     POP BC
16AD   EB         3704     EX DE,HL
16AE   23         3705     INC HL
16AF   C9         3706     RET
                  3707  
                  3708  ;Routine loescht den Editorbereich, den Workspace und den
                  3709  ;Calculatorstack
                  3710  
16B0   2A595C     3711  CLREDI:  LD HL,(ELINE)  ;Adresse des eingegebenen Befehls
16B3   360D       3712     LD (HL),0DH
                              SP                                PAGE  65
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

16B5   225B5C     3713     LD (KCUR),HL   ;Kursoradresse
16B8   23         3714     INC HL
16B9   3680       3715     LD (HL),80H
16BB   23         3716     INC HL
16BC   22615C     3717     LD (WORKSP),HL ;derzeitiger Workspace
16BF   2A615C     3718  CLRWOR:  LD HL,(WORKSP) ;derzeitiger Workspace
16C2   22635C     3719     LD (STKBOT),HL ;Anfang des Calculatorstacks
16C5   2A635C     3720  CLRCAL:  LD HL,(STKBOT) ;Anfang des Calculatorstacks
16C8   22655C     3721     LD (STKEND),HL ;Anfang des freien Speichers
16CB   E5         3722     PUSH HL
16CC   21925C     3723     LD HL,MEMBOT   ;Calculatorspeicher
16CF   22685C     3724     LD (MEM),HL ;Zeiger auf Calculatorspeicher
16D2   E1         3725     POP HL
16D3   C9         3726     RET
                  3727  
                  3728  ;die Editorzeile wieder entfernen
                  3729  
16D4   ED5B595C   3730  M16D4:   LD DE,(ELINE)  ;Adresse des eingegebenen Befehls
16D8   C3E519     3731     JP RAUS1
                  3732  
                  3733  ;Subroutine zum durchsuchen von Tabellen (Ende = 00)
                  3734  ;HL zeigt auf deren Anfang  und C enthaelt das zu suchende
                  3735  ;Zeichen. Carry gesetzt = gefunden.
                  3736  
16DB   23         3737  SUCHT1:  INC HL
16DC   7E         3738  SUCHTA:  LD A,(HL)
16DD   A7         3739     AND A
16DE   C8         3740     RET Z
16DF   B9         3741     CP C
16E0   23         3742     INC HL
16E1   20F8       3743     JR NZ,SUCHT1
16E3   37         3744     SCF
16E4   C9         3745     RET
                  3746  
                  3747  ;CLOSE#-Subroutine zum schliessen von Streams
                  3748  ;fuer Streams 00-03 werden die Grunddaten immer gesetzt,
                  3749  ;so dass diese nicht geschlossen werden koennen
                  3750  
16E5   CD1E17     3751  M16E5:   CALL STRDAT
16E8   CD0117     3752     CALL CLOKSP
16EB   010000     3753     LD BC,0
16EE   11E2A3     3754     LD DE,0A3E2H
16F1   EB         3755     EX DE,HL
16F2   19         3756     ADD HL,DE
16F3   3807       3757     JR C,M16FC
16F5   01D415     3758     LD BC,15D4H
16F8   09         3759     ADD HL,BC
16F9   4E         3760     LD C,(HL)
16FA   23         3761     INC HL
16FB   46         3762     LD B,(HL)
16FC   EB         3763  M16FC:   EX DE,HL
16FD   71         3764     LD (HL),C
16FE   23         3765     INC HL
16FF   70         3766     LD (HL),B
1700   C9         3767     RET
                  3768  ;Streamkode K, S oder P pruefen und Stream schliessen
                  3769  
1701   E5         3770  CLOKSP:  PUSH HL
                              SP                                PAGE  66
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1702   2A4F5C     3771     LD HL,(CHANS)  ;Pointer fuer Kanaldaten
1705   09         3772     ADD HL,BC
1706   23         3773     INC HL
1707   23         3774     INC HL
1708   23         3775     INC HL
1709   4E         3776     LD C,(HL)
170A   EB         3777     EX DE,HL
170B   211617     3778     LD HL,CSTRTA
170E   CDDC16     3779     CALL SUCHTA
1711   4E         3780     LD C,(HL)
1712   0600       3781     LD B,0
1714   09         3782     ADD HL,BC
1715   E9         3783     JP (HL)
                  3784  
                  3785  ;Tabelle fuer CLOSE STREAM
                  3786  
1716   4B         3787  CSTRTA:  DEFB 'K'
1717   05         3788     DEFB CLOSTR-$
1718   53         3789     DEFB 'S'
1719   03         3790     DEFB CLOSTR-$
171A   50         3791     DEFB 'P'
171B   01         3792     DEFB CLOSTR-$
                  3793  
                  3794  ;CLOSE STREAM
                  3795  
171C   E1         3796  CLOSTR:  POP HL
171D   C9         3797     RET
                  3798  
                  3799  ;nach BC die Daten eines Stream holen
                  3800  
171E   CD941E     3801  STRDAT:  CALL INTEG1
1721   FE10       3802     CP 10H
1723   3802       3803     JR C,M1727
1725   CF         3804  M1725:   RST ERRAUS
1726   17         3805     DEFB 17H
                  3806  
1727   C603       3807  M1727:   ADD A,3
1729   07         3808     RLCA
172A   21105C     3809     LD HL,STRMS ;Tabelle der offenen Kanaele
172D   4F         3810     LD C,A
172E   0600       3811     LD B,0
1730   09         3812     ADD HL,BC
1731   4E         3813     LD C,(HL)
1732   23         3814     INC HL
1733   46         3815     LD B,(HL)
1734   2B         3816     DEC HL
1735   C9         3817     RET
                  3818  
                  3819  ;OPEN#-Subroutine
                  3820  ;Kanalkode muss K, S oder P sein
                  3821  
1736   EF         3822  STROPE:  RST CALRUF
1737   01         3823     DEFB 1
1738   38         3824     DEFB 38H
1739   CD1E17     3825     CALL STRDAT
173C   78         3826     LD A,B
173D   B1         3827     OR C
173E   2816       3828     JR Z,STROP1
                              SP                                PAGE  67
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1740   EB         3829     EX DE,HL
1741   2A4F5C     3830     LD HL,(CHANS)  ;Pointer fuer Kanaldaten
1744   09         3831     ADD HL,BC
1745   23         3832     INC HL
1746   23         3833     INC HL
1747   23         3834     INC HL
1748   7E         3835     LD A,(HL)
1749   EB         3836     EX DE,HL
174A   FE4B       3837     CP 'K'
174C   2808       3838     JR Z,STROP1
174E   FE53       3839     CP 'S'
1750   2804       3840     JR Z,STROP1
1752   FE50       3841     CP 'P'
1754   20CF       3842     JR NZ,M1725
1756   CD5D17     3843  STROP1:  CALL M175D
1759   73         3844     LD (HL),E
175A   23         3845     INC HL
175B   72         3846     LD (HL),D
175C   C9         3847     RET
                  3848  
175D   E5         3849  M175D:   PUSH HL
175E   CDF12B     3850     CALL M2BF1
1761   78         3851     LD A,B
1762   B1         3852     OR C
1763   2002       3853     JR NZ,M1767
1765   CF         3854  M1765:   RST ERRAUS
1766   0E         3855     DEFB 0EH
                  3856  
1767   C5         3857  M1767:   PUSH BC
1768   1A         3858     LD A,(DE)
1769   E6DF       3859     AND 0DFH
176B   4F         3860     LD C,A
176C   217A17     3861     LD HL,OPTAB
176F   CDDC16     3862     CALL SUCHTA
1772   30F1       3863     JR NC,M1765
1774   4E         3864     LD C,(HL)
1775   0600       3865     LD B,0
1777   09         3866     ADD HL,BC
1778   C1         3867     POP BC
1779   E9         3868     JP (HL)
                  3869  
                  3870  ;Tabelle fuer Streameroeffnung
                  3871  
177A   4B         3872  OPTAB:   DEFB 'K'
177B   06         3873     DEFB OPENK-$
                  3874  
177C   53         3875     DEFB 'S'
177D   08         3876     DEFB OPENS-$
                  3877  
177E   50         3878     DEFB 'P'
177F   0A         3879     DEFB OPENP-$
1780   00         3880     DEFB 0
                  3881  
1781   1E01       3882  OPENK:   LD E,1
1783   1806       3883     JR M178B
                  3884  
1785   1E06       3885  OPENS:   LD E,6
1787   1802       3886     JR M178B
                              SP                                PAGE  68
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  3887  
1789   1E10       3888  OPENP:   LD E,10H
178B   0B         3889  M178B:   DEC BC
178C   78         3890     LD A,B
178D   B1         3891     OR C
178E   20D5       3892     JR NZ,M1765
1790   57         3893     LD D,A
1791   E1         3894     POP HL
1792   C9         3895     RET
                  3896  
                  3897  ;CAT-, ERASE-, FORMAT- und MOVE-Befehle ergeben die
                  3898  ;Fehlermeldung 'INVALID STREAM'
                  3899  
1793   1890       3900  M1793:   JR M1725
                  3901  
                  3902  ;LIST- und LLIST-Routine
                  3903  ;Ausgabe der Zeilennummer, Tokenumwandlung, Cursordarstellung usw.
                  3904  
1795   ED733F5C   3905  LISTAU:  LD (LISTSP),SP ;Returnadresse bei LIST
1799   FD360210   3906     LD (IY+2),10H
179D   CDAF0D     3907     CALL M0DAF
17A0   FDCB02C6   3908     SET 0,(IY+2)
17A4   FD4631     3909     LD B,(IY+31H)
17A7   CD440E     3910     CALL M0E44
17AA   FDCB0286   3911     RES 0,(IY+2)
17AE   FDCB30C6   3912     SET 0,(IY+30H)
17B2   2A495C     3913     LD HL,(EPPC)   ;aktuelle Editorzeile
17B5   ED5B6C5C   3914     LD DE,(STOP)   ;Nummer der obersten Zeile eines Listings
17B9   A7         3915     AND A
17BA   ED52       3916     SBC HL,DE
17BC   19         3917     ADD HL,DE
17BD   3822       3918     JR C,M17E1
17BF   D5         3919     PUSH DE
17C0   CD6E19     3920     CALL M196E
17C3   11C002     3921     LD DE,2C0H
17C6   EB         3922     EX DE,HL
17C7   ED52       3923     SBC HL,DE
17C9   E3         3924     EX (SP),HL
17CA   CD6E19     3925     CALL M196E
17CD   C1         3926     POP BC
17CE   C5         3927  M17CE:   PUSH BC
17CF   CDB819     3928     CALL M19B8
17D2   C1         3929     POP BC
17D3   09         3930     ADD HL,BC
17D4   380E       3931     JR C,M17E4
17D6   EB         3932     EX DE,HL
17D7   56         3933     LD D,(HL)
17D8   23         3934     INC HL
17D9   5E         3935     LD E,(HL)
17DA   2B         3936     DEC HL
17DB   ED536C5C   3937     LD (STOP),DE   ;Nummer der obersten Zeile eines Listings
17DF   18ED       3938     JR M17CE
                  3939  
17E1   226C5C     3940  M17E1:   LD (STOP),HL   ;Nummer der obersten Zeile eines Listings
17E4   2A6C5C     3941  M17E4:   LD HL,(STOP)   ;Nummer der obersten Zeile eines Listings
17E7   CD6E19     3942     CALL M196E
17EA   2801       3943     JR Z,M17ED
17EC   EB         3944     EX DE,HL
                              SP                                PAGE  69
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

17ED   CD3318     3945  M17ED:   CALL M1833
17F0   FDCB02A6   3946     RES 4,(IY+2)
17F4   C9         3947     RET
                  3948  
                  3949  ;Einstieg bei 'LLIST'
                  3950  
17F5   3E03       3951  M17F5:   LD A,3
17F7   1802       3952     JR M17FB
                  3953  
17F9   3E02       3954  M17F9:   LD A,2
17FB   FD360200   3955  M17FB:   LD (IY+2),0
17FF   CD3025     3956     CALL M2530
1802   C40116     3957     CALL NZ,OPKAN
1805   DF         3958     RST GETAKT
1806   CD7020     3959     CALL M2070
1809   3814       3960     JR C,M181F
180B   DF         3961     RST GETAKT
180C   FE3B       3962     CP ';'
180E   2804       3963     JR Z,M1814
1810   FE2C       3964     CP ','
1812   2006       3965     JR NZ,M181A
1814   E7         3966  M1814:   RST GETNXT
1815   CD821C     3967     CALL PAR06
1818   1808       3968     JR M1822
                  3969  
181A   CDE61C     3970  M181A:   CALL M1CE6
181D   1803       3971     JR M1822
                  3972  
181F   CDDE1C     3973  M181F:   CALL M1CDE
1822   CDEE1B     3974  M1822:   CALL M1BEE
1825   CD991E     3975     CALL M1E99
1828   78         3976     LD A,B
1829   E63F       3977     AND 3FH
182B   67         3978     LD H,A
182C   69         3979     LD L,C
182D   22495C     3980     LD (EPPC),HL   ;aktuelle Editorzeile
1830   CD6E19     3981     CALL M196E
1833   1E01       3982  M1833:   LD E,1
                  3983  
                  3984  ;Schleife zum Listen mehrerer Zeilen
                  3985  
1835   CD5518     3986  M1835:   CALL M1855
1838   D7         3987     RST PRTOUT
1839   FDCB0266   3988     BIT 4,(IY+2)
183D   28F6       3989     JR Z,M1835
183F   3A6B5C     3990     LD A,(DFSZ) ;Zeilenanzahl+1 im unteren Bildschirmteil
1842   FD964F     3991     SUB (IY+4FH)
1845   20EE       3992     JR NZ,M1835
1847   AB         3993     XOR E
1848   C8         3994     RET Z
                  3995  
1849   E5         3996     PUSH HL
184A   D5         3997     PUSH DE
184B   216C5C     3998     LD HL,STOP  ;Nummer der obersten Zeile eines Listings
184E   CD0F19     3999     CALL M190F
1851   D1         4000     POP DE
1852   E1         4001     POP HL
1853   18E0       4002     JR M1835
                              SP                                PAGE  70
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  4003  
                  4004  ;Ausgabe einer kompletten Basiczeile
                  4005  
1855   ED4B495C   4006  M1855:   LD BC,(EPPC)   ;aktuelle Editorzeile
1859   CD8019     4007     CALL M1980
185C   163E       4008     LD D,3EH
185E   2805       4009     JR Z,M1865
1860   110000     4010     LD DE,0
1863   CB13       4011     RL E
1865   FD732D     4012  M1865:   LD (IY+2DH),E
1868   7E         4013     LD A,(HL)
1869   FE40       4014     CP 40H
186B   C1         4015     POP BC
186C   D0         4016     RET NC
                  4017  
186D   C5         4018     PUSH BC
186E   CD281A     4019     CALL M1A28
1871   23         4020     INC HL
1872   23         4021     INC HL
1873   23         4022     INC HL
1874   FDCB0186   4023     RES 0,(IY+1)
1878   7A         4024     LD A,D
1879   A7         4025     AND A
187A   2805       4026     JR Z,M1881
                  4027  
187C   D7         4028     RST PRTOUT
187D   FDCB01C6   4029  M187D:   SET 0,(IY+1)
1881   D5         4030  M1881:   PUSH DE
1882   EB         4031     EX DE,HL
1883   FDCB3096   4032     RES 2,(IY+30H)
1887   213B5C     4033     LD HL,FLAGS ;Bit 1= Printer ein
188A   CB96       4034     RES 2,(HL)
188C   FDCB376E   4035     BIT 5,(IY+37H)
1890   2802       4036     JR Z,M1894
1892   CBD6       4037     SET 2,(HL)
1894   2A5F5C     4038  M1894:   LD HL,(XPTR)   ;Adresse des Zeichens nach ? bei Error
1897   A7         4039     AND A
1898   ED52       4040     SBC HL,DE
189A   2005       4041     JR NZ,M18A1
189C   3E3F       4042     LD A,'?'
189E   CDC118     4043     CALL M18C1
18A1   CDE118     4044  M18A1:   CALL M18E1
18A4   EB         4045     EX DE,HL
18A5   7E         4046     LD A,(HL)
18A6   CDB618     4047     CALL M18B6
18A9   23         4048     INC HL
18AA   FE0D       4049     CP 0DH
18AC   2806       4050     JR Z,M18B4
18AE   EB         4051     EX DE,HL
18AF   CD3719     4052     CALL M1937
18B2   18E0       4053     JR M1894
                  4054  
18B4   D1         4055  M18B4:   POP DE
18B5   C9         4056     RET
                  4057  
                  4058  ;wenn Zeichen ein Zahlenmerker ist, dann die
                  4059  ;Floating - Pointzahl uebergehen
                  4060  
                              SP                                PAGE  71
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

18B6   FE0E       4061  M18B6:   CP 0EH
18B8   C0         4062     RET NZ
                  4063  
18B9   23         4064     INC HL
18BA   23         4065     INC HL
18BB   23         4066     INC HL
18BC   23         4067     INC HL
18BD   23         4068     INC HL
18BE   23         4069     INC HL
18BF   7E         4070     LD A,(HL)
18C0   C9         4071     RET
                  4072  
                  4073  ;Ausgabe eines blinkenden Zeichens
                  4074  
18C1   D9         4075  M18C1:   EXX
18C2   2A8F5C     4076     LD HL,(ATTRT)  ;aktuelle Farben temporaer
18C5   E5         4077     PUSH HL
18C6   CBBC       4078     RES 7,H
18C8   CBFD       4079     SET 7,L
18CA   228F5C     4080     LD (ATTRT),HL  ;aktuelle Farben temporaer
18CD   21915C     4081     LD HL,PFLAG ;Printerflag
18D0   56         4082     LD D,(HL)
18D1   D5         4083     PUSH DE
18D2   3600       4084     LD (HL),0
18D4   CDF409     4085     CALL AUSGAB
18D7   E1         4086     POP HL
18D8   FD7457     4087     LD (IY+57H),H
18DB   E1         4088     POP HL
18DC   228F5C     4089     LD (ATTRT),HL  ;aktuelle Farben temporaer
18DF   D9         4090     EXX
18E0   C9         4091     RET
                  4092  
                  4093  ;Ausgabe des Cursors
                  4094  ;falls aktuelle Ausgabeposition nicht Cursorposition ist,
                  4095  ;sofort RETURN, sonst den entsprechenden Cursor (C/E/G/K/L)
                  4096  ;drucken
                  4097  
18E1   2A5B5C     4098  M18E1:   LD HL,(KCUR)   ;Kursoradresse
18E4   A7         4099     AND A
18E5   ED52       4100     SBC HL,DE
18E7   C0         4101     RET NZ
                  4102  
18E8   3A415C     4103     LD A,(MODE) ;Tastenmodus (K,L,C,E,G)
18EB   CB07       4104     RLC A
18ED   2804       4105     JR Z,M18F3
18EF   C643       4106     ADD A,43H
18F1   1816       4107     JR M1909
                  4108  
18F3   213B5C     4109  M18F3:   LD HL,FLAGS ;Bit 1= Printer ein
18F6   CB9E       4110     RES 3,(HL)
18F8   3E4B       4111     LD A,'K'
18FA   CB56       4112     BIT 2,(HL)
18FC   280B       4113     JR Z,M1909
18FE   CBDE       4114     SET 3,(HL)
1900   3C         4115     INC A
1901   FDCB305E   4116     BIT 3,(IY+30H)
1905   2802       4117     JR Z,M1909
1907   3E43       4118     LD A,'C'
                              SP                                PAGE  72
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1909   D5         4119  M1909:   PUSH DE
190A   CDC118     4120     CALL M18C1
190D   D1         4121     POP DE
190E   C9         4122     RET
                  4123  
                  4124  ;bei Einstieg zeigt HL auf STOP oder EPPC. Am Ende
                  4125  ;enthaelt die jeweilige Variable die Zeilennummer.
                  4126  
190F   5E         4127  M190F:   LD E,(HL)
1910   23         4128     INC HL
1911   56         4129     LD D,(HL)
1912   E5         4130     PUSH HL
1913   EB         4131     EX DE,HL
1914   23         4132     INC HL
1915   CD6E19     4133     CALL M196E
1918   CD9516     4134     CALL ZSUCHE
191B   E1         4135     POP HL
191C   FDCB376E   4136  M191C:   BIT 5,(IY+37H)
1920   C0         4137     RET NZ
                  4138  
1921   72         4139     LD (HL),D
1922   2B         4140     DEC HL
1923   73         4141     LD (HL),E
1924   C9         4142     RET
                  4143  
                  4144  ;Routine gibt Zeichen einer Basiczeile aus. Bei Zahlen
                  4145  ;werden fuehrende Space unterdrueckt (A=FFH) oder nicht.
                  4146  
1925   7B         4147  M1925:   LD A,E
1926   A7         4148     AND A
1927   F8         4149     RET M
1928   180D       4150     JR M1937
                  4151  
                  4152  ;Wandlung einer Zeilennummer in HL in eine Dezimalzahl
                  4153  ;dazu enthaelt BC, je nach Aufruf, die Werte -1000, -100
                  4154  ;oder -10 (deshalb Addition).
                  4155  
192A   AF         4156  M192A:   XOR A
192B   09         4157  M192B:   ADD HL,BC
192C   3C         4158     INC A
192D   38FC       4159     JR C,M192B
192F   ED42       4160     SBC HL,BC
1931   3D         4161     DEC A
1932   28F1       4162     JR Z,M1925
1934   C3EF15     4163     JP M15EF
                  4164  
                  4165  ;hier alle Zeichen, Controlcodes und Tokens ausgeben
                  4166  
1937   CD1B2D     4167  M1937:   CALL ZIFFER
193A   3030       4168     JR NC,M196C
193C   FE21       4169     CP '!'
193E   382C       4170     JR C,M196C
1940   FDCB0196   4171     RES 2,(IY+1)
1944   FECB       4172     CP 0CBH
1946   2824       4173     JR Z,M196C
1948   FE3A       4174     CP ':'
194A   200E       4175     JR NZ,M195A
194C   FDCB376E   4176     BIT 5,(IY+37H)
                              SP                                PAGE  73
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1950   2016       4177     JR NZ,M1968
1952   FDCB3056   4178     BIT 2,(IY+30H)
1956   2814       4179     JR Z,M196C
1958   180E       4180     JR M1968
                  4181  
195A   FE22       4182  M195A:   CP '"'
195C   200A       4183     JR NZ,M1968
195E   F5         4184     PUSH AF
195F   3A6A5C     4185     LD A,(FLAGS2)  ;Flags Teil 2
1962   EE04       4186     XOR 4
1964   326A5C     4187     LD (FLAGS2),A  ;Flags Teil 2
1967   F1         4188     POP AF
1968   FDCB01D6   4189  M1968:   SET 2,(IY+1)
196C   D7         4190  M196C:   RST PRTOUT
196D   C9         4191     RET
                  4192  
                  4193  ;Subroutine zum suchen des Anfangs einer Zeile nach
                  4194  ;deren Zeilennummer (in HL). Wird diese Zeile nicht
                  4195  ;gefunden, wird die Startadresse der naechsten Zeile
                  4196  ;uebergeben, jeweils in HL, und in DE die Adresse der
                  4197  ;Zeile davor. Falls Zeile gefunden wurde, ist das ZERO-
                  4198  ;Flag gesetzt.
                  4199  
196E   E5         4200  M196E:   PUSH HL
196F   2A535C     4201     LD HL,(PROG)   ;Start des Basicprogrammes
1972   54         4202     LD D,H
1973   5D         4203     LD E,L
1974   C1         4204  M1974:   POP BC
1975   CD8019     4205     CALL M1980
1978   D0         4206     RET NC
1979   C5         4207     PUSH BC
197A   CDB819     4208     CALL M19B8
197D   EB         4209     EX DE,HL
197E   18F4       4210     JR M1974
                  4211  
                  4212  ;Vergleich einer Zeilennummer in Bc mit einer durch HL
                  4213  ;adressierten Zeile
                  4214  
1980   7E         4215  M1980:   LD A,(HL)
1981   B8         4216     CP B
1982   C0         4217     RET NZ
1983   23         4218     INC HL
1984   7E         4219     LD A,(HL)
1985   2B         4220     DEC HL
1986   B9         4221     CP C
1987   C9         4222     RET
                  4223  
                  4224  ;diese Routine sucht das durch das Register D bestimmte
                  4225  ;Zeichen einer Zeile oder das Zeichen, Token etc. welches
                  4226  ;in Register E enthalten ist
                  4227  
1988   23         4228  M1988:   INC HL
1989   23         4229     INC HL
198A   23         4230     INC HL
                  4231  ;normaler Einstieg
198B   225D5C     4232  M198B:   LD (CHADD),HL  ;Adr. des naechsten zu interpret. Zeichens
198E   0E00       4233     LD C,0
1990   15         4234  M1990:   DEC D
                              SP                                PAGE  74
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1991   C8         4235     RET Z
                  4236  
1992   E7         4237     RST GETNXT
1993   BB         4238     CP E
1994   2004       4239     JR NZ,M199A
1996   A7         4240     AND A
1997   C9         4241     RET
                  4242  
1998   23         4243  M1998:   INC HL
1999   7E         4244     LD A,(HL)
199A   CDB618     4245  M199A:   CALL M18B6
199D   225D5C     4246     LD (CHADD),HL  ;Adr. des naechsten zu interpret. Zeichens
19A0   FE22       4247     CP '"'
19A2   2001       4248     JR NZ,M19A5
19A4   0D         4249     DEC C
19A5   FE3A       4250  M19A5:   CP ':'
19A7   2804       4251     JR Z,M19AD
19A9   FECB       4252     CP 0CBH
19AB   2004       4253     JR NZ,M19B1
19AD   CB41       4254  M19AD:   BIT 0,C
19AF   28DF       4255     JR Z,M1990
19B1   FE0D       4256  M19B1:   CP 0DH
19B3   20E3       4257     JR NZ,M1998
19B5   15         4258     DEC D
19B6   37         4259     SCF
19B7   C9         4260     RET
                  4261  
                  4262  ;Subroutine zum Suchen der naechsten Basiczeile oder der
                  4263  ;naechsten Variablen
                  4264  
19B8   E5         4265  M19B8:   PUSH HL
19B9   7E         4266     LD A,(HL)
19BA   FE40       4267     CP 40H
19BC   3817       4268     JR C,M19D5
19BE   CB6F       4269     BIT 5,A
19C0   2814       4270     JR Z,M19D6
19C2   87         4271     ADD A,A
19C3   FAC719     4272     JP M,M19C7
19C6   3F         4273     CCF
19C7   010500     4274  M19C7:   LD BC,5
19CA   3002       4275     JR NC,M19CE
19CC   0E12       4276     LD C,12H
19CE   17         4277  M19CE:   RLA
19CF   23         4278     INC HL
19D0   7E         4279     LD A,(HL)
19D1   30FB       4280     JR NC,M19CE
19D3   1806       4281     JR M19DB
                  4282  
19D5   23         4283  M19D5:   INC HL
19D6   23         4284  M19D6:   INC HL
19D7   4E         4285     LD C,(HL)
19D8   23         4286     INC HL
19D9   46         4287     LD B,(HL)
19DA   23         4288     INC HL
19DB   09         4289  M19DB:   ADD HL,BC
19DC   D1         4290     POP DE
                  4291  
                  4292  ;Subroutine zum Berechnen einer Differenz in BC.
                              SP                                PAGE  75
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  4293  ;HL und DE sind bei RETURN vertauscht.
                  4294  
19DD   A7         4295  DIFFER:  AND A
19DE   ED52       4296     SBC HL,DE
19E0   44         4297     LD B,H
19E1   4D         4298     LD C,L
19E2   19         4299     ADD HL,DE
19E3   EB         4300     EX DE,HL
19E4   C9         4301     RET
                  4302  
                  4303  ;diese Routine entfernt Speicherbereiche und korrigiert
                  4304  ;alle entsprechenden Pointer.
                  4305  ;Am ersten Einstieg enthaelt DE die erste zu entfernende
                  4306  ;und HL die erste, nicht mehr zu entfernende, Speicherstelle.
                  4307  ;Beim zweiten Einstiegspunkt enthaelt HL die erste zu ent-
                  4308  ;fernende Speicherstelle und BC die Anzahl.
                  4309  
19E5   CDDD19     4310  RAUS1:   CALL DIFFER
19E8   C5         4311  RAUS2:   PUSH BC
19E9   78         4312     LD A,B
19EA   2F         4313     CPL
19EB   47         4314     LD B,A
19EC   79         4315     LD A,C
19ED   2F         4316     CPL
19EE   4F         4317     LD C,A
19EF   03         4318     INC BC
19F0   CD6416     4319     CALL POINTE
19F3   EB         4320     EX DE,HL
19F4   E1         4321     POP HL
19F5   19         4322     ADD HL,DE
19F6   D5         4323     PUSH DE
19F7   EDB0       4324     LDIR
19F9   E1         4325     POP HL
19FA   C9         4326     RET
                  4327  
                  4328  ;Einlesen einer Zeilennummer beim Editieren.
                  4329  ;Bei einem Direktkommando wird diese zu Null gesetzt.
                  4330  ;Das Ergebnis steht immer in BC.
                  4331  
19FB   2A595C     4332  M19FB:   LD HL,(ELINE)  ;Adresse des eingegebenen Befehls
19FE   2B         4333     DEC HL
19FF   225D5C     4334     LD (CHADD),HL  ;Adr. des naechsten zu interpret. Zeichens
1A02   E7         4335     RST GETNXT
1A03   21925C     4336     LD HL,MEMBOT   ;Calculatorspeicher
1A06   22655C     4337     LD (STKEND),HL ;Anfang des freien Speichers
1A09   CD3B2D     4338     CALL M2D3B
1A0C   CDA22D     4339     CALL M2DA2
1A0F   3804       4340     JR C,M1A15
1A11   21F0D8     4341     LD HL,0D8F0H
1A14   09         4342     ADD HL,BC
1A15   DA8A1C     4343  M1A15:   JP C,M1C8A
1A18   C3C516     4344     JP CLRCAL
                  4345  
                  4346  ;Zeilennummerausgabe
                  4347  ;Inhalt BC wird in dezimal gewandelt und ausgegeben.
                  4348  
1A1B   D5         4349  M1A1B:   PUSH DE
1A1C   E5         4350     PUSH HL
                              SP                                PAGE  76
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1A1D   AF         4351     XOR A
1A1E   CB78       4352     BIT 7,B
1A20   2020       4353     JR NZ,M1A42
1A22   60         4354     LD H,B
1A23   69         4355     LD L,C
1A24   1EFF       4356     LD E,0FFH
1A26   1808       4357     JR M1A30
                  4358  
                  4359  ;Die durch HL adressierte (hexadezimale) Zeilennummer
                  4360  ;in dezimal wandeln und ausgeben (mit fuehrenden Spaces)
                  4361  
1A28   D5         4362  M1A28:   PUSH DE
1A29   56         4363     LD D,(HL)
1A2A   23         4364     INC HL
1A2B   5E         4365     LD E,(HL)
1A2C   E5         4366     PUSH HL
1A2D   EB         4367     EX DE,HL
1A2E   1E20       4368     LD E,' '
1A30   0118FC     4369  M1A30:   LD BC,0FC18H
1A33   CD2A19     4370     CALL M192A
1A36   019CFF     4371     LD BC,0FF9CH
1A39   CD2A19     4372     CALL M192A
1A3C   0EF6       4373     LD C,0F6H
1A3E   CD2A19     4374     CALL M192A
1A41   7D         4375     LD A,L
1A42   CDEF15     4376  M1A42:   CALL M15EF
1A45   E1         4377     POP HL
1A46   D1         4378     POP DE
1A47   C9         4379     RET
                  4380  
                  4381  ;=====================================================
                  4382  
                  4383  ;Basicbefehlsinterpretation
                  4384  
                  4385  ;Offsettabelle der Basicbefehle fuer die Zweite Tabelle
                  4386  
1A48   B1         4387  BEFOFF:  DEFB PADEFN-$
1A49   CB         4388     DEFB PACAT-$
1A4A   BC         4389     DEFB PAFORM-$
1A4B   BF         4390     DEFB PAMOVE-$
1A4C   C4         4391     DEFB PAERAS-$
1A4D   AF         4392     DEFB PAOPEN-$
1A4E   B4         4393     DEFB PACLOS-$
1A4F   93         4394     DEFB PAMERG-$
1A50   91         4395     DEFB PAVERI-$
1A51   92         4396     DEFB PABEEP-$
1A52   95         4397     DEFB PACIRC-$
1A53   98         4398     DEFB PAINK-$
1A54   98         4399     DEFB PAPAPE-$
1A55   98         4400     DEFB PAFLAS-$
1A56   98         4401     DEFB PABRIG-$
1A57   98         4402     DEFB PAINVE-$
1A58   98         4403     DEFB PAOVER-$
1A59   98         4404     DEFB PAOUT-$
1A5A   7F         4405     DEFB PALPRI-$
1A5B   81         4406     DEFB PALLIS-$
1A5C   2E         4407     DEFB PASTOP-$
1A5D   6C         4408     DEFB PAREAD-$
                              SP                                PAGE  77
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1A5E   6E         4409     DEFB PADATA-$
1A5F   70         4410     DEFB PAREST-$
1A60   48         4411     DEFB PANEW-$
1A61   94         4412     DEFB PABORD-$
1A62   56         4413     DEFB PACONT-$
1A63   3F         4414     DEFB PADIM-$
1A64   41         4415     DEFB PAREM-$
1A65   2B         4416     DEFB PAFOR-$
1A66   17         4417     DEFB PAGOTO-$
1A67   1F         4418     DEFB PAGOSU-$
1A68   37         4419     DEFB PAINPU-$
1A69   77         4420     DEFB PALOAD-$
1A6A   44         4421     DEFB PALIST-$
1A6B   0F         4422     DEFB PALET-$
1A6C   59         4423     DEFB PAPAUS-$
1A6D   2B         4424     DEFB PANEXT-$
1A6E   43         4425     DEFB PAPOKE-$
1A6F   2D         4426     DEFB PAPRIN-$
1A70   51         4427     DEFB PAPLOT-$
1A71   3A         4428     DEFB PARUN-$
1A72   6D         4429     DEFB PASAVE-$
1A73   42         4430     DEFB PARAND-$
1A74   0D         4431     DEFB PAIF-$
1A75   49         4432     DEFB PACLS-$
1A76   5C         4433     DEFB PADRAW-$
1A77   44         4434     DEFB PACLEA-$
1A78   15         4435     DEFB PARETU-$
1A79   5D         4436     DEFB PACOPY-$
                  4437  
                  4438  ;Parametertabelle fuer die Befehle
                  4439  ;Bytes im Bereich von 00...0BH geben die weiteren
                  4440  ;notwendigen Parameter fuer die einzelnen Befehle an
                  4441  
                  4442  ;PAR00:  keine weiteren Parameter
                  4443  ;PAR01:  bei LET, eine Variable wird gebraucht
                  4444  ;PAR02:  ein numerischer/String-Ausdruck muss folgen
                  4445  ;PAR03:  numerischer Ausdruck kann folgen, sonst 0
                  4446  ;PAR04:  eine einfache Variable muss folgen
                  4447  ;PAR05:  ein Parametersatz kann folgen
                  4448  ;PAR06:  ein numerischer Ausdruck muss folgen
                  4449  ;PAR07:  Farbenbehandlung etc.
                  4450  ;PAR08:  zwei durch ',' geterennte, numerische Ausdruecke
                  4451  ;PAR09:  wie 08,aber Farbenausdruecke duerfen vorangehen
                  4452  ;PAR0A:  ein String-Ausdruck muss folgen
                  4453  ;PAR0B:  bearbeitet Kassettenroutinen
                  4454  
1A7A   01         4455  PALET:   DEFB 1
1A7B   3D         4456     DEFB '='
1A7C   02         4457     DEFB 2
1A7D   06         4458  PAGOTO:  DEFB 6
1A7E   00         4459     DEFB 0
1A7F   671E       4460     DEFW M1E67
                  4461  
1A81   06         4462  PAIF: DEFB 6
1A82   CB         4463     DEFB 0CBH
1A83   05         4464     DEFB 5
1A84   F01C       4465     DEFW M1CF0
                  4466  
                              SP                                PAGE  78
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1A86   06         4467  PAGOSU:  DEFB 6
1A87   00         4468     DEFB 0
1A88   ED1E       4469     DEFW M1EED
                  4470  
1A8A   00         4471  PASTOP:  DEFB 0
1A8B   EE1C       4472     DEFW M1CEE
                  4473  
1A8D   00         4474  PARETU:  DEFB 0
1A8E   231F       4475     DEFW M1F23
                  4476  
1A90   04         4477  PAFOR:   DEFB 4
1A91   3D         4478     DEFB '='
1A92   06         4479     DEFB 6
1A93   CC         4480     DEFB 0CCH
1A94   06         4481     DEFB 6
1A95   05         4482     DEFB 5
1A96   031D       4483     DEFW M1D03
                  4484  
1A98   04         4485  PANEXT:  DEFB 4
1A99   00         4486     DEFB 0
1A9A   AB1D       4487     DEFW M1DAB
                  4488  
1A9C   05         4489  PAPRIN:  DEFB 5
1A9D   CD1F       4490     DEFW M1FCD
                  4491  
1A9F   05         4492  PAINPU:  DEFB 5
1AA0   8920       4493     DEFW M2089
                  4494  
1AA2   05         4495  PADIM:   DEFB 5
1AA3   022C       4496     DEFW M2C02
                  4497  
1AA5   05         4498  PAREM:   DEFB 5
1AA6   B21B       4499     DEFW M1BB2
                  4500  
1AA8   00         4501  PANEW:   DEFB 0
1AA9   B711       4502     DEFW NEW
                  4503  
1AAB   03         4504  PARUN:   DEFB 3
1AAC   A11E       4505     DEFW M1EA1
                  4506  
1AAE   05         4507  PALIST:  DEFB 5
1AAF   F917       4508     DEFW M17F9
                  4509  
1AB1   08         4510  PAPOKE:  DEFB 8
1AB2   00         4511     DEFB 0
1AB3   801E       4512     DEFW M1E80
                  4513  
1AB5   03         4514  PARAND:  DEFB 3
1AB6   4F1E       4515     DEFW M1E4F
                  4516  
1AB8   00         4517  PACONT:  DEFB 0
1AB9   5F1E       4518     DEFW M1E5F
                  4519  
1ABB   03         4520  PACLEA:  DEFB 3
1ABC   AC1E       4521     DEFW M1EAC
                  4522  
1ABE   00         4523  PACLS:   DEFB 0
1ABF   6B0D       4524     DEFW M0D6B
                              SP                                PAGE  79
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  4525  
1AC1   09         4526  PAPLOT:  DEFB 9
1AC2   00         4527     DEFB 0
1AC3   DC22       4528     DEFW PLOTHA
                  4529  
1AC5   06         4530  PAPAUS:  DEFB 6
1AC6   00         4531     DEFB 0
1AC7   3A1F       4532     DEFW M1F3A
                  4533  
1AC9   05         4534  PAREAD:  DEFB 5
1ACA   ED1D       4535     DEFW M1DED
                  4536  
1ACC   05         4537  PADATA:  DEFB 5
1ACD   271E       4538     DEFW M1E27
                  4539  
1ACF   03         4540  PAREST:  DEFB 3
1AD0   421E       4541     DEFW M1E42
                  4542  
1AD2   09         4543  PADRAW:  DEFB 9
1AD3   05         4544     DEFB 5
1AD4   8223       4545     DEFW M2382
                  4546  
1AD6   00         4547  PACOPY:  DEFB 0
1AD7   AC0E       4548     DEFW M0EAC
                  4549  
1AD9   05         4550  PALPRI:  DEFB 5
1ADA   C91F       4551     DEFW M1FC9
                  4552  
1ADC   05         4553  PALLIS:  DEFB 5
1ADD   F517       4554     DEFW M17F5
                  4555  
1ADF   0B         4556  PASAVE:  DEFB 0BH
1AE0   0B         4557  PALOAD:  DEFB 0BH
1AE1   0B         4558  PAVERI:  DEFB 0BH
1AE2   0B         4559  PAMERG:  DEFB 0BH
1AE3   08         4560  PABEEP:  DEFB 8
1AE4   00         4561     DEFB 0
1AE5   F803       4562     DEFW M03F8
                  4563  
1AE7   09         4564  PACIRC:  DEFB 9
1AE8   05         4565     DEFB 5
1AE9   2023       4566     DEFW KREIS
                  4567  
1AEB   07         4568  PAINK:   DEFB 7
1AEC   07         4569  PAPAPE:  DEFB 7
1AED   07         4570  PAFLAS:  DEFB 7
1AEE   07         4571  PABRIG:  DEFB 7
1AEF   07         4572  PAINVE:  DEFB 7
1AF0   07         4573  PAOVER:  DEFB 7
1AF1   08         4574  PAOUT:   DEFB 8
1AF2   00         4575     DEFB 0
1AF3   7A1E       4576     DEFW M1E7A
                  4577  
1AF5   06         4578  PABORD:  DEFB 6
1AF6   00         4579     DEFB 0
1AF7   9422       4580     DEFW M2294
                  4581  
1AF9   05         4582  PADEFN:  DEFB 5
                              SP                                PAGE  80
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1AFA   601F       4583     DEFW M1F60
                  4584  
1AFC   06         4585  PAOPEN:  DEFB 6
1AFD   2C         4586     DEFB ','
1AFE   0A         4587     DEFB 0AH
1AFF   00         4588     DEFB 0
1B00   3617       4589     DEFW STROPE
                  4590  
1B02   06         4591  PACLOS:  DEFB 6
1B03   00         4592     DEFB 0
1B04   E516       4593     DEFW M16E5
                  4594  
1B06   0A         4595  PAFORM:  DEFB 0AH
1B07   00         4596     DEFB 0
1B08   9317       4597     DEFW M1793
                  4598  
1B0A   0A         4599  PAMOVE:  DEFB 0AH
1B0B   2C         4600     DEFB ','
1B0C   0A         4601     DEFB 0AH
1B0D   00         4602     DEFB 0
1B0E   9317       4603     DEFW M1793
                  4604  
1B10   0A         4605  PAERAS:  DEFB 0AH
1B11   00         4606     DEFB 0
1B12   9317       4607     DEFW M1793
                  4608  
1B14   00         4609  PACAT:   DEFB 0
1B15   9317       4610     DEFW M1793
                  4611  
                  4612  ;=======================================================
                  4613  
                  4614  ;Hauptroutine des Basicinterpreters mit Syntaxpruefung
                  4615  
1B17   FDCB01BE   4616  M1B17:   RES 7,(IY+1)
1B1B   CDFB19     4617     CALL M19FB
1B1E   AF         4618     XOR A
1B1F   32475C     4619     LD (SUBPPC),A  ;Zeiger auf Befehl der Zeile
1B22   3D         4620     DEC A
1B23   323A5C     4621     LD (ERRNR),A
1B26   1801       4622     JR M1B29
                  4623  
1B28   E7         4624  M1B28:   RST GETNXT
1B29   CDBF16     4625  M1B29:   CALL CLRWOR
1B2C   FD340D     4626     INC (IY+0DH)
1B2F   FA8A1C     4627     JP M,M1C8A
1B32   DF         4628     RST GETAKT
1B33   0600       4629     LD B,0
1B35   FE0D       4630     CP 0DH
1B37   287A       4631     JR Z,M1BB3
1B39   FE3A       4632     CP ':'
1B3B   28EB       4633     JR Z,M1B28
                  4634  
1B3D   21761B     4635     LD HL,BRKTST
1B40   E5         4636     PUSH HL
1B41   4F         4637     LD C,A
1B42   E7         4638     RST GETNXT
1B43   79         4639     LD A,C
1B44   D6CE       4640     SUB 0CEH
                              SP                                PAGE  81
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1B46   DA8A1C     4641     JP C,M1C8A
1B49   4F         4642     LD C,A
1B4A   21481A     4643     LD HL,BEFOFF
1B4D   09         4644     ADD HL,BC
1B4E   4E         4645     LD C,(HL)
1B4F   09         4646     ADD HL,BC
1B50   1803       4647     JR M1B55
                  4648  
                  4649  ;die Parameter der Befehle werden ausgewertet
                  4650  
1B52   2A745C     4651  PARHOL:  LD HL,(TADDR)  ;Adresse des naechsten Tokens in der Tabelle
1B55   7E         4652  M1B55:   LD A,(HL)
1B56   23         4653     INC HL
1B57   22745C     4654     LD (TADDR),HL  ;Adresse des naechsten Tokens in der Tabelle
1B5A   01521B     4655     LD BC,PARHOL
1B5D   C5         4656     PUSH BC
1B5E   4F         4657     LD C,A
1B5F   FE20       4658     CP ' '
1B61   300C       4659     JR NC,M1B6F
1B63   21011C     4660     LD HL,M1C01
1B66   0600       4661     LD B,0
1B68   09         4662     ADD HL,BC
1B69   4E         4663     LD C,(HL)
1B6A   09         4664     ADD HL,BC
1B6B   E5         4665     PUSH HL
1B6C   DF         4666     RST GETAKT
1B6D   05         4667     DEC B
1B6E   C9         4668     RET
                  4669  
                  4670  ;der Seperator gemaess Parametertabelle, steht in Reg. C
                  4671  ;muss an dieser Stelle in der Zeile zu finden sein
                  4672  
1B6F   DF         4673  M1B6F:   RST GETAKT
1B70   B9         4674     CP C
1B71   C28A1C     4675     JP NZ,M1C8A
1B74   E7         4676     RST GETNXT
1B75   C9         4677     RET
                  4678  
                  4679  ;nach jedem richtigen Befehl wird an dieser Stelle, zum
                  4680  ;Pruefen der Breaktaste, zurueckgekehrt
                  4681  
1B76   CD541F     4682  BRKTST:  CALL M1F54
1B79   3802       4683     JR C,M1B7D
1B7B   CF         4684     RST ERRAUS
1B7C   14         4685     DEFB 14H
                  4686  
1B7D   FDCB0A7E   4687  M1B7D:   BIT 7,(IY+0AH)
1B81   2071       4688     JR NZ,M1BF4
1B83   2A425C     4689     LD HL,(NEWPPC) ;Zeilennummer wohin gesprungen wird (GO TO ...)
1B86   CB7C       4690     BIT 7,H
1B88   2814       4691     JR Z,M1B9E
                  4692  
                  4693  ;Routine fuer 'RUN'
                  4694  ;das Syntax/RUN- Flag (7 von FLAGS) ist dann gesetzt
                  4695  
1B8A   21FEFF     4696  M1B8A:   LD HL,0FFFEH
1B8D   22455C     4697     LD (PPC),HL ;aktuelle Nr. der Basiczeile
1B90   2A615C     4698     LD HL,(WORKSP) ;derzeitiger Workspace
                              SP                                PAGE  82
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1B93   2B         4699     DEC HL
1B94   ED5B595C   4700     LD DE,(ELINE)  ;Adresse des eingegebenen Befehls
1B98   1B         4701     DEC DE
1B99   3A445C     4702     LD A,(NSPPC)   ;Befehl der Zeile bei Sprung
1B9C   1833       4703     JR M1BD1
                  4704  
                  4705  ;neue Zeile nach einem Sprungbefehl suchen
                  4706  
1B9E   CD6E19     4707  M1B9E:   CALL M196E
1BA1   3A445C     4708     LD A,(NSPPC)   ;Befehl der Zeile bei Sprung
1BA4   2819       4709     JR Z,M1BBF
1BA6   A7         4710     AND A
1BA7   2043       4711     JR NZ,M1BEC
1BA9   47         4712     LD B,A
1BAA   7E         4713     LD A,(HL)
1BAB   E6C0       4714     AND 0C0H
1BAD   78         4715     LD A,B
1BAE   280F       4716     JR Z,M1BBF
1BB0   CF         4717     RST ERRAUS
1BB1   FF         4718     DEFB 0FFH
                  4719  
                  4720  ;Einstieg bei dem Befehl 'REM'
                  4721  ;durch entfernen der Returnadresse BRKTST wird der Rest
                  4722  ;der Zeile ignoriert
                  4723  
1BB2   C1         4724  M1BB2:   POP BC
                  4725  
                  4726  ;Behandlung der Zeile, wenn das Ende gefunden wurde
                  4727  
1BB3   CD3025     4728  M1BB3:   CALL M2530
1BB6   C8         4729     RET Z
                  4730  
1BB7   2A555C     4731     LD HL,(NXTLIN) ;Adresse der naechsten Basiczeile
1BBA   3EC0       4732     LD A,0C0H
1BBC   A6         4733     AND (HL)
1BBD   C0         4734     RET NZ
                  4735  
1BBE   AF         4736     XOR A
                  4737  
                  4738  ;diese Routine holt die neue Zeilennummer nach 'PPC'
                  4739  ;und sucht den Beginn der darauffolgenden Zeile
                  4740  
1BBF   FE01       4741  M1BBF:   CP 1
1BC1   CE00       4742     ADC A,0
1BC3   56         4743     LD D,(HL)
1BC4   23         4744     INC HL
1BC5   5E         4745     LD E,(HL)
1BC6   ED53455C   4746     LD (PPC),DE ;aktuelle Nr. der Basiczeile
1BCA   23         4747     INC HL
1BCB   5E         4748     LD E,(HL)
1BCC   23         4749     INC HL
1BCD   56         4750     LD D,(HL)
1BCE   EB         4751     EX DE,HL
1BCF   19         4752     ADD HL,DE
1BD0   23         4753     INC HL
                  4754  
                  4755  ;Variable fuer naechste Zeile setzen
                  4756  
                              SP                                PAGE  83
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1BD1   22555C     4757  M1BD1:   LD (NXTLIN),HL ;Adresse der naechsten Basiczeile
1BD4   EB         4758     EX DE,HL
1BD5   225D5C     4759     LD (CHADD),HL  ;Adr. des naechsten zu interpret. Zeichens
1BD8   57         4760     LD D,A
1BD9   1E00       4761     LD E,0
1BDB   FD360AFF   4762     LD (IY+0AH),0FFH
1BDF   15         4763     DEC D
1BE0   FD720D     4764     LD (IY+0DH),D
1BE3   CA281B     4765     JP Z,M1B28
1BE6   14         4766     INC D
1BE7   CD8B19     4767     CALL M198B
1BEA   2808       4768     JR Z,M1BF4
                  4769  
1BEC   CF         4770  M1BEC:   RST ERRAUS
1BED   16         4771     DEFB 16H
                  4772  
1BEE   CD3025     4773  M1BEE:   CALL M2530
1BF1   C0         4774     RET NZ
1BF2   C1         4775     POP BC
1BF3   C1         4776     POP BC
                  4777  
                  4778  ;naechsten Befehl finden:
                  4779  ;bei Carriage Return in der naechsten Zeile, bei
                  4780  ;':' in der gleichen Zeile.
                  4781  ;alle anderen Zeichen bedeuten Syntax-Error
                  4782  
1BF4   DF         4783  M1BF4:   RST GETAKT
1BF5   FE0D       4784     CP 0DH
1BF7   28BA       4785     JR Z,M1BB3
1BF9   FE3A       4786     CP ':'
1BFB   CA281B     4787     JP Z,M1B28
1BFE   C38A1C     4788     JP M1C8A
                  4789  
1C01   0F         4790  M1C01:   DEFB PAR00-$
1C02   1D         4791     DEFB PAR01-$
1C03   4B         4792     DEFB PAR02-$
1C04   09         4793     DEFB PAR03-$
1C05   67         4794     DEFB PAR04-$
1C06   0B         4795     DEFB PAR05-$
1C07   7B         4796     DEFB PAR06-$
1C08   8E         4797     DEFB PAR07-$
1C09   71         4798     DEFB PAR08-$
1C0A   B4         4799     DEFB PAR09-$
1C0B   81         4800     DEFB PAR0A-$
1C0C   CF         4801     DEFB PAR0B-$
                  4802  
                  4803  ;Parameter 03: es kann eine Zahl folgen
                  4804  
1C0D   CDDE1C     4805  PAR03:   CALL M1CDE
                  4806  
                  4807  ;Parameter 00: es duerfen keine Angaben folgen z.B. COPY
                  4808  
1C10   BF         4809  PAR00:   CP A
                  4810  
                  4811  ;Parameter 05: es koennen Ausdruecke folgen:
                  4812  ;z.B. PRINT"SPECTRUM"
                  4813  
1C11   C1         4814  PAR05:   POP BC
                              SP                                PAGE  84
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1C12   CCEE1B     4815     CALL Z,M1BEE
1C15   EB         4816     EX DE,HL
                  4817  
                  4818  ;jetzt kann nach erfolgter Pruefung, aus der Parametertabelle
                  4819  ;der einzelnen Befehle die Sprungadresse geladen und auf den
                  4820  ;STACK geschoben werden
                  4821  
1C16   2A745C     4822  M1C16:   LD HL,(TADDR)  ;Adresse des naechsten Tokens in der Tabelle
1C19   4E         4823     LD C,(HL)
1C1A   23         4824     INC HL
1C1B   46         4825     LD B,(HL)
1C1C   EB         4826     EX DE,HL
1C1D   C5         4827     PUSH BC
1C1E   C9         4828     RET
                  4829  
                  4830  ;Parameter 01: Variablenzuweisung bei LET
                  4831  
1C1F   CDB228     4832  PAR01:   CALL M28B2
1C22   FD363700   4833  M1C22:   LD (IY+37H),0
1C26   3008       4834     JR NC,M1C30
1C28   FDCB37CE   4835     SET 1,(IY+37H)
1C2C   2018       4836     JR NZ,M1C46
                  4837  
1C2E   CF         4838  M1C2E:   RST ERRAUS
1C2F   01         4839     DEFB 1
                  4840  
1C30   CC9629     4841  M1C30:   CALL Z,M2996
1C33   FDCB0176   4842     BIT 6,(IY+1)
1C37   200D       4843     JR NZ,M1C46
1C39   AF         4844     XOR A
1C3A   CD3025     4845     CALL M2530
1C3D   C4F12B     4846     CALL NZ,M2BF1
1C40   21715C     4847     LD HL,FLAGX ;Flag Teil 3
1C43   B6         4848     OR (HL)
1C44   77         4849     LD (HL),A
1C45   EB         4850     EX DE,HL
                  4851  
                  4852  ;fuer alle numerischen und neuen String- oder
                  4853  ;Stringarrayvariablen enthaelt C den Variablennamen.
                  4854  ;Fuer alte String- oder Stringarrayvariable enthaelt BC
                  4855  ;die Laenge fuer die Zuweisung.
                  4856  
1C46   ED43725C   4857  M1C46:   LD (STRLEN),BC ;Laenge eines Strings
1C4A   224D5C     4858     LD (DEST),HL   ;Variablenadresse bei Zuweisung
1C4D   C9         4859     RET
                  4860  
                  4861  ;Parameter 02: aktuelle Berechnung fuer Zuweisung einer
                  4862  ;Variablen in einem LET-Befehl durchfuehren
                  4863  
1C4E   C1         4864  PAR02:   POP BC
1C4F   CD561C     4865     CALL M1C56
1C52   CDEE1B     4866     CALL M1BEE
1C55   C9         4867     RET
                  4868  
                  4869  ;Diese Routine wird von LET, READ und INPUT benutzt um
                  4870  ;erst eine Variable zu berechnen und diese dann zuzuweisen.
                  4871  ;INPUT benutzt FLAGX und steigt beim zweiten Befehl ein.
                  4872  
                              SP                                PAGE  85
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1C56   3A3B5C     4873  M1C56:   LD A,(FLAGS)   ;Bit 1= Printer ein
1C59   F5         4874  M1C59:   PUSH AF
1C5A   CDFB24     4875     CALL AUSDRU
1C5D   F1         4876     POP AF
1C5E   FD5601     4877     LD D,(IY+1)
1C61   AA         4878     XOR D
1C62   E640       4879     AND 40H
1C64   2024       4880     JR NZ,M1C8A
1C66   CB7A       4881     BIT 7,D
1C68   C2FF2A     4882     JP NZ,M2AFF
1C6B   C9         4883     RET
                  4884  
                  4885  ;Parameter 04: Einstieg fuer FOR..NEXT - Befehle
                  4886  
1C6C   CDB228     4887  PAR04:   CALL M28B2
1C6F   F5         4888     PUSH AF
1C70   79         4889     LD A,C
1C71   F69F       4890     OR 09FH
1C73   3C         4891     INC A
1C74   2014       4892     JR NZ,M1C8A
1C76   F1         4893     POP AF
1C77   18A9       4894     JR M1C22
                  4895  
                  4896  ;Die folgenden Routinen dienen dem Berechnen von
                  4897  ;numerischen Ausdruecken. Das jeweilige Ergebnis kommt
                  4898  ;als letztes auf den Calculatorstack.
                  4899  ;Der erste Einstiegspunkt dient dem Berechnen von zwei
                  4900  ;durch Komma getrennten Ausdruecken (PAR 08).
                  4901  
1C79   E7         4902  M1C79:   RST GETNXT
1C7A   CD821C     4903  PAR08:   CALL PAR06
1C7D   FE2C       4904     CP ','
1C7F   2009       4905     JR NZ,M1C8A
1C81   E7         4906     RST GETNXT
                  4907  
                  4908  ;ab hier nur einen Ausdruck berechnen
                  4909  
1C82   CDFB24     4910  PAR06:   CALL AUSDRU
1C85   FDCB0176   4911     BIT 6,(IY+1)
1C89   C0         4912     RET NZ
                  4913  
1C8A   CF         4914  M1C8A:   RST ERRAUS
1C8B   0B         4915     DEFB 0BH
                  4916  
                  4917  ;Berechnung eines einfachen String-Ausdrucks
                  4918  
1C8C   CDFB24     4919  PAR0A:   CALL AUSDRU
1C8F   FDCB0176   4920     BIT 6,(IY+1)
1C93   C8         4921     RET Z
1C94   18F4       4922     JR M1C8A
                  4923  
                  4924  ;Parameter 07: setzen der dauerhaften Farben
                  4925  
1C96   FDCB017E   4926  PAR07:   BIT 7,(IY+1)
1C9A   FDCB0286   4927     RES 0,(IY+2)
1C9E   C44D0D     4928     CALL NZ,AKTCOL
1CA1   F1         4929     POP AF
1CA2   3A745C     4930     LD A,(TADDR)   ;Adresse des naechsten Tokens in der Tabelle
                              SP                                PAGE  86
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1CA5   D613       4931     SUB 13H
1CA7   CDFC21     4932     CALL M21FC
1CAA   CDEE1B     4933     CALL M1BEE
1CAD   2A8F5C     4934     LD HL,(ATTRT)  ;aktuelle Farben temporaer
1CB0   228D5C     4935     LD (ATTRP),HL  ;aktuelle Farben permanent
1CB3   21915C     4936     LD HL,PFLAG ;Printerflag
1CB6   7E         4937     LD A,(HL)
1CB7   07         4938     RLCA
1CB8   AE         4939     XOR (HL)
1CB9   E6AA       4940     AND 0AAH
1CBB   AE         4941     XOR (HL)
1CBC   77         4942     LD (HL),A
1CBD   C9         4943     RET
                  4944  
                  4945  ;Parameter 09: Diese Routine wird von PLOT, DRAW und
                  4946  ;CIRCLE benutzt, um erst einmal Defaultwerte von
                  4947  ;FLASH, BRIGHT und PAPER auf 8 zu setzen.
                  4948  
1CBE   CD3025     4949  PAR09:   CALL M2530
1CC1   2813       4950     JR Z,M1CD6
1CC3   FDCB0286   4951     RES 0,(IY+2)
1CC7   CD4D0D     4952     CALL AKTCOL
1CCA   21905C     4953     LD HL,MASKT ;aktuelle Farbe transp./temp.
1CCD   7E         4954     LD A,(HL)
1CCE   F6F8       4955     OR 0F8H
1CD0   77         4956     LD (HL),A
1CD1   FDCB57B6   4957     RES 6,(IY+57H)
1CD5   DF         4958     RST GETAKT
1CD6   CDE221     4959  M1CD6:   CALL FAREIN
1CD9   189F       4960     JR PAR08
                  4961  
                  4962  ;Parameter 0B: alle Kassettenroutinen
                  4963  
1CDB   C30506     4964  PAR0B:   JP KASHAU
                  4965  
                  4966  ;Routine um einen numerischen Ausdruck zu berechnen.
                  4967  ;Es wird der Wert Null uebergeben, falls kein Ausdruck
                  4968  ;vorhanden ist.
                  4969  
1CDE   FE0D       4970  M1CDE:   CP 0DH
1CE0   2804       4971     JR Z,M1CE6
1CE2   FE3A       4972     CP ':'
1CE4   209C       4973     JR NZ,PAR06
                  4974  
                  4975  ;sonst den Calculator benutzen und eine Null im
                  4976  ;Caculatorstack addieren.
                  4977  
1CE6   CD3025     4978  M1CE6:   CALL M2530
1CE9   C8         4979     RET Z
1CEA   EF         4980     RST CALRUF
1CEB   A0         4981     DEFB 0A0H
1CEC   38         4982     DEFB 38H
1CED   C9         4983     RET
                  4984  
                  4985  ;die folgenden Routinen dienen der Befehlsausfuehrung
                  4986  
1CEE   CF         4987  M1CEE:   RST ERRAUS
1CEF   08         4988     DEFB 8
                              SP                                PAGE  87
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  4989  
                  4990  ;Befehl IF
                  4991  
1CF0   C1         4992  M1CF0:   POP BC
1CF1   CD3025     4993     CALL M2530
1CF4   280A       4994     JR Z,M1D00
1CF6   EF         4995     RST CALRUF
1CF7   02         4996     DEFB 2
1CF8   38         4997     DEFB 38H
                  4998  
1CF9   EB         4999     EX DE,HL
1CFA   CDE934     5000     CALL M34E9
1CFD   DAB31B     5001     JP C,M1BB3
1D00   C3291B     5002  M1D00:   JP M1B29
                  5003  
                  5004  ;Befehl FOR
                  5005  
1D03   FECD       5006  M1D03:   CP 0CDH
1D05   2009       5007     JR NZ,M1D10
1D07   E7         5008     RST GETNXT
1D08   CD821C     5009     CALL PAR06
1D0B   CDEE1B     5010     CALL M1BEE
1D0E   1806       5011     JR M1D16
                  5012  
1D10   CDEE1B     5013  M1D10:   CALL M1BEE
1D13   EF         5014     RST CALRUF
1D14   A1         5015     DEFB 0A1H
1D15   38         5016     DEFB 38H
                  5017  
                  5018  ;die letzten drei Werte des Calculatorstacks sind:
                  5019  ;der Wert der Variablen (W), die Obergrenze (O) und
                  5020  ;die Schrittweite
                  5021  
1D16   EF         5022  M1D16:   RST CALRUF
1D17   C0         5023     DEFB 0C0H
1D18   02         5024     DEFB 2
1D19   01         5025     DEFB 1
1D1A   E0         5026     DEFB 0E0H
1D1B   01         5027     DEFB 1
1D1C   38         5028     DEFB 38H
                  5029  
1D1D   CDFF2A     5030     CALL M2AFF
1D20   22685C     5031     LD (MEM),HL
1D23   2B         5032     DEC HL
1D24   7E         5033     LD A,(HL)
1D25   CBFE       5034     SET 7,(HL)
1D27   010600     5035     LD BC,6
1D2A   09         5036     ADD HL,BC
1D2B   07         5037     RLCA
1D2C   3806       5038     JR C,M1D34
1D2E   0E0D       5039     LD C,0DH
1D30   CD5516     5040     CALL MACHPL
1D33   23         5041     INC HL
1D34   E5         5042  M1D34:   PUSH HL
1D35   EF         5043     RST CALRUF
1D36   02         5044     DEFB 2
1D37   02         5045     DEFB 2
1D38   38         5046     DEFB 38H
                              SP                                PAGE  88
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  5047  
1D39   E1         5048     POP HL
1D3A   EB         5049     EX DE,HL
1D3B   0E0A       5050     LD C,10
1D3D   EDB0       5051     LDIR
1D3F   2A455C     5052     LD HL,(PPC) ;aktuelle Nr. der Basiczeile
1D42   EB         5053     EX DE,HL
1D43   73         5054     LD (HL),E
1D44   23         5055     INC HL
1D45   72         5056     LD (HL),D
1D46   FD560D     5057     LD D,(IY+0DH)
1D49   14         5058     INC D
1D4A   23         5059     INC HL
1D4B   72         5060     LD (HL),D
                  5061  
                  5062  ;Es folgt der Test, ob eine FOR-NEXT-Schleife auge-
                  5063  ;fuehrt werden kann. Wenn ja: RETURN, sonst muss
                  5064  ;naechster Befehl hinter NEXT gefunden werden.
                  5065  
1D4C   CDDA1D     5066     CALL M1DDA
1D4F   D0         5067     RET NC
                  5068  
1D50   FD4638     5069     LD B,(IY+38H)
1D53   2A455C     5070     LD HL,(PPC) ;aktuelle Nr. der Basiczeile
1D56   22425C     5071     LD (NEWPPC),HL ;Zeilennummer wohin gesprungen wird (GO TO ...)
1D59   3A475C     5072     LD A,(SUBPPC)  ;Zeiger auf Befehl der Zeile
1D5C   ED44       5073     NEG
1D5E   57         5074     LD D,A
1D5F   2A5D5C     5075     LD HL,(CHADD)  ;Adr. des naechsten zu interpret. Zeichens
1D62   1EF3       5076     LD E,0F3H
1D64   C5         5077  M1D64:   PUSH BC
1D65   ED4B555C   5078     LD BC,(NXTLIN) ;Adresse der naechsten Basiczeile
1D69   CD861D     5079     CALL M1D86
1D6C   ED43555C   5080     LD (NXTLIN),BC ;Adresse der naechsten Basiczeile
1D70   C1         5081     POP BC
1D71   3811       5082     JR C,M1D84
1D73   E7         5083     RST GETNXT
1D74   F620       5084     OR 20H
1D76   B8         5085     CP B
1D77   2803       5086     JR Z,M1D7C
1D79   E7         5087     RST GETNXT
1D7A   18E8       5088     JR M1D64
                  5089  
                  5090  ;NEWPPC enthaelt nun die Zeilennummer, in der das
                  5091  ;richtige NEXT-Statement gefunden wurde. Die Befehlszahl
                  5092  ;des 'NEXT' wird gesucht und in NSPPC gespeichert.
                  5093  
1D7C   E7         5094  M1D7C:   RST GETNXT
1D7D   3E01       5095     LD A,1
1D7F   92         5096     SUB D
1D80   32445C     5097     LD (NSPPC),A   ;Befehl der Zeile bei Sprung
1D83   C9         5098     RET
                  5099  
1D84   CF         5100  M1D84 RST ERRAUS
1D85   11         5101     DEFB 011H
                  5102  
                  5103  ;Diese Routine durchsucht das Programm nach 'DATA',
                  5104  ;'DEF FN' und 'NEXT'. Token im Register E und Start-
                              SP                                PAGE  89
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  5105  ;adresse des Suchens in HL.
                  5106  
1D86   7E         5107  M1D86:   LD A,(HL)
1D87   FE3A       5108     CP ':'
1D89   2818       5109     JR Z,M1DA3
1D8B   23         5110  M1D8B:   INC HL
1D8C   7E         5111     LD A,(HL)
1D8D   E6C0       5112     AND 0C0H
1D8F   37         5113     SCF
1D90   C0         5114     RET NZ
                  5115  
1D91   46         5116     LD B,(HL)
1D92   23         5117     INC HL
1D93   4E         5118     LD C,(HL)
1D94   ED43425C   5119     LD (NEWPPC),BC ;Zeilennummer wohin gesprungen wird (GO TO ...)
1D98   23         5120     INC HL
1D99   4E         5121     LD C,(HL)
1D9A   23         5122     INC HL
1D9B   46         5123     LD B,(HL)
1D9C   E5         5124     PUSH HL
1D9D   09         5125     ADD HL,BC
1D9E   44         5126     LD B,H
1D9F   4D         5127     LD C,L
1DA0   E1         5128     POP HL
1DA1   1600       5129     LD D,0
1DA3   C5         5130  M1DA3:   PUSH BC
1DA4   CD8B19     5131     CALL M198B
1DA7   C1         5132     POP BC
1DA8   D0         5133     RET NC
1DA9   18E0       5134     JR M1D8B
                  5135  
                  5136  ;Befehl NEXT
                  5137  ;die Laufvariable wird um den STEP-WERT erhoeht
                  5138  
1DAB   FDCB374E   5139  M1DAB:   BIT 1,(IY+37H)
1DAF   C22E1C     5140     JP NZ,M1C2E
1DB2   2A4D5C     5141     LD HL,(DEST)   ;Variablenadresse bei Zuweisung
1DB5   CB7E       5142     BIT 7,(HL)
1DB7   281F       5143     JR Z,M1DD8
1DB9   23         5144     INC HL
1DBA   22685C     5145     LD (MEM),HL ;Zeiger auf Calculatorspeicher
1DBD   EF         5146     RST CALRUF
1DBE   E0         5147     DEFB 0E0H
1DBF   E2         5148     DEFB 0E2H
1DC0   0F         5149     DEFB 0FH
1DC1   C0         5150     DEFB 0C0H
1DC2   02         5151     DEFB 2
1DC3   38         5152     DEFB 38H
                  5153  
1DC4   CDDA1D     5154     CALL M1DDA
1DC7   D8         5155     RET C
                  5156  
1DC8   2A685C     5157     LD HL,(MEM) ;Zeiger auf Calculatorspeicher
1DCB   110F00     5158     LD DE,0FH
1DCE   19         5159     ADD HL,DE
1DCF   5E         5160     LD E,(HL)
1DD0   23         5161     INC HL
1DD1   56         5162     LD D,(HL)
                              SP                                PAGE  90
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1DD2   23         5163     INC HL
1DD3   66         5164     LD H,(HL)
1DD4   EB         5165     EX DE,HL
1DD5   C3731E     5166     JP M1E73
                  5167  
1DD8   CF         5168  M1DD8:   RST ERRAUS
1DD9   00         5169     NOP
                  5170  
                  5171  ;Ueberpruefung, ob die Ober-/Untergrenze einer FOR-
                  5172  ;NEXT-Schleife erreicht (je nach Vorzeichen von STEP)
                  5173  
1DDA   EF         5174  M1DDA:   RST CALRUF
1DDB   E1         5175     DEFB 0E1H
1DDC   E0         5176     DEFB 0E0H
1DDD   E2         5177     DEFB 0E2H
1DDE   36         5178     DEFB 36H
1DDF   00         5179     DEFB 0
1DE0   02         5180     DEFB NXTNEG-$
1DE1   01         5181     DEFB 1
1DE2   03         5182  NXTNEG:  DEFB 3
1DE3   37         5183     DEFB 37H
1DE4   00         5184     DEFB 0
1DE5   04         5185     DEFB NXTEND-$
1DE6   38         5186     DEFB 38H
1DE7   A7         5187     AND A
1DE8   C9         5188     RET
                  5189  
1DE9   38         5190  NXTEND:  DEFB 38H
1DEA   37         5191     SCF
1DEB   C9         5192     RET
                  5193  
                  5194  ;Befehl READ
                  5195  ;CHADD wird als Zeiger entlang der einzelnen DATA-Statements
                  5196  ;benutzt. DATADD zeigt auf das aktuelle Element der Daten-
                  5197  ;liste (noetig fuer mehrere READ-Befehle)
                  5198  
1DEC   E7         5199  M1DEC:   RST GETNXT
1DED   CD1F1C     5200  M1DED:   CALL PAR01
1DF0   CD3025     5201     CALL M2530
1DF3   2829       5202     JR Z,M1E1E
1DF5   DF         5203     RST GETAKT
1DF6   225F5C     5204     LD (XPTR),HL   ;Adresse des Zeichens nach ? bei Error
1DF9   2A575C     5205     LD HL,(DATADD) ;Zeiger auf Endbyte der letzten Daten
1DFC   7E         5206     LD A,(HL)
1DFD   FE2C       5207     CP ','
1DFF   2809       5208     JR Z,M1E0A
1E01   1EE4       5209     LD E,0E4H
1E03   CD861D     5210     CALL M1D86
1E06   3002       5211     JR NC,M1E0A
                  5212  
1E08   CF         5213     RST ERRAUS
1E09   0D         5214     DEFB 0DH
                  5215  
1E0A   CD7700     5216  M1E0A:   CALL M0077
1E0D   CD561C     5217     CALL M1C56
1E10   DF         5218     RST GETAKT
1E11   22575C     5219     LD (DATADD),HL ;Zeiger auf Endbyte der letzten Daten
1E14   2A5F5C     5220     LD HL,(XPTR)   ;Adresse des Zeichens nach ? bei Error
                              SP                                PAGE  91
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1E17   FD362600   5221     LD (IY+26H),0
1E1B   CD7800     5222     CALL M0078
1E1E   DF         5223  M1E1E:   RST GETAKT
1E1F   FE2C       5224     CP ','
1E21   28C9       5225     JR Z,M1DEC
1E23   CDEE1B     5226     CALL M1BEE
1E26   C9         5227     RET
                  5228  
                  5229  ;Befehl DATA
                  5230  ;beim Programmlauf werden die DATA-Statements uebersprungen
                  5231  
1E27   CD3025     5232  M1E27:   CALL M2530
1E2A   200B       5233     JR NZ,M1E37
1E2C   CDFB24     5234  M1E2C:   CALL AUSDRU
1E2F   FE2C       5235     CP ','
1E31   C4EE1B     5236     CALL NZ,M1BEE
1E34   E7         5237     RST GETNXT
1E35   18F5       5238     JR M1E2C
1E37   3EE4       5239  M1E37:   LD A,0E4H
                  5240  
                  5241  ;Routine zum Ueberspringen von Programmteilen
                  5242  
1E39   47         5243  M1E39:   LD B,A
1E3A   EDB9       5244     CPDR
1E3C   110002     5245     LD DE,200H
1E3F   C38B19     5246     JP M198B
                  5247  
                  5248  ;Befehl RESTORE
                  5249  ;ein Operand wird als Zeilennummer interpretiert,
                  5250  ;wenn keiner vorhanden, Defaultwert Null
                  5251  
1E42   CD991E     5252  M1E42:   CALL M1E99
1E45   60         5253  M1E45:   LD H,B
1E46   69         5254     LD L,C
1E47   CD6E19     5255     CALL M196E
1E4A   2B         5256     DEC HL
1E4B   22575C     5257     LD (DATADD),HL ;Zeiger auf Endbyte der letzten Daten
1E4E   C9         5258     RET
                  5259  
                  5260  ;Befehl RANDOMIZE
                  5261  ;falls der Operand Null ist, wird statt dessen FRAMES
                  5262  ;als Ersatz genommen
                  5263  
1E4F   CD991E     5264  M1E4F:   CALL M1E99
1E52   78         5265     LD A,B
1E53   B1         5266     OR C
1E54   2004       5267     JR NZ,M1E5A
1E56   ED4B785C   5268     LD BC,(FRAMES) ;3 Byte Bildzaehler (Uhr)
1E5A   ED43765C   5269  M1E5A:   LD (SEED),BC   ;Zufallszahl setzen durch Randomize
1E5E   C9         5270     RET
                  5271  
                  5272  ;Befehl CONTINUE
                  5273  ;die entsprechenden Zeilen- und Befehlsnummern werden
                  5274  ;geladen, um dann ein 'GO TO' auszufuehren
                  5275  
1E5F   2A6E5C     5276  M1E5F:   LD HL,(OLDPPC) ;Zeilennummer fuer Continue
1E62   FD5636     5277     LD D,(IY+36H)
1E65   180C       5278     JR M1E73
                              SP                                PAGE  92
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  5279  
                  5280  ;Befehl GO TO
                  5281  ;die Zeilennummer sollte im Bereich von 0 - 9999 sein,
                  5282  ;es wird jedoch nur auf >61439 geprueft
                  5283  
1E67   CD991E     5284  M1E67:   CALL M1E99
1E6A   60         5285     LD H,B
1E6B   69         5286     LD L,C
1E6C   1600       5287     LD D,0
1E6E   7C         5288     LD A,H
1E6F   FEF0       5289     CP 0F0H
1E71   302C       5290     JR NC,M1E9F
                  5291  
1E73   22425C     5292  M1E73:   LD (NEWPPC),HL ;Zeilennummer wohin gesprungen wird (GO TO ...)
1E76   FD720A     5293     LD (IY+0AH),D
1E79   C9         5294     RET
                  5295  
                  5296  ;Befehl OUT
                  5297  ;die zwei Parameter werden vom Calculatorstack
                  5298  ;geholt und ausgegeben
                  5299  
1E7A   CD851E     5300  M1E7A:   CALL M1E85
1E7D   ED79       5301     OUT (C),A
1E7F   C9         5302     RET
                  5303  
                  5304  ;Befehl POKE
                  5305  ;die beiden Parameter werden, wie bei OUT, vom
                  5306  ;Calculatorstack genommen
                  5307  
1E80   CD851E     5308  M1E80:   CALL M1E85
1E83   02         5309     LD (BC),A
1E84   C9         5310     RET
                  5311  
                  5312  ;Die zwei obersten Parameter vom Calculatorstack entnehmen:
                  5313  ;Der erste muss im Bereich von 0 - 255 sein, (es wird das
                  5314  ;Zweierkomplement gebildet, falls negativ), der Zweite im
                  5315  ;Bereich von 0 - 65535 sein (Integer)
                  5316  
1E85   CDD52D     5317  M1E85:   CALL M2DD5
1E88   3815       5318     JR C,M1E9F
1E8A   2802       5319     JR Z,M1E8E
1E8C   ED44       5320     NEG
1E8E   F5         5321  M1E8E:   PUSH AF
1E8F   CD991E     5322     CALL M1E99
1E92   F1         5323     POP AF
1E93   C9         5324     RET
                  5325  
                  5326  ;Subroutine, um Integerzahlen vom Calculatorstack zu holen.
                  5327  ;INTEG1 fuer Zahlen von 0 -   255 (1 Byte)
                  5328  ;INTEG2 fuer Zahlen von 0 - 65535 (2 Byte)
                  5329  
1E94   CDD52D     5330  INTEG1:  CALL M2DD5
1E97   1803       5331     JR M1E9C
                  5332  
1E99   CDA22D     5333  M1E99:   CALL M2DA2
1E9C   3801       5334  M1E9C:   JR C,M1E9F
1E9E   C8         5335     RET Z
                  5336  
                              SP                                PAGE  93
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1E9F   CF         5337  M1E9F:   RST ERRAUS
1EA0   0A         5338     DEFB 0AH
                  5339  
                  5340  ;Befehl RUN
                  5341  ;Parameter von RUN wird ueber GO TO zugewiesen, danach
                  5342  ;wird ein 'RESTORE 0' und 'CLEAR' ausgefuehrt
                  5343  
1EA1   CD671E     5344  M1EA1:   CALL M1E67
1EA4   010000     5345     LD BC,0
1EA7   CD451E     5346     CALL M1E45
1EAA   1803       5347     JR M1EAF
                  5348  
                  5349  ;Befehl CLEAR
                  5350  ;hiermit werden die Variablen und der Bildschirm
                  5351  ;geloescht. RAMTOP und der Stack werden neu angelegt.
                  5352  
1EAC   CD991E     5353  M1EAC:   CALL M1E99
1EAF   78         5354  M1EAF:   LD A,B
1EB0   B1         5355     OR C
1EB1   2004       5356     JR NZ,M1EB7
1EB3   ED4BB25C   5357     LD BC,(RAMTOP) ;letzte Speicheradresse fuer Basic
1EB7   C5         5358  M1EB7:   PUSH BC
1EB8   ED5B4B5C   5359     LD DE,(VARS)   ;Beginn der Variablen
1EBC   2A595C     5360     LD HL,(ELINE)  ;Adresse des eingegebenen Befehls
1EBF   2B         5361     DEC HL
1EC0   CDE519     5362     CALL RAUS1
1EC3   CD6B0D     5363     CALL M0D6B
1EC6   2A655C     5364     LD HL,(STKEND) ;Anfang des freien Speichers
1EC9   113200     5365     LD DE,032H
1ECC   19         5366     ADD HL,DE
1ECD   D1         5367     POP DE
1ECE   ED52       5368     SBC HL,DE
1ED0   3008       5369     JR NC,M1EDA
1ED2   2AB45C     5370     LD HL,(PRAMT)  ;letzte Speicheradresse
1ED5   A7         5371     AND A
1ED6   ED52       5372     SBC HL,DE
1ED8   3002       5373     JR NC,M1EDC
                  5374  
1EDA   CF         5375  M1EDA:   RST ERRAUS
1EDB   15         5376     DEFB 15H
                  5377  
1EDC   EB         5378  M1EDC:   EX DE,HL
1EDD   22B25C     5379     LD (RAMTOP),HL ;letzte Speicheradresse fuer Basic
1EE0   D1         5380     POP DE
1EE1   C1         5381     POP BC
1EE2   363E       5382     LD (HL),3EH
1EE4   2B         5383     DEC HL
1EE5   F9         5384     LD SP,HL
1EE6   C5         5385     PUSH BC
1EE7   ED733D5C   5386     LD (ERRSP),SP  ;Errorstackpointer
1EEB   EB         5387     EX DE,HL
1EEC   E9         5388     JP (HL)
                  5389  
                  5390  ;Befehl GO SUB
                  5391  ;der aktuelle Wert von PPC und SUBPPC+1 werden im
                  5392  ;'GO SUB'-Stack gespeichert
                  5393  
1EED   D1         5394  M1EED:   POP DE
                              SP                                PAGE  94
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1EEE   FD660D     5395     LD H,(IY+0DH)
1EF1   24         5396     INC H
1EF2   E3         5397     EX (SP),HL
1EF3   33         5398     INC SP
1EF4   ED4B455C   5399     LD BC,(PPC) ;aktuelle Nr. der Basiczeile
1EF8   C5         5400     PUSH BC
1EF9   E5         5401     PUSH HL
1EFA   ED733D5C   5402     LD (ERRSP),SP  ;Errorstackpointer
1EFE   D5         5403     PUSH DE
1EFF   CD671E     5404     CALL M1E67
1F02   011400     5405     LD BC,14H
                  5406  
                  5407  ;Testroutine fuer benoetigten Speicherplatz (in BC)
                  5408  
1F05   2A655C     5409  M1F05:   LD HL,(STKEND) ;Anfang des freien Speichers
1F08   09         5410     ADD HL,BC
1F09   380A       5411     JR C,M1F15
1F0B   EB         5412     EX DE,HL
1F0C   215000     5413     LD HL,50H
1F0F   19         5414     ADD HL,DE
1F10   3803       5415     JR C,M1F15
1F12   ED72       5416     SBC HL,SP
1F14   D8         5417     RET C
                  5418  
                  5419  ;Fehlermeldung 'OUT OF MEMORY'
                  5420  
1F15   2E03       5421  M1F15:   LD L,3
1F17   C35500     5422     JP M0055
                  5423  
                  5424  ;Routine zum Berechnen des freien Speicherplatzes (FRE)
                  5425  ;der freie Platz ergibt sich durch: PRINT65535-USR7962
                  5426  
1F1A   010000     5427  M1F1A:   LD BC,0
1F1D   CD051F     5428     CALL M1F05
1F20   44         5429     LD B,H
1F21   4D         5430     LD C,L
1F22   C9         5431     RET
                  5432  
                  5433  ;Befhl RETURN
                  5434  ;Zeilennummer und Befehlszahl in der Zeile werden vom
                  5435  ;'GO SUB'-Stack genommen
                  5436  
1F23   C1         5437  M1F23:   POP BC
1F24   E1         5438     POP HL
1F25   D1         5439     POP DE
1F26   7A         5440     LD A,D
1F27   FE3E       5441     CP 3EH
1F29   280B       5442     JR Z,M1F36
1F2B   3B         5443     DEC SP
1F2C   E3         5444     EX (SP),HL
1F2D   EB         5445     EX DE,HL
1F2E   ED733D5C   5446     LD (ERRSP),SP  ;Errorstackpointer
1F32   C5         5447     PUSH BC
1F33   C3731E     5448     JP M1E73
                  5449  
1F36   D5         5450  M1F36:   PUSH DE
1F37   E5         5451     PUSH HL
1F38   CF         5452     RST ERRAUS
                              SP                                PAGE  95
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1F39   06         5453     DEFB 6
                  5454  
                  5455  ;Befehl PAUSE
                  5456  ;Es werden hierbei die Interrupts gezaehlt, die 50 mal
                  5457  ;pro Sekunde (fuer die Tastaturabfrage) auftreten. Wenn
                  5458  ;eine Taste gedrueckt wird, wird die Pause ebenfalls beendet.
                  5459  
1F3A   CD991E     5460  M1F3A:   CALL M1E99
1F3D   76         5461  M1F3D:   HALT
                  5462  
1F3E   0B         5463     DEC BC
1F3F   78         5464     LD A,B
1F40   B1         5465     OR C
1F41   280C       5466     JR Z,M1F4F
1F43   78         5467     LD A,B
1F44   A1         5468     AND C
1F45   3C         5469     INC A
1F46   2001       5470     JR NZ,M1F49
1F48   03         5471     INC BC
1F49   FDCB016E   5472  M1F49:   BIT 5,(IY+1)
1F4D   28EE       5473     JR Z,M1F3D
                  5474  
1F4F   FDCB01AE   5475  M1F4F:   RES 5,(IY+1)
1F53   C9         5476     RET
                  5477  
                  5478  ;Subroutine, um auf gedrueckte Break-Taste zu pruefen
                  5479  
1F54   3E7F       5480  M1F54:   LD A,7FH
1F56   DBFE       5481     IN A,(0FEH)
1F58   1F         5482     RRA
1F59   D8         5483     RET C
                  5484  
1F5A   3EFE       5485     LD A,0FEH
1F5C   DBFE       5486     IN A,(0FEH)
1F5E   1F         5487     RRA
1F5F   C9         5488     RET
                  5489  
                  5490  ;Befehl DEF FN
                  5491  ;Zur Laufzeit wird 'DEF FN' uebersprungen (wie DATA).
                  5492  ;Bei der Syntaxpruefung wird der Ausdruck geprueft.
                  5493  
1F60   CD3025     5494  M1F60:   CALL M2530
1F63   2805       5495     JR Z,M1F6A
1F65   3ECE       5496     LD A,0CEH
1F67   C3391E     5497     JP M1E39
                  5498  
1F6A   FDCB01F6   5499  M1F6A:   SET 6,(IY+1)
1F6E   CD8D2C     5500     CALL M2C8D
1F71   3016       5501     JR NC,M1F89
1F73   E7         5502     RST GETNXT
1F74   FE24       5503     CP '$'
1F76   2005       5504     JR NZ,M1F7D
1F78   FDCB01B6   5505     RES 6,(IY+1)
1F7C   E7         5506     RST GETNXT
1F7D   FE28       5507  M1F7D:   CP '('
1F7F   203C       5508     JR NZ,M1FBD
1F81   E7         5509     RST GETNXT
1F82   FE29       5510     CP ')'
                              SP                                PAGE  96
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1F84   2820       5511     JR Z,M1FA6
                  5512  
                  5513  ;Schleife, um alle Parameter nacheinander abzuarbeiten
                  5514  
1F86   CD8D2C     5515  M1F86:   CALL M2C8D
1F89   D28A1C     5516  M1F89:   JP NC,M1C8A
1F8C   EB         5517     EX DE,HL
1F8D   E7         5518     RST GETNXT
1F8E   FE24       5519     CP '$'
1F90   2002       5520     JR NZ,M1F94
1F92   EB         5521     EX DE,HL
1F93   E7         5522     RST GETNXT
1F94   EB         5523  M1F94:   EX DE,HL
1F95   010600     5524     LD BC,6
1F98   CD5516     5525     CALL MACHPL
1F9B   23         5526     INC HL
1F9C   23         5527     INC HL
1F9D   360E       5528     LD (HL),0EH
1F9F   FE2C       5529     CP ','
1FA1   2003       5530     JR NZ,M1FA6
1FA3   E7         5531     RST GETNXT
1FA4   18E0       5532     JR M1F86
                  5533  
1FA6   FE29       5534  M1FA6:   CP ')'
1FA8   2013       5535     JR NZ,M1FBD
1FAA   E7         5536     RST GETNXT
1FAB   FE3D       5537     CP '='
1FAD   200E       5538     JR NZ,M1FBD
1FAF   E7         5539     RST GETNXT
1FB0   3A3B5C     5540     LD A,(FLAGS)   ;Bit 1= Printer ein
1FB3   F5         5541     PUSH AF
1FB4   CDFB24     5542     CALL AUSDRU
1FB7   F1         5543     POP AF
1FB8   FDAE01     5544     XOR (IY+1)
1FBB   E640       5545     AND 40H
1FBD   C28A1C     5546  M1FBD:   JP NZ,M1C8A
1FC0   CDEE1B     5547     CALL M1BEE
                  5548  
                  5549  ;Stackkorrekturroutine fuer verschiedene Gelegenheiten
                  5550  ;bei der Syntaxpruefung
                  5551  
1FC3   CD3025     5552  M1FC3:   CALL M2530
1FC6   E1         5553     POP HL
1FC7   C8         5554     RET Z
1FC8   E9         5555     JP (HL)
                  5556  
                  5557  ;Befehle LPRINT und PRINT
                  5558  ;der erforderliche Kanal wird geoeffnet
                  5559  
1FC9   3E03       5560  M1FC9:   LD A,3
1FCB   1802       5561     JR M1FCF
                  5562  
1FCD   3E02       5563  M1FCD:   LD A,2
1FCF   CD3025     5564  M1FCF:   CALL M2530
1FD2   C40116     5565     CALL NZ,OPKAN
1FD5   CD4D0D     5566     CALL AKTCOL
1FD8   CDDF1F     5567     CALL M1FDF
1FDB   CDEE1B     5568     CALL M1BEE
                              SP                                PAGE  97
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

1FDE   C9         5569     RET
                  5570  
1FDF   DF         5571  M1FDF:   RST GETAKT
1FE0   CD4520     5572     CALL M2045
1FE3   280D       5573     JR Z,M1FF2
1FE5   CD4E20     5574  M1FE5:   CALL M204E
1FE8   28FB       5575     JR Z,M1FE5
1FEA   CDFC1F     5576     CALL M1FFC
1FED   CD4E20     5577     CALL M204E
1FF0   28F3       5578     JR Z,M1FE5
1FF2   FE29       5579  M1FF2:   CP ')'
1FF4   C8         5580     RET Z
                  5581  
                  5582  ;Subroutine, um ein CARRIAGE RETURN auszudrucken, aber
                  5583  ;nur zur Laufzeit
                  5584  
1FF5   CDC31F     5585  M1FF5:   CALL M1FC3
1FF8   3E0D       5586     LD A,0DH
1FFA   D7         5587     RST PRTOUT
1FFB   C9         5588     RET
                  5589  
                  5590  ;Subroutine zum Ausgeben von Ausdruecken bei PRINT etc.
                  5591  
1FFC   DF         5592  M1FFC:   RST GETAKT
1FFD   FEAC       5593     CP 0ACH
1FFF   200D       5594     JR NZ,M200E
2001   CD791C     5595     CALL M1C79
2004   CDC31F     5596     CALL M1FC3
2007   CD0723     5597     CALL M2307
200A   3E16       5598     LD A,16H
200C   1810       5599     JR M201E
                  5600  
200E   FEAD       5601  M200E:   CP 0ADH
2010   2012       5602     JR NZ,M2024
2012   E7         5603     RST GETNXT
2013   CD821C     5604     CALL PAR06
2016   CDC31F     5605     CALL M1FC3
2019   CD991E     5606     CALL M1E99
201C   3E17       5607     LD A,17H
201E   D7         5608  M201E:   RST PRTOUT
201F   79         5609     LD A,C
2020   D7         5610     RST PRTOUT
2021   78         5611     LD A,B
2022   D7         5612     RST PRTOUT
2023   C9         5613     RET
                  5614  
2024   CDF221     5615  M2024:   CALL FARBUN
2027   D0         5616     RET NC
2028   CD7020     5617     CALL M2070
202B   D0         5618     RET NC
                  5619  
                  5620  ;die zu druckenden Zeichen muessen entweder ein String
                  5621  ;oder ein numerischer Ausdruck sein
                  5622  
202C   CDFB24     5623     CALL AUSDRU
202F   CDC31F     5624     CALL M1FC3
2032   FDCB0176   5625     BIT 6,(IY+1)
2036   CCF12B     5626     CALL Z,M2BF1
                              SP                                PAGE  98
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2039   C2E32D     5627     JP NZ,M2DE3
                  5628  
                  5629  ;Ausgabeschleife fuer einen String
                  5630  
203C   78         5631  M203C:   LD A,B
203D   B1         5632     OR C
203E   0B         5633     DEC BC
203F   C8         5634     RET Z
2040   1A         5635     LD A,(DE)
2041   13         5636     INC DE
2042   D7         5637     RST PRTOUT
2043   18F7       5638     JR M203C
                  5639  
                  5640  ;Subroutine zum Untersuchen, ob eine Ausgabe zu Ende
                  5641  ;ist. Trifft dies zu, so ist das ZERO-Flag gesetzt.
                  5642  
2045   FE29       5643  M2045:   CP ')'
2047   C8         5644     RET Z
2048   FE0D       5645  M2048:   CP 0DH
204A   C8         5646     RET Z
204B   FE3A       5647     CP ':'
204D   C9         5648     RET
                  5649  
                  5650  ;Subroutine zum Positionieren beim Ausdrucken
                  5651  
204E   DF         5652  M204E:   RST GETAKT
204F   FE3B       5653     CP ';'
2051   2814       5654     JR Z,M2067
2053   FE2C       5655     CP ','
2055   200A       5656     JR NZ,M2061
2057   CD3025     5657     CALL M2530
205A   280B       5658     JR Z,M2067
205C   3E06       5659     LD A,6
205E   D7         5660     RST PRTOUT
205F   1806       5661     JR M2067
                  5662  
2061   FE27       5663  M2061:   CP 27H      ;'
2063   C0         5664     RET NZ
                  5665  
2064   CDF51F     5666     CALL M1FF5
2067   E7         5667  M2067:   RST GETNXT
2068   CD4520     5668     CALL M2045
206B   2001       5669     JR NZ,M206E
206D   C1         5670     POP BC
206E   BF         5671  M206E:   CP A
206F   C9         5672     RET
                  5673  
                  5674  ;Subroutine zum STREAM-aendern, falls der Benutzer
                  5675  ;es wuenscht
                  5676  
2070   FE23       5677  M2070:   CP '#'
2072   37         5678     SCF
2073   C0         5679     RET NZ
2074   E7         5680     RST GETNXT
2075   CD821C     5681     CALL PAR06
2078   A7         5682     AND A
2079   CDC31F     5683     CALL M1FC3
207C   CD941E     5684     CALL INTEG1
                              SP                                PAGE  99
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

207F   FE10       5685     CP 10H
2081   D20E16     5686     JP NC,ISTREA
2084   CD0116     5687     CALL OPKAN
2087   A7         5688     AND A
2088   C9         5689     RET
                  5690  
                  5691  ;Befehl INPUT
                  5692  ;eventuelle Ausgaben beim INPUT werden im unteren
                  5693  ;Bildschirmteil gedruckt
                  5694  
2089   CD3025     5695  M2089:   CALL M2530
208C   2808       5696     JR Z,M2096
208E   3E01       5697     LD A,1
2090   CD0116     5698     CALL OPKAN
2093   CD6E0D     5699     CALL M0D6E
2096   FD360201   5700  M2096:   LD (IY+2),1
209A   CDC120     5701     CALL M20C1
209D   CDEE1B     5702     CALL M1BEE
20A0   ED4B885C   5703     LD BC,(SPOSN)  ;Zeile/Spalte fuer Print
20A4   3A6B5C     5704     LD A,(DFSZ) ;Zeilenanzahl+1 im unteren Bildschirmteil
20A7   B8         5705     CP B
20A8   3803       5706     JR C,M20AD
20AA   0E21       5707     LD C,33
20AC   47         5708     LD B,A
20AD   ED43885C   5709  M20AD:   LD (SPOSN),BC  ;Zeile/Spalte fuer Print
20B1   3E19       5710     LD A,25
20B3   90         5711     SUB B
20B4   328C5C     5712     LD (SCRCT),A   ;Scrollzaehler
20B7   FDCB0286   5713     RES 0,(IY+2)
20BB   CDD90D     5714     CALL M0DD9
20BE   C36E0D     5715     JP M0D6E
                  5716  
                  5717  ;eigentliche INPUT-Routine
                  5718  
20C1   CD4E20     5719  M20C1:   CALL M204E
20C4   28FB       5720     JR Z,M20C1
20C6   FE28       5721     CP '('
20C8   200E       5722     JR NZ,M20D8
20CA   E7         5723     RST GETNXT
20CB   CDDF1F     5724     CALL M1FDF
20CE   DF         5725     RST GETAKT
20CF   FE29       5726     CP ')'
20D1   C28A1C     5727     JP NZ,M1C8A
20D4   E7         5728     RST GETNXT
20D5   C3B221     5729     JP M21B2
                  5730  
20D8   FECA       5731  M20D8:   CP 0CAH
20DA   2011       5732     JR NZ,M20ED
20DC   E7         5733     RST GETNXT
20DD   CD1F1C     5734     CALL PAR01
20E0   FDCB37FE   5735     SET 7,(IY+37H)
20E4   FDCB0176   5736     BIT 6,(IY+1)
20E8   C28A1C     5737     JP NZ,M1C8A
20EB   180D       5738     JR M20FA
                  5739  
                  5740  ;normale INPUT-Variablen
                  5741  
20ED   CD8D2C     5742  M20ED:   CALL M2C8D
                              SP                                PAGE 100
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

20F0   D2AF21     5743     JP NC,M21AF
20F3   CD1F1C     5744     CALL PAR01
20F6   FDCB37BE   5745     RES 7,(IY+37H)
                  5746  
                  5747  ;die PROMPT-Ausgabe wird im WORKSPACE aufgebaut
                  5748  
20FA   CD3025     5749  M20FA:   CALL M2530
20FD   CAB221     5750     JP Z,M21B2
2100   CDBF16     5751     CALL CLRWOR
2103   21715C     5752     LD HL,FLAGX ;Flag Teil 3
2106   CBB6       5753     RES 6,(HL)
2108   CBEE       5754     SET 5,(HL)
210A   010100     5755     LD BC,1
210D   CB7E       5756     BIT 7,(HL)
210F   200B       5757     JR NZ,M211C
2111   3A3B5C     5758     LD A,(FLAGS)   ;Bit 1= Printer ein
2114   E640       5759     AND 40H
2116   2002       5760     JR NZ,M211A
2118   0E03       5761     LD C,3
211A   B6         5762  M211A:   OR (HL)
211B   77         5763     LD (HL),A
211C   F7         5764  M211C:   RST REST30
211D   360D       5765     LD (HL),0DH
211F   79         5766     LD A,C
2120   0F         5767     RRCA
2121   0F         5768     RRCA
2122   3005       5769     JR NC,M2129
2124   3E22       5770     LD A,'"'
2126   12         5771     LD (DE),A
2127   2B         5772     DEC HL
2128   77         5773     LD (HL),A
2129   225B5C     5774  M2129:   LD (KCUR),HL   ;Kursoradresse
212C   FDCB377E   5775     BIT 7,(IY+37H)
2130   202C       5776     JR NZ,M215E
2132   2A5D5C     5777     LD HL,(CHADD)  ;Adr. des naechsten zu interpret. Zeichens
2135   E5         5778     PUSH HL
2136   2A3D5C     5779     LD HL,(ERRSP)  ;Errorstackpointer
2139   E5         5780     PUSH HL
213A   213A21     5781     LD HL,$
213D   E5         5782     PUSH HL
213E   FDCB3066   5783     BIT 4,(IY+30H)
2142   2804       5784     JR Z,M2148
2144   ED733D5C   5785     LD (ERRSP),SP  ;Errorstackpointer
2148   2A615C     5786  M2148:   LD HL,(WORKSP) ;derzeitiger Workspace
214B   CDA711     5787     CALL HOLFLO
214E   FD3600FF   5788     LD (IY+0),0FFH
2152   CD2C0F     5789     CALL M0F2C
2155   FDCB01BE   5790     RES 7,(IY+1)
2159   CDB921     5791     CALL M21B9
215C   1803       5792     JR M2161
                  5793  
215E   CD2C0F     5794  M215E:   CALL 0F2CH
2161   FD362200   5795  M2161:   LD (IY+22H),0
2165   CDD621     5796     CALL M21D6
2168   200A       5797     JR NZ,M2174
216A   CD1D11     5798     CALL M111D
216D   ED4B825C   5799     LD BC,(ECHOE)  ;Position fuer Input
2171   CDD90D     5800     CALL M0DD9
                              SP                                PAGE 101
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2174   21715C     5801  M2174 LD HL,FLAGX ;Flag Teil 3
2177   CBAE       5802     RES 5,(HL)
2179   CB7E       5803     BIT 7,(HL)
217B   CBBE       5804     RES 7,(HL)
217D   201C       5805     JR NZ,M219B
217F   E1         5806     POP HL
2180   E1         5807     POP HL
2181   223D5C     5808     LD (ERRSP),HL  ;Errorstackpointer
2184   E1         5809     POP HL
2185   225F5C     5810     LD (XPTR),HL   ;Adresse des Zeichens nach ? bei Error
2188   FDCB01FE   5811     SET 7,(IY+1)
218C   CDB921     5812     CALL M21B9
218F   2A5F5C     5813     LD HL,(XPTR)   ;Adresse des Zeichens nach ? bei Error
2192   FD362600   5814     LD (IY+26H),0
2196   225D5C     5815     LD (CHADD),HL  ;Adr. des naechsten zu interpret. Zeichens
2199   1817       5816     JR M21B2
                  5817  
219B   2A635C     5818  M219B:   LD HL,(STKBOT) ;Anfang des Calculatorstacks
219E   ED5B615C   5819     LD DE,(WORKSP) ;derzeitiger Workspace
21A2   37         5820     SCF
21A3   ED52       5821     SBC HL,DE
21A5   44         5822     LD B,H
21A6   4D         5823     LD C,L
21A7   CDB22A     5824     CALL M2AB2
21AA   CDFF2A     5825     CALL M2AFF
21AD   1803       5826     JR M21B2
                  5827  
21AF   CDFC1F     5828  M21AF:   CALL M1FFC
21B2   CD4E20     5829  M21B2:   CALL M204E
21B5   CAC120     5830     JP Z,M20C1
21B8   C9         5831     RET
                  5832  
                  5833  ;Subroutine fuer INPUT-Zuweisung
                  5834  ;erster Aufruf mit Syntaxflag gesetzt und zweiter
                  5835  ;mit Syntaxflag zurueckgesetzt (Programmlauf)
                  5836  
21B9   2A615C     5837  M21B9:   LD HL,(WORKSP) ;derzeitiger Workspace
21BC   225D5C     5838     LD (CHADD),HL  ;Adr. des naechsten zu interpret. Zeichens
21BF   DF         5839     RST GETAKT
21C0   FEE2       5840     CP 0E2H
21C2   280C       5841     JR Z,M21D0
21C4   3A715C     5842     LD A,(FLAGX)   ;Flag Teil 3
21C7   CD591C     5843     CALL M1C59
21CA   DF         5844     RST GETAKT
21CB   FE0D       5845     CP 0DH
21CD   C8         5846     RET Z
                  5847  
21CE   CF         5848     RST ERRAUS
21CF   0B         5849     DEFB 0BH
                  5850  
21D0   CD3025     5851  M21D0:   CALL M2530
21D3   C8         5852     RET Z
                  5853  
                  5854  ;erstes Zeichen des INPUT war STOP
                  5855  
21D4   CF         5856     RST ERRAUS
21D5   10         5857     DEFB 10H
                  5858  
                              SP                                PAGE 102
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  5859  ;Subroutine zum Pruefen, ob Kanal K im INPUT benutzt
                  5860  ;wird. Falls ja, dann ZERO = 1
                  5861  
21D6   2A515C     5862  M21D6:   LD HL, (CURCHL)
21D9   23         5863     INC HL
21DA   23         5864     INC HL
21DB   23         5865     INC HL
21DC   23         5866     INC HL
21DD   7E         5867     LD A,(HL)
21DE   FE4B       5868     CP 'K'
21E0   C9         5869     RET
                  5870  
                  5871  ;Unterprogramme zur Behandlung von Farbanweisungen
                  5872  
21E1   E7         5873  M21E1:   RST GETNXT
                  5874  
                  5875  ;normaler Einstieg
                  5876  
21E2   CDF221     5877  FAREIN:  CALL FARBUN
21E5   D8         5878     RET C
21E6   DF         5879     RST GETAKT
21E7   FE2C       5880     CP ','
21E9   28F6       5881     JR Z,M21E1
21EB   FE3B       5882     CP ';'
21ED   28F2       5883     JR Z,M21E1
21EF   C38A1C     5884     JP M1C8A
                  5885  
21F2   FED9       5886  FARBUN:  CP 0D9H
21F4   D8         5887     RET C
21F5   FEDF       5888     CP 0DFH
21F7   3F         5889     CCF
21F8   D8         5890     RET C
                  5891  
21F9   F5         5892     PUSH AF
21FA   E7         5893     RST GETNXT
21FB   F1         5894     POP AF
21FC   D6C9       5895  M21FC:   SUB 0C9H
21FE   F5         5896     PUSH AF
21FF   CD821C     5897     CALL PAR06
2202   F1         5898     POP AF
2203   A7         5899     AND A
2204   CDC31F     5900     CALL M1FC3
2207   F5         5901     PUSH AF
2208   CD941E     5902     CALL INTEG1
220B   57         5903     LD D,A
220C   F1         5904     POP AF
220D   D7         5905     RST PRTOUT
220E   7A         5906     LD A,D
220F   D7         5907     RST PRTOUT
2210   C9         5908     RET
                  5909  
                  5910  ;Die folgenden Unterprogramme werden von der PRINT-Routine
                  5911  ;aufgerufen. Dabei werden die Systemvariablen ATTRT, MASKT
                  5912  ;und PFLAG entsprechend den Anweisungen geaendert (nur die
                  5913  ;Temporaeren). REG A enthaelt das Steuerzeichen und REG D
                  5914  ;den Parameter
                  5915  
2211   D611       5916  M2211:   SUB 11H
                              SP                                PAGE 103
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2213   CE00       5917     ADC A,0
2215   281D       5918     JR Z,M2234
                  5919  
2217   D602       5920     SUB 2
2219   CE00       5921     ADC A,0
221B   2856       5922     JR Z,M2273
                  5923  
221D   FE01       5924     CP 1
221F   7A         5925     LD A,D
2220   0601       5926     LD B,1
2222   2004       5927     JR NZ,M2228
                  5928  
2224   07         5929     RLCA
2225   07         5930     RLCA
2226   0604       5931     LD B,4
2228   4F         5932  M2228:   LD C,A
2229   7A         5933     LD A,D
222A   FE02       5934     CP 2
222C   3016       5935     JR NC,M2244
222E   79         5936     LD A,C
222F   21915C     5937     LD HL,PFLAG ;Printerflag
2232   1838       5938     JR M226C
                  5939  
                  5940  ;Behandlung von INK und PAPER
                  5941  
2234   7A         5942  M2234:   LD A,D
2235   0607       5943     LD B,7
2237   3805       5944     JR C,M223E
2239   07         5945     RLCA
223A   07         5946     RLCA
223B   07         5947     RLCA
223C   0638       5948     LD B,38H
223E   4F         5949  M223E:   LD C,A
223F   7A         5950     LD A,D
2240   FE0A       5951     CP 0AH
2242   3802       5952     JR C,M2246
                  5953  
2244   CF         5954  M2244:   RST ERRAUS
2245   13         5955     DEFB 13H
                  5956  
2246   218F5C     5957  M2246:   LD HL,ATTRT ;aktuelle Farben temporaer
2249   FE08       5958     CP 8
224B   380B       5959     JR C,M2258
224D   7E         5960     LD A,(HL)
224E   2807       5961     JR Z,M2257
2250   B0         5962     OR B
2251   2F         5963     CPL
2252   E624       5964     AND 24H
2254   2801       5965     JR Z,M2257
2256   78         5966     LD A,B
2257   4F         5967  M2257:   LD C,A
2258   79         5968  M2258:   LD A,C
2259   CD6C22     5969     CALL M226C
                  5970  
                  5971  ;jetzt wird MASKT bearbeitet
                  5972  
225C   3E07       5973     LD A,7
225E   BA         5974     CP D
                              SP                                PAGE 104
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

225F   9F         5975     SBC A,A
2260   CD6C22     5976     CALL M226C
                  5977  
                  5978  ;zuletzt noch PFLAG bearbeiten
                  5979  
2263   07         5980     RLCA
2264   07         5981     RLCA
2265   E650       5982     AND 50H
2267   47         5983     LD B,A
2268   3E08       5984     LD A,8
226A   BA         5985     CP D
226B   9F         5986     SBC A,A
                  5987  
                  5988  ;Subroutine zum Setzen der Farbdetails. REG HL enthaelt
                  5989  ;die Adresse, REG B die Maske und REG A den neuen Wert.
                  5990  
226C   AE         5991  M226C:   XOR (HL)
226D   A0         5992     AND B
226E   AE         5993     XOR (HL)
226F   77         5994     LD (HL),A
2270   23         5995     INC HL
2271   78         5996     LD A,B
2272   C9         5997     RET
                  5998  
                  5999  ;Behandlung von FLASH und BRIGHT
                  6000  
2273   9F         6001  M2273:   SBC A,A
2274   7A         6002     LD A,D
2275   0F         6003     RRCA
2276   0680       6004     LD B,80H
2278   2003       6005     JR NZ,M227D
227A   0F         6006     RRCA
227B   0640       6007     LD B,40H
227D   4F         6008  M227D:   LD C,A
227E   7A         6009     LD A,D
227F   FE08       6010     CP 8
2281   2804       6011     JR Z,M2287
2283   FE02       6012     CP 2
2285   30BD       6013     JR NC,M2244
                  6014  
2287   79         6015  M2287:   LD A,C
2288   218F5C     6016     LD HL,ATTRT ;aktuelle Farben temporaer
228B   CD6C22     6017     CALL M226C
228E   79         6018     LD A,C
228F   0F         6019     RRCA
2290   0F         6020     RRCA
2291   0F         6021     RRCA
2292   18D8       6022     JR M226C
                  6023  
                  6024  ;Befehl BORDER
                  6025  ;Der Parameter von BORDER wird ueber einen 'OUT'-Befehl
                  6026  ;ausgegeben. Anschliessend wird der Parameter in BORDCR
                  6027  ;gespeichert.
                  6028  
2294   CD941E     6029  M2294:   CALL INTEG1
2297   FE08       6030     CP 8
2299   30A9       6031     JR NC,M2244
229B   D3FE       6032     OUT (0FEH),A
                              SP                                PAGE 105
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

229D   07         6033     RLCA
229E   07         6034     RLCA
229F   07         6035     RLCA
22A0   CB6F       6036     BIT 5,A
22A2   2002       6037     JR NZ,M22A6
22A4   EE07       6038     XOR 7
22A6   32485C     6039  M22A6:   LD (BORDCR),A  ;Bordercolor * 8
22A9   C9         6040     RET
                  6041  
                  6042  ;Subroutine zum Berechnen einer 'PIXEL'-Adresse
                  6043  ;auf dem Bildschirm
                  6044  ;Aufruf von POINT und PLOT mit Adresse des Punktes in
                  6045  ;BC. Bei RETURN enthaelt HL die Adresse des Bytes im ent-
                  6046  ;sprechenden Bildschirmbereich und A die Bitposition des
                  6047  ;Punktes in diesem Byte
                  6048  
22AA   3EAF       6049  PKTADR:  LD A,0AFH
22AC   90         6050     SUB B
22AD   DAF924     6051     JP C,M24F9
22B0   47         6052     LD B,A
22B1   A7         6053     AND A
22B2   1F         6054     RRA
22B3   37         6055     SCF
22B4   1F         6056     RRA
22B5   A7         6057     AND A
22B6   1F         6058     RRA
22B7   A8         6059     XOR B
22B8   E6F8       6060     AND 0F8H
22BA   A8         6061     XOR B
22BB   67         6062     LD H,A
22BC   79         6063     LD A,C
22BD   07         6064     RLCA
22BE   07         6065     RLCA
22BF   07         6066     RLCA
22C0   A8         6067     XOR B
22C1   E6C7       6068     AND 0C7H
22C3   A8         6069     XOR B
22C4   07         6070     RLCA
22C5   07         6071     RLCA
22C6   6F         6072     LD L,A
22C7   79         6073     LD A,C
22C8   E607       6074     AND 7
22CA   C9         6075     RET
                  6076  
                  6077  ;Subroutine fuer die POINT-Funktion
                  6078  
22CB   CD0723     6079  M22CB:   CALL M2307
22CE   CDAA22     6080     CALL PKTADR
22D1   47         6081     LD B,A
22D2   04         6082     INC B
22D3   7E         6083     LD A,(HL)
22D4   07         6084  M22D4:   RLCA
22D5   10FD       6085     DJNZ M22D4
22D7   E601       6086     AND 1
22D9   C3282D     6087     JP M2D28
                  6088  
                  6089  ;Befehl PLOT
                  6090  ;Beim Einstieg liegen die Koordinaten auf dem Calc.-Stack.
                              SP                                PAGE 106
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  6091  ;Unter Beruecksichtigung von 'INVERSE' und 'OVER' (in
                  6092  ;PFLAG) wird der Punkt entsprechend gesetzt
                  6093  
22DC   CD0723     6094  PLOTHA:  CALL M2307
22DF   CDE522     6095     CALL PLOTTE
22E2   C34D0D     6096     JP AKTCOL
                  6097  
22E5   ED437D5C   6098  PLOTTE:  LD (COORDS),BC ;Koordinaten des letzten Plot
22E9   CDAA22     6099     CALL PKTADR
22EC   47         6100     LD B,A
22ED   04         6101     INC B
22EE   3EFE       6102     LD A,0FEH
22F0   0F         6103  M22F0:   RRCA
22F1   10FD       6104     DJNZ M22F0
22F3   47         6105     LD B,A
22F4   7E         6106     LD A,(HL)
22F5   FD4E57     6107     LD C,(IY+57H)
22F8   CB41       6108     BIT 0,C
22FA   2001       6109     JR NZ,M22FD
22FC   A0         6110     AND B
22FD   CB51       6111  M22FD:   BIT 2,C
22FF   2002       6112     JR NZ,M2303
2301   A8         6113     XOR B
2302   2F         6114     CPL
2303   77         6115  M2303:   LD (HL),A
2304   C3DB0B     6116     JP M0BDB
                  6117  
                  6118  ;Subroutine, um BC mit den letzten zwei Werten, im
                  6119  ;Bereich jeweils von 0-FFH, des Calc.-Stacks zu
                  6120  ;laden. D und E enthalten jeweils +/- 1 fuer die
                  6121  ;Zeichenrichtung.
                  6122  
2307   CD1423     6123  M2307:   CALL STAINA
230A   47         6124     LD B,A
230B   C5         6125     PUSH BC
230C   CD1423     6126     CALL STAINA
230F   59         6127     LD E,C
2310   C1         6128     POP BC
2311   51         6129     LD D,C
2312   4F         6130     LD C,A
2313   C9         6131     RET
                  6132  
                  6133  ;Letzte Floatingpoint-Zahl vom Calc.-Stack nach A
                  6134  ;laden, Bereich 0-FFH. C enthaelt +1 fuer positive
                  6135  ;-1 fuer negative Werte
                  6136  
2314   CDD52D     6137  STAINA:  CALL M2DD5
2317   DAF924     6138     JP C,M24F9
231A   0E01       6139     LD C,1
231C   C8         6140     RET Z
231D   0EFF       6141     LD C,0FFH
231F   C9         6142     RET
                  6143  
                  6144  ;Befehl CIRCLE
                  6145  ;Es wird ein angenaeherter Kreis mit Radius 'R' um die
                  6146  ;Koordinate X,Y (=Mitte) gezeichnet. Alle drei Werte
                  6147  ;werden zuerst gerundet.
                  6148  
                              SP                                PAGE 107
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2320   DF         6149  KREIS:   RST GETAKT
2321   FE2C       6150     CP ','
2323   C28A1C     6151     JP NZ,M1C8A
2326   E7         6152     RST GETNXT
2327   CD821C     6153     CALL PAR06
232A   CDEE1B     6154     CALL M1BEE
232D   EF         6155     RST CALRUF
232E   2A         6156     DEFB 2AH
232F   3D         6157     DEFB 3DH
2330   38         6158     DEFB 38H
                  6159  
2331   7E         6160     LD A,(HL)
2332   FE81       6161     CP 81H
2334   3005       6162     JR NC,M233B
2336   EF         6163     RST CALRUF
2337   02         6164     DEFB 2
2338   38         6165     DEFB 38H
2339   18A1       6166     JR PLOTHA
                  6167  
233B   EF         6168  M233B:   RST CALRUF
233C   A3         6169     DEFB 0A3H
233D   38         6170     DEFB 38H
                  6171  
233E   3683       6172     LD (HL),83H
2340   EF         6173     RST CALRUF
2341   C5         6174     DEFB 0C5H
2342   02         6175     DEFB 2
2343   38         6176     DEFB 38H
                  6177  
2344   CD7D24     6178     CALL M247D
                  6179  
                  6180  ;Der Kreis wird auf Geradenstuecken zurueckgefuehrt,
                  6181  ;die mit der 'DRAW'-Subroutine gezeichnet werden. Die
                  6182  ;Anzahl der Geradenstuecken ist A und in BC enthalten.
                  6183  
2347   C5         6184     PUSH BC
2348   EF         6185     RST CALRUF
2349   31         6186     DEFB 31H
234A   E1         6187     DEFB 0E1H
234B   04         6188     DEFB 4
234C   38         6189     DEFB 38H
                  6190  
234D   7E         6191     LD A,(HL)
234E   FE80       6192     CP 80H
2350   3008       6193     JR NC,M235A
2352   EF         6194     RST CALRUF
2353   02         6195     DEFB 2
2354   02         6196     DEFB 2
2355   38         6197     DEFB 38H
2356   C1         6198     POP BC
2357   C3DC22     6199     JP PLOTHA
                  6200  
235A   EF         6201  M235A:   RST CALRUF
235B   C2         6202     DEFB 0C2H
235C   01         6203     DEFB 1
235D   C0         6204     DEFB 0C0H
235E   02         6205     DEFB 2
235F   03         6206     DEFB 3
                              SP                                PAGE 108
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2360   01         6207     DEFB 1
2361   E0         6208     DEFB 0E0H
2362   0F         6209     DEFB 0FH
2363   C0         6210     DEFB 0C0H
2364   01         6211     DEFB 1
2365   31         6212     DEFB 31H
2366   E0         6213     DEFB 0E0H
2367   01         6214     DEFB 1
2368   31         6215     DEFB 31H
2369   E0         6216     DEFB 0E0H
236A   A0         6217     DEFB 0A0H
236B   C1         6218     DEFB 0C1H
236C   02         6219     DEFB 2
236D   38         6220     DEFB 38H
                  6221  
236E   FD3462     6222     INC (IY+62H)
2371   CD941E     6223     CALL INTEG1
2374   6F         6224     LD L,A
2375   E5         6225     PUSH HL
2376   CD941E     6226     CALL INTEG1
2379   E1         6227     POP HL
237A   67         6228     LD H,A
237B   227D5C     6229     LD (COORDS),HL ;Koordinaten des letzten Plot
237E   C1         6230     POP BC
237F   C32024     6231     JP M2420
                  6232  
                  6233  ;Befehl DRAW
                  6234  ;Die Startkoordinaten (X0,Y0) einer Geraden sind in
                  6235  ;COORDS enthalten. Wenn ausser den Endpunkten X und Y
                  6236  ;keine weiteren Parameter angegeben sind, wird eine
                  6237  ;Gerade von X0,Y0 nach X+X0,Y+Y0 gezeichnet.
                  6238  
2382   DF         6239  M2382:   RST GETAKT
2383   FE2C       6240     CP ','
2385   2806       6241     JR Z,M238D
2387   CDEE1B     6242     CALL M1BEE
238A   C37724     6243     JP M2477
                  6244  
238D   E7         6245  M238D:   RST GETNXT
238E   CD821C     6246     CALL PAR06
2391   CDEE1B     6247     CALL M1BEE
2394   EF         6248     RST CALRUF
2395   C5         6249     DEFB 0C5H
2396   A2         6250     DEFB 0A2H
2397   04         6251     DEFB 4
2398   1F         6252     DEFB 1FH
2399   31         6253     DEFB 31H
239A   30         6254     DEFB 30H
239B   30         6255     DEFB 30H
239C   00         6256     DEFB 0
239D   06         6257     DEFB ZEIWIN-$
239E   02         6258     DEFB 2
239F   38         6259     DEFB 38H
23A0   C37724     6260     JP M2477
                  6261  
23A3   C0         6262  ZEIWIN:  DEFB 0C0H
23A4   02         6263     DEFB 2
23A5   C1         6264     DEFB 0C1H
                              SP                                PAGE 109
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

23A6   02         6265     DEFB 2
23A7   31         6266     DEFB 31H
23A8   2A         6267     DEFB 2AH
23A9   E1         6268     DEFB 0E1H
23AA   01         6269     DEFB 1
23AB   E1         6270     DEFB 0E1H
23AC   2A         6271     DEFB 2AH
23AD   0F         6272     DEFB 0FH
23AE   E0         6273     DEFB 0E0H
23AF   05         6274     DEFB 5
23B0   2A         6275     DEFB 2AH
23B1   E0         6276     DEFB 0E0H
23B2   01         6277     DEFB 1
23B3   3D         6278     DEFB 3DH
23B4   38         6279     DEFB 38H
                  6280  
23B5   7E         6281     LD A,(HL)
23B6   FE81       6282     CP 81H
23B8   3007       6283     JR NC,M23C1
23BA   EF         6284     RST CALRUF
23BB   02         6285     DEFB 2
23BC   02         6286     DEFB 2
23BD   38         6287     DEFB 38H
23BE   C37724     6288     JP M2477
                  6289  
23C1   CD7D24     6290  M23C1:   CALL M247D
23C4   C5         6291     PUSH BC
23C5   EF         6292     RST CALRUF
23C6   02         6293     DEFB 2
23C7   E1         6294     DEFB 0E1H
23C8   01         6295     DEFB 1
23C9   05         6296     DEFB 5
23CA   C1         6297     DEFB 0C1H
23CB   02         6298     DEFB 2
23CC   01         6299     DEFB 1
23CD   31         6300     DEFB 31H
23CE   E1         6301     DEFB 0E1H
23CF   04         6302     DEFB 4
23D0   C2         6303     DEFB 0C2H
23D1   02         6304     DEFB 2
23D2   01         6305     DEFB 1
23D3   31         6306     DEFB 31H
23D4   E1         6307     DEFB 0E1H
23D5   04         6308     DEFB 4
23D6   E2         6309     DEFB 0E2H
23D7   E5         6310     DEFB 0E5H
23D8   E0         6311     DEFB 0E0H
23D9   03         6312     DEFB 3
23DA   A2         6313     DEFB 0A2H
23DB   04         6314     DEFB 4
23DC   31         6315     DEFB 31H
23DD   1F         6316     DEFB 1FH
23DE   C5         6317     DEFB 0C5H
23DF   02         6318     DEFB 2
23E0   20         6319     DEFB 20H
23E1   C0         6320     DEFB 0C0H
23E2   02         6321     DEFB 2
23E3   C2         6322     DEFB 0C2H
                              SP                                PAGE 110
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

23E4   02         6323     DEFB 2
23E5   C1         6324     DEFB 0C1H
23E6   E5         6325     DEFB 0E5H
23E7   04         6326     DEFB 4
23E8   E0         6327     DEFB 0E0H
23E9   E2         6328     DEFB 0E2H
23EA   04         6329     DEFB 4
23EB   0F         6330     DEFB 0FH
23EC   E1         6331     DEFB 0E1H
23ED   01         6332     DEFB 1
23EE   C1         6333     DEFB 0C1H
23EF   02         6334     DEFB 2
23F0   E0         6335     DEFB 0E0H
23F1   04         6336     DEFB 4
23F2   E2         6337     DEFB 0E2H
23F3   E5         6338     DEFB 0E5H
23F4   04         6339     DEFB 4
23F5   03         6340     DEFB 3
23F6   C2         6341     DEFB 0C2H
23F7   2A         6342     DEFB 2AH
23F8   E1         6343     DEFB 0E1H
23F9   2A         6344     DEFB 2AH
23FA   0F         6345     DEFB 0FH
23FB   02         6346     DEFB 2
23FC   38         6347     DEFB 38H
                  6348  
23FD   1A         6349     LD A,(DE)
23FE   FE81       6350     CP 81H
2400   C1         6351     POP BC
2401   DA7724     6352     JP C,M2477
2404   C5         6353     PUSH BC
2405   EF         6354     RST CALRUF
2406   01         6355     DEFB 1
2407   38         6356     DEFB 38H
                  6357  
2408   3A7D5C     6358     LD A,(COORDS)
240B   CD282D     6359     CALL M2D28
240E   EF         6360     RST CALRUF
240F   C0         6361     DEFB 0C0H
2410   0F         6362     DEFB 0FH
2411   01         6363     DEFB 1
2412   38         6364     DEFB 38H
                  6365  
2413   3A7E5C     6366     LD A,(COORDS+1)
2416   CD282D     6367     CALL M2D28
2419   EF         6368     RST CALRUF
241A   C5         6369     DEFB 0C5H
241B   0F         6370     DEFB 0FH
241C   E0         6371     DEFB 0E0H
241D   E5         6372     DEFB 0E5H
241E   38         6373     DEFB 38H
241F   C1         6374     POP BC
                  6375  
                  6376  ;Im folgenden werden die Geradenteile gezeichnet.
                  6377  ;Auf dem Calc.-Stack liegen die Werte:
                  6378  ;X0+X,Y0+Y,Xn,Yn
                  6379  ;als Zwischenwerte werden benutzt:
                  6380  ;Un=Xn+1-Xn, Vn=Yn+1-Yn
                              SP                                PAGE 111
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  6381  
2420   05         6382  M2420:   DEC B
2421   283C       6383     JR Z,M245F
2423   1814       6384     JR M2439
                  6385  
2425   EF         6386  GERADS:  RST CALRUF
2426   E1         6387     DEFB 0E1H
2427   31         6388     DEFB 31H
2428   E3         6389     DEFB 0E3H
2429   04         6390     DEFB 4
242A   E2         6391     DEFB 0E2H
242B   E4         6392     DEFB 0E4H
242C   04         6393     DEFB 4
242D   03         6394     DEFB 3
242E   C1         6395     DEFB 0C1H
242F   02         6396     DEFB 2
2430   E4         6397     DEFB 0E4H
2431   04         6398     DEFB 4
2432   E2         6399     DEFB 0E2H
2433   E3         6400     DEFB 0E3H
2434   04         6401     DEFB 4
2435   0F         6402     DEFB 0FH
2436   C2         6403     DEFB 0C2H
2437   02         6404     DEFB 2
2438   38         6405     DEFB 38H
                  6406  
2439   C5         6407  M2439:   PUSH BC
243A   EF         6408     RST CALRUF
243B   C0         6409     DEFB 0C0H
243C   02         6410     DEFB 2
243D   E1         6411     DEFB 0E1H
243E   0F         6412     DEFB 0FH
243F   31         6413     DEFB 31H
2440   38         6414     DEFB 38H
                  6415  
2441   3A7D5C     6416     LD A,(COORDS)
2444   CD282D     6417     CALL M2D28
2447   EF         6418     RST CALRUF
2448   03         6419     DEFB 3
2449   E0         6420     DEFB 0E0H
244A   E2         6421     DEFB 0E2H
244B   0F         6422     DEFB 0FH
244C   C0         6423     DEFB 0C0H
244D   01         6424     DEFB 1
244E   E0         6425     DEFB 0E0H
244F   38         6426     DEFB 38H
                  6427  
2450   3A7E5C     6428     LD A,(COORDS+1)
2453   CD282D     6429     CALL M2D28
2456   EF         6430     RST CALRUF
2457   03         6431     DEFB 3
2458   38         6432     DEFB 38H
                  6433  
2459   CDB724     6434     CALL M24B7
245C   C1         6435     POP BC
245D   10C6       6436     DJNZ GERADS
                  6437  
245F   EF         6438  M245F:   RST CALRUF
                              SP                                PAGE 112
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2460   02         6439     DEFB 2
2461   02         6440     DEFB 2
2462   01         6441     DEFB 1
2463   38         6442     DEFB 38H
                  6443  
2464   3A7D5C     6444     LD A,(COORDS)
2467   CD282D     6445     CALL M2D28
246A   EF         6446     RST CALRUF
246B   03         6447     DEFB 3
246C   01         6448     DEFB 1
246D   38         6449     DEFB 38H
                  6450  
246E   3A7E5C     6451     LD A,(COORDS+1)
2471   CD282D     6452     CALL M2D28
2474   EF         6453     RST CALRUF
2475   03         6454     DEFB 3
2476   38         6455     DEFB 38H
                  6456  
2477   CDB724     6457  M2477:   CALL M24B7
247A   C34D0D     6458     JP AKTCOL
                  6459  
                  6460  ;Subroutine zum Berechnen der Anfangsparameter.
                  6461  ;Beim Aufruf durch die Subroutine zum Zeichnen
                  6462  ;des Kreises liegen X,Y,R (Radius, hier=Z) und
                  6463  ;bei Aufruf durch 'DRAW' X,Y,SIN(G/2),Z auf dem
                  6464  ;Calc.-Stack. Die Rechnungen werden nur ab Z
                  6465  ;aufgefuehrt.
                  6466  
247D   EF         6467  M247D:   RST CALRUF
247E   31         6468     DEFB 31H
247F   28         6469     DEFB 28H
2480   34         6470     DEFB 34H
2481   32         6471     DEFB 32H
2482   00         6472     DEFB 0
2483   01         6473     DEFB 1
2484   05         6474     DEFB 5
2485   E5         6475     DEFB 0E5H
2486   01         6476     DEFB 1
2487   05         6477     DEFB 5
2488   2A         6478     DEFB 2AH
2489   38         6479     DEFB 38H
                  6480  
248A   CDD52D     6481     CALL M2DD5
248D   3806       6482     JR C,M2495
248F   E6FC       6483     AND 0FCH
2491   C604       6484     ADD A,4
2493   3002       6485     JR NC,M2497
2495   3EFC       6486  M2495:   LD A,0FCH
2497   F5         6487  M2497:   PUSH AF
2498   CD282D     6488     CALL M2D28
249B   EF         6489     RST CALRUF
249C   E5         6490     DEFB 0E5H
249D   01         6491     DEFB 1
249E   05         6492     DEFB 5
249F   31         6493     DEFB 31H
24A0   1F         6494     DEFB 1FH
24A1   C4         6495     DEFB 0C4H
24A2   02         6496     DEFB 2
                              SP                                PAGE 113
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

24A3   31         6497     DEFB 31H
24A4   A2         6498     DEFB 0A2H
24A5   04         6499     DEFB 4
24A6   1F         6500     DEFB 1FH
24A7   C1         6501     DEFB 0C1H
24A8   01         6502     DEFB 1
24A9   C0         6503     DEFB 0C0H
24AA   02         6504     DEFB 2
24AB   31         6505     DEFB 31H
24AC   04         6506     DEFB 4
24AD   31         6507     DEFB 31H
24AE   0F         6508     DEFB 0FH
24AF   A1         6509     DEFB 0A1H
24B0   03         6510     DEFB 3
24B1   1B         6511     DEFB 1BH
24B2   C3         6512     DEFB 0C3H
24B3   02         6513     DEFB 2
24B4   38         6514     DEFB 38H
                  6515  
24B5   C1         6516     POP BC
24B6   C9         6517     RET
                  6518  
                  6519  ;Subroutine zum Zeichnen von Geraden
                  6520  
24B7   CD0723     6521  M24B7:   CALL M2307
24BA   79         6522     LD A,C
24BB   B8         6523     CP B
24BC   3006       6524     JR NC,M24C4
24BE   69         6525     LD L,C
24BF   D5         6526     PUSH DE
24C0   AF         6527     XOR A
24C1   5F         6528     LD E,A
24C2   1807       6529     JR M24CB
                  6530  
24C4   B1         6531  M24C4:   OR C
24C5   C8         6532     RET Z
24C6   68         6533     LD L,B
24C7   41         6534     LD B,C
24C8   D5         6535     PUSH DE
24C9   1600       6536     LD D,0
24CB   60         6537  M24CB:   LD H,B
24CC   78         6538     LD A,B
24CD   1F         6539     RRA
24CE   85         6540  M24CE:   ADD A,L
24CF   3803       6541     JR C,M24D4
24D1   BC         6542     CP H
24D2   3807       6543     JR C,M24DB
24D4   94         6544  M24D4:   SUB H
24D5   4F         6545     LD C,A
24D6   D9         6546     EXX
24D7   C1         6547     POP BC
24D8   C5         6548     PUSH BC
24D9   1804       6549     JR M24DF
                  6550  
24DB   4F         6551  M24DB:   LD C,A
24DC   D5         6552     PUSH DE
24DD   D9         6553     EXX
24DE   C1         6554     POP BC
                              SP                                PAGE 114
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

24DF   2A7D5C     6555  M24DF:   LD HL,(COORDS) ;Koordinaten des letzten Plot
24E2   78         6556     LD A,B
24E3   84         6557     ADD A,H
24E4   47         6558     LD B,A
24E5   79         6559     LD A,C
24E6   3C         6560     INC A
24E7   85         6561     ADD A,L
24E8   380D       6562     JR C,M24F7
24EA   280D       6563     JR Z,M24F9
24EC   3D         6564  M24EC:   DEC A
24ED   4F         6565     LD C,A
24EE   CDE522     6566     CALL PLOTTE
24F1   D9         6567     EXX
24F2   79         6568     LD A,C
24F3   10D9       6569     DJNZ M24CE
24F5   D1         6570     POP DE
24F6   C9         6571     RET
24F7   28F3       6572  M24F7:   JR Z,M24EC
                  6573  
24F9   CF         6574  M24F9:   RST ERRAUS
24FA   0A         6575     DEFB 0AH
                  6576  
                  6577  ;=================================================
                  6578  
                  6579  ;Unterprogramme zur Auswertung von Ausdruecken.
                  6580  ;Das Ergebnis wird als letzter Wert auf dem Calc.-Stack
                  6581  ;abgelgt (numerisch), bei Strings 5 Bytes mit folgender
                  6582  ;Bedeutung: das Erste ist nicht definiert, das Zweite+
                  6583  ;Dritte sind die Startadresse des String und die letzten
                  6584  ;zwei geben die Laenge an.
                  6585  
24FB   DF         6586  AUSDRU:  RST GETAKT
24FC   0600       6587     LD B,0
24FE   C5         6588     PUSH BC
24FF   4F         6589  M24FF:   LD C,A
2500   219625     6590     LD HL,M2596
2503   CDDC16     6591     CALL SUCHTA
2506   79         6592     LD A,C
2507   D28426     6593     JP NC,M2684
250A   0600       6594     LD B,0
250C   4E         6595     LD C,(HL)
250D   09         6596     ADD HL,BC
250E   E9         6597     JP (HL)
                  6598  
                  6599  ;Subroutine zum Untersuchen auf Anfuehrstriche '"'
                  6600  
250F   CD7400     6601  M250F:   CALL M0074
2512   03         6602     INC BC
2513   FE0D       6603     CP 0DH
2515   CA8A1C     6604     JP Z,M1C8A
2518   FE22       6605     CP '"'
251A   20F3       6606     JR NZ,M250F
251C   CD7400     6607     CALL M0074
251F   FE22       6608     CP '"'
2521   C9         6609     RET
                  6610  
                  6611  ;Subroutine untersucht, ob die benoetigten zwei
                  6612  ;Koordinaten folgen
                              SP                                PAGE 115
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  6613  
2522   E7         6614  M2522:   RST GETNXT
2523   FE28       6615     CP '('
2525   2006       6616     JR NZ,M252D
2527   CD791C     6617     CALL M1C79
252A   DF         6618     RST GETAKT
252B   FE29       6619     CP ')'
252D   C28A1C     6620  M252D:   JP NZ,M1C8A
                  6621  
                  6622  ;Diese Unterroutine ueberprueft, ob eine Syntaxpruefung
                  6623  ;stattfindet oder ein Programm (Zero gesetzt) laeuft.
                  6624  
2530   FDCB017E   6625  M2530:   BIT 7,(IY+1)
2534   C9         6626     RET
                  6627  
                  6628  ;Subroutine zum Suchen des Zeichens an den Koordinaten
                  6629  ;X,Y durch 'SCREEN$'. Normal werden nur die im Zeichen-
                  6630  ;satz-ROM (ab 3D00H) abgelegten Zeichen gefunden: 20H - 7FH
                  6631  
2535   CD0723     6632  M2535:   CALL M2307
2538   2A365C     6633     LD HL,(CHARS)  ;Zeichensatzadresse -256
253B   110001     6634     LD DE,100H
253E   19         6635     ADD HL,DE
253F   79         6636     LD A,C
2540   0F         6637     RRCA
2541   0F         6638     RRCA
2542   0F         6639     RRCA
2543   E6E0       6640     AND 0E0H
2545   A8         6641     XOR B
2546   5F         6642     LD E,A
2547   79         6643     LD A,C
2548   E618       6644     AND 18H
254A   EE40       6645     XOR 40H  ;HIGH-Teil von BILD
254C   57         6646     LD D,A
254D   0660       6647     LD B,60H
254F   C5         6648  M254F:   PUSH BC
2550   D5         6649     PUSH DE
2551   E5         6650     PUSH HL
2552   1A         6651     LD A,(DE)
2553   AE         6652     XOR (HL)
2554   2804       6653     JR Z,M255A
2556   3C         6654     INC A
2557   201A       6655     JR NZ,M2573
2559   3D         6656     DEC A
255A   4F         6657  M255A:   LD C,A
255B   0607       6658     LD B,7
255D   14         6659  M255D:   INC D
255E   23         6660     INC HL
255F   1A         6661     LD A,(DE)
2560   AE         6662     XOR (HL)
2561   A9         6663     XOR C
2562   200F       6664     JR NZ,M2573
2564   10F7       6665     DJNZ M255D
2566   C1         6666     POP BC
2567   C1         6667     POP BC
2568   C1         6668     POP BC
2569   3E80       6669     LD A,80H
256B   90         6670     SUB B
                              SP                                PAGE 116
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

256C   010100     6671     LD BC,1
256F   F7         6672     RST REST30
2570   12         6673     LD (DE),A
2571   180A       6674     JR M257D
                  6675  
2573   E1         6676  M2573:   POP HL
2574   110800     6677     LD DE,8
2577   19         6678     ADD HL,DE
2578   D1         6679     POP DE
2579   C1         6680     POP BC
257A   10D3       6681     DJNZ M254F
257C   48         6682     LD C,B
257D   C3B22A     6683  M257D:   JP M2AB2
                  6684  
                  6685  ;Unterprogramm, um den Wert von ATTR (X,Y) zu bestimmen
                  6686  
2580   CD0723     6687  M2580:   CALL M2307
2583   79         6688     LD A,C
2584   0F         6689     RRCA
2585   0F         6690     RRCA
2586   0F         6691     RRCA
2587   4F         6692     LD C,A
2588   E6E0       6693     AND 0E0H
258A   A8         6694     XOR B
258B   6F         6695     LD L,A
258C   79         6696     LD A,C
258D   E603       6697     AND 3
258F   EE58       6698     XOR 58H
2591   67         6699     LD H,A
2592   7E         6700     LD A,(HL)
2593   C3282D     6701     JP M2D28
                  6702  
                  6703  ;Offsettabelle fuer die Entwicklung von Ausdruecken
                  6704  
2596   22         6705  M2596:   DEFB '"'
2597   1C         6706     DEFB M25B3-$
2598   28         6707     DEFB '('
2599   4F         6708     DEFB M25E8-$
259A   2E         6709     DEFB '.'
259B   F2         6710     DEFB M268D-$
259C   2B         6711     DEFB '+'
259D   12         6712     DEFB M25AF-$
259E   A8         6713     DEFB 0A8H
259F   56         6714     DEFB M25F5-$
25A0   A5         6715     DEFB 0A5H
25A1   57         6716     DEFB M25F8-$
25A2   A7         6717     DEFB 0A7H
25A3   84         6718     DEFB M2627-$
25A4   A6         6719     DEFB 0A6H
25A5   8F         6720     DEFB M2634-$
25A6   C4         6721     DEFB 0C4H
25A7   E6         6722     DEFB M268D-$
25A8   AA         6723     DEFB 0AAH
25A9   BF         6724     DEFB M2668-$
25AA   AB         6725     DEFB 0ABH
25AB   C7         6726     DEFB M2672-$
25AC   A9         6727     DEFB 0A9H
25AD   CE         6728     DEFB M267B-$
                              SP                                PAGE 117
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

25AE   00         6729     DEFB 0
                  6730  
                  6731  ;Es folgen die einzelnen Unterprogramm, die mit Hilfe
                  6732  ;der Offsettabelle aufgerufen werden
                  6733  
                  6734  ;Pluszeichen
                  6735  
25AF   E7         6736  M25AF:   RST GETNXT
25B0   C3FF24     6737     JP M24FF
                  6738  
                  6739  ;Textmodus: Strings, einfache und mehrfache, die mit
                  6740  ;'"' eingeschlossen sind, bearbeiten.
                  6741  
25B3   DF         6742  M25B3:   RST GETAKT
25B4   23         6743     INC HL
25B5   E5         6744     PUSH HL
25B6   010000     6745     LD BC,0
25B9   CD0F25     6746     CALL M250F
25BC   201B       6747     JR NZ,M25D9
25BE   CD0F25     6748  M25BE:   CALL M250F
25C1   28FB       6749     JR Z,M25BE
25C3   CD3025     6750     CALL M2530
25C6   2811       6751     JR Z,M25D9
25C8   F7         6752     RST REST30
25C9   E1         6753     POP HL
25CA   D5         6754     PUSH DE
25CB   7E         6755  M25CB:   LD A,(HL)
25CC   23         6756     INC HL
25CD   12         6757     LD (DE),A
25CE   13         6758     INC DE
25CF   FE22       6759     CP '"'
25D1   20F8       6760     JR NZ,M25CB
25D3   7E         6761     LD A,(HL)
25D4   23         6762     INC HL
25D5   FE22       6763     CP '"'
25D7   28F2       6764     JR Z,M25CB
25D9   0B         6765  M25D9:   DEC BC
25DA   D1         6766     POP DE
25DB   213B5C     6767  M25DB:   LD HL,FLAGS ;Bit 1= Printer ein
25DE   CBB6       6768     RES 6,(HL)
25E0   CB7E       6769     BIT 7,(HL)
25E2   C4B22A     6770     CALL NZ,M2AB2
25E5   C31227     6771     JP M2712
                  6772  
                  6773  ;Einstieg bei Klammer auf
                  6774  
25E8   E7         6775  M25E8:   RST GETNXT
25E9   CDFB24     6776     CALL AUSDRU
25EC   FE29       6777     CP ')'
25EE   C28A1C     6778     JP NZ,M1C8A
25F1   E7         6779     RST GETNXT
25F2   C31227     6780     JP M2712
                  6781  
                  6782  ;Einstieg bei 'FN'
                  6783  
25F5   C3BD27     6784  M25F5:   JP M27BD
                  6785  
                  6786  ;Einstieg bei 'RND'
                              SP                                PAGE 118
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  6787  
25F8   CD3025     6788  M25F8:   CALL M2530
25FB   2828       6789     JR Z,M2625
25FD   ED4B765C   6790     LD BC,(SEED)   ;Zufallszahl setzen durch Randomize
2601   CD2B2D     6791     CALL M2D2B
2604   EF         6792     RST CALRUF
2605   A1         6793     DEFB 0A1H
2606   0F         6794     DEFB 0FH
2607   34         6795     DEFB 34H
2608   37         6796     DEFB 37H
2609   16         6797     DEFB 16H
260A   04         6798     DEFB 4
260B   34         6799     DEFB 34H
260C   80         6800     DEFB 80H
260D   41         6801     DEFB 41H
260E   00         6802     DEFB 0
260F   00         6803     DEFB 0
2610   80         6804     DEFB 80H
2611   32         6805     DEFB 32H
2612   02         6806     DEFB 2
2613   A1         6807     DEFB 0A1H
2614   03         6808     DEFB 3
2615   31         6809     DEFB 31H
2616   38         6810     DEFB 38H
                  6811  
2617   CDA22D     6812     CALL M2DA2
261A   ED43765C   6813     LD (SEED),BC   ;Zufallszahl setzen durch Randomize
261E   7E         6814     LD A,(HL)
261F   A7         6815     AND A
2620   2803       6816     JR Z,M2625
2622   D610       6817     SUB 10H
2624   77         6818     LD (HL),A
2625   1809       6819  M2625:   JR M2630
                  6820  
                  6821  ;die Zahl PI als letzten Wert auf den Calc.-Stack bringen
                  6822  
2627   CD3025     6823  M2627:   CALL M2530
262A   2804       6824     JR Z,M2630
262C   EF         6825     RST CALRUF
262D   A3         6826     DEFB 0A3H
262E   38         6827     DEFB 38H
                  6828  
262F   34         6829     INC (HL)
2630   E7         6830  M2630:   RST GETNXT
2631   C3C326     6831     JP M26C3
                  6832  
                  6833  ;Einsprung bei INKEY$
                  6834  
2634   015A10     6835  M2634:   LD BC,105AH
2637   E7         6836     RST GETNXT
2638   FE23       6837     CP '#'
263A   CA0D27     6838     JP Z,M270D
263D   213B5C     6839     LD HL,FLAGS ;Bit 1= Printer ein
2640   CBB6       6840     RES 6,(HL)
2642   CB7E       6841     BIT 7,(HL)
2644   281F       6842     JR Z,M2665
2646   CD8E02     6843     CALL KEY
2649   0E00       6844     LD C,0
                              SP                                PAGE 119
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

264B   2013       6845     JR NZ,M2660
264D   CD1E03     6846     CALL M031E
2650   300E       6847     JR NC,M2660
2652   15         6848     DEC D
2653   5F         6849     LD E,A
2654   CD3303     6850     CALL M0333
2657   F5         6851     PUSH AF
2658   010100     6852     LD BC,1
265B   F7         6853     RST REST30
265C   F1         6854     POP AF
265D   12         6855     LD (DE),A
265E   0E01       6856     LD C,1
2660   0600       6857  M2660:   LD B,0
2662   CDB22A     6858     CALL M2AB2
2665   C31227     6859  M2665:   JP M2712
                  6860  
                  6861  ;Einstieg bei SCREEN$
                  6862  
2668   CD2225     6863  M2668:   CALL M2522
266B   C43525     6864     CALL NZ,M2535
266E   E7         6865     RST GETNXT
266F   C3DB25     6866     JP M25DB
                  6867  
                  6868  ;Einstieg bei ATTR
                  6869  
2672   CD2225     6870  M2672:   CALL M2522
2675   C48025     6871     CALL NZ,M2580
2678   E7         6872     RST GETNXT
2679   1848       6873     JR M26C3
                  6874  
                  6875  ;Einstieg bei POINT
                  6876  
267B   CD2225     6877  M267B:   CALL M2522
267E   C4CB22     6878     CALL NZ,M22CB
2681   E7         6879     RST GETNXT
2682   183F       6880     JR M26C3
                  6881  
                  6882  ;ein Zeichen auf alphanumerisch Pruefen
                  6883  
2684   CD882C     6884  M2684:   CALL M2C88
2687   3056       6885     JR NC,M26DF
2689   FE41       6886     CP 'A'
268B   303C       6887     JR NC,M26C9
                  6888  
                  6889  ;Routine zum Bearbeiten von Dezimalzahlen (auch 'BIN')
                  6890  
268D   CD3025     6891  M268D:   CALL M2530
2690   2023       6892     JR NZ,M26B5
                  6893  
                  6894  
                  6895  ;Bei der Eingabe einer Zeile (Syntaxpruefung) wird eine
                  6896  ;Zahl in eine Floatingpointzahl umgewandelt und in die
                  6897  ;BASIC-Zeile kopiert
                  6898  
2692   CD9B2C     6899     CALL DEZFLO
2695   DF         6900     RST GETAKT
2696   010600     6901     LD BC,6
2699   CD5516     6902     CALL MACHPL
                              SP                                PAGE 120
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

269C   23         6903     INC HL
269D   360E       6904     LD (HL),0EH
269F   23         6905     INC HL
26A0   EB         6906     EX DE,HL
26A1   2A655C     6907     LD HL,(STKEND) ;Anfang des freien Speichers
26A4   0E05       6908     LD C,5
26A6   A7         6909     AND A
26A7   ED42       6910     SBC HL,BC
26A9   22655C     6911     LD (STKEND),HL ;Anfang des freien Speichers
26AC   EDB0       6912     LDIR
26AE   EB         6913     EX DE,HL
26AF   2B         6914     DEC HL
26B0   CD7700     6915     CALL M0077
26B3   180E       6916     JR M26C3
                  6917  
                  6918  ;der folgende Teil wird im Programmlauf bearbeitet
                  6919  
26B5   DF         6920  M26B5:   RST GETAKT
26B6   23         6921  M26B6:   INC HL
26B7   7E         6922     LD A,(HL)
26B8   FE0E       6923     CP 0EH
26BA   20FA       6924     JR NZ,M26B6
26BC   23         6925     INC HL
26BD   CDB433     6926     CALL M33B4
26C0   225D5C     6927     LD (CHADD),HL  ;Adr. des naechsten zu interpret. Zeichens
26C3   FDCB01F6   6928  M26C3:   SET 6,(IY+1)
26C7   1814       6929     JR M26DD
                  6930  
                  6931  ;Subroutine sucht Variable (numerisch, String) im
                  6932  ;Variablen- oder Programmbereich. Die Variable oder
                  6933  ;die Parameter bei Stringvar. werden in den Calc.-
                  6934  ;Stack gebracht
                  6935  
26C9   CDB228     6936  M26C9:   CALL M28B2
26CC   DA2E1C     6937     JP C,M1C2E
26CF   CC9629     6938     CALL Z,M2996
26D2   3A3B5C     6939     LD A,(FLAGS)   ;Bit 1= Printer ein
26D5   FEC0       6940     CP 0C0H
26D7   3804       6941     JR C,M26DD
26D9   23         6942     INC HL
26DA   CDB433     6943     CALL M33B4
26DD   1833       6944  M26DD:   JR M2712
                  6945  
                  6946  ;Im folgenden werden verschiedene Operatoren geprueft
                  6947  
26DF   01DB09     6948  M26DF:   LD BC,9DBH
26E2   FE2D       6949     CP '-'
26E4   2827       6950     JR Z,M270D
                  6951  
26E6   011810     6952     LD BC,1018H
26E9   FEAE       6953     CP 0AEH
26EB   2820       6954     JR Z,M270D
                  6955  
26ED   D6AF       6956     SUB 0AFH
26EF   DA8A1C     6957     JP C,M1C8A
                  6958  
26F2   01F004     6959     LD BC,4F0H
26F5   FE14       6960     CP 14H
                              SP                                PAGE 121
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

26F7   2814       6961     JR Z,M270D
26F9   D28A1C     6962     JP NC,M1C8A
                  6963  
                  6964  ;Tokens jetzt in Operationskodes wandeln
                  6965  
26FC   0610       6966     LD B,10H
26FE   C6DC       6967     ADD A,0DCH
2700   4F         6968     LD C,A
2701   FEDF       6969     CP 0DFH
2703   3002       6970     JR NC,M2707
2705   CBB1       6971     RES 6,C
2707   FEEE       6972  M2707:   CP 0EEH
2709   3802       6973     JR C,M270D
270B   CBB9       6974     RES 7,C
                  6975  
                  6976  ;Der Prioritaetskode in B und der Operationskode in C
                  6977  ;werden auf dem Stack abgelegt, bevor der naechste Teil
                  6978  ;des Ausdruckes untersucht wird.
                  6979  
270D   C5         6980  M270D:   PUSH BC
270E   E7         6981     RST GETNXT
270F   C3FF24     6982     JP M24FF
                  6983  
                  6984  ;Es wird jetzt der weitere Ausdruck untersucht Klammer,
                  6985  ;Ende etc.
                  6986  
2712   DF         6987  M2712:   RST GETAKT
2713   FE28       6988  M2713:   CP '('
2715   200C       6989     JR NZ,M2723
2717   FDCB0176   6990     BIT 6,(IY+1)
271B   2017       6991     JR NZ,M2734
271D   CD522A     6992     CALL M2A52
2720   E7         6993     RST GETNXT
2721   18F0       6994     JR M2713
                  6995  
                  6996  ;Routine, um fuer die diversen Operatoren (+,*,NOT etc.)
                  6997  ;die Prioritaeten und den Operationskode zu suchen.
                  6998  
2723   0600       6999  M2723:   LD B,0
2725   4F         7000     LD C,A
2726   219527     7001     LD HL,M2795
2729   CDDC16     7002     CALL SUCHTA
272C   3006       7003     JR NC,M2734
272E   4E         7004     LD C,(HL)
272F   21ED26     7005     LD HL,M27B0-0C3H
2732   09         7006     ADD HL,BC
2733   46         7007     LD B,(HL)
2734   D1         7008  M2734:   POP DE
2735   7A         7009     LD A,D
2736   B8         7010     CP B
2737   383A       7011     JR C,M2773
2739   A7         7012     AND A
273A   CA1800     7013     JP Z,GETAKT
273D   C5         7014     PUSH BC
273E   213B5C     7015     LD HL,FLAGS ;Bit 1= Printer ein
2741   7B         7016     LD A,E
2742   FEED       7017     CP 0EDH
2744   2006       7018     JR NZ,M274C
                              SP                                PAGE 122
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2746   CB76       7019     BIT 6,(HL)
2748   2002       7020     JR NZ,M274C
274A   1E99       7021     LD E,99H
274C   D5         7022  M274C:   PUSH DE
274D   CD3025     7023     CALL M2530
2750   2809       7024     JR Z,M275B
2752   7B         7025     LD A,E
2753   E63F       7026     AND 3FH
2755   47         7027     LD B,A
2756   EF         7028     RST CALRUF
2757   3B         7029     DEFB 3BH
2758   38         7030     DEFB 38H
                  7031  
2759   1809       7032     JR M2764
                  7033  
                  7034  ;Die Art der letzten Operation mit der zu
                  7035  ;untersuchenden Vergleichen
                  7036  
275B   7B         7037  M275B:   LD A,E
275C   FDAE01     7038     XOR (IY+1)
275F   E640       7039     AND 40H
2761   C28A1C     7040  M2761:   JP NZ,M1C8A
                  7041  
                  7042  ;Die Art der vorherigen Operation muss noch
                  7043  ;in FLAGS angemerkt werden.
                  7044  
2764   D1         7045  M2764:   POP DE
2765   213B5C     7046     LD HL,FLAGS ;Bit 1= Printer ein
2768   CBF6       7047     SET 6,(HL)
276A   CB7B       7048     BIT 7,E
276C   2002       7049     JR NZ,M2770
276E   CBB6       7050     RES 6,(HL)
2770   C1         7051  M2770:   POP BC
2771   18C1       7052     JR M2734
                  7053  
                  7054  ;Falls die jetzige Prioritaet hoeher als die vorherige ist,
                  7055  ;werden beide Operationen auf dem Stack gespeichert. Wenn
                  7056  ;die jetzige Operation eine Stringbearbeitung bedeutet, muss
                  7057  ;diese noch im Operationkode angemerkt werden.
                  7058  
2773   D5         7059  M2773:   PUSH DE
2774   79         7060     LD A,C
2775   FDCB0176   7061     BIT 6,(IY+1)
2779   2015       7062     JR NZ,M2790
277B   E63F       7063     AND 3FH
277D   C608       7064     ADD A,8
277F   4F         7065     LD C,A
2780   FE10       7066     CP 10H
2782   2004       7067     JR NZ,M2788
2784   CBF1       7068     SET 6,C
2786   1808       7069     JR M2790
                  7070  
2788   38D7       7071  M2788:   JR C,M2761
278A   FE17       7072     CP 17H
278C   2802       7073     JR Z,M2790
278E   CBF9       7074     SET 7,C
2790   C5         7075  M2790:   PUSH BC
2791   E7         7076     RST GETNXT
                              SP                                PAGE 123
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2792   C3FF24     7077     JP M24FF
                  7078  
                  7079  ;Tabelle zum Umsetzen der Operatoren in Operationskodes
                  7080  
2795   2B         7081  M2795:   DEFB '+'
2796   CF         7082     DEFB 0CFH
2797   2D         7083     DEFB '-'
2798   C3         7084     DEFB 0C3H
2799   2A         7085     DEFB '*'
279A   C4         7086     DEFB 0C4H
279B   2F         7087     DEFB '/'
279C   C5         7088     DEFB 0C5H
279D   5E         7089     DEFB '^'
279E   C6         7090     DEFB 0C6H
279F   3D         7091     DEFB '='
27A0   CE         7092     DEFB 0CEH
27A1   3E         7093     DEFB '>'
27A2   CC         7094     DEFB 0CCH
27A3   3C         7095     DEFB '<'
27A4   CD         7096     DEFB 0CDH
27A5   C7         7097     DEFB 0C7H   ;<=
27A6   C9         7098     DEFB 0C9H
27A7   C8         7099     DEFB 0C8H   ;>=
27A8   CA         7100     DEFB 0CAH
27A9   C9         7101     DEFB 0C9H   ;<>
27AA   CB         7102     DEFB 0CBH
27AB   C5         7103     DEFB 0C5H   ;OR
27AC   C7         7104     DEFB 0C7H
27AD   C6         7105     DEFB 0C6H   ;AND
27AE   C8         7106     DEFB 0C8H
27AF   00         7107     DEFB 0
                  7108  
                  7109  ;Tabelle der zugehoerigen Prioritaeten
                  7110  
27B0   06         7111  M27B0:   DEFB 6
27B1   08         7112     DEFB 8
27B2   08         7113     DEFB 8
27B3   0A         7114     DEFB 0AH
27B4   02         7115     DEFB 2
27B5   03         7116     DEFB 3
27B6   05         7117     DEFB 5
27B7   05         7118     DEFB 5
27B8   05         7119     DEFB 5
27B9   05         7120     DEFB 5
27BA   05         7121     DEFB 5
27BB   05         7122     DEFB 5
27BC   06         7123     DEFB 6
                  7124  
                  7125  ;Subroutine zur Entwicklung von Benutzerdefinitionen
                  7126  ;(DEF FN)
                  7127  
27BD   CD3025     7128  M27BD:   CALL M2530
27C0   2035       7129     JR NZ,M27F7
27C2   E7         7130     RST GETNXT
27C3   CD8D2C     7131     CALL M2C8D
27C6   D28A1C     7132     JP NC,M1C8A
27C9   E7         7133     RST GETNXT
27CA   FE24       7134     CP '$'
                              SP                                PAGE 124
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

27CC   F5         7135     PUSH AF
27CD   2001       7136     JR NZ,M27D0
27CF   E7         7137     RST GETNXT
27D0   FE28       7138  M27D0:   CP '('
27D2   2012       7139     JR NZ,M27E6
27D4   E7         7140     RST GETNXT
27D5   FE29       7141     CP ')'
27D7   2810       7142     JR Z,M27E9
27D9   CDFB24     7143  M27D9:   CALL AUSDRU
27DC   DF         7144     RST GETAKT
27DD   FE2C       7145     CP ','
27DF   2003       7146     JR NZ,M27E4
27E1   E7         7147     RST GETNXT
27E2   18F5       7148     JR M27D9
                  7149  
27E4   FE29       7150  M27E4:   CP ')'
27E6   C28A1C     7151  M27E6:   JP NZ,M1C8A
27E9   E7         7152  M27E9:   RST GETNXT
27EA   213B5C     7153     LD HL,FLAGS ;Bit 1= Printer ein
27ED   CBB6       7154     RES 6,(HL)
27EF   F1         7155     POP AF
27F0   2802       7156     JR Z,M27F4
27F2   CBF6       7157     SET 6,(HL)
27F4   C31227     7158  M27F4:   JP M2712
                  7159  
                  7160  ;Einstieg fuer Funktionen im Programmlauf
                  7161  
27F7   E7         7162  M27F7:   RST GETNXT
27F8   E6DF       7163     AND 0DFH
27FA   47         7164     LD B,A
27FB   E7         7165     RST GETNXT
27FC   D624       7166     SUB '$'
27FE   4F         7167     LD C,A
27FF   2001       7168     JR NZ,M2802
2801   E7         7169     RST GETNXT
2802   E7         7170  M2802:   RST GETNXT
2803   E5         7171     PUSH HL
2804   2A535C     7172     LD HL,(PROG)   ;Start des Basicprogrammes
2807   2B         7173     DEC HL
2808   11CE00     7174  M2808:   LD DE,0CEH
280B   C5         7175     PUSH BC
280C   CD861D     7176     CALL M1D86
280F   C1         7177     POP BC
2810   3002       7178     JR NC,M2814
2812   CF         7179     RST ERRAUS
2813   18         7180     DEFB 18H
                  7181  
2814   E5         7182  M2814:   PUSH HL
2815   CDAB28     7183     CALL M28AB
2818   E6DF       7184     AND 0DFH
281A   B8         7185     CP B
281B   2008       7186     JR NZ,M2825
281D   CDAB28     7187     CALL M28AB
2820   D624       7188     SUB '$'
2822   B9         7189     CP C
2823   280C       7190     JR Z,M2831
2825   E1         7191  M2825:   POP HL
2826   2B         7192     DEC HL
                              SP                                PAGE 125
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2827   110002     7193     LD DE,200H
282A   C5         7194     PUSH BC
282B   CD8B19     7195     CALL M198B
282E   C1         7196     POP BC
282F   18D7       7197     JR M2808
                  7198  
                  7199  ;Der richtige FN-Befehl wurde gefunden.
                  7200  
2831   A7         7201  M2831:   AND A
2832   CCAB28     7202     CALL Z,M28AB
2835   D1         7203     POP DE
2836   D1         7204     POP DE
2837   ED535D5C   7205     LD (CHADD),DE  ;Adr. des naechsten zu interpret. Zeichens
283B   CDAB28     7206     CALL M28AB
283E   E5         7207     PUSH HL
283F   FE29       7208     CP ')'
2841   2842       7209     JR Z,M2885
2843   23         7210  M2843:   INC HL
2844   7E         7211     LD A,(HL)
2845   FE0E       7212     CP 0EH
2847   1640       7213     LD D,40H
2849   2807       7214     JR Z,M2852
284B   2B         7215     DEC HL
284C   CDAB28     7216     CALL M28AB
284F   23         7217     INC HL
2850   1600       7218     LD D,0
2852   23         7219  M2852:   INC HL
2853   E5         7220     PUSH HL
2854   D5         7221     PUSH DE
2855   CDFB24     7222     CALL AUSDRU
2858   F1         7223     POP AF
2859   FDAE01     7224     XOR (IY+1)
285C   E640       7225     AND 40H
285E   202B       7226     JR NZ,M288B
2860   E1         7227     POP HL
2861   EB         7228     EX DE,HL
2862   2A655C     7229     LD HL,(STKEND) ;Anfang des freien Speichers
2865   010500     7230     LD BC,5
2868   ED42       7231     SBC HL,BC
286A   22655C     7232     LD (STKEND),HL ;Anfang des freien Speichers
286D   EDB0       7233     LDIR
286F   EB         7234     EX DE,HL
2870   2B         7235     DEC HL
2871   CDAB28     7236     CALL M28AB
2874   FE29       7237     CP ')'
2876   280D       7238     JR Z,M2885
2878   E5         7239     PUSH HL
2879   DF         7240     RST GETAKT
287A   FE2C       7241     CP ','
287C   200D       7242     JR NZ,M288B
287E   E7         7243     RST GETNXT
287F   E1         7244     POP HL
2880   CDAB28     7245     CALL M28AB
2883   18BE       7246     JR M2843
                  7247  
2885   E5         7248  M2885:   PUSH HL
2886   DF         7249     RST GETAKT
2887   FE29       7250     CP ')'
                              SP                                PAGE 126
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2889   2802       7251     JR Z,M288D
                  7252  
288B   CF         7253  M288B:   RST ERRAUS
288C   19         7254     DEFB 19H
                  7255  
288D   D1         7256  M288D:   POP DE
288E   EB         7257     EX DE,HL
288F   225D5C     7258     LD (CHADD),HL  ;Adr. des naechsten zu interpret. Zeichens
2892   2A0B5C     7259     LD HL,(DEFADD) ;Argument fuer Funktionen
2895   E3         7260     EX (SP),HL
2896   220B5C     7261     LD (DEFADD),HL ;Argument fuer Funktionen
2899   D5         7262     PUSH DE
289A   E7         7263     RST GETNXT
289B   E7         7264     RST GETNXT
289C   CDFB24     7265     CALL AUSDRU
289F   E1         7266     POP HL
28A0   225D5C     7267     LD (CHADD),HL  ;Adr. des naechsten zu interpret. Zeichens
28A3   E1         7268     POP HL
28A4   220B5C     7269     LD (DEFADD),HL ;Argument fuer Funktionen
28A7   E7         7270     RST GETNXT
28A8   C31227     7271     JP M2712
                  7272  
                  7273  ;Routine zum Ueberspringen von Funktionsteilen (Zeichen <21H)
                  7274  ;nur mit HL, denn CHADD muss erhalten bleiben.
                  7275  
28AB   23         7276  M28AB:   INC HL
28AC   7E         7277     LD A,(HL)
28AD   FE21       7278     CP '!'
28AF   38FA       7279     JR C,M28AB
28B1   C9         7280     RET
                  7281  
                  7282  ;Subroutine zum Suchen von Variablen.
                  7283  ;Suche entweder im Variablenbereich oder, bei 'DEF FN'
                  7284  ;im Argumentbereich der Funktion.
                  7285  
28B2   FDCB01F6   7286  M28B2:   SET 6,(IY+1)
28B6   DF         7287     RST GETAKT
28B7   CD8D2C     7288     CALL M2C8D
28BA   D28A1C     7289     JP NC,M1C8A
28BD   E5         7290     PUSH HL
28BE   E61F       7291     AND 1FH
28C0   4F         7292     LD C,A
28C1   E7         7293     RST GETNXT
28C2   E5         7294     PUSH HL
28C3   FE28       7295     CP '('
28C5   2828       7296     JR Z,M28EF
28C7   CBF1       7297     SET 6,C
28C9   FE24       7298     CP '$'
28CB   2811       7299     JR Z,M28DE
28CD   CBE9       7300     SET 5,C
28CF   CD882C     7301     CALL M2C88
28D2   300F       7302     JR NC,M28E3
                  7303  
                  7304  ;das letzte Zeichen eines Variablennamens suchen
                  7305  
28D4   CD882C     7306  M28D4:   CALL M2C88
28D7   3016       7307     JR NC,M28EF
28D9   CBB1       7308     RES 6,C
                              SP                                PAGE 127
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

28DB   E7         7309     RST GETNXT
28DC   18F6       7310     JR M28D4
                  7311  
28DE   E7         7312  M28DE:   RST GETNXT
28DF   FDCB01B6   7313     RES 6,(IY+1)
                  7314  
                  7315  ;Wenn das Highbyte von DEFADD nicht Null ist (=DEF FN)
                  7316  ;und wenn zur Laufzeit, dann wird die Suche nach den
                  7317  ;Argumenten von 'DEF FN' durchgefuehrt.
                  7318  
28E3   3A0C5C     7319  M28E3:   LD A,(DEFADD+1)   ;Argument fuer Funktionen
28E6   A7         7320     AND A
28E7   2806       7321     JR Z,M28EF
28E9   CD3025     7322     CALL M2530
28EC   C25129     7323     JP NZ,M2951
28EF   41         7324  M28EF:   LD B,C
28F0   CD3025     7325     CALL M2530
28F3   2008       7326     JR NZ,M28FD
28F5   79         7327     LD A,C
28F6   E6E0       7328     AND 0E0H
28F8   CBFF       7329     SET 7,A
28FA   4F         7330     LD C,A
28FB   1837       7331     JR M2934
                  7332  
                  7333  ;Waehrend des Programmlaufes wird die Suche nach der
                  7334  ;Variablen im Variablenbereich durchgefuehrt.
                  7335  
28FD   2A4B5C     7336  M28FD:   LD HL,(VARS)   ;Beginn der Variablen
2900   7E         7337  M2900:   LD A,(HL)
2901   E67F       7338     AND 7FH
2903   282D       7339     JR Z,M2932
2905   B9         7340     CP C
2906   2022       7341     JR NZ,M292A
2908   17         7342     RLA
2909   87         7343     ADD A,A
290A   F23F29     7344     JP P,M293F
290D   3830       7345     JR C,M293F
                  7346  
                  7347  ;lange Namen ganz untersuchen
                  7348  
290F   D1         7349     POP DE
2910   D5         7350     PUSH DE
2911   E5         7351     PUSH HL
2912   23         7352  M2912:   INC HL
2913   1A         7353  M2913:   LD A,(DE)
2914   13         7354     INC DE
2915   FE20       7355     CP ' '
2917   28FA       7356     JR Z,M2913
2919   F620       7357     OR 20H
291B   BE         7358     CP (HL)
291C   28F4       7359     JR Z,M2912
291E   F680       7360     OR 80H
2920   BE         7361     CP (HL)
2921   2006       7362     JR NZ,M2929
2923   1A         7363     LD A,(DE)
2924   CD882C     7364     CALL M2C88
2927   3015       7365     JR NC,M293E
                  7366  
                              SP                                PAGE 128
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  7367  ;Wenn die Namen nicht stimmen, muss die naechste
                  7368  ;Variable im Variablenbereich gesucht werden.
                  7369  ;HL ist Zeiger darauf
                  7370  
2929   E1         7371  M2929:   POP HL
292A   C5         7372  M292A:   PUSH BC
292B   CDB819     7373     CALL M19B8
292E   EB         7374     EX DE,HL
292F   C1         7375     POP BC
2930   18CE       7376     JR M2900
                  7377  
2932   CBF8       7378  M2932:   SET 7,B
                  7379  
                  7380  ;bei Syntaxpruefung hier hin
                  7381  
2934   D1         7382  M2934:   POP DE
2935   DF         7383     RST GETAKT
2936   FE28       7384     CP '('
2938   2809       7385     JR Z,M2943
293A   CBE8       7386     SET 5,B
293C   180D       7387     JR M294B
                  7388  
                  7389  ;der richtige Namen ist gefunden
                  7390  
293E   D1         7391  M293E:   POP DE
293F   D1         7392  M293F:   POP DE
2940   D1         7393     POP DE
2941   E5         7394     PUSH HL
2942   DF         7395     RST GETAKT
2943   CD882C     7396  M2943:   CALL M2C88
2946   3003       7397     JR NC,M294B
2948   E7         7398     RST GETNXT
2949   18F8       7399     JR M2943
                  7400  
294B   E1         7401  M294B:   POP HL
294C   CB10       7402     RL B
294E   CB70       7403     BIT 6,B
2950   C9         7404     RET
                  7405  
                  7406  ;Unterprogramm, um die Argumente von 'DEF FN' auf den
                  7407  ;Calc.-Stack abzulegen. Der Einsprung erfolgt von der
                  7408  ;Variablensuchroutine aus.
                  7409  
2951   2A0B5C     7410  M2951:   LD HL,(DEFADD) ;Argument fuer Funktionen
2954   7E         7411     LD A,(HL)
2955   FE29       7412     CP ')'
2957   CAEF28     7413     JP Z,M28EF
295A   7E         7414  M295A:   LD A,(HL)
295B   F660       7415     OR 60H
295D   47         7416     LD B,A
295E   23         7417     INC HL
295F   7E         7418     LD A,(HL)
2960   FE0E       7419     CP 0EH
2962   2807       7420     JR Z,M296B
2964   2B         7421     DEC HL
2965   CDAB28     7422     CALL M28AB
2968   23         7423     INC HL
2969   CBA8       7424     RES 5,B
                              SP                                PAGE 129
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

296B   78         7425  M296B:   LD A,B
296C   B9         7426     CP C
296D   2812       7427     JR Z,M2981
296F   23         7428     INC HL
2970   23         7429     INC HL
2971   23         7430     INC HL
2972   23         7431     INC HL
2973   23         7432     INC HL
2974   CDAB28     7433     CALL M28AB
2977   FE29       7434     CP ')'
2979   CAEF28     7435     JP Z,M28EF
297C   CDAB28     7436     CALL M28AB
297F   18D9       7437     JR M295A
                  7438  
2981   CB69       7439  M2981:   BIT 5,C
2983   200C       7440     JR NZ,M2991
2985   23         7441     INC HL
2986   ED5B655C   7442     LD DE,(STKEND) ;Anfang des freien Speichers
298A   CDC033     7443     CALL VERDO
298D   EB         7444     EX DE,HL
298E   22655C     7445     LD (STKEND),HL ;Anfang des freien Speichers
2991   D1         7446  M2991:   POP DE
2992   D1         7447     POP DE
2993   AF         7448     XOR A
2994   3C         7449     INC A
2995   C9         7450     RET
                  7451  
                  7452  ;Subroutine zum Suchen von Stringparametern im
                  7453  ;Variablenbereich oder zum Finden der Basisadresse
                  7454  ;eines Arrays
                  7455  
2996   AF         7456  M2996:   XOR A
2997   47         7457     LD B,A
2998   CB79       7458     BIT 7,C
299A   204B       7459     JR NZ,M29E7
299C   CB7E       7460     BIT 7,(HL)
299E   200E       7461     JR NZ,M29AE
29A0   3C         7462     INC A
29A1   23         7463  M29A1:   INC HL
29A2   4E         7464     LD C,(HL)
29A3   23         7465     INC HL
29A4   46         7466     LD B,(HL)
29A5   23         7467     INC HL
29A6   EB         7468     EX DE,HL
29A7   CDB22A     7469     CALL M2AB2
29AA   DF         7470     RST GETAKT
29AB   C3492A     7471     JP M2A49
                  7472  
29AE   23         7473  M29AE:   INC HL
29AF   23         7474     INC HL
29B0   23         7475     INC HL
29B1   46         7476     LD B,(HL)
29B2   CB71       7477     BIT 6,C
29B4   280A       7478     JR Z,M29C0
29B6   05         7479     DEC B
29B7   28E8       7480     JR Z,M29A1
29B9   EB         7481     EX DE,HL
29BA   DF         7482     RST GETAKT
                              SP                                PAGE 130
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

29BB   FE28       7483     CP '('
29BD   2061       7484     JR NZ,M2A20
29BF   EB         7485     EX DE,HL
29C0   EB         7486  M29C0:   EX DE,HL
29C1   1824       7487     JR M29E7
                  7488  
                  7489  ;Nachfolgend die Schleife zum Suchen der Parameter eines
                  7490  ;Arrayelements. B dient als Dimensionszaehler. Stringarrays
                  7491  ;haben eine Dimension weniger als angegeben, da der letzte
                  7492  ;Teil als Beschreibung eines Teilstrings dient.
                  7493  
29C3   E5         7494  M29C3:   PUSH HL
29C4   DF         7495     RST GETAKT
29C5   E1         7496     POP HL
29C6   FE2C       7497     CP ','
29C8   2820       7498     JR Z,M29EA
29CA   CB79       7499     BIT 7,C
29CC   2852       7500     JR Z,M2A20
29CE   CB71       7501     BIT 6,C
29D0   2006       7502     JR NZ,M29D8
29D2   FE29       7503     CP ')'
29D4   203C       7504     JR NZ,M2A12
29D6   E7         7505     RST GETNXT
29D7   C9         7506     RET
                  7507  
29D8   FE29       7508  M29D8:   CP ')'
29DA   286C       7509     JR Z,M2A48
29DC   FECC       7510     CP 0CCH
29DE   2032       7511     JR NZ,M2A12
29E0   DF         7512  M29E0:   RST GETAKT
29E1   2B         7513     DEC HL
29E2   225D5C     7514     LD (CHADD),HL  ;Adr. des naechsten zu interpret. Zeichens
29E5   185E       7515     JR M2A45
                  7516  
                  7517  ;normaler Einstiegspunkt in diese Routine
                  7518  
29E7   210000     7519  M29E7:   LD HL,0
29EA   E5         7520  M29EA:   PUSH HL
29EB   E7         7521     RST GETNXT
29EC   E1         7522     POP HL
29ED   79         7523     LD A,C
29EE   FEC0       7524     CP 0C0H
29F0   2009       7525     JR NZ,M29FB
29F2   DF         7526     RST GETAKT
29F3   FE29       7527     CP ')'
29F5   2851       7528     JR Z,M2A48
29F7   FECC       7529     CP 0CCH
29F9   28E5       7530     JR Z,M29E0
29FB   C5         7531  M29FB:   PUSH BC
29FC   E5         7532     PUSH HL
29FD   CDEE2A     7533     CALL M2AEE
2A00   E3         7534     EX (SP),HL
2A01   EB         7535     EX DE,HL
2A02   CDCC2A     7536     CALL M2ACC
2A05   3819       7537     JR C,M2A20
2A07   0B         7538     DEC BC
2A08   CDF42A     7539     CALL M2AF4
2A0B   09         7540     ADD HL,BC
                              SP                                PAGE 131
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2A0C   D1         7541     POP DE
2A0D   C1         7542     POP BC
2A0E   10B3       7543     DJNZ M29C3
2A10   CB79       7544     BIT 7,C
2A12   2066       7545  M2A12:   JR NZ,M2A7A
2A14   E5         7546     PUSH HL
2A15   CB71       7547     BIT 6,C
2A17   2013       7548     JR NZ,M2A2C
2A19   42         7549     LD B,D
2A1A   4B         7550     LD C,E
2A1B   DF         7551     RST GETAKT
2A1C   FE29       7552     CP ')'
2A1E   2802       7553     JR Z,M2A22
2A20   CF         7554  M2A20:   RST ERRAUS
2A21   02         7555     DEFB 2
                  7556  
2A22   E7         7557  M2A22:   RST GETNXT
2A23   E1         7558     POP HL
2A24   110500     7559     LD DE,5
2A27   CDF42A     7560     CALL M2AF4
2A2A   09         7561     ADD HL,BC
2A2B   C9         7562     RET
                  7563  
                  7564  ;Stringarrays weiter bearbeiten
                  7565  
2A2C   CDEE2A     7566  M2A2C:   CALL M2AEE
2A2F   E3         7567     EX (SP),HL
2A30   CDF42A     7568     CALL M2AF4
2A33   C1         7569     POP BC
2A34   09         7570     ADD HL,BC
2A35   23         7571     INC HL
2A36   42         7572     LD B,D
2A37   4B         7573     LD C,E
2A38   EB         7574     EX DE,HL
2A39   CDB12A     7575     CALL M2AB1
2A3C   DF         7576     RST GETAKT
2A3D   FE29       7577     CP ')'
2A3F   2807       7578     JR Z,M2A48
2A41   FE2C       7579     CP ','
2A43   20DB       7580     JR NZ,M2A20
2A45   CD522A     7581  M2A45:   CALL M2A52
2A48   E7         7582  M2A48:   RST GETNXT
2A49   FE28       7583  M2A49:   CP '('
2A4B   28F8       7584     JR Z,M2A45
2A4D   FDCB01B6   7585     RES 6,(IY+1)
2A51   C9         7586     RET
                  7587  
                  7588  ;Subroutine zum Bearbeiten von Teilstrings
                  7589  
2A52   CD3025     7590  M2A52:   CALL M2530
2A55   C4F12B     7591     CALL NZ,M2BF1
2A58   E7         7592     RST GETNXT
2A59   FE29       7593     CP ')'
2A5B   2850       7594     JR Z,M2AAD
2A5D   D5         7595     PUSH DE
2A5E   AF         7596     XOR A
2A5F   F5         7597     PUSH AF
2A60   C5         7598     PUSH BC
                              SP                                PAGE 132
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2A61   110100     7599     LD DE,1
2A64   DF         7600     RST GETAKT
2A65   E1         7601     POP HL
2A66   FECC       7602     CP 0CCH
2A68   2817       7603     JR Z,M2A81
2A6A   F1         7604     POP AF
2A6B   CDCD2A     7605     CALL M2ACD
2A6E   F5         7606     PUSH AF
2A6F   50         7607     LD D,B
2A70   59         7608     LD E,C
2A71   E5         7609     PUSH HL
2A72   DF         7610     RST GETAKT
2A73   E1         7611     POP HL
2A74   FECC       7612     CP 0CCH
2A76   2809       7613     JR Z,M2A81
2A78   FE29       7614     CP ')'
2A7A   C28A1C     7615  M2A7A:   JP NZ,M1C8A
                  7616  
                  7617  ;Hier wird ein einzelnes Zeichen eines Strings,
                  7618  ;z.B. C$(7), bearbeitet
                  7619  
2A7D   62         7620     LD H,D
2A7E   6B         7621     LD L,E
2A7F   1813       7622     JR M2A94
                  7623  
2A81   E5         7624  M2A81:   PUSH HL
2A82   E7         7625     RST GETNXT
2A83   E1         7626     POP HL
2A84   FE29       7627     CP ')'
2A86   280C       7628     JR Z,M2A94
2A88   F1         7629     POP AF
2A89   CDCD2A     7630     CALL M2ACD
2A8C   F5         7631     PUSH AF
2A8D   DF         7632     RST GETAKT
2A8E   60         7633     LD H,B
2A8F   69         7634     LD L,C
2A90   FE29       7635     CP ')'
2A92   20E6       7636     JR NZ,M2A7A
2A94   F1         7637  M2A94:   POP AF
2A95   E3         7638     EX (SP),HL
2A96   19         7639     ADD HL,DE
2A97   2B         7640     DEC HL
2A98   E3         7641     EX (SP),HL
2A99   A7         7642     AND A
2A9A   ED52       7643     SBC HL,DE
2A9C   010000     7644     LD BC,0
2A9F   3807       7645     JR C,M2AA8
2AA1   23         7646     INC HL
2AA2   A7         7647     AND A
2AA3   FA202A     7648     JP M,M2A20
2AA6   44         7649     LD B,H
2AA7   4D         7650     LD C,L
2AA8   D1         7651  M2AA8:   POP DE
2AA9   FDCB01B6   7652     RES 6,(IY+1)
2AAD   CD3025     7653  M2AAD:   CALL M2530
2AB0   C8         7654     RET Z
                  7655  
                  7656  ;Subroutine, um Parameter, die in den Reg. A - E enthalten
                              SP                                PAGE 133
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  7657  ;sind, auf den Calc.-Stack abzulegen. Reg. A = 0 bedeutet
                  7658  ;String von einem Array oder ein Teilstring, eine 1 signa-
                  7659  ;lisiert einen einfachen String, dessen alter Wert entfernt
                  7660  ;werden kann.
                  7661  
2AB1   AF         7662  M2AB1:   XOR A
                  7663  
2AB2   FDCB01B6   7664  M2AB2:   RES 6,(IY+1)
2AB6   C5         7665  M2AB6:   PUSH BC
2AB7   CDA933     7666     CALL PLATZ5
2ABA   C1         7667     POP BC
2ABB   2A655C     7668     LD HL,(STKEND) ;Anfang des freien Speichers
2ABE   77         7669     LD (HL),A
2ABF   23         7670     INC HL
2AC0   73         7671     LD (HL),E
2AC1   23         7672     INC HL
2AC2   72         7673     LD (HL),D
2AC3   23         7674     INC HL
2AC4   71         7675     LD (HL),C
2AC5   23         7676     INC HL
2AC6   70         7677     LD (HL),B
2AC7   23         7678     INC HL
2AC8   22655C     7679     LD (STKEND),HL ;Anfang des freien Speichers
2ACB   C9         7680     RET
                  7681  
                  7682  ;Subroutine zum Einlesen einer Integerzahl ins Reg. BC.
                  7683  ;Das Ergebnis darf nicht groesser als der Inhalt von HL
                  7684  ;sein, sonst ERROR. Erroranzeige in Reg. A: 0FFH = ERROR
                  7685  
2ACC   AF         7686  M2ACC:   XOR A
2ACD   D5         7687  M2ACD:   PUSH DE
2ACE   E5         7688     PUSH HL
2ACF   F5         7689     PUSH AF
2AD0   CD821C     7690     CALL PAR06
2AD3   F1         7691     POP AF
2AD4   CD3025     7692     CALL M2530
2AD7   2812       7693     JR Z,M2AEB
2AD9   F5         7694     PUSH AF
2ADA   CD991E     7695     CALL M1E99
2ADD   D1         7696     POP DE
2ADE   78         7697     LD A,B
2ADF   B1         7698     OR C
2AE0   37         7699     SCF
2AE1   2805       7700     JR Z,M2AE8
2AE3   E1         7701     POP HL
2AE4   E5         7702     PUSH HL
2AE5   A7         7703     AND A
2AE6   ED42       7704     SBC HL,BC
2AE8   7A         7705  M2AE8:   LD A,D
2AE9   DE00       7706     SBC A,0
2AEB   E1         7707  M2AEB:   POP HL
2AEC   D1         7708     POP DE
2AED   C9         7709     RET
                  7710  
                  7711  ;Diese Subroutine laedt Register DE aus den Speicher-
                  7712  ;plaetzen (DE+1),(DE+2)
                  7713  
2AEE   EB         7714  M2AEE:   EX DE,HL
                              SP                                PAGE 134
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2AEF   23         7715     INC HL
2AF0   5E         7716     LD E,(HL)
2AF1   23         7717     INC HL
2AF2   56         7718     LD D,(HL)
2AF3   C9         7719     RET
                  7720  
                  7721  ;Subroutine zum Berechnen von DE * HL und Test, dass
                  7722  ;das Ergibnis in HL kleiner als 65536 ist
                  7723  
2AF4   CD3025     7724  M2AF4:   CALL M2530
2AF7   C8         7725     RET Z
2AF8   CDA930     7726     CALL M30A9
2AFB   DA151F     7727     JP C,M1F15
2AFE   C9         7728     RET
                  7729  
                  7730  ;Befehl LET
                  7731  ;Es wird die tatsaechliche Zuweisung bei LET, READ und
                  7732  ;INPUT durchgefuehrt
                  7733  
2AFF   2A4D5C     7734  M2AFF:   LD HL,(DEST)   ;Variablenadresse bei Zuweisung
2B02   FDCB374E   7735     BIT 1,(IY+37H)
2B06   285E       7736     JR Z,M2B66
2B08   010500     7737     LD BC,5
2B0B   03         7738  M2B0B:   INC BC
2B0C   23         7739  M2B0C:   INC HL
2B0D   7E         7740     LD A,(HL)
2B0E   FE20       7741     CP ' '
2B10   28FA       7742     JR Z,M2B0C
2B12   300B       7743     JR NC,M2B1F
2B14   FE10       7744     CP 10H
2B16   3811       7745     JR C,M2B29
2B18   FE16       7746     CP 16H
2B1A   300D       7747     JR NC,M2B29
2B1C   23         7748     INC HL
2B1D   18ED       7749     JR M2B0C
                  7750  
2B1F   CD882C     7751  M2B1F:   CALL M2C88
2B22   38E7       7752     JR C,M2B0B
2B24   FE24       7753     CP '$'
2B26   CAC02B     7754     JP Z,M2BC0
                  7755  
                  7756  
                  7757  ;Fuer eine neue numerische Variable werden 'BC' Plaetze
                  7758  ;gebraucht (NAME + WERT). Danach wird die Variable
                  7759  ;komplett kopiert.
                  7760  
2B29   79         7761  M2B29:   LD A,C
2B2A   2A595C     7762     LD HL,(ELINE)  ;Adresse des eingegebenen Befehls
2B2D   2B         7763     DEC HL
2B2E   CD5516     7764     CALL MACHPL
2B31   23         7765     INC HL
2B32   23         7766     INC HL
2B33   EB         7767     EX DE,HL
2B34   D5         7768     PUSH DE
2B35   2A4D5C     7769     LD HL,(DEST)   ;Variablenadresse bei Zuweisung
2B38   1B         7770     DEC DE
2B39   D606       7771     SUB 6
2B3B   47         7772     LD B,A
                              SP                                PAGE 135
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2B3C   2811       7773     JR Z,M2B4F
2B3E   23         7774  M2B3E:   INC HL
2B3F   7E         7775     LD A,(HL)
2B40   FE21       7776     CP '!'
2B42   38FA       7777     JR C,M2B3E
2B44   F620       7778     OR 20H
2B46   13         7779     INC DE
2B47   12         7780     LD (DE),A
2B48   10F4       7781     DJNZ M2B3E
2B4A   F680       7782     OR 80H
2B4C   12         7783     LD (DE),A
2B4D   3EC0       7784     LD A,0C0H
2B4F   2A4D5C     7785  M2B4F:   LD HL,(DEST)   ;Variablenadresse bei Zuweisung
2B52   AE         7786     XOR (HL)
2B53   F620       7787     OR 20H
2B55   E1         7788     POP HL
2B56   CDEA2B     7789     CALL M2BEA
2B59   E5         7790  M2B59:   PUSH HL
2B5A   EF         7791     RST CALRUF
2B5B   02         7792     DEFB 2
2B5C   38         7793     DEFB 38H
                  7794  
2B5D   E1         7795     POP HL
2B5E   010500     7796     LD BC,5
2B61   A7         7797     AND A
2B62   ED42       7798     SBC HL,BC
2B64   1840       7799     JR M2BA6
                  7800  
                  7801  ;Bearbeitung einer bereits vorhandenen Variablen
                  7802  
2B66   FDCB0176   7803  M2B66:   BIT 6,(IY+1)
2B6A   2806       7804     JR Z,M2B72
                  7805  
                  7806  ;Der alte Zahlenwert einer numerischen Variablen wird
                  7807  ;durch den neuen ueberschrieben. HL muss deshalb
                  7808  ;korrigiert werden.
                  7809  
2B6C   110600     7810     LD DE,6
2B6F   19         7811     ADD HL,DE
2B70   18E7       7812     JR M2B59
                  7813  
                  7814  ;Stringvariablen bearbeiten
                  7815  
2B72   2A4D5C     7816  M2B72:   LD HL,(DEST)   ;Variablenadresse bei Zuweisung
2B75   ED4B725C   7817     LD BC,(STRLEN) ;Laenge eines Strings
2B79   FDCB3746   7818     BIT 0,(IY+37H)
2B7D   2030       7819     JR NZ,M2BAF
                  7820  
                  7821  ;Bearbeiten von Teilstrings und Strings von Arrays
                  7822  
2B7F   78         7823     LD A,B
2B80   B1         7824     OR C
2B81   C8         7825     RET Z
2B82   E5         7826     PUSH HL
2B83   F7         7827     RST REST30
2B84   D5         7828     PUSH DE
2B85   C5         7829     PUSH BC
2B86   54         7830     LD D,H
                              SP                                PAGE 136
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2B87   5D         7831     LD E,L
2B88   23         7832     INC HL
2B89   3620       7833     LD (HL),' '
2B8B   EDB8       7834     LDDR
2B8D   E5         7835     PUSH HL
2B8E   CDF12B     7836     CALL M2BF1
2B91   E1         7837     POP HL
2B92   E3         7838     EX (SP),HL
2B93   A7         7839     AND A
2B94   ED42       7840     SBC HL,BC
2B96   09         7841     ADD HL,BC
2B97   3002       7842     JR NC,M2B9B
2B99   44         7843     LD B,H
2B9A   4D         7844     LD C,L
2B9B   E3         7845  M2B9B:   EX (SP),HL
2B9C   EB         7846     EX DE,HL
2B9D   78         7847     LD A,B
2B9E   B1         7848     OR C
2B9F   2802       7849     JR Z,M2BA3
2BA1   EDB0       7850     LDIR
2BA3   C1         7851  M2BA3:   POP BC
2BA4   D1         7852     POP DE
2BA5   E1         7853     POP HL
                  7854  
                  7855  ;Subroutine zum Einschreiben einer numerischen Variablen
                  7856  ;vom Calc.-Stack oder eines Strings vom Workspace in den
                  7857  ;Variablenbereich
                  7858  
2BA6   EB         7859  M2BA6:   EX DE,HL
2BA7   78         7860     LD A,B
2BA8   B1         7861     OR C
2BA9   C8         7862     RET Z
2BAA   D5         7863     PUSH DE
2BAB   EDB0       7864     LDIR
2BAD   E1         7865     POP HL
2BAE   C9         7866     RET
                  7867  
                  7868  ;Bearbeitung eines kompletten, neuen und einfachen Strings
                  7869  ;(von LET herkommend)
                  7870  
2BAF   2B         7871  M2BAF:   DEC HL
2BB0   2B         7872     DEC HL
2BB1   2B         7873     DEC HL
2BB2   7E         7874     LD A,(HL)
2BB3   E5         7875     PUSH HL
2BB4   C5         7876     PUSH BC
2BB5   CDC62B     7877     CALL M2BC6
2BB8   C1         7878     POP BC
2BB9   E1         7879     POP HL
2BBA   03         7880     INC BC
2BBB   03         7881     INC BC
2BBC   03         7882     INC BC
2BBD   C3E819     7883     JP RAUS2
                  7884  
                  7885  ;neue einfache Strings bearbeiten
                  7886  
2BC0   3EDF       7887  M2BC0:   LD A,0DFH
2BC2   2A4D5C     7888     LD HL,(DEST)   ;Variablenadresse bei Zuweisung
                              SP                                PAGE 137
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2BC5   A6         7889     AND (HL)
2BC6   F5         7890  M2BC6:   PUSH AF
2BC7   CDF12B     7891     CALL M2BF1
2BCA   EB         7892     EX DE,HL
2BCB   09         7893     ADD HL,BC
2BCC   C5         7894     PUSH BC
2BCD   2B         7895     DEC HL
2BCE   224D5C     7896     LD (DEST),HL   ;Variablenadresse bei Zuweisung
2BD1   03         7897     INC BC
2BD2   03         7898     INC BC
2BD3   03         7899     INC BC
2BD4   2A595C     7900     LD HL,(ELINE)  ;Adresse des eingegebenen Befehls
2BD7   2B         7901     DEC HL
2BD8   CD5516     7902     CALL MACHPL
2BDB   2A4D5C     7903     LD HL,(DEST)   ;Variablenadresse bei Zuweisung
2BDE   C1         7904     POP BC
2BDF   C5         7905     PUSH BC
2BE0   03         7906     INC BC
2BE1   EDB8       7907     LDDR
2BE3   EB         7908     EX DE,HL
2BE4   23         7909     INC HL
2BE5   C1         7910     POP BC
2BE6   70         7911     LD (HL),B
2BE7   2B         7912     DEC HL
2BE8   71         7913     LD (HL),C
2BE9   F1         7914     POP AF
                  7915  
                  7916  ;Subroutine zum Einschreiben des ersten Zeichens eines
                  7917  ;Variablennamens (altes Endebyte mit 80H). HL zeigt am
                  7918  ;Ende auf die neue Ende(80H)-Position.
                  7919  
2BEA   2B         7920  M2BEA:   DEC HL
2BEB   77         7921     LD (HL),A
2BEC   2A595C     7922     LD HL,(ELINE)  ;Adresse des eingegebenen Befehls
2BEF   2B         7923     DEC HL
2BF0   C9         7924     RET
                  7925  
                  7926  ;Subroutine zum Laden des letzten Eintrags vom Calc.-Stack.
                  7927  ;Dier Werte koennen eine Variable oder Stringparameter sein.
                  7928  
2BF1   2A655C     7929  M2BF1:   LD HL,(STKEND) ;Anfang des freien Speichers
2BF4   2B         7930     DEC HL
2BF5   46         7931     LD B,(HL)
2BF6   2B         7932     DEC HL
2BF7   4E         7933     LD C,(HL)
2BF8   2B         7934     DEC HL
2BF9   56         7935     LD D,(HL)
2BFA   2B         7936     DEC HL
2BFB   5E         7937     LD E,(HL)
2BFC   2B         7938     DEC HL
2BFD   7E         7939     LD A,(HL)
2BFE   22655C     7940     LD (STKEND),HL ;Anfang des freien Speichers
2C01   C9         7941     RET
                  7942  
                  7943  ;Befehl DIM
                  7944  ;Diese Routine dient zum Anlegen der Arrays. Wenn bereits
                  7945  ;ein Array unter dem gleichen Namen existiert, so wird das
                  7946  ;alte ueberschrieben. Das ganze Array wird beim Anlegen mit
                              SP                                PAGE 138
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  7947  ;0 (numerisch) oder 20H (Space, bei Strings) beschrieben.
                  7948  
2C02   CDB228     7949  M2C02:   CALL M28B2
2C05   C28A1C     7950  M2C05:   JP NZ,M1C8A
2C08   CD3025     7951     CALL M2530
2C0B   2008       7952     JR NZ,M2C15
2C0D   CBB1       7953     RES 6,C
2C0F   CD9629     7954     CALL M2996
2C12   CDEE1B     7955     CALL M1BEE
2C15   3808       7956  M2C15:   JR C,M2C1F
2C17   C5         7957     PUSH BC
2C18   CDB819     7958     CALL M19B8
2C1B   CDE819     7959     CALL RAUS2
2C1E   C1         7960     POP BC
2C1F   CBF9       7961  M2C1F:   SET 7,C
2C21   0600       7962     LD B,0
2C23   C5         7963     PUSH BC
2C24   210100     7964     LD HL,1
2C27   CB71       7965     BIT 6,C
2C29   2002       7966     JR NZ,M2C2D
2C2B   2E05       7967     LD L,5
2C2D   EB         7968  M2C2D:   EX DE,HL
2C2E   E7         7969  M2C2E:   RST GETNXT
2C2F   26FF       7970     LD H,0FFH
2C31   CDCC2A     7971     CALL M2ACC
2C34   DA202A     7972     JP C,M2A20
2C37   E1         7973     POP HL
2C38   C5         7974     PUSH BC
2C39   24         7975     INC H
2C3A   E5         7976     PUSH HL
2C3B   60         7977     LD H,B
2C3C   69         7978     LD L,C
2C3D   CDF42A     7979     CALL M2AF4
2C40   EB         7980     EX DE,HL
2C41   DF         7981     RST GETAKT
2C42   FE2C       7982     CP ','
2C44   28E8       7983     JR Z,M2C2E
2C46   FE29       7984     CP ')'
2C48   20BB       7985     JR NZ,M2C05
2C4A   E7         7986     RST GETNXT
2C4B   C1         7987     POP BC
2C4C   79         7988     LD A,C
2C4D   68         7989     LD L,B
2C4E   2600       7990     LD H,0
2C50   23         7991     INC HL
2C51   23         7992     INC HL
2C52   29         7993     ADD HL,HL
2C53   19         7994     ADD HL,DE
2C54   DA151F     7995     JP C,M1F15
2C57   D5         7996     PUSH DE
2C58   C5         7997     PUSH BC
2C59   E5         7998     PUSH HL
2C5A   44         7999     LD B,H
2C5B   4D         8000     LD C,L
2C5C   2A595C     8001     LD HL,(ELINE)  ;Adresse des eingegebenen Befehls
2C5F   2B         8002     DEC HL
2C60   CD5516     8003     CALL MACHPL
2C63   23         8004     INC HL
                              SP                                PAGE 139
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2C64   77         8005     LD (HL),A
2C65   C1         8006     POP BC
2C66   0B         8007     DEC BC
2C67   0B         8008     DEC BC
2C68   0B         8009     DEC BC
2C69   23         8010     INC HL
2C6A   71         8011     LD (HL),C
2C6B   23         8012     INC HL
2C6C   70         8013     LD (HL),B
2C6D   C1         8014     POP BC
2C6E   78         8015     LD A,B
2C6F   23         8016     INC HL
2C70   77         8017     LD (HL),A
2C71   62         8018     LD H,D
2C72   6B         8019     LD L,E
2C73   1B         8020     DEC DE
2C74   3600       8021     LD (HL),0
2C76   CB71       8022     BIT 6,C
2C78   2802       8023     JR Z,M2C7C
2C7A   3620       8024     LD (HL),' '
2C7C   C1         8025  M2C7C:   POP BC
2C7D   EDB8       8026     LDDR
2C7F   C1         8027  M2C7F:   POP BC
2C80   70         8028     LD (HL),B
2C81   2B         8029     DEC HL
2C82   71         8030     LD (HL),C
2C83   2B         8031     DEC HL
2C84   3D         8032     DEC A
2C85   20F8       8033     JR NZ,M2C7F
2C87   C9         8034     RET
                  8035  
                  8036  ;Subroutine zum Pruefen auf alphanumerisch. CARRY ist
                  8037  ;gesetzt bei Buchstaben und Ziffern.
                  8038  
2C88   CD1B2D     8039  M2C88:   CALL ZIFFER
2C8B   3F         8040     CCF
2C8C   D8         8041     RET C
                  8042  
                  8043  ;Subroutine ueberprueft auf Buchstaben. CARRY ist
                  8044  ;bei Buchstaben gesetzt.
                  8045  
2C8D   FE41       8046  M2C8D:   CP 'A'
2C8F   3F         8047     CCF
2C90   D0         8048     RET NC
2C91   FE5B       8049     CP 5BH
2C93   D8         8050     RET C
2C94   FE61       8051     CP 'a'
2C96   3F         8052     CCF
2C97   D0         8053     RET NC
2C98   FE7B       8054     CP 7BH
2C9A   C9         8055     RET
                  8056  
                  8057  ;Subroutien zum Wandeln von Dezimalzahlen oder, mit dem
                  8058  ;Zusatz 'BIN', Binaerzahlen in Floatingpointzahlen, die
                  8059  ;dann als letztes Ergebnis auf dem Calc.-Stack abgelegt
                  8060  ;werden.
                  8061  
2C9B   FEC4       8062  DEZFLO:  CP 0C4H
                              SP                                PAGE 140
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2C9D   2019       8063     JR NZ,M2CB8
2C9F   110000     8064     LD DE,0
2CA2   E7         8065  BINFLO:  RST GETNXT
2CA3   D631       8066     SUB '1'
2CA5   CE00       8067     ADC A,0
2CA7   200A       8068     JR NZ,M2CB3
2CA9   EB         8069     EX DE,HL
2CAA   3F         8070     CCF
2CAB   ED6A       8071     ADC HL,HL
2CAD   DAAD31     8072     JP C,M31AD
2CB0   EB         8073     EX DE,HL
2CB1   18EF       8074     JR BINFLO
                  8075  
2CB3   42         8076  M2CB3:   LD B,D
2CB4   4B         8077     LD C,E
2CB5   C32B2D     8078     JP M2D2B
                  8079  
2CB8   FE2E       8080  M2CB8:   CP '.'
2CBA   280F       8081     JR Z,M2CCB
2CBC   CD3B2D     8082     CALL M2D3B
2CBF   FE2E       8083     CP '.'
2CC1   2028       8084     JR NZ,M2CEB
2CC3   E7         8085     RST GETNXT
2CC4   CD1B2D     8086     CALL ZIFFER
2CC7   3822       8087     JR C,M2CEB
2CC9   180A       8088     JR M2CD5
                  8089  
                  8090  ;Zahlen, die mit Punkt anfangen bearbeiten
                  8091  
2CCB   E7         8092  M2CCB:   RST GETNXT
2CCC   CD1B2D     8093     CALL ZIFFER
2CCF   DA8A1C     8094  M2CCF:   JP C,M1C8A
2CD2   EF         8095     RST CALRUF
2CD3   A0         8096     DEFB 0A0H
2CD4   38         8097     DEFB 38H
                  8098  
2CD5   EF         8099  M2CD5:   RST CALRUF
2CD6   A1         8100     DEFB 0A1H
2CD7   C0         8101     DEFB 0C0H
2CD8   02         8102     DEFB 2
2CD9   38         8103     DEFB 38H
                  8104  
2CDA   DF         8105  M2CDA:   RST GETAKT
2CDB   CD222D     8106     CALL M2D22
2CDE   380B       8107     JR C,M2CEB
2CE0   EF         8108     RST CALRUF
2CE1   E0         8109     DEFB 0E0H
2CE2   A4         8110     DEFB 0A4H
2CE3   05         8111     DEFB 5
2CE4   C0         8112     DEFB 0C0H
2CE5   04         8113     DEFB 4
2CE6   0F         8114     DEFB 0FH
2CE7   38         8115     DEFB 38H
                  8116  
2CE8   E7         8117     RST GETNXT
2CE9   18EF       8118     JR M2CDA
                  8119  
                  8120  ;Exponent untersuchen
                              SP                                PAGE 141
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  8121  
2CEB   FE45       8122  M2CEB:   CP 'E'
2CED   2803       8123     JR Z,M2CF2
2CEF   FE65       8124     CP 'e'
2CF1   C0         8125     RET NZ
                  8126  
2CF2   06FF       8127  M2CF2:   LD B,0FFH
2CF4   E7         8128     RST GETNXT
2CF5   FE2B       8129     CP '+'
2CF7   2805       8130     JR Z,M2CFE
2CF9   FE2D       8131     CP '-'
2CFB   2002       8132     JR NZ,M2CFF
2CFD   04         8133     INC B
2CFE   E7         8134  M2CFE:   RST GETNXT
2CFF   CD1B2D     8135  M2CFF:   CALL ZIFFER
2D02   38CB       8136     JR C,M2CCF
2D04   C5         8137     PUSH BC
2D05   CD3B2D     8138     CALL M2D3B
2D08   CDD52D     8139     CALL M2DD5
2D0B   C1         8140     POP BC
2D0C   DAAD31     8141     JP C,M31AD
2D0F   A7         8142     AND A
2D10   FAAD31     8143     JP M,M31AD
2D13   04         8144     INC B
2D14   2802       8145     JR Z,M2D18
2D16   ED44       8146     NEG
2D18   C34F2D     8147  M2D18:   JP M2D4F
                  8148  
                  8149  ;Subroutine zum Untersuchen auf Ziffern. Bei Ziffern
                  8150  ;wird das CARRY-Flag gesetzt.
                  8151  
2D1B   FE30       8152  ZIFFER:  CP '0'
2D1D   D8         8153     RET C
2D1E   FE3A       8154     CP ':'
2D20   3F         8155     CCF
2D21   C9         8156     RET
                  8157  
                  8158  ;Subroutine zum Ablegen eines Digits (Ziffer) auf dem
                  8159  ;Calc.-Stack.
                  8160  
2D22   CD1B2D     8161  M2D22:   CALL ZIFFER
2D25   D8         8162     RET C
2D26   D630       8163     SUB '0'
                  8164  
                  8165  ;Subroutine legt Binaerzahl in A als Floatingpointzahl
                  8166  ;auf dem Calc.-Stack als letzten Wert ab.
                  8167  
2D28   4F         8168  M2D28:   LD C,A
2D29   0600       8169     LD B,0
                  8170  
                  8171  ;Subroutine zum Ablegen der Integerzahl in BC auf dem
                  8172  ;Calc.-Stack als letzter Wert in Floatingpointformat.
                  8173  ;Das 1. und das 5. Byte sind immer 0, das 2. gibt das
                  8174  ;Vorzeichen an: 0 = positiv, FFH = negativ. Das 3. Byte
                  8175  ;ist das Lowbyte und das 4. das Highbyte. Die Ablage
                  8176  ;erfolgt im 2-Komplement.
                  8177  
2D2B   FD213A5C   8178  M2D2B:   LD IY,ERRNR
                              SP                                PAGE 142
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2D2F   AF         8179     XOR A
2D30   5F         8180     LD E,A
2D31   51         8181     LD D,C
2D32   48         8182     LD C,B
2D33   47         8183     LD B,A
2D34   CDB62A     8184     CALL M2AB6
2D37   EF         8185     RST CALRUF
2D38   38         8186     DEFB 38H
                  8187  
2D39   A7         8188     AND A
2D3A   C9         8189     RET
                  8190  
                  8191  ;Subroutine zum Einlesen ganzzahliger Dezimalzahlen als
                  8192  ;letzten Wert auf dem Calc.-Stack. Aufruf erfolgt z.B.
                  8193  ;beim Einlesen einer Dezimalzahl aus einer BASIC-Zeile.
                  8194  ;(siehe (DEZFLO)
                  8195  
2D3B   F5         8196  M2D3B:   PUSH AF
2D3C   EF         8197     RST CALRUF
2D3D   A0         8198     DEFB 0A0H
2D3E   38         8199     DEFB 38H
                  8200  
2D3F   F1         8201     POP AF
2D40   CD222D     8202  M2D40:   CALL M2D22
2D43   D8         8203     RET C
2D44   EF         8204     RST CALRUF
2D45   01         8205     DEFB 1
2D46   A4         8206     DEFB 0A4H
2D47   04         8207     DEFB 4
2D48   0F         8208     DEFB 0FH
2D49   38         8209     DEFB 38H
                  8210  
2D4A   CD7400     8211     CALL M0074
2D4D   18F1       8212     JR M2D40
                  8213  
                  8214  ;Arithmetische Routinen
                  8215  
                  8216  ;Wandlung von Dezimalzahlen mit Mantisse/Exponent-
                  8217  ;Darstellung (xEn) in eine Floatingpointzahl. X steht
                  8218  ;als letzter Wert bereits auf dem Calc.-Stack.
                  8219  
2D4F   07         8220  M2D4F:   RLCA
2D50   0F         8221     RRCA
2D51   3002       8222     JR NC,M2D55
2D53   2F         8223     CPL
2D54   3C         8224     INC A
2D55   F5         8225  M2D55:   PUSH AF
2D56   21925C     8226     LD HL,MEMBOT   ;Calculatorspeicher
2D59   CD0B35     8227     CALL M350B
2D5C   EF         8228     RST CALRUF
2D5D   A4         8229     DEFB 0A4H
2D5E   38         8230     DEFB 38H
                  8231  
2D5F   F1         8232     POP AF
2D60   CB3F       8233  EXSCHL:  SRL A
2D62   300D       8234     JR NC,M2D71
2D64   F5         8235     PUSH AF
2D6?   E?         823?          RS? CALRUF
                              SP                                PAGE 143
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2D66   C1         8237     DEFB 0C1H
2D67   E0         8238     DEFB 0E0H
2D68   00         8239     DEFB 0
2D69   04         8240     DEFB EXDIV-$
2D6A   04         8241     DEFB 4
2D6B   33         8242     DEFB 33H
2D6C   02         8243     DEFB EXGET1-$
2D6D   05         8244  EXDIV:   DEFB 5
2D6E   E1         8245  EXGET1:  DEFB 0E1H
2D6F   38         8246     DEFB 38H
                  8247  
2D70   F1         8248     POP AF
2D71   2808       8249  M2D71:   JR Z,M2D7B
2D73   F5         8250     PUSH AF
2D74   EF         8251     RST CALRUF
2D75   31         8252     DEFB 31H
2D76   04         8253     DEFB 4
2D77   38         8254     DEFB 38H
                  8255  
2D78   F1         8256     POP AF
2D79   18E5       8257     JR EXSCHL
                  8258  
2D7B   EF         8259  M2D7B:   RST CALRUF
2D7C   02         8260     DEFB 2
2D7D   38         8261     DEFB 38H
2D7E   C9         8262     RET
                  8263  
                  8264  ;Subroutine zum Holen einer Integerzahl vom Calc.-Stack
                  8265  
2D7F   23         8266  M2D7F:   INC HL
2D80   4E         8267     LD C,(HL)
2D81   23         8268     INC HL
2D82   7E         8269     LD A,(HL)
2D83   A9         8270     XOR C
2D84   91         8271     SUB C
2D85   5F         8272     LD E,A
2D86   23         8273     INC HL
2D87   7E         8274     LD A,(HL)
2D88   89         8275     ADC A,C
2D89   A9         8276     XOR C
2D8A   57         8277     LD D,A
2D8B   C9         8278     RET
                  8279  
                  8280  ;Subroutine zum Abspeichern einer Integegerzahl auf dem
                  8281  ;Calc.-Stack
                  8282  
2D8C   0E00       8283  M2D8C:   LD C,0
2D8E   E5         8284  M2D8E:   PUSH HL
2D8F   3600       8285     LD (HL),0
2D91   23         8286     INC HL
2D92   71         8287     LD (HL),C
2D93   23         8288     INC HL
2D94   7B         8289     LD A,E
2D95   A9         8290     XOR C
2D96   91         8291     SUB C
2D97   77         8292     LD (HL),A
2D98   23         8293     INC HL
2D99   7A         8294     LD A,D
                              SP                                PAGE 144
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2D9A   89         8295     ADC A,C
2D9B   A9         8296     XOR C
2D9C   77         8297     LD (HL),A
2D9D   23         8298     INC HL
2D9E   3600       8299     LD (HL),0
2DA0   E1         8300     POP HL
2DA1   C9         8301     RET
                  8302  
                  8303  ;Subroutine zum Wandeln einer Floatingpointzahl in eine
                  8304  ;Integerzahl und Uebertragen des Ergebnisses in BC
                  8305  
2DA2   EF         8306  M2DA2:   RST CALRUF
2DA3   38         8307     DEFB 38H
2DA4   7E         8308     LD A,(HL)
2DA5   A7         8309     AND A
2DA6   2805       8310     JR Z,M2DAD
2DA8   EF         8311     RST CALRUF
2DA9   A2         8312     DEFB 0A2H
2DAA   0F         8313     DEFB 0FH
2DAB   27         8314     DEFB 27H
2DAC   38         8315     DEFB 38H
                  8316  
2DAD   EF         8317  M2DAD:   RST CALRUF
2DAE   02         8318     DEFB 2
2DAF   38         8319     DEFB 38H
                  8320  
2DB0   E5         8321     PUSH HL
2DB1   D5         8322     PUSH DE
2DB2   EB         8323     EX DE,HL
2DB3   46         8324     LD B,(HL)
2DB4   CD7F2D     8325     CALL M2D7F
2DB7   AF         8326     XOR A
2DB8   90         8327     SUB B
2DB9   CB79       8328     BIT 7,C
2DBB   42         8329     LD B,D
2DBC   4B         8330     LD C,E
2DBD   7B         8331     LD A,E
2DBE   D1         8332     POP DE
2DBF   E1         8333     POP HL
2DC0   C9         8334     RET
                  8335  
                  8336  ;Subroutine zum Berechnen von LOG(2^A). A enthaelt den
                  8337  ;Exponent einer Floatingpointzahl. Die Berechnung dient
                  8338  ;zum Bestimmen der Vorkommastellen einer auszugebenden
                  8339  ;Dezimalzahl oder der auf den Dezimalpunkt folgenden Nullen.
                  8340  
2DC1   57         8341  LOG2A:   LD D,A
2DC2   17         8342     RLA
2DC3   9F         8343     SBC A,A
2DC4   5F         8344     LD E,A
2DC5   4F         8345     LD C,A
2DC6   AF         8346     XOR A
2DC7   47         8347     LD B,A
2DC8   CDB62A     8348     CALL M2AB6
2DCB   EF         8349     RST CALRUF
2DCC   34         8350     DEFB 34H
2DCD   EF         8351     DEFB 0EFH
2DCE   1A         8352     DEFB 1AH
                              SP                                PAGE 145
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2DCF   20         8353     DEFB 20H
2DD0   9A         8354     DEFB 9AH
2DD1   85         8355     DEFB 85H
2DD2   04         8356     DEFB 4
2DD3   27         8357     DEFB 27H
2DD4   38         8358     DEFB 38H
                  8359  
                  8360  ;Floatingpointzahl in eine Integerzahl von einem Byte wandeln,
                  8361  ;Ergebnis in A. Wenn das Ergebnis >255 ist, erfolgt eine ERROR-
                  8362  ;Meldung.
                  8363
                  8364
                  8365  
2DD5   CDA22D     8366  M2DD5:   CALL M2DA2
2DD8   D8         8367     RET C
2DD9   F5         8368     PUSH AF
2DDA   05         8369     DEC B
2DDB   04         8370     INC B
2DDC   2803       8371     JR Z,M2DE1
2DDE   F1         8372     POP AF
2DDF   37         8373     SCF
2DE0   C9         8374     RET
                  8375  
2DE1   F1         8376  M2DE1:   POP AF
2DE2   C9         8377     RET
                  8378  
                  8379  ;Subroutine zum Ausgeben einer Floatingpointzahl durch 'PRINT'-
                  8380  ;oder 'STR$'-Befehl
                  8381  
2DE3   EF         8382  M2DE3:   RST CALRUF
2DE4   31         8383     DEFB 31H
2DE5   36         8384     DEFB 36H
2DE6   00         8385     DEFB 0
2DE7   0B         8386     DEFB FPNEGA-$
2DE8   31         8387     DEFB 31H
2DE9   37         8388     DEFB 37H
2DEA   00         8389     DEFB 0
2DEB   0D         8390     DEFB FPPOSI-$
2DEC   02         8391     DEFB 2
2DED   38         8392     DEFB 38H
                  8393  
2DEE   3E30       8394     LD A,'0'
2DF0   D7         8395     RST PRTOUT
2DF1   C9         8396     RET
                  8397






? e? folg? wege? de? unterschiedliche? Printformat? (? Bi?  1? Bi?  System? )
? ei? neue? Listing-Block Dami? wiede? Seiten-Nr a? 00? !





                              SP                                PAGE   1
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  8398  ;Fuer negative Zahlen erst ein Minuszeichen ausgeben und
                  8399  ;dann ABS(X) bilden, so dass die Zahl im weiteren wie eine
                  8400  ;Positive behandelt werden kann.
                  8401  
2DF2   2A         8402  FPNEGA:  DEFB 2AH
2DF3   38         8403     DEFB 38H
                  8404  
2DF4   3E2D       8405     LD A,'-'
2DF6   D7         8406     RST PRTOUT
2DF7   EF         8407     RST CALRUF
                  8408  
                  8409  ;Xist im folgenden ABS(X)
                  8410  
2DF8   A0         8411  FPPOSI:  DEFB 0A0H
2DF9   C3         8412     DEFB 0C3H
2DFA   C4         8413     DEFB 0C4H
2DFB   C5         8414     DEFB 0C5H
2DFC   02         8415     DEFB 2
2DFD   38         8416     DEFB 38H
                  8417  
..pa
                              SP                                PAGE   2
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9
2DFE   D9         8418     EXX
2DFF   E5         8419     PUSH HL
2E00   D9         8420     EXX
2E01   EF         8421  M2E01:   RST CALRUF
2E02   31         8422     DEFB 31H
2E03   27         8423     DEFB 27H
2E04   C2         8424     DEFB 0C2H
2E05   03         8425     DEFB 3
2E06   E2         8426     DEFB 0E2H
2E07   01         8427     DEFB 1
2E08   C2         8428     DEFB 0C2H
2E09   02         8429     DEFB 2
2E0A   38         8430     DEFB 38H
                  8431  
2E0B   7E         8432     LD A,(HL)
2E0C   A7         8433     AND A
2E0D   2047       8434     JR NZ,M2E56
2E0F   CD7F2D     8435     CALL M2D7F
2E12   0610       8436     LD B,10H
2E14   7A         8437     LD A,D
2E15   A7         8438     AND A
2E16   2006       8439     JR NZ,M2E1E
2E18   B3         8440     OR E
2E19   2809       8441     JR Z,M2E24
2E1B   53         8442     LD D,E
2E1C   0608       8443     LD B,8
2E1E   D5         8444  M2E1E:   PUSH DE
2E1F   D9         8445     EXX
2E20   D1         8446     POP DE
2E21   D9         8447     EXX
2E22   1857       8448     JR M2E7B
                  8449  
                  8450  ;Bearbeitung, wenn nur ein Nachkommateil vorhanden
                  8451  
2E24   EF         8452  M2E24:   RST CALRUF
2E25   E2         8453     DEFB 0E2H
2E26   38         8454     DEFB 38H
                  8455  
2E27   7E         8456     LD A,(HL)
2E28   D67E       8457     SUB 7EH
2E2A   CDC12D     8458     CALL LOG2A
2E2D   57         8459     LD D,A
2E2E   3AAC5C     8460     LD A,(5CACH)
2E31   92         8461     SUB D
2E32   32AC5C     8462     LD (5CACH),A
2E35   7A         8463     LD A,D
2E36   CD4F2D     8464     CALL M2D4F
2E39   EF         8465     RST CALRUF
2E3A   31         8466     DEFB 31H
2E3B   27         8467     DEFB 27H
2E3C   C1         8468     DEFB 0C1H
2E3D   03         8469     DEFB 3
2E3E   E1         8470     DEFB 0E1H
2E3F   38         8471     DEFB 38H
                  8472  
2E40   CDD52D     8473     CALL M2DD5
2E43   E5         8474     PUSH HL
2E44   32A15C     8475     LD (5CA1H),A
2E47   3D         8476     DEC A
                              SP                                PAGE   3
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2E48   17         8477     RLA
2E49   9F         8478     SBC A,A
2E4A   3C         8479     INC A
2E4B   21AB5C     8480     LD HL,5CABH
2E4E   77         8481     LD (HL),A
2E4F   23         8482     INC HL
2E50   86         8483     ADD A,(HL)
2E51   77         8484     LD (HL),A
2E52   E1         8485     POP HL
2E53   C3CF2E     8486     JP M2ECF
                  8487  
                  8488  ;Zahlen, die groesser als 2^27 sind, werden so bearbeitet,
                  8489  ;dass 8 Stellen vor dem Komma ausgegeben werden.
                  8490  
2E56   D680       8491  M2E56:   SUB 80H
2E58   FE1C       8492     CP 28
2E5A   3813       8493     JR C,M2E6F
2E5C   CDC12D     8494     CALL LOG2A
2E5F   D607       8495     SUB 7
2E61   47         8496     LD B,A
2E62   21AC5C     8497     LD HL,5CACH
2E65   86         8498     ADD A,(HL)
2E66   77         8499     LD (HL),A
2E67   78         8500     LD A,B
2E68   ED44       8501     NEG
2E6A   CD4F2D     8502     CALL M2D4F
2E6D   1892       8503     JR M2E01
                  8504  
                  8505  ;Integerteil von X in den Ausgabepuffer MEM3 und MEM4
                  8506  ;speichern
                  8507  
2E6F   EB         8508  M2E6F:   EX DE,HL
2E70   CDBA2F     8509     CALL M2FBA
2E73   D9         8510     EXX
2E74   CBFA       8511     SET 7,D
2E76   7D         8512     LD A,L
2E77   D9         8513     EXX
2E78   D680       8514     SUB 80H
2E7A   47         8515     LD B,A
2E7B   CB23       8516  M2E7B:   SLA E
2E7D   CB12       8517     RL D
2E7F   D9         8518     EXX
2E80   CB13       8519     RL E
2E82   CB12       8520     RL D
2E84   D9         8521     EXX
2E85   21AA5C     8522     LD HL,5CAAH
2E88   0E05       8523     LD C,5
2E8A   7E         8524  M2E8A:   LD A,(HL)
2E8B   8F         8525     ADC A,A
2E8C   27         8526     DAA
2E8D   77         8527     LD (HL),A
2E8E   2B         8528     DEC HL
2E8F   0D         8529     DEC C
2E90   20F8       8530     JR NZ,M2E8A
2E92   10E7       8531     DJNZ M2E7B
                  8532  
                  8533  ;Das Ergbenis liegt nunmehr gepackt in MEM4 vor. Dieses wird
                  8534  ;jetzt auf insgesamt 9 Bytes, pro Stelle ein Byte, aufgeteilt
                              SP                                PAGE   4
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  8535  ;nach MEM3 und MEM4.
                  8536  
2E94   AF         8537     XOR A
2E95   21A65C     8538     LD HL,5CA6H
2E98   11A15C     8539     LD DE,5CA1H
2E9B   0609       8540     LD B,9
2E9D   ED6F       8541     RLD
2E9F   0EFF       8542     LD C,0FFH
2EA1   ED6F       8543  M2EA1:   RLD
2EA3   2004       8544     JR NZ,M2EA9
2EA5   0D         8545     DEC C
2EA6   0C         8546     INC C
2EA7   200A       8547     JR NZ,M2EB3
2EA9   12         8548  M2EA9:   LD (DE),A
2EAA   13         8549     INC DE
2EAB   FD3471     8550     INC (IY+71H)
2EAE   FD3472     8551     INC (IY+72H)
2EB1   0E00       8552     LD C,0
2EB3   CB40       8553  M2EB3:   BIT 0,B
2EB5   2801       8554     JR Z,M2EB8
2EB7   23         8555     INC HL
2EB8   10E7       8556  M2EB8:   DJNZ M2EA1
2EBA   3AAB5C     8557     LD A,(5CABH)
2EBD   D609       8558     SUB 9
2EBF   380A       8559     JR C,M2ECB
2EC1   FD3571     8560     DEC (IY+71H)
2EC4   3E04       8561     LD A,4
2EC6   FDBE6F     8562     CP (IY+6FH)
2EC9   1841       8563     JR DEZRND
                  8564  
                  8565  ;Die Nachkommastellen werden jetzt im Ausgabepuffer
                  8566  ;abgelegt.
                  8567  
2ECB   EF         8568  M2ECB:   RST CALRUF
2ECC   02         8569     DEFB 2
2ECD   E2         8570     DEFB 0E2H
2ECE   38         8571     DEFB 38H
                  8572  
2ECF   EB         8573  M2ECF:   EX DE,HL
2ED0   CDBA2F     8574     CALL M2FBA
2ED3   D9         8575     EXX
2ED4   3E80       8576     LD A,80H
2ED6   95         8577     SUB L
2ED7   2E00       8578     LD L,0
2ED9   CBFA       8579     SET 7,D
2EDB   D9         8580     EXX
2EDC   CDDD2F     8581     CALL SHIFTF
2EDF   FD7E71     8582  M2EDF:   LD A,(IY+71H)
2EE2   FE08       8583     CP 8
2EE4   3806       8584     JR C,M2EEC
2EE6   D9         8585     EXX
2EE7   CB12       8586     RL D
2EE9   D9         8587     EXX
2EEA   1820       8588     JR DEZRND
                  8589  
2EEC   010002     8590  M2EEC:   LD BC,200H
2EEF   7B         8591  M2EEF:   LD A,E
2EF0   CD8B2F     8592     CALL M2F8B
                              SP                                PAGE   5
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2EF3   5F         8593     LD E,A
2EF4   7A         8594     LD A,D
2EF5   CD8B2F     8595     CALL M2F8B
2EF8   57         8596     LD D,A
2EF9   C5         8597     PUSH BC
2EFA   D9         8598     EXX
2EFB   C1         8599     POP BC
2EFC   10F1       8600     DJNZ M2EEF
2EFE   21A15C     8601     LD HL,5CA1H
2F01   79         8602     LD A,C
2F02   FD4E71     8603     LD C,(IY+71H)
2F05   09         8604     ADD HL,BC
2F06   77         8605     LD (HL),A
2F07   FD3471     8606     INC (IY+71H)
2F0A   18D3       8607     JR M2EDF
                  8608  
                  8609  ;die Dezimalstellen runden
                  8610  
2F0C   F5         8611  DEZRND:  PUSH AF
2F0D   21A15C     8612     LD HL,5CA1H
2F10   FD4E71     8613     LD C,(IY+71H)
2F13   0600       8614     LD B,0
2F15   09         8615     ADD HL,BC
2F16   41         8616     LD B,C
2F17   F1         8617     POP AF
2F18   2B         8618  M2F18:   DEC HL
2F19   7E         8619     LD A,(HL)
2F1A   CE00       8620     ADC A,0
2F1C   77         8621     LD (HL),A
2F1D   A7         8622     AND A
2F1E   2805       8623     JR Z,M2F25
2F20   FE0A       8624     CP 0AH
2F22   3F         8625     CCF
2F23   3008       8626     JR NC,M2F2D
2F25   10F1       8627  M2F25:   DJNZ M2F18
2F27   3601       8628     LD (HL),1
2F29   04         8629     INC B
2F2A   FD3472     8630     INC (IY+72H)
2F2D   FD7071     8631  M2F2D:   LD (IY+71H),B
2F30   EF         8632     RST CALRUF
2F31   02         8633     DEFB 2
2F32   38         8634     DEFB 38H
                  8635  
2F33   D9         8636     EXX
2F34   E1         8637     POP HL
2F35   D9         8638     EXX
                  8639  
                  8640  ;die Zahl kann ausgegeben werden
                  8641  
2F36   ED4BAB5C   8642     LD BC,(5CABH)
2F3A   21A15C     8643     LD HL,5CA1H
2F3D   78         8644     LD A,B
2F3E   FE09       8645     CP 9
2F40   3804       8646     JR C,M2F46
2F42   FEFC       8647     CP 0FCH
2F44   3826       8648     JR C,M2F6C
2F46   A7         8649  M2F46:   AND A
2F47   CCEF15     8650     CALL Z,M15EF
                              SP                                PAGE   6
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2F4A   AF         8651  M2F4A:   XOR A
2F4B   90         8652     SUB B
2F4C   FA522F     8653     JP M,M2F52
2F4F   47         8654     LD B,A
2F50   180C       8655     JR M2F5E
                  8656  
                  8657  ;die Stellen vor dem Punkt ausgeben
                  8658  
2F52   79         8659  M2F52:   LD A,C
2F53   A7         8660     AND A
2F54   2803       8661     JR Z,M2F59
2F56   7E         8662     LD A,(HL)
2F57   23         8663     INC HL
2F58   0D         8664     DEC C
2F59   CDEF15     8665  M2F59:   CALL M15EF
2F5C   10F4       8666     DJNZ M2F52
2F5E   79         8667  M2F5E:   LD A,C
2F5F   A7         8668     AND A
2F60   C8         8669     RET Z
2F61   04         8670     INC B
2F62   3E2E       8671     LD A,'.'
2F64   D7         8672  M2F64:   RST PRTOUT
2F65   3E30       8673     LD A,'0'
2F67   10FB       8674     DJNZ M2F64
2F69   41         8675     LD B,C
2F6A   18E6       8676     JR M2F52
                  8677  
                  8678  ;Einstieg, wenn die Zahl in Exponentialformat
                  8679  ;gedruckt werden muss
                  8680  
2F6C   50         8681  M2F6C:   LD D,B
2F6D   15         8682     DEC D
2F6E   0601       8683     LD B,1
2F70   CD4A2F     8684     CALL M2F4A
2F73   3E45       8685     LD A,'E'
2F75   D7         8686     RST PRTOUT
2F76   4A         8687     LD C,D
2F77   79         8688     LD A,C
2F78   A7         8689     AND A
2F79   F2832F     8690     JP P,M2F83
2F7C   ED44       8691     NEG
2F7E   4F         8692     LD C,A
2F7F   3E2D       8693     LD A,'-'
2F81   1802       8694     JR M2F85
                  8695  
2F83   3E2B       8696  M2F83:   LD A,'+'
2F85   D7         8697  M2F85:   RST PRTOUT
2F86   0600       8698     LD B,0
2F88   C31B1A     8699     JP M1A1B
                  8700  
                  8701  ;Subroutine zum Berechnen von 10*(A)+(C)
                  8702  
2F8B   D5         8703  M2F8B:   PUSH DE
2F8C   6F         8704     LD L,A
2F8D   2600       8705     LD H,0
2F8F   5D         8706     LD E,L
2F90   54         8707     LD D,H
2F91   29         8708     ADD HL,HL
                              SP                                PAGE   7
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2F92   29         8709     ADD HL,HL
2F93   19         8710     ADD HL,DE
2F94   29         8711     ADD HL,HL
2F95   59         8712     LD E,C
2F96   19         8713     ADD HL,DE
2F97   4C         8714     LD C,H
2F98   7D         8715     LD A,L
2F99   D1         8716     POP DE
2F9A   C9         8717     RET
                  8718  
                  8719  ;Subroutine zum Vorbereiten der Addition einer
                  8720  ;Floatingpointzahl
                  8721  
2F9B   7E         8722  M2F9B:   LD A,(HL)
2F9C   3600       8723     LD (HL),0
2F9E   A7         8724     AND A
2F9F   C8         8725     RET Z
2FA0   23         8726     INC HL
2FA1   CB7E       8727     BIT 7,(HL)
2FA3   CBFE       8728     SET 7,(HL)
2FA5   2B         8729     DEC HL
2FA6   C8         8730     RET Z
2FA7   C5         8731     PUSH BC
2FA8   010500     8732     LD BC,5
2FAB   09         8733     ADD HL,BC
2FAC   41         8734     LD B,C
2FAD   4F         8735     LD C,A
2FAE   37         8736     SCF
2FAF   2B         8737  M2FAF:   DEC HL
2FB0   7E         8738     LD A,(HL)
2FB1   2F         8739     CPL
2FB2   CE00       8740     ADC A,0
2FB4   77         8741     LD (HL),A
2FB5   10F8       8742     DJNZ M2FAF
2FB7   79         8743     LD A,C
2FB8   C1         8744     POP BC
2FB9   C9         8745     RET
                  8746  
                  8747  ;Subroutine zum Laden von 2 Floatingpointzahlen in die
                  8748  ;Prozessorregister. HL zeigt auf 1. Byte der ersten und
                  8749  ;DE auf 1.Byte der zweiten Zahl.
                  8750  ;Zahl 1: M1 - M5 in H',B',C',C,B
                  8751  ;Zahl 2: M1 - M5 in L',D',E',D,E
                  8752  
2FBA   E5         8753  M2FBA:   PUSH HL
2FBB   F5         8754     PUSH AF
2FBC   4E         8755     LD C,(HL)
2FBD   23         8756     INC HL
2FBE   46         8757     LD B,(HL)
2FBF   77         8758     LD (HL),A
2FC0   23         8759     INC HL
2FC1   79         8760     LD A,C
2FC2   4E         8761     LD C,(HL)
2FC3   C5         8762     PUSH BC
2FC4   23         8763     INC HL
2FC5   4E         8764     LD C,(HL)
2FC6   23         8765     INC HL
2FC7   46         8766     LD B,(HL)
                              SP                                PAGE   8
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

2FC8   EB         8767     EX DE,HL
2FC9   57         8768     LD D,A
2FCA   5E         8769     LD E,(HL)
2FCB   D5         8770     PUSH DE
2FCC   23         8771     INC HL
2FCD   56         8772     LD D,(HL)
2FCE   23         8773     INC HL
2FCF   5E         8774     LD E,(HL)
2FD0   D5         8775     PUSH DE
2FD1   D9         8776     EXX
2FD2   D1         8777     POP DE
2FD3   E1         8778     POP HL
2FD4   C1         8779     POP BC
2FD5   D9         8780     EXX
2FD6   23         8781     INC HL
2FD7   56         8782     LD D,(HL)
2FD8   23         8783     INC HL
2FD9   5E         8784     LD E,(HL)
2FDA   F1         8785     POP AF
2FDB   E1         8786     POP HL
2FDC   C9         8787     RET
                  8788  
                  8789  ;Subroutine zum Shiften einer Zahl um maximal 32 Bits
                  8790  ;fuer eine Addition (Exponentenangleich)
                  8791  
2FDD   A7         8792  SHIFTF:  AND A
2FDE   C8         8793     RET Z
2FDF   FE21       8794     CP 33
2FE1   3016       8795     JR NC,ADDNUL
2FE3   C5         8796     PUSH BC
2FE4   47         8797     LD B,A
2FE5   D9         8798  SHIFTB:  EXX
2FE6   CB2D       8799     SRA L
2FE8   CB1A       8800     RR D
2FEA   CB1B       8801     RR E
2FEC   D9         8802     EXX
2FED   CB1A       8803     RR D
2FEF   CB1B       8804     RR E
2FF1   10F2       8805     DJNZ SHIFTB
2FF3   C1         8806     POP BC
2FF4   D0         8807     RET NC
2FF5   CD0430     8808     CALL M3004
2FF8   C0         8809     RET NZ
2FF9   D9         8810  ADDNUL:  EXX
2FFA   AF         8811     XOR A
2FFB   2E00       8812  M2FFB:   LD L,0
2FFD   57         8813     LD D,A
2FFE   5D         8814     LD E,L
2FFF   D9         8815     EXX
3000   110000     8816     LD DE,0
3003   C9         8817     RET
                  8818  
                  8819  ;Subroutine zum Addieren eines Carrys bei der Rechtsver-
                  8820  ;schiebung einer Zahl
                  8821  
3004   1C         8822  M3004:   INC E
3005   C0         8823     RET NZ
3006   14         8824     INC D
                              SP                                PAGE   9
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3007   C0         8825     RET NZ
3008   D9         8826     EXX
3009   1C         8827     INC E
300A   2001       8828     JR NZ,M300D
300C   14         8829     INC D
300D   D9         8830  M300D:   EXX
300E   C9         8831     RET
                  8832  
                  8833  ;Subtraktion zweier Floatingpointzahlen
                  8834  
300F   EB         8835  SUBTRA:  EX DE,HL
3010   CD6E34     8836     CALL NEGIER
3013   EB         8837     EX DE,HL
                  8838  
                  8839  ;Subroutine zum Addieren zweier Floatingpointzahlen
                  8840  ;auf dem Calc.-Stack zu einem 'letzten Wert'
                  8841  
3014   1A         8842  ADDIER:  LD A,(DE)
3015   B6         8843     OR (HL)
3016   2026       8844     JR NZ,M303E
                  8845  
                  8846  ;Addition von Integerzahlen
                  8847  
3018   D5         8848     PUSH DE
3019   23         8849     INC HL
301A   E5         8850     PUSH HL
301B   23         8851     INC HL
301C   5E         8852     LD E,(HL)
301D   23         8853     INC HL
301E   56         8854     LD D,(HL)
301F   23         8855     INC HL
3020   23         8856     INC HL
3021   23         8857     INC HL
3022   7E         8858     LD A,(HL)
3023   23         8859     INC HL
3024   4E         8860     LD C,(HL)
3025   23         8861     INC HL
3026   46         8862     LD B,(HL)
3027   E1         8863     POP HL
3028   EB         8864     EX DE,HL
3029   09         8865     ADD HL,BC
302A   EB         8866     EX DE,HL
302B   8E         8867     ADC A,(HL)
302C   0F         8868     RRCA
302D   CE00       8869     ADC A,0
302F   200B       8870     JR NZ,M303C
3031   9F         8871     SBC A,A
3032   77         8872     LD (HL),A
3033   23         8873     INC HL
3034   73         8874     LD (HL),E
3035   23         8875     INC HL
3036   72         8876     LD (HL),D
3037   2B         8877     DEC HL
3038   2B         8878     DEC HL
3039   2B         8879     DEC HL
303A   D1         8880     POP DE
303B   C9         8881     RET
                  8882  
                              SP                                PAGE  10
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

303C   2B         8883  M303C:   DEC HL
303D   D1         8884     POP DE
303E   CD9332     8885  M303E:   CALL M3293
                  8886  
                  8887  ;volle Addition zweier Zahlen (keine Integerzahlen)
                  8888  
3041   D9         8889     EXX
3042   E5         8890     PUSH HL
3043   D9         8891     EXX
3044   D5         8892     PUSH DE
3045   E5         8893     PUSH HL
3046   CD9B2F     8894     CALL M2F9B
3049   47         8895     LD B,A
304A   EB         8896     EX DE,HL
304B   CD9B2F     8897     CALL M2F9B
304E   4F         8898     LD C,A
304F   B8         8899     CP B
3050   3003       8900     JR NC,M3055
3052   78         8901     LD A,B
3053   41         8902     LD B,C
3054   EB         8903     EX DE,HL
3055   F5         8904  M3055:   PUSH AF
3056   90         8905     SUB B
3057   CDBA2F     8906     CALL M2FBA
305A   CDDD2F     8907     CALL SHIFTF
305D   F1         8908     POP AF
305E   E1         8909     POP HL
305F   77         8910     LD (HL),A
3060   E5         8911     PUSH HL
3061   68         8912     LD L,B
3062   61         8913     LD H,C
3063   19         8914     ADD HL,DE
3064   D9         8915     EXX
3065   EB         8916     EX DE,HL
3066   ED4A       8917     ADC HL,BC
3068   EB         8918     EX DE,HL
3069   7C         8919     LD A,H
306A   8D         8920     ADC A,L
306B   6F         8921     LD L,A
306C   1F         8922     RRA
306D   AD         8923     XOR L
306E   D9         8924     EXX
306F   EB         8925     EX DE,HL
3070   E1         8926     POP HL
3071   1F         8927     RRA
3072   3008       8928     JR NC,M307C
3074   3E01       8929     LD A,1
3076   CDDD2F     8930     CALL SHIFTF
3079   34         8931     INC (HL)
307A   2823       8932     JR Z,M309F
307C   D9         8933  M307C:   EXX
307D   7D         8934     LD A,L
307E   E680       8935     AND 80H
3080   D9         8936     EXX
3081   23         8937     INC HL
3082   77         8938     LD (HL),A
3083   2B         8939     DEC HL
3084   281F       8940     JR Z,M30A5
                              SP                                PAGE  11
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3086   7B         8941     LD A,E
3087   ED44       8942     NEG
3089   3F         8943     CCF
308A   5F         8944     LD E,A
308B   7A         8945     LD A,D
308C   2F         8946     CPL
308D   CE00       8947     ADC A,0
308F   57         8948     LD D,A
3090   D9         8949     EXX
3091   7B         8950     LD A,E
3092   2F         8951     CPL
3093   CE00       8952     ADC A,0
3095   5F         8953     LD E,A
3096   7A         8954     LD A,D
3097   2F         8955     CPL
3098   CE00       8956     ADC A,0
309A   3007       8957     JR NC,M30A3
309C   1F         8958     RRA
309D   D9         8959     EXX
309E   34         8960     INC (HL)
309F   CAAD31     8961  M309F:   JP Z,M31AD
30A2   D9         8962     EXX
30A3   57         8963  M30A3:   LD D,A
30A4   D9         8964     EXX
30A5   AF         8965  M30A5:   XOR A
30A6   C35531     8966     JP TSTNOR
                  8967  
                  8968  ;Subroutine zum Berechnen von HL=DE*HL
                  8969  
30A9   C5         8970  M30A9:   PUSH BC
30AA   0610       8971     LD B,10H
30AC   7C         8972     LD A,H
30AD   4D         8973     LD C,L
30AE   210000     8974     LD HL,0
30B1   29         8975  M30B1:   ADD HL,HL
30B2   380A       8976     JR C,M30BE
30B4   CB11       8977     RL C
30B6   17         8978     RLA
30B7   3003       8979     JR NC,M30BC
30B9   19         8980     ADD HL,DE
30BA   3802       8981     JR C,M30BE
30BC   10F3       8982  M30BC:   DJNZ M30B1
30BE   C1         8983  M30BE:   POP BC
30BF   C9         8984     RET
                  8985  
                  8986  ;Subroutine zum Vorbereiten einer Multiplikation oder
                  8987  ;Division
                  8988  
30C0   CDE934     8989  M30C0:   CALL M34E9
30C3   D8         8990     RET C
30C4   23         8991     INC HL
30C5   AE         8992     XOR (HL)
30C6   CBFE       8993     SET 7,(HL)
30C8   2B         8994     DEC HL
30C9   C9         8995     RET
                  8996  
                  8997  ;Subroutine Multiplikation
                  8998  
                              SP                                PAGE  12
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

30CA   1A         8999  MULTIP:  LD A,(DE)
30CB   B6         9000     OR (HL)
30CC   2022       9001     JR NZ,M30F0
30CE   D5         9002     PUSH DE
30CF   E5         9003     PUSH HL
30D0   D5         9004     PUSH DE
30D1   CD7F2D     9005     CALL M2D7F
30D4   EB         9006     EX DE,HL
30D5   E3         9007     EX (SP),HL
30D6   41         9008     LD B,C
30D7   CD7F2D     9009     CALL M2D7F
30DA   78         9010     LD A,B
30DB   A9         9011     XOR C
30DC   4F         9012     LD C,A
30DD   E1         9013     POP HL
30DE   CDA930     9014     CALL M30A9
30E1   EB         9015     EX DE,HL
30E2   E1         9016     POP HL
30E3   380A       9017     JR C,M30EF
30E5   7A         9018     LD A,D
30E6   B3         9019     OR E
30E7   2001       9020     JR NZ,M30EA
30E9   4F         9021     LD C,A
30EA   CD8E2D     9022  M30EA:   CALL M2D8E
30ED   D1         9023     POP DE
30EE   C9         9024     RET
                  9025  
30EF   D1         9026  M30EF:   POP DE
30F0   CD9332     9027  M30F0:   CALL M3293
30F3   AF         9028     XOR A
30F4   CDC030     9029     CALL M30C0
30F7   D8         9030     RET C
30F8   D9         9031     EXX
30F9   E5         9032     PUSH HL
30FA   D9         9033     EXX
30FB   D5         9034     PUSH DE
30FC   EB         9035     EX DE,HL
30FD   CDC030     9036     CALL M30C0
3100   EB         9037     EX DE,HL
3101   385A       9038     JR C,M315D
3103   E5         9039     PUSH HL
3104   CDBA2F     9040     CALL M2FBA
3107   78         9041     LD A,B
3108   A7         9042     AND A
3109   ED62       9043     SBC HL,HL
310B   D9         9044     EXX
310C   E5         9045     PUSH HL
310D   ED62       9046     SBC HL,HL
310F   D9         9047     EXX
3110   0621       9048     LD B,21H
3112   1811       9049     JR M3125
                  9050  
3114   3005       9051  M3114:   JR NC,M311B
3116   19         9052     ADD HL,DE
3117   D9         9053     EXX
3118   ED5A       9054     ADC HL,DE
311A   D9         9055     EXX
311B   D9         9056  M311B:   EXX
                              SP                                PAGE  13
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

311C   CB1C       9057     RR H
311E   CB1D       9058     RR L
3120   D9         9059     EXX
3121   CB1C       9060     RR H
3123   CB1D       9061     RR L
3125   D9         9062  M3125:   EXX
3126   CB18       9063     RR B
3128   CB19       9064     RR C
312A   D9         9065     EXX
312B   CB19       9066     RR C
312D   1F         9067     RRA
312E   10E4       9068     DJNZ M3114
3130   EB         9069     EX DE,HL
3131   D9         9070     EXX
3132   EB         9071     EX DE,HL
3133   D9         9072     EXX
3134   C1         9073     POP BC
3135   E1         9074     POP HL
3136   78         9075     LD A,B
3137   81         9076     ADD A,C
3138   2001       9077     JR NZ,M313B
313A   A7         9078     AND A
313B   3D         9079  M313B:   DEC A
313C   3F         9080     CCF
313D   17         9081  M313D:   RLA
313E   3F         9082     CCF
313F   1F         9083     RRA
3140   F24631     9084     JP P,M3146
3143   3068       9085     JR NC,M31AD
3145   A7         9086     AND A
3146   3C         9087  M3146:   INC A
3147   2008       9088     JR NZ,M3151
3149   3806       9089     JR C,M3151
314B   D9         9090     EXX
314C   CB7A       9091     BIT 7,D
314E   D9         9092     EXX
314F   205C       9093     JR NZ,M31AD
3151   77         9094  M3151:   LD (HL),A
3152   D9         9095     EXX
3153   78         9096     LD A,B
3154   D9         9097     EXX
                  9098  
                  9099  ;normalisieren der Mantisse fuer alle Rechenroutinen
                  9100  
3155   3015       9101  TSTNOR:  JR NC,NORMAL
3157   7E         9102     LD A,(HL)
3158   A7         9103     AND A
3159   3E80       9104  M3159:   LD A,80H
315B   2801       9105     JR Z,M315E
315D   AF         9106  M315D:   XOR A
315E   D9         9107  M315E:   EXX
315F   A2         9108     AND D
3160   CDFB2F     9109     CALL M2FFB
3163   07         9110     RLCA
3164   77         9111     LD (HL),A
3165   382E       9112     JR C,M3195
3167   23         9113     INC HL
3168   77         9114     LD (HL),A
                              SP                                PAGE  14
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3169   2B         9115     DEC HL
316A   1829       9116     JR M3195
                  9117  
316C   0620       9118  NORMAL:  LD B,32
316E   D9         9119  M316E:   EXX
316F   CB7A       9120     BIT 7,D
3171   D9         9121     EXX
3172   2012       9122     JR NZ,M3186
3174   07         9123     RLCA
3175   CB13       9124     RL E
3177   CB12       9125     RL D
3179   D9         9126     EXX
317A   CB13       9127     RL E
317C   CB12       9128     RL D
317E   D9         9129     EXX
317F   35         9130     DEC (HL)
3180   28D7       9131     JR Z,M3159
3182   10EA       9132     DJNZ M316E
3184   18D7       9133     JR M315D
                  9134  
3186   17         9135  M3186:   RLA
3187   300C       9136     JR NC,M3195
3189   CD0430     9137     CALL M3004
318C   2007       9138     JR NZ,M3195
318E   D9         9139     EXX
318F   1680       9140     LD D,80H
3191   D9         9141     EXX
3192   34         9142     INC (HL)
3193   2818       9143     JR Z,M31AD
3195   E5         9144  M3195:   PUSH HL
3196   23         9145     INC HL
3197   D9         9146     EXX
3198   D5         9147     PUSH DE
3199   D9         9148     EXX
319A   C1         9149     POP BC
319B   78         9150     LD A,B
319C   17         9151     RLA
319D   CB16       9152     RL (HL)
319F   1F         9153     RRA
31A0   77         9154     LD (HL),A
31A1   23         9155     INC HL
31A2   71         9156     LD (HL),C
31A3   23         9157     INC HL
31A4   72         9158     LD (HL),D
31A5   23         9159     INC HL
31A6   73         9160     LD (HL),E
31A7   E1         9161     POP HL
31A8   D1         9162     POP DE
31A9   D9         9163     EXX
31AA   E1         9164     POP HL
31AB   D9         9165     EXX
31AC   C9         9166     RET
                  9167  
31AD   CF         9168  M31AD:   RST ERRAUS
31AE   05         9169     DEFB 5      ;'ARITHMETIC OVERFLOW'
                  9170  
                  9171  ;Subroutine Division
                  9172  
                              SP                                PAGE  15
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

31AF   CD9332     9173  M31AF:   CALL M3293
31B2   EB         9174     EX DE,HL
31B3   AF         9175     XOR A
31B4   CDC030     9176     CALL M30C0
31B7   38F4       9177     JR C,M31AD
31B9   EB         9178     EX DE,HL
31BA   CDC030     9179     CALL M30C0
31BD   D8         9180     RET C
31BE   D9         9181     EXX
31BF   E5         9182     PUSH HL
31C0   D9         9183     EXX
31C1   D5         9184     PUSH DE
31C2   E5         9185     PUSH HL
31C3   CDBA2F     9186     CALL M2FBA
31C6   D9         9187     EXX
31C7   E5         9188     PUSH HL
31C8   60         9189     LD H,B
31C9   69         9190     LD L,C
31CA   D9         9191     EXX
31CB   61         9192     LD H,C
31CC   68         9193     LD L,B
31CD   AF         9194     XOR A
31CE   06DF       9195     LD B,0DFH
31D0   1810       9196     JR M31E2
                  9197  
31D2   17         9198  M31D2:   RLA
31D3   CB11       9199     RL C
31D5   D9         9200     EXX
31D6   CB11       9201     RL C
31D8   CB10       9202     RL B
31DA   D9         9203     EXX
31DB   29         9204     ADD HL,HL
31DC   D9         9205     EXX
31DD   ED6A       9206     ADC HL,HL
31DF   D9         9207     EXX
31E0   3810       9208     JR C,M31F2
31E2   ED52       9209  M31E2:   SBC HL,DE
31E4   D9         9210     EXX
31E5   ED52       9211     SBC HL,DE
31E7   D9         9212     EXX
31E8   300F       9213     JR NC,M31F9
31EA   19         9214     ADD HL,DE
31EB   D9         9215     EXX
31EC   ED5A       9216     ADC HL,DE
31EE   D9         9217     EXX
31EF   A7         9218     AND A
31F0   1808       9219     JR M31FA
                  9220  
31F2   A7         9221  M31F2:   AND A
31F3   ED52       9222     SBC HL,DE
31F5   D9         9223     EXX
31F6   ED52       9224     SBC HL,DE
31F8   D9         9225     EXX
31F9   37         9226  M31F9:   SCF
31FA   04         9227  M31FA:   INC B
31FB   FAD231     9228     JP M,M31D2
31FE   F5         9229     PUSH AF
31FF   28E1       9230     JR Z,M31E2
                              SP                                PAGE  16
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3201   5F         9231     LD E,A
3202   51         9232     LD D,C
3203   D9         9233     EXX
3204   59         9234     LD E,C
3205   50         9235     LD D,B
3206   F1         9236     POP AF
3207   CB18       9237     RR B
3209   F1         9238     POP AF
320A   CB18       9239     RR B
320C   D9         9240     EXX
320D   C1         9241     POP BC
320E   E1         9242     POP HL
320F   78         9243     LD A,B
3210   91         9244     SUB C
3211   C33D31     9245     JP M313D
                  9246  
                  9247  ;Subroutine zum Abtrennen des Integerteils einer
                  9248  ;Variablen
                  9249  
3214   7E         9250  M3214:   LD A,(HL)
3215   A7         9251     AND A
3216   C8         9252     RET Z
3217   FE81       9253     CP 81H
3219   3006       9254     JR NC,M3221
321B   3600       9255     LD (HL),0
321D   3E20       9256     LD A,32
321F   1851       9257     JR M3272
                  9258  
3221   FE91       9259  M3221:   CP 91H
3223   201A       9260     JR NZ,M323F
3225   23         9261     INC HL
3226   23         9262     INC HL
3227   23         9263     INC HL
3228   3E80       9264     LD A,80H
322A   A6         9265     AND (HL)
322B   2B         9266     DEC HL
322C   B6         9267     OR (HL)
322D   2B         9268     DEC HL
322E   2003       9269     JR NZ,M3233
3230   3E80       9270     LD A,80H
3232   AE         9271     XOR (HL)
3233   2B         9272  M3233:   DEC HL
3234   2036       9273     JR NZ,M326C
3236   77         9274     LD (HL),A
3237   23         9275     INC HL
3238   36FF       9276     LD (HL),0FFH
323A   2B         9277     DEC HL
323B   3E18       9278     LD A,18H
323D   1833       9279     JR M3272
                  9280  
323F   302C       9281  M323F:   JR NC,M326D
3241   D5         9282     PUSH DE
3242   2F         9283     CPL
3243   C691       9284     ADD A,91H
3245   23         9285     INC HL
3246   56         9286     LD D,(HL)
3247   23         9287     INC HL
3248   5E         9288     LD E,(HL)
                              SP                                PAGE  17
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3249   2B         9289     DEC HL
324A   2B         9290     DEC HL
324B   0E00       9291     LD C,0
324D   CB7A       9292     BIT 7,D
324F   2801       9293     JR Z,M3252
3251   0D         9294     DEC C
3252   CBFA       9295  M3252:   SET 7,D
3254   0608       9296     LD B,8
3256   90         9297     SUB B
3257   80         9298     ADD A,B
3258   3804       9299     JR C,M325E
325A   5A         9300     LD E,D
325B   1600       9301     LD D,0
325D   90         9302     SUB B
325E   2807       9303  M325E:   JR Z,M3267
3260   47         9304     LD B,A
3261   CB3A       9305  M3261:   SRL D
3263   CB1B       9306     RR E
3265   10FA       9307     DJNZ M3261
3267   CD8E2D     9308  M3267:   CALL M2D8E
326A   D1         9309     POP DE
326B   C9         9310     RET
                  9311  
                  9312  ;grosse Werte fuer 'X' untersuchen
                  9313  
326C   7E         9314  M326C:   LD A,(HL)
326D   D6A0       9315  M326D:   SUB 0A0H
326F   F0         9316     RET P
3270   ED44       9317     NEG
3272   D5         9318  M3272:   PUSH DE
3273   EB         9319     EX DE,HL
3274   2B         9320     DEC HL
3275   47         9321     LD B,A
3276   CB38       9322     SRL B
3278   CB38       9323     SRL B
327A   CB38       9324     SRL B
327C   2805       9325     JR Z,M3283
327E   3600       9326  M327E:   LD (HL),0
3280   2B         9327     DEC HL
3281   10FB       9328     DJNZ M327E
3283   E607       9329  M3283:   AND 7
3285   2809       9330     JR Z,M3290
3287   47         9331     LD B,A
3288   3EFF       9332     LD A,0FFH
328A   CB27       9333  M328A:   SLA A
328C   10FC       9334     DJNZ M328A
328E   A6         9335     AND (HL)
328F   77         9336     LD (HL),A
3290   EB         9337  M3290:   EX DE,HL
3291   D1         9338     POP DE
3292   C9         9339     RET
                  9340  
                  9341  ;Subroutine zum Abspeichern von 2 Integerzahlen
                  9342  ;in Floatingpointform auf dem Calc.-Stack
                  9343  
3293   CD9632     9344  M3293:   CALL M3296
3296   EB         9345  M3296:   EX DE,HL
                  9346  
                              SP                                PAGE  18
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  9347  ;Subroutine zum Abspeichern einer Integerzahl
                  9348  ;auf dem Calc.-Stack in Floatingpointform
                  9349  
3297   7E         9350  M3297:   LD A,(HL)
3298   A7         9351     AND A
3299   C0         9352     RET NZ
329A   D5         9353     PUSH DE
329B   CD7F2D     9354     CALL M2D7F
329E   AF         9355     XOR A
329F   23         9356     INC HL
32A0   77         9357     LD (HL),A
32A1   2B         9358     DEC HL
32A2   77         9359     LD (HL),A
32A3   0691       9360     LD B,91H
32A5   7A         9361     LD A,D
32A6   A7         9362     AND A
32A7   2008       9363     JR NZ,M32B1
32A9   B3         9364     OR E
32AA   42         9365     LD B,D
32AB   2810       9366     JR Z,M32BD
32AD   53         9367     LD D,E
32AE   58         9368     LD E,B
32AF   0689       9369     LD B,89H
32B1   EB         9370  M32B1:   EX DE,HL
32B2   05         9371  M32B2:   DEC B
32B3   29         9372     ADD HL,HL
32B4   30FC       9373     JR NC,M32B2
32B6   CB09       9374     RRC C
32B8   CB1C       9375     RR H
32BA   CB1D       9376     RR L
32BC   EB         9377     EX DE,HL
32BD   2B         9378  M32BD:   DEC HL
32BE   73         9379     LD (HL),E
32BF   2B         9380     DEC HL
32C0   72         9381     LD (HL),D
32C1   2B         9382     DEC HL
32C2   70         9383     LD (HL),B
32C3   D1         9384     POP DE
32C4   C9         9385     RET
                  9386  
                  9387  ;===============================================
                  9388  
                  9389  ;ab hier Unterprogramme und Tabellen des
                  9390  
                  9391  ;    FLOATING - POINT - CALCULATORS
                  9392  
                  9393  
                  9394  ;Tabelle der Konstanten NULL, EINS, 0.5, PI/2, ZEHN
                  9395  
32C5   00         9396  M32C5:   DEFB 0      ;NULL
32C6   B0         9397     DEFB 0B0H
32C7   00         9398     DEFB 0
                  9399  
32C8   40         9400     DEFB 40H ;EINS
32C9   B0         9401     DEFB 0B0H
32CA   00         9402     DEFB 0
32CB   01         9403     DEFB 1
                  9404  
                              SP                                PAGE  19
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

32CC   30         9405     DEFB 30H ;0.5
32CD   00         9406     DEFB 0
                  9407  
32CE   F1         9408     DEFB 0F1H   ;PI/2
32CF   49         9409     DEFB 49H
32D0   0F         9410     DEFB 0FH
32D1   DA         9411     DEFB 0DAH
32D2   A2         9412     DEFB 0A2H
                  9413  
32D3   40         9414     DEFB 40H ;ZEHN
32D4   B0         9415     DEFB 0B0H
32D5   00         9416     DEFB 0
32D6   0A         9417     DEFB 0AH
                  9418  
                  9419  ;Tabelle der 'OPCODES', die dem Befehl RST CALRUF
                  9420  ;folge mit den dazugehoerigen Sprungadressen
                  9421  
32D7   8F36       9422  M32D7:   DEFW M368F  ;00: Sprung, wenn war
32D9   3C34       9423     DEFW TAUSCH ;01: Tauschen
32DB   A133       9424     DEFW M33A1  ;02: Loeschen
32DD   0F30       9425     DEFW SUBTRA ;03: Subtrahieren
32DF   CA30       9426     DEFW MULTIP ;04: Multiplizieren
32E1   AF31       9427     DEFW M31AF  ;05: Dividieren
32E3   5138       9428     DEFW M3851  ;06: hoch 2 (^2)
32E5   1B35       9429     DEFW M351B  ;07: ODER
32E7   2435       9430     DEFW M3524  ;08: logisch UND
32E9   3B35       9431     DEFW M353B  ;09: ungleich
32EB   3B35       9432     DEFW M353B  ;0A: kleiner als
32ED   3B35       9433     DEFW M353B  ;0B: Strings ungleich
32EF   3B35       9434     DEFW M353B  ;0C: nicht groesser
32F1   3B35       9435     DEFW M353B  ;0D: nicht kleiner
32F3   3B35       9436     DEFW M353B  ;0E: Strings gleich
32F5   1430       9437     DEFW ADDIER ;0F: Addieren
32F7   2D35       9438     DEFW M352D  ;10: String and Number
32F9   3B35       9439     DEFW M353B  ;11: String <=
32FB   3B35       9440     DEFW M353B  ;12: String >=
32FD   3B35       9441     DEFW M353B  ;13: String <>
32FF   3B35       9442     DEFW M353B  ;14: String >
3301   3B35       9443     DEFW M353B  ;15: String <
3303   3B35       9444     DEFW M353B  ;16: String =
3305   9C35       9445     DEFW M359C  ;17: Stringaddition
3307   DE35       9446     DEFW M35DE  ;18: VAL$
3309   BC34       9447     DEFW M34BC  ;19: USR$
330B   4536       9448     DEFW M3645  ;1A: READIN
330D   6E34       9449     DEFW NEGIER ;1B: negieren
330F   6936       9450     DEFW M3669  ;1C: CODE
3311   DE35       9451     DEFW M35DE  ;1D: VAL
3313   7436       9452     DEFW M3674  ;1E: LEN
3315   B537       9453     DEFW M37B5  ;1F: SINUS
3317   AA37       9454     DEFW M37AA  ;20: COSINUS
3319   DA37       9455     DEFW M37DA  ;21: TANGENS
331B   3338       9456     DEFW M3833  ;22: ARCUSSINUS
331D   4338       9457     DEFW M3843  ;23: ARCUSCOSINUS
331F   E237       9458     DEFW M37E2  ;24: ARCUSTANGENS
3321   1337       9459     DEFW M3713  ;25: LN (Logarithmus)
3323   C436       9460     DEFW M36C4  ;26: EXP (E hoch X)
3325   AF36       9461     DEFW M36AF  ;27: INT(EGER)
3327   4A38       9462     DEFW M384A  ;28: SQR (Wurzel)
                              SP                                PAGE  20
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3329   9234       9463     DEFW M3492  ;29: SGN (Vorzeichen)
332B   6A34       9464     DEFW ABSOLU ;2A: ABS (Betrag)
332D   AC34       9465     DEFW M34AC  ;2B: PEEK
332F   A534       9466     DEFW M34A5  ;2C: IN
3331   B334       9467     DEFW M34B3  ;2D: USR mit Zahl
3333   1F36       9468     DEFW M361F  ;2E: STR$
3335   C935       9469     DEFW M35C9  ;2F: CHR$
3337   0135       9470     DEFW M3501  ;30: NOT
3339   C033       9471     DEFW VERDO  ;31: Duplizieren
333B   A036       9472     DEFW M36A0  ;32: N MOD M- Division
333D   8636       9473     DEFW M3686  ;33: Sprung
333F   C633       9474     DEFW M33C6  ;34: Daten auf Stack
3341   7A36       9475     DEFW M367A  ;35: DJNZ
3343   0635       9476     DEFW M3506  ;36: kleiner 0
3345   F934       9477     DEFW M34F9  ;37: groesser 0
3347   9B36       9478     DEFW M369B  ;38: Ende CALCULATOR
3349   8337       9479     DEFW M3783  ;39: hole Argument
334B   1432       9480     DEFW M3214  ;3A: Abschneiden mit Runden
334D   A233       9481     DEFW M33A2  ;3B: FP-CALC-2
334F   4F2D       9482     DEFW M2D4F  ;3C: in Floating-Zahl wandeln
3351   9732       9483     DEFW M3297  ;3D: wieder auf Stack legen
3353   4934       9484     DEFW M3449  ;3E: Polynomenentwicklung
3355   1B34       9485     DEFW M341B  ;3F: NULL auf Stack
3357   2D34       9486     DEFW M342D  ;40: speichere in MEMO etc.
3359   0F34       9487     DEFW M340F  ;41: hole von MEMO etc.
                  9488  
                  9489  ;Calculator
                  9490  
                  9491  ;Aufruf normal durch RST 28H (RST CALRUF)
                  9492  ;Hinter dem RST 28H Befehl folgen ein oder mehrere Bytes,
                  9493  ;die die auszufuehrenden Operationen gemaess obenstehender
                  9494  ;Tabelle bestimmen.
                  9495  ;Die Rechenoperationen beziehen sich im allgemeinen auf
                  9496  ;den oder die 'LETZTEN WERT(E)' im Calculatorstack. Ein
                  9497  ;letzter Wert (genau 5 Bytes) kann eine Floatingpointzahl
                  9498  ;oder Stringparameter sein. Zusaetzlich benutzt der Calcu-
                  9499  ;lator einige Speicherplaetze zur Zwischenspeicherung von
                  9500  ;Teilergebnissen etc., die mit MEM0 - MEM5 bezeichnet sind
                  9501  ;und jeweils 5 Byte umfassen.
                  9502  
335B   CDBF35     9503  RECHNE:  CALL M35BF
335E   78         9504  M335E:   LD A,B
335F   32675C     9505     LD (BREG),A ;Calculator Hifsregister
3362   D9         9506  RECH2:   EXX
3363   E3         9507     EX (SP),HL
3364   D9         9508     EXX
3365   ED53655C   9509  CLOOP:   LD (STKEND),DE ;Anfang des freien Speichers
3369   D9         9510     EXX
336A   7E         9511     LD A,(HL)
336B   23         9512     INC HL
336C   E5         9513  M336C:   PUSH HL
336D   A7         9514     AND A
336E   F28033     9515     JP P,M3380
3371   57         9516     LD D,A
3372   E660       9517     AND 60H
3374   0F         9518     RRCA
3375   0F         9519     RRCA
3376   0F         9520     RRCA
                              SP                                PAGE  21
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3377   0F         9521     RRCA
3378   C67C       9522     ADD A,7CH
337A   6F         9523     LD L,A
337B   7A         9524     LD A,D
337C   E61F       9525     AND 1FH
337E   180E       9526     JR M338E
                  9527  
3380   FE18       9528  M3380:   CP 18H
3382   3008       9529     JR NC,M338C
3384   D9         9530     EXX
3385   01FBFF     9531     LD BC,0FFFBH
3388   54         9532     LD D,H
3389   5D         9533     LD E,L
338A   09         9534     ADD HL,BC
338B   D9         9535     EXX
338C   07         9536  M338C:   RLCA
338D   6F         9537     LD L,A
338E   11D732     9538  M338E:   LD DE,M32D7
3391   2600       9539     LD H,0
3393   19         9540     ADD HL,DE
3394   5E         9541     LD E,(HL)
3395   23         9542     INC HL
3396   56         9543     LD D,(HL)
3397   216533     9544     LD HL,CLOOP
339A   E3         9545     EX (SP),HL
339B   D5         9546     PUSH DE
339C   D9         9547     EXX
339D   ED4B665C   9548     LD BC,(STKEND+1)
33A1   C9         9549  M33A1:   RET
                  9550  
                  9551  ;Subroutine zum Loeschen des letzten Wertes im Calc.-Stack
                  9552  ;(OP-CODE 02). Der Aufruf fuehrt nur auf das obige 'RET',
                  9553  ;so dass nur HL als Zeiger auf den letzten Wert um 5 Byte
                  9554  ;vermindert wird, also auf den Vorletzten zeigt. Dadurch
                  9555  ;wird der bisherige letzte Wert nicht mehr adressiert und
                  9556  ;bei der naechsten Operation ueberschrieben.
                  9557  
                  9558  ;Subroutine um eine Operation auszufuehren (Auruf bei der
                  9559  ;Entwicklung von Ausdruecken, OP-CODE 3BH)
                  9560  
33A2   F1         9561  M33A2:   POP AF
33A3   3A675C     9562     LD A,(BREG) ;Calculator Hifsregister
33A6   D9         9563     EXX
33A7   18C3       9564     JR M336C
                  9565  
                  9566  ;Subroutine zum Ueberpruefen, ob noch 5 Speicherplaetze
                  9567  ;frei sind
                  9568  
33A9   D5         9569  PLATZ5:  PUSH DE
33AA   E5         9570     PUSH HL
33AB   010500     9571     LD BC,5
33AE   CD051F     9572     CALL M1F05
33B1   E1         9573     POP HL
33B2   D1         9574     POP DE
33B3   C9         9575     RET
                  9576  
                  9577  ;Subroutine um 1 Zahl auf den Stack zu bringen
                  9578  
                              SP                                PAGE  22
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

33B4   ED5B655C   9579  M33B4:   LD DE,(STKEND) ;Anfang des freien Speichers
33B8   CDC033     9580     CALL VERDO
33BB   ED53655C   9581     LD (STKEND),DE ;Anfang des freien Speichers
33BF   C9         9582     RET
                  9583  
                  9584  ;Umspeichern einer Floatingpointzahl (OP-CODE 31H)
                  9585  
33C0   CDA933     9586  VERDO:   CALL PLATZ5
33C3   EDB0       9587     LDIR
33C5   C9         9588     RET
                  9589  
                  9590  ;Abspeichern einer Floatingpointzahl, die dem OP-CODE 34H
                  9591  ;direkt folgt. Das 1. Byte, welches Exponent ist, gibt
                  9592  ;hierbei die Anzahl der noch folgenden Mantissenstellen an
                  9593  ;(Bit 7 und 6), der Rest wird mit Nullen aufgefuellt.
                  9594  
33C6   62         9595  M33C6:   LD H,D
33C7   6B         9596     LD L,E
33C8   CDA933     9597  M33C8:   CALL PLATZ5
33CB   D9         9598     EXX
33CC   E5         9599     PUSH HL
33CD   D9         9600     EXX
33CE   E3         9601     EX (SP),HL
33CF   C5         9602     PUSH BC
33D0   7E         9603     LD A,(HL)
33D1   E6C0       9604     AND 0C0H
33D3   07         9605     RLCA
33D4   07         9606     RLCA
33D5   4F         9607     LD C,A
33D6   0C         9608     INC C
33D7   7E         9609     LD A,(HL)
33D8   E63F       9610     AND 3FH
33DA   2002       9611     JR NZ,M33DE
33DC   23         9612     INC HL
33DD   7E         9613     LD A,(HL)
33DE   C650       9614  M33DE:   ADD A,50H
33E0   12         9615     LD (DE),A
33E1   3E05       9616     LD A,5
33E3   91         9617     SUB C
33E4   23         9618     INC HL
33E5   13         9619     INC DE
33E6   0600       9620     LD B,0
33E8   EDB0       9621     LDIR
33EA   C1         9622     POP BC
33EB   E3         9623     EX (SP),HL
33EC   D9         9624     EXX
33ED   E1         9625     POP HL
33EE   D9         9626     EXX
33EF   47         9627     LD B,A
33F0   AF         9628     XOR A
33F1   05         9629  M33F1:   DEC B
33F2   C8         9630     RET Z
33F3   12         9631     LD (DE),A
33F4   13         9632     INC DE
33F5   18FA       9633     JR M33F1
                  9634  
                  9635  ;Suchen der Konstanten in der Calculatortabelle. Die
                  9636  ;Nummer steht in A.
                              SP                                PAGE  23
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  9637  
33F7   A7         9638  M33F7:   AND A
33F8   C8         9639  M33F8:   RET Z
33F9   F5         9640     PUSH AF
33FA   D5         9641     PUSH DE
33FB   110000     9642     LD DE,0
33FE   CDC833     9643     CALL M33C8
3401   D1         9644     POP DE
3402   F1         9645     POP AF
3403   3D         9646     DEC A
3404   18F2       9647     JR M33F8
                  9648  
                  9649  ;Ausrechnen der Adresse eines 5-Byte-Bereichs im Calcu-
                  9650  ;latorspeicherbereich (MEM0 - MEM5)
                  9651  
3406   4F         9652  M3406:   LD C,A
3407   07         9653     RLCA
3408   07         9654     RLCA
3409   81         9655     ADD A,C
340A   4F         9656     LD C,A
340B   0600       9657     LD B,0
340D   09         9658     ADD HL,BC
340E   C9         9659     RET
                  9660  
                  9661  ;Eine  Variable vom Calculatorspeicher in den Calc.-
                  9662  ;Stack holen als letzten Wert
                  9663  
340F   D5         9664  M340F:   PUSH DE
3410   2A685C     9665     LD HL,(MEM) ;Zeiger auf Calculatorspeicher
3413   CD0634     9666     CALL M3406
3416   CDC033     9667     CALL VERDO
3419   E1         9668     POP HL
341A   C9         9669     RET
                  9670  
                  9671  ;Ablegen einer Konstanten auf dem Calc.-Stack
                  9672  ;(OP-CODES A0H - A4H)
                  9673  
341B   62         9674  M341B:   LD H,D
341C   6B         9675     LD L,E
341D   D9         9676     EXX
341E   E5         9677     PUSH HL
341F   21C532     9678     LD HL,M32C5
3422   D9         9679     EXX
3423   CDF733     9680     CALL M33F7
3426   CDC833     9681     CALL M33C8
3429   D9         9682     EXX
342A   E1         9683     POP HL
342B   D9         9684     EXX
342C   C9         9685     RET
                  9686  
                  9687  ;Speichern des letzten Wertes in MEM0 - MEM5
                  9688  ;(OP-CODES C0H -C5H)
                  9689  
342D   E5         9690  M342D:   PUSH HL
342E   EB         9691     EX DE,HL
342F   2A685C     9692     LD HL,(MEM) ;Zeiger auf Calculatorspeicher
3432   CD0634     9693     CALL M3406
3435   EB         9694     EX DE,HL
                              SP                                PAGE  24
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3436   CDC033     9695     CALL VERDO
3439   EB         9696     EX DE,HL
343A   E1         9697     POP HL
343B   C9         9698     RET
                  9699  
                  9700  ;Austauschen der beiden letzten Werte im Calc.-Stack
                  9701  
343C   0605       9702  TAUSCH:  LD B,5
343E   1A         9703  M343E:   LD A,(DE)
343F   4E         9704     LD C,(HL)
3440   EB         9705     EX DE,HL
3441   12         9706     LD (DE),A
3442   71         9707     LD (HL),C
3443   23         9708     INC HL
3444   13         9709     INC DE
3445   10F7       9710     DJNZ M343E
3447   EB         9711     EX DE,HL
3448   C9         9712     RET
                  9713  
                  9714  ;Generieren von Polynomen bei Funktionen wie SINUS,
                  9715  ;ATN etc. (OP-CODES 86H,88H,8CH = 3EH in Tabelle)
                  9716  
3449   47         9717  M3449:   LD B,A
344A   CD5E33     9718     CALL M335E
                  9719  
                  9720  ;den letzten Wert 'Z' vorbereiten
                  9721  
344D   31         9722     DEFB 31H
344E   0F         9723     DEFB 0FH
344F   C0         9724     DEFB 0C0H
3450   02         9725     DEFB 2
3451   A0         9726     DEFB 0A0H
3452   C2         9727     DEFB 0C2H
                  9728  
                  9729  ;In der folgenden Schleife werden die Koeffizienten
                  9730  ;berechnet:
                  9731  ;B(M)=2*Z*B(M-1)-B(M-2)+C(M), wobei M=0....N.
                  9732  ;Die Konstanten C(M) stehen hinter dem jeweiligen
                  9733  ;Aufruf dieser Routine.
                  9734  
3453   31         9735  POLYS:   DEFB 31H
3454   E0         9736     DEFB 0E0H
3455   04         9737     DEFB 4
3456   E2         9738     DEFB 0E2H
3457   C1         9739     DEFB 0C1H
3458   03         9740     DEFB 3
3459   38         9741     DEFB 38H
                  9742  
                  9743  ;naechste Konstante in den Calc.-Stack laden
                  9744  
345A   CDC633     9745     CALL M33C6
345D   CD6233     9746     CALL RECH2
                  9747  
3460   0F         9748     DEFB 0FH
3461   01         9749     DEFB 1
3462   C2         9750     DEFB 0C2H
3463   02         9751     DEFB 2
3464   35         9752     DEFB 35H
                              SP                                PAGE  25
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3465   EE         9753     DEFB 0EEH
3466   E1         9754     DEFB 0E1H
3467   03         9755     DEFB 3
3468   38         9756     DEFB 38H
                  9757  
3469   C9         9758     RET
                  9759  
                  9760  ;die 'ABS(-OLUT)'-Funktion (OP-CODE 2AH)
                  9761  
346A   06FF       9762  ABSOLU:  LD B,0FFH
346C   1806       9763     JR M3474
                  9764  
                  9765  ;Wechseln des Vorzeichens des letzten Wertes
                  9766  ;Negieren (OP-CODE 1BH)
                  9767  
346E   CDE934     9768  NEGIER:  CALL M34E9
3471   D8         9769     RET C
3472   0600       9770     LD B,0
3474   7E         9771  M3474:   LD A,(HL)
3475   A7         9772     AND A
3476   280B       9773     JR Z,M3483
3478   23         9774     INC HL
3479   78         9775     LD A,B
347A   E680       9776     AND 80H
347C   B6         9777     OR (HL)
347D   17         9778     RLA
347E   3F         9779     CCF
347F   1F         9780     RRA
3480   77         9781     LD (HL),A
3481   2B         9782     DEC HL
3482   C9         9783     RET
                  9784  ;Vorzeichenwechsel bei Integerzahlen
                  9785  
3483   D5         9786  M3483:   PUSH DE
3484   E5         9787     PUSH HL
3485   CD7F2D     9788     CALL M2D7F
3488   E1         9789     POP HL
3489   78         9790     LD A,B
348A   B1         9791     OR C
348B   2F         9792     CPL
348C   4F         9793     LD C,A
348D   CD8E2D     9794     CALL M2D8E
3490   D1         9795     POP DE
3491   C9         9796     RET
                  9797  
                  9798  ;Auswerten des Vorzeichens:
                  9799  ;Negativ=-1, Positiv=+1, Null=0
                  9800  ;SIGN-Funktion (OP-CODE 29H)
                  9801  ;als letzten Wert speichern
                  9802  
3492   CDE934     9803  M3492:   CALL M34E9
3495   D8         9804     RET C
3496   D5         9805     PUSH DE
3497   110100     9806     LD DE,1
349A   23         9807     INC HL
349B   CB16       9808     RL (HL)
349D   2B         9809     DEC HL
349E   9F         9810     SBC A,A
                              SP                                PAGE  26
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

349F   4F         9811     LD C,A
34A0   CD8E2D     9812     CALL M2D8E
34A3   D1         9813     POP DE
34A4   C9         9814     RET
                  9815  
                  9816  ;Befehl 'IN' (laden eines Ports, OP-CODE 2CH)
                  9817  
34A5   CD991E     9818  M34A5:   CALL M1E99
34A8   ED78       9819     IN A,(C)
34AA   1804       9820     JR M34B0
                  9821  
                  9822  ;Befehl 'PEEK' (OP-CODE 2BH)
                  9823  
34AC   CD991E     9824  M34AC:   CALL M1E99
34AF   0A         9825     LD A,(BC)
34B0   C3282D     9826  M34B0:   JP M2D28
                  9827  
                  9828  ;Befehl 'USR' mit Zahlen (OP-CODE 2DH)
                  9829  ;Im Maschinenprogramm duerfen alle Register ausser HL'
                  9830  ;benutzt werden. Wird HL' trotzdem gebraucht, muss vor
                  9831  ;dem Ende des Maschinenprogramms HL' mit 2758H geladen
                  9832  ;werden.
                  9833  
34B3   CD991E     9834  M34B3:   CALL M1E99
34B6   212B2D     9835     LD HL,M2D2B
34B9   E5         9836     PUSH HL
34BA   C5         9837     PUSH BC
34BB   C9         9838     RET
                  9839  
                  9840  ;Befehl 'USR A$' (OP-CODE 19H)
                  9841  
34BC   CDF12B     9842  M34BC:   CALL M2BF1
34BF   0B         9843     DEC BC
34C0   78         9844     LD A,B
34C1   B1         9845     OR C
34C2   2023       9846     JR NZ,M34E7
34C4   1A         9847     LD A,(DE)
34C5   CD8D2C     9848     CALL M2C8D
34C8   3809       9849     JR C,M34D3
34CA   D690       9850     SUB 90H
34CC   3819       9851     JR C,M34E7
34CE   FE15       9852     CP 15H
34D0   3015       9853     JR NC,M34E7
34D2   3C         9854     INC A
34D3   3D         9855  M34D3:   DEC A
34D4   87         9856     ADD A,A
34D5   87         9857     ADD A,A
34D6   87         9858     ADD A,A
34D7   FEA8       9859     CP 0A8H
34D9   300C       9860     JR NC,M34E7
34DB   ED4B7B5C   9861     LD BC,(UDG) ;Adresse der User Grafikzeichen
34DF   81         9862     ADD A,C
34E0   4F         9863     LD C,A
34E1   3001       9864     JR NC,M34E4
34E3   04         9865     INC B
34E4   C32B2D     9866  M34E4:   JP M2D2B
                  9867  
34E7   CF         9868  M34E7:   RST ERRAUS
                              SP                                PAGE  27
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

34E8   09         9869     DEFB 9      ;'INVALID ARGUMENT'
                  9870  
                  9871  ;Test, ob eine Zahl Null ist
                  9872  
34E9   E5         9873  M34E9:   PUSH HL
34EA   C5         9874     PUSH BC
34EB   47         9875     LD B,A
34EC   7E         9876     LD A,(HL)
34ED   23         9877     INC HL
34EE   B6         9878     OR (HL)
34EF   23         9879     INC HL
34F0   B6         9880     OR (HL)
34F1   23         9881     INC HL
34F2   B6         9882     OR (HL)
34F3   78         9883     LD A,B
34F4   C1         9884     POP BC
34F5   E1         9885     POP HL
34F6   C0         9886     RET NZ
34F7   37         9887     SCF
34F8   C9         9888     RET
                  9889  
                  9890  ;Test auf >0 (OP-CODE 37H)
                  9891  ;trifft dies zu, dann letzter Wert = 1
                  9892  ;             sonst = 0
                  9893  
34F9   CDE934     9894  M34F9:   CALL M34E9
34FC   D8         9895     RET C
34FD   3EFF       9896     LD A,0FFH
34FF   1806       9897     JR M3507
                  9898  
                  9899  ;Funktion 'NOT' (OP-CODE 30H)
                  9900  ;letzter Wert wird 1, wenn letzter Wert Null
                  9901  ;war, sonst wird letzter Wert immer Null
                  9902  
3501   CDE934     9903  M3501:   CALL M34E9
3504   1805       9904     JR M350B
                  9905  
                  9906  ;Funktion <0 (OP-CODE 36H)
                  9907  
3506   AF         9908  M3506:   XOR A
3507   23         9909  M3507:   INC HL
3508   AE         9910     XOR (HL)
3509   2B         9911     DEC HL
350A   07         9912     RLCA
                  9913  
                  9914  ;Speichern einer 0 (CARRY geloescht) oder
                  9915  ;einer 1 als letzten Wert
                  9916  
350B   E5         9917  M350B:   PUSH HL
350C   3E00       9918     LD A,0
                  9919  *L ON
350E   77         9920     LD (HL),A
350F   23         9921     INC HL
3510   77         9922     LD (HL),A
3511   23         9923     INC HL
3512   17         9924     RLA
3513   77         9925     LD (HL),A
3514   1F         9926     RRA
                              SP                                PAGE  28
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3515   23         9927     INC HL
3516   77         9928     LD (HL),A
3517   23         9929     INC HL
3518   77         9930     LD (HL),A
3519   E1         9931     POP HL
351A   C9         9932     RET
                  9933  
                  9934  ;Funktion 'OR' (OP-CODE 07)
                  9935  ;Das Ergebnis dieser Operation (X OR Y) ist X,
                  9936  ;wenn Y Null ist, andernfalls 1
                  9937  
351B   EB         9938  M351B:   EX DE,HL
351C   CDE934     9939     CALL M34E9
351F   EB         9940     EX DE,HL
3520   D8         9941     RET C
3521   37         9942     SCF
3522   18E7       9943     JR M350B
                  9944  
                  9945  ;Funktion 'AND' (OP-CODE 08)
                  9946  ;Die Operation 'X AND Y' liefert X als Ergebnis,
                  9947  ;wenn Y<>0 ist, andernfalls den Wert 0
                  9948  
3524   EB         9949  M3524:   EX DE,HL
3525   CDE934     9950     CALL M34E9
3528   EB         9951     EX DE,HL
3529   D0         9952     RET NC
352A   A7         9953     AND A
352B   18DE       9954     JR M350B
                  9955  
                  9956  ;Funktion 'STRING AND ZAHL' (OP-CODE 10H)
                  9957  ;Das Ergebnis der Operation 'A$ AND X' ist A$, wenn
                  9958  ;X<>0 ist, sonst wird ein Nullstring uebergeben
                  9959  
352D   EB         9960  M352D:   EX DE,HL
352E   CDE934     9961     CALL M34E9
3531   EB         9962     EX DE,HL
3532   D0         9963     RET NC
3533   D5         9964     PUSH DE
3534   1B         9965     DEC DE
3535   AF         9966     XOR A
3536   12         9967     LD (DE),A
3537   1B         9968     DEC DE
3538   12         9969     LD (DE),A
3539   D1         9970     POP DE
353A   C9         9971     RET
                  9972  
                  9973  ;Vergleichsoperationen (OP-CODE 09-0EH, 11H-16H)
                  9974  ;OP-CODE ist beim Einstieg in Reg B
                  9975  
353B   78         9976  M353B:   LD A,B
353C   D608       9977     SUB 8
353E   CB57       9978     BIT 2,A
3540   2001       9979     JR NZ,M3543
3542   3D         9980     DEC A
3543   0F         9981  M3543:   RRCA
3544   3008       9982     JR NC,M354E
3546   F5         9983     PUSH AF
3547   E5         9984     PUSH HL
                              SP                                PAGE  29
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3548   CD3C34     9985     CALL TAUSCH
354B   D1         9986     POP DE
354C   EB         9987     EX DE,HL
354D   F1         9988     POP AF
354E   CB57       9989  M354E:   BIT 2,A
3550   2007       9990     JR NZ,M3559
3552   0F         9991     RRCA
3553   F5         9992     PUSH AF
3554   CD0F30     9993     CALL SUBTRA
3557   1833       9994     JR M358C
                  9995  
                  9996  ;Stringoperationen
                  9997  
3559   0F         9998  M3559:   RRCA
355A   F5         9999     PUSH AF
355B   CDF12B     :000     CALL M2BF1
355E   D5         :001     PUSH DE
355F   C5         :002     PUSH BC
3560   CDF12B     :003     CALL M2BF1
3563   E1         :004     POP HL
3564   7C         :005  M3564:   LD A,H
3565   B5         :006     OR L
3566   E3         :007     EX (SP),HL
3567   78         :008     LD A,B
3568   200B       :009     JR NZ,M3575
356A   B1         :010     OR C
356B   C1         :011  M356B:   POP BC
356C   2804       :012     JR Z,M3572
356E   F1         :013     POP AF
356F   3F         :014     CCF
3570   1816       :015     JR M3588
                  :016  
3572   F1         :017  M3572:   POP AF
3573   1813       :018     JR M3588
                  :019  
3575   B1         :020  M3575:   OR C
3576   280D       :021     JR Z,M3585
3578   1A         :022     LD A,(DE)
3579   96         :023     SUB (HL)
357A   3809       :024     JR C,M3585
357C   20ED       :025     JR NZ,M356B
357E   0B         :026     DEC BC
357F   13         :027     INC DE
3580   23         :028     INC HL
3581   E3         :029     EX (SP),HL
3582   2B         :030     DEC HL
3583   18DF       :031     JR M3564
                  :032  
3585   C1         :033  M3585:   POP BC
3586   F1         :034     POP AF
3587   A7         :035     AND A
3588   F5         :036  M3588:   PUSH AF
3589   EF         :037     RST CALRUF
358A   A0         :038     DEFB 0A0H
358B   38         :039     DEFB 38H
                  :040  
358C   F1         :041  M358C:   POP AF
358D   F5         :042     PUSH AF
                              SP                                PAGE  30
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

358E   DC0135     :043     CALL C,M3501
3591   F1         :044     POP AF
3592   F5         :045     PUSH AF
3593   D4F934     :046     CALL NC,M34F9
3596   F1         :047     POP AF
3597   0F         :048     RRCA
3598   D40135     :049     CALL NC,M3501
359B   C9         :050     RET
                  :051  
                  :052  ;Addieren von Strings (OP-CODE 17H)
                  :053  
359C   CDF12B     :054  M359C:   CALL M2BF1
359F   D5         :055     PUSH DE
35A0   C5         :056     PUSH BC
35A1   CDF12B     :057     CALL M2BF1
35A4   E1         :058     POP HL
35A5   E5         :059     PUSH HL
35A6   D5         :060     PUSH DE
35A7   C5         :061     PUSH BC
35A8   09         :062     ADD HL,BC
35A9   44         :063     LD B,H
35AA   4D         :064     LD C,L
35AB   F7         :065     RST REST30
35AC   CDB22A     :066     CALL M2AB2
35AF   C1         :067     POP BC
35B0   E1         :068     POP HL
35B1   78         :069     LD A,B
35B2   B1         :070     OR C
35B3   2802       :071     JR Z,M35B7
35B5   EDB0       :072     LDIR
35B7   C1         :073  M35B7:   POP BC
35B8   E1         :074     POP HL
35B9   78         :075     LD A,B
35BA   B1         :076     OR C
35BB   2802       :077     JR Z,M35BF
35BD   EDB0       :078     LDIR
                  :079  
                  :080  ;Setzen von DE auf STKEND und HL auf
                  :081  ;STKEND-5, d.h. 1. Byte des letzten Wertes im
                  :082  ;Calc.-Stack
                  :083  
35BF   2A655C     :084  M35BF:   LD HL,(STKEND) ;Anfang des freien Speichers
35C2   11FBFF     :085     LD DE,0FFFBH
35C5   E5         :086     PUSH HL
35C6   19         :087     ADD HL,DE
35C7   D1         :088     POP DE
35C8   C9         :089     RET
                  :090  
                  :091  ;Funktion 'CHR$' (OP-CODE 2FH)
                  :092  
35C9   CDD52D     :093  M35C9:   CALL M2DD5
35CC   380E       :094     JR C,M35DC
35CE   200C       :095     JR NZ,M35DC
35D0   F5         :096     PUSH AF
35D1   010100     :097     LD BC,1
35D4   F7         :098     RST REST30
35D5   F1         :099     POP AF
35D6   12         :100     LD (DE),A
                              SP                                PAGE  31
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

35D7   CDB22A     :101     CALL M2AB2
35DA   EB         :102     EX DE,HL
35DB   C9         :103     RET
                  :104  
35DC   CF         :105  M35DC:   RST ERRAUS
35DD   0A         :106     DEFB 0AH ;'INTEGER OUT OF RANGE'
                  :107  
                  :108  ;Funktion 'VAL' (OP-CODE 1DH) und 'VAL$' (18H)
                  :109  
35DE   2A5D5C     :110  M35DE:   LD HL,(CHADD)  ;Adr. des naechsten zu interpret. Zeichens
35E1   E5         :111     PUSH HL
35E2   78         :112     LD A,B
35E3   C6E3       :113     ADD A,0E3H
35E5   9F         :114     SBC A,A
35E6   F5         :115     PUSH AF
35E7   CDF12B     :116     CALL M2BF1
35EA   D5         :117     PUSH DE
35EB   03         :118     INC BC
35EC   F7         :119     RST REST30
35ED   E1         :120     POP HL
35EE   ED535D5C   :121     LD (CHADD),DE  ;Adr. des naechsten zu interpret. Zeichens
35F2   D5         :122     PUSH DE
35F3   EDB0       :123     LDIR
35F5   EB         :124     EX DE,HL
35F6   2B         :125     DEC HL
35F7   360D       :126     LD (HL),0DH
35F9   FDCB01BE   :127     RES 7,(IY+1)
35FD   CDFB24     :128     CALL AUSDRU
3600   DF         :129     RST GETAKT
3601   FE0D       :130     CP 0DH
3603   2007       :131     JR NZ,M360C
3605   E1         :132     POP HL
3606   F1         :133     POP AF
3607   FDAE01     :134     XOR (IY+1)
360A   E640       :135     AND 40H
360C   C28A1C     :136  M360C:   JP NZ,M1C8A
360F   225D5C     :137     LD (CHADD),HL  ;Adr. des naechsten zu interpret. Zeichens
3612   FDCB01FE   :138     SET 7,(IY+1)
3616   CDFB24     :139     CALL AUSDRU
3619   E1         :140     POP HL
361A   225D5C     :141     LD (CHADD),HL  ;Adr. des naechsten zu interpret. Zeichens
361D   18A0       :142     JR M35BF
                  :143  
                  :144  ;Funktion 'STR $' (OP-CODE 2EH)
                  :145  
361F   010100     :146  M361F:   LD BC,1
3622   F7         :147     RST REST30
3623   225B5C     :148     LD (KCUR),HL   ;Kursoradresse
3626   E5         :149     PUSH HL
3627   2A515C     :150     LD HL,(CURCHL) ;aktuelle I/O Infoadresse
362A   E5         :151     PUSH HL
362B   3EFF       :152     LD A,0FFH
362D   CD0116     :153     CALL OPKAN
3630   CDE32D     :154     CALL M2DE3
3633   E1         :155     POP HL
3634   CD1516     :156     CALL M1615
3637   D1         :157     POP DE
3638   2A5B5C     :158     LD HL,(KCUR)   ;Kursoradresse
                              SP                                PAGE  32
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

363B   A7         :159     AND A
363C   ED52       :160     SBC HL,DE
363E   44         :161     LD B,H
363F   4D         :162     LD C,L
3640   CDB22A     :163     CALL M2AB2
3643   EB         :164     EX DE,HL
3644   C9         :165     RET
                  :166  
                  :167  ;Funktion 'READ-IN' (OP-CODE 1AH)
                  :168  
3645   CD941E     :169  M3645:   CALL INTEG1
3648   FE10       :170     CP 10H
364A   D29F1E     :171     JP NC,M1E9F
364D   2A515C     :172     LD HL,(CURCHL) ;aktuelle I/O Infoadresse
3650   E5         :173     PUSH HL
3651   CD0116     :174     CALL OPKAN
3654   CDE615     :175     CALL M15E6
3657   010000     :176     LD BC,0
365A   3003       :177     JR NC,M365F
365C   0C         :178     INC C
365D   F7         :179     RST REST30
365E   12         :180     LD (DE),A
365F   CDB22A     :181  M365F:   CALL M2AB2
3662   E1         :182     POP HL
3663   CD1516     :183     CALL M1615
3666   C3BF35     :184     JP M35BF
                  :185  
                  :186  ;Funktion 'CODE' (OP-CODE 1CH)
                  :187  ;Ausgabe des ASCII-Wertes eines Zeichens
                  :188  
3669   CDF12B     :189  M3669:   CALL M2BF1
366C   78         :190     LD A,B
366D   B1         :191     OR C
366E   2801       :192     JR Z,M3671
3670   1A         :193     LD A,(DE)
3671   C3282D     :194  M3671:   JP M2D28
                  :195  
                  :196  
                  :197  ;Funktion 'LEN' (OP-CODE 1EH)
                  :198  
3674   CDF12B     :199  M3674:   CALL M2BF1
3677   C32B2D     :200     JP M2D2B
                  :201  
                  :202  ;Vermindern von 'BREG' um 1, welches als Schleifen-
                  :203  ;zaehler dient, (Nachbildung von DJNZ) (OP-CODE 35H)
                  :204  
367A   D9         :205  M367A:   EXX
367B   E5         :206     PUSH HL
367C   21675C     :207     LD HL,BREG  ;Calculator Hifsregister
367F   35         :208     DEC (HL)
3680   E1         :209     POP HL
3681   2004       :210     JR NZ,M3687
3683   23         :211     INC HL
3684   D9         :212     EXX
3685   C9         :213     RET
                  :214  
                  :215  ;Funktion 'JUMP' (OP-CODE 33H) zum ueberspringen
                  :216  ;von Calculator-OP-CODES

 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  :216  *L ON
3687   5E         :218  M3687:   LD E,(HL)
3688   7B         :219     LD A,E
3689   17         :220     RLA
368A   9F         :221     SBC A,A
368B   57         :222     LD D,A
368C   19         :223     ADD HL,DE
368D   D9         :224     EXX
368E   C9         :225     RET
                  :226  
                  :227  ;Ueberspringen von Calculatorbefehlen, wenn der
                  :228  ;letzte Wert <>0 ist (OP-CODE 00)
                  :229  
368F   13         :230  M368F:   INC DE
3690   13         :231     INC DE
3691   1A         :232     LD A,(DE)
3692   1B         :233     DEC DE
3693   1B         :234     DEC DE
3694   A7         :235     AND A
3695   20EF       :236     JR NZ,M3686
3697   D9         :237     EXX
3698   23         :238     INC HL
3699   D9         :239     EXX
369A   C9         :240     RET
                  :241  
                  :242  ;Ende der Calculatoroperation
                  :243  
369B   F1         :244  M369B:   POP AF
369C   D9         :245     EXX
369D   E3         :246     EX (SP),HL
369E   D9         :247     EXX
369F   C9         :248     RET
                  :249  
                  :250  
                  :251  ;Berechnen von N MOD M (OP-CODE 32H)
                  :252  ;Der ganzahlige Anteil INT (N/M) ergibt den
                  :253  ;letzten Wert, der Rest der Division den vor-
                  :254  ;letzten Wert.
                  :255  
36A0   EF         :256  M36A0:   RST CALRUF
36A1   C0         :257     DEFB 0C0H
36A2   02         :258     DEFB 2
36A3   31         :259     DEFB 31H
36A4   E0         :260     DEFB 0E0H
36A5   05         :261     DEFB 5
36A6   27         :262     DEFB 27H
36A7   E0         :263     DEFB 0E0H
36A8   01         :264     DEFB 1
36A9   C0         :265     DEFB 0C0H
36AA   04         :266     DEFB 4
36AB   03         :267     DEFB 3
36AC   E0         :268     DEFB 0E0H
36AD   38         :269     DEFB 38H
                  :270  
36AE   C9         :271     RET
                  :272  
                  :273  ;Funktion 'INTEGER' (OP-CODE 27H)
..PA
                              SP                                PAGE   2
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  :274  
36AF   EF         :275  M36AF:   RST CALRUF
36B0   31         :276     DEFB 31H
36B1   36         :277     DEFB 36H
36B2   00         :278     DEFB 0
36B3   04         :279     DEFB INTINV-$
36B4   3A         :280     DEFB 3AH
36B5   38         :281     DEFB 38H
36B6   C9         :282     RET
                  :283  
36B7   31         :284  INTINV:  DEFB 31H
36B8   3A         :285     DEFB 3AH
36B9   C0         :286     DEFB 0C0H
36BA   03         :287     DEFB 3
36BB   E0         :288     DEFB 0E0H
36BC   01         :289     DEFB 1
36BD   30         :290     DEFB 30H
36BE   00         :291     DEFB 0
36BF   03         :292     DEFB NEGINT-$
36C0   A1         :293     DEFB 0A1H
36C1   03         :294     DEFB 3
36C2   38         :295  NEGINT:  DEFB 38H
36C3   C9         :296     RET
                  :297  
                  :298  ;Funktion E^X (OP-CODE 26H, EXP)
                  :299  
36C4   EF         :300  M36C4:   RST CALRUF
36C5   3D         :301     DEFB 3DH
36C6   34         :302     DEFB 34H
36C7   F1         :303     DEFB 0F1H
36C8   38         :304     DEFB 38H
36C9   AA         :305     DEFB 0AAH
36CA   3B         :306     DEFB 3BH
36CB   29         :307     DEFB 29H
36CC   04         :308     DEFB 4
36CD   31         :309     DEFB 31H
36CE   27         :310     DEFB 27H
36CF   C3         :311     DEFB 0C3H
36D0   03         :312     DEFB 3
36D1   31         :313     DEFB 31H
36D2   0F         :314     DEFB 0FH
36D3   A1         :315     DEFB 0A1H
36D4   03         :316     DEFB 3
36D5   88         :317     DEFB 88H
                  :318  
                  :319  ;es folgen 8 Konstanten
                  :320  
36D6   13         :321     DEFB 13H
36D7   36         :322     DEFB 36H
36D8   58         :323     DEFB 58H
36D9   65         :324     DEFB 65H
36DA   66         :325     DEFB 66H
36DB   9D         :326     DEFB 9DH
36DC   78         :327     DEFB 78H
36DD   65         :328     DEFB 65H
36DE   40         :329     DEFB 40H
36DF   A2         :330     DEFB 0A2H
36E0   60         :331     DEFB 60H
                              SP                                PAGE   3
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

36E1   32         :332     DEFB 32H
36E2   C9         :333     DEFB 0C9H
36E3   E7         :334     DEFB 0E7H
36E4   21         :335     DEFB 21H
36E5   F7         :336     DEFB 0F7H
36E6   AF         :337     DEFB 0AFH
36E7   24         :338     DEFB 24H
36E8   EB         :339     DEFB 0EBH
36E9   2F         :340     DEFB 2FH
36EA   B0         :341     DEFB 0B0H
36EB   B0         :342     DEFB 0B0H
36EC   14         :343     DEFB 14H
36ED   EE         :344     DEFB 0EEH
36EE   7E         :345     DEFB 07EH
36EF   BB         :346     DEFB 0BBH
36F0   94         :347     DEFB 94H
36F1   58         :348     DEFB 58H
36F2   F1         :349     DEFB 0F1H
36F3   3A         :350     DEFB 3AH
36F4   7E         :351     DEFB 7EH
36F5   F8         :352     DEFB 0F8H
36F6   CF         :353     DEFB 0CFH
                  :354  
36F7   E3         :355     DEFB 0E3H
36F8   38         :356     DEFB 38H
                  :357  
36F9   CDD52D     :358     CALL M2DD5
36FC   2007       :359     JR NZ,M3705
36FE   3803       :360     JR C,M3703
3700   86         :361     ADD A,(HL)
3701   3009       :362     JR NC,M370C
                  :363  
3703   CF         :364  M3703:   RST ERRAUS
3704   05         :365     DEFB 5      ;'NUMBER TOO BIG'
                  :366  
3705   3807       :367  M3705:   JR C,M370E
3707   96         :368     SUB (HL)
3708   3004       :369     JR NC,M370E
370A   ED44       :370     NEG
370C   77         :371  M370C:   LD (HL),A
370D   C9         :372     RET
                  :373  
370E   EF         :374  M370E:   RST CALRUF
370F   02         :375     DEFB 2
3710   A0         :376     DEFB 0A0H
3711   38         :377     DEFB 38H
3712   C9         :378     RET
                  :379  
                  :380  ;Funktion 'LN (X)' (OP-CODE 25H)
                  :381  ;X wird bei LN(X) auf 2 Arten berechnet. Die Unter-
                  :382  ;scheidung wird daran getroffen, ob X<.8 oder >.8
                  :383  ;ist, nachdem X in den Bereich von .5<=X<1 gebracht
                  :384  ;wurde.
                  :385  
3713   EF         :386  M3713:   RST CALRUF
3714   3D         :387     DEFB 3DH
3715   31         :388     DEFB 31H
3716   37         :389     DEFB 37H
                              SP                                PAGE   4
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3717   00         :390     DEFB 0
3718   04         :391     DEFB LNPOS-$
3719   38         :392     DEFB 38H
                  :393  
371A   CF         :394     RST ERRAUS
371B   09         :395     DEFB 9      ;'INVALID ARGUMENT'
                  :396  
371C   A0         :397  LNPOS:   DEFB 0A0H
371D   02         :398     DEFB 2
371E   38         :399     DEFB 38H
                  :400  
371F   7E         :401     LD A,(HL)
3720   3680       :402     LD (HL),80H
3722   CD282D     :403     CALL M2D28
3725   EF         :404     RST CALRUF
3726   34         :405     DEFB 34H
3727   38         :406     DEFB 38H
3728   00         :407     DEFB 0
3729   03         :408     DEFB 3
372A   01         :409     DEFB 1
372B   31         :410     DEFB 31H
372C   34         :411     DEFB 34H
372D   F0         :412     DEFB 0F0H
372E   4C         :413     DEFB 4CH
372F   CC         :414     DEFB 0CCH
3730   CC         :415     DEFB 0CCH
3731   CD         :416     DEFB 0CDH
3732   03         :417     DEFB 3
3733   37         :418     DEFB 37H
3734   00         :419     DEFB 0
3735   08         :420     DEFB GROSS8-$
3736   01         :421     DEFB 1
3737   A1         :422     DEFB 0A1H
3738   03         :423     DEFB 3
3739   01         :424     DEFB 1
373A   38         :425     DEFB 38H
                  :426  
373B   34         :427     INC (HL)
373C   EF         :428     RST CALRUF
373D   0134F0     :429  GROSS8:  LD BC,0F034H   ;ab hier nur OP-CODES
3740   317217     :430     LD SP,1772H
3743   F8         :431     RET M
3744   04         :432     INC B
3745   01A203     :433     LD BC,3A2H
3748   A2         :434     AND D
3749   03         :435     INC BC
374A   313432     :436     LD SP,3234H
374D   2004       :437     JR NZ,6+$ ;3753H
374F   A2         :438     AND D
3750   03         :439     INC BC
3751   8C         :440     ADC A,H
3752   11AC14     :441     LD DE,14ACH
3755   09         :442     ADD HL,BC
3756   56         :443     LD D,(HL)
3757   DAA559     :444     JP C,59A5H
375A   30C5       :445     JR NC,-39H+$ ;3721H
375C   5C         :446     LD E,H
375D   90         :447     SUB B
                              SP                                PAGE   5
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

375E   AA         :448     XOR D
375F   9E         :449     SBC A,(HL)
3760   70         :450     LD (HL),B
3761   6F         :451     LD L,A
3762   61         :452     LD H,C
3763   A1         :453     AND C
3764   CBDA       :454     SET 3,D
3766   96         :455     SUB (HL)
3767   A4         :456     AND H
3768   319FB4     :457     LD SP,0B49FH
376B   E7         :458     RST GETNXT
376C   A0         :459     AND B
376D   FE5C       :460     CP 5CH
376F   FCEA1B     :461     CALL M,1BEAH
3772   43         :462     LD B,E
3773   CA36ED     :463     JP Z,0ED36H
3776   A7         :464     AND A
3777   9C         :465     SBC A,H
3778   7E         :466     LD A,(HL)
3779   5E         :467     LD E,(HL)
377A   F0         :468     RET P
377B   6E         :469     LD L,(HL)
377C   23         :470     INC HL
377D   80         :471     ADD A,B
377E   93         :472     SUB E
377F   04         :473     INC B
3780   0F         :474     RRCA
3781   38         :475     DEFB 38H    ;Ende der OP-CODES
3782   C9         :476     RET
                  :477  
                  :478  ;Reduzieren des Arguments bei SINUS und COSINUS
                  :479  ;in den Bereich -.5 <=V<.5
                  :480  
3783   EF         :481  M3783:   RST CALRUF
3784   3D         :482     DEC A    ;ab hier nur OP-CODES
3785   34         :483     INC (HL)
3786   EE22       :484     XOR 22H
3788   F9         :485     LD SP,HL
3789   83         :486     ADD A,E
378A   6E         :487     LD L,(HL)
378B   04         :488     INC B
378C   31A20F     :489     LD SP,0FA2H
378F   27         :490     DAA
3790   03         :491     INC BC
3791   310F31     :492     LD SP,310FH
3794   0F         :493     RRCA
3795   312AA1     :494     LD SP,0A12AH
3798   03         :495     INC BC
3799   3137C0     :496     LD SP,0C037H
379C   00         :497     NOP
379D   04         :498     INC B
379E   02         :499     LD (BC),A
379F   38         :500     DEFB 38H    ;Ende der OP-CODES
37A0   C9         :501     RET
                  :502  
37A1   A1         :503  ZPOSI:   AND C    ;ab hier nur OP-CODES
37A2   03         :504     INC BC
37A3   013600     :505     LD BC,036H
                              SP                                PAGE   6
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

37A6   02         :506     LD (BC),A
37A7   1B         :507     DEC DE
37A8   38         :508  YNEGAT:  DEFB 38H    ;Ende der OP-CODES
37A9   C9         :509     RET
                  :510  
                  :511  ;Funktion COSINUS (OP-CODE 20H)
                  :512  
37AA   EF         :513  M37AA:   RST CALRUF
37AB   39         :514     ADD HL,SP      ;ab hier nur OP-CODES
37AC   2AA103     :515     LD HL,(3A1H)
37AF   E0         :516     RET PO
37B0   00         :517     NOP
37B1   061B       :518     LD B,1BH
37B3   33         :519     INC SP
37B4   03         :520     INC BC
                  :521  
                  :522  ;Berechnen SINUS (OP-CODE 1FH)
                  :523  
37B5   EF         :524  M37B5:   RST CALRUF
37B6   39         :525     ADD HL,SP      ;immer noch OP-CODES
37B7   313104     :526  SINCOS:  LD SP,431H
37BA   310FA1     :527     LD SP,0A10FH
37BD   03         :528     INC BC
37BE   86         :529     ADD A,(HL)
37BF   14         :530     INC D
37C0   E65C       :531     AND 5CH
37C2   1F         :532     RRA
37C3   0B         :533     DEC BC
37C4   A3         :534     AND E
37C5   8F         :535     ADC A,A
37C6   38EE       :536     JR C,-10H+$
37C8   E9         :537     JP (HL)
37C9   15         :538     DEC D
37CA   63         :539     LD H,E
37CB   BB         :540     CP E
37CC   23         :541     INC HL
37CD   EE92       :542     XOR 92H
37CF   0D         :543     DEC C
37D0   CDEDF1     :544     CALL 0F1EDH
37D3   23         :545     INC HL
37D4   5D         :546     LD E,L
37D5   1B         :547     DEC DE
37D6   EA0438     :548     JP PE,3804H
37D9   C9         :549     RET      ;Ende des OP-CODES
                  :550  
                  :551  ;Berechnung TANGENS (OP-CODE 21H)
                  :552  
37DA   EF         :553  M37DA:   RST CALRUF
37DB   311F01     :554     LD SP,11FH  ;ab hier nur OP-CODES
37DE   2005       :555     JR NZ,7+$
37E0   38         :556     DEFB 38H ;Ende der OP-CODES
37E1   C9         :557     RET
                  :558  
                  :559  ;Berechnung ARCUSTANGENS (OP-CODE 24H)
                  :560  
                  :561  ;Unterteilung in 3 Faelle:
                  :562  ;fuer -1<X<1:  W=0,  Y=0
                  :563  ;fuer 1<=X: W=PI/2,  Y=-1/X
                              SP                                PAGE   7
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  :564  ;fuer X<=-1:   W=-PI/2,Y=-1/X
                  :565  
37E2   CD9732     :566  M37E2:   CALL M3297
37E5   7E         :567     LD A,(HL)
37E6   FE81       :568     CP 81H
37E8   380E       :569     JR C,TANGE1
37EA   EF         :570     RST CALRUF
37EB   A1         :571     AND C    ;ab hier nur OP-CODES
37EC   1B         :572     DEC DE
37ED   010531     :573     LD BC,3105H
37F0   36A3       :574     LD (HL),0A3H
37F2   010006     :575     LD BC,600H
37F5   1B         :576     DEC DE
37F6   33         :577     INC SP
37F7   03         :578     INC BC
                  :579  
37F8   EF         :580  TANGE1:  RST CALRUF
37F9   A0         :581     AND B    ;immer noch OP-CODES
37FA   013131     :582  TANGE2:  LD BC,3131H
37FD   04         :583     INC B
37FE   310FA1     :584     LD SP,0A10FH
3801   03         :585     INC BC
3802   8C         :586     ADC A,H
3803   10B2       :587     DJNZ -4CH+$
3805   13         :588     INC DE
3806   0E55       :589     LD C,55H
3808   E48D58     :590     CALL PO,588DH
380B   39         :591     ADD HL,SP
380C   BC         :592     CP H
380D   5B         :593     LD E,E
380E   98         :594     SBC A,B
380F   FD9E00     :595     SBC A,(IY+0)
3812   3675       :596     LD (HL),75H
3814   A0         :597     AND B
3815   DBE8       :598     IN A,(0E8H)
3817   B4         :599     OR H
3818   63         :600     LD H,E
3819   42         :601     LD B,D
381A   C4E6B5     :602     CALL NZ,0B5E6H
381D   09         :603     ADD HL,BC
381E   36BE       :604     LD (HL),0BEH
3820   E9         :605     JP (HL)
3821   3673       :606     LD (HL),73H
3823   1B         :607     DEC DE
3824   5D         :608     LD E,L
3825   ECD8DE     :609     CALL PE,0DED8H
3828   63         :610     LD H,E
3829   BE         :611     CP (HL)
382A   F0         :612     RET P
382B   61         :613     LD H,C
382C   A1         :614     AND C
382D   B3         :615     OR E
382E   0C         :616     INC C
382F   04         :617     INC B
3830   0F         :618     RRCA
3831   38         :619     DEFB 38H ;Ende der OP-CODES
3832   C9         :620     RET
                  :621  
                              SP                                PAGE   8
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  :622  ;Funktion ARCUSSINUS (OP-CODE 22H)
                  :623  
3833   EF         :624  M3833:   RST CALRUF
3834   313104     :625     LD SP,431H  ;ab hier nur OP-CODES
3837   A1         :626     AND C
3838   03         :627     INC BC
3839   1B         :628     DEC DE
383A   28A1       :629     JR Z,-5DH+$
383C   0F         :630     RRCA
383D   05         :631     DEC B
383E   24         :632     INC H
383F   310F38     :633     LD SP,380FH
3842   C9         :634     RET      ;Ende des OP-CODES
                  :635  
                  :636  ;Funktion ARCUSCOSINUS (OP-CODE 23H)
                  :637  
3843   EF         :638  M3843:   RST CALRUF
3844   22A303     :639     LD (3A3H),HL   ;ab hier nur OP-CODES
3847   1B         :640     DEC DE
3848   38         :641     DEFB 38H ;Ende der OP-CODES
3849   C9         :642     RET
                  :643  
                  :644  ;Berechnen der Quadratwurzel (OP-CODE 28H)
                  :645  
384A   EF         :646  M384A:   RST CALRUF
384B   313000     :647     LD SP,030H  ;ab hier nur OP-CODES
384E   1EA2       :648     LD E,0A2H
3850   38         :649     DEFB 38H ;Ende der OP-CODES
                  :650  
                  :651  ;Berechnung von X^Y (OP-CODE 06)
                  :652  
3851   EF         :653  M3851:   RST CALRUF
3852   013130     :654     LD BC,3031H ;ab hier nur OP-CODES
3855   00         :655     NOP
3856   07         :656     RLCA
3857   25         :657     DEC H
3858   04         :658     INC B
3859   38         :659     DEFB 38H ;Ende der OP-CODES
385A   C3C436     :660     JP M36C4
                  :661  
385D   02         :662  XNULL:   DEFB 2      ;ab hier nur OP-CODE
385E   313000     :663     LD SP,030H
3861   09         :664     ADD HL,BC
3862   A0         :665     AND B
3863   013700     :666     LD BC,037H
3866   06A1       :667     LD B,0A1H
3868   01         :668     DEFB 1
3869   05         :669     DEFB 5
386A   02         :670  EINSSP:  DEFB 2
386B   A1         :671     AND C
386C   38         :672  LETZWE:  DEFB 38H ;Ende der OP-CODES
386D   C9         :673     RET

? E? FOLGE? BI? ADR.?  3CF?  NU?   'FF's
? DANAC? LIEG? DE? ZEICHENSATZ



                              SP                                PAGE  19
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

                  ;260  ;==================================================
                  ;261  
                  ;262  
3D00   00         ;263  CHARR0:  NOP
3D01   00         ;264     NOP
3D02   00         ;265     NOP
3D03   00         ;266     NOP
3D04   00         ;267     NOP
3D05   00         ;268     NOP
3D06   00         ;269     NOP
3D07   00         ;270     NOP
3D08   00         ;271     NOP
3D09   1010       ;272     DJNZ 12H+$ ;3D1BH
3D0B   1010       ;273     DJNZ 12H+$ ;3D1DH
3D0D   00         ;274     NOP
3D0E   1000       ;275     DJNZ 2+$ ;3D10H
3D10   00         ;276     NOP
3D11   24         ;277     INC H
3D12   24         ;278     INC H
3D13   00         ;279     NOP
3D14   00         ;280     NOP
3D15   00         ;281     NOP
3D16   00         ;282     NOP
3D17   00         ;283     NOP
3D18   00         ;284     NOP
3D19   24         ;285     INC H
3D1A   7E         ;286     LD A,(HL)
3D1B   24         ;287     INC H
3D1C   24         ;288     INC H
3D1D   7E         ;289     LD A,(HL)
3D1E   24         ;290     INC H
3D1F   00         ;291     NOP
3D20   00         ;292     NOP
3D21   08         ;293     EX AF,AF'
3D22   3E28       ;294     LD A,28H
3D24   3E0A       ;295     LD A,0AH
3D26   3E08       ;296     LD A,8
3D28   00         ;297     NOP
3D29   62         ;298     LD H,D
3D2A   64         ;299     LD H,H
3D2B   08         ;300     EX AF,AF'
3D2C   1026       ;301     DJNZ 28H+$ ;3D54H
3D2E   46         ;302     LD B,(HL)
3D2F   00         ;303     NOP
3D30   00         ;304     NOP
3D31   1028       ;305     DJNZ 2AH+$ ;3D5BH
3D33   102A       ;306     DJNZ 2CH+$ ;3D5FH
3D35   44         ;307     LD B,H
3D36   3A0000     ;308     LD A,(000H)
3D39   08         ;309     EX AF,AF'
3D3A   1000       ;310     DJNZ 2+$ ;3D3CH
3D3C   00         ;311     NOP
3D3D   00         ;312     NOP
3D3E   00         ;313     NOP
3D3F   00         ;314     NOP
3D40   00         ;315     NOP
3D41   04         ;316     INC B
3D42   08         ;317     EX AF,AF'
                              SP                                PAGE  20
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3D43   08         ;318     EX AF,AF'
3D44   08         ;319     EX AF,AF'
3D45   08         ;320     EX AF,AF'
3D46   04         ;321     INC B
3D47   00         ;322     NOP
3D48   00         ;323     NOP
3D49   2010       ;324     JR NZ,12H+$ ;3D5BH
3D4B   1010       ;325     DJNZ 12H+$ ;3D5DH
3D4D   1020       ;326     DJNZ 22H+$ ;3D6FH
3D4F   00         ;327     NOP
3D50   00         ;328     NOP
3D51   00         ;329     NOP
3D52   14         ;330     INC D
3D53   08         ;331     EX AF,AF'
3D54   3E08       ;332     LD A,8
3D56   14         ;333     INC D
3D57   00         ;334     NOP
3D58   00         ;335     NOP
3D59   00         ;336     NOP
3D5A   08         ;337     EX AF,AF'
3D5B   08         ;338     EX AF,AF'
3D5C   3E08       ;339     LD A,8
3D5E   08         ;340     EX AF,AF'
3D5F   00         ;341     NOP
3D60   00         ;342     NOP
3D61   00         ;343     NOP
3D62   00         ;344     NOP
3D63   00         ;345     NOP
3D64   00         ;346     NOP
3D65   08         ;347     EX AF,AF'
3D66   08         ;348     EX AF,AF'
3D67   1000       ;349     DJNZ 2+$ ;3D69H
3D69   00         ;350     NOP
3D6A   00         ;351     NOP
3D6B   00         ;352     NOP
3D6C   3E00       ;353     LD A,0
3D6E   00         ;354     NOP
3D6F   00         ;355     NOP
3D70   00         ;356     NOP
3D71   00         ;357     NOP
3D72   00         ;358     NOP
3D73   00         ;359     NOP
3D74   00         ;360     NOP
3D75   1818       ;361     JR 1AH+$ ;3D8FH
3D77   00         ;362     NOP
3D78   00         ;363     NOP
3D79   00         ;364     NOP
3D7A   02         ;365     LD (BC),A
3D7B   04         ;366     INC B
3D7C   08         ;367     EX AF,AF'
3D7D   1020       ;368     DJNZ 22H+$ ;3D9FH
3D7F   00         ;369     NOP
3D80   00         ;370     NOP
3D81   3C         ;371     INC A
3D82   46         ;372     LD B,(HL)
3D83   4A         ;373     LD C,D
3D84   52         ;374     LD D,D
3D85   62         ;375     LD H,D
                              SP                                PAGE  21
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3D86   3C         ;376     INC A
3D87   00         ;377     NOP
3D88   00         ;378     NOP
3D89   1828       ;379     JR 2AH+$ ;3DB3H
3D8B   08         ;380     EX AF,AF'
3D8C   08         ;381     EX AF,AF'
3D8D   08         ;382     EX AF,AF'
3D8E   3E00       ;383     LD A,0
3D90   00         ;384     NOP
3D91   3C         ;385     INC A
3D92   42         ;386     LD B,D
3D93   02         ;387     LD (BC),A
3D94   3C         ;388     INC A
3D95   40         ;389     LD B,B
3D96   7E         ;390     LD A,(HL)
3D97   00         ;391     NOP
3D98   00         ;392     NOP
3D99   3C         ;393     INC A
3D9A   42         ;394     LD B,D
3D9B   0C         ;395     INC C
3D9C   02         ;396     LD (BC),A
3D9D   42         ;397     LD B,D
3D9E   3C         ;398     INC A
3D9F   00         ;399     NOP
3DA0   00         ;400     NOP
3DA1   08         ;401     EX AF,AF'
3DA2   1828       ;402     JR 2AH+$ ;3DCCH
3DA4   48         ;403     LD C,B
3DA5   7E         ;404     LD A,(HL)
3DA6   08         ;405     EX AF,AF'
3DA7   00         ;406     NOP
3DA8   00         ;407     NOP
3DA9   7E         ;408     LD A,(HL)
3DAA   40         ;409     LD B,B
3DAB   7C         ;410     LD A,H
3DAC   02         ;411     LD (BC),A
3DAD   42         ;412     LD B,D
3DAE   3C         ;413     INC A
3DAF   00         ;414     NOP
3DB0   00         ;415     NOP
3DB1   3C         ;416     INC A
3DB2   40         ;417     LD B,B
3DB3   7C         ;418     LD A,H
3DB4   42         ;419     LD B,D
3DB5   42         ;420     LD B,D
3DB6   3C         ;421     INC A
3DB7   00         ;422     NOP
3DB8   00         ;423     NOP
3DB9   7E         ;424     LD A,(HL)
3DBA   02         ;425     LD (BC),A
3DBB   04         ;426     INC B
3DBC   08         ;427     EX AF,AF'
3DBD   1010       ;428     DJNZ 12H+$ ;3DCFH
3DBF   00         ;429     NOP
3DC0   00         ;430     NOP
3DC1   3C         ;431     INC A
3DC2   42         ;432     LD B,D
3DC3   3C         ;433     INC A
                              SP                                PAGE  22
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3DC4   42         ;434     LD B,D
3DC5   42         ;435     LD B,D
3DC6   3C         ;436     INC A
3DC7   00         ;437     NOP
3DC8   00         ;438     NOP
3DC9   3C         ;439     INC A
3DCA   42         ;440     LD B,D
3DCB   42         ;441     LD B,D
3DCC   3E02       ;442     LD A,2
3DCE   3C         ;443     INC A
3DCF   00         ;444     NOP
3DD0   00         ;445     NOP
3DD1   00         ;446     NOP
3DD2   00         ;447     NOP
3DD3   1000       ;448     DJNZ 2+$ ;3DD5H
3DD5   00         ;449     NOP
3DD6   1000       ;450     DJNZ 2+$ ;3DD8H
3DD8   00         ;451     NOP
3DD9   00         ;452     NOP
3DDA   1000       ;453     DJNZ 2+$ ;3DDCH
3DDC   00         ;454     NOP
3DDD   1010       ;455     DJNZ 12H+$ ;3DEFH
3DDF   2000       ;456     JR NZ,2+$ ;3DE1H
3DE1   00         ;457     NOP
3DE2   04         ;458     INC B
3DE3   08         ;459     EX AF,AF'
3DE4   1008       ;460     DJNZ 0AH+$ ;3DEEH
3DE6   04         ;461     INC B
3DE7   00         ;462     NOP
3DE8   00         ;463     NOP
3DE9   00         ;464     NOP
3DEA   00         ;465     NOP
3DEB   3E00       ;466     LD A,0
3DED   3E00       ;467     LD A,0
3DEF   00         ;468     NOP
3DF0   00         ;469     NOP
3DF1   00         ;470     NOP
3DF2   1008       ;471     DJNZ 0AH+$ ;3DFCH
3DF4   04         ;472     INC B
3DF5   08         ;473     EX AF,AF'
3DF6   1000       ;474     DJNZ 2+$ ;3DF8H
3DF8   00         ;475     NOP
3DF9   3C         ;476     INC A
3DFA   42         ;477     LD B,D
3DFB   04         ;478     INC B
3DFC   08         ;479     EX AF,AF'
3DFD   00         ;480     NOP
3DFE   08         ;481     EX AF,AF'
3DFF   00         ;482     NOP
3E00   00         ;483     NOP
3E01   3C         ;484     INC A
3E02   4A         ;485     LD C,D
3E03   56         ;486     LD D,(HL)
3E04   5E         ;487     LD E,(HL)
3E05   40         ;488     LD B,B
3E06   3C         ;489     INC A
3E07   00         ;490     NOP
3E08   00         ;491     NOP
                              SP                                PAGE  23
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3E09   3C         ;492     INC A
3E0A   42         ;493     LD B,D
3E0B   42         ;494     LD B,D
3E0C   7E         ;495     LD A,(HL)
3E0D   42         ;496     LD B,D
3E0E   42         ;497     LD B,D
3E0F   00         ;498     NOP
3E10   00         ;499     NOP
3E11   7C         ;500     LD A,H
3E12   42         ;501     LD B,D
3E13   7C         ;502     LD A,H
3E14   42         ;503     LD B,D
3E15   42         ;504     LD B,D
3E16   7C         ;505     LD A,H
3E17   00         ;506     NOP
3E18   00         ;507     NOP
3E19   3C         ;508     INC A
3E1A   42         ;509     LD B,D
3E1B   40         ;510     LD B,B
3E1C   40         ;511     LD B,B
3E1D   42         ;512     LD B,D
3E1E   3C         ;513     INC A
3E1F   00         ;514     NOP
3E20   00         ;515     NOP
3E21   78         ;516     LD A,B
3E22   44         ;517     LD B,H
3E23   42         ;518     LD B,D
3E24   42         ;519     LD B,D
3E25   44         ;520     LD B,H
3E26   78         ;521     LD A,B
3E27   00         ;522     NOP
3E28   00         ;523     NOP
3E29   7E         ;524     LD A,(HL)
3E2A   40         ;525     LD B,B
3E2B   7C         ;526     LD A,H
3E2C   40         ;527     LD B,B
3E2D   40         ;528     LD B,B
3E2E   7E         ;529     LD A,(HL)
3E2F   00         ;530     NOP
3E30   00         ;531     NOP
3E31   7E         ;532     LD A,(HL)
3E32   40         ;533     LD B,B
3E33   7C         ;534     LD A,H
3E34   40         ;535     LD B,B
3E35   40         ;536     LD B,B
3E36   40         ;537     LD B,B
3E37   00         ;538     NOP
3E38   00         ;539     NOP
3E39   3C         ;540     INC A
3E3A   42         ;541     LD B,D
3E3B   40         ;542     LD B,B
3E3C   4E         ;543     LD C,(HL)
3E3D   42         ;544     LD B,D
3E3E   3C         ;545     INC A
3E3F   00         ;546     NOP
3E40   00         ;547     NOP
3E41   42         ;548     LD B,D
3E42   42         ;549     LD B,D
                              SP                                PAGE  24
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3E43   7E         ;550     LD A,(HL)
3E44   42         ;551     LD B,D
3E45   42         ;552     LD B,D
3E46   42         ;553     LD B,D
3E47   00         ;554     NOP
3E48   00         ;555     NOP
3E49   3E08       ;556     LD A,8
3E4B   08         ;557     EX AF,AF'
3E4C   08         ;558     EX AF,AF'
3E4D   08         ;559     EX AF,AF'
3E4E   3E00       ;560     LD A,0
3E50   00         ;561     NOP
3E51   02         ;562     LD (BC),A
3E52   02         ;563     LD (BC),A
3E53   02         ;564     LD (BC),A
3E54   42         ;565     LD B,D
3E55   42         ;566     LD B,D
3E56   3C         ;567     INC A
3E57   00         ;568     NOP
3E58   00         ;569     NOP
3E59   44         ;570     LD B,H
3E5A   48         ;571     LD C,B
3E5B   70         ;572     LD (HL),B
3E5C   48         ;573     LD C,B
3E5D   44         ;574     LD B,H
3E5E   42         ;575     LD B,D
3E5F   00         ;576     NOP
3E60   00         ;577     NOP
3E61   40         ;578     LD B,B
3E62   40         ;579     LD B,B
3E63   40         ;580     LD B,B
3E64   40         ;581     LD B,B
3E65   40         ;582     LD B,B
3E66   7E         ;583     LD A,(HL)
3E67   00         ;584     NOP
3E68   00         ;585     NOP
3E69   42         ;586     LD B,D
3E6A   66         ;587     LD H,(HL)
3E6B   5A         ;588     LD E,D
3E6C   42         ;589     LD B,D
3E6D   42         ;590     LD B,D
3E6E   42         ;591     LD B,D
3E6F   00         ;592     NOP
3E70   00         ;593     NOP
3E71   42         ;594     LD B,D
3E72   62         ;595     LD H,D
3E73   52         ;596     LD D,D
3E74   4A         ;597     LD C,D
3E75   46         ;598     LD B,(HL)
3E76   42         ;599     LD B,D
3E77   00         ;600     NOP
3E78   00         ;601     NOP
3E79   3C         ;602     INC A
3E7A   42         ;603     LD B,D
3E7B   42         ;604     LD B,D
3E7C   42         ;605     LD B,D
3E7D   42         ;606     LD B,D
3E7E   3C         ;607     INC A
                              SP                                PAGE  25
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3E7F   00         ;608     NOP
3E80   00         ;609     NOP
3E81   7C         ;610     LD A,H
3E82   42         ;611     LD B,D
3E83   42         ;612     LD B,D
3E84   7C         ;613     LD A,H
3E85   40         ;614     LD B,B
3E86   40         ;615     LD B,B
3E87   00         ;616     NOP
3E88   00         ;617     NOP
3E89   3C         ;618     INC A
3E8A   42         ;619     LD B,D
3E8B   42         ;620     LD B,D
3E8C   52         ;621     LD D,D
3E8D   4A         ;622     LD C,D
3E8E   3C         ;623     INC A
3E8F   00         ;624     NOP
3E90   00         ;625     NOP
3E91   7C         ;626     LD A,H
3E92   42         ;627     LD B,D
3E93   42         ;628     LD B,D
3E94   7C         ;629     LD A,H
3E95   44         ;630     LD B,H
3E96   42         ;631     LD B,D
3E97   00         ;632     NOP
3E98   00         ;633     NOP
3E99   3C         ;634     INC A
3E9A   40         ;635     LD B,B
3E9B   3C         ;636     INC A
3E9C   02         ;637     LD (BC),A
3E9D   42         ;638     LD B,D
3E9E   3C         ;639     INC A
3E9F   00         ;640     NOP
3EA0   00         ;641     NOP
3EA1   FE10       ;642     CP 10H
3EA3   1010       ;643     DJNZ 12H+$ ;3EB5H
3EA5   1010       ;644     DJNZ 12H+$ ;3EB7H
3EA7   00         ;645     NOP
3EA8   00         ;646     NOP
3EA9   42         ;647     LD B,D
3EAA   42         ;648     LD B,D
3EAB   42         ;649     LD B,D
3EAC   42         ;650     LD B,D
3EAD   42         ;651     LD B,D
3EAE   3C         ;652     INC A
3EAF   00         ;653     NOP
3EB0   00         ;654     NOP
3EB1   42         ;655     LD B,D
3EB2   42         ;656     LD B,D
3EB3   42         ;657     LD B,D
3EB4   42         ;658     LD B,D
3EB5   24         ;659     INC H
3EB6   1800       ;660     JR 2+$ ;3EB8H
3EB8   00         ;661     NOP
3EB9   42         ;662     LD B,D
3EBA   42         ;663     LD B,D
3EBB   42         ;664     LD B,D
3EBC   42         ;665     LD B,D
                              SP                                PAGE  26
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3EBD   5A         ;666     LD E,D
3EBE   24         ;667     INC H
3EBF   00         ;668     NOP
3EC0   00         ;669     NOP
3EC1   42         ;670     LD B,D
3EC2   24         ;671     INC H
3EC3   1818       ;672     JR 1AH+$ ;3EDDH
3EC5   24         ;673     INC H
3EC6   42         ;674     LD B,D
3EC7   00         ;675     NOP
3EC8   00         ;676     NOP
3EC9   82         ;677     ADD A,D
3ECA   44         ;678     LD B,H
3ECB   2810       ;679     JR Z,12H+$ ;3EDDH
3ECD   1010       ;680     DJNZ 12H+$ ;3EDFH
3ECF   00         ;681     NOP
3ED0   00         ;682     NOP
3ED1   7E         ;683     LD A,(HL)
3ED2   04         ;684     INC B
3ED3   08         ;685     EX AF,AF'
3ED4   1020       ;686     DJNZ 22H+$ ;3EF6H
3ED6   7E         ;687     LD A,(HL)
3ED7   00         ;688     NOP
3ED8   00         ;689     NOP
3ED9   0E08       ;690     LD C,8
3EDB   08         ;691     EX AF,AF'
3EDC   08         ;692     EX AF,AF'
3EDD   08         ;693     EX AF,AF'
3EDE   0E00       ;694     LD C,0
3EE0   00         ;695     NOP
3EE1   00         ;696     NOP
3EE2   40         ;697     LD B,B
3EE3   2010       ;698     JR NZ,12H+$ ;3EF5H
3EE5   08         ;699     EX AF,AF'
3EE6   04         ;700     INC B
3EE7   00         ;701     NOP
3EE8   00         ;702     NOP
3EE9   70         ;703     LD (HL),B
3EEA   1010       ;704     DJNZ 12H+$ ;3EFCH
3EEC   1010       ;705     DJNZ 12H+$ ;3EFEH
3EEE   70         ;706     LD (HL),B
3EEF   00         ;707     NOP
3EF0   00         ;708     NOP
3EF1   1038       ;709     DJNZ 3AH+$ ;3F2BH
3EF3   54         ;710     LD D,H
3EF4   1010       ;711     DJNZ 12H+$ ;3F06H
3EF6   1000       ;712     DJNZ 2+$ ;3EF8H
3EF8   00         ;713     NOP
3EF9   00         ;714     NOP
3EFA   00         ;715     NOP
3EFB   00         ;716     NOP
3EFC   00         ;717     NOP
3EFD   00         ;718     NOP
3EFE   00         ;719     NOP
3EFF   FF         ;720     RST 38H
3F00   00         ;721     NOP
3F01   1C         ;722     INC E
3F02   227820     ;723     LD (2078H),HL
                              SP                                PAGE  27
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3F05   207E       ;724     DEFW 7E20H
3F07   00         ;725     NOP
3F08   00         ;726     NOP
3F09   00         ;727     NOP
3F0A   3804       ;728     JR C,6+$ ;3F10H
3F0C   3C         ;729     INC A
3F0D   44         ;730     LD B,H
3F0E   3C         ;731     INC A
3F0F   00         ;732     NOP
3F10   00         ;733     NOP
3F11   2020       ;734     JR NZ,22H+$ ;3F33H
3F13   3C         ;735     INC A
3F14   22223C     ;736     LD (3C22H),HL
3F17   00         ;737     NOP
3F18   00         ;738     NOP
3F19   00         ;739     NOP
3F1A   1C         ;740     INC E
3F1B   2020       ;741     JR NZ,22H+$ ;3F3DH
3F1D   201C       ;742     JR NZ,1EH+$ ;3F3BH
3F1F   00         ;743     NOP
3F20   00         ;744     NOP
3F21   04         ;745     INC B
3F22   04         ;746     INC B
3F23   3C         ;747     INC A
3F24   44         ;748     LD B,H
3F25   44         ;749     LD B,H
3F26   3C         ;750     INC A
3F27   00         ;751     NOP
3F28   00         ;752     NOP
3F29   00         ;753     NOP
3F2A   3844       ;754     JR C,46H+$ ;3F70H
3F2C   78         ;755     LD A,B
3F2D   40         ;756     LD B,B
3F2E   3C         ;757     INC A
3F2F   00         ;758     NOP
3F30   00         ;759     NOP
3F31   0C         ;760     INC C
3F32   1018       ;761     DJNZ 1AH+$ ;3F4CH
3F34   1010       ;762     DJNZ 12H+$ ;3F46H
3F36   1000       ;763     DJNZ 2+$ ;3F38H
3F38   00         ;764     NOP
3F39   00         ;765     NOP
3F3A   3C         ;766     INC A
3F3B   44         ;767     LD B,H
3F3C   44         ;768     LD B,H
3F3D   3C         ;769     INC A
3F3E   04         ;770     INC B
3F3F   3800       ;771     JR C,2+$ ;3F41H
3F41   40         ;772     LD B,B
3F42   40         ;773     LD B,B
3F43   78         ;774     LD A,B
3F44   44         ;775     LD B,H
3F45   44         ;776     LD B,H
3F46   44         ;777     LD B,H
3F47   00         ;778     NOP
3F48   00         ;779     NOP
3F49   1000       ;780     DJNZ 2+$ ;3F4BH
3F4B   3010       ;781     JR NC,12H+$ ;3F5DH
                              SP                                PAGE  28
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3F4D   1038       ;782     DJNZ 3AH+$ ;3F87H
3F4F   00         ;783     NOP
3F50   00         ;784     NOP
3F51   04         ;785     INC B
3F52   00         ;786     NOP
3F53   04         ;787     INC B
3F54   04         ;788     INC B
3F55   04         ;789     INC B
3F56   24         ;790     INC H
3F57   1800       ;791     JR 2+$ ;3F59H
3F59   2028       ;792     JR NZ,2AH+$ ;3F83H
3F5B   3030       ;793     JR NC,32H+$ ;3F8DH
3F5D   2824       ;794     JR Z,26H+$ ;3F83H
3F5F   00         ;795     NOP
3F60   00         ;796     NOP
3F61   1010       ;797     DJNZ 12H+$ ;3F73H
3F63   1010       ;798     DJNZ 12H+$ ;3F75H
3F65   100C       ;799     DJNZ 0EH+$ ;3F73H
3F67   00         ;800     NOP
3F68   00         ;801     NOP
3F69   00         ;802     NOP
3F6A   68         ;803     LD L,B
3F6B   54         ;804     LD D,H
3F6C   54         ;805     LD D,H
3F6D   54         ;806     LD D,H
3F6E   54         ;807     LD D,H
3F6F   00         ;808     NOP
3F70   00         ;809     NOP
3F71   00         ;810     NOP
3F72   78         ;811     LD A,B
3F73   44         ;812     LD B,H
3F74   44         ;813     LD B,H
3F75   44         ;814     LD B,H
3F76   44         ;815     LD B,H
3F77   00         ;816     NOP
3F78   00         ;817     NOP
3F79   00         ;818     NOP
3F7A   3844       ;819     JR C,46H+$ ;3FC0H
3F7C   44         ;820     LD B,H
3F7D   44         ;821     LD B,H
3F7E   3800       ;822     JR C,2+$ ;3F80H
3F80   00         ;823     NOP
3F81   00         ;824     NOP
3F82   78         ;825     LD A,B
3F83   44         ;826     LD B,H
3F84   44         ;827     LD B,H
3F85   78         ;828     LD A,B
3F86   40         ;829     LD B,B
3F87   40         ;830     LD B,B
3F88   00         ;831     NOP
3F89   00         ;832     NOP
3F8A   3C         ;833     INC A
3F8B   44         ;834     LD B,H
3F8C   44         ;835     LD B,H
3F8D   3C         ;836     INC A
3F8E   04         ;837     INC B
3F8F   0600       ;838     LD B,0
3F91   00         ;839     NOP
                              SP                                PAGE  29
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3F92   1C         ;840     INC E
3F93   2020       ;841     JR NZ,22H+$ ;3FB5H
3F95   2020       ;842     JR NZ,22H+$ ;3FB7H
3F97   00         ;843     NOP
3F98   00         ;844     NOP
3F99   00         ;845     NOP
3F9A   3840       ;846     JR C,42H+$ ;3FDCH
3F9C   3804       ;847     JR C,6+$ ;3FA2H
3F9E   78         ;848     LD A,B
3F9F   00         ;849     NOP
3FA0   00         ;850     NOP
3FA1   1038       ;851     DJNZ 3AH+$ ;3FDBH
3FA3   1010       ;852     DJNZ 12H+$ ;3FB5H
3FA5   100C       ;853     DJNZ 0EH+$ ;3FB3H
3FA7   00         ;854     NOP
3FA8   00         ;855     NOP
3FA9   00         ;856     NOP
3FAA   44         ;857     LD B,H
3FAB   44         ;858     LD B,H
3FAC   44         ;859     LD B,H
3FAD   44         ;860     LD B,H
3FAE   3800       ;861     JR C,2+$ ;3FB0H
3FB0   00         ;862     NOP
3FB1   00         ;863     NOP
3FB2   44         ;864     LD B,H
3FB3   44         ;865     LD B,H
3FB4   2828       ;866     JR Z,2AH+$ ;3FDEH
3FB6   1000       ;867     DJNZ 2+$ ;3FB8H
3FB8   00         ;868     NOP
3FB9   00         ;869     NOP
3FBA   44         ;870     LD B,H
3FBB   54         ;871     LD D,H
3FBC   54         ;872     LD D,H
3FBD   54         ;873     LD D,H
3FBE   2800       ;874     JR Z,2+$ ;3FC0H
3FC0   00         ;875     NOP
3FC1   00         ;876     NOP
3FC2   44         ;877     LD B,H
3FC3   2810       ;878     JR Z,12H+$ ;3FD5H
3FC5   2844       ;879     JR Z,46H+$ ;400BH
3FC7   00         ;880     NOP
3FC8   00         ;881     NOP
3FC9   00         ;882     NOP
3FCA   44         ;883     LD B,H
3FCB   44         ;884     LD B,H
3FCC   44         ;885     LD B,H
3FCD   3C         ;886     INC A
3FCE   04         ;887     INC B
3FCF   3800       ;888     JR C,2+$ ;3FD1H
3FD1   00         ;889     NOP
3FD2   7C         ;890     LD A,H
3FD3   08         ;891     EX AF,AF'
3FD4   1020       ;892     DJNZ 22H+$ ;3FF6H
3FD6   7C         ;893     LD A,H
3FD7   00         ;894     NOP
3FD8   00         ;895     NOP
3FD9   0E08       ;896     LD C,8
3FDB   3008       ;897     JR NC,0AH+$ ;3FE5H
                              SP                                PAGE  30
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

3FDD   08         ;898     EX AF,AF'
3FDE   0E00       ;899     LD C,0
3FE0   00         ;900     NOP
3FE1   08         ;901     EX AF,AF'
3FE2   08         ;902     EX AF,AF'
3FE3   08         ;903     EX AF,AF'
3FE4   08         ;904     EX AF,AF'
3FE5   08         ;905     EX AF,AF'
3FE6   08         ;906     EX AF,AF'
3FE7   00         ;907     NOP
3FE8   00         ;908     NOP
3FE9   70         ;909     LD (HL),B
3FEA   100C       ;910     DJNZ 0EH+$ ;3FF8H
3FEC   1010       ;911     DJNZ 12H+$ ;3FFEH
3FEE   70         ;912     LD (HL),B
3FEF   00         ;913     NOP
3FF0   00         ;914     NOP
3FF1   14         ;915     INC D
3FF2   2800       ;916     JR Z,2+$ ;3FF4H
3FF4   00         ;917     NOP
3FF5   00         ;918     NOP
3FF6   00         ;919     NOP
3FF7   00         ;920     NOP
3FF8   3C         ;921     INC A
3FF9   42         ;922     LD B,D
3FFA   99         ;923     SBC A,C
3FFB   A1         ;924     AND C
3FFC   A1         ;925     AND C
3FFD   99         ;926     SBC A,C
3FFE   42         ;927     LD B,D
3FF?   3?         ;92?     DEF? 3C?         END? DE? EPROM? !!!!!
4000              ;929     ORG 4000H
                  ;930  
                  ;931  RAMBEG:        ;Anfang des Rambereiches
4000              ;932  BILD: DEFS 1800H  ;Bildschirmspeicher
5800              ;933  ATTRSP:  DEFS 300H   ;Attributspeicher
5B00              ;934  PTRBUF:  DEFS 100H   ;Druckerpuffer
5C00              ;935  KSTATE:  DEFS 8      ;2*4 Speicher fuer Tastatur
5C08              ;936  LASTK:   DEFS 1   ;letzter Tastencode
5C09              ;937  REPDEL:  DEFS 1   ;Zeitkonstante bis Repeat
5C0A              ;938  REPPER:  DEFS 1   ;Zeitkonstante bei Repeat
5C0B              ;939  DEFADD:  DEFS 2   ;Argument fuer Funktionen
5C0D              ;940  KDATA:   DEFS 1   ;Farbe fuer Keybordinput
5C0E              ;941  TVDATA:  DEFS 2   ;Color, AT und TAB Pos.
5C10              ;942  STRMS:   DEFS 38  ;Tabelle der offenen Kanaele
5C36              ;943  CHARS:   DEFS 2   ;Zeichensatzadresse -256
5C38              ;944  RASP: DEFS 1   ;Laenge Warnton
5C39              ;945  PIP:  DEFS 1
                  ;946  
                  ;947  ;IY zeigt immer auf ERRNR
                  ;948  
5C3A              ;949  ERRNR:   DEFS 1   ;fuer Meldungen: Nummer - 1
                  ;950        ;keine Meldung : FFH
5C3B              ;951  FLAGS:   DEFS 1   ;Bit 1= Printer ein
5C3C              ;952  TVFLAG:  DEFS 1   ;Flagbyte fuer Bildschirm
5C3D              ;953  ERRSP:   DEFS 2   ;Errorstackpointer
5C3F              ;954  LISTSP:  DEFS 2   ;Returnadresse bei LIST
5C41              ;955  MODE: DEFS 1   ;Tastenmodus (K,L,C,E,G)
                              SP                                PAGE  31
 LOC   OBJ CODE M STMT SOURCE STATEMENT                          ASM 5.9

5C42              ;956  NEWPPC:  DEFS 2   ;Nr. der Zeile, wohin gesprungen
                  ;957           ; wird (GOTO usw.)
5C44              ;958  NSPPC:   DEFS 1   ;Befehl der Zeile bei Sprung
5C45              ;959  PPC:  DEFS 2   ;aktuelle Nr. der Basiczeile
5C47              ;960  SUBPPC:  DEFS 1   ;Zeiger auf Befehl der Zeile
5C48              ;961  BORDCR:  DEFS 1   ;Bordercolor * 8
5C49              ;962  EPPC: DEFS 2   ;aktuelle Editorzeile
5C4B              ;963  VARS: DEFS 2   ;Beginn der Variablen
5C4D              ;964  DEST: DEFS 2   ;Variablenadresse bei Zuweisung
5C4F              ;965  CHANS:   DEFS 2   ;Pointer fuer Kanaldaten
5C51              ;966  CURCHL:  DEFS 2   ;aktuelle I/O Infoadresse
5C53              ;967  PROG: DEFS 2   ;Start des Basicprogrammes
5C55              ;968  NXTLIN:  DEFS 2   ;Adresse der naechsten Basiczeile
5C57              ;969  DATADD:  DEFS 2   ;Zeiger auf Endbyte der letzten Daten
5C59              ;970  ELINE:   DEFS 2   ;Adresse eines eingegebenen Befehls
5C5B              ;971  KCUR: DEFS 2   ;Kursoradresse
5C5D              ;972  CHADD:   DEFS 2   ;naechstes zu interpret. Zeichen
5C5F              ;973  XPTR: DEFS 2   ;Adresse des Zeichens nach ? bei Error
5C61              ;974  WORKSP:  DEFS 2   ;derzeitiger Workspace
5C63              ;975  STKBOT:  DEFS 2   ;Anfang des Calculatorstacks
5C65              ;976  STKEND:  DEFS 2   ;Anfang des freien Speichers
5C67              ;977  BREG: DEFS 1   ;Calculator Hifsregister
5C68              ;978  MEM:  DEFS 2   ;Zeiger auf Calculatorspeicher
5C6A              ;979  FLAGS2:  DEFS 1   ;Flags Teil 2
5C6B              ;980  DFSZ: DEFS 1   ;Zeilenanzahl+1 im unteren Bildschirmteil
5C6C              ;981  STOP: DEFS 2   ;Nummer der obersten Zeile eines Listings
5C6E              ;982  OLDPPC:  DEFS 2   ;Zeilennummer fuer Continue
5C70              ;983  OSPCC:   DEFS 1   ;naechster Befehl fuer Cont.
5C71              ;984  FLAGX:   DEFS 1   ;Flag Teil 3
5C72              ;985  STRLEN:  DEFS 2   ;Laenge eines Strings
5C74              ;986  TADDR:   DEFS 2   ;Address of next ITEM in Syntax-Table
5C76              ;987  SEED: DEFS 2   ;Zufallszahl setzen durch Randomize
5C78              ;988  FRAMES:  DEFS 3   ;3 Byte Bildzaehler (Uhr)
5C7B              ;989  UDG:  DEFS 2   ;Adresse der User Grafikzeichen
5C7D              ;990  COORDS:  DEFS 2   ;Koordinaten des letzten Plot
5C7F              ;991  PPOSN:   DEFS 1
5C80              ;992  PRCC: DEFS 2   ;fuer Printer - Buffer
5C82              ;993  ECHOE:   DEFS 2   ;Position fuer Input
5C84              ;994  DFCC: DEFS 2   ;Printadresse im Displayfile
5C86              ;995  DFCCL:   DEFS 2   ;Printadresse im unteren Teil
5C88              ;996  SPOSN:   DEFS 2   ;33-Col/24-Zeilennr. fuer Print
5C8A              ;997  SPOSNL:  DEFS 2   ;33-Col/24-Zeilennr. unt. Teil
5C8C              ;998  SCRCT:   DEFS 1   ;Scrollzaehler
5C8D              ;999  ATTRP:   DEFS 1   ;aktuelle Farben permanent
5C8E              <000  MASKP:   DEFS 1
5C8F              <001  ATTRT:   DEFS 1   ;aktuelle Farben temporaer
5C90              <002  MASKT:   DEFS 1   ;aktuelle Farbe transp./temp.
5C91              <003  PFLAG:   DEFS 1
5C92              <004  MEMBOT:  DEFS 30  ;Calculatorspeicher
5CB0              <005  NMIREG:  DEFS 2
5CB2              <006  RAMTOP:  DEFS 2   ;letzte Speicheradresse fuer Basic
5CB4              <007  PRAMT:   DEFS 2   ;letzte Speicheradresse
                  <008  KANMEM:
                  <009  ;===============================================
                  <010  
                  <011  
..PA
