MACRO-80 3.44 09-Dec-81 PAGE 1 ;**************************************************************** ;* ACE.MAC * ;* ROM DES JUPITER ACE * ;* =================== * ;* * ;* 23.09.96 BODO WENZEL DISASSEMBLIERT UND KOMMENTIERT * ;**************************************************************** ;================================================================ ; KONSTANTEN ;ZEICHENCODES 0001 KLT EQU 001H ;PFEIL LINKS 0002 LOK EQU 002H ;CAPS LOCK 0003 KRT EQU 003H ;PFEIL RECHTS 0004 GFX EQU 004H ;GRAFIK 0005 CDL EQU 005H ;ZEICHEN LOESCHEN 0007 KUP EQU 007H ;PFEIL AUF 0008 INV EQU 008H ;INVERTIERT 0009 KDN EQU 009H ;PFEIL AB 000A LDL EQU 00AH ;ZEILE LOESCHEN 000D CCR EQU 00DH ;ZEILENENDE 0060 PND EQU 060H ;PFUND STERLING 007F CPR EQU 07FH ;COPYRIGHT 0080 CINV EQU 080H ;INVERTIERUNG 0080 CLAST EQU 080H ;LETZTES ZEICHEN EINES STRINGS 0040 IMM EQU 040H ;WORT IST "IMMEDIATE" 000C SAFETY EQU 12 ;SICHERHEITSABSTAND FUER PARAMETER-STACK 0080 FSIGN EQU 080H ;FLOAT-VORZEICHEN 0040 FEOFFS EQU 040H ;FLOAT-EXPONENT-OFFSET ;================================================================ ; EIN- UND AUSGABE, NUR A0 AUSDEKODIERT 00FE IO EQU 0FEH ;IN LOESCHT TON-FF ;D0..4 TASTATUR-SPALTEN ; (ZEILEN IN A15..A8) ;D5 CASSETTE (EAR, EINGABE) ;OUT SETZT TON-FF ;D3 CASSETTE (MIC, AUSGABE) ;================================================================ ; BILDSPEICHER (1 KBYTE) ; ; ZEILEN: 24 + 4/7 + 1 + 4/7 (60/50 HZ) ; ZEICHEN: 32 + 8 + 4 + 8 ; BILD + VOR + SYNC + NACH 2400 SCREEN EQU 02400H ;24 ZEILEN MIT 32 ZEICHEN 2700 SCREND EQU SCREEN+24*32 2701 PADMEM EQU 02701H ;FREIER ZWISCHENSPEICHER MACRO-80 3.44 09-Dec-81 PAGE 1-1 2301 FPADMEM EQU PADMEM AND NOT 00400H ;OHNE WAIT 2800 SCRMEND EQU 02800H ;ENDE ;================================================================ ; ZEICHENSATZ (1 KBYTE) 2C00 CHRSET EQU 02C00H ;128 ZEICHEN MIT 8 BYTES ;================================================================ ; ARBEITSSPEICHER (AB 1 KBYTE) 3C00 MEMBEG EQU 03C00H ;ERSTE MOEGLICHE RAM-ADRESSE 3C00 FPWS EQU 03C00H ;PLATZ FUER FLOAT-RECHNUNGEN 3C13 LISTWS EQU 03C13H 3C13 LPICNT EQU 03C13H ;LIST/EDIT WORTZAEHLER 3C14 LPIBUF EQU 03C14H ;LIST/EDIT EINRUECKUNG PUFFER 3C15 LPIACT EQU 03C15H ;LIST/EDIT EINRUECKUNG AKTUELL 3C16 LPLCNT EQU 03C16H ;LIST/EDIT ZEILENZAEHLER 3C18 RAMTOP EQU 03C18H ;ERSTE NICHT-EXISTENTE ADRESSE 3C1A HLD EQU 03C1AH ;ZEIGER WAEHREND "#" 3C1C SCRPOS EQU 03C1CH ;AUSGABE-FELD CURSOR 3C1E INSCRN EQU 03C1EH ;EINGABE-FELD ANFANG 3C20 CURSOR EQU 03C20H ;EINGABE-FELD CURSOR 3C22 ENDBUF EQU 03C22H ;EINGABE-FELD ENDE 3C24 RAMVAR EQU 03C24H ;AB HIER INITIALISIERT ----- 3C24 LHALF EQU 03C24H ;AUSGABE-FELD ENDE 3C26 KEYCOD EQU 03C26H ;GEDRUECKTE TASTE 3C27 KEYCNT EQU 03C27H ;ZEITZAEHLER 3C28 STATIN EQU 03C28H ;0 EINGABE FREIGEGEBEN ;1 CAPS LOCK ;2 GRAFIK ;3 INVERSE ;5 "ENTER" EINGEGEBEN 3C29 EXWRCH EQU 03C29H ;ALTERNATIVE AUSGABE 3C2B FRAMES EQU 03C2BH ;ZAEHLT DIE VSYNCS 3C2F XCOORD EQU 03C2FH ;PLOT-KOORDINATEN 3C30 YCOORD EQU 03C30H ; 3C31 VCURRENT EQU 03C31H ;ZEIGER AKTUELLES DICTION. 3C33 VCONTEXT EQU 03C33H ;ZEIGER DURCHSUCHTES DICT. 3C35 VOCLNK EQU 03C35H ;ZEIGER AUF LETZTES DICT. 3C37 STKBOT EQU 03C37H ;ZEIGER AUF FREIEN SPEICHER 3C39 DICT EQU 03C39H ;ZEIGER IN DICTIONARY 3C3B SPARE EQU 03C3BH ;ZEIGER AUF WERTESTACK MACRO-80 3.44 09-Dec-81 PAGE 1-2 3C3D ERRNO EQU 03C3DH ;FEHLERNUMMER 3C3E FLAGS EQU 03C3EH ;2 COMPILE-MODE ;3 EDIT-BETRIEB ;4 EINGABE UNSICHTBAR ;6 COMPILER ("[","]") 3C3F VBASE EQU 03C3FH ;ZAHLENSYSTEM 3C40 DICT1ST EQU 03C40H ;DICTIONARY "FORTH" ;================================================================ ; STRUKTUREN: ; ; DICTIONARY: ; DB... NAME IN ASCII, LETZTES ZEICHEN HAT BIT 7 = 1 ; DW LINK ZU VORHERIGEM DICTIONARY ; DW LETZTE ADRESSE ; DB NAMENSLAENGE ; DW,DW FORTHWORTE ZUR UMSCHALTUNG ; DB IMMER 0 ; DW ERSTE ADRESSE ; ; ROM-WORTE: ; DB... NAME IN ASCII, LETZTES ZEICHEN HAT BIT 7 = 1 ; DW LINK ZU VORHERIGEM WORT ; DB NAMENSLAENGE ; DW ERSTE CODE-ADRESSE ; ... WEITERE DATEN ; ; RAM-WORTE: ; DB... NAME IN ASCII, LETZTES ZEICHEN HAT BIT 7 = 1 ; DW ANZAHL BYTES BIS ZUM ENDE DES WORTES ; DW LINK ZU VORHERIGEM WORT ; DB NAMENSLAENGE (BIT 6 = "IMMEDIATE") ; DW ERSTE CODE-ADRESSE ; ... WEITERE DATEN ; ; FLOATS: ; 3 BYTES MANTISSE BCD ; 1 BYTE EXPONENT, OFFSET 40H, BIT 7=VORZEICHEN ; ;================================================================ ; FEHLERNUMMERN FFFF ERRNONE EQU -1 ;KEIN FEHLER 0001 ERRMEM EQU 1 ;SPEICHER VOLL 0002 ERRSTK EQU 2 ;STACK-UNTERLAUF (ZUVIELE DROP'S) 0003 ERRBRK EQU 3 ;UNTERBRECHUNG DURCH BENUTZER 0004 ERRIMM EQU 4 ;IMMEDIATE-WORT IM INTERPRETER-MODE 0005 ERRBLK EQU 5 ;BLOCK-FEHLER (Z. B. "IF" - "ENDIF") 0006 ERRNAME EQU 6 ;NAME ZU LANG BEI "CRHEADER" 0007 ERRPICK EQU 7 ;FALSCHER STACKOFFSET Z. B. BEI "PICK" 0008 ERRFLT EQU 8 ;FLOAT-UEBERLAUF 0009 ERRAT EQU 9 ;FEHLER BEI "AT" MACRO-80 3.44 09-Dec-81 PAGE 1-3 000A ERRREAD EQU 10 ;FEHLER BEI "?READ" ODER "?VERIFY" 000B ERRDICT EQU 11 ;F. MIT DICT. BEI "REDEFINE" & "FORGET" 000C ERRMODE EQU 12 ;COMPILE-MODE BEI "LINKHERE" 000D ERRFIND EQU 13 ;WORT NICHT GEFUNDEN 000E ERRLIST EQU 14 ;WORT NICHT LISTBAR BEI "LIST" ;================================================================ ; RESET ORG 00000H 0000' F3 DI ;KEINE INTERRUPTS 0001' 21 3C00 LD HL,MEMBEG 0004' 3E FC LD A,0FCH ;TESTWERT UND ADRESSMASKE 0006' 18 20 JR RMEMLP ;================================================================ ; EIN ZEICHEN AUSGEBEN ORG 00008H RSTEMIT MACRO RST 008H ENDM 0008' D9 EXX 0009' DD CB 3E 5E BIT 3,(IX+FLAGS-MEMBEG) 000D' C3 03EE' JP REMIT ;================================================================ ; EINEN WERT IN DE AUF DEN PARAMETERSTACK SCHIEBEN ORG 00010H RSTPUSH MACRO RST 010H ENDM 0010' CPUSH: 0010' 2A 3C3B LD HL,(SPARE) 0013' 73 LD (HL),E 0014' 23 INC HL 0015' C3 085F' JP RPUSH ;================================================================ ; EINEN WERT VOM PARAMETERSTACK NACH DE HOLEN ORG 00018H RSTPULL MACRO RST 018H ENDM 0018' CPULL: 0018' 2A 3C3B LD HL,(SPARE) 001B' 2B DEC HL 001C' 56 LD D,(HL) 001D' C3 0859' JP RPULL MACRO-80 3.44 09-Dec-81 PAGE 1-4 ;================================================================ ; EINEN FEHLER MELDEN ORG 00020H RSTERR MACRO ERRNUM RST 020H DB ERRNUM ENDM 0020' E1 POP HL 0021' 7E LD A,(HL) 0022' 32 3C3D LD (ERRNO),A ;FEHLERNUMMER HOLEN 0025' C3 00AD' JP RABORT ;================================================================ 0028' RMEMLP: 0028' 24 INC H 0029' 77 LD (HL),A 002A' BE CP (HL) 002B' 28 FB JR Z,RMEMLP ;SPEICHER-ENDE SUCHEN 002D' A4 AND H 002E' 67 LD H,A ;NUR VOLLE KBYTE 002F' 22 3C18 LD (RAMTOP),HL ;ENDE MERKEN 0032' F9 LD SP,HL ;STACKPOINTER SETZEN 0033' 21 010D' LD HL,ROMVAR 0036' 18 03 JR RGOON ;================================================================ ; VSYNC-INTERRUPT ORG 00038H 0038' C3 013A' JP VSYNC ;================================================================ 003B' RGOON: 003B' 11 3C24 LD DE,RAMVAR 003E' 01 002D LD BC,ROMVEND-ROMVAR 0041' ED B0 LDIR ;VARIABLEN VORBESETZEN 0043' DD 21 3C00 LD IX,MEMBEG 0047' FD 21 04C8' LD IY,RSLNEXT ;ZEIGER SETZEN 004B' CD 0A24' CALL CCLS 004E' AF XOR A 004F' 32 2700 LD (SCREEN+24*32),A ;BILD-ENDE MARKIEREN ;---------------------------------------------------------------- 0052' 21 2C00 LD HL,CHRSET 0055' RGFXLP: 0055' 7D LD A,L 0056' E6 BF AND 0BFH ;4 SAETZE BLOCKGRAFIK 0058' 0F RRCA 0059' 0F RRCA ;XX0000XX 00 005A' 0F RRCA ;XX0001XX 00 MACRO-80 3.44 09-Dec-81 PAGE 1-5 005B' 30 02 JR NC,RGFXM ;XX0010XX 0F 005D' 0F RRCA ;XX0011XX 00 005E' 0F RRCA ;XX0100XX F0 005F' RGFXM: ;XX0101XX 00 005F' 0F RRCA ;XX0110XX FF 0060' 47 LD B,A ;XX0111XX 00 0061' 9F SBC A,A ;XX1000XX 00 0062' CB 18 RR B ;XX1001XX 0F 0064' 47 LD B,A ;XX1010XX 0F 0065' 9F SBC A,A ;XX1011XX 0F 0066' A8 XOR B ;XX1100XX F0 0067' E6 F0 AND 0F0H ;XX1101XX 0F 0069' A8 XOR B ;XX1110XX FF 006A' 77 LD (HL),A ;XX1111XX 0F 006B' 2C INC L 006C' 20 E7 JR NZ,RGFXLP ;NOCH NICHT ALLE GRAFIKZEICHEN ? 006E' 11 2FFF LD DE,CHRSET+128*8-1 0071' 21 1FFB' LD HL,ROMCHR-1 0074' 01 0008 LD BC,8 ;8 ZEILEN 0077' ED B8 LDDR ;COPYRIGHT-ZEICHEN 0079' EB EX DE,HL 007A' 3E 5F LD A,128-020H-1 ;ANZAHL RESTLICHE ZEICHEN 007C' RCHRLP: 007C' 0E 07 LD C,7 ;7 ZEILEN 007E' CB 6F BIT 5,A 0080' 28 03 JR Z,RCHR7 ;ZEICHEN MIT 7 ZEILEN ? 0082' 70 LD (HL),B 0083' 2B DEC HL 0084' 0D DEC C ;UNTERE ZEILE HINTERGRUND 0085' RCHR7: 0085' EB EX DE,HL 0086' ED B8 LDDR ;ZEICHEN KOPIEREN 0088' EB EX DE,HL 0089' 70 LD (HL),B 008A' 2B DEC HL ;OBERE ZEILE HINTERGRUND 008B' 3D DEC A 008C' 20 EE JR NZ,RCHRLP ;NOCH NICHT ALLE ZEICHEN ? 008E' ED 56 IM 1 ;VSYNC AUF RST 38H 0090' 18 09 JR RQUIT ;================================================================ 0092' 51 55 49 D4 DB 'QUI','T' OR CLAST 0096' 0000 DW 0 0098' 04 DB 4 0099' QUIT: 0099' 009B' DW $+2 009B' RQUIT: 009B' ED 7B 3C18 LD SP,(RAMTOP) ;STACKPOINTER ZURUECKSETZEN 009F' FB EI ;INTERRUPTS FREIGEBEN MACRO-80 3.44 09-Dec-81 PAGE 1-6 00A0' C3 04F2' JP QUITLOOP ;AUF GEHT'S ;================================================================ 00A3' 41 42 4F 52 DB 'ABOR','T' OR CLAST 00A7' D4 00A8' 0098' DW QUIT-1 00AA' 05 DB 5 00AB' ABORT: 00AB' 00AD' DW $+2 00AD' RABORT: 00AD' FD E5 PUSH IY 00AF' FD 21 04B9' LD IY,NEXT ;NORMALE FEHLERPRUEFUNG 00B3' 2A 3C37 LD HL,(STKBOT) 00B6' 22 3C3B LD (SPARE),HL ;DATENSTACK ZURUECKSETZEN 00B9' 21 3C3E LD HL,FLAGS 00BC' 7E LD A,(HL) 00BD' E6 B3 AND NOT ((1 SHL 6) OR (1 SHL 3) OR (1 SHL 2)) 00BF' CB 56 BIT 2,(HL) 00C1' 77 LD (HL),A ;COMPILER UND EDITOR AUS 00C2' 28 1A JR Z,ABGOON ;KEIN COMPILER-MODE ? 00C4' CD 04B9' CALL NEXT 00C7' 0490' 08B3' DW DP,AT,GETBYTE 00CB' 104B' 00CD' 05 DB 5 00CE' 0DD2' 086B' DW PLUS,DUP,RESCURR ;CURRENT ZURUECKSETZEN 00D2' 1610' 00D4' 15B5' 1011' DW NFA,GETWORD,STKBOT 00D8' 3C37 00DA' 08C1' DW EXCLAM ;STACK ZURUECKSETZEN 00DC' 1A0E' DW SEMICODE 00DE' ABGOON: 00DE' DD CB 3D 7E BIT 7,(IX+ERRNO-MEMBEG) 00E2' 20 1B JR NZ,ABORTEND ;KEIN FEHLER GESPEICHERT ? 00E4' CD 1808' CALL ROMTXT 00E7' 45 52 52 4F DB 'ERRO','R' OR CLAST 00EB' D2 00EC' CD 04B9' CALL NEXT 00EF' 1011' 3C3D DW GETWORD,ERRNO,CAT,PNT,CR 00F3' 0896' 09B3' 00F7' 0A95' 00F9' 1A0E' DW SEMICODE ;FEHLER MELDEN 00FB' DD 36 3D FF LD (IX+ERRNO-MEMBEG),ERRNONE ;KEIN FEHLER MEHR 00FF' ABORTEND: 00FF' 2A 3C37 LD HL,(STKBOT) 0102' 01 000C LD BC,SAFETY 0105' 09 ADD HL,BC 0106' 22 3C3B LD (SPARE),HL 0109' FD E1 POP IY MACRO-80 3.44 09-Dec-81 PAGE 1-7 010B' 18 8E JR RQUIT ;================================================================ 010D' ROMVAR: 010D' 26E0 DW SCREEN+23*32 ;LHALF 010F' 00 00 DB 0,0 ;KEYCOD 0111' 00 DB 0 ;STATIN 0112' 0000 DW 0 ;EXWRCH 0114' 00 00 00 00 DB 0,0,0,0 ;FRAMES 0118' 00 00 DB 0,0 ;XCOORD/YCOORD 011A' 3C4C DW FORTH+2+RAMVAR-ROMVAR ;VCURRENT 011C' 3C4C DW FORTH+2+RAMVAR-ROMVAR ;VCONTEXT 011E' 3C4F DW FORTH+5+RAMVAR-ROMVAR ;VOCLNK 0120' 3C51 DW FREEMEM ;STKBOT 0122' 3C45 DW FORTH-5+RAMVAR-ROMVAR ;DICT 0124' 3C5D DW FREEMEM+SAFETY ;SPARE 0126' FF DB -1 ;ERRNO 0127' 00 DB 0 ;FLAGS 0128' 0A DB 10 ;VBASE 0129' 46 4F 52 54 DB 'FORT','H' OR CLAST ;DICT1ST 012D' C8 012E' 0000 1FFF DW 0000H,1FFFH 0132' 05 DB 5 0133' FORTH: 0133' 11B5' DW SETCONTEXT 0135' 3C49 DW FORTH-1+RAMVAR-ROMVAR ;FORTH IST CONTEXT 0137' 00 DB 0 0138' 0000 DW 0 013A' ROMVEND: 3C51 FREEMEM EQU ROMVEND+RAMVAR-ROMVAR ;FREIER SPEICHER ;================================================================ 013A' VSYNC: 013A' F5 PUSH AF 013B' 08 EX AF,AF' 013C' F5 PUSH AF 013D' C5 PUSH BC 013E' D5 PUSH DE 013F' E5 PUSH HL ;REGISTER RETTEN 0140' 06 3E LD B,62 0142' VDELAY: 0142' 10 FE DJNZ VDELAY ;ETWAS WARTEN (WARUM ???) 0144' 21 3C2B LD HL,FRAMES 0147' VSCNT: 0147' 34 INC (HL) 0148' 23 INC HL 0149' 28 FC JR Z,VSCNT ;VSYNC-ZAEHLER ERHOEHEN 014B' CD 0310' CALL VKEY ;TASTE MIT AUTOREPEAT HOLEN 014E' 21 3C28 LD HL,STATIN 0151' CB 46 BIT 0,(HL) 0153' 28 21 JR Z,VSEND ;EINGABE GESPERRT ? 0155' A7 AND A MACRO-80 3.44 09-Dec-81 PAGE 1-8 0156' 28 1E JR Z,VSEND ;KEINE TASTE ? 0158' FE 20 CP ' ' 015A' 38 14 JR C,VSCTRL ;STEUERZEICHEN ? 015C' CB 4E BIT 1,(HL) 015E' C4 0807' CALL NZ,TOUPPER ;"CAPS LOCK" ? 0161' CB 56 BIT 2,(HL) 0163' 28 02 JR Z,VSNOGRF 0165' E6 9F AND 09FH ;"GRAPHICS" ? 0167' VSNOGRF: 0167' CB 5E BIT 3,(HL) 0169' 28 02 JR Z,VSNOINV 016B' F6 80 OR CINV ;"INVERSE" ? 016D' VSNOINV: 016D' CD 0196' CALL DCDCNORM ;ANZEIGBARES ZEICHEN 0170' VSCTRL: 0170' CD 01E6' CALL DOCTRL ;STEUERZEICHEN 0173' CD 0282' CALL DCSETCUR ;CURSOR SETZEN 0176' VSEND: 0176' E1 POP HL 0177' D1 POP DE 0178' C1 POP BC 0179' F1 POP AF 017A' 08 EX AF,AF' 017B' F1 POP AF ;REGISTER HOLEN 017C' FB EI ;INTERRUPTS WIEDER FREIGEBEN 017D' C9 RET ;(WARUM NICHT "RETI" ???) ;================================================================ 017E' DCDOCHAR: 017E' FE 0D CP CCR 0180' 20 14 JR NZ,DCDCNORM ;NICHT "ENTER" ? 0182' 21 2700 LD HL,SCREEN+24*32 0185' 22 3C22 LD (ENDBUF),HL 0188' 22 3C20 LD (CURSOR),HL ;EINGABE-ZEIGER ANS BILD-ENDE 018B' AF XOR A 018C' CD 0198' CALL DCDCINS ;NEUES EINGABE-ENDE SETZEN 018F' 21 26E0 LD HL,SCREEN+23*32 0192' 22 3C1E LD (INSCRN),HL ;EINE ZEILE EINGABE 0195' C9 RET 0196' DCDCNORM: 0196' A7 AND A 0197' C8 RET Z ;KEINE TASTE ? 0198' DCDCINS: 0198' 08 EX AF,AF' ;ZEICHEN MERKEN 0199' 2A 3C22 LD HL,(ENDBUF) 019C' 7E LD A,(HL) 019D' A7 AND A MACRO-80 3.44 09-Dec-81 PAGE 1-9 019E' 28 06 JR Z,DCDCSCROL 01A0' 11 D900 LD DE,-(SCREEN+24*32) 01A3' 19 ADD HL,DE 01A4' 30 28 JR NC,DCDCEND ;EINGABE-ENDE VOR BILD-ENDE ? 01A6' DCDCSCROL: 01A6' ED 5B 3C24 LD DE,(LHALF) 01AA' 21 DBA0 LD HL,-(SCREEN+3*32) 01AD' 19 ADD HL,DE 01AE' 30 34 JR NC,DCDCQUIT ;AUSG.-ENDE IN ERSTEN 3 ZEILEN ? 01B0' 2A 3C1C LD HL,(SCRPOS) 01B3' 01 0020 LD BC,32 01B6' 09 ADD HL,BC 01B7' ED 52 SBC HL,DE 01B9' D5 PUSH DE 01BA' D4 0421' CALL NC,SCROLLUP ;AUSG.-CURSOR IN LETZTER ZEILE ? 01BD' CD 02B0' CALL DCSTREND 01C0' D1 POP DE 01C1' CD 042F' CALL INSLINE ;EINGABE HOCHSCHIEBEN 01C4' 21 3C1E LD HL,INSCRN 01C7' 06 04 LD B,4 ;4-MAL ??? 01C9' DCDCSLOOP: 01C9' CD 0443' CALL DECLINE 01CC' 10 FB DJNZ DCDCSLOOP ;EINGABE-ANFANG HOCHSCHIEBEN 01CE' DCDCEND: 01CE' CD 0302' CALL DCGETCIN 01D1' 54 LD D,H 01D2' 5D LD E,L 01D3' 23 INC HL 01D4' 22 3C22 LD (ENDBUF),HL ;EINGABE-ENDE WEITERSCHIEBEN 01D7' 2B DEC HL 01D8' 2B DEC HL 01D9' 28 02 JR Z,DCDCSTORE ;EINGABE-CURSOR AM ENDE ? 01DB' ED B8 LDDR ;RESTLICHE EINGABE WEITERSCHIEBEN 01DD' DCDCSTORE: 01DD' 08 EX AF,AF' 01DE' 12 LD (DE),A ;ZEICHEN SPEICHERN 01DF' 13 INC DE 01E0' ED 53 3C20 LD (CURSOR),DE ;NEUE EINGABE-ADRESSE MERKEN 01E4' DCDCQUIT: 01E4' AF XOR A ;Z-FLAG SETZEN, KEIN ZEICHEN MEHR 01E5' C9 RET ;================================================================ 01E6' DOCTRL: 01E6' 21 01F0' LD HL,DCJMPTAB 01E9' 16 00 LD D,0 01EB' 5F LD E,A 01EC' 19 ADD HL,DE ;ZEIGER AUF TABELLEN-EINTRAG MACRO-80 3.44 09-Dec-81 PAGE 1-10 01ED' 5E LD E,(HL) 01EE' 19 ADD HL,DE 01EF' E9 JP (HL) ;ADRESSE ANSPRINGEN 01F0' DCJMPTAB: 01F0' 20 DB DCNOP-$ ;0 (KEINE TASTE) 01F1' 13 DB DCLEFT-$ ;1 PFEIL LINKS 01F2' 0C DB DCFLAG-$ ;2 CAPS LOCK 01F3' 1E DB DCRIGHT-$ ;3 PFEIL RECHTS 01F4' 0A DB DCFLAG-$ ;4 GRAFIK 01F5' 37 DB DCCHARDEL-$ ;5 ZEICHEN LOESCHEN 01F6' 1A DB DCNOP-$ ;6 (UNBENUTZT) 01F7' 50 DB DCUP-$ ;7 PFEIL AUF 01F8' 06 DB DCFLAG-$ ;8 INVERTIERT 01F9' 9C DB DCDOWN-$ ;9 PFEIL AB 01FA' C9 DB DCLINEDEL-$ ;A ZEILE LOESCHEN 01FB' 15 DB DCNOP-$ ;B (UNBENUTZT) 01FC' 14 DB DCNOP-$ ;C (UNBENUTZT) 01FD' D3 DB DCENTER-$ ;D ZEILENENDE ;---------------------------------------------------------------- 01FE' DCFLAG: 01FE' 21 3C28 LD HL,STATIN 0201' AE XOR (HL) 0202' 77 LD (HL),A ;FLAG WECHSELN 0203' C9 RET ;---------------------------------------------------------------- 0204' DCLEFT: 0204' 2A 3C20 LD HL,(CURSOR) 0207' 2B DEC HL 0208' 7E LD A,(HL) 0209' A7 AND A 020A' C8 RET Z ;AM EINGABE-ANFANG ? 020B' 22 3C20 LD (CURSOR),HL ;NEUE ADRESSE MERKEN 020E' 23 INC HL 020F' 77 LD (HL),A ;ZEICHEN UMSPEICHERN 0210' DCNOP: 0210' C9 RET ;---------------------------------------------------------------- 0211' DCRIGHT: 0211' 2A 3C20 LD HL,(CURSOR) 0214' 23 INC HL 0215' ED 5B 3C22 LD DE,(ENDBUF) 0219' A7 AND A 021A' ED 52 SBC HL,DE 021C' C8 RET Z ;AM EINGABE-ENDE ? 021D' 19 ADD HL,DE 021E' 22 3C20 LD (CURSOR),HL ;NEUE ADRESSE MERKEN 0221' 7E LD A,(HL) 0222' 2B DEC HL 0223' 77 LD (HL),A ;ZEICHEN UMSPEICHERN 0224' C9 RET ;---------------------------------------------------------------- 0225' DCCURDEL: MACRO-80 3.44 09-Dec-81 PAGE 1-11 0225' 2A 3C20 LD HL,(CURSOR) 0228' 23 INC HL 0229' 22 3C20 LD (CURSOR),HL ;EINGABE-ADRESSE ERHOEHEN 022C' DCCHARDEL: 022C' CD 0302' CALL DCGETCIN 022F' 62 LD H,D 0230' 6B LD L,E 0231' 1B DEC DE 0232' 1A LD A,(DE) 0233' A7 AND A 0234' C8 RET Z ;AM EINGABE-ANFANG ? 0235' ED 53 3C20 LD (CURSOR),DE 0239' 78 LD A,B 023A' B1 OR C 023B' 28 02 JR Z,DCCDGOON ;AM EINGABE-ENDE ? 023D' ED B0 LDIR ;ZEICHEN LINKS LOESCHEN 023F' DCCDGOON: 023F' 2B DEC HL 0240' 36 20 LD (HL),' ' ;LETZTES ZEICHEN LOESCHEN 0242' 22 3C22 LD (ENDBUF),HL ;(UEBERFLUESSIG ???) 0245' 0C INC C ;Z-FLAG LOESCHEN 0246' C9 RET ;---------------------------------------------------------------- 0247' DCUP: 0247' CD 0204' CALL DCLEFT 024A' 28 08 JR Z,DCUSCROLL ;AM EINGABE-ANFANG ? 024C' 06 1F LD B,31 024E' DCUPLOOP: 024E' CD 0204' CALL DCLEFT 0251' 10 FB DJNZ DCUPLOOP ;MAXIMAL EINE ZEILE ZURUECK 0253' C9 RET 0254' DCUSCROLL: 0254' 2A 3C1E LD HL,(INSCRN) 0257' ED 5B 3C24 LD DE,(LHALF) 025B' A7 AND A 025C' ED 52 SBC HL,DE 025E' C8 RET Z ;EINGABE-ANFANG AM AUSGABE-ENDE ? 025F' CD 0225' CALL DCCURDEL 0262' 2A 3C1E LD HL,(INSCRN) 0265' 11 FFE0 LD DE,-32 0268' AF XOR A 0269' DCUSLOOP: 0269' 19 ADD HL,DE 026A' BE CP (HL) 026B' 20 FC JR NZ,DCUSLOOP ;NAECHSTE MARKE SUCHEN 026D' 22 3C1E LD (INSCRN),HL MACRO-80 3.44 09-Dec-81 PAGE 1-12 0270' CD 02F4' CALL DCSETEND 0273' 22 3C20 LD (CURSOR),HL ;NEUES EINGABE-ENDE SETZEN ;---------------------------------------------------------------- 0276' DCOUTCUR: 0276' 3E A0 LD A,' ' OR CINV 0278' CD 017E' CALL DCDOCHAR ;CURSOR-ZEICHEN AUSGEBEN 027B' 2A 3C20 LD HL,(CURSOR) 027E' 2B DEC HL 027F' 22 3C20 LD (CURSOR),HL ;ADRESSE KORRIGIEREN 0282' DCSETCUR: 0282' 2A 3C20 LD HL,(CURSOR) 0285' 3A 3C28 LD A,(STATIN) 0288' 1F RRA 0289' 36 97 LD (HL),017H OR CINV ;"NORMAL" 028B' 1F RRA 028C' 30 02 JR NC,SCNOCAPS 028E' 36 C3 LD (HL),'C' OR CINV ;"CAPS LOCK" 0290' SCNOCAPS: 0290' 1F RRA 0291' D0 RET NC 0292' 36 C7 LD (HL),'G' OR CINV ;"GRAFIK" 0294' C9 RET ;---------------------------------------------------------------- 0295' DCDOWN: 0295' CD 0211' CALL DCRIGHT 0298' 28 08 JR Z,DCDSCROLL ;AM EINGABE-ENDE ? 029A' 06 1F LD B,31 029C' DCDNLOOP: 029C' CD 0211' CALL DCRIGHT 029F' 10 FB DJNZ DCDNLOOP ;MAXIMAL EINE ZEILE VOR 02A1' C9 RET 02A2' DCDSCROLL: 02A2' CD 02B0' CALL DCSTREND 02A5' E0 RET PO ;ENDE GEFUNDEN ? 02A6' E5 PUSH HL 02A7' CD 0225' CALL DCCURDEL 02AA' E1 POP HL 02AB' CD 02ED' CALL DCSETBEG ;NEUEN EINGABE-ANFANG SETZEN 02AE' 18 C6 JR DCOUTCUR ;---------------------------------------------------------------- 02B0' DCSTREND: 02B0' 21 2700 LD HL,SCREEN+24*32 02B3' ED 5B 3C1E LD DE,(INSCRN) 02B7' A7 AND A 02B8' ED 52 SBC HL,DE 02BA' 44 LD B,H 02BB' 4D LD C,L ;ANZAHL BERECHNEN 02BC' EB EX DE,HL 02BD' 23 INC HL ;ZEIGER HINTER ANFANG MACRO-80 3.44 09-Dec-81 PAGE 1-13 02BE' AF XOR A 02BF' ED B1 CPIR ;NACH TEXTENDE SUCHEN 02C1' 2B DEC HL ;ZEIGER KORRIGIEREN 02C2' C9 RET ;---------------------------------------------------------------- 02C3' DCLINEDEL: 02C3' 2A 3C22 LD HL,(ENDBUF) 02C6' 2B DEC HL 02C7' 22 3C20 LD (CURSOR),HL ;ZEIGER AUF EINGABE-ENDE 02CA' DCLDLOOP: 02CA' CD 022C' CALL DCCHARDEL 02CD' 20 FB JR NZ,DCLDLOOP ;BIS ZUM ANFANG LOESCHEN 02CF' C9 RET ;---------------------------------------------------------------- 02D0' DCENTER: 02D0' 21 3C28 LD HL,STATIN 02D3' CB EE SET 5,(HL) ;"ENTER" EINGEGEBEN 02D5' CB 86 RES 0,(HL) ;EINGABE SPERREN 02D7' C9 RET ;---------------------------------------------------------------- 02D8' DCCLEAR: 02D8' 21 2700 LD HL,SCREEN+24*32 02DB' ED 5B 3C24 LD DE,(LHALF) 02DF' CD 07FA' CALL BLANKS ;EINGABE-FELD LOESCHEN 02E2' 21 26E0 LD HL,SCREEN+23*32 02E5' 22 3C24 LD (LHALF),HL 02E8' 36 00 LD (HL),0 ;EINGABE-ANFANG MARKIEREN 02EA' DCRETYPE: 02EA' 2A 3C24 LD HL,(LHALF) 02ED' DCSETBEG: 02ED' 22 3C1E LD (INSCRN),HL ;EINGABE-ANFANG SETZEN 02F0' 23 INC HL 02F1' 22 3C20 LD (CURSOR),HL ;DAHINTER AKTUELLE ADRESSE 02F4' DCSETEND: 02F4' CD 02B0' CALL DCSTREND 02F7' 3E 20 LD A,' ' 02F9' DCSELOOP: 02F9' 2B DEC HL 02FA' BE CP (HL) 02FB' 28 FC JR Z,DCSELOOP ;EINGABE-STRINGENDE SUCHEN 02FD' 23 INC HL 02FE' 22 3C22 LD (ENDBUF),HL ;DORT EINGABE-ENDE SETZEN 0301' C9 RET ;---------------------------------------------------------------- 0302' DCGETCIN: 0302' 2A 3C22 LD HL,(ENDBUF) 0305' ED 5B 3C20 LD DE,(CURSOR) 0309' A7 AND A MACRO-80 3.44 09-Dec-81 PAGE 1-14 030A' ED 52 SBC HL,DE 030C' 44 LD B,H 030D' 4D LD C,L ;ANZAHL BERECHNEN 030E' 19 ADD HL,DE ;ZEIGER WIEDER HERSTELLEN 030F' C9 RET ;---------------------------------------------------------------- 0310' VKEY: 0310' CD 0336' CALL KEYGET 0313' 47 LD B,A ;GEDRUECKTE TASTE HOLEN 0314' 2A 3C26 LD HL,(KEYCOD) 0317' AD XOR L 0318' 28 0B JR Z,VKAGAIN ;GLEICHE TASTE NOCH GEDRUECKT ? 031A' AD XOR L 031B' 28 03 JR Z,VKNEW ;KEINE TASTE GEDRUECKT ? 031D' AF XOR A 031E' BD CP L 031F' C0 RET NZ ;VORHER ANDERE TASTE GEDRUECKT ? 0320' VKNEW: 0320' 68 LD L,B ;TASTE MERKEN 0321' 26 20 LD H,32 ;ZEITZAEHLER LADEN 0323' 18 0D JR VKQUIT 0325' VKAGAIN: 0325' 25 DEC H ;ZEITZAEHLER ERNIEDRIGEN 0326' 7C LD A,H 0327' FE 1E CP 30 0329' 28 06 JR Z,VKPRESS ;TASTE ENTPRELLT ? 032B' AF XOR A 032C' BC CP H 032D' 20 03 JR NZ,VKQUIT ;AUTOREPEAT-ZEIT ERREICHT ? 032F' 26 04 LD H,4 ;ZEITZAEHLER ZURUECKSETZEN 0331' VKPRESS: 0331' 7D LD A,L ;TASTE HOLEN 0332' VKQUIT: 0332' 22 3C26 LD (KEYCOD),HL 0335' C9 RET ;---------------------------------------------------------------- 0336' KEYGET: 0336' 01 FEFE LD BC,IO OR (0FEH SHL 8) ;MASKE UND ADRESSE 0339' ED 50 IN D,(C) ;ZEILE MIT "SHIFT" UND "SYMBOL" 033B' 5A LD E,D ;MERKEN 033C' CB 3A SRL D 033E' 9F SBC A,A 033F' E6 D8 AND -40 ;WENN KEIN "SHIFT", OFFSET 0341' CB 3A SRL D 0343' 38 02 JR C,KEYGNC ;KEIN "SYMBOL" ? 0345' 3E 28 LD A,40 ;ANZAHL TASTEN 0347' KEYGNC: 0347' C6 57 ADD A,2*40+7 ;NORMAL "SHIFT" "SYMBOL" MACRO-80 3.44 09-Dec-81 PAGE 1-15 0349' 6F LD L,A ; 47 87 127 034A' 7B LD A,E 034B' F6 03 OR 3 ;ZEILE OHNE "SHIFT" UND "SYMBOL" 034D' 1E FF LD E,0FFH ;BISHER KEINE TASTE 034F' KEYGLP: 034F' 2F CPL 0350' E6 1F AND 1FH 0352' 57 LD D,A ;TASTEN MASKIEREN 0353' 28 0D JR Z,KEYGNK ;KEINE TASTE GEDRUECKT ? 0355' 7D LD A,L 0356' 1C INC E 0357' 20 12 JR NZ,KEYGQU ;BEREITS TASTE GEDRUECKT ? 0359' KEYGSC: 0359' D6 08 SUB 8 ;OFFSET KORRIGIEREN 035B' CB 3A SRL D 035D' 30 FA JR NC,KEYGSC ;TASTE NOCH NICHT GEFUNDEN ? 035F' 5F LD E,A ;OFFSET MERKEN 0360' 20 09 JR NZ,KEYGQU ;WEITERE TASTE GEDRUECKT ? 0362' KEYGNK: 0362' 2D DEC L ;OFFSET KORRIGIEREN 0363' CB 00 RLC B 0365' 30 06 JR NC,KEYGQU2 ;TASTATUR FERTIG ? 0367' ED 78 IN A,(C) ;NAECHSTE ZEILE HOLEN 0369' 18 E4 JR KEYGLP 036B' KEYGQU: 036B' 1E FF LD E,-1 ;KEINE TASTE GEDRUECKT 036D' KEYGQU2: 036D' 7B LD A,E 036E' 3C INC A 036F' C8 RET Z ;KEINE TASTE GEDRUECKT ? 0370' 21 0376' LD HL,KEYTBL 0373' 19 ADD HL,DE 0374' 7E LD A,(HL) ;TASTENCODE HOLEN 0375' C9 RET 0376' KEYTBL: 0376' 76 68 79 36 DB 'v','h','y','6','5','t','g','c' ;NORMAL 037A' 35 74 67 63 037E' 62 6A 75 37 DB 'b','j','u','7','4','r','f','x' 0382' 34 72 66 78 0386' 6E 6B 69 38 DB 'n','k','i','8','3','e','d','z' 038A' 33 65 64 7A 038E' 6D 6C 6F 39 DB 'm','l','o','9','2','w','s',0 0392' 32 77 73 00 0396' 20 0D 70 30 DB ' ',CCR,'p','0','1','q','a',0 039A' 31 71 61 00 039E' 56 48 59 07 DB 'V','H','Y',KUP,KLT,'T','G','C' ;MIT "SHIFT" 03A2' 01 54 47 43 03A6' 42 4A 55 09 DB 'B','J','U',KDN,INV,'R','F','X' MACRO-80 3.44 09-Dec-81 PAGE 1-16 03AA' 08 52 46 58 03AE' 4E 4B 49 03 DB 'N','K','I',KRT,'3','E','D','Z' 03B2' 33 45 44 5A 03B6' 4D 4C 4F 04 DB 'M','L','O',GFX,LOK,'W','S',0 03BA' 02 57 53 00 03BE' 20 0D 50 05 DB ' ',CCR,'P',CDL,LDL,'Q','A',0 03C2' 0A 51 41 00 03C6' 2F 5E 5B 26 DB '/','^','[','&','%','>','}','?' ;MIT "SYMBOL" 03CA' 25 3E 7D 3F 03CE' 2A 2D 5D 27 DB '*','-',']','''','$','<','{',PND 03D2' 24 3C 7B 60 03D6' 2C 2B 7F 28 DB ',','+',CPR,'(','#','E','\',':' 03DA' 23 45 5C 3A 03DE' 2E 3D 3B 29 DB '.','=',';',')','@','W','|',0 03E2' 40 57 7C 00 03E6' 20 0D 22 5F DB ' ',CCR,'"','_','!','Q','~',0 03EA' 21 51 7E 00 ;================================================================ 03EE' REMIT: 03EE' 28 05 JR Z,RENORM ;KEIN "EDIT" ? 03F0' CD 017E' CALL DCDOCHAR 03F3' D9 EXX 03F4' C9 RET 03F5' RENORM: 03F5' 47 LD B,A 03F6' 2A 3C29 LD HL,(EXWRCH) 03F9' 7C LD A,H 03FA' B5 OR L 03FB' 78 LD A,B 03FC' 28 01 JR Z,EMITSCR 03FE' E9 JP (HL) ;AUSGABE-VEKTOR BENUTZEN ? 03FF' EMITSCR: 03FF' 2A 3C1C LD HL,(SCRPOS) 0402' ED 5B 3C24 LD DE,(LHALF) 0406' EB EX DE,HL 0407' 37 SCF 0408' ED 52 SBC HL,DE 040A' EB EX DE,HL 040B' DC 0421' CALL C,SCROLLUP ;BEI BEDARF EINE ZEILE SCROLLEN 040E' FE 0D CP CCR 0410' 28 04 JR Z,ESENTER ;"ENTER" ? 0412' 77 LD (HL),A ;ZEICHEN SPEICHERN 0413' 23 INC HL ;NAECHSTE ADRESSE 0414' 18 06 JR ESQUIT 0416' ESENTER: 0416' 23 INC HL 0417' 7D LD A,L 0418' E6 1F AND 32-1 041A' 20 FA JR NZ,ESENTER ;ZEIGER AN NAECHSTEN ZEILENANFANG MACRO-80 3.44 09-Dec-81 PAGE 1-17 041C' ESQUIT: 041C' 22 3C1C LD (SCRPOS),HL ;CURSOR-ADRESSE SPEICHERN 041F' D9 EXX 0420' C9 RET ;---------------------------------------------------------------- 0421' SCROLLUP: 0421' F5 PUSH AF 0422' 21 3C1C LD HL,SCRPOS 0425' CD 0443' CALL DECLINE ;CURSOR-ADRESSE ANPASSEN 0428' F1 POP AF 0429' 2A 3C24 LD HL,(LHALF) 042C' 11 2420 LD DE,SCREEN+32 ;AUSGABE-FELD HOCHSCHIEBEN 042F' INSLINE: 042F' A7 AND A 0430' ED 52 SBC HL,DE 0432' 44 LD B,H 0433' 4D LD C,L ;ANZAHL ZEICHEN 0434' 21 FFE0 LD HL,-32 0437' 19 ADD HL,DE 0438' EB EX DE,HL 0439' ED B0 LDIR ;BILDSCHIRM HOCHSCHIEBEN 043B' 06 20 LD B,32 043D' ILLOOP: 043D' 2B DEC HL 043E' 36 20 LD (HL),' ' 0440' 10 FB DJNZ ILLOOP ;EINGEFUEGTE ZEILE LOESCHEN 0442' C9 RET ;---------------------------------------------------------------- 0443' DECLINE: 0443' 7E LD A,(HL) 0444' D6 20 SUB 32 0446' 77 LD (HL),A 0447' 23 INC HL 0448' 30 01 JR NC,DLEND 044A' 35 DEC (HL) 044B' DLEND: 044B' 23 INC HL 044C' C9 RET ;================================================================ 044D' GETVAR: 044D' EB EX DE,HL 044E' 5E LD E,(HL) 044F' 16 00 LD D,0 ;OFFSET HOLEN 0451' 21 3C00 LD HL,MEMBEG 0454' 19 ADD HL,DE 0455' EB EX DE,HL RSTPUSH ;ADRESSE AUF STACK 0456' D7 + RST 010H 0457' FD E9 JP (IY) ;================================================================ 0459' 48 45 52 C5 DB 'HER','E' OR CLAST 045D' 00AA' DW ABORT-1 MACRO-80 3.44 09-Dec-81 PAGE 1-18 045F' 04 DB 4 0460' HERE: 0460' 0462' DW $+2 0462' ED 5B 3C37 LD DE,(STKBOT) RSTPUSH 0466' D7 + RST 010H 0467' FD E9 JP (IY) ;================================================================ 0469' 43 4F 4E 54 DB 'CONTEX','T' OR CLAST 046D' 45 58 D4 0470' 045F' DW HERE-1 0472' 07 DB 7 0473' CONTEXT: 0473' 044D' DW GETVAR 0475' 33 DB VCONTEXT-MEMBEG ;================================================================ 0476' 43 55 52 52 DB 'CURREN','T' OR CLAST 047A' 45 4E D4 047D' 0472' DW CONTEXT-1 047F' 07 DB 7 0480' CURRENT: 0480' 044D' DW GETVAR 0482' 31 DB VCURRENT-MEMBEG ;================================================================ 0483' 42 41 53 C5 DB 'BAS','E' OR CLAST 0487' 047F' DW CURRENT-1 0489' 04 DB 4 048A' BASE: 048A' 044D' DW GETVAR 048C' 3F DB VBASE-MEMBEG ;================================================================ 048D' GETFLAGS: 048D' 044D' DW GETVAR 048F' 3E DB FLAGS-MEMBEG ;================================================================ 0490' DP: 0490' 044D' DW GETVAR 0492' 39 DB DICT-MEMBEG ;================================================================ 0493' 50 41 C4 DB 'PA','D' OR CLAST 0496' 0489' DW BASE-1 0498' 03 DB 3 0499' PAD: 0499' 0FF5' 2701 DW DOCONSTANT,PADMEM ;================================================================ 049D' NSEMICOLON: 049D' BB DB ';' OR CLAST 049E' 0498' DW PAD-1 04A0' 41 DB 1 OR IMM 04A1' SEMICOLON: 04A1' 1108' 04B6' DW DOCOMPILER,SEMIS 04A5' 12D8' DW ASSERT 04A7' 0A DB 10 ;PRUEFWERT TESTEN 04A8' 1A0E' DW SEMICODE MACRO-80 3.44 09-Dec-81 PAGE 1-19 04AA' 21 3C3E LD HL,FLAGS 04AD' 7E LD A,(HL) 04AE' E6 BB AND NOT ((1 SHL 6) OR (1 SHL 2)) 04B0' 77 LD (HL),A ;COMPILER AUSSCHALTEN 04B1' FD E9 JP (IY) ;================================================================ 04B3' 00 DB 0 04B4' FFE8 DW NSEMICOLON-$-1 04B6' SEMIS: 04B6' 04B8' DW RSEMIS 04B8' RSEMIS: 04B8' E1 POP HL ;AKTUELLEN ZEIGER WEGWERFEN 04B9' NEXT: 04B9' E1 POP HL ;ZEIGER HOLEN 04BA' NEXTSUB: 04BA' 5E LD E,(HL) 04BB' 23 INC HL 04BC' 56 LD D,(HL) 04BD' 23 INC HL 04BE' E5 PUSH HL ;NAECHSTE FORTH-ADRESSE HOLEN 04BF' NEXTDE: 04BF' EB EX DE,HL 04C0' 5E LD E,(HL) 04C1' 23 INC HL 04C2' 56 LD D,(HL) 04C3' 23 INC HL 04C4' EB EX DE,HL 04C5' E9 JP (HL) ;MASCHINENCODE ANSPRINGEN ;================================================================ 04C6' SLNEXT: 04C6' 04C8' DW RSLNEXT 04C8' RSLNEXT: 04C8' 01 000B LD BC,11 04CB' ED 5B 3C3B LD DE,(SPARE) 04CF' 2A 3C37 LD HL,(STKBOT) 04D2' 09 ADD HL,BC 04D3' ED 52 SBC HL,DE 04D5' 38 02 JR C,RSLNGOON ;NOCH PLATZ ZWISCHEN STACKS ? 04D7' ERRORSTK: RSTERR ERRSTK 04D7' E7 + RST 020H 04D8' 02 + DB ERRSTK 04D9' RSLNGOON: 04D9' 01 0000 LD BC,0 04DC' CD 0F8C' CALL MEMCHECK 04DF' CD 04E4' CALL USERBREAK 04E2' 18 D5 JR NEXT ;================================================================ 04E4' USERBREAK: 04E4' 3E FE LD A,0FEH 04E6' DB FE IN A,(IO) ;TASTENZEILE LESEN 04E8' 1F RRA 04E9' D8 RET C ;"SHIFT" NICHT GEDRUECKT ? 04EA' 3E 7F LD A,7FH MACRO-80 3.44 09-Dec-81 PAGE 1-20 04EC' DB FE IN A,(IO) ;TASTENZEILE LESEN 04EE' 1F RRA 04EF' D8 RET C ;"BREAK" NICHT GEDRUECKT ? 04F0' BREAK: RSTERR ERRBRK 04F0' E7 + RST 020H 04F1' 03 + DB ERRBRK ;================================================================ 04F2' QUITLOOP: 04F2' CD 04B9' CALL NEXT 04F5' QLLOOP: 04F5' 058C' DW QUERY ;EINE ZEILE HOLEN 04F7' 0506' DW LINE ; UND BEARBEITEN 04F9' 0536' DW OK ; UND "OK" SENDEN 04FB' 1276' FFF7 DW DOREPEAT,QLLOOP-$-1 ; FUER IMMER... ;================================================================ 04FF' 4C 49 4E C5 DB 'LIN','E' OR CLAST 0503' 04A0' DW SEMICOLON-1 0505' 04 DB 4 0506' LINE: 0506' 0EC3' DW DOCOL 0508' LINELOOP: 0508' 04C6' DW SLNEXT ;ALLE PRUEFUNGEN 050A' 063D' 08EE' DW FIND,QDUP ;WORT SUCHEN 050E' 1283' 0007 DW DOIF,LINENUM-$-1 ;NICHT GEFUNDEN ? 0512' 054F' DW CHKIMM ;WORT BEARBEITEN 0514' 1276' FFF1 DW DOREPEAT,LINELOOP-$-1 0518' LINENUM: 0518' 06A9' 08EE' DW NUMBER,QDUP ;ZAHL SUCHEN 051C' 1283' 0007 DW DOIF,LINESTR-$-1 ;NICHT GEFUNDEN ? 0520' 0564' DW CHKNUMBER ;ZAHL BEARBEITEN 0522' 1276' FFE3 DW DOREPEAT,LINELOOP-$-1 0526' LINESTR: 0526' 061B' 0C1A' DW CHKSTRING,ZEROEQ ;TEXT SUCHEN 052A' 1283' 0003 DW DOIF,LINEERR-$-1 ;NICHT GEFUNDEN ? 052E' 04B6' DW SEMIS 0530' LINEERR: 0530' 0578' DW RETYPE ;FEHLER MELDEN 0532' 1276' FFD3 DW DOREPEAT,LINELOOP-$-1 ;================================================================ 0536' OK: 0536' 0538' DW $+2 0538' 3A 3C3E LD A,(FLAGS) 053B' CB 77 BIT 6,A 053D' 20 0E JR NZ,OKQUIT ;LAEUFT DER COMPILER NOCH ? 053F' CB 67 BIT 4,A 0541' 20 0A JR NZ,OKQUIT ;EINGABE UNSICHTBAR ? 0543' CD 1808' CALL ROMTXT 0546' 20 4F 4B A0 DB ' OK',' ' OR CLAST 054A' 3E 0D LD A,CCR RSTEMIT 054C' CF + RST 008H 054D' OKQUIT: MACRO-80 3.44 09-Dec-81 PAGE 1-21 054D' FD E9 JP (IY) ;================================================================ 054F' CHKIMM: 054F' 0551' DW $+2 RSTPULL ;CODE-FELD-ADRESSE 0551' DF + RST 018H 0552' 1B DEC DE 0553' 1A LD A,(DE) 0554' 2F CPL 0555' DD A6 3E AND (IX+FLAGS-MEMBEG) 0558' E6 40 AND 1 SHL 6 055A' 13 INC DE 055B' 28 04 JR Z,CHKIQUIT ;COMPILER AUS ODER IMMEDIATE ? RSTPUSH 055D' D7 + RST 010H 055E' 11 0F4E' LD DE,KOMMA 0561' CHKIQUIT: 0561' C3 04BF' JP NEXTDE ;---------------------------------------------------------------- 0564' CHKNUMBER: 0564' 0566' DW $+2 RSTPULL 0566' DF + RST 018H 0567' DD CB 3E 76 BIT 6,(IX+FLAGS-MEMBEG) 056B' 20 F4 JR NZ,CHKIQUIT ;COMPILER AN ? 056D' FD E9 JP (IY) ;================================================================ 056F' 52 45 54 59 DB 'RETYP','E' OR CLAST 0573' 50 C5 0575' 058B' DW QUERY-1 0577' 06 DB 6 0578' RETYPE: 0578' 057A' DW $+2 057A' CD 02EA' CALL DCRETYPE 057D' CD 0276' CALL DCOUTCUR 0580' 36 BF LD (HL),'?' OR CINV ;CURSOR AENDERN 0582' 18 10 JR QSTART ;================================================================ 0584' 51 55 45 52 DB 'QUER','Y' OR CLAST 0588' D9 0589' 0505' DW LINE-1 058B' 05 DB 5 058C' QUERY: 058C' 058E' DW $+2 058E' CD 02D8' CALL DCCLEAR 0591' CD 0276' CALL DCOUTCUR 0594' QSTART: 0594' 21 3C28 LD HL,STATIN 0597' CB C6 SET 0,(HL) ;EINGABE FREIGEBEN 0599' CB AE RES 5,(HL) ;BISHER KEIN "ENTER" MACRO-80 3.44 09-Dec-81 PAGE 1-22 059B' QLOOP: 059B' CB 6E BIT 5,(HL) 059D' 28 FC JR Z,QLOOP ;AUF "ENTER" WARTEN 059F' CD 0225' CALL DCCURDEL 05A2' FD E9 JP (IY) ;================================================================ 05A4' 57 4F 52 C4 DB 'WOR','D' OR CLAST 05A8' 0577' DW RETYPE-1 05AA' 04 DB 4 05AB' WORD: 05AB' 05AD' DW $+2 RSTPULL ;DELIMITER HOLEN 05AD' DF + RST 018H 05AE' 21 27FE LD HL,SCRMEND-2 05B1' 06 FD LD B,SCRMEND-SCREND-3 05B3' WCLLOOP: 05B3' 36 20 LD (HL),' ' 05B5' 2B DEC HL 05B6' 10 FB DJNZ WCLLOOP ;PUFFER LOESCHEN 05B8' D5 PUSH DE 05B9' EB EX DE,HL RSTPUSH 05BA' D7 + RST 010H 05BB' D1 POP DE 05BC' CD 05E1' CALL CWORD ;TEXT EINLESEN 05BF' 04 INC B 05C0' 05 DEC B 05C1' 28 03 JR Z,WGOON1 05C3' 01 00FF LD BC,255 ;ANZAHL AUF 255 BEGRENZEN 05C6' WGOON1: 05C6' 21 2701 LD HL,PADMEM 05C9' 71 LD (HL),C ;ANZAHL SPEICHERN 05CA' 23 INC HL 05CB' 3E FC LD A,252 05CD' B9 CP C 05CE' 30 01 JR NC,WGOON2 05D0' 4F LD C,A ;ANZAHL BEGRENZEN 05D1' WGOON2: 05D1' 0C INC C 05D2' D5 PUSH DE 05D3' C5 PUSH BC 05D4' EB EX DE,HL 05D5' ED B0 LDIR ;EINGABE UMSPEICHERN 05D7' C1 POP BC 05D8' D1 POP DE 05D9' 0D DEC C 05DA' CD 07DA' CALL BLWORD ;EINGABE LOESCHEN 05DD' FD E9 JP (IY) ;================================================================ 05DF' GETSTRING: 05DF' 1E 20 LD E,' ' ;LEERZEICHEN ALS BEGRENZER MACRO-80 3.44 09-Dec-81 PAGE 1-23 05E1' CWORD: 05E1' 2A 3C24 LD HL,(LHALF) 05E4' 22 3C1E LD (INSCRN),HL 05E7' 01 0000 LD BC,0 ;BISHER KEIN ZEICHEN 05EA' CWLOOP1: 05EA' 23 INC HL 05EB' 7E LD A,(HL) 05EC' BB CP E 05ED' 28 FB JR Z,CWLOOP1 ;ANFANG SUCHEN 05EF' A7 AND A 05F0' 28 0E JR Z,CWNFND 05F2' E5 PUSH HL ;ANFANG MERKEN 05F3' CWLOOP2: 05F3' 03 INC BC ;MITZAEHLEN 05F4' 23 INC HL 05F5' 7E LD A,(HL) 05F6' A7 AND A 05F7' 28 03 JR Z,CWEND ;TEXTENDE ? 05F9' BB CP E 05FA' 20 F7 JR NZ,CWLOOP2 ;ENDE SUCHEN 05FC' CWEND: 05FC' D1 POP DE ;ANFANG HOLEN 05FD' AF XOR A 05FE' B8 CP B 05FF' C9 RET ;TEST AUF ANZAHL 256 0600' CWNFND: 0600' D5 PUSH DE 0601' CD 02B0' CALL DCSTREND 0604' E2 0614' JP PO,CWERR ;EINGABE-ENDE GEFUNDEN ? 0607' ED 5B 3C24 LD DE,(LHALF) 060B' CD 07FA' CALL BLANKS ;EINGABE-FELD LOESCHEN 060E' 22 3C24 LD (LHALF),HL 0611' D1 POP DE 0612' 18 CD JR CWORD ;NAECHSTES WORT 0614' CWERR: 0614' EB EX DE,HL ;ZEIGER AUF ENDE (???) 0615' C1 POP BC 0616' 01 0000 LD BC,0 0619' 37 SCF ;MISSERFOLG MELDEN 061A' C9 RET ;================================================================ 061B' CHKSTRING: 061B' 061D' DW $+2 061D' CD 05DF' CALL GETSTRING 0620' 50 LD D,B 0621' 59 LD E,C RSTPUSH 0622' D7 + RST 010H 0623' FD E9 JP (IY) ;================================================================ MACRO-80 3.44 09-Dec-81 PAGE 1-24 0625' 56 4C 49 53 DB 'VLIS','T' OR CLAST 0629' D4 062A' 05AA' DW WORD-1 062C' 05 DB 5 062D' VLIST: 062D' 062F' DW $+2 062F' 3E 0D LD A,CCR RSTEMIT 0631' CF + RST 008H 0632' 0E 00 LD C,0 ;ALLE WORTE FINDEN 0634' 18 0E JR RFIND ;================================================================ 0636' 46 49 4E C4 DB 'FIN','D' OR CLAST 063A' 062C' DW VLIST-1 063C' 04 DB 4 063D' FIND: 063D' 063F' DW $+2 063F' CD 05DF' CALL GETSTRING 0642' 38 46 JR C,RZERO ;KEIN WORT EINGEGEBEN ? 0644' RFIND: 0644' 2A 3C33 LD HL,(VCONTEXT) 0647' 7E LD A,(HL) 0648' 23 INC HL 0649' 66 LD H,(HL) 064A' 6F LD L,A ;ERSTEN ZEIGER HOLEN 064B' FLOOP: 064B' 7E LD A,(HL) 064C' E6 3F AND 3FH 064E' 28 2F JR Z,FNEXT2 ;KEIN WORT MEHR ? 0650' A9 XOR C 0651' 28 04 JR Z,FTEST ;GLEICHE LAENGE ? 0653' 79 LD A,C 0654' A7 AND A 0655' 20 28 JR NZ,FNEXT2 ;EINZELNES WORT GESUCHT ? 0657' FTEST: 0657' D5 PUSH DE 0658' E5 PUSH HL 0659' CD 15E8' CALL PTR2NAME 065C' B1 OR C 065D' 28 17 JR Z,FPRINT ;WORT SOFORT AUSGEBEN ? 065F' 41 LD B,C ;WORTLAENGE HOLEN 0660' FCOMPARE: 0660' 1A LD A,(DE) 0661' CD 0807' CALL TOUPPER 0664' 13 INC DE 0665' AE XOR (HL) 0666' E6 7F AND NOT CLAST 0668' 23 INC HL 0669' 20 12 JR NZ,FNEXT1 ;WORT UNGLEICH ? 066B' 10 F3 DJNZ FCOMPARE ;NOCH NICHT ALLE ZEICHEN ? MACRO-80 3.44 09-Dec-81 PAGE 1-25 066D' D1 POP DE 066E' 13 INC DE RSTPUSH ;ZEIGER AUF CODE-FELD 066F' D7 + RST 010H 0670' D1 POP DE 0671' CD 07DA' CALL BLWORD ;EVTL. EINGABE LOESCHEN 0674' FD E9 JP (IY) 0676' FPRINT: 0676' CD 17FB' CALL OUTTXT 0679' 76 HALT ;VSYNC ABWARTEN 067A' CD 04E4' CALL USERBREAK 067D' FNEXT1: 067D' E1 POP HL 067E' D1 POP DE 067F' FNEXT2: 067F' 2B DEC HL 0680' 7E LD A,(HL) 0681' 2B DEC HL 0682' 6E LD L,(HL) 0683' 67 LD H,A ;NAECHSTER ZEIGER 0684' B5 OR L 0685' 20 C4 JR NZ,FLOOP ;NOCH NICHT ALLE WORTE ? 0687' C3 DB 0C3H ;JP RZERO (HRM-HRM !!!) ;================================================================ 0688' ZERO: 0688' 068A' DW $+2 068A' RZERO: 068A' 11 0000 LD DE,0 RSTPUSH 068D' D7 + RST 010H 068E' FD E9 JP (IY) ;================================================================ 0690' 45 58 45 43 DB 'EXECUT','E' OR CLAST 0694' 55 54 C5 0697' 063C' DW FIND-1 0699' 07 DB 7 069A' EXECUTE: 069A' 069C' DW $+2 RSTPULL 069C' DF + RST 018H 069D' C3 04BF' JP NEXTDE ;================================================================ 06A0' 4E 55 4D 42 DB 'NUMBE','R' OR CLAST 06A4' 45 D2 06A6' 0699' DW EXECUTE-1 06A8' 06 DB 6 06A9' NUMBER: 06A9' 06AB' DW $+2 06AB' CD 05DF' CALL GETSTRING 06AE' 38 DA JR C,RZERO ;KEIN WORT EINGEGEBEN ? 06B0' C5 PUSH BC MACRO-80 3.44 09-Dec-81 PAGE 1-26 06B1' D5 PUSH DE 06B2' CD 074C' CALL CNVINT 06B5' 20 05 JR NZ,NFLOAT ;KEIN ZWISCHENRAUM ? 06B7' 11 1006' LD DE,LITERAL 06BA' 18 58 JR NUMBERQUIT ;16-BIT-INTEGER 06BC' NFLOAT: RSTPULL 06BC' DF + RST 018H 06BD' 11 0000 LD DE,0 RSTPUSH 06C0' D7 + RST 010H 06C1' 11 4500 LD DE,0 OR ((FEOFFS+5) SHL 8) 06C4' C1 POP BC 06C5' C5 PUSH BC 06C6' 0A LD A,(BC) 06C7' FE 2D CP '-' 06C9' 20 03 JR NZ,NFGOON ;POSITIVE ZAHL ? 06CB' 16 C5 LD D,FSIGN OR (FEOFFS+5) 06CD' 03 INC BC 06CE' NFGOON: RSTPUSH 06CE' D7 + RST 010H 06CF' 50 LD D,B 06D0' 59 LD E,C 06D1' 2B DEC HL 06D2' 2B DEC HL 06D3' NFLOOP1: 06D3' CD 0723' CALL DECGET 06D6' 23 INC HL 06D7' 34 INC (HL) 06D8' 2B DEC HL 06D9' 30 F8 JR NC,NFLOOP1 ;VORKOMMA-ANTEIL UMWANDELN 06DB' FE FE CP '.'-'0' 06DD' 20 3D JR NZ,NUMBERERR ;NICHT DEZIMALPUNKT ? 06DF' NFLOOP2: 06DF' CD 0723' CALL DECGET 06E2' 30 FB JR NC,NFLOOP2 ;NACHKOMMA-ANTEIL UMWANDELN 06E4' C6 30 ADD A,'0' 06E6' CD 077B' CALL CNVEND 06E9' 20 04 JR NZ,NFEXP ;KEIN ZWISCHENRAUM ? 06EB' 1E 00 LD E,0 06ED' 18 0E JR NFEGOON 06EF' NFEXP: 06EF' E6 DF AND NOT 020H 06F1' FE 45 CP 'E' 06F3' 20 27 JR NZ,NUMBERERR ;KEIN EXPONENT ? 06F5' E5 PUSH HL 06F6' CD 074C' CALL CNVINT RSTPULL 06F9' DF + RST 018H 06FA' E1 POP HL MACRO-80 3.44 09-Dec-81 PAGE 1-27 06FB' 20 1F JR NZ,NUMBERERR ;KEIN ZWISCHENRAUM ? 06FD' NFEGOON: 06FD' CD 0740' CALL FZEROEQ 0700' 28 0F JR Z,NFQUIT ;ZAHL = 0 ? 0702' 23 INC HL 0703' 7E LD A,(HL) 0704' E6 7F AND 7FH 0706' 83 ADD A,E 0707' FA 071C' JP M,NUMBERERR 070A' 28 10 JR Z,NUMBERERR ;EXPONENT ZU GROSS ? 070C' AE XOR (HL) 070D' E6 7F AND 7FH 070F' AE XOR (HL) ;VORZEICHEN BEHALTEN 0710' 77 LD (HL),A ;EXPONENT SPEICHERN 0711' NFQUIT: 0711' 11 1055' LD DE,LITFLOAT 0714' NUMBERQUIT: RSTPUSH 0714' D7 + RST 010H 0715' D1 POP DE 0716' C1 POP BC 0717' CD 07DA' CALL BLWORD 071A' FD E9 JP (IY) 071C' NUMBERERR: 071C' E1 POP HL 071D' E1 POP HL RSTPULL 071E' DF + RST 018H RSTPULL 071F' DF + RST 018H 0720' C3 068A' JP RZERO ;---------------------------------------------------------------- 0723' DECGET: 0723' 1A LD A,(DE) 0724' 13 INC DE 0725' D6 30 SUB '0' 0727' D8 RET C 0728' FE 0A CP 10 072A' 3F CCF 072B' D8 RET C ;ZEICHEN < '0' ODER > '9' ? 072C' DECSHIN: 072C' 4F LD C,A 072D' 7E LD A,(HL) 072E' E6 F0 AND 0F0H 0730' C0 RET NZ ;OBERSTE STELLE <> 0 ? 0731' 79 LD A,C 0732' DECSTORE: 0732' 2B DEC HL 0733' 2B DEC HL 0734' 0E 03 LD C,3 0736' DSLOOP: 0736' ED 6F RLD 0738' 23 INC HL MACRO-80 3.44 09-Dec-81 PAGE 1-28 0739' 0D DEC C 073A' 20 FA JR NZ,DSLOOP ;DIGIT AN UNTERSTER STELLE 073C' 35 DEC (HL) 073D' 2B DEC HL 073E' BF CP A 073F' C9 RET ;DIGIT EINGESCHOBEN, TEST AUF 0 ;---------------------------------------------------------------- 0740' FZEROEQ: 0740' 06 06 LD B,6 0742' FZEQLP: 0742' AF XOR A 0743' CD 072C' CALL DECSHIN 0746' C0 RET NZ ;STELLE <> 0 GEFUNDEN ? 0747' 10 F9 DJNZ FZEQLP ;MAXIMAL ALLE STELLEN 0749' 23 INC HL 074A' 70 LD (HL),B ;EXPONENT LOESCHEN 074B' C9 RET ;---------------------------------------------------------------- 074C' CNVINT: RSTPUSH 074C' D7 + RST 010H 074D' CD 04B9' CALL NEXT 0750' 086B' 0896' DW DUP,CAT,GETBYTE 0754' 104B' 0756' 2D DB '-' 0757' 0C4A' DW EQ ;NEGATIVES VORZEICHEN ? 0759' 086B' 0DA9' DW DUP,NEGATE,GTR 075D' 08D2' 075F' 0DD2' 0E1F' DW PLUS,ONEMINUS ;ZEIGER ANPASSEN 0763' 0688' 0688' DW ZERO,ZERO,ROT 0767' 08FF' 0769' 078A' DW CONVERT ;ZAHL KONVERTIEREN 076B' 08FF' 08DF' DW ROT,RGT,IFN0NEG ;BEI BEDARF NEGIEREN 076F' 0D94' 0771' 08FF' 0879' DW ROT,DROP ;OBERES WORT WEGWERFEN 0775' 0885' DW SWAP 0777' 1A0E' DW SEMICODE RSTPULL 0779' DF + RST 018H 077A' 1A LD A,(DE) 077B' CNVEND: 077B' FE 20 CP ' ' 077D' C8 RET Z 077E' A7 AND A 077F' C9 RET ;TEST AUF ZWISCHENRAUM ;================================================================ 0780' 43 4F 4E 56 DB 'CONVER','T' OR CLAST 0784' 45 52 D4 0787' 06A8' DW NUMBER-1 0789' 07 DB 7 078A' CONVERT: 078A' 0EC3' DW DOCOL 078C' CNVTLOOP: 078C' 0E09' 086B' DW ONEPLUS,DUP,GTR ;ADRESSE MERKEN 0790' 08D2' 0792' 0896' 07B8' DW CAT,CNVDIGIT ;EIN ZEICHEN KONVERTIEREN MACRO-80 3.44 09-Dec-81 PAGE 1-29 0796' 1283' 001B DW DOIF,CNVTEND-$-1 ;KEINE ZIFFER ? 079A' 0885' DW SWAP 079C' 048A' 0896' DW BASE,CAT,UMUL 07A0' 0CA8' 07A2' 0879' 08FF' DW DROP,ROT 07A6' 048A' 0896' DW BASE,CAT,UMUL 07AA' 0CA8' 07AC' 0DEE' DW DPLUS ;ZIFFER EINSCHIEBEN 07AE' 08DF' DW RGT ;ADRESSE HOLEN 07B0' 1276' FFD9 DW DOREPEAT,CNVTLOOP-$-1 07B4' CNVTEND: 07B4' 08DF' DW RGT ;STACK KORRIGIEREN 07B6' 04B6' DW SEMIS ;---------------------------------------------------------------- 07B8' CNVDIGIT: 07B8' 07BA' DW $+2 RSTPULL 07BA' DF + RST 018H 07BB' 7B LD A,E 07BC' CD 0807' CALL TOUPPER ;ZEICHEN HOLEN 07BF' C6 D0 ADD A,-'0' 07C1' 30 14 JR NC,CNVDQUIT ;ZEICHEN < '0' ? 07C3' FE 0A CP 10 07C5' 38 06 JR C,CNVDOK ;ZEICHEN < '9' ? 07C7' C6 EF ADD A,'0'-'A' 07C9' 30 0C JR NC,CNVDQUIT ;ZEICHEN < 'A' ? 07CB' C6 0A ADD A,10 ;WERT KORRIGIEREN 07CD' CNVDOK: 07CD' DD BE 3F CP (IX+VBASE-MEMBEG) 07D0' 30 05 JR NC,CNVDQUIT ;ZEICHEN ZU GROSS ? 07D2' 16 00 LD D,0 07D4' 5F LD E,A RSTPUSH ;DIGIT SPEICHERN 07D5' D7 + RST 010H 07D6' 37 SCF 07D7' CNVDQUIT: 07D7' C3 0C21' JP CMPPUSH ;TEST SPEICHERN ;================================================================ 07DA' BLWORD: 07DA' 62 LD H,D 07DB' 6B LD L,E ;ZEIGER AUF ANFANG 07DC' 03 INC BC 07DD' 09 ADD HL,BC 07DE' E5 PUSH HL ;ZEIGER HINTER TRENNZEICHEN 07DF' DD CB 3E 66 BIT 4,(IX+FLAGS-MEMBEG) 07E3' CC 097F' CALL Z,CTYPE ;EINGABE SICHTBAR ? 07E6' CD 02B0' CALL DCSTREND ;EINGABE-ENDE SUCHEN 07E9' D1 POP DE 07EA' A7 AND A 07EB' ED 52 SBC HL,DE 07ED' 44 LD B,H 07EE' 4D LD C,L ;RESTLICHE ZEICHEN BERECHNEN MACRO-80 3.44 09-Dec-81 PAGE 1-30 07EF' 2A 3C1E LD HL,(INSCRN) 07F2' 23 INC HL 07F3' EB EX DE,HL 07F4' 38 05 JR C,BLANKS2 07F6' 28 02 JR Z,BLANKS 07F8' ED B0 LDIR ;EINGABE LOESCHEN ;---------------------------------------------------------------- 07FA' BLANKS: 07FA' A7 AND A 07FB' BLANKS2: 07FB' ED 52 SBC HL,DE 07FD' EB EX DE,HL ;ANZAHL BERECHNEN 07FE' BLLOOP: 07FE' 7A LD A,D 07FF' B3 OR E 0800' C8 RET Z ;ALLES GELOESCHT ? 0801' 36 20 LD (HL),' ' 0803' 23 INC HL ;NAECHSTES ZEICHEN LOESCHEN 0804' 1B DEC DE 0805' 18 F7 JR BLLOOP ;================================================================ 0807' TOUPPER: 0807' E6 7F AND 7FH 0809' FE 61 CP 'a' 080B' D8 RET C 080C' FE 7B CP 'z'+1 080E' D0 RET NC 080F' E6 5F AND 5FH 0811' C9 RET ;================================================================ 0812' 56 49 D3 DB 'VI','S' OR CLAST 0815' 0789' DW CONVERT-1 0817' 03 DB 3 0818' VIS: 0818' 081A' DW $+2 081A' DD CB 3E A6 RES 4,(IX+FLAGS-MEMBEG) ;EINGABE SICHTBAR 081E' FD E9 JP (IY) ;================================================================ 0820' 49 4E 56 49 DB 'INVI','S' OR CLAST 0824' D3 0825' 0817' DW VIS-1 0827' 05 DB 5 0828' INVIS: 0828' 082A' DW $+2 082A' DD CB 3E E6 SET 4,(IX+FLAGS-MEMBEG) ;EINGABE UNSICHTBAR 082E' FD E9 JP (IY) ;================================================================ 0830' 46 41 53 D4 DB 'FAS','T' OR CLAST 0834' 0827' DW INVIS-1 0836' 04 DB 4 0837' FAST: 0837' 0839' DW $+2 MACRO-80 3.44 09-Dec-81 PAGE 1-31 0839' FD 21 04B9' LD IY,NEXT 083D' FD E9 JP (IY) ;================================================================ 083F' 53 4C 4F D7 DB 'SLO','W' OR CLAST 0843' 0836' DW FAST-1 0845' 04 DB 4 0846' SLOW: 0846' 0848' DW $+2 0848' FD 21 04C8' LD IY,RSLNEXT 084C' FD E9 JP (IY) ;================================================================ 084E' PULLBC: 084E' 2A 3C3B LD HL,(SPARE) 0851' 2B DEC HL 0852' 46 LD B,(HL) 0853' 2B DEC HL 0854' 4E LD C,(HL) 0855' 22 3C3B LD (SPARE),HL 0858' C9 RET ;================================================================ 0859' RPULL: 0859' 2B DEC HL 085A' 5E LD E,(HL) 085B' 22 3C3B LD (SPARE),HL 085E' C9 RET ;================================================================ 085F' RPUSH: 085F' 72 LD (HL),D 0860' 23 INC HL 0861' 22 3C3B LD (SPARE),HL 0864' C9 RET ;================================================================ 0865' 44 55 D0 DB 'DU','P' OR CLAST 0868' 0845' DW SLOW-1 086A' 03 DB 3 086B' DUP: 086B' 086D' DW $+2 RSTPULL 086D' DF + RST 018H RSTPUSH 086E' D7 + RST 010H RSTPUSH 086F' D7 + RST 010H 0870' FD E9 JP (IY) ;================================================================ 0872' 44 52 4F D0 DB 'DRO','P' OR CLAST 0876' 086A' DW DUP-1 0878' 04 DB 4 0879' DROP: 0879' 087B' DW $+2 RSTPULL 087B' DF + RST 018H 087C' FD E9 JP (IY) MACRO-80 3.44 09-Dec-81 PAGE 1-32 ;================================================================ 087E' 53 57 41 D0 DB 'SWA','P' OR CLAST 0882' 0878' DW DROP-1 0884' 04 DB 4 0885' SWAP: 0885' 0887' DW $+2 RSTPULL 0887' DF + RST 018H 0888' CD 084E' CALL PULLBC RSTPUSH 088B' D7 + RST 010H 088C' 50 LD D,B 088D' 59 LD E,C RSTPUSH 088E' D7 + RST 010H 088F' FD E9 JP (IY) ;================================================================ 0891' 43 C0 DB 'C','@' OR CLAST 0893' 0884' DW SWAP-1 0895' 02 DB 2 0896' CAT: 0896' 0898' DW $+2 RSTPULL 0898' DF + RST 018H 0899' 1A LD A,(DE) 089A' 5F LD E,A 089B' 16 00 LD D,0 RSTPUSH 089D' D7 + RST 010H 089E' FD E9 JP (IY) ;================================================================ 08A0' 43 A1 DB 'C','!' OR CLAST 08A2' 0895' DW CAT-1 08A4' 02 DB 2 08A5' CEXCLAM: 08A5' 08A7' DW $+2 RSTPULL 08A7' DF + RST 018H 08A8' CD 084E' CALL PULLBC 08AB' 79 LD A,C 08AC' 12 LD (DE),A 08AD' FD E9 JP (IY) ;================================================================ 08AF' C0 DB '@' OR CLAST 08B0' 08A4' DW CEXCLAM-1 08B2' 01 DB 1 08B3' AT: 08B3' 08B5' DW $+2 RSTPULL 08B5' DF + RST 018H 08B6' EB EX DE,HL 08B7' 5E LD E,(HL) MACRO-80 3.44 09-Dec-81 PAGE 1-33 08B8' 23 INC HL 08B9' 56 LD D,(HL) RSTPUSH 08BA' D7 + RST 010H 08BB' FD E9 JP (IY) ;================================================================ 08BD' A1 DB '!' OR CLAST 08BE' 08B2' DW AT-1 08C0' 01 DB 1 08C1' EXCLAM: 08C1' 08C3' DW $+2 RSTPULL 08C3' DF + RST 018H 08C4' CD 084E' CALL PULLBC 08C7' EB EX DE,HL 08C8' 71 LD (HL),C 08C9' 23 INC HL 08CA' 70 LD (HL),B 08CB' FD E9 JP (IY) ;================================================================ 08CD' 3E D2 DB '>','R' OR CLAST 08CF' 08C0' DW EXCLAM-1 08D1' 02 DB 2 08D2' GTR: 08D2' 08D4' DW $+2 RSTPULL 08D4' DF + RST 018H 08D5' C1 POP BC 08D6' D5 PUSH DE 08D7' C5 PUSH BC 08D8' FD E9 JP (IY) ;================================================================ 08DA' 52 BE DB 'R','>' OR CLAST 08DC' 08D1' DW GTR-1 08DE' 02 DB 2 08DF' RGT: 08DF' 08E1' DW $+2 08E1' C1 POP BC 08E2' D1 POP DE 08E3' C5 PUSH BC RSTPUSH 08E4' D7 + RST 010H 08E5' FD E9 JP (IY) ;================================================================ 08E7' 3F 44 55 D0 DB '?DU','P' OR CLAST 08EB' 08DE' DW RGT-1 08ED' 04 DB 4 08EE' QDUP: 08EE' 08F0' DW $+2 RSTPULL 08F0' DF + RST 018H RSTPUSH MACRO-80 3.44 09-Dec-81 PAGE 1-34 08F1' D7 + RST 010H 08F2' 7A LD A,D 08F3' B3 OR E 08F4' C4 0010' CALL NZ,CPUSH 08F7' FD E9 JP (IY) ;================================================================ 08F9' 52 4F D4 DB 'RO','T' OR CLAST 08FC' 08ED' DW QDUP-1 08FE' 03 DB 3 08FF' ROT: 08FF' 0EC3' DW DOCOL 0901' 08D2' 0885' DW GTR,SWAP,RGT,SWAP 0905' 08DF' 0885' 0909' 04B6' DW SEMIS ;================================================================ 090B' 4F 56 45 D2 DB 'OVE','R' OR CLAST 090F' 08FE' DW ROT-1 0911' 04 DB 4 0912' OVER: 0912' 0EC3' DW DOCOL 0914' 08D2' 086B' DW GTR,DUP,RGT,SWAP 0918' 08DF' 0885' 091C' 04B6' DW SEMIS ;================================================================ 091E' 50 49 43 CB DB 'PIC','K' OR CLAST 0922' 0911' DW OVER-1 0924' 04 DB 4 0925' PICK: 0925' 0927' DW $+2 0927' CD 094D' CALL CPICK 092A' FD E9 JP (IY) ;================================================================ 092C' 52 4F 4C CC DB 'ROL','L' OR CLAST 0930' 0924' DW PICK-1 0932' 04 DB 4 0933' ROLL: 0933' 0935' DW $+2 0935' CD 094D' CALL CPICK 0938' EB EX DE,HL 0939' 2A 3C37 LD HL,(STKBOT) 093C' ED 52 SBC HL,DE 093E' D2 04D7' JP NC,ERRORSTK ;STACK NICHT GENUEGEND GROSS ? 0941' 62 LD H,D 0942' 6B LD L,E 0943' 23 INC HL 0944' 23 INC HL 0945' ED B0 LDIR ;STACK VERSCHIEBEN 0947' ED 53 3C3B LD (SPARE),DE 094B' FD E9 JP (IY) ;================================================================ 094D' CPICK: 094D' CD 084E' CALL PULLBC MACRO-80 3.44 09-Dec-81 PAGE 1-35 0950' 0B DEC BC 0951' CB 21 SLA C 0953' CB 10 RL B 0955' 03 INC BC 0956' 03 INC BC 0957' 30 02 JR NC,CPKGOON ;OFFSET OK ? RSTERR ERRPICK 0959' E7 + RST 020H 095A' 07 + DB ERRPICK 095B' CPKGOON: 095B' 2A 3C3B LD HL,(SPARE) 095E' ED 42 SBC HL,BC 0960' E5 PUSH HL 0961' 5E LD E,(HL) 0962' 23 INC HL 0963' 56 LD D,(HL) RSTPUSH ;ZAHL AUS PARAMETERSTACK HOLEN 0964' D7 + RST 010H 0965' E1 POP HL 0966' C9 RET ;================================================================ 0967' 54 59 50 C5 DB 'TYP','E' OR CLAST 096B' 0932' DW ROLL-1 096D' 04 DB 4 096E' TYPE: 096E' 0970' DW $+2 0970' CD 084E' CALL PULLBC RSTPULL 0973' DF + RST 018H 0974' CD 097F' CALL CTYPE 0977' FD E9 JP (IY) ;================================================================ 0979' TYPEDE: 0979' 1A LD A,(DE) 097A' 4F LD C,A 097B' 13 INC DE 097C' 1A LD A,(DE) 097D' 47 LD B,A 097E' 13 INC DE ;---------------------------------------------------------------- 097F' CTYPE: 097F' 78 LD A,B 0980' B1 OR C 0981' C8 RET Z 0982' 1A LD A,(DE) 0983' 13 INC DE 0984' 0B DEC BC RSTEMIT 0985' CF + RST 008H 0986' 18 F7 JR CTYPE ;================================================================ 0988' 3C A3 DB '<','#' OR CLAST 098A' 096D' DW TYPE-1 098C' 02 DB 2 MACRO-80 3.44 09-Dec-81 PAGE 1-36 098D' LTNUM: 098D' 098F' DW $+2 098F' 21 27FF LD HL,SCRMEND-1 0992' 22 3C1A LD (HLD),HL ;ZEIGER VORBEREITEN 0995' FD E9 JP (IY) ;================================================================ 0997' 23 BE DB '#','>' OR CLAST 0999' 098C' DW LTNUM-1 099B' 02 DB 2 099C' NUMGT: 099C' 099E' DW $+2 RSTPULL 099E' DF + RST 018H RSTPULL ;STACK PUTZEN 099F' DF + RST 018H 09A0' ED 5B 3C1A LD DE,(HLD) RSTPUSH ;ZEIGER HOLEN 09A4' D7 + RST 010H 09A5' 21 27FF LD HL,SCRMEND-1 09A8' A7 AND A 09A9' ED 52 SBC HL,DE 09AB' EB EX DE,HL RSTPUSH ;LAENGE BERECHNEN 09AC' D7 + RST 010H 09AD' FD E9 JP (IY) ;================================================================ 09AF' AE DB '.' OR CLAST 09B0' 0A49' DW SIGN-1 09B2' 01 DB 1 09B3' PNT: 09B3' 0EC3' DW DOCOL 09B5' 098D' 086B' DW LTNUM,DUP ;UMWANDLUNG STARTEN 09B9' 0C0D' 0688' DW ABS,ZERO ;DOPPELWORT AUFBAUEN 09BD' 09E1' DW NUMS ;ZAHL ABSOLUT UMWANDELN 09BF' 08FF' 0A4A' DW ROT,SIGN ;VORZEICHEN BEARBEITEN 09C3' PNTLEFT: 09C3' 099C' DW NUMGT ;BEARBEITUNG BEENDEN 09C5' 096E' 0A73' DW TYPE,SPACE ;AUSGEBEN 09C9' 04B6' DW SEMIS ;================================================================ 09CB' 55 AE DB 'U','.' OR CLAST 09CD' 09B2' DW PNT-1 09CF' 02 DB 2 09D0' UPNT: 09D0' 0EC3' DW DOCOL 09D2' 0688' 098D' DW ZERO,LTNUM,NUMS ;UMWANDLUNG STARTEN 09D6' 09E1' 09D8' 1276' FFE8 DW DOREPEAT,PNTLEFT-$-1 ;================================================================ 09DC' 23 D3 DB '#','S' OR CLAST 09DE' 09CF' DW UPNT-1 09E0' 02 DB 2 MACRO-80 3.44 09-Dec-81 PAGE 1-37 09E1' NUMS: 09E1' 0EC3' DW DOCOL 09E3' NUMSLP: 09E3' 09F7' DW NUM ;EINE STELLE UMWANDELN 09E5' 0912' 0912' DW OVER,OVER,LOR,ZEROEQ 09E9' 0E36' 0C1A' 09ED' 128D' FFF3 DW DOUNTIL,NUMSLP-$-1 ;REST <> 0 ? 09F1' 04B6' DW SEMIS ;================================================================ 09F3' A3 DB '#' OR CLAST 09F4' 09E0' DW NUMS-1 09F6' 01 DB 1 09F7' NUM: 09F7' 0EC3' DW DOCOL 09F9' 048A' 0896' DW BASE,CAT,DIV32BY16,ROT ;MIT "BASE" MODULO 09FD' 0CC4' 08FF' 0A01' 0A07' 0A5C' DW NIBASC,HOLD ;ALS ZEICHEN SPEICHERN 0A05' 04B6' DW SEMIS ;================================================================ 0A07' NIBASC: 0A07' 0A09' DW $+2 RSTPULL 0A09' DF + RST 018H 0A0A' 7B LD A,E ;NIBBLE HOLEN 0A0B' C6 30 ADD A,'0' 0A0D' FE 3A CP '0'+10 0A0F' 38 02 JR C,NADEC ;KORREKTUR FUER 'A'... 0A11' C6 07 ADD A,7 0A13' NADEC: 0A13' 5F LD E,A RSTPUSH ;ASCII SPEICHERN 0A14' D7 + RST 010H 0A15' FD E9 JP (IY) ;================================================================ 0A17' 43 4C D3 DB 'CL','S' OR CLAST 0A1A' 09F6' DW NUM-1 0A1C' 03 DB 3 0A1D' CLS: 0A1D' 0A1F' DW $+2 0A1F' CD 0A24' CALL CCLS 0A22' FD E9 JP (IY) 0A24' CCLS: 0A24' 11 26FF LD DE,SCREEN+24*32-1 0A27' 2A 3C24 LD HL,(LHALF) 0A2A' 01 0020 LD BC,32 0A2D' 09 ADD HL,BC 0A2E' 2B DEC HL 0A2F' ED B8 LDDR ;LETZTE AUSGABEZEILE AN BILD-ENDE 0A31' ED 43 3C2F LD (XCOORD),BC ;PLOTKOORDINATEN LOESCHEN 0A35' 21 2400 LD HL,SCREEN 0A38' 22 3C1C LD (SCRPOS),HL ;CURSOR HOME MACRO-80 3.44 09-Dec-81 PAGE 1-38 0A3B' 13 INC DE 0A3C' EB EX DE,HL 0A3D' 22 3C24 LD (LHALF),HL ;AUSGABE-ENDE SETZEN 0A40' C3 07FA' JP BLANKS ;AUSGABE-FELD LOESCHEN ;================================================================ 0A43' 53 49 47 CE DB 'SIG','N' OR CLAST 0A47' 099B' DW NUMGT-1 0A49' 04 DB 4 0A4A' SIGN: 0A4A' 0A4C' DW $+2 RSTPULL 0A4C' DF + RST 018H 0A4D' CB 12 RL D 0A4F' 1E 2D LD E,'-' 0A51' 38 0C JR C,RHOLD ;BEI BEDARF '-' SPEICHERN 0A53' FD E9 JP (IY) ;================================================================ 0A55' 48 4F 4C C4 DB 'HOL','D' OR CLAST 0A59' 0A1C' DW CLS-1 0A5B' 04 DB 4 0A5C' HOLD: 0A5C' 0A5E' DW $+2 RSTPULL 0A5E' DF + RST 018H 0A5F' RHOLD: 0A5F' 2A 3C1A LD HL,(HLD) 0A62' 2D DEC L 0A63' 28 04 JR Z,HOLDQUIT ;PUFFER VOLL ? 0A65' 22 3C1A LD (HLD),HL 0A68' 73 LD (HL),E ;ZEICHEN SPEICHERN 0A69' HOLDQUIT: 0A69' FD E9 JP (IY) ;================================================================ 0A6B' 53 50 41 43 DB 'SPAC','E' OR CLAST 0A6F' C5 0A70' 0A5B' DW HOLD-1 0A72' 05 DB 5 0A73' SPACE: 0A73' 0A75' DW $+2 0A75' 3E 20 LD A,' ' RSTEMIT 0A77' CF + RST 008H 0A78' SPACEQUIT: 0A78' FD E9 JP (IY) ;================================================================ 0A7A' 53 50 41 43 DB 'SPACE','S' OR CLAST 0A7E' 45 D3 0A80' 0A72' DW SPACE-1 0A82' 06 DB 6 0A83' SPACES: MACRO-80 3.44 09-Dec-81 PAGE 1-39 0A83' 0A85' DW $+2 RSTPULL 0A85' DF + RST 018H 0A86' SPCLOOP: 0A86' 1B DEC DE 0A87' CB 7A BIT 7,D 0A89' 20 ED JR NZ,SPACEQUIT ;ALLE AUSGEGEBEN ? 0A8B' 3E 20 LD A,' ' RSTEMIT 0A8D' CF + RST 008H 0A8E' 18 F6 JR SPCLOOP ;================================================================ 0A90' 43 D2 DB 'C','R' OR CLAST 0A92' 0A82' DW SPACES-1 0A94' 02 DB 2 0A95' CR: 0A95' 0A97' DW $+2 0A97' 3E 0D LD A,CCR RSTEMIT 0A99' CF + RST 008H 0A9A' FD E9 JP (IY) ;================================================================ 0A9C' 45 4D 49 D4 DB 'EMI','T' OR CLAST 0AA0' 0A94' DW CR-1 0AA2' 04 DB 4 0AA3' EMIT: 0AA3' 0AA5' DW $+2 RSTPULL 0AA5' DF + RST 018H 0AA6' 7B LD A,E RSTEMIT 0AA7' CF + RST 008H 0AA8' FD E9 JP (IY) ;================================================================ 0AAA' 46 AE DB 'F','.' OR CLAST 0AAC' 0AA2' DW EMIT-1 0AAE' 02 DB 2 0AAF' FPNT: 0AAF' 0AB1' DW $+2 0AB1' 2A 3C3B LD HL,(SPARE) 0AB4' 2B DEC HL 0AB5' CB 7E BIT 7,(HL) 0AB7' CB BE RES 7,(HL) 0AB9' 28 03 JR Z,FPGOON1 0ABB' 3E 2D LD A,'-' RSTEMIT ;NEGATIVES VORZEICHEN AUSGEBEN 0ABD' CF + RST 008H 0ABE' FPGOON1: 0ABE' 1E 00 LD E,0 ;BISHER KEIN EXPONENT 0AC0' 7E LD A,(HL) 0AC1' 3D DEC A MACRO-80 3.44 09-Dec-81 PAGE 1-40 0AC2' FE 49 CP FEOFFS+9 0AC4' 30 04 JR NC,FPGOON2 0AC6' FE 3C CP FEOFFS-4 0AC8' 30 04 JR NC,FPGOON3 ;KEIN EXPONENT NOTWENDIG ? 0ACA' FPGOON2: 0ACA' 36 41 LD (HL),FEOFFS+1 0ACC' 3C INC A 0ACD' 5F LD E,A ;EXPONENT MERKEN 0ACE' FPGOON3: 0ACE' 3E 40 LD A,FEOFFS 0AD0' 96 SUB (HL) 0AD1' 38 09 JR C,FPMLOOP ;EXPONENT NEGATIV ? 0AD3' 47 LD B,A 0AD4' 04 INC B 0AD5' 3E 2E LD A,'.' 0AD7' FPH0: RSTEMIT 0AD7' CF + RST 008H 0AD8' 3E 30 LD A,'0' 0ADA' 10 FB DJNZ FPH0 ;FUEHRENDE NULLEN AUSGEBEN 0ADC' FPMLOOP: 0ADC' 3E 40 LD A,'@' 0ADE' BE CP (HL) 0ADF' 9F SBC A,A 0AE0' 2B DEC HL 0AE1' B6 OR (HL) 0AE2' 2B DEC HL 0AE3' B6 OR (HL) 0AE4' 2B DEC HL 0AE5' B6 OR (HL) 0AE6' 23 INC HL 0AE7' 23 INC HL 0AE8' 28 12 JR Z,FP0 ;ZAHL = 0 ? 0AEA' AF XOR A 0AEB' CD 0732' CALL DECSTORE 0AEE' C6 30 ADD A,'0' RSTEMIT ;NAECHSTE ZIFFER AUSGEBEN 0AF0' CF + RST 008H 0AF1' 23 INC HL 0AF2' 7E LD A,(HL) 0AF3' FE 40 CP FEOFFS 0AF5' 20 E5 JR NZ,FPMLOOP ;ZAHL < 0.1 ODER ZAHL >=1.0 ? 0AF7' 3E 2E LD A,'.' RSTEMIT 0AF9' CF + RST 008H 0AFA' 18 E0 JR FPMLOOP ;DEZIMALPUNKT AUSGEBEN 0AFC' FP0: 0AFC' 7B LD A,E 0AFD' A7 AND A 0AFE' 20 05 JR NZ,FPEXP ;EXPONENT AUSZUGEBEN ? 0B00' 3E 20 LD A,' ' RSTEMIT MACRO-80 3.44 09-Dec-81 PAGE 1-41 0B02' CF + RST 008H 0B03' 18 0B JR FPQUIT 0B05' FPEXP: 0B05' D6 41 SUB FEOFFS+1 0B07' 6F LD L,A 0B08' 9F SBC A,A 0B09' 67 LD H,A 0B0A' 3E 45 LD A,'E' RSTEMIT 0B0C' CF + RST 008H 0B0D' CD 180E' CALL PNTHL ;EXPONENT AUSGEBEN 0B10' FPQUIT: RSTPULL 0B10' DF + RST 018H RSTPULL 0B11' DF + RST 018H 0B12' FD E9 JP (IY) ;================================================================ 0B14' 41 D4 DB 'A','T' OR CLAST 0B16' 0AAE' DW FPNT-1 0B18' 02 DB 2 0B19' ATPOS: 0B19' 0B1B' DW $+2 RSTPULL ;SPALTE 0B1B' DF + RST 018H 0B1C' CD 084E' CALL PULLBC ;ZEILE 0B1F' 79 LD A,C 0B20' CD 0B28' CALL CATPOS 0B23' 22 3C1C LD (SCRPOS),HL 0B26' FD E9 JP (IY) 0B28' CATPOS: 0B28' C6 20 ADD A,32 0B2A' 6F LD L,A 0B2B' 26 01 LD H,1 ;SCREEN / 32 0B2D' 29 ADD HL,HL 0B2E' 29 ADD HL,HL 0B2F' 29 ADD HL,HL 0B30' 29 ADD HL,HL 0B31' 29 ADD HL,HL ;SCREEN + ZEILE 0B32' 16 00 LD D,0 0B34' 7B LD A,E 0B35' E6 1F AND 1FH 0B37' 5F LD E,A 0B38' 19 ADD HL,DE ;SCREEN + ZEILE + SPALTE 0B39' ED 5B 3C24 LD DE,(LHALF) 0B3D' ED 52 SBC HL,DE 0B3F' 19 ADD HL,DE 0B40' D8 RET C ;NICHT HINTER AUSGABE-FELD ? RSTERR ERRAT 0B41' E7 + RST 020H 0B42' 09 + DB ERRAT ;================================================================ MACRO-80 3.44 09-Dec-81 PAGE 1-42 0B43' 50 4C 4F D4 DB 'PLO','T' OR CLAST 0B47' 0B18' DW ATPOS-1 0B49' 04 DB 4 0B4A' PLOT: 0B4A' 0B4C' DW $+2 0B4C' CD 084E' CALL PULLBC ;0/1/2/3 = RES/SET/NOP/XOR RSTPULL ;Y-KOORDINATE 0B4F' DF + RST 018H 0B50' DD 73 30 LD (IX+YCOORD-MEMBEG),E 0B53' CB 3B SRL E 0B55' CB 11 RL C ;LSB-Y HOLEN 0B57' 3E 16 LD A,22 0B59' 93 SUB E ;Y-KOORDINATE ALS ZEILENNUMMER RSTPULL ;X-KOORDINATE 0B5A' DF + RST 018H 0B5B' DD 73 2F LD (IX+XCOORD-MEMBEG),E 0B5E' CB 3B SRL E 0B60' CB 11 RL C ;LSB-X HOLEN 0B62' CD 0B28' CALL CATPOS ;ZEIGER IN BILDSCHIRM 0B65' 7E LD A,(HL) ;ALTES ZEICHEN HOLEN 0B66' E6 78 AND 78H 0B68' FE 10 CP 10H 0B6A' 7E LD A,(HL) 0B6B' 28 02 JR Z,PLGOON ;BEREITS GRAFIK-ZEICHEN ? 0B6D' 3E 10 LD A,10H ;LEERES GRAFIK-ZEICHEN 0B6F' PLGOON: 0B6F' 5F LD E,A ;AUSGANGSCODE MERKEN 0B70' 16 87 LD D,87H ;MASKE SETZEN 0B72' 79 LD A,C 0B73' E6 03 AND 3 0B75' 47 LD B,A 0B76' 28 07 JR Z,PLX0Y0 ;X=0 UND Y=0 ? 0B78' 2F CPL 0B79' C6 02 ADD A,2 0B7B' CE 03 ADC A,3 0B7D' 57 LD D,A 0B7E' 43 LD B,E ;BITMASKEN FUER X<>0 UND Y<>0 0B7F' PLX0Y0: 0B7F' 79 LD A,C 0B80' 0F RRCA 0B81' 0F RRCA 0B82' 0F RRCA 0B83' 9F SBC A,A ;LOESCHEN/SETZEN MASKE 0B84' CB 59 BIT 3,C 0B86' 20 04 JR NZ,PLXOR ;NOP/XOR ? 0B88' AB XOR E 0B89' 07 RLCA 0B8A' 9F SBC A,A MACRO-80 3.44 09-Dec-81 PAGE 1-43 0B8B' A8 XOR B ;LOESCHEN/SETZEN VORBEREITEN 0B8C' PLXOR: 0B8C' A2 AND D 0B8D' AB XOR E 0B8E' 77 LD (HL),A ;NEUEN CODE SPEICHERN 0B8F' FD E9 JP (IY) ;================================================================ 0B91' 42 45 45 D0 DB 'BEE','P' OR CLAST 0B95' 0B49' DW PLOT-1 0B97' 04 DB 4 0B98' BEEP: 0B98' 0EC3' DW DOCOL 0B9A' 0912' 104B' DW OVER,GETBYTE 0B9E' 7D DB 125 0B9F' 0885' 0D7A' DW SWAP,MULDIV ;WERT ANPASSEN 0BA3' 1A0E' DW SEMICODE RSTPULL 0BA5' DF + RST 018H 0BA6' CD 084E' CALL PULLBC 0BA9' 21 00F9 LD HL,250-1 0BAC' 09 ADD HL,BC 0BAD' 2C INC L ;(??? RUNDUNG) 0BAE' F3 DI 0BAF' BLOOP: 0BAF' 3E 7F LD A,7FH 0BB1' DB FE IN A,(IO) 0BB3' 0F RRCA 0BB4' 30 11 JR NC,BDBREAK ;UNTERBROCHEN ? 0BB6' CD 0BC9' CALL BEEPDELAY 0BB9' 1B DEC DE 0BBA' 7A LD A,D 0BBB' D3 FE OUT (IO),A 0BBD' CD 0BC9' CALL BEEPDELAY 0BC0' B3 OR E 0BC1' C2 0BAF' JP NZ,BLOOP ;ZEIT NOCH NICHT UM ? 0BC4' FB EI 0BC5' FD E9 JP (IY) 0BC7' BDBREAK: RSTERR ERRBRK 0BC7' E7 + RST 020H 0BC8' 03 + DB ERRBRK 0BC9' BEEPDELAY: 0BC9' 45 LD B,L 0BCA' 4C LD C,H 0BCB' BDLOOP: 0BCB' 10 FE DJNZ BDLOOP 0BCD' 05 DEC B 0BCE' 0D DEC C 0BCF' C2 0BCB' JP NZ,BDLOOP ;ETWAS WARTEN... 0BD2' C9 RET ;================================================================ 0BD3' 49 4E 4B 45 DB 'INKE','Y' OR CLAST 0BD7' D9 MACRO-80 3.44 09-Dec-81 PAGE 1-44 0BD8' 0B97' DW BEEP-1 0BDA' 05 DB 5 0BDB' INKEY: 0BDB' 0BDD' DW $+2 0BDD' CD 0336' CALL KEYGET 0BE0' 5F LD E,A 0BE1' 16 00 LD D,0 RSTPUSH 0BE3' D7 + RST 010H 0BE4' FD E9 JP (IY) ;================================================================ 0BE6' 49 CE DB 'I','N' OR CLAST 0BE8' 0BDA' DW INKEY-1 0BEA' 02 DB 2 0BEB' IN: 0BEB' 0BED' DW $+2 0BED' CD 084E' CALL PULLBC 0BF0' 16 00 LD D,0 0BF2' ED 58 IN E,(C) RSTPUSH 0BF4' D7 + RST 010H 0BF5' FD E9 JP (IY) ;================================================================ 0BF7' 4F 55 D4 DB 'OU','T' OR CLAST 0BFA' 0BEA' DW IN-1 0BFC' 03 DB 3 0BFD' OUT: 0BFD' 0BFF' DW $+2 0BFF' CD 084E' CALL PULLBC RSTPULL 0C02' DF + RST 018H 0C03' ED 59 OUT (C),E 0C05' FD E9 JP (IY) ;================================================================ 0C07' 41 42 D3 DB 'AB','S' OR CLAST 0C0A' 0BFC' DW OUT-1 0C0C' 03 DB 3 0C0D' ABS: 0C0D' 0EC3' DW DOCOL 0C0F' 086B' 0D94' DW DUP,IFN0NEG 0C13' 04B6' DW SEMIS ;================================================================ 0C15' 30 BD DB '0','=' OR CLAST 0C17' 0C0C' DW ABS-1 0C19' 02 DB 2 0C1A' ZEROEQ: 0C1A' 0C1C' DW $+2 RSTPULL 0C1C' DF + RST 018H 0C1D' 7A LD A,D 0C1E' B3 OR E 0C1F' FE 01 CP 1 ;C, WENN A=0 MACRO-80 3.44 09-Dec-81 PAGE 1-45 0C21' CMPPUSH: 0C21' 3E 00 LD A,0 0C23' 57 LD D,A 0C24' 17 RLA 0C25' 5F LD E,A RSTPUSH ;WENN C, WERT = 1, SONST 0 0C26' D7 + RST 010H 0C27' FD E9 JP (IY) ;================================================================ 0C29' 30 BC DB '0','<' OR CLAST 0C2B' 0C19' DW ZEROEQ-1 0C2D' 02 DB 2 0C2E' ZEROLT: 0C2E' 0C30' DW $+2 RSTPULL 0C30' DF + RST 018H 0C31' CB 12 RL D ;VORZEICHEN HOLEN 0C33' 18 EC JR CMPPUSH ;================================================================ 0C35' 30 BE DB '0','>' OR CLAST 0C37' 0C2D' DW ZEROLT-1 0C39' 02 DB 2 0C3A' ZEROGT: 0C3A' 0C3C' DW $+2 RSTPULL 0C3C' DF + RST 018H 0C3D' 7A LD A,D 0C3E' B3 OR E 0C3F' 28 E0 JR Z,CMPPUSH ;= 0 ? 0C41' CB 12 RL D 0C43' 3F CCF 0C44' 18 DB JR CMPPUSH ;INVERTIERTES VORZEICHEN HOLEN ;================================================================ 0C46' BD DB '=' OR CLAST 0C47' 0C39' DW ZEROGT-1 0C49' 01 DB 1 0C4A' EQ: 0C4A' 0EC3' DW DOCOL 0C4C' 0DE1' 0C1A' DW MINUS,ZEROEQ 0C50' 04B6' DW SEMIS ;================================================================ 0C52' BE DB '>' OR CLAST 0C53' 0C49' DW EQ-1 0C55' 01 DB 1 0C56' GT: 0C56' 0C58' DW $+2 RSTPULL 0C58' DF + RST 018H 0C59' D5 PUSH DE RSTPULL 0C5A' DF + RST 018H 0C5B' E1 POP HL 0C5C' CD 0C99' CALL GREATER MACRO-80 3.44 09-Dec-81 PAGE 1-46 0C5F' 18 C0 JR CMPPUSH ;================================================================ 0C61' BC DB '<' OR CLAST 0C62' 0C55' DW GT-1 0C64' 01 DB 1 0C65' LT: 0C65' 0EC3' DW DOCOL 0C67' 0885' 0C56' DW SWAP,GT 0C6B' 04B6' DW SEMIS ;================================================================ 0C6D' 55 BC DB 'U','<' OR CLAST 0C6F' 0C64' DW LT-1 0C71' 02 DB 2 0C72' ULT: 0C72' 0C74' DW $+2 0C74' CD 084E' CALL PULLBC 0C77' UCMP: RSTPULL 0C77' DF + RST 018H 0C78' EB EX DE,HL 0C79' A7 AND A 0C7A' ED 42 SBC HL,BC ;C = (BC > HL) 0C7C' 18 A3 JR CMPPUSH ;================================================================ 0C7E' 44 BC DB 'D','<' OR CLAST 0C80' 0C71' DW ULT-1 0C82' 02 DB 2 0C83' DLT: 0C83' 0C85' DW $+2 RSTPULL 0C85' DF + RST 018H 0C86' D5 PUSH DE 0C87' CD 084E' CALL PULLBC RSTPULL 0C8A' DF + RST 018H 0C8B' E1 POP HL 0C8C' A7 AND A 0C8D' ED 52 SBC HL,DE 0C8F' 28 E6 JR Z,UCMP ;HOEHERE 16 BIT GLEICH ? 0C91' 19 ADD HL,DE 0C92' EB EX DE,HL 0C93' CD 0C99' CALL GREATER ;NUR HOEHERE 16 BIT VERGLEICHEN RSTPULL 0C96' DF + RST 018H 0C97' 18 88 JR CMPPUSH ;================================================================ 0C99' GREATER: 0C99' 7C LD A,H 0C9A' AA XOR D 0C9B' FA 0CA0' JP M,GRTRQUIT ;VORZEICHEN UNGLEICH ? 0C9E' ED 52 SBC HL,DE 0CA0' GRTRQUIT: MACRO-80 3.44 09-Dec-81 PAGE 1-47 0CA0' CB 14 RL H ;VORZEICHEN IN C 0CA2' C9 RET ;================================================================ 0CA3' 55 AA DB 'U','*' OR CLAST 0CA5' 0C82' DW DLT-1 0CA7' 02 DB 2 0CA8' UMUL: 0CA8' 0CAA' DW $+2 RSTPULL 0CAA' DF + RST 018H 0CAB' CD 084E' CALL PULLBC 0CAE' 21 0000 LD HL,0 0CB1' 3E 10 LD A,16 ;BITZAEHLER SETZEN 0CB3' UMULLOOP: 0CB3' 29 ADD HL,HL 0CB4' EB EX DE,HL 0CB5' ED 6A ADC HL,HL 0CB7' EB EX DE,HL 0CB8' 30 04 JR NC,UMULNEXT ;MULTIPLIKATOR-BIT = 0 ? 0CBA' 09 ADD HL,BC 0CBB' 30 01 JR NC,UMULNEXT ;KEIN UEBERTRAG ? 0CBD' 13 INC DE 0CBE' UMULNEXT: 0CBE' 3D DEC A 0CBF' 20 F2 JR NZ,UMULLOOP ;NOCH NICHT ALLE BITS ? 0CC1' EB EX DE,HL 0CC2' 18 2F JR PUSHDEHL ;================================================================ 0CC4' DIV32BY16: 0CC4' 0CC6' DW $+2 RSTPULL ;DIVISOR 0CC6' DF + RST 018H 0CC7' D9 EXX RSTPULL ;DIVIDEND H 0CC8' DF + RST 018H 0CC9' D5 PUSH DE RSTPULL ;DIVIDEND L 0CCA' DF + RST 018H 0CCB' E1 POP HL 0CCC' 7C LD A,H 0CCD' B5 OR L 0CCE' 3E 21 LD A,33 ;NORMALER BITZAEHLER 0CD0' 20 03 JR NZ,D32GOON ;DIVIDEND > 65535 ? 0CD2' EB EX DE,HL 0CD3' 3E 11 LD A,17 ;BERECHNUNG ABKUERZEN 0CD5' D32GOON: 0CD5' D9 EXX 0CD6' 47 LD B,A 0CD7' AF XOR A 0CD8' 67 LD H,A 0CD9' 6F LD L,A 0CDA' 4F LD C,A ;BERECHNUNG VORBEREITEN 0CDB' D32LOOP: MACRO-80 3.44 09-Dec-81 PAGE 1-48 0CDB' ED 6A ADC HL,HL 0CDD' 9F SBC A,A 0CDE' A7 AND A 0CDF' ED 52 SBC HL,DE ;TESTWEISE SUBTRAHIEREN 0CE1' 99 SBC A,C 0CE2' 30 01 JR NC,D32NEXT 0CE4' 19 ADD HL,DE ;SUBTRAKTION ZURUECKNEHMEN 0CE5' D32NEXT: 0CE5' 3F CCF 0CE6' D9 EXX 0CE7' EB EX DE,HL 0CE8' ED 6A ADC HL,HL 0CEA' EB EX DE,HL 0CEB' ED 6A ADC HL,HL 0CED' D9 EXX 0CEE' 10 EB DJNZ D32LOOP ;NOCH NICHT ALLE BITS ? 0CF0' EB EX DE,HL RSTPUSH ;REST SPEICHERN 0CF1' D7 + RST 010H 0CF2' D9 EXX ;QUOTIENT HOLEN 0CF3' PUSHDEHL: 0CF3' E5 PUSH HL RSTPUSH 0CF4' D7 + RST 010H 0CF5' D1 POP DE RSTPUSH 0CF6' D7 + RST 010H 0CF7' FD E9 JP (IY) ;================================================================ 0CF9' 2F 4D 4F C4 DB '/MO','D' OR CLAST 0CFD' 0CA7' DW UMUL-1 0CFF' 04 DB 4 0D00' DIVMOD: 0D00' 0EC3' DW DOCOL 0D02' 0885' 08D2' DW SWAP,GTR,I,ABS ;DIVIDEND VORBEREITEN 0D06' 12E9' 0C0D' 0D0A' 104B' DW GETBYTE 0D0C' 00 DB 0 0D0D' DIVMOD2: 0D0D' 08FF' 086B' DW ROT,DUP,I 0D11' 12E9' 0D13' 0E60' DW LXOR ;VORZEICHEN BERECHNEN 0D15' 08D2' 0C0D' DW GTR,ABS ;DIVISOR VORBEREITEN 0D19' 0D8C' DW UDIVMOD 0D1B' 08DF' 0D94' DW RGT,IFN0NEG,SWAP ;VORZEICHEN QUOTIENT 0D1F' 0885' 0D21' 08DF' 0D94' DW RGT,IFN0NEG,SWAP ;VORZEICHEN REST 0D25' 0885' 0D27' 04B6' DW SEMIS ;================================================================ 0D29' 2A 2F 4D 4F DB '*/MO','D' OR CLAST 0D2D' C4 0D2E' 0CFF' DW DIVMOD-1 0D30' 05 DB 5 0D31' MULDIVMOD: MACRO-80 3.44 09-Dec-81 PAGE 1-49 0D31' 0EC3' DW DOCOL 0D33' 08FF' 08D2' DW ROT,GTR,I,ABS ;FAKTOR 1 VORBEREITEN 0D37' 12E9' 0C0D' 0D3B' 08FF' 086B' DW ROT,DUP,RGT,LXOR ;VORZEICHEN BERECHNEN 0D3F' 08DF' 0E60' 0D43' 08D2' 0C0D' DW GTR,ABS ;FAKTOR 2 VORBEREITEN 0D47' 0CA8' DW UMUL 0D49' 1276' FFC1 DW DOREPEAT,DIVMOD2-$-1 ;================================================================ 0D4D' AF DB '/' OR CLAST 0D4E' 0D30' DW MULDIVMOD-1 0D50' 01 DB 1 0D51' DIV: 0D51' 0EC3' DW DOCOL 0D53' 0D00' DW DIVMOD 0D55' 0885' 0879' DW SWAP,DROP ;REST LOESCHEN 0D59' 04B6' DW SEMIS ;================================================================ 0D5B' 4D 4F C4 DB 'MO','D' OR CLAST 0D5E' 0D50' DW DIV-1 0D60' 03 DB 3 0D61' MOD: 0D61' 0EC3' DW DOCOL 0D63' 0D00' DW DIVMOD 0D65' 0879' DW DROP ;QUOTIENT LOESCHEN 0D67' 04B6' DW SEMIS ;================================================================ 0D69' AA DB '*' OR CLAST 0D6A' 0D60' DW MOD-1 0D6C' 01 DB 1 0D6D' MUL: 0D6D' 0EC3' DW DOCOL 0D6F' 0CA8' 0879' DW UMUL,DROP ;OBERE 16-BIT LOESCHEN 0D73' 04B6' DW SEMIS ;================================================================ 0D75' 2A AF DB '*','/' OR CLAST 0D77' 0D6C' DW MUL-1 0D79' 02 DB 2 0D7A' MULDIV: 0D7A' 0EC3' DW DOCOL 0D7C' 0D31' DW MULDIVMOD ;*/MOD 0D7E' 0885' 0879' DW SWAP,DROP ;REST LOESCHEN 0D82' 04B6' DW SEMIS ;================================================================ 0D84' 55 2F 4D 4F DB 'U/MO','D' OR CLAST 0D88' C4 0D89' 0D79' DW MULDIV-1 0D8B' 05 DB 5 0D8C' UDIVMOD: 0D8C' 0EC3' DW DOCOL 0D8E' 0CC4' 0879' DW DIV32BY16,DROP 0D92' 04B6' DW SEMIS ;================================================================ 0D94' IFN0NEG: 0D94' 0EC3' DW DOCOL 0D96' 0C2E' 1283' DW ZEROLT,DOIF,I0NEND-$-1 MACRO-80 3.44 09-Dec-81 PAGE 1-50 0D9A' 0003 0D9C' 0DA9' DW NEGATE ;VORZEICHEN WIE TOS 0D9E' I0NEND: 0D9E' 04B6' DW SEMIS ;================================================================ 0DA0' 4E 45 47 41 DB 'NEGAT','E' OR CLAST 0DA4' 54 C5 0DA6' 0D8B' DW UDIVMOD-1 0DA8' 06 DB 6 0DA9' NEGATE: 0DA9' 0DAB' DW $+2 0DAB' 01 0002 LD BC,2 ;2 BYTES 0DAE' 18 0F JR DONEGATE ;================================================================ 0DB0' 44 4E 45 47 DB 'DNEGAT','E' OR CLAST 0DB4' 41 54 C5 0DB7' 0DA8' DW NEGATE-1 0DB9' 07 DB 7 0DBA' DNEGATE: 0DBA' 0DBC' DW $+2 0DBC' 01 0004 LD BC,4 ;4 BYTES 0DBF' DONEGATE: 0DBF' 2A 3C3B LD HL,(SPARE) 0DC2' A7 AND A 0DC3' ED 42 SBC HL,BC ;ZEIGER AUF ZAHL IM WERTESTACK 0DC5' DNLOOP: 0DC5' 78 LD A,B ;0 LADEN, OHNE C ZU LOESCHEN 0DC6' 9E SBC A,(HL) 0DC7' 77 LD (HL),A ;BYTE NEGIEREN 0DC8' 23 INC HL 0DC9' 0D DEC C 0DCA' 20 F9 JR NZ,DNLOOP ;NOCH NICHT ALLE BYTES ? 0DCC' FD E9 JP (IY) ;================================================================ 0DCE' AB DB '+' OR CLAST 0DCF' 0DB9' DW DNEGATE-1 0DD1' 01 DB 1 0DD2' PLUS: 0DD2' 0DD4' DW $+2 RSTPULL 0DD4' DF + RST 018H 0DD5' D5 PUSH DE RSTPULL 0DD6' DF + RST 018H 0DD7' E1 POP HL 0DD8' 19 ADD HL,DE 0DD9' EB EX DE,HL RSTPUSH 0DDA' D7 + RST 010H 0DDB' FD E9 JP (IY) ;================================================================ 0DDD' AD DB '-' OR CLAST 0DDE' 0DD1' DW PLUS-1 MACRO-80 3.44 09-Dec-81 PAGE 1-51 0DE0' 01 DB 1 0DE1' MINUS: 0DE1' 0EC3' DW DOCOL 0DE3' 0DA9' 0DD2' DW NEGATE,PLUS 0DE7' 04B6' DW SEMIS ;================================================================ 0DE9' 44 AB DB 'D','+' OR CLAST 0DEB' 0DE0' DW MINUS-1 0DED' 02 DB 2 0DEE' DPLUS: 0DEE' 0DF0' DW $+2 RSTPULL 0DF0' DF + RST 018H 0DF1' D5 PUSH DE 0DF2' CD 084E' CALL PULLBC RSTPULL 0DF5' DF + RST 018H 0DF6' D5 PUSH DE RSTPULL 0DF7' DF + RST 018H 0DF8' EB EX DE,HL 0DF9' 09 ADD HL,BC 0DFA' EB EX DE,HL RSTPUSH 0DFB' D7 + RST 010H 0DFC' C1 POP BC 0DFD' E1 POP HL 0DFE' ED 4A ADC HL,BC 0E00' EB EX DE,HL RSTPUSH 0E01' D7 + RST 010H 0E02' FD E9 JP (IY) ;================================================================ 0E04' 31 AB DB '1','+' OR CLAST 0E06' 0DED' DW DPLUS-1 0E08' 02 DB 2 0E09' ONEPLUS: 0E09' 0E0B' DW $+2 RSTPULL 0E0B' DF + RST 018H 0E0C' 18 09 JR XPLUS ;================================================================ 0E0E' 32 AB DB '2','+' OR CLAST 0E10' 0E08' DW ONEPLUS-1 0E12' 02 DB 2 0E13' TWOPLUS: 0E13' 0E15' DW $+2 RSTPULL 0E15' DF + RST 018H 0E16' 13 INC DE 0E17' XPLUS: 0E17' 13 INC DE 0E18' 18 14 JR XPLUSMINUS MACRO-80 3.44 09-Dec-81 PAGE 1-52 ;================================================================ 0E1A' 31 AD DB '1','-' OR CLAST 0E1C' 0E12' DW TWOPLUS-1 0E1E' 02 DB 2 0E1F' ONEMINUS: 0E1F' 0E21' DW $+2 RSTPULL 0E21' DF + RST 018H 0E22' 18 09 JR XMINUS ;================================================================ 0E24' 32 AD DB '2','-' OR CLAST 0E26' 0E1E' DW ONEMINUS-1 0E28' 02 DB 2 0E29' TWOMINUS: 0E29' 0E2B' DW $+2 RSTPULL 0E2B' DF + RST 018H 0E2C' 1B DEC DE 0E2D' XMINUS: 0E2D' 1B DEC DE 0E2E' XPLUSMINUS: RSTPUSH 0E2E' D7 + RST 010H 0E2F' FD E9 JP (IY) ;================================================================ 0E31' 4F D2 DB 'O','R' OR CLAST 0E33' 0E28' DW TWOMINUS-1 0E35' 02 DB 2 0E36' LOR: 0E36' 0E38' DW $+2 RSTPULL 0E38' DF + RST 018H 0E39' CD 084E' CALL PULLBC 0E3C' 7B LD A,E 0E3D' B1 OR C 0E3E' 5F LD E,A 0E3F' 7A LD A,D 0E40' B0 OR B 0E41' 57 LD D,A RSTPUSH 0E42' D7 + RST 010H 0E43' FD E9 JP (IY) ;================================================================ 0E45' 41 4E C4 DB 'AN','D' OR CLAST 0E48' 0E35' DW LOR-1 0E4A' 03 DB 3 0E4B' LAND: 0E4B' 0E4D' DW $+2 RSTPULL 0E4D' DF + RST 018H 0E4E' CD 084E' CALL PULLBC 0E51' 7B LD A,E MACRO-80 3.44 09-Dec-81 PAGE 1-53 0E52' A1 AND C 0E53' 5F LD E,A 0E54' 7A LD A,D 0E55' A0 AND B 0E56' 57 LD D,A RSTPUSH 0E57' D7 + RST 010H 0E58' FD E9 JP (IY) ;================================================================ 0E5A' 58 4F D2 DB 'XO','R' OR CLAST 0E5D' 0E4A' DW LAND-1 0E5F' 03 DB 3 0E60' LXOR: 0E60' 0E62' DW $+2 RSTPULL 0E62' DF + RST 018H 0E63' CD 084E' CALL PULLBC 0E66' 7B LD A,E 0E67' A9 XOR C 0E68' 5F LD E,A 0E69' 7A LD A,D 0E6A' A8 XOR B 0E6B' 57 LD D,A RSTPUSH 0E6C' D7 + RST 010H 0E6D' FD E9 JP (IY) ;================================================================ 0E6F' 4D 41 D8 DB 'MA','X' OR CLAST 0E72' 0E5F' DW LXOR-1 0E74' 03 DB 3 0E75' MAX: 0E75' 0EC3' DW DOCOL 0E77' 0912' 0912' DW OVER,OVER,LT ;ZAHLEN VERGLEICHEN 0E7B' 0C65' 0E7D' 1271' 000F DW DOELSE,MINMAX-$-1 ;================================================================ 0E81' 4D 49 CE DB 'MI','N' OR CLAST 0E84' 0E74' DW MAX-1 0E86' 03 DB 3 0E87' MIN: 0E87' 0EC3' DW DOCOL 0E89' 0912' 0912' DW OVER,OVER,GT ;ZAHLEN VERGLEICHEN 0E8D' 0C56' 0E8F' MINMAX: 0E8F' 1283' 0003 DW DOIF,MINMAXEND-$-1 0E93' 0885' DW SWAP ;BEI BEDARF TAUSCHEN 0E95' MINMAXEND: 0E95' 0879' DW DROP ;FALSCHE ZAHL LOESCHEN 0E97' 04B6' DW SEMIS ;================================================================ 0E99' 44 45 43 49 DB 'DECIMA','L' OR CLAST 0E9D' 4D 41 CC 0EA0' 0E86' DW MIN-1 0EA2' 07 DB 7 0EA3' DECIMAL: MACRO-80 3.44 09-Dec-81 PAGE 1-54 0EA3' 0EA5' DW $+2 0EA5' DD 36 3F 0A LD (IX+VBASE-MEMBEG),10 0EA9' FD E9 JP (IY) ;================================================================ 0EAB' NCOLON: 0EAB' BA DB ':' OR CLAST 0EAC' 0EA2' DW DECIMAL-1 0EAE' 01 DB 1 0EAF' COLON: 0EAF' 1085' 0EC3' DW DODEFINER,DOCOL 0EB3' 104B' DW GETBYTE 0EB5' 0A DB 10 ;PRUEFWERT SETZEN 0EB6' 1A0E' DW SEMICODE 0EB8' 21 3C3E LD HL,FLAGS 0EBB' 7E LD A,(HL) 0EBC' F6 44 OR (1 SHL 6) OR (1 SHL 2) 0EBE' 77 LD (HL),A ;COMPILER EINSCHALTEN 0EBF' FD E9 JP (IY) ;================================================================ 0EC1' FFE9 DW NCOLON-$-1 0EC3' DOCOL: 0EC3' EB EX DE,HL ;AKTUELLEN ZEIGER FUER STACK 0EC4' C3 04BA' JP NEXTSUB ;================================================================ 0EC7' NCREATE: 0EC7' 43 52 45 41 DB 'CREAT','E' OR CLAST 0ECB' 54 C5 0ECD' 0EAE' DW COLON-1 0ECF' 06 DB 6 0ED0' CREATE: 0ED0' 0EC3' DW DOCOL 0ED2' 104B' DW GETBYTE 0ED4' 20 DB ' ' 0ED5' 05AB' 0EFB' DW WORD,CRHEADER ;HEADER VORBEREITEN 0ED9' 0688' 0F4E' DW ZERO,KOMMA 0EDD' 0480' 08B3' DW CURRENT,AT 0EE1' 086B' 08B3' DW DUP,AT,KOMMA ;VERKETTUNG BILDEN 0EE5' 0F4E' 0EE7' 0460' 0885' DW HERE,SWAP,EXCLAM ;ADRESSE MERKEN 0EEB' 08C1' 0EED' 0499' 0896' DW PAD,CAT,CKOMMA 0EF1' 0F5F' 0EF3' 1011' 0FEC' DW GETWORD,DOCREATE,KOMMA ;ERSTES WORT SPEICHERN 0EF7' 0F4E' 0EF9' 04B6' DW SEMIS ;================================================================ 0EFB' CRHEADER: 0EFB' 0EFD' DW $+2 0EFD' CD 0F2E' CALL LINKHERE RSTPULL 0F00' DF + RST 018H 0F01' 1A LD A,(DE) ;NAMENSLAENGE HOLEN MACRO-80 3.44 09-Dec-81 PAGE 1-55 0F02' 3D DEC A 0F03' FE 3F CP 03FH 0F05' 38 02 JR C,CHGOON ;NAME NICHT ZU LANG ? RSTERR ERRNAME 0F07' E7 + RST 020H 0F08' 06 + DB ERRNAME 0F09' CHGOON: 0F09' C6 08 ADD A,8 ;LINKS, LAENGENBYTE UND 1. WORT 0F0B' 4F LD C,A 0F0C' 06 00 LD B,0 0F0E' CD 0F8C' CALL MEMCHECK 0F11' 1A LD A,(DE) 0F12' 4F LD C,A 0F13' 2A 3C37 LD HL,(STKBOT) 0F16' D5 PUSH DE 0F17' CD 0F9E' CALL ALLOC ;SPEICHER RESERVIEREN 0F1A' D1 POP DE 0F1B' 1A LD A,(DE) 0F1C' 47 LD B,A ;ANZAHL ZEICHEN 0F1D' CHLOOP: 0F1D' 13 INC DE 0F1E' 1A LD A,(DE) 0F1F' CD 0807' CALL TOUPPER 0F22' 77 LD (HL),A 0F23' 23 INC HL 0F24' 10 F7 DJNZ CHLOOP ;NAMEN SPEICHERN 0F26' 22 3C39 LD (DICT),HL 0F29' 2B DEC HL 0F2A' CB FE SET 7,(HL) ;NAMENSENDE KENNZEICHNEN 0F2C' FD E9 JP (IY) ;================================================================ 0F2E' LINKHERE: 0F2E' DD CB 3E 56 BIT 2,(IX+FLAGS-MEMBEG) 0F32' 28 02 JR Z,LHGOON ;KEIN COMPILE-MODE ? RSTERR ERRMODE 0F34' E7 + RST 020H 0F35' 0C + DB ERRMODE 0F36' LHGOON: 0F36' 2A 3C37 LD HL,(STKBOT) 0F39' ED 5B 3C39 LD DE,(DICT) 0F3D' AF XOR A 0F3E' ED 52 SBC HL,DE 0F40' EB EX DE,HL 0F41' 73 LD (HL),E 0F42' 23 INC HL 0F43' 72 LD (HL),D ;LINK AUFBAUEN 0F44' 67 LD H,A 0F45' 6F LD L,A 0F46' 22 3C39 LD (DICT),HL 0F49' C9 RET MACRO-80 3.44 09-Dec-81 PAGE 1-56 ;================================================================ 0F4A' AC DB ',' OR CLAST 0F4B' 0ECF' DW CREATE-1 0F4D' 01 DB 1 0F4E' KOMMA: 0F4E' 0EC3' DW DOCOL 0F50' 0F83' 0460' DW ALLOT2,HERE,TWOMINUS,EXCLAM 0F54' 0E29' 08C1' 0F58' 04B6' DW SEMIS ;================================================================ 0F5A' 43 AC DB 'C',',' OR CLAST 0F5C' 0F4D' DW KOMMA-1 0F5E' 02 DB 2 0F5F' CKOMMA: 0F5F' 0EC3' DW DOCOL 0F61' 104B' DW GETBYTE 0F63' 01 DB 1 0F64' 0F76' 0460' DW ALLOT,HERE,ONEMINUS,CEXCLAM 0F68' 0E1F' 08A5' 0F6C' 04B6' DW SEMIS ;================================================================ 0F6E' 41 4C 4C 4F DB 'ALLO','T' OR CLAST 0F72' D4 0F73' 0F5E' DW CKOMMA-1 0F75' 05 DB 5 0F76' ALLOT: 0F76' 0F78' DW $+2 0F78' CD 084E' CALL PULLBC 0F7B' 2A 3C37 LD HL,(STKBOT) 0F7E' CD 0F9E' CALL ALLOC 0F81' FD E9 JP (IY) ;================================================================ 0F83' ALLOT2: 0F83' 0EC3' DW DOCOL 0F85' 104B' DW GETBYTE 0F87' 02 DB 2 0F88' 0F76' DW ALLOT 0F8A' 04B6' DW SEMIS ;================================================================ 0F8C' MEMCHECK: 0F8C' 21 001E LD HL,30 0F8F' MEMCHECK2: 0F8F' C5 PUSH BC 0F90' 09 ADD HL,BC 0F91' ED 4B 3C3B LD BC,(SPARE) 0F95' 09 ADD HL,BC ;NEUE ENDADRESSE 0F96' C1 POP BC 0F97' 38 03 JR C,MCERROR ;SPEICHER-UEBERLAUF ? 0F99' ED 72 SBC HL,SP 0F9B' D8 RET C ;KEINE KOLLISION MIT STACK ? 0F9C' MCERROR: RSTERR ERRMEM 0F9C' E7 + RST 020H 0F9D' 01 + DB ERRMEM ;================================================================ MACRO-80 3.44 09-Dec-81 PAGE 1-57 0F9E' ALLOC: 0F9E' EB EX DE,HL 0F9F' 21 0028 LD HL,40 0FA2' CD 0F8F' CALL MEMCHECK2 ;ETWAS WEITER PRUEFEN 0FA5' 2A 3C37 LD HL,(STKBOT) 0FA8' 09 ADD HL,BC 0FA9' 22 3C37 LD (STKBOT),HL 0FAC' 2A 3C3B LD HL,(SPARE) 0FAF' E5 PUSH HL 0FB0' 09 ADD HL,BC 0FB1' 22 3C3B LD (SPARE),HL ;ZEIGER WEITERSCHIEBEN 0FB4' E3 EX (SP),HL 0FB5' E5 PUSH HL 0FB6' A7 AND A 0FB7' ED 52 SBC HL,DE 0FB9' 44 LD B,H 0FBA' 4D LD C,L ;ABSTAND = ALTER SPARE - DE 0FBB' E1 POP HL 0FBC' D1 POP DE 0FBD' C8 RET Z ;NICHTS ZU VERSCHIEBEN ? 0FBE' 2B DEC HL 0FBF' 1B DEC DE 0FC0' ED B8 LDDR 0FC2' 23 INC HL ;PARAMETERSTACK VERSCHIEBEN 0FC3' C9 RET ;================================================================ 0FC4' NVARIABLE: 0FC4' 56 41 52 49 DB 'VARIABL','E' OR CLAST 0FC8' 41 42 4C C5 0FCC' 0F75' DW ALLOT-1 0FCE' 08 DB 8 0FCF' VARIABLE: 0FCF' 1085' 0FF0' DW DODEFINER,DOVARIABLE 0FD3' 0F4E' DW KOMMA 0FD5' 04B6' DW SEMIS ;================================================================ 0FD7' NCONSTANT: 0FD7' 43 4F 4E 53 DB 'CONSTAN','T' OR CLAST 0FDB' 54 41 4E D4 0FDF' 0FCE' DW VARIABLE-1 0FE1' 08 DB 8 0FE2' CONSTANT: 0FE2' 1085' 0FF5' DW DODEFINER,DOCONSTANT 0FE6' 0F4E' DW KOMMA 0FE8' 04B6' DW SEMIS ;================================================================ 0FEA' FEDC DW NCREATE-$-1 0FEC' DOCREATE: 0FEC' 18 02 JR DOVARIABLE ;================================================================ 0FEE' FFD5 DW NVARIABLE-$-1 0FF0' DOVARIABLE: RSTPUSH MACRO-80 3.44 09-Dec-81 PAGE 1-58 0FF0' D7 + RST 010H 0FF1' FD E9 JP (IY) ;================================================================ 0FF3' FFE3 DW NCONSTANT-$-1 0FF5' DOCONSTANT: 0FF5' EB EX DE,HL 0FF6' 5E LD E,(HL) 0FF7' 23 INC HL 0FF8' 56 LD D,(HL) RSTPUSH ;WERT AUF STACK 0FF9' D7 + RST 010H 0FFA' FD E9 JP (IY) ;================================================================ 0FFC' 4C 49 54 45 DB 'LITERA','L' OR CLAST 1000' 52 41 CC 1003' 0FE1' DW CONSTANT-1 1005' 47 DB 7 OR IMM 1006' LITERAL: 1006' 1108' 1011' DW DOCOMPILER,GETWORD 100A' 0F4E' DW KOMMA 100C' 04B6' DW SEMIS ;================================================================ 100E' 02 DB 2 100F' FFFF DW -1 1011' GETWORD: 1011' 1013' DW $+2 1013' 06 01 LD B,1 ;NUR EIN WORT 1015' GWLOOP: 1015' E1 POP HL 1016' 5E LD E,(HL) 1017' 23 INC HL 1018' 56 LD D,(HL) ;WORT HOLEN 1019' GWGOON: 1019' 23 INC HL 101A' E5 PUSH HL RSTPUSH ;WORT AUF STACK 101B' D7 + RST 010H 101C' 10 F7 DJNZ GWLOOP 101E' GWQUIT: 101E' FD E9 JP (IY) ;================================================================ 1020' NASCII: 1020' 41 53 43 49 DB 'ASCI','I' OR CLAST 1024' C9 1025' 1005' DW LITERAL-1 1027' 45 DB 5 OR IMM 1028' ASCII: 1028' 0EC3' DW DOCOL 102A' 104B' DW GETBYTE 102C' 20 DB ' ' 102D' 05AB' 0E09' DW WORD,ONEPLUS,CAT 1031' 0896' 1033' 1A0E' DW SEMICODE 1035' DD CB 3E 76 BIT 6,(IX+FLAGS-MEMBEG) MACRO-80 3.44 09-Dec-81 PAGE 1-59 1039' 28 E3 JR Z,GWQUIT ;COMPILER AUS ? 103B' CD 04B9' CALL NEXT 103E' 1011' 104B' DW GETWORD,GETBYTE,KOMMA 1042' 0F4E' 1044' 0F5F' DW CKOMMA 1046' 04B6' DW SEMIS ;================================================================ 1048' 01 DB 1 1049' FFD6 DW NASCII-$-1 104B' GETBYTE: 104B' 104D' DW $+2 104D' E1 POP HL 104E' 5E LD E,(HL) 104F' 16 00 LD D,0 1051' 06 01 LD B,1 1053' 18 C4 JR GWGOON ;================================================================ 1055' LITFLOAT: 1055' 1108' 1064' DW DOCOMPILER,GETFLOAT 1059' 0885' 0F4E' DW SWAP,KOMMA,KOMMA 105D' 0F4E' 105F' 04B6' DW SEMIS ;================================================================ 1061' 04 DB 4 1062' FFFF DW -1 1064' GETFLOAT: 1064' 1066' DW $+2 1066' 06 02 LD B,2 1068' 18 AB JR GWLOOP ;================================================================ 106A' NDEFINER: 106A' 44 45 46 49 DB 'DEFINE','R' OR CLAST 106E' 4E 45 D2 1071' 1027' DW ASCII-1 1073' 07 DB 7 1074' DEFINER: 1074' 1085' 1085' DW DODEFINER,DODEFINER 1078' 0460' 104B' DW HERE,GETBYTE 107C' 0C DB 12 107D' 0F83' DW ALLOT2 107F' 1276' FE34' DW DOREPEAT,0EB6H-$-1 ;================================================================ 1083' FFE6 DW NDEFINER-$-1 1085' DODEFINER: 1085' CD 0FF0' CALL DOVARIABLE 1088' 0ED0' DW CREATE ;HEADER ERZEUGEN 108A' 086B' 08B3' DW DUP,AT 108E' 0460' 0E29' DW HERE,TWOMINUS,EXCLAM ;VERKETTUNG BILDEN 1092' 08C1' 1094' 0E13' 109A' DW TWOPLUS,DROPGOON 1098' 04B6' DW SEMIS ;---------------------------------------------------------------- 109A' DROPGOON: MACRO-80 3.44 09-Dec-81 PAGE 1-60 109A' 109C' DW $+2 RSTPULL 109C' DF + RST 018H 109D' C3 0EC3' JP DOCOL ;================================================================ 10A0' 43 41 4C CC DB 'CAL','L' OR CLAST 10A4' 1073' DW DEFINER-1 10A6' 04 DB 4 10A7' CALL: 10A7' 10A9' DW $+2 RSTPULL ;ZIELADRESSE HOLEN 10A9' DF + RST 018H 10AA' EB EX DE,HL 10AB' E9 JP (HL) ;================================================================ 10AC' NDOESGT: 10AC' 44 4F 45 53 DB 'DOES','>' OR CLAST 10B0' BE 10B1' 10F4' DW COMPILER-1 10B3' 45 DB 5 OR IMM 10B4' DOESGT: 10B4' 1108' 10E8' DW DOCOMPILER,DODOESGT 10B8' 12D8' DW ASSERT 10BA' 0C DB 12 ;PRUEFWERT TESTEN 10BB' 10CD' DW DOESPATCH 10BD' 104B' DW GETBYTE 10BF' CD DB 0CDH 10C0' 0F5F' DW CKOMMA 10C2' 1011' 0FF0' DW GETWORD,DOVARIABLE,KOMMA;"CALL DOVARIABLE" 10C6' 0F4E' 10C8' 104B' DW GETBYTE 10CA' 0A DB 10 ;PRUEFWERT SETZEN 10CB' 04B6' DW SEMIS ;================================================================ 10CD' DOESPATCH: 10CD' 0EC3' DW DOCOL 10CF' 086B' 0E29' DW DUP,TWOMINUS,NFA 10D3' 15B5' 10D5' 0460' 0DE1' DW HERE,MINUS,ONEMINUS,KOMMA 10D9' 0E1F' 0F4E' 10DD' 0460' 0885' DW HERE,SWAP,EXCLAM ;VERKETTUNG KORRIGIEREN 10E1' 08C1' 10E3' 04B6' DW SEMIS ;================================================================ 10E5' 05 DB 5 10E6' FFC5 DW NDOESGT-$-1 10E8' DODOESGT: 10E8' 04B8' DW RSEMIS ;================================================================ 10EA' NCOMPILER: 10EA' 43 4F 4D 50 DB 'COMPILE','R' OR CLAST 10EE' 49 4C 45 D2 10F2' 10A6' DW CALL-1 10F4' 08 DB 8 MACRO-80 3.44 09-Dec-81 PAGE 1-61 10F5' COMPILER: 10F5' 1085' 1108' DW DODEFINER,DOCOMPILER 10F9' 1160' DW IMMEDIATE 10FB' 0460' DW HERE 10FD' 104B' DW GETBYTE 10FF' 0B DB 11 1100' 0F83' DW ALLOT2 1102' 1276' FDB1' DW DOREPEAT,0EB6H-$-1 ;================================================================ 1106' FFE3 DW NCOMPILER-$-1 1108' DOCOMPILER: 1108' DD CB 3E 76 BIT 6,(IX+FLAGS-MEMBEG) 110C' 20 02 JR NZ,DOCOMGOON ;COMPILER EINGESCHALTET ? RSTERR ERRIMM 110E' E7 + RST 020H 110F' 04 + DB ERRIMM 1110' DOCOMGOON: 1110' CD 0FF0' CALL DOVARIABLE 1113' 086B' 08B3' DW DUP,AT,KOMMA 1117' 0F4E' 1119' 1276' FF78' DW DOREPEAT,1094H-$-1 ;================================================================ 111D' NRUNSGT: 111D' 52 55 4E 53 DB 'RUNS','>' OR CLAST 1121' BE 1122' 10B3' DW DOESGT-1 1124' 45 DB 5 OR IMM 1125' RUNSGT: 1125' 1108' 1140' DW DOCOMPILER,DORUNSGT 1129' 12D8' DW ASSERT 112B' 0B DB 11 ;PRUEFWERT TESTEN 112C' 0885' 0F5F' DW SWAP,CKOMMA 1130' 10CD' DW DOESPATCH 1132' 1011' 1142' DW GETWORD,RUNSCORR,KOMMA 1136' 0F4E' 1138' 104B' DW GETBYTE 113A' 0A DB 10 ;PRUEFWERT SETZEN 113B' 04B6' DW SEMIS ;---------------------------------------------------------------- 113D' 05 DB 5 113E' FFDE DW NRUNSGT-$-1 1140' DORUNSGT: 1140' 04B8' DW RSEMIS ;---------------------------------------------------------------- 1142' RUNSCORR: 1142' E1 POP HL 1143' D5 PUSH DE 1144' EB EX DE,HL RSTPUSH 1145' D7 + RST 010H 1146' 42 LD B,D 1147' 4B LD C,E 1148' D1 POP DE 1149' D5 PUSH DE MACRO-80 3.44 09-Dec-81 PAGE 1-62 114A' 1B DEC DE 114B' 1B DEC DE 114C' CD 159E' CALL SKIPOFFS ;NAECHSTE FORTH-ADRESSE 114F' D1 POP DE 1150' C5 PUSH BC 1151' C3 0EC3' JP DOCOL ;================================================================ 1154' 49 4D 4D 45 DB 'IMMEDIAT','E' OR CLAST 1158' 44 49 41 54 115C' C5 115D' 1124' DW RUNSGT-1 115F' 09 DB 9 1160' IMMEDIATE: 1160' 0EC3' DW DOCOL 1162' 0480' 08B3' DW CURRENT,AT,AT 1166' 08B3' 1168' 1A0E' DW SEMICODE RSTPULL 116A' DF + RST 018H 116B' EB EX DE,HL 116C' CB F6 SET 6,(HL) ;IMMEDIATE-BIT SETZEN 116E' FD E9 JP (IY) ;================================================================ 1170' 56 4F 43 41 DB 'VOCABULAR','Y' OR CLAST 1174' 42 55 4C 41 1178' 52 D9 117A' 115F' DW IMMEDIATE-1 117C' 0A DB 10 117D' VOCABULARY: 117D' 1085' 11B5' DW DODEFINER,SETCONTEXT 1181' 0480' 08B3' DW CURRENT,AT 1185' 0E13' 0F4E' DW TWOPLUS,KOMMA 1189' 0688' 0F5F' DW ZERO,CKOMMA ;VERKETTUNG VORBEREITEN 118D' 0460' 1011' DW HERE,GETWORD,VOCLNK 1191' 3C35 1193' 086B' 08B3' DW DUP,AT,KOMMA,EXCLAM ;UMSCHALTUNG COMPILIEREN 1197' 0F4E' 08C1' 119B' 04B6' DW SEMIS ;================================================================ 119D' 44 45 46 49 DB 'DEFINITION','S' OR CLAST 11A1' 4E 49 54 49 11A5' 4F 4E D3 11A8' 117C' DW VOCABULARY-1 11AA' 0B DB 11 11AB' DEFINITIONS: 11AB' 11AD' DW $+2 11AD' 2A 3C33 LD HL,(VCONTEXT) 11B0' 22 3C31 LD (VCURRENT),HL 11B3' FD E9 JP (IY) ;---------------------------------------------------------------- 11B5' SETCONTEXT: 11B5' ED 53 3C33 LD (VCONTEXT),DE 11B9' FD E9 JP (IY) ;================================================================ 11BB' NIF: MACRO-80 3.44 09-Dec-81 PAGE 1-63 11BB' 49 C6 DB 'I','F' OR CLAST 11BD' 13E0' DW RSQRBR-1 11BF' 42 DB 2 OR IMM 11C0' IF: 11C0' 1108' 1283' DW DOCOMPILER,DOIF 11C4' 0460' 104B' DW HERE,GETBYTE 11C8' 02 DB 2 11C9' 0F83' DW ALLOT2 11CB' 04B6' DW SEMIS ;================================================================ 11CD' NWHILE: 11CD' 57 48 49 4C DB 'WHIL','E' OR CLAST 11D1' C5 11D2' 11BF' DW IF-1 11D4' 45 DB 5 OR IMM 11D5' WHILE: 11D5' 1108' 1288' DW DOCOMPILER,DOWHILE 11D9' 12D8' DW ASSERT 11DB' 01 DB 1 ;PRUEFWERT TESTEN 11DC' 0460' 104B' DW HERE,GETBYTE 11E0' 04 DB 4 11E1' 0F83' DW ALLOT2 11E3' 04B6' DW SEMIS ;================================================================ 11E5' NELSE: 11E5' 45 4C 53 C5 DB 'ELS','E' OR CLAST 11E9' 11D4' DW WHILE-1 11EB' 44 DB 4 OR IMM 11EC' ELSE: 11EC' 1108' 1271' DW DOCOMPILER,DOELSE 11F0' 12D8' DW ASSERT 11F2' 02 DB 2 ;PRUEFWERT TESTEN 11F3' 0F83' DW ALLOT2 11F5' 1225' DW DOFPATCH 11F7' 0460' 0E29' DW HERE,TWOMINUS 11FB' 104B' DW GETBYTE 11FD' 02 DB 2 ;PRUEFWERT SETZEN 11FE' 04B6' DW SEMIS ;================================================================ 1200' NTHEN: 1200' 54 48 45 CE DB 'THE','N' OR CLAST 1204' 11EB' DW ELSE-1 1206' 44 DB 4 OR IMM 1207' THEN: 1207' 1108' 12A4' DW DOCOMPILER,DOTHEN 120B' 12D8' DW ASSERT 120D' 02 DB 2 ;PRUEFWERT TESTEN 120E' 1225' DW DOFPATCH 1210' 04B6' DW SEMIS ;================================================================ 1212' NBEGIN: 1212' 42 45 47 49 DB 'BEGI','N' OR CLAST 1216' CE 1217' 1206' DW THEN-1 1219' 45 DB 5 OR IMM 121A' BEGIN: MACRO-80 3.44 09-Dec-81 PAGE 1-64 121A' 1108' 129F' DW DOCOMPILER,DOBEGIN 121E' 0460' DW HERE 1220' 104B' DW GETBYTE 1222' 01 DB 1 ;PRUEFWERT SETZEN 1223' 04B6' DW SEMIS ;================================================================ 1225' DOFPATCH: 1225' 0EC3' DW DOCOL 1227' 086B' 0460' DW DUP,HERE,SWAP,MINUS 122B' 0885' 0DE1' 122F' 0E1F' 0885' DW ONEMINUS,SWAP,EXCLAM ;SPRUNGADRESSE PATCHEN 1233' 08C1' 1235' 04B6' DW SEMIS ;================================================================ 1237' DORPATCH: 1237' 0EC3' DW DOCOL 1239' 0460' 0DE1' DW HERE,MINUS,ONEMINUS 123D' 0E1F' 123F' 0F4E' DW KOMMA ;SPRUNGADRESSE PATCHEN 1241' 04B6' DW SEMIS ;================================================================ 1243' NREPEAT: 1243' 52 45 50 45 DB 'REPEA','T' OR CLAST 1247' 41 D4 1249' 1219' DW BEGIN-1 124B' 46 DB 6 OR IMM 124C' REPEAT: 124C' 1108' 1276' DW DOCOMPILER,DOREPEAT 1250' 12D8' DW ASSERT 1252' 04 DB 4 ;PRUEFWERT TESTEN 1253' 0885' DW SWAP 1255' 1237' DW DORPATCH 1257' 1225' DW DOFPATCH 1259' 04B6' DW SEMIS ;================================================================ 125B' NUNTIL: 125B' 55 4E 54 49 DB 'UNTI','L' OR CLAST 125F' CC 1260' 124B' DW REPEAT-1 1262' 45 DB 5 OR IMM 1263' UNTIL: 1263' 1108' 128D' DW DOCOMPILER,DOUNTIL 1267' 12D8' DW ASSERT 1269' 01 DB 1 ;PRUEFWERT TESTEN 126A' 1237' DW DORPATCH 126C' 04B6' DW SEMIS ;================================================================ 126E' 02 DB 2 126F' FF75 DW NELSE-$-1 1271' DOELSE: 1271' 1278' DW FJUMP ;================================================================ 1273' 02 DB 2 1274' FFCE DW NREPEAT-$-1 1276' DOREPEAT: 1276' 1278' DW FJUMP MACRO-80 3.44 09-Dec-81 PAGE 1-65 ;================================================================ 1278' FJUMP: 1278' E1 POP HL 1279' 5E LD E,(HL) 127A' 23 INC HL 127B' 56 LD D,(HL) ;OFFSET HOLEN 127C' OFFSJUMP: 127C' 19 ADD HL,DE 127D' C3 04BA' JP NEXTSUB ;NEUEN FORTH-ZEIGER SETZEN ;================================================================ 1280' 02 DB 2 1281' FF39 DW NIF-$-1 1283' DOIF: 1283' 128F' DW IF0JUMP ;================================================================ 1285' 02 DB 2 1286' FF46 DW NWHILE-$-1 1288' DOWHILE: 1288' 128F' DW IF0JUMP ;================================================================ 128A' 02 DB 2 128B' FFCF DW NUNTIL-$-1 128D' DOUNTIL: 128D' 128F' DW IF0JUMP ;---------------------------------------------------------------- 128F' IF0JUMP: 128F' CD 084E' CALL PULLBC 1292' 78 LD A,B 1293' B1 OR C ;TEST AUF 0 1294' EQUJUMP: 1294' 28 E2 JR Z,FJUMP ;BEGINGUNG ERFUELLT ? 1296' E1 POP HL 1297' 23 INC HL 1298' 23 INC HL 1299' C3 04BA' JP NEXTSUB ;OFFSET UEBERSPRINGEN ;================================================================ 129C' 00 DB 0 129D' FF74 DW NBEGIN-$-1 129F' DOBEGIN: 129F' 04B9' DW NEXT ;================================================================ 12A1' 00 DB 0 12A2' FF5D DW NTHEN-$-1 12A4' DOTHEN: 12A4' 04B9' DW NEXT ;================================================================ 12A6' NDO: 12A6' 44 CF DB 'D','O' OR CLAST 12A8' 1262' DW UNTIL-1 12AA' 42 DB 2 OR IMM 12AB' DO: 12AB' 1108' 1323' DW DOCOMPILER,DODO 12AF' 0460' DW HERE 12B1' 104B' DW GETBYTE 12B3' 03 DB 3 ;PRUEFWERT SETZEN 12B4' 04B6' DW SEMIS MACRO-80 3.44 09-Dec-81 PAGE 1-66 ;================================================================ 12B6' NLOOP: 12B6' 4C 4F 4F D0 DB 'LOO','P' OR CLAST 12BA' 12AA' DW DO-1 12BC' 44 DB 4 OR IMM 12BD' LOOP: 12BD' 1108' 1332' DW DOCOMPILER,DOLOOP 12C1' LOOPGOON: 12C1' 12D8' DW ASSERT 12C3' 03 DB 3 ;PRUEFWERT TESTEN 12C4' 1237' DW DORPATCH 12C6' 04B6' DW SEMIS ;================================================================ 12C8' NPLUSLOOP: 12C8' 2B 4C 4F 4F DB '+LOO','P' OR CLAST 12CC' D0 12CD' 12BC' DW LOOP-1 12CF' 45 DB 5 OR IMM 12D0' PLUSLOOP: 12D0' 1108' 133C' DW DOCOMPILER,DOPLUSLOOP 12D4' 1276' FFEA DW DOREPEAT,LOOPGOON-$-1 ;================================================================ 12D8' ASSERT: 12D8' 12DA' DW $+2 RSTPULL 12DA' DF + RST 018H 12DB' E1 POP HL 12DC' 7E LD A,(HL) 12DD' 23 INC HL 12DE' E5 PUSH HL ;PRUEFWERT 12DF' 93 SUB E 12E0' B2 OR D 12E1' 28 4A JR Z,JNEXT4 ;GLEICH MIT WERT AUF STACK ? RSTERR ERRBLK 12E3' E7 + RST 020H 12E4' 05 + DB ERRBLK ;================================================================ 12E5' C9 DB 'I' OR CLAST 12E6' 11AA' DW DEFINITIONS-1 12E8' 01 DB 1 12E9' I: 12E9' 12EB' DW $+2 12EB' C1 POP BC 12EC' D1 POP DE ;SCHLEIFENZAEHLER BZW. "R" 12ED' D5 PUSH DE 12EE' C5 PUSH BC RSTPUSH 12EF' D7 + RST 010H 12F0' FD E9 JP (IY) ;================================================================ 12F2' 49 A7 DB 'I','''' OR CLAST 12F4' 12E8' DW I-1 12F6' 02 DB 2 12F7' ITICK: MACRO-80 3.44 09-Dec-81 PAGE 1-67 12F7' 12F9' DW $+2 12F9' 21 0004 LD HL,4 ;"R2" (SIEHE "I") 12FC' 18 09 JR RGET ;================================================================ 12FE' CA DB 'J' OR CLAST 12FF' 12F6' DW ITICK-1 1301' 01 DB 1 1302' J: 1302' 1304' DW $+2 1304' 21 0006 LD HL,6 ;"R3" (SIEHE "I") 1307' RGET: 1307' 39 ADD HL,SP 1308' 5E LD E,(HL) 1309' 23 INC HL 130A' 56 LD D,(HL) ;ZAHL VOM RETURNSTACK HOLEN RSTPUSH 130B' D7 + RST 010H 130C' FD E9 JP (IY) ;================================================================ 130E' 4C 45 41 56 DB 'LEAV','E' OR CLAST 1312' C5 1313' 1301' DW J-1 1315' 05 DB 5 1316' LEAVE: 1316' 1318' DW $+2 1318' C1 POP BC 1319' E1 POP HL 131A' E1 POP HL 131B' E5 PUSH HL 131C' E5 PUSH HL ;ZAEHLER GLEICH ENDWERT MACHEN 131D' C5 PUSH BC 131E' FD E9 JP (IY) ;================================================================ 1320' 00 DB 0 1321' FF84 DW NDO-$-1 1323' DODO: 1323' 1325' DW $+2 1325' CD 084E' CALL PULLBC RSTPULL 1328' DF + RST 018H 1329' E1 POP HL 132A' D5 PUSH DE 132B' C5 PUSH BC ;ZAEHLER UND ENDWERT MERKEN 132C' E5 PUSH HL 132D' JNEXT4: 132D' FD E9 JP (IY) ;================================================================ 132F' 02 DB 2 1330' FF85 DW NLOOP-$-1 1332' DOLOOP: 1332' 1334' DW $+2 MACRO-80 3.44 09-Dec-81 PAGE 1-68 1334' 11 0001 LD DE,1 1337' 18 06 JR LOOPADD ;================================================================ 1339' 02 DB 2 133A' FF8D DW NPLUSLOOP-$-1 133C' DOPLUSLOOP: 133C' 133E' DW $+2 RSTPULL 133E' DF + RST 018H 133F' LOOPADD: 133F' C1 POP BC 1340' E1 POP HL ;ZAEHLER HOLEN 1341' A7 AND A 1342' ED 5A ADC HL,DE ;ERHOEHEN (??? UMSTAENDLICH) 1344' 7A LD A,D 1345' D1 POP DE ;ENDWERT HOLEN 1346' 37 SCF 1347' EA 1358' JP PE,LOOPEND ;UEBERLAUF (=> ENDE) ? 134A' D5 PUSH DE 134B' E5 PUSH HL ;WERTE WIEDER SPEICHERN 134C' 07 RLCA 134D' 30 01 JR NC,LOOPCMP 134F' EB EX DE,HL 1350' LOOPCMP: 1350' CD 0C99' CALL GREATER 1353' 3F CCF 1354' 30 02 JR NC,LOOPEND ;NOCH NICHT ENDE ? 1356' E1 POP HL 1357' E1 POP HL ;SCHLEIFENWERTE LOESCHEN 1358' LOOPEND: 1358' C5 PUSH BC 1359' 9F SBC A,A 135A' C3 1294' JP EQUJUMP ;================================================================ 135D' NLBRACKET: 135D' A8 DB '(' OR CLAST 135E' 13D4' DW LSQRBR-1 1360' 41 DB 1 OR IMM 1361' LBRACKET: 1361' 1108' 1379' DW DOCOMPILER,DOLBRACKET 1365' 104B' DW GETBYTE 1367' 29 DB ')' 1368' LBREND: 1368' 0460' 0885' DW HERE,SWAP,ALLOT2,SAVETEXT 136C' 0F83' 139F' 1370' 0885' 08C1' DW SWAP,EXCLAM ;TEXT SPEICHERN 1374' 04B6' DW SEMIS ;================================================================ 1376' FF DB -1 1377' FFE5 DW NLBRACKET-$-1 1379' DOLBRACKET: MACRO-80 3.44 09-Dec-81 PAGE 1-69 1379' 137B' DW $+2 137B' E1 POP HL 137C' 5E LD E,(HL) 137D' 23 INC HL 137E' 56 LD D,(HL) ;OFFSET HOLEN 137F' 13 INC DE 1380' C3 127C' JP OFFSJUMP ;================================================================ 1383' NPTSTR: 1383' 2E A2 DB '.','"' OR CLAST 1385' 1360' DW LBRACKET-1 1387' 42 DB 2 OR IMM 1388' PTSTR: 1388' 1108' 1396' DW DOCOMPILER,DOPTSTR 138C' 104B' DW GETBYTE 138E' 22 DB '"' 138F' 1276' FFD6 DW DOREPEAT,LBREND-$-1 ;================================================================ 1393' FF DB -1 1394' FFEE DW NPTSTR-$-1 1396' DOPTSTR: 1396' 1398' DW $+2 1398' D1 POP DE 1399' CD 0979' CALL TYPEDE ;STRING AUSGEBEN 139C' D5 PUSH DE 139D' FD E9 JP (IY) ;================================================================ 139F' SAVETEXT: 139F' 13A1' DW $+2 13A1' STLOOP: RSTPULL 13A1' DF + RST 018H 13A2' D5 PUSH DE 13A3' CD 05E1' CALL CWORD ;ENDE SUCHEN 13A6' 62 LD H,D 13A7' 6B LD L,E 13A8' 09 ADD HL,BC 13A9' 7E LD A,(HL) 13AA' E1 POP HL 13AB' BD CP L 13AC' 28 0A JR Z,STFND ;ENDE GEFUNDEN ? 13AE' EB EX DE,HL RSTPUSH 13AF' D7 + RST 010H 13B0' 11 0578' LD DE,RETYPE 13B3' CD 1815' CALL EXECDE 13B6' 18 E9 JR STLOOP ;NOCHMAL PROBIEREN 13B8' STFND: 13B8' D5 PUSH DE 13B9' C5 PUSH BC 13BA' 2A 3C37 LD HL,(STKBOT) ;GRENZE GEGEN SPARE MACRO-80 3.44 09-Dec-81 PAGE 1-70 13BD' CD 0F9E' CALL ALLOC ;SPEICHER HOLEN 13C0' C1 POP BC 13C1' D1 POP DE 13C2' D5 PUSH DE 13C3' C5 PUSH BC 13C4' EB EX DE,HL 13C5' ED B0 LDIR ;TEXT UMSPEICHERN 13C7' C1 POP BC 13C8' 50 LD D,B 13C9' 59 LD E,C RSTPUSH 13CA' D7 + RST 010H 13CB' D1 POP DE 13CC' CD 07DA' CALL BLWORD ;EINGABE LOESCHEN 13CF' FD E9 JP (IY) ;================================================================ 13D1' DB DB '[' OR CLAST 13D2' 12CF' DW PLUSLOOP-1 13D4' 41 DB 1 OR IMM 13D5' LSQRBR: 13D5' 13D7' DW $+2 13D7' DD CB 3E B6 RES 6,(IX+FLAGS-MEMBEG) ;COMPILER AUSSCHALTEN 13DB' FD E9 JP (IY) ;================================================================ 13DD' DD DB ']' OR CLAST 13DE' 1315' DW LEAVE-1 13E0' 01 DB 1 13E1' RSQRBR: 13E1' 13E3' DW $+2 13E3' DD CB 3E F6 SET 6,(IX+FLAGS-MEMBEG) ;COMPILER EINSCHALTEN 13E7' FD E9 JP (IY) ;================================================================ 13E9' 45 58 49 D4 DB 'EXI','T' OR CLAST 13ED' 1387' DW PTSTR-1 13EF' 04 DB 4 13F0' EXIT: 13F0' 04B8' DW RSEMIS ;================================================================ 0000 RDONAME EQU 0 ;ZEIGER AUF NAME ALTES WORT 0002 RDOCODE EQU 2 ;ZEIGER AUF CODEFELD ALTES WORTES 0004 RDNCODE EQU 4 ;ZEIGER AUF CODEFELD NEUES WORT 0004 RDDNAME EQU 4 ;NAMENSLAENGENDIFFERENZ 0006 RDNRUN EQU 6 ;0 / RUN-ADRESSE NEUES WORT 0008 RDOEND EQU 8 ;ZEIGER HINTER ALTES WORT 000A RDNEND EQU 10 ;ZEIGER HINTER NEUES WORT 000A RDDLEN EQU 10 ;LAENGENDIFFERENZ 000C RDNNAME EQU 12 ;ZEIGER AUF NAME NEUES WORT ;================================================================ 13F2' 52 45 44 45 DB 'REDEFIN','E' OR CLAST 13F6' 46 49 4E C5 13FA' 13EF' DW EXIT-1 13FC' 08 DB 8 13FD' REDEFINE: 13FD' 13FF' DW $+2 MACRO-80 3.44 09-Dec-81 PAGE 1-71 13FF' CD 0F2E' CALL LINKHERE 1402' 2A 3C31 LD HL,(VCURRENT) 1405' 5E LD E,(HL) 1406' 23 INC HL 1407' 56 LD D,(HL) 1408' EB EX DE,HL 1409' 23 INC HL 140A' 22 2705 LD (PADMEM+RDNCODE),HL ;CODEFELD NEUES WORT 140D' E5 PUSH HL 140E' CD 15C0' CALL PTR2ADDR 1411' 22 270D LD (PADMEM+RDNNAME),HL 1414' ED 43 2707 LD (PADMEM+RDNRUN),BC 1418' ED 53 270B LD (PADMEM+RDNEND),DE ;ADRESSEN HOLEN 141C' 2A 3C37 LD HL,(STKBOT) 141F' ED 52 SBC HL,DE 1421' C2 14DA' JP NZ,DICTERR ;NICHT NEUESTES WORT ? 1424' D1 POP DE RSTPUSH ;UMZUDEFINIERENDES WORT 1425' D7 + RST 010H 1426' CD 04B9' CALL NEXT 1429' 1610' 063D' DW RESCURR,FIND,SEMICODE 142D' 1A0E' RSTPULL ;CODEFELD-ADR. DES ALTEN WORTES 142F' DF + RST 018H 1430' 21 C3AF LD HL,-FREEMEM 1433' 19 ADD HL,DE 1434' D2 14CF' JP NC,REDEFABORT ;WORT NICHT IM RAM ? 1437' EB EX DE,HL 1438' 22 2703 LD (PADMEM+RDOCODE),HL 143B' CD 15C0' CALL PTR2ADDR ;ADRESSEN HOLEN 143E' 22 2701 LD (PADMEM+RDONAME),HL 1441' E5 PUSH HL ;(SIEHE UNTEN !!!) 1442' ED 53 2709 LD (PADMEM+RDOEND),DE 1446' 78 LD A,B 1447' B1 OR C 1448' ED 5B 2707 LD DE,(PADMEM+RDNRUN) 144C' 28 04 JR Z,RDGOON1 ;ALT OHNE SPEZIELLEN RUN-TEIL ? 144E' 7A LD A,D 144F' B3 OR E 1450' 28 7D JR Z,REDEFABORT ;NEU OHNE SPEZIELLEN RUN-TEIL ? 1452' RDGOON1: 1452' E1 POP HL 1453' ED 4B 270D LD BC,(PADMEM+RDNNAME) 1457' ED 42 SBC HL,BC 1459' EB EX DE,HL 145A' 19 ADD HL,DE 145B' 22 2707 LD (PADMEM+RDNRUN),HL ;RUN-ADRESSE KORRIGIEREN 145E' 2A 270B LD HL,(PADMEM+RDNEND) 1461' 19 ADD HL,DE MACRO-80 3.44 09-Dec-81 PAGE 1-72 1462' ED 4B 2709 LD BC,(PADMEM+RDOEND) 1466' A7 AND A 1467' ED 42 SBC HL,BC 1469' 22 270B LD (PADMEM+RDDLEN),HL ;LAENGENDIFF. BERECHNEN 146C' 01 002E LD BC,46 146F' 09 ADD HL,BC 1470' CB 7C BIT 7,H 1472' 20 0B JR NZ,RDGOON2 ;UM MINDESTENS 47 BYTE KLEINER ? 1474' ED 4B 3C3B LD BC,(SPARE) 1478' 09 ADD HL,BC 1479' 38 54 JR C,REDEFABORT 147B' ED 72 SBC HL,SP 147D' 30 50 JR NC,REDEFABORT ;ZUWENIG SPEICHER ? 147F' RDGOON2: 147F' 2A 2703 LD HL,(PADMEM+RDOCODE) 1482' E5 PUSH HL 1483' 2B DEC HL 1484' 2B DEC HL 1485' 46 LD B,(HL) 1486' 2B DEC HL 1487' 4E LD C,(HL) 1488' 2A 2705 LD HL,(PADMEM+RDNCODE) 148B' E5 PUSH HL 148C' 2B DEC HL 148D' 2B DEC HL 148E' 70 LD (HL),B 148F' 2B DEC HL 1490' 71 LD (HL),C ;WORT-VERKETTUNG HERSTELLEN 1491' E1 POP HL 1492' 19 ADD HL,DE 1493' C1 POP BC 1494' A7 AND A 1495' ED 42 SBC HL,BC 1497' 22 2705 LD (PADMEM+RDDNAME),HL ;NAMENSLAENGENDIFF. BER. 149A' ED 5B 2701 LD DE,(PADMEM+RDONAME) 149E' 2A 2709 LD HL,(PADMEM+RDOEND) 14A1' A7 AND A 14A2' ED 52 SBC HL,DE 14A4' 44 LD B,H 14A5' 4D LD C,L 14A6' D5 PUSH DE 14A7' C5 PUSH BC 14A8' CD 14DC' CALL DELWORD ;ALTES WORT LOESCHEN 14AB' 2A 270B LD HL,(PADMEM+RDDLEN) 14AE' C1 POP BC 14AF' 09 ADD HL,BC 14B0' 44 LD B,H 14B1' 4D LD C,L 14B2' E1 POP HL 14B3' C5 PUSH BC 14B4' CD 0F9E' CALL ALLOC ;SPEICHER FUER NEUES WORT HOLEN MACRO-80 3.44 09-Dec-81 PAGE 1-73 14B7' EB EX DE,HL 14B8' 2A 270D LD HL,(PADMEM+RDNNAME) 14BB' ED 4B 270B LD BC,(PADMEM+RDDLEN) 14BF' 09 ADD HL,BC ;STARTADRESSE KORRIGIEREN 14C0' C1 POP BC 14C1' C5 PUSH BC 14C2' E5 PUSH HL 14C3' ED B0 LDIR ;NEUES WORT KOPIEREN 14C5' D1 POP DE 14C6' C1 POP BC 14C7' CD 14DC' CALL DELWORD ;ORIGINAL LOESCHEN 14CA' CD 14F8' CALL CORRCURR ;ZEIGER KORRIGIEREN 14CD' FD E9 JP (IY) 14CF' REDEFABORT: 14CF' 2A 3C31 LD HL,(VCURRENT) 14D2' ED 5B 2705 LD DE,(PADMEM+RDNCODE) 14D6' 1B DEC DE 14D7' 73 LD (HL),E 14D8' 23 INC HL 14D9' 72 LD (HL),D ;CURRENT DICTIONARY SETZEN 14DA' DICTERR: RSTERR ERRDICT 14DA' E7 + RST 020H 14DB' 0B + DB ERRDICT ;================================================================ 14DC' DELWORD: 14DC' 2A 3C37 LD HL,(STKBOT) 14DF' A7 AND A 14E0' ED 42 SBC HL,BC 14E2' 22 3C37 LD (STKBOT),HL ;HERE ERNIEDRIGEN 14E5' 2A 3C3B LD HL,(SPARE) 14E8' ED 42 SBC HL,BC 14EA' 22 3C3B LD (SPARE),HL ;SPARE ERNIEDRIGEN 14ED' ED 52 SBC HL,DE 14EF' C8 RET Z ;WAR SCHON LETZTES WORT ? 14F0' C5 PUSH BC 14F1' 44 LD B,H 14F2' 4D LD C,L 14F3' E1 POP HL 14F4' 19 ADD HL,DE 14F5' ED B0 LDIR ;REST VERSCHIEBEN 14F7' C9 RET ;---------------------------------------------------------------- 14F8' CORRCURR: 14F8' 01 3C31 LD BC,VCURRENT 14FB' CD 1557' CALL CORRPTR 14FE' CD 1557' CALL CORRPTR ;ZEIGER FUER CURRENT KORRIGIEREN 1501' 01 3C40 LD BC,DICT1ST 1504' CORRDICT: 1504' 2A 3C37 LD HL,(STKBOT) MACRO-80 3.44 09-Dec-81 PAGE 1-74 1507' 37 SCF 1508' ED 42 SBC HL,BC 150A' D8 RET C ;AM ENDE ANGEKOMMEN ? 150B' CDLOOP: 150B' 0A LD A,(BC) 150C' 17 RLA 150D' 03 INC BC 150E' 30 FB JR NC,CDLOOP ;NAMEN UEBERSPRINGEN 1510' 03 INC BC 1511' 03 INC BC 1512' CD 1557' CALL CORRPTR ;END-ADRESSE KORRIGIEREN 1515' 03 INC BC 1516' CD 1557' CALL CORRPTR ;ERSTES WORT DES DICT. 1519' CD 15FB' CALL JUMPDE 151C' 0EC3' DW DOCOL 151E' 1C DB CDCOLON-$ 151F' 1085' DW DODEFINER 1521' 16 DB CDDEFCOM-$ 1522' 1108' DW DOCOMPILER 1524' 13 DB CDDEFCOM-$ 1525' 11B5' DW SETCONTEXT 1527' 18 DB CDSETCTXT-$ 1528' 0000 DW 0 152A' 21 FFF9 LD HL,-7 152D' 09 ADD HL,BC 152E' 4E LD C,(HL) 152F' 23 INC HL 1530' 46 LD B,(HL) 1531' 2B DEC HL 1532' 09 ADD HL,BC ;LINK AUF VORHERIGES DICT. 1533' 44 LD B,H 1534' 4D LD C,L 1535' 18 CD JR CORRDICT 1537' CDDEFCOM: 1537' CD 1557' CALL CORRPTR 153A' CDCOLON: 153A' CD 1548' CALL CORRWORD 153D' 18 C5 JR CORRDICT 153F' CDSETCTXT: 153F' CD 1557' CALL CORRPTR 1542' 03 INC BC 1543' CD 1557' CALL CORRPTR 1546' 18 BC JR CORRDICT ;---------------------------------------------------------------- 1548' CORRWORD: 1548' CD 1557' CALL CORRPTR 154B' 21 04B6' LD HL,SEMIS 154E' A7 AND A 154F' ED 52 SBC HL,DE 1551' C8 RET Z ;FORTH-WORTENDE GEFUNDEN ? MACRO-80 3.44 09-Dec-81 PAGE 1-75 1552' CD 159E' CALL SKIPOFFS 1555' 18 F1 JR CORRWORD ;---------------------------------------------------------------- 1557' CORRPTR: 1557' 0A LD A,(BC) 1558' 5F LD E,A 1559' 03 INC BC 155A' 0A LD A,(BC) 155B' 57 LD D,A 155C' 0B DEC BC ;ADRESSE HOLEN 155D' CD 1568' CALL CORRADDR 1560' EB EX DE,HL 1561' 7B LD A,E 1562' 02 LD (BC),A 1563' 03 INC BC 1564' 7A LD A,D 1565' 02 LD (BC),A ;KORRIGIERT SPEICHERN 1566' 03 INC BC 1567' C9 RET ;---------------------------------------------------------------- 1568' CORRADDR: 1568' 2A 2701 LD HL,(PADMEM+RDONAME) 156B' A7 AND A 156C' ED 52 SBC HL,DE 156E' 62 LD H,D 156F' 6B LD L,E 1570' D0 RET NC ;AELTERES WORT => KEINE ANPASSUNG 1571' 2A 2709 LD HL,(PADMEM+RDOEND) 1574' ED 52 SBC HL,DE 1576' 30 0C JR NC,CAWORD ;UMDEFINIERTES WORT ? 1578' 2A 270D LD HL,(PADMEM+RDNNAME) 157B' ED 52 SBC HL,DE 157D' 38 13 JR C,CADICT ;ANDERES DICTIONARY ? 157F' 2A 270B LD HL,(PADMEM+RDDLEN) 1582' 19 ADD HL,DE 1583' C9 RET ;NEUER => UM DIFFERENZ ANPASSEN 1584' CAWORD: 1584' 2A 2703 LD HL,(PADMEM+RDOCODE) 1587' ED 52 SBC HL,DE 1589' 2A 2707 LD HL,(PADMEM+RDNRUN) 158C' D8 RET C ;MIT RUN-TEIL => NEUE ADRESSE 158D' 2A 2705 LD HL,(PADMEM+RDDNAME) 1590' 19 ADD HL,DE 1591' C9 RET ;UM NAMENSDIFFERENZ ANPASSEN 1592' CADICT: 1592' 2A 2701 LD HL,(PADMEM+RDONAME) 1595' 19 ADD HL,DE 1596' ED 5B 270D LD DE,(PADMEM+RDNNAME) MACRO-80 3.44 09-Dec-81 PAGE 1-76 159A' A7 AND A 159B' ED 52 SBC HL,DE 159D' C9 RET ;UM LAENGENDIFFERENZ ANPASSEN ;---------------------------------------------------------------- 159E' SKIPOFFS: 159E' 1B DEC DE 159F' 1A LD A,(DE) 15A0' 17 RLA 15A1' D0 RET NC ;NORMALES FORTH-WORT ? 15A2' SKOFFS2: 15A2' 1B DEC DE 15A3' 1B DEC DE 15A4' 1A LD A,(DE) ;OFFSET HOLEN 15A5' 6F LD L,A 15A6' 26 00 LD H,0 15A8' 3C INC A 15A9' 20 06 JR NZ,SKOGOON ;OFFSET-BYTE GUELTIG ? 15AB' 0A LD A,(BC) 15AC' 6F LD L,A 15AD' 03 INC BC 15AE' 0A LD A,(BC) 15AF' 67 LD H,A 15B0' 03 INC BC ;OFFSET IM CODE HOLEN 15B1' SKOGOON: 15B1' 09 ADD HL,BC 15B2' 44 LD B,H 15B3' 4D LD C,L ;NEUE ADRESSE MERKEN 15B4' C9 RET ;---------------------------------------------------------------- 15B5' NFA: 15B5' 15B7' DW $+2 RSTPULL 15B7' DF + RST 018H 15B8' EB EX DE,HL 15B9' CD 15E7' CALL FPTR2NAME 15BC' EB EX DE,HL RSTPUSH 15BD' D7 + RST 010H 15BE' FD E9 JP (IY) ;---------------------------------------------------------------- 15C0' PTR2ADDR: 15C0' E5 PUSH HL 15C1' 5E LD E,(HL) 15C2' 23 INC HL 15C3' 56 LD D,(HL) ;ERSTE WORTADRESSE HOLEN 15C4' CD 15FB' CALL JUMPDE 15C7' 1108' DW DOCOMPILER 15C9' 0B DB P2ARUN-$ 15CA' 1085' DW DODEFINER 15CC' 08 DB P2ARUN-$ 15CD' 0000 DW 0 15CF' 01 0000 LD BC,0 ;KEIN SPEZIELLER RUN-TEIL 15D2' 18 07 JR P2AGOON MACRO-80 3.44 09-Dec-81 PAGE 1-77 15D4' P2ARUN: 15D4' E1 POP HL 15D5' E5 PUSH HL 15D6' 23 INC HL 15D7' 23 INC HL 15D8' 4E LD C,(HL) 15D9' 23 INC HL 15DA' 46 LD B,(HL) ;RUNTIME-ADRESSE HOLEN 15DB' P2AGOON: 15DB' E1 POP HL 15DC' E5 PUSH HL 15DD' 2B DEC HL 15DE' 2B DEC HL 15DF' 2B DEC HL 15E0' 2B DEC HL 15E1' 56 LD D,(HL) 15E2' 2B DEC HL 15E3' 5E LD E,(HL) 15E4' 19 ADD HL,DE 15E5' EB EX DE,HL ;ZEIGER HINTER WORT BERECHNEN 15E6' E1 POP HL ;---------------------------------------------------------------- 15E7' FPTR2NAME: 15E7' 2B DEC HL 15E8' PTR2NAME: 15E8' 7C LD A,H 15E9' FE 3C CP MEMBEG SHR 8 15EB' 7E LD A,(HL) 15EC' CB B7 RES 6,A ;IMMEDIATE-BIT LOESCHEN 15EE' 38 02 JR C,P2NGOON 15F0' C6 02 ADD A,2 ;BEI WORTEN IM RAM MEHR 15F2' P2NGOON: 15F2' 2B DEC HL 15F3' 2B DEC HL ;VERKETTUNGSZEIGER UEBERSPRINGEN 15F4' P2NLOOP: 15F4' 2B DEC HL 15F5' 3D DEC A 15F6' 20 FC JR NZ,P2NLOOP ;AUF NAMENSANFANG ZEIGEN 15F8' C9 RET ;=============================================================== 15F9' JDELOOP: 15F9' 23 INC HL ;OFFSET UEBERSPRINGEN 15FA' E5 PUSH HL 15FB' JUMPDE: 15FB' E1 POP HL 15FC' 7E LD A,(HL) 15FD' 23 INC HL 15FE' E5 PUSH HL 15FF' 66 LD H,(HL) 1600' 6F LD L,A ;NAECHSTEN ZEIGER HOLEN 1601' B4 OR H 1602' C8 RET Z ;0 ? (HRM-HRM, AUF "NOP" !!!) MACRO-80 3.44 09-Dec-81 PAGE 1-78 1603' ED 52 SBC HL,DE 1605' E1 POP HL 1606' 23 INC HL 1607' 20 F0 JR NZ,JDELOOP ;ZEIGER NICHT ERREICHT ? 1609' D5 PUSH DE 160A' 16 00 LD D,0 160C' 5E LD E,(HL) ;OFFSET HOLEN 160D' 19 ADD HL,DE 160E' D1 POP DE 160F' E9 JP (HL) ;CODE ANSPRINGEN ;================================================================ 1610' RESCURR: 1610' 0EC3' DW DOCOL 1612' 0E1F' 0E29' DW ONEMINUS,TWOMINUS,AT 1616' 08B3' 1618' 0480' 08B3' DW CURRENT,AT,EXCLAM ;CURRENT ZURUECKSETZEN 161C' 08C1' 161E' 04B6' DW SEMIS ;================================================================ 1620' FINDWORD: 1620' CD 04B9' CALL NEXT 1623' 063D' DW FIND 1625' 1A0E' DW SEMICODE RSTPULL ;ADRESSE DES CODE-FELDS 1627' DF + RST 018H 1628' 21 C3AF LD HL,-FREEMEM 162B' 19 ADD HL,DE 162C' D8 RET C ;WORT GEFUNDEN ? RSTERR ERRFIND 162D' E7 + RST 020H 162E' 0D + DB ERRFIND ;================================================================ 162F' 46 4F 52 47 DB 'FORGE','T' OR CLAST 1633' 45 D4 1635' 13FC' DW REDEFINE-1 1637' 06 DB 6 1638' FORGET: 1638' 163A' DW $+2 163A' 2A 3C31 LD HL,(VCURRENT) 163D' ED 5B 3C33 LD DE,(VCONTEXT) 1641' A7 AND A 1642' ED 52 SBC HL,DE 1644' C2 14DA' JP NZ,DICTERR ;VERSCHIEDENE DICTIONARIES ? 1647' CD 1620' CALL FINDWORD 164A' 21 FFFB LD HL,-5 164D' 19 ADD HL,DE 164E' 22 3C39 LD (DICT),HL 1651' DD CB 3E D6 SET 2,(IX+FLAGS-MEMBEG) ;COMPILE-MODE EINSCHALTEN RSTERR ERRNONE 1655' E7 + RST 020H 1656' FF + DB ERRNONE ;================================================================ 1657' 45 44 49 D4 DB 'EDI','T' OR CLAST MACRO-80 3.44 09-Dec-81 PAGE 1-79 165B' 1637' DW FORGET-1 165D' 04 DB 4 165E' EDIT: 165E' 1660' DW $+2 1660' CD 1620' CALL FINDWORD 1663' DD CB 3E DE SET 3,(IX+FLAGS-MEMBEG) ;"EDIT" MERKEN 1667' 18 0C JR EDITLIST ;================================================================ 1669' 4C 49 53 D4 DB 'LIS','T' OR CLAST 166D' 165D' DW EDIT-1 166F' 04 DB 4 1670' LIST: 1670' 1672' DW $+2 1672' CD 1620' CALL FINDWORD ;---------------------------------------------------------------- 1675' EDITLIST: 1675' 3E 0D LD A,CCR RSTEMIT 1677' CF + RST 008H 1678' DD CB 3E 5E BIT 3,(IX+FLAGS-MEMBEG) 167C' D5 PUSH DE 167D' C4 02D8' CALL NZ,DCCLEAR ;"EDIT" ? 1680' C1 POP BC 1681' 0A LD A,(BC) 1682' 5F LD E,A 1683' 03 INC BC 1684' 0A LD A,(BC) 1685' 57 LD D,A 1686' 0B DEC BC 1687' CD 15FB' CALL JUMPDE 168A' 0EC3' DW DOCOL 168C' 0B DB ELCOLON-$ 168D' 1108' DW DOCOMPILER 168F' 0D DB ELCOMPILER-$ 1690' 1085' DW DODEFINER 1692' 1F DB ELDEFINER-$ 1693' 0000 DW 0 RSTERR ERRLIST 1695' E7 + RST 020H 1696' 0E + DB ERRLIST ;---------------------------------------------------------------- 1697' ELCOLON: 1697' 21 0002 LD HL,2 169A' 18 18 JR ELOUT ;---------------------------------------------------------------- 169C' ELCOMPILER: 169C' D5 PUSH DE 169D' 21 0002 LD HL,2 16A0' 09 ADD HL,BC 16A1' 7E LD A,(HL) 16A2' 23 INC HL MACRO-80 3.44 09-Dec-81 PAGE 1-80 16A3' 66 LD H,(HL) 16A4' 6F LD L,A ;ADRESSE HINTER "DOCOMPILER" 16A5' 2B DEC HL 16A6' 2B DEC HL 16A7' 2B DEC HL 16A8' 6E LD L,(HL) 16A9' 7D LD A,L 16AA' 07 RLCA 16AB' 9F SBC A,A 16AC' 67 LD H,A ;CODEBYTE (???) AUF 16 BIT 16AD' CD 180E' CALL PNTHL 16B0' D1 POP DE ;---------------------------------------------------------------- 16B1' ELDEFINER: 16B1' 21 0004 LD HL,4 ;---------------------------------------------------------------- 16B4' ELOUT: 16B4' 09 ADD HL,BC 16B5' E5 PUSH HL 16B6' C5 PUSH BC 16B7' CD 17E4' CALL OUTWORD ;":" ETC. AUSGEBEN 16BA' D1 POP DE 16BB' C1 POP BC 16BC' CD 17E4' CALL OUTWORD ;NAMEN AUSGEBEN 16BF' DD 36 14 01 LD (IX+LPIBUF-MEMBEG),1 ;1 ZEICHEN EINRUECKEN 16C3' ELMLOOP: 16C3' DD 36 16 10 LD (IX+LPLCNT-MEMBEG),16 ;16 ZEILEN 16C7' ELLLOOP: 16C7' CD 1708' CALL LISTPGM 16CA' 38 06 JR C,ELREADY ;WORT FERTIG GELISTET ? 16CC' DD 35 16 DEC (IX+LPLCNT-MEMBEG) 16CF' F2 16C7' JP P,ELLLOOP ;NOCH NICHT ALLE ZEILEN BENUTZT ? 16D2' ELREADY: 16D2' DD CB 3E 5E BIT 3,(IX+FLAGS-MEMBEG) 16D6' 20 10 JR NZ,ELEDIT ;"EDIT" ? 16D8' 38 28 JR C,ELQUIT ;WORT FERTIG GELISTET ? 16DA' 21 3C26 LD HL,KEYCOD 16DD' 36 00 LD (HL),0 16DF' ELACK: 16DF' 7E LD A,(HL) 16E0' A7 AND A 16E1' 28 FC JR Z,ELACK ;AUF BESTAETIGUNG WARTEN 16E3' CD 04E4' CALL USERBREAK 16E6' 18 DB JR ELMLOOP ;WEITERMACHEN 16E8' ELEDIT: 16E8' F5 PUSH AF 16E9' DD CB 3E 9E RES 3,(IX+FLAGS-MEMBEG) ;KURZ KEIN "EDIT" 16ED' C5 PUSH BC MACRO-80 3.44 09-Dec-81 PAGE 1-81 16EE' CD 04B9' CALL NEXT 16F1' 0578' 0506' DW RETYPE,LINE 16F5' 1A0E' DW SEMICODE ;EDITIEREN 16F7' DD CB 3E DE SET 3,(IX+FLAGS-MEMBEG) ;WIEDER "EDIT" 16FB' CD 02D8' CALL DCCLEAR 16FE' C1 POP BC 16FF' F1 POP AF 1700' 30 C1 JR NC,ELMLOOP ;WORT NICHT FERTIG GELISTET ? 1702' ELQUIT: 1702' DD CB 3E 9E RES 3,(IX+FLAGS-MEMBEG) ;KEIN "EDIT" MEHR 1706' FD E9 JP (IY) ;---------------------------------------------------------------- 1708' LISTPGM: 1708' 3A 3C14 LD A,(LPIBUF) 170B' 32 3C15 LD (LPIACT),A ;EINRUECKUNG HOLEN 170E' DD 36 13 05 LD (IX+LPICNT-MEMBEG),5 ;ERSTMAL 5 WORTE 1712' LPLOOP: 1712' 0A LD A,(BC) 1713' 5F LD E,A 1714' 03 INC BC 1715' 0A LD A,(BC) 1716' 57 LD D,A 1717' 03 INC BC 1718' CD 15FB' CALL JUMPDE ;NAECHSTES WORT HOLEN 171B' 1283' DW DOIF 171D' 40 DB LPIINC-$ 171E' 1271' DW DOELSE 1720' 44 DB LPILEFT-$ 1721' 12A4' DW DOTHEN 1723' 48 DB LPIDEC-$ 1724' 129F' DW DOBEGIN 1726' 37 DB LPIINC-$ 1727' 128D' DW DOUNTIL 1729' 42 DB LPIDEC-$ 172A' 1288' DW DOWHILE 172C' 38 DB LPILEFT-$ 172D' 1276' DW DOREPEAT 172F' 3C DB LPIDEC-$ 1730' 1323' DW DODO 1732' 2B DB LPIINC-$ 1733' 1332' DW DOLOOP 1735' 36 DB LPIDEC-$ 1736' 133C' DW DOPLUSLOOP 1738' 33 DB LPIDEC-$ 1739' 10E8' DW DODOESGT 173B' 29 DB LPILEFT-$ 173C' 1140' DW DORUNSGT 173E' 26 DB LPILEFT-$ 173F' 1011' DW GETWORD 1741' 3B DB LPWORD-$ 1742' 1064' DW GETFLOAT 1744' 47 DB LPFLOAT-$ 1745' 104B' DW GETBYTE MACRO-80 3.44 09-Dec-81 PAGE 1-82 1747' 51 DB LPBYTE-$ 1748' 1379' DW DOLBRACKET 174A' 62 DB LPLBRACKET-$ 174B' 1396' DW DOPTSTR 174D' 63 DB LPPTSTR-$ 174E' 04B6' DW SEMIS 1750' 54 DB LPSEMIS-$ 1751' 0000 DW 0 1753' LPOUT: 1753' CD 17E1' CALL OUTWORDI 1756' LPNEXT: 1756' DD 35 13 DEC (IX+LPICNT-MEMBEG) 1759' 20 B7 JR NZ,LPLOOP ;WORTZAHL BEGRENZEN 175B' A7 AND A ;WORT NOCH NICHT FERTIG GELISTET 175C' C9 RET 175D' LPIINC: 175D' 2A 3C14 LD HL,(LPIBUF) 1760' 65 LD H,L 1761' 2C INC L ;DEMNAECHST MEHR EINRUECKEN 1762' 18 0C JR LPINDENT 1764' LPILEFT: 1764' 2A 3C14 LD HL,(LPIBUF) 1767' 65 LD H,L 1768' 25 DEC H ;EINMAL WENIGER EINRUECKEN 1769' 18 05 JR LPINDENT 176B' LPIDEC: 176B' 2A 3C14 LD HL,(LPIBUF) 176E' 2D DEC L 176F' 65 LD H,L ;JETZT WENIGER EINRUECKEN 1770' LPINDENT: 1770' 22 3C14 LD (LPIBUF),HL 1773' DD 36 13 01 LD (IX+LPICNT-MEMBEG),1 ;NUR NOCH DIESES WORT 1777' DD 35 16 DEC (IX+LPLCNT-MEMBEG) ;ZEILE FERTIG 177A' 18 D7 JR LPOUT 177C' LPWORD: 177C' CD 17DA' CALL LPNXTWRD RSTPUSH 177F' D7 + RST 010H 1780' 11 09B3' LD DE,PNT 1783' LPNUMBER: 1783' CD 17C1' CALL OUTINDENT 1786' CD 1815' CALL EXECDE ;ZAHL AUSGEBEN 1789' 18 CB JR LPNEXT 178B' LPFLOAT: 178B' CD 17DA' CALL LPNXTWRD RSTPUSH 178E' D7 + RST 010H MACRO-80 3.44 09-Dec-81 PAGE 1-83 178F' CD 17DA' CALL LPNXTWRD RSTPUSH 1792' D7 + RST 010H 1793' 11 0AAF' LD DE,FPNT 1796' 18 EB JR LPNUMBER 1798' LPBYTE: 1798' 0A LD A,(BC) 1799' F5 PUSH AF 179A' CD 17E1' CALL OUTWORDI 179D' F1 POP AF RSTEMIT 179E' CF + RST 008H 179F' 3E 20 LD A,' ' RSTEMIT 17A1' CF + RST 008H 17A2' 18 B2 JR LPNEXT 17A4' LPSEMIS: 17A4' CD 1808' CALL ROMTXT 17A7' 0D 3B 8D DB CCR,';',CCR OR CLAST 17AA' 37 SCF ;WORT FERTIG GELISTET 17AB' C9 RET 17AC' LPLBRACKET: 17AC' 3E 29 LD A,')' 17AE' 18 02 JR LPSTRING 17B0' LPPTSTR: 17B0' 3E 22 LD A,'"' 17B2' LPSTRING: 17B2' F5 PUSH AF 17B3' C5 PUSH BC 17B4' CD 17E1' CALL OUTWORDI 17B7' D1 POP DE 17B8' CD 0979' CALL TYPEDE ;ZEICHENKETTE AUSGEBEN 17BB' 42 LD B,D 17BC' 4B LD C,E 17BD' F1 POP AF RSTEMIT ;GRENZZEICHEN AUSGEBEN 17BE' CF + RST 008H 17BF' A7 AND A ;WORT NOCH NICHT FERTIG GELISTET 17C0' C9 RET ;---------------------------------------------------------------- 17C1' OUTINDENT: 17C1' 3A 3C15 LD A,(LPIACT) 17C4' A7 AND A 17C5' F8 RET M ;KEINE NEUE ZEILE & EINRUECKUNG ? 17C6' C5 PUSH BC 17C7' 47 LD B,A 17C8' 3E 0D LD A,CCR RSTEMIT 17CA' CF + RST 008H MACRO-80 3.44 09-Dec-81 PAGE 1-84 17CB' 04 INC B 17CC' 05 DEC B 17CD' 28 05 JR Z,OIQUIT ;EINRUECKUNG = 0 ? 17CF' OILOOP: 17CF' 3E 20 LD A,' ' RSTEMIT 17D1' CF + RST 008H 17D2' 10 FB DJNZ OILOOP ;EINRUECKUNG AUSGEBEN 17D4' OIQUIT: 17D4' DD 36 15 FF LD (IX+LPIACT-MEMBEG),-1 ;KEINE EINRUECKUNG MEHR 17D8' C1 POP BC 17D9' C9 RET ;---------------------------------------------------------------- 17DA' LPNXTWRD: 17DA' 0A LD A,(BC) 17DB' 5F LD E,A 17DC' 03 INC BC 17DD' 0A LD A,(BC) 17DE' 57 LD D,A 17DF' 03 INC BC ;NAECHSTES WORT HOLEN 17E0' C9 RET ;---------------------------------------------------------------- 17E1' OUTWORDI: 17E1' CD 17C1' CALL OUTINDENT 17E4' OUTWORD: 17E4' EB EX DE,HL 17E5' 2B DEC HL 17E6' 7E LD A,(HL) 17E7' CB 7F BIT 7,A 17E9' 20 05 JR NZ,OWDOXX ;KEIN NORMALES FORTH-WORT ? 17EB' CD 15E8' CALL PTR2NAME 17EE' 18 0B JR OUTTXT 17F0' OWDOXX: 17F0' EB EX DE,HL 17F1' CD 15A2' CALL SKOFFS2 17F4' 13 INC DE 17F5' 1A LD A,(DE) 17F6' 6F LD L,A 17F7' 13 INC DE 17F8' 1A LD A,(DE) 17F9' 67 LD H,A 17FA' 19 ADD HL,DE ;ZEIGER AUF NAMEN 17FB' OUTTXT: 17FB' 7E LD A,(HL) 17FC' E6 7F AND 7FH ;ZEICHEN HOLEN RSTEMIT 17FE' CF + RST 008H 17FF' CB 7E BIT 7,(HL) 1801' 23 INC HL 1802' 28 F7 JR Z,OUTTXT ;NOCH NICHT ENDE ? 1804' 3E 20 LD A,' ' RSTEMIT MACRO-80 3.44 09-Dec-81 PAGE 1-85 1806' CF + RST 008H 1807' C9 RET ;---------------------------------------------------------------- 1808' ROMTXT: 1808' E3 EX (SP),HL ;ZEIGER HOLEN 1809' CD 17FB' CALL OUTTXT 180C' E3 EX (SP),HL ;RUECKSPRUNG SETZEN 180D' C9 RET ;================================================================ 180E' PNTHL: 180E' 11 09B3' LD DE,PNT 1811' D5 PUSH DE 1812' EB EX DE,HL RSTPUSH 1813' D7 + RST 010H 1814' D1 POP DE ;---------------------------------------------------------------- 1815' EXECDE: 1815' C5 PUSH BC 1816' CD 04BF' CALL NEXTDE 1819' 181B' DW $+2 181B' 181D' DW $+2 181D' C1 POP BC 181E' C1 POP BC 181F' C9 RET ;================================================================ 1820' TXALL: 1820' FD E5 PUSH IY 1822' E5 PUSH HL 1823' FD E1 POP IY ;ADRESSE HOLEN 1825' 21 1892' LD HL,TXRXQUIT 1828' E5 PUSH HL ;RUECKSPRUNG SETZEN 1829' 21 E000 LD HL,-2000H 182C' CB 79 BIT 7,C 182E' 28 02 JR Z,TAGOON1 ;LANGER VORSPANN ? 1830' 26 FC LD H,-0400H SHR 8 1832' TAGOON1: 1832' 13 INC DE 1833' FD 2B DEC IY ;ZEIGER UND ANZAHL KORRIGIEREN 1835' F3 DI 1836' AF XOR A ;VORBEREITEN 1837' TALOOP1: 1837' 06 97 LD B,151 1839' TADEL1: 1839' 10 FE DJNZ TADEL1 ;LANGE WARTEN 183B' D3 FE OUT (IO),A ;PEGEL WECHSELN 183D' EE 08 XOR 8 183F' 2C INC L 1840' 20 01 JR NZ,TAGOON2 1842' 24 INC H MACRO-80 3.44 09-Dec-81 PAGE 1-86 1843' TAGOON2: 1843' 20 F2 JR NZ,TALOOP1 ;VORSPANN SENDEN 1845' 06 2B LD B,43 1847' TADEL2: 1847' 10 FE DJNZ TADEL2 ;KURZ WARTEN 1849' D3 FE OUT (IO),A ;PEGEL = 0 184B' 69 LD L,C ;STARTBYTE HOLEN 184C' 01 3B08 LD BC,8 + (59 SHL 8) 184F' TADEL3: 184F' 10 FE DJNZ TADEL3 ;KURZ WARTEN 1851' 79 LD A,C 1852' D3 FE OUT (IO),A ;PEGEL = 1 1854' 06 38 LD B,56 1856' C3 188A' JP TASTART ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1859' TALOOP2: 1859' 79 LD A,C ;PEGEL 1 HOLEN 185A' CB 78 BIT 7,B ;Z SETZEN 185C' TADEL4: 185C' 10 FE DJNZ TADEL4 ;KURZ WARTEN 185E' 30 04 JR NC,TABIT0 ;BIT = 0 ? 1860' 06 3D LD B,61 1862' TADEL5: 1862' 10 FE DJNZ TADEL5 ;KURZ WARTEN 1864' TABIT0: 1864' D3 FE OUT (IO),A ;PEGEL SETZEN 1866' 06 3A LD B,58 1868' C2 1859' JP NZ,TALOOP2 ;ERSTE BITHAELFTE GESENDET ? 186B' 05 DEC B ;ZYKLEN-KORREKTUR 186C' AF XOR A ;PEGEL 0 HOLEN 186D' TANEXT: 186D' CB 15 RL L 186F' C2 185C' JP NZ,TADEL4 ;NOCH NICHT 8 BITS GESENDET ? 1872' 1B DEC DE ;ANZAHL ERNIEDRIGEN 1873' FD 23 INC IY ;ZEIGER ERHOEHEN 1875' 06 2E LD B,46 1877' 3E 7F LD A,7FH 1879' DB FE IN A,(IO) 187B' 1F RRA 187C' D0 RET NC ;BENUTZER-ABBRUCH ? 187D' 7A LD A,D 187E' FE FF CP 0FFH MACRO-80 3.44 09-Dec-81 PAGE 1-87 1880' D0 RET NC ;PRUEFZAHL GESENDET ? 1881' B3 OR E 1882' 28 0B JR Z,TAEND ;ALLE BYTES GESENDET ? 1884' FD 6E 00 LD L,(IY+0) ;NAECHSTES BYTE HOLEN 1887' TACHECK: 1887' 7C LD A,H 1888' AD XOR L 1889' 67 LD H,A ;PRUEFSUMME BILDEN 188A' TASTART: 188A' AF XOR A 188B' 37 SCF ;FUER DIE BIT-ANZAHL 188C' C3 186D' JP TANEXT 188F' TAEND: 188F' 6C LD L,H ;PRUEFSUMME SENDEN 1890' 18 F5 JR TACHECK ;---------------------------------------------------------------- 1892' TXRXQUIT: 1892' FD E1 POP IY 1894' 08 EX AF,AF' 1895' 06 3B LD B,59 1897' TRQDEL6: 1897' 10 FE DJNZ TRQDEL6 ;KURZ WARTEN 1899' AF XOR A 189A' D3 FE OUT (IO),A ;PEGEL = 0 189C' 3E 7F LD A,7FH 189E' DB FE IN A,(IO) 18A0' 1F RRA 18A1' FB EI 18A2' D2 04F0' JP NC,BREAK ;BENUTZER-ABBRUCH ? 18A5' 08 EX AF,AF' 18A6' C9 RET ;---------------------------------------------------------------- 18A7' RXALL: 18A7' F3 DI 18A8' FD E5 PUSH IY 18AA' E5 PUSH HL 18AB' FD E1 POP IY ;ZEIGER HOLEN 18AD' 21 1892' LD HL,TXRXQUIT 18B0' E5 PUSH HL ;RUECKSPRUNG SETZEN 18B1' 61 LD H,C ;STARTBYTE MERKEN 18B2' 08 EX AF,AF' ;READ/VERIFY-FLAG MERKEN 18B3' AF XOR A 18B4' 4F LD C,A ;BISHER 0-PEGEL MACRO-80 3.44 09-Dec-81 PAGE 1-88 18B5' RASYNC: 18B5' C0 RET NZ ;BENUTZER-ABBRUCH ? 18B6' RALOOP1: 18B6' 2E 00 LD L,0 18B8' RALOOP2: 18B8' 06 B8 LD B,-72 18BA' CD 1911' CALL RXBIT 18BD' 30 F6 JR NC,RASYNC ;ABBRUCH ? 18BF' 3E DF LD A,-33 18C1' B8 CP B 18C2' 30 F2 JR NC,RALOOP1 ;KEIN SYNC-ZEICHEN ? 18C4' 2C INC L 18C5' 20 F1 JR NZ,RALOOP2 ;NOCH KEINE 256 SYNC-ZEICHEN ? 18C7' RALOOP3: 18C7' 06 CF LD B,-49 18C9' CD 1915' CALL RXLEVEL 18CC' 30 E7 JR NC,RASYNC ;ABBRUCH ? 18CE' 78 LD A,B 18CF' FE D8 CP -40 18D1' 30 F4 JR NC,RALOOP3 ;NOCH SYNC-ZEICHEN ? 18D3' CD 1915' CALL RXLEVEL 18D6' D0 RET NC ;ABBRUCH ? 18D7' CD 18FC' CALL RXBYTE 18DA' D0 RET NC ;ABBRUCH ? 18DB' 3F CCF 18DC' C0 RET NZ ;ERSTES BYTE FALSCH ? 18DD' 18 11 JR RASTART ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 18DF' RALOOP: 18DF' 08 EX AF,AF' 18E0' 30 05 JR NC,RAVERIFY ;NUR VERGLEICHEN ? 18E2' FD 75 00 LD (IY+0),L ;BYTE SPEICHERN 18E5' 18 05 JR RAGOON 18E7' RAVERIFY: 18E7' FD 7E 00 LD A,(IY+0) 18EA' AD XOR L 18EB' C0 RET NZ ;BYTE UNGLEICH ? 18EC' RAGOON: 18EC' FD 23 INC IY ;ZEIGER ERHOEHEN 18EE' 1B DEC DE ;ANZAHL ERNIEDRIGEN 18EF' 08 EX AF,AF' 18F0' RASTART: 18F0' CD 18FC' CALL RXBYTE 18F3' D0 RET NC ;ABBRUCH ? 18F4' 7A LD A,D 18F5' B3 OR E 18F6' 20 E7 JR NZ,RALOOP ;ANZAHL NOCH NICHT EMPFANGEN ? MACRO-80 3.44 09-Dec-81 PAGE 1-89 18F8' 7C LD A,H 18F9' FE 01 CP 1 ;C SETZEN, WENN PRUEFSUMME OK 18FB' RETURN: 18FB' C9 RET ;---------------------------------------------------------------- 18FC' RXBYTE: 18FC' 2E 01 LD L,1 ;FUER DIE BIT-ANZAHL 18FE' RB8LOOP: 18FE' 06 C7 LD B,-57 1900' CD 1911' CALL RXBIT 1903' D0 RET NC ;ABBRUCH ? 1904' 3E E2 LD A,-30 1906' B8 CP B ;LANGE ZEIT = 1-BIT 1907' CB 15 RL L 1909' D2 18FE' JP NC,RB8LOOP ;NOCH NICHT 8 BITS ? 190C' 7C LD A,H 190D' AD XOR L 190E' 67 LD H,A ;PRUEFSUMME BILDEN 190F' 37 SCF ;BYTE EMPFANGEN 1910' C9 RET ;---------------------------------------------------------------- 1911' RXBIT: 1911' CD 1915' CALL RXLEVEL 1914' D0 RET NC ;ABBRUCH ? 1915' RXLEVEL: 1915' 3E 14 LD A,20 1917' RBDELAY: 1917' 3D DEC A 1918' 20 FD JR NZ,RBDELAY ;KURZ WARTEN 191A' A7 AND A ;C LOESCHEN 191B' RBLOOP: 191B' 04 INC B 191C' C8 RET Z ;TIMEOUT ? 191D' 3E 7F LD A,7FH 191F' DB FE IN A,(IO) 1921' 1F RRA 1922' D0 RET NC ;BENUTZER-ABBRUCH ? 1923' A9 XOR C 1924' E6 10 AND 020H SHR 1 1926' 28 F3 JR Z,RBLOOP ;PEGEL GLEICH ? 1928' 79 LD A,C 1929' 2F CPL 192A' 4F LD C,A ;PEGEL MERKEN 192B' 37 SCF ;ALLES OK 192C' C9 RET ;================================================================ MACRO-80 3.44 09-Dec-81 PAGE 1-90 0000 FFLAG EQU 0 ;00/FF = WOERTERBUCH / BINAERDATEI 0001 FNLEN EQU 1 ;NAMENSLAENGE ; 2 ;DATEINAME 000B FLEN EQU 11 ;ANZAHL BYTES 000D FSTART EQU 13 ;STARTADRESSE 000F FDICT EQU 15 ;DICTIONARY 0011 FCURR EQU 17 ;VCURRENT ; 19 ;VCONTEXT ; 21 ;VOCLNK ; 23 ;STKBOT 0019 FSIZE EQU 25 ;GROESSE DIESES BLOCKS ;================================================================ 192D' 53 41 56 C5 DB 'SAV','E' OR CLAST 1931' 166F' DW LIST-1 1933' 04 DB 4 1934' SAVE: 1934' 0EC3' DW DOCOL 1936' 1A10' 1A4F' DW FILEFHEAD,DOSAVE 193A' 04B6' DW SEMIS ;================================================================ 193C' 42 53 41 56 DB 'BSAV','E' OR CLAST 1940' C5 1941' 1933' DW SAVE-1 1943' 05 DB 5 1944' BSAVE: 1944' 0EC3' DW DOCOL 1946' 1A3D' 1A4F' DW FILEBHEAD,DOSAVE 194A' 04B6' DW SEMIS ;================================================================ 194C' 42 4C 4F 41 DB 'BLOA','D' OR CLAST 1950' C4 1951' 1943' DW BSAVE-1 1953' 05 DB 5 1954' BLOAD: 1954' 0EC3' DW DOCOL 1956' 1A3D' 1A74' DW FILEBHEAD,READHEADER,DOBLOAD 195A' 1AB8' 195C' 04B6' DW SEMIS ;================================================================ 195E' 56 45 52 49 DB 'VERIF','Y' OR CLAST 1962' 46 D9 1964' 1953' DW BLOAD-1 1966' 06 DB 6 1967' VERIFY: 1967' 0EC3' DW DOCOL 1969' 1A10' DW FILEFHEAD 196B' 1271' 000F DW DOELSE,DOVERIFY-$-1 ;================================================================ 196F' 42 56 45 52 DB 'BVERIF','Y' OR CLAST 1973' 49 46 D9 1976' 1966' DW VERIFY-1 1978' 07 DB 7 1979' BVERIFY: 1979' 0EC3' DW DOCOL 197B' 1A3D' DW FILEBHEAD MACRO-80 3.44 09-Dec-81 PAGE 1-91 197D' DOVERIFY: 197D' 1A74' 1ABE' DW READHEADER,DOBVERIFY 1981' 04B6' DW SEMIS ;================================================================ 1983' 4C 4F 41 C4 DB 'LOA','D' OR CLAST 1987' 1978' DW BVERIFY-1 1989' 04 DB 4 198A' LOAD: 198A' 0EC3' DW DOCOL 198C' 1A10' DW FILEFHEAD 198E' 1A0E' DW SEMICODE 1990' 2A 3C37 LD HL,(STKBOT) 1993' 22 230E LD (FPADMEM+FSTART),HL ;START 1996' EB EX DE,HL 1997' 21 FFCC LD HL,-52 199A' 39 ADD HL,SP 199B' A7 AND A 199C' ED 52 SBC HL,DE 199E' 22 230C LD (FPADMEM+FLEN),HL ;GROESSE FREIER SPEICHER 19A1' CD 04B9' CALL NEXT 19A4' 1A74' 1AB8' DW READHEADER,DOBLOAD 19A8' 1A0E' DW SEMICODE 19AA' ED 4B 3C37 LD BC,(STKBOT) 19AE' 21 3C50 LD HL,FREEMEM-1 19B1' 22 2701 LD (PADMEM+RDONAME),HL 19B4' 23 INC HL 19B5' 22 2709 LD (PADMEM+RDOEND),HL ;KORREKTUR VORBEREITEN 19B8' 2A 2325 LD HL,(FPADMEM+FSIZE+FLEN) 19BB' 09 ADD HL,BC 19BC' 22 3C37 LD (STKBOT),HL ;SPEICHER BELEGEN 19BF' 21 C3AF LD HL,-FREEMEM 19C2' 09 ADD HL,BC 19C3' 22 270B LD (PADMEM+RDDLEN),HL 19C6' ED 5B 2329 LD DE,(FPADMEM+FSIZE+FDICT) 19CA' 19 ADD HL,DE 19CB' ED 5B 3C4C LD DE,(FORTH+2+RAMVAR-ROMVAR) 19CF' 22 3C4C LD (FORTH+2+RAMVAR-ROMVAR),HL ;NEUES ENDE 19D2' C5 PUSH BC 19D3' D5 PUSH DE 19D4' ED 73 270D LD (PADMEM+RDNNAME),SP 19D8' CD 1504' CALL CORRDICT ;GELADENES DICT. EINBINDEN 19DB' C1 POP BC 19DC' E1 POP HL 19DD' LDNLOOP: 19DD' CB 7E BIT 7,(HL) 19DF' 23 INC HL 19E0' 28 FB JR Z,LDNLOOP ;NAMEN UEBERSPRINGEN 19E2' 23 INC HL MACRO-80 3.44 09-Dec-81 PAGE 1-92 19E3' 23 INC HL 19E4' 71 LD (HL),C 19E5' 23 INC HL 19E6' 70 LD (HL),B ;LAENGE DES DICT.S SPEICHERN 19E7' 2A 3C37 LD HL,(STKBOT) 19EA' 01 000C LD BC,SAFETY 19ED' 09 ADD HL,BC 19EE' 22 3C3B LD (SPARE),HL ;PARAMETER-STACK SETZEN 19F1' FD E9 JP (IY) ;================================================================ 19F3' FILENAME: 19F3' 0EC3' DW DOCOL 19F5' 104B' DW GETBYTE 19F7' 20 DB ' ' 19F8' 05AB' DW WORD 19FA' 1A0E' DW SEMICODE ;NAMEN HOLEN 19FC' CD 0F2E' CALL LINKHERE RSTPULL 19FF' DF + RST 018H 1A00' 3E 20 LD A,' ' 1A02' 12 LD (DE),A ;NAMENSLAENGE DURCH ' ' ERSETZEN 1A03' 11 270C LD DE,PADMEM+FLEN 1A06' 21 27FF LD HL,SCRMEND-1 1A09' CD 07FA' CALL BLANKS ;PUFFER LOESCHEN 1A0C' FD E9 JP (IY) ;================================================================ 1A0E' SEMICODE: 1A0E' 18FB' DW RETURN ;================================================================ 1A10' FILEFHEAD: 1A10' 0EC3' DW DOCOL 1A12' 19F3' DW FILENAME 1A14' 1A0E' DW SEMICODE 1A16' AF XOR A 1A17' 32 2301 LD (FPADMEM+FFLAG),A 1A1A' 21 3C51 LD HL,FREEMEM 1A1D' 22 230E LD (FPADMEM+FSTART),HL 1A20' EB EX DE,HL 1A21' 2A 3C37 LD HL,(STKBOT) 1A24' A7 AND A 1A25' ED 52 SBC HL,DE 1A27' 22 230C LD (FPADMEM+FLEN),HL 1A2A' 2A 3C4C LD HL,(FORTH+2+RAMVAR-ROMVAR) 1A2D' 22 2310 LD (FPADMEM+FDICT),HL 1A30' 21 3C31 LD HL,VCURRENT 1A33' 11 2312 LD DE,FPADMEM+FCURR 1A36' 01 0008 LD BC,8 1A39' ED B0 LDIR ;HEADER VORBEREITEN 1A3B' FD E9 JP (IY) ;================================================================ 1A3D' FILEBHEAD: 1A3D' 0EC3' DW DOCOL 1A3F' 19F3' DW FILENAME 1A41' 1011' 230C DW GETWORD,FPADMEM+FLEN,EXCLAM MACRO-80 3.44 09-Dec-81 PAGE 1-93 1A45' 08C1' 1A47' 1011' 230E DW GETWORD,FPADMEM+FSTART,EXCLAM 1A4B' 08C1' 1A4D' 04B6' DW SEMIS ;================================================================ 1A4F' DOSAVE: 1A4F' 1A51' DW $+2 1A51' 3A 2302 LD A,(FPADMEM+FNLEN) 1A54' A7 AND A 1A55' 28 5F JR Z,RXERROR ;KEIN NAME ? 1A57' 2A 230C LD HL,(FPADMEM+FLEN) 1A5A' 7C LD A,H 1A5B' B5 OR L 1A5C' 28 58 JR Z,RXERROR ;LAENGE = 0 ? 1A5E' E5 PUSH HL 1A5F' 11 0019 LD DE,25 1A62' 21 2301 LD HL,FPADMEM+FFLAG 1A65' 4A LD C,D 1A66' CD 1820' CALL TXALL ;HEADER SENDEN 1A69' D1 POP DE 1A6A' 2A 230E LD HL,(FPADMEM+FSTART) 1A6D' 0E FF LD C,-1 1A6F' CD 1820' CALL TXALL ;DATEN SENDEN 1A72' FD E9 JP (IY) ;---------------------------------------------------------------- 1A74' READHEADER: 1A74' 1A76' DW $+2 1A76' RHLOOP: 1A76' 11 0019 LD DE,25 1A79' 21 231A LD HL,FPADMEM+FSIZE+FFLAG 1A7C' 4A LD C,D 1A7D' 37 SCF 1A7E' CD 18A7' CALL RXALL ;HEADER LESEN 1A81' 30 F3 JR NC,RHLOOP ;NOCH NICHT OK ? 1A83' 11 231A LD DE,FPADMEM+FSIZE+FFLAG 1A86' 1A LD A,(DE) 1A87' A7 AND A 1A88' 20 0B JR NZ,RHBINARY ;BINAER-DATEI ? 1A8A' CD 1808' CALL ROMTXT 1A8D' 0D 44 69 63 DB CCR,'Dict',':' OR CLAST 1A91' 74 BA 1A93' 18 0A JR RHCHECK 1A95' RHBINARY: 1A95' CD 1808' CALL ROMTXT 1A98' 0D 42 79 74 DB CCR,'Bytes',':' OR CLAST 1A9C' 65 73 BA 1A9F' RHCHECK: 1A9F' 21 2301 LD HL,FPADMEM+FFLAG MACRO-80 3.44 09-Dec-81 PAGE 1-94 1AA2' 01 0B0B LD BC,11 + (11 SHL 8) 1AA5' 18 02 JR RHCSTART 1AA7' RHCLOOP: 1AA7' 1A LD A,(DE) RSTEMIT ;NAMEN AUSGEBEN 1AA8' CF + RST 008H 1AA9' RHCSTART: 1AA9' 1A LD A,(DE) 1AAA' BE CP (HL) 1AAB' 20 01 JR NZ,RHCNEXT ;ZEICHEN UNGLEICH ? 1AAD' 0D DEC C 1AAE' RHCNEXT: 1AAE' 23 INC HL 1AAF' 13 INC DE 1AB0' 10 F5 DJNZ RHCLOOP ;NOCH NICHT ALLE ZEICHEN ? 1AB2' 20 C2 JR NZ,RHLOOP ;NAME UNGLEICH ? 1AB4' FD E9 JP (IY) ;---------------------------------------------------------------- 1AB6' RXERROR: RSTERR ERRREAD 1AB6' E7 + RST 020H 1AB7' 0A + DB ERRREAD ;---------------------------------------------------------------- 1AB8' DOBLOAD: 1AB8' 1ABA' DW $+2 1ABA' 06 FF LD B,-1 ;LESEN 1ABC' 18 12 JR DOBREAD ;---------------------------------------------------------------- 1ABE' DOBVERIFY: 1ABE' 1AC0' DW $+2 1AC0' 21 2312 LD HL,FPADMEM+FCURR 1AC3' 11 232B LD DE,FPADMEM+FSIZE+FCURR 1AC6' 06 08 LD B,8 1AC8' DBVLOOP: 1AC8' 1A LD A,(DE) 1AC9' 13 INC DE 1ACA' BE CP (HL) 1ACB' 23 INC HL 1ACC' 20 E8 JR NZ,RXERROR 1ACE' 10 F8 DJNZ DBVLOOP ;VARIABLEN VERGLEICHEN 1AD0' DOBREAD: 1AD0' 2A 230C LD HL,(FPADMEM+FLEN) 1AD3' ED 5B 2325 LD DE,(FPADMEM+FSIZE+FLEN) 1AD7' 7C LD A,H 1AD8' B5 OR L 1AD9' 28 04 JR Z,DBRGOON1 ;LAENGE NICHT TESTEN ? 1ADB' ED 52 SBC HL,DE 1ADD' 38 D7 JR C,RXERROR 1ADF' DBRGOON1: 1ADF' 2A 230E LD HL,(FPADMEM+FSTART) MACRO-80 3.44 09-Dec-81 PAGE 1-95 1AE2' 7C LD A,H 1AE3' B5 OR L 1AE4' 20 03 JR NZ,DBRGOON2 ;STARTADRESSE UEBERNEHMEN ? 1AE6' 2A 2327 LD HL,(FPADMEM+FSIZE+FSTART) 1AE9' DBRGOON2: 1AE9' 0E FF LD C,-1 1AEB' CB 18 RR B ;READ/VERIFY-FLAG HOLEN 1AED' CD 18A7' CALL RXALL ;DATEN LESEN 1AF0' 30 C4 JR NC,RXERROR ;ABBRUCH ? 1AF2' FD E9 JP (IY) ;================================================================ 0000 FEXP1 EQU 0 ;EXPONENT OBERE ZAHL / ERGEBNIS 0001 FEXP2 EQU 1 ;EXPONENT UNTERE ZAHL 0002 FSGN EQU 2 ;VORZEICHEN 7=UNTEN 6=OBEN 0003 FACCU EQU 3 ;AKKUMULATOR 0007 FQUO EQU 7 ;QUOTIENT 0010 FDIVOR EQU 16 ;DIVISOR ;================================================================ 1AF4' FINIT: 1AF4' 01 3C0F LD BC,FPWS+FDIVOR-1 1AF7' AF XOR A 1AF8' FICLEAR: 1AF8' 02 LD (BC),A 1AF9' 0D DEC C ;(ETWAS UNSAUBER!!!) 1AFA' 20 FC JR NZ,FICLEAR ;PUFFER LOESCHEN 1AFC' 2A 3C3B LD HL,(SPARE) 1AFF' 11 FFFC LD DE,-4 1B02' 2B DEC HL 1B03' 4E LD C,(HL) ;EXPONENT OBERE ZAHL MERKEN 1B04' 77 LD (HL),A ; UND LOESCHEN 1B05' 19 ADD HL,DE 1B06' 23 INC HL 1B07' 22 3C3B LD (SPARE),HL ;"TOS" LOESCHEN 1B0A' 2B DEC HL 1B0B' 46 LD B,(HL) ;EXPONENT UNTERE ZAHL MERKEN 1B0C' 77 LD (HL),A ; UND LOESCHEN 1B0D' 79 LD A,C 1B0E' 0F RRCA 1B0F' A8 XOR B 1B10' E6 7F AND NOT FSIGN 1B12' A8 XOR B 1B13' 32 3C02 LD (FPWS+FSGN),A ;VORZEICHEN MERKEN 1B16' CB B8 RES 7,B 1B18' CB B9 RES 7,C 1B1A' ED 43 3C00 LD (FPWS+FEXP1),BC ;EXPONENTEN SPEICHERN 1B1E' 23 INC HL 1B1F' EB EX DE,HL ;ZEIGER AUF OBERE ZAHL 1B20' 19 ADD HL,DE ;ZEIGER AUF UNTERE ZAHL 1B21' C9 RET ;---------------------------------------------------------------- 1B22' FADJUST: 1B22' 3E 09 LD A,9 1B24' B8 CP B 1B25' 30 01 JR NC,FADJLP1 ;EXPONENTENDIFFERENZ BEGRENZEN MACRO-80 3.44 09-Dec-81 PAGE 1-96 1B27' 47 LD B,A 1B28' FADJLP1: 1B28' 0E 04 LD C,4 1B2A' 23 INC HL 1B2B' 23 INC HL 1B2C' 23 INC HL 1B2D' AF XOR A 1B2E' FADJLP2: 1B2E' ED 67 RRD 1B30' 2B DEC HL 1B31' 0D DEC C 1B32' 20 FA JR NZ,FADJLP2 ;KLEINERE ZAHL DIVIDIEREN 1B34' 23 INC HL 1B35' 10 F1 DJNZ FADJLP1 ;BIS DIFFERENZ ERREICHT 1B37' C6 FB ADD A,-5 ;WAR LETZTE STELLE >= 5 ? 1B39' E5 PUSH HL 1B3A' FADJLP3: 1B3A' 7E LD A,(HL) 1B3B' 88 ADC A,B 1B3C' 27 DAA 1B3D' 77 LD (HL),A 1B3E' 23 INC HL 1B3F' 38 F9 JR C,FADJLP3 ;RUNDEN 1B41' E1 POP HL 1B42' C9 RET ;---------------------------------------------------------------- 1B43' FNEG: 1B43' C5 PUSH BC 1B44' E5 PUSH HL 1B45' 06 04 LD B,4 1B47' A7 AND A 1B48' FNLOOP: 1B48' 3E 00 LD A,0 1B4A' 9E SBC A,(HL) 1B4B' 27 DAA 1B4C' 77 LD (HL),A 1B4D' 23 INC HL 1B4E' 10 F8 DJNZ FNLOOP ;ALLE STELLEN NEGIEREN 1B50' E1 POP HL 1B51' C1 POP BC 1B52' C9 RET ;---------------------------------------------------------------- 1B53' FADDITION: 1B53' 0E 01 LD C,1 ;MULTIPLIKATOR 1 1B55' FMULADD: 1B55' E5 PUSH HL 1B56' D5 PUSH DE 1B57' C5 PUSH BC 1B58' 79 LD A,C 1B59' E6 0F AND 0FH 1B5B' 47 LD B,A 1B5C' A9 XOR C 1B5D' 4F LD C,A MACRO-80 3.44 09-Dec-81 PAGE 1-97 1B5E' 0F RRCA 1B5F' 0F RRCA 1B60' 81 ADD A,C 1B61' 0F RRCA 1B62' 80 ADD A,B 1B63' 4F LD C,A ;BCD ZU BINAER WANDELN 1B64' 06 04 LD B,4 1B66' AF XOR A 1B67' FMLOOP1: 1B67' C5 PUSH BC 1B68' D5 PUSH DE 1B69' E5 PUSH HL 1B6A' 86 ADD A,(HL) 1B6B' 27 DAA 1B6C' 6F LD L,A 1B6D' 1A LD A,(DE) 1B6E' 26 00 LD H,0 1B70' 54 LD D,H 1B71' CB 14 RL H ;UEBERTRAG AUS ADDITION 1B73' A7 AND A 1B74' 28 1B JR Z,FMNEXT ;STELLE = 0 ? 1B76' 5F LD E,A 1B77' FMLOOP2: 1B77' CB 39 SRL C 1B79' 30 08 JR NC,FMNOADD ;MULTIPLIKATOR-BIT = 0 ? 1B7B' 7D LD A,L 1B7C' 83 ADD A,E 1B7D' 27 DAA 1B7E' 6F LD L,A 1B7F' 7C LD A,H 1B80' 8A ADC A,D 1B81' 27 DAA 1B82' 67 LD H,A ;ADDITION 1B83' FMNOADD: 1B83' 0C INC C 1B84' 0D DEC C 1B85' 28 0A JR Z,FMNEXT ;MULTIPLIKATOR = 0 ? 1B87' 7B LD A,E 1B88' 87 ADD A,A 1B89' 27 DAA 1B8A' 5F LD E,A 1B8B' 7A LD A,D 1B8C' 8F ADC A,A 1B8D' 27 DAA 1B8E' 57 LD D,A ;ERGEBNIS SCHIEBEN 1B8F' 18 E6 JR FMLOOP2 ;NOCHMAL 1B91' FMNEXT: 1B91' EB EX DE,HL 1B92' E1 POP HL 1B93' 73 LD (HL),E 1B94' 7A LD A,D 1B95' D1 POP DE 1B96' C1 POP BC 1B97' 13 INC DE MACRO-80 3.44 09-Dec-81 PAGE 1-98 1B98' 23 INC HL 1B99' 10 CC DJNZ FMLOOP1 ;NOCH NICHT ALLE BYTES ? 1B9B' C1 POP BC 1B9C' D1 POP DE 1B9D' E1 POP HL 1B9E' C9 RET ;================================================================ 1B9F' 46 AD DB 'F','-' OR CLAST 1BA1' 1989' DW LOAD-1 1BA3' 02 DB 2 1BA4' FMINUS: 1BA4' 0EC3' DW DOCOL 1BA6' 1D0F' DW FNEGATE 1BA8' 1A0E' DW SEMICODE 1BAA' 18 07 JR FADDSUB ;================================================================ 1BAC' 46 AB DB 'F','+' OR CLAST 1BAE' 1BA3' DW FMINUS-1 1BB0' 02 DB 2 1BB1' FPLUS: 1BB1' 1BB3' DW FADDSUB 1BB3' FADDSUB: 1BB3' CD 1AF4' CALL FINIT ;BEARBEITUNG VORBEREITEN 1BB6' 79 LD A,C 1BB7' 90 SUB B 1BB8' F5 PUSH AF 1BB9' 30 06 JR NC,FASGOON1 ;EXPONENT UNTEN<=OBEN ? 1BBB' EB EX DE,HL 1BBC' ED 44 NEG 1BBE' DD 70 00 LD (IX+FPWS+FEXP1-MEMBEG),B ;ZAHLEN TAUSCHEN 1BC1' FASGOON1: 1BC1' 47 LD B,A 1BC2' C4 1B22' CALL NZ,FADJUST ;BEI BEDARF ANDERE ZAHL ANPASSEN 1BC5' F1 POP AF 1BC6' 30 01 JR NC,FASGOON2 ;EXPONENT UNTEN<=OBEN ? 1BC8' EB EX DE,HL 1BC9' FASGOON2: 1BC9' 06 02 LD B,2 1BCB' DD 4E 02 LD C,(IX+FPWS+FSGN-MEMBEG) 1BCE' FASLP1: 1BCE' CB 11 RL C 1BD0' DC 1B43' CALL C,FNEG 1BD3' EB EX DE,HL 1BD4' 10 F8 DJNZ FASLP1 ;BEI BEDARF ZAHLEN NEGIEREN 1BD6' CD 1B53' CALL FADDITION 1BD9' 1B DEC DE 1BDA' 1A LD A,(DE) 1BDB' C6 68 ADD A,-98H 1BDD' CB 18 RR B 1BDF' DD 70 02 LD (IX+FPWS+FSGN-MEMBEG),B ;NEUES VORZEICHEN MERKEN 1BE2' C4 1B43' CALL NZ,FNEG ;BEI BEDARF NEGIEREN MACRO-80 3.44 09-Dec-81 PAGE 1-99 1BE5' FASLP2: 1BE5' 1A LD A,(DE) 1BE6' A7 AND A 1BE7' 20 19 JR NZ,FASGOON3 ;OBERSTE STELLEN <> 0 ? 1BE9' DD 35 00 DEC (IX+FPWS+FEXP1-MEMBEG) 1BEC' DD 35 00 DEC (IX+FPWS+FEXP1-MEMBEG) ;EXPONENT KORRIGIEREN 1BEF' D5 PUSH DE 1BF0' 62 LD H,D 1BF1' 6B LD L,E 1BF2' 2B DEC HL 1BF3' 01 03FF LD BC,255+(3 SHL 8) ;C LADEN WEGEN "LDD" 1BF6' FASLP3: 1BF6' B6 OR (HL) 1BF7' ED A8 LDD 1BF9' 10 FB DJNZ FASLP3 ;STELLEN SCHIEBEN 1BFB' EB EX DE,HL 1BFC' 70 LD (HL),B 1BFD' D1 POP DE 1BFE' 20 E5 JR NZ,FASLP2 ;ZAHL <> 0 ? 1C00' FD E9 JP (IY) 1C02' FASGOON3: 1C02' 54 LD D,H 1C03' 5D LD E,L ;ZAHL NOCH NICHT SCHIEBEN ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1C04' FCORR: 1C04' D5 PUSH DE 1C05' 01 0004 LD BC,4 1C08' ED B0 LDIR ;ZAHL SCHIEBEN 1C0A' E1 POP HL 1C0B' 1B DEC DE 1C0C' FCLP: 1C0C' 1A LD A,(DE) 1C0D' A7 AND A 1C0E' 28 11 JR Z,FCQUIT ;STELLEN = 0 ? 1C10' FE 10 CP 10H 1C12' 9F SBC A,A 1C13' 3C INC A 1C14' 3C INC A 1C15' 47 LD B,A 1C16' DD 86 00 ADD A,(IX+FPWS+FEXP1-MEMBEG) 1C19' 32 3C00 LD (FPWS+FEXP1),A ;EXPONENT KORRIGIEREN 1C1C' CD 1B22' CALL FADJUST 1C1F' 18 EB JR FCLP 1C21' FCQUIT: 1C21' 3A 3C00 LD A,(FPWS+FEXP1) 1C24' 3D DEC A 1C25' FE BF CP -FEOFFS-1 1C27' 3C INC A 1C28' 30 13 JR NC,FLT0 ;ZAHL ZU KLEIN ? 1C2A' FE 80 CP +FEOFFS+64 1C2C' 30 0D JR NC,FLTERR ;ZAHL ZU GROSS ? MACRO-80 3.44 09-Dec-81 PAGE 1-100 1C2E' 47 LD B,A 1C2F' 3A 3C02 LD A,(FPWS+FSGN) 1C32' 4F LD C,A 1C33' 17 RLA 1C34' A9 XOR C 1C35' E6 80 AND FSIGN 1C37' A8 XOR B 1C38' 12 LD (DE),A ;VORZEICHEN UND EXPONENT 1C39' FD E9 JP (IY) 1C3B' FLTERR: RSTERR ERRFLT 1C3B' E7 + RST 020H 1C3C' 08 + DB ERRFLT 1C3D' FLT0: 1C3D' 01 0400 LD BC,0+(4 SHL 8) 1C40' FLT0LP: 1C40' 71 LD (HL),C 1C41' 23 INC HL 1C42' 10 FC DJNZ FLT0LP ;ZAHL AUF 0 SETZEN 1C44' FD E9 JP (IY) ;================================================================ 1C46' 46 AA DB 'F','*' OR CLAST 1C48' 1BB0' DW FPLUS-1 1C4A' 02 DB 2 1C4B' FMUL: 1C4B' 1C4D' DW $+2 1C4D' CD 1AF4' CALL FINIT ;BEARBEITUNG VORBEREITEN 1C50' AF XOR A 1C51' B8 CP B 1C52' 9F SBC A,A 1C53' A1 AND C 1C54' 28 E7 JR Z,FLT0 ;EINE DER BEIDEN ZAHLEN = 0 ? 1C56' E5 PUSH HL 1C57' 01 3C02 LD BC,FPWS+FACCU-1 1C5A' C5 PUSH BC 1C5B' 06 03 LD B,3 1C5D' FMLOOP: 1C5D' 4E LD C,(HL) 1C5E' 23 INC HL 1C5F' E3 EX (SP),HL 1C60' 23 INC HL 1C61' CD 1B55' CALL FMULADD 1C64' E3 EX (SP),HL 1C65' 10 F6 DJNZ FMLOOP ;ALLE DOPPELSTELLEN MULTIPL. 1C67' ED 4B 3C00 LD BC,(FPWS+FEXP1) 1C6B' 78 LD A,B 1C6C' 81 ADD A,C 1C6D' D6 42 SUB FEOFFS+2 1C6F' 32 3C00 LD (FPWS+FEXP1),A ;EXPONENTEN BERECHNEN 1C72' E1 POP HL MACRO-80 3.44 09-Dec-81 PAGE 1-101 1C73' D1 POP DE 1C74' 18 8E JR FCORR ;================================================================ 1C76' 46 AF DB 'F','/' OR CLAST 1C78' 1C4A' DW FMUL-1 1C7A' 02 DB 2 1C7B' FDIV: 1C7B' 1C7D' DW $+2 1C7D' CD 1AF4' CALL FINIT ;BEARBEITUNG VORBEREITEN 1C80' AF XOR A 1C81' B8 CP B 1C82' 28 B9 JR Z,FLT0 ;DIVIDEND = 0 ? 1C84' B9 CP C 1C85' 28 B4 JR Z,FLTERR ;DIVISOR = 0 ? 1C87' 13 INC DE 1C88' 13 INC DE 1C89' 1A LD A,(DE) 1C8A' 1B DEC DE 1C8B' 1B DEC DE 1C8C' C6 01 ADD A,1 1C8E' 27 DAA 1C8F' 08 EX AF,AF' ;TEST AUF 0.99????E?? 1C90' EB EX DE,HL 1C91' CD 1B43' CALL FNEG ;OBERE ZAHL FUER SUBTR. NEGIEREN 1C94' EB EX DE,HL 1C95' E5 PUSH HL 1C96' 11 3C10 LD DE,FPWS+FDIVOR 1C99' 01 0004 LD BC,4 1C9C' ED B0 LDIR ;UNTERE ZAHL ZWISCHENSPEICHERN 1C9E' EB EX DE,HL 1C9F' 2B DEC HL 1CA0' 06 05 LD B,5 ;ANZAHL DIVISOR-STELLEN 1CA2' FDLOOP1: 1CA2' D5 PUSH DE 1CA3' 7E LD A,(HL) 1CA4' 2B DEC HL 1CA5' 5E LD E,(HL) 1CA6' 08 EX AF,AF' 1CA7' 4F LD C,A 1CA8' 08 EX AF,AF' 1CA9' 0C INC C 1CAA' 0D DEC C 1CAB' 20 03 JR NZ,FDGOON1 ;WAR ZAHL < 0.990000EXX ? 1CAD' 5F LD E,A 1CAE' 18 1B JR FDGOON2 1CB0' FDGOON1: 1CB0' C5 PUSH BC 1CB1' 06 02 LD B,2 ;2 DIGIT PRO BYTE 1CB3' FDLOOP2: MACRO-80 3.44 09-Dec-81 PAGE 1-102 1CB3' 16 10 LD D,10H 1CB5' FDLOOP3: 1CB5' CB 23 SLA E 1CB7' 17 RLA 1CB8' CB 12 RL D 1CBA' 30 F9 JR NC,FDLOOP3 ;D-A-E UM EIN DIGIT SCHIEBEN 1CBC' 14 INC D 1CBD' FDLOOP4: 1CBD' 91 SUB C 1CBE' 27 DAA 1CBF' 1C INC E 1CC0' 30 FB JR NC,FDLOOP4 1CC2' 15 DEC D 1CC3' 20 F8 JR NZ,FDLOOP4 ;TEILDIVISION DURCH SUBTRAKTION 1CC5' 81 ADD A,C 1CC6' 27 DAA 1CC7' 1D DEC E 1CC8' 10 E9 DJNZ FDLOOP2 ;EINZELQUOTIENTEN BERECHNEN 1CCA' C1 POP BC 1CCB' FDGOON2: 1CCB' 4B LD C,E 1CCC' D1 POP DE 1CCD' 0C INC C 1CCE' 0D DEC C 1CCF' 28 17 JR Z,FDNEXT ;EINZELQUOTIENT = 0 ? 1CD1' E5 PUSH HL 1CD2' 2B DEC HL 1CD3' 2B DEC HL 1CD4' CD 1B55' CALL FMULADD ;SUBTRAKTION DURCHFUEHREN 1CD7' D5 PUSH DE 1CD8' 11 FFFB LD DE,FQUO-FDIVOR+4 1CDB' 19 ADD HL,DE ;ZEIGER AUSRICHTEN 1CDC' 11 3C03 LD DE,FPWS+FACCU 1CDF' 79 LD A,C 1CE0' 12 LD (DE),A 1CE1' CD 1B53' CALL FADDITION ;QUOTIENT AKKUMULIEREN 1CE4' D1 POP DE 1CE5' E1 POP HL 1CE6' 23 INC HL 1CE7' 04 INC B 1CE8' FDNEXT: 1CE8' 10 B8 DJNZ FDLOOP1 ;UND NOCH EINE RUNDE... 1CEA' 2A 3C00 LD HL,(FPWS+FEXP1) 1CED' 7C LD A,H 1CEE' 95 SUB L 1CEF' C6 40 ADD A,FEOFFS 1CF1' 21 3C08 LD HL,FPWS+FQUO+1 1CF4' 47 LD B,A 1CF5' 3A 3C0B LD A,(FPWS+FQUO+4) 1CF8' A7 AND A 1CF9' 20 03 JR NZ,FDGOON3 1CFB' 05 DEC B 1CFC' 05 DEC B MACRO-80 3.44 09-Dec-81 PAGE 1-103 1CFD' 2B DEC HL ;EXPONENTEN-KORREKTUR 1CFE' FDGOON3: 1CFE' DD 70 00 LD (IX+FPWS+FEXP1-MEMBEG),B ;NEUER EXPONENT 1D01' D1 POP DE 1D02' C3 1C04' JP FCORR ;ERGEBNIS KORRIGIEREN ;================================================================ 1D05' 46 4E 45 47 DB 'FNEGAT','E' OR CLAST 1D09' 41 54 C5 1D0C' 1C7A' DW FDIV-1 1D0E' 07 DB 7 1D0F' FNEGATE: 1D0F' 1D11' DW $+2 RSTPULL 1D11' DF + RST 018H 1D12' 7A LD A,D 1D13' A7 AND A 1D14' 28 02 JR Z,FNQUIT 1D16' EE 80 XOR 80H ;ZAHLEN <> 0 NEGIEREN 1D18' FNQUIT: 1D18' 57 LD D,A RSTPUSH 1D19' D7 + RST 010H 1D1A' FD E9 JP (IY) ;================================================================ 1D1C' 49 4E D4 DB 'IN','T' OR CLAST 1D1F' 1D0E' DW FNEGATE-1 1D21' 03 DB 3 1D22' INT: 1D22' 1D24' DW $+2 1D24' 2A 3C3B LD HL,(SPARE) 1D27' 2B DEC HL 1D28' 11 0000 LD DE,0 ;WERT LOESCHEN 1D2B' INTLOOP: 1D2B' 7E LD A,(HL) ;EXPONENT HOLEN 1D2C' 07 RLCA 1D2D' FE 82 CP 0+(FEOFFS+1) SHL 1 1D2F' 38 14 JR C,INTQUIT ;ABS(ZAHL) < 1.0 ? 1D31' AF XOR A 1D32' 2B DEC HL 1D33' CD 0732' CALL DECSTORE ;UM EIN DIGIT LINKS SCHIEBEN 1D36' 23 INC HL 1D37' EB EX DE,HL 1D38' 44 LD B,H 1D39' 4D LD C,L 1D3A' 29 ADD HL,HL 1D3B' 29 ADD HL,HL 1D3C' 09 ADD HL,BC 1D3D' 29 ADD HL,HL ;WERT * 10 1D3E' 4F LD C,A 1D3F' 06 00 LD B,0 1D41' 09 ADD HL,BC ;HERAUSGESCHOBENES DIGIT ADDIEREN 1D42' EB EX DE,HL MACRO-80 3.44 09-Dec-81 PAGE 1-104 1D43' 18 E6 JR INTLOOP 1D45' INTQUIT: 1D45' 2B DEC HL 1D46' 2B DEC HL 1D47' 72 LD (HL),D 1D48' 2B DEC HL 1D49' 73 LD (HL),E 1D4A' 11 0D94' LD DE,IFN0NEG 1D4D' C3 04BF' JP NEXTDE ;VORZEICHEN ANPASSEN ;================================================================ 1D50' 55 46 4C 4F DB 'UFLOA','T' OR CLAST 1D54' 41 D4 1D56' 1D21' DW INT-1 1D58' 06 DB 6 1D59' UFLOAT: 1D59' 1D5B' DW $+2 RSTPULL 1D5B' DF + RST 018H 1D5C' EB EX DE,HL 1D5D' 01 1000 LD BC,0 OR (16 SHL 8) 1D60' 51 LD D,C 1D61' 59 LD E,C 1D62' UFLOOP: 1D62' 29 ADD HL,HL 1D63' 7B LD A,E 1D64' 8F ADC A,A 1D65' 27 DAA 1D66' 5F LD E,A 1D67' 7A LD A,D 1D68' 8F ADC A,A 1D69' 27 DAA 1D6A' 57 LD D,A 1D6B' CB 11 RL C 1D6D' 10 F3 DJNZ UFLOOP ;IN BCD-ZAHL WANDELN RSTPUSH 1D6F' D7 + RST 010H 1D70' 16 46 LD D,FEOFFS+6 1D72' 59 LD E,C RSTPUSH ;ZAHL SPEICHERN 1D73' D7 + RST 010H 1D74' 2B DEC HL 1D75' 2B DEC HL 1D76' CD 0740' CALL FZEROEQ ;EXPONENT BEI 0 ANPASSEN 1D79' FD E9 JP (IY) ;================================================================ ; ZEICHENSATZ 1D7B' 00 00 00 00 DB 000H,000H,000H,000H 1D7F' 00 00 00 DB 000H,000H,000H ;........ ;........ ;........ ;........ ;........ ;........ MACRO-80 3.44 09-Dec-81 PAGE 1-105 ;........ 1D82' 10 10 10 10 DB 010H,010H,010H,010H 1D86' 00 10 00 DB 000H,010H,000H ;...*.... ;...*.... ;...*.... ;...*.... ;........ ;...*.... ;........ 1D89' 24 24 00 00 DB 024H,024H,000H,000H 1D8D' 00 00 00 DB 000H,000H,000H ;..*..*.. ;..*..*.. ;........ ;........ ;........ ;........ ;........ 1D90' 24 7E 24 24 DB 024H,07EH,024H,024H 1D94' 7E 24 00 DB 07EH,024H,000H ;..*..*.. ;.******. ;..*..*.. ;..*..*.. ;.******. ;..*..*.. ;........ 1D97' 08 3E 28 3E DB 008H,03EH,028H,03EH 1D9B' 0A 3E 08 DB 00AH,03EH,008H ;....*... ;..*****. ;..*.*... ;..*****. ;....*.*. ;..*****. ;....*... 1D9E' 62 64 08 10 DB 062H,064H,008H,010H 1DA2' 26 46 00 DB 026H,046H,000H ;.**...*. ;.**..*.. ;....*... ;...*.... ;..*..**. ;.*...**. ;........ 1DA5' 10 28 10 2A DB 010H,028H,010H,02AH 1DA9' 44 3A 00 DB 044H,03AH,000H ;...*.... ;..*.*... ;...*.... ;..*.*.*. ;.*...*.. ;..***.*. ;........ 1DAC' 08 10 00 00 DB 008H,010H,000H,000H 1DB0' 00 00 00 DB 000H,000H,000H ;....*... ;...*.... ;........ ;........ ;........ ;........ MACRO-80 3.44 09-Dec-81 PAGE 1-106 ;........ 1DB3' 04 08 08 08 DB 004H,008H,008H,008H 1DB7' 08 04 00 DB 008H,004H,000H ;.....*.. ;....*... ;....*... ;....*... ;....*... ;.....*.. ;........ 1DBA' 20 10 10 10 DB 020H,010H,010H,010H 1DBE' 10 20 00 DB 010H,020H,000H ;..*..... ;...*.... ;...*.... ;...*.... ;...*.... ;..*..... ;........ 1DC1' 00 14 08 3E DB 000H,014H,008H,03EH 1DC5' 08 14 00 DB 008H,014H,000H ;........ ;...*.*.. ;....*... ;..*****. ;....*... ;...*.*.. ;........ 1DC8' 00 08 08 3E DB 000H,008H,008H,03EH 1DCC' 08 08 00 DB 008H,008H,000H ;........ ;....*... ;....*... ;..*****. ;....*... ;....*... ;........ 1DCF' 00 00 00 00 DB 000H,000H,000H,000H 1DD3' 08 08 10 DB 008H,008H,010H ;........ ;........ ;........ ;........ ;....*... ;....*... ;...*.... 1DD6' 00 00 00 3E DB 000H,000H,000H,03EH 1DDA' 00 00 00 DB 000H,000H,000H ;........ ;........ ;........ ;..*****. ;........ ;........ ;........ 1DDD' 00 00 00 00 DB 000H,000H,000H,000H 1DE1' 18 18 00 DB 018H,018H,000H ;........ ;........ ;........ ;........ ;...**... ;...**... MACRO-80 3.44 09-Dec-81 PAGE 1-107 ;........ 1DE4' 00 02 04 08 DB 000H,002H,004H,008H 1DE8' 10 20 00 DB 010H,020H,000H ;........ ;......*. ;.....*.. ;....*... ;...*.... ;..*..... ;........ 1DEB' 3C 46 4A 52 DB 03CH,046H,04AH,052H 1DEF' 62 3C 00 DB 062H,03CH,000H ;..****.. ;.*...**. ;.*..*.*. ;.*.*..*. ;.**...*. ;..****.. ;........ 1DF2' 18 28 08 08 DB 018H,028H,008H,008H 1DF6' 08 3E 00 DB 008H,03EH,000H ;...**... ;..*.*... ;....*... ;....*... ;....*... ;..*****. ;........ 1DF9' 3C 42 02 3C DB 03CH,042H,002H,03CH 1DFD' 40 7E 00 DB 040H,07EH,000H ;..****.. ;.*....*. ;......*. ;..****.. ;.*...... ;.******. ;........ 1E00' 3C 42 0C 02 DB 03CH,042H,00CH,002H 1E04' 42 3C 00 DB 042H,03CH,000H ;..****.. ;.*....*. ;....**.. ;......*. ;.*....*. ;..****.. ;........ 1E07' 08 18 28 48 DB 008H,018H,028H,048H 1E0B' 7E 08 00 DB 07EH,008H,000H ;....*... ;...**... ;..*.*... ;.*..*... ;.******. ;....*... ;........ 1E0E' 7E 40 7C 02 DB 07EH,040H,07CH,002H 1E12' 42 3C 00 DB 042H,03CH,000H ;.******. ;.*...... ;.*****.. ;......*. ;.*....*. ;..****.. MACRO-80 3.44 09-Dec-81 PAGE 1-108 ;........ 1E15' 3C 40 7C 42 DB 03CH,040H,07CH,042H 1E19' 42 3C 00 DB 042H,03CH,000H ;..****.. ;.*...... ;.*****.. ;.*....*. ;.*....*. ;..****.. ;........ 1E1C' 7E 02 04 08 DB 07EH,002H,004H,008H 1E20' 10 10 00 DB 010H,010H,000H ;.******. ;......*. ;.....*.. ;....*... ;...*.... ;...*.... ;........ 1E23' 3C 42 3C 42 DB 03CH,042H,03CH,042H 1E27' 42 3C 00 DB 042H,03CH,000H ;..****.. ;.*....*. ;..****.. ;.*....*. ;.*....*. ;..****.. ;........ 1E2A' 3C 42 42 3E DB 03CH,042H,042H,03EH 1E2E' 02 3C 00 DB 002H,03CH,000H ;..****.. ;.*....*. ;.*....*. ;..*****. ;......*. ;..****.. ;........ 1E31' 00 00 10 00 DB 000H,000H,010H,000H 1E35' 00 10 00 DB 000H,010H,000H ;........ ;........ ;...*.... ;........ ;........ ;...*.... ;........ 1E38' 00 10 00 00 DB 000H,010H,000H,000H 1E3C' 10 10 20 DB 010H,010H,020H ;........ ;...*.... ;........ ;........ ;...*.... ;...*.... ;..*..... 1E3F' 00 04 08 10 DB 000H,004H,008H,010H 1E43' 08 04 00 DB 008H,004H,000H ;........ ;.....*.. ;....*... ;...*.... ;....*... ;.....*.. MACRO-80 3.44 09-Dec-81 PAGE 1-109 ;........ 1E46' 00 00 3E 00 DB 000H,000H,03EH,000H 1E4A' 3E 00 00 DB 03EH,000H,000H ;........ ;........ ;..*****. ;........ ;..*****. ;........ ;........ 1E4D' 00 10 08 04 DB 000H,010H,008H,004H 1E51' 08 10 00 DB 008H,010H,000H ;........ ;...*.... ;....*... ;.....*.. ;....*... ;...*.... ;........ 1E54' 3C 42 04 08 DB 03CH,042H,004H,008H 1E58' 00 08 DB 000H,008H ;..****.. ;.*....*. ;.....*.. ;....*... ;........ ;....*... 1E5A' 3C 4A 56 5E DB 03CH,04AH,056H,05EH 1E5E' 40 3C DB 040H,03CH ;..****.. ;.*..*.*. ;.*.*.**. ;.*.****. ;.*...... ;..****.. 1E60' 3C 42 42 7E DB 03CH,042H,042H,07EH 1E64' 42 42 DB 042H,042H ;..****.. ;.*....*. ;.*....*. ;.******. ;.*....*. ;.*....*. 1E66' 7C 42 7C 42 DB 07CH,042H,07CH,042H 1E6A' 42 7C DB 042H,07CH ;.*****.. ;.*....*. ;.*****.. ;.*....*. ;.*....*. ;.*****.. 1E6C' 3C 42 40 40 DB 03CH,042H,040H,040H 1E70' 42 3C DB 042H,03CH ;..****.. ;.*....*. ;.*...... ;.*...... ;.*....*. ;..****.. 1E72' 78 44 42 42 DB 078H,044H,042H,042H 1E76' 44 78 DB 044H,078H ;.****... ;.*...*.. ;.*....*. MACRO-80 3.44 09-Dec-81 PAGE 1-110 ;.*....*. ;.*...*.. ;.****... 1E78' 7E 40 7C 40 DB 07EH,040H,07CH,040H 1E7C' 40 7E DB 040H,07EH ;.******. ;.*...... ;.*****.. ;.*...... ;.*...... ;.******. 1E7E' 7E 40 7C 40 DB 07EH,040H,07CH,040H 1E82' 40 40 DB 040H,040H ;.******. ;.*...... ;.*****.. ;.*...... ;.*...... ;.*...... 1E84' 3C 42 40 4E DB 03CH,042H,040H,04EH 1E88' 42 3C DB 042H,03CH ;..****.. ;.*....*. ;.*...... ;.*..***. ;.*....*. ;..****.. 1E8A' 42 42 7E 42 DB 042H,042H,07EH,042H 1E8E' 42 42 DB 042H,042H ;.*....*. ;.*....*. ;.******. ;.*....*. ;.*....*. ;.*....*. 1E90' 3E 08 08 08 DB 03EH,008H,008H,008H 1E94' 08 3E DB 008H,03EH ;..*****. ;....*... ;....*... ;....*... ;....*... ;..*****. 1E96' 02 02 02 42 DB 002H,002H,002H,042H 1E9A' 42 3C DB 042H,03CH ;......*. ;......*. ;......*. ;.*....*. ;.*....*. ;..****.. 1E9C' 44 48 70 48 DB 044H,048H,070H,048H 1EA0' 44 42 DB 044H,042H ;.*...*.. ;.*..*... ;.***.... ;.*..*... ;.*...*.. ;.*....*. 1EA2' 40 40 40 40 DB 040H,040H,040H,040H 1EA6' 40 7E DB 040H,07EH ;.*...... ;.*...... ;.*...... MACRO-80 3.44 09-Dec-81 PAGE 1-111 ;.*...... ;.*...... ;.******. 1EA8' 42 66 5A 42 DB 042H,066H,05AH,042H 1EAC' 42 42 DB 042H,042H ;.*....*. ;.**..**. ;.*.**.*. ;.*....*. ;.*....*. ;.*....*. 1EAE' 42 62 52 4A DB 042H,062H,052H,04AH 1EB2' 46 42 DB 046H,042H ;.*....*. ;.**...*. ;.*.*..*. ;.*..*.*. ;.*...**. ;.*....*. 1EB4' 3C 42 42 42 DB 03CH,042H,042H,042H 1EB8' 42 3C DB 042H,03CH ;..****.. ;.*....*. ;.*....*. ;.*....*. ;.*....*. ;..****.. 1EBA' 7C 42 42 7C DB 07CH,042H,042H,07CH 1EBE' 40 40 DB 040H,040H ;.*****.. ;.*....*. ;.*....*. ;.*****.. ;.*...... ;.*...... 1EC0' 3C 42 42 52 DB 03CH,042H,042H,052H 1EC4' 4A 3C DB 04AH,03CH ;..****.. ;.*....*. ;.*....*. ;.*.*..*. ;.*..*.*. ;..****.. 1EC6' 7C 42 42 7C DB 07CH,042H,042H,07CH 1ECA' 44 42 DB 044H,042H ;.*****.. ;.*....*. ;.*....*. ;.*****.. ;.*...*.. ;.*....*. 1ECC' 3C 40 3C 02 DB 03CH,040H,03CH,002H 1ED0' 42 3C DB 042H,03CH ;..****.. ;.*...... ;..****.. ;......*. ;.*....*. ;..****.. 1ED2' FE 10 10 10 DB 0FEH,010H,010H,010H 1ED6' 10 10 DB 010H,010H ;*******. ;...*.... ;...*.... MACRO-80 3.44 09-Dec-81 PAGE 1-112 ;...*.... ;...*.... ;...*.... 1ED8' 42 42 42 42 DB 042H,042H,042H,042H 1EDC' 42 3E DB 042H,03EH ;.*....*. ;.*....*. ;.*....*. ;.*....*. ;.*....*. ;..*****. 1EDE' 42 42 42 42 DB 042H,042H,042H,042H 1EE2' 24 18 DB 024H,018H ;.*....*. ;.*....*. ;.*....*. ;.*....*. ;..*..*.. ;...**... 1EE4' 42 42 42 42 DB 042H,042H,042H,042H 1EE8' 5A 24 DB 05AH,024H ;.*....*. ;.*....*. ;.*....*. ;.*....*. ;.*.**.*. ;..*..*.. 1EEA' 42 24 18 18 DB 042H,024H,018H,018H 1EEE' 24 42 DB 024H,042H ;.*....*. ;..*..*.. ;...**... ;...**... ;..*..*.. ;.*....*. 1EF0' 82 44 28 10 DB 082H,044H,028H,010H 1EF4' 10 10 DB 010H,010H ;*.....*. ;.*...*.. ;..*.*... ;...*.... ;...*.... ;...*.... 1EF6' 7E 04 08 10 DB 07EH,004H,008H,010H 1EFA' 20 7E DB 020H,07EH ;.******. ;.....*.. ;....*... ;...*.... ;..*..... ;.******. 1EFC' 0E 08 08 08 DB 00EH,008H,008H,008H 1F00' 08 0E DB 008H,00EH ;....***. ;....*... ;....*... ;....*... ;....*... ;....***. 1F02' 00 40 20 10 DB 000H,040H,020H,010H 1F06' 08 04 DB 008H,004H ;........ ;.*...... ;..*..... MACRO-80 3.44 09-Dec-81 PAGE 1-113 ;...*.... ;....*... ;.....*.. 1F08' 70 10 10 10 DB 070H,010H,010H,010H 1F0C' 10 70 DB 010H,070H ;.***.... ;...*.... ;...*.... ;...*.... ;...*.... ;.***.... 1F0E' 10 38 54 10 DB 010H,038H,054H,010H 1F12' 10 10 DB 010H,010H ;...*.... ;..***... ;.*.*.*.. ;...*.... ;...*.... ;...*.... 1F14' 00 00 00 00 DB 000H,000H,000H,000H 1F18' 00 00 FF DB 000H,000H,0FFH ;........ ;........ ;........ ;........ ;........ ;........ ;******** 1F1B' 1C 22 78 20 DB 01CH,022H,078H,020H 1F1F' 20 7E 00 DB 020H,07EH,000H ;...***.. ;..*...*. ;.****... ;..*..... ;..*..... ;.******. ;........ 1F22' 00 38 04 3C DB 000H,038H,004H,03CH 1F26' 44 3E 00 DB 044H,03EH,000H ;........ ;..***... ;.....*.. ;..****.. ;.*...*.. ;..*****. ;........ 1F29' 20 20 3C 22 DB 020H,020H,03CH,022H 1F2D' 22 3C 00 DB 022H,03CH,000H ;..*..... ;..*..... ;..****.. ;..*...*. ;..*...*. ;..****.. ;........ 1F30' 00 1C 20 20 DB 000H,01CH,020H,020H 1F34' 20 1C 00 DB 020H,01CH,000H ;........ ;...***.. ;..*..... ;..*..... ;..*..... ;...***.. MACRO-80 3.44 09-Dec-81 PAGE 1-114 ;........ 1F37' 04 04 3C 44 DB 004H,004H,03CH,044H 1F3B' 44 3E 00 DB 044H,03EH,000H ;.....*.. ;.....*.. ;..****.. ;.*...*.. ;.*...*.. ;..*****. ;........ 1F3E' 00 38 44 78 DB 000H,038H,044H,078H 1F42' 40 3C 00 DB 040H,03CH,000H ;........ ;..***... ;.*...*.. ;.****... ;.*...... ;..****.. ;........ 1F45' 0C 10 18 10 DB 00CH,010H,018H,010H 1F49' 10 10 00 DB 010H,010H,000H ;....**.. ;...*.... ;...**... ;...*.... ;...*.... ;...*.... ;........ 1F4C' 00 3C 44 44 DB 000H,03CH,044H,044H 1F50' 3C 04 38 DB 03CH,004H,038H ;........ ;..****.. ;.*...*.. ;.*...*.. ;..****.. ;.....*.. ;..***... 1F53' 40 40 78 44 DB 040H,040H,078H,044H 1F57' 44 44 00 DB 044H,044H,000H ;.*...... ;.*...... ;.****... ;.*...*.. ;.*...*.. ;.*...*.. ;........ 1F5A' 10 00 30 10 DB 010H,000H,030H,010H 1F5E' 10 38 00 DB 010H,038H,000H ;...*.... ;........ ;..**.... ;...*.... ;...*.... ;..***... ;........ 1F61' 04 00 04 04 DB 004H,000H,004H,004H 1F65' 04 24 18 DB 004H,024H,018H ;.....*.. ;........ ;.....*.. ;.....*.. ;.....*.. ;..*..*.. MACRO-80 3.44 09-Dec-81 PAGE 1-115 ;...**... 1F68' 20 28 30 30 DB 020H,028H,030H,030H 1F6C' 28 24 00 DB 028H,024H,000H ;..*..... ;..*.*... ;..**.... ;..**.... ;..*.*... ;..*..*.. ;........ 1F6F' 10 10 10 10 DB 010H,010H,010H,010H 1F73' 10 0C 00 DB 010H,00CH,000H ;...*.... ;...*.... ;...*.... ;...*.... ;...*.... ;....**.. ;........ 1F76' 00 68 54 54 DB 000H,068H,054H,054H 1F7A' 54 54 00 DB 054H,054H,000H ;........ ;.**.*... ;.*.*.*.. ;.*.*.*.. ;.*.*.*.. ;.*.*.*.. ;........ 1F7D' 00 78 44 44 DB 000H,078H,044H,044H 1F81' 44 44 00 DB 044H,044H,000H ;........ ;.****... ;.*...*.. ;.*...*.. ;.*...*.. ;.*...*.. ;........ 1F84' 00 38 44 44 DB 000H,038H,044H,044H 1F88' 44 38 00 DB 044H,038H,000H ;........ ;..***... ;.*...*.. ;.*...*.. ;.*...*.. ;..***... ;........ 1F8B' 00 78 44 44 DB 000H,078H,044H,044H 1F8F' 78 40 40 DB 078H,040H,040H ;........ ;.****... ;.*...*.. ;.*...*.. ;.****... ;.*...... ;.*...... 1F92' 00 3C 44 44 DB 000H,03CH,044H,044H 1F96' 3C 04 06 DB 03CH,004H,006H ;........ ;..****.. ;.*...*.. ;.*...*.. ;..****.. ;.....*.. MACRO-80 3.44 09-Dec-81 PAGE 1-116 ;.....**. 1F99' 00 1C 20 20 DB 000H,01CH,020H,020H 1F9D' 20 20 00 DB 020H,020H,000H ;........ ;...***.. ;..*..... ;..*..... ;..*..... ;..*..... ;........ 1FA0' 00 38 40 38 DB 000H,038H,040H,038H 1FA4' 04 78 00 DB 004H,078H,000H ;........ ;..***... ;.*...... ;..***... ;.....*.. ;.****... ;........ 1FA7' 10 38 10 10 DB 010H,038H,010H,010H 1FAB' 10 0C 00 DB 010H,00CH,000H ;...*.... ;..***... ;...*.... ;...*.... ;...*.... ;....**.. ;........ 1FAE' 00 44 44 44 DB 000H,044H,044H,044H 1FB2' 44 3C 00 DB 044H,03CH,000H ;........ ;.*...*.. ;.*...*.. ;.*...*.. ;.*...*.. ;..****.. ;........ 1FB5' 00 44 44 28 DB 000H,044H,044H,028H 1FB9' 28 10 00 DB 028H,010H,000H ;........ ;.*...*.. ;.*...*.. ;..*.*... ;..*.*... ;...*.... ;........ 1FBC' 00 44 54 54 DB 000H,044H,054H,054H 1FC0' 54 28 00 DB 054H,028H,000H ;........ ;.*...*.. ;.*.*.*.. ;.*.*.*.. ;.*.*.*.. ;..*.*... ;........ 1FC3' 00 44 28 10 DB 000H,044H,028H,010H 1FC7' 28 44 00 DB 028H,044H,000H ;........ ;.*...*.. ;..*.*... ;...*.... ;..*.*... ;.*...*.. MACRO-80 3.44 09-Dec-81 PAGE 1-117 ;........ 1FCA' 00 44 44 44 DB 000H,044H,044H,044H 1FCE' 3C 04 38 DB 03CH,004H,038H ;........ ;.*...*.. ;.*...*.. ;.*...*.. ;..****.. ;.....*.. ;..***... 1FD1' 00 7C 08 10 DB 000H,07CH,008H,010H 1FD5' 20 7C 00 DB 020H,07CH,000H ;........ ;.*****.. ;....*... ;...*.... ;..*..... ;.*****.. ;........ 1FD8' 0E 08 30 30 DB 00EH,008H,030H,030H 1FDC' 08 0E 00 DB 008H,00EH,000H ;....***. ;....*... ;..**.... ;..**.... ;....*... ;....***. ;........ 1FDF' 08 08 08 08 DB 008H,008H,008H,008H 1FE3' 08 08 00 DB 008H,008H,000H ;....*... ;....*... ;....*... ;....*... ;....*... ;....*... ;........ 1FE6' 70 10 0C 0C DB 070H,010H,00CH,00CH 1FEA' 10 70 00 DB 010H,070H,000H ;.***.... ;...*.... ;....**.. ;....**.. ;...*.... ;.***.... ;........ 1FED' 32 4C 00 00 DB 032H,04CH,000H,000H 1FF1' 00 00 00 DB 000H,000H,000H ;..**..*. ;.*..**.. ;........ ;........ ;........ ;........ ;........ 1FF4' 3C 42 99 A1 DB 03CH,042H,099H,0A1H 1FF8' A1 99 42 3C DB 0A1H,099H,042H,03CH ;..****.. ;.*....*. ;*..**..* ;*.*....* ;*.*....* ;*..**..* MACRO-80 3.44 09-Dec-81 PAGE 1-118 ;.*....*. ;..****.. 1FFC' ROMCHR: ;================================================================ 1FFC' FF DB 0FFH 1FFD' 1D58' DW UFLOAT-1 1FFF' 00 DB 000H ;================================================================ END MACRO-80 3.44 09-Dec-81 PAGE S Macros: RSTEMIT RSTERR RSTPULL RSTPUSH Symbols: 00DE' ABGOON 00AB' ABORT 00FF' ABORTEND 0C0D' ABS 0F9E' ALLOC 0F76' ALLOT 0F83' ALLOT2 1028' ASCII 12D8' ASSERT 08B3' AT 0B19' ATPOS 048A' BASE 0BC7' BDBREAK 0BCB' BDLOOP 0B98' BEEP 0BC9' BEEPDELAY 121A' BEGIN 07FA' BLANKS 07FB' BLANKS2 07FE' BLLOOP 1954' BLOAD 0BAF' BLOOP 07DA' BLWORD 04F0' BREAK 1944' BSAVE 1979' BVERIFY 1592' CADICT 10A7' CALL 0896' CAT 0B28' CATPOS 1584' CAWORD 0A24' CCLS 000D CCR 153A' CDCOLON 1537' CDDEFCOM 0005 CDL 150B' CDLOOP 153F' CDSETCTXT 08A5' CEXCLAM 0F09' CHGOON 054F' CHKIMM 0561' CHKIQUIT 0564' CHKNUMBER 061B' CHKSTRING 0F1D' CHLOOP 2C00 CHRSET 0080 CINV 0F5F' CKOMMA 0080 CLAST 0A1D' CLS 0C21' CMPPUSH 07B8' CNVDIGIT 07CD' CNVDOK 07D7' CNVDQUIT 077B' CNVEND 074C' CNVINT 07B4' CNVTEND 078C' CNVTLOOP 0EAF' COLON 10F5' COMPILER 0FE2' CONSTANT 0473' CONTEXT 078A' CONVERT 1568' CORRADDR 14F8' CORRCURR 1504' CORRDICT 1557' CORRPTR 1548' CORRWORD 094D' CPICK 095B' CPKGOON 007F CPR 0018' CPULL 0010' CPUSH 0A95' CR 0ED0' CREATE 0EFB' CRHEADER 097F' CTYPE 0480' CURRENT 3C20 CURSOR 05FC' CWEND 0614' CWERR 05EA' CWLOOP1 05F3' CWLOOP2 0600' CWNFND 05E1' CWORD 0CD5' D32GOON 0CDB' D32LOOP 0CE5' D32NEXT 1ADF' DBRGOON1 1AE9' DBRGOON2 1AC8' DBVLOOP 023F' DCCDGOON 022C' DCCHARDEL 02D8' DCCLEAR 0225' DCCURDEL 01CE' DCDCEND 0198' DCDCINS 0196' DCDCNORM 01E4' DCDCQUIT 01A6' DCDCSCROL 01C9' DCDCSLOOP 01DD' DCDCSTORE 029C' DCDNLOOP 017E' DCDOCHAR 0295' DCDOWN 02A2' DCDSCROLL 02D0' DCENTER 01FE' DCFLAG 0302' DCGETCIN 01F0' DCJMPTAB 02CA' DCLDLOOP 0204' DCLEFT 02C3' DCLINEDEL 0210' DCNOP 0276' DCOUTCUR 02EA' DCRETYPE 0211' DCRIGHT 02F9' DCSELOOP 02ED' DCSETBEG 0282' DCSETCUR 02F4' DCSETEND 02B0' DCSTREND 0247' DCUP 024E' DCUPLOOP 0254' DCUSCROLL 0269' DCUSLOOP 0723' DECGET 0EA3' DECIMAL 0443' DECLINE 072C' DECSHIN 0732' DECSTORE 1074' DEFINER 11AB' DEFINITIONS 14DC' DELWORD 3C39 DICT 3C40 DICT1ST 14DA' DICTERR 0D51' DIV 0CC4' DIV32BY16 0D00' DIVMOD 0D0D' DIVMOD2 044B' DLEND 0C83' DLT 0DBA' DNEGATE 0DC5' DNLOOP 12AB' DO 129F' DOBEGIN 1AB8' DOBLOAD 1AD0' DOBREAD 1ABE' DOBVERIFY 0EC3' DOCOL 1110' DOCOMGOON 1108' DOCOMPILER 0FF5' DOCONSTANT 0FEC' DOCREATE 01E6' DOCTRL MACRO-80 3.44 09-Dec-81 PAGE S-1 1085' DODEFINER 1323' DODO 10E8' DODOESGT 1271' DOELSE 10B4' DOESGT 10CD' DOESPATCH 1225' DOFPATCH 1283' DOIF 1379' DOLBRACKET 1332' DOLOOP 0DBF' DONEGATE 133C' DOPLUSLOOP 1396' DOPTSTR 1276' DOREPEAT 1237' DORPATCH 1140' DORUNSGT 1A4F' DOSAVE 12A4' DOTHEN 128D' DOUNTIL 0FF0' DOVARIABLE 197D' DOVERIFY 1288' DOWHILE 0490' DP 0DEE' DPLUS 0879' DROP 109A' DROPGOON 0736' DSLOOP 086B' DUP 165E' EDIT 1675' EDITLIST 16DF' ELACK 1697' ELCOLON 169C' ELCOMPILER 16B1' ELDEFINER 16E8' ELEDIT 16C7' ELLLOOP 16C3' ELMLOOP 16B4' ELOUT 1702' ELQUIT 16D2' ELREADY 11EC' ELSE 0AA3' EMIT 03FF' EMITSCR 3C22 ENDBUF 0C4A' EQ 1294' EQUJUMP 0009 ERRAT 0005 ERRBLK 0003 ERRBRK 000B ERRDICT 000D ERRFIND 0008 ERRFLT 0004 ERRIMM 000E ERRLIST 0001 ERRMEM 000C ERRMODE 0006 ERRNAME 3C3D ERRNO FFFF ERRNONE 04D7' ERRORSTK 0007 ERRPICK 000A ERRREAD 0002 ERRSTK 0416' ESENTER 041C' ESQUIT 08C1' EXCLAM 1815' EXECDE 069A' EXECUTE 13F0' EXIT 3C29 EXWRCH 0003 FACCU 1B53' FADDITION 1BB3' FADDSUB 1B28' FADJLP1 1B2E' FADJLP2 1B3A' FADJLP3 1B22' FADJUST 1BC1' FASGOON1 1BC9' FASGOON2 1C02' FASGOON3 1BCE' FASLP1 1BE5' FASLP2 1BF6' FASLP3 0837' FAST 1C0C' FCLP 0660' FCOMPARE 1C04' FCORR 1C21' FCQUIT 0011 FCURR 1CB0' FDGOON1 1CCB' FDGOON2 1CFE' FDGOON3 000F FDICT 1C7B' FDIV 0010 FDIVOR 1CA2' FDLOOP1 1CB3' FDLOOP2 1CB5' FDLOOP3 1CBD' FDLOOP4 1CE8' FDNEXT 0040 FEOFFS 0000 FEXP1 0001 FEXP2 0000 FFLAG 1AF8' FICLEAR 1A3D' FILEBHEAD 1A10' FILEFHEAD 19F3' FILENAME 063D' FIND 1620' FINDWORD 1AF4' FINIT 1278' FJUMP 3C3E FLAGS 000B FLEN 064B' FLOOP 1C3D' FLT0 1C40' FLT0LP 1C3B' FLTERR 1BA4' FMINUS 1C5D' FMLOOP 1B67' FMLOOP1 1B77' FMLOOP2 1B91' FMNEXT 1B83' FMNOADD 1C4B' FMUL 1B55' FMULADD 1B43' FNEG 1D0F' FNEGATE 067D' FNEXT1 067F' FNEXT2 0001 FNLEN 1B48' FNLOOP 1D18' FNQUIT 1638' FORGET 0133' FORTH 0AFC' FP0 2301 FPADMEM 0B05' FPEXP 0ABE' FPGOON1 0ACA' FPGOON2 0ACE' FPGOON3 0AD7' FPH0 1BB1' FPLUS 0ADC' FPMLOOP 0AAF' FPNT 0B10' FPQUIT 0676' FPRINT 15E7' FPTR2NAME 3C00 FPWS 0007 FQUO 3C2B FRAMES 3C51 FREEMEM 0002 FSGN 0080 FSIGN 0019 FSIZE 000D FSTART 0657' FTEST 0742' FZEQLP 0740' FZEROEQ 104B' GETBYTE 048D' GETFLAGS 1064' GETFLOAT 05DF' GETSTRING 044D' GETVAR 1011' GETWORD 0004 GFX 0C99' GREATER 0CA0' GRTRQUIT MACRO-80 3.44 09-Dec-81 PAGE S-2 0C56' GT 08D2' GTR 1019' GWGOON 1015' GWLOOP 101E' GWQUIT 0460' HERE 3C1A HLD 0A5C' HOLD 0A69' HOLDQUIT 12E9' I 0D9E' I0NEND 11C0' IF 128F' IF0JUMP 0D94' IFN0NEG 043D' ILLOOP 0040 IMM 1160' IMMEDIATE 0BEB' IN 0BDB' INKEY 3C1E INSCRN 042F' INSLINE 1D22' INT 1D2B' INTLOOP 1D45' INTQUIT 0008 INV 0828' INVIS 00FE IO 12F7' ITICK 1302' J 15F9' JDELOOP 132D' JNEXT4 15FB' JUMPDE 0009 KDN 3C27 KEYCNT 3C26 KEYCOD 0336' KEYGET 034F' KEYGLP 0347' KEYGNC 0362' KEYGNK 036B' KEYGQU 036D' KEYGQU2 0359' KEYGSC 0376' KEYTBL 0001 KLT 0F4E' KOMMA 0003 KRT 0007 KUP 0E4B' LAND 1361' LBRACKET 1368' LBREND 000A LDL 19DD' LDNLOOP 1316' LEAVE 3C24 LHALF 0F36' LHGOON 0506' LINE 0530' LINEERR 0508' LINELOOP 0518' LINENUM 0526' LINESTR 0F2E' LINKHERE 1670' LIST 1708' LISTPGM 3C13 LISTWS 1006' LITERAL 1055' LITFLOAT 198A' LOAD 0002 LOK 12BD' LOOP 133F' LOOPADD 1350' LOOPCMP 1358' LOOPEND 12C1' LOOPGOON 0E36' LOR 1798' LPBYTE 178B' LPFLOAT 3C15 LPIACT 3C14 LPIBUF 3C13 LPICNT 176B' LPIDEC 175D' LPIINC 1764' LPILEFT 1770' LPINDENT 17AC' LPLBRACKET 3C16 LPLCNT 1712' LPLOOP 1756' LPNEXT 1783' LPNUMBER 17DA' LPNXTWRD 1753' LPOUT 17B0' LPPTSTR 17A4' LPSEMIS 17B2' LPSTRING 177C' LPWORD 13D5' LSQRBR 0C65' LT 098D' LTNUM 0E60' LXOR 0E75' MAX 0F9C' MCERROR 3C00 MEMBEG 0F8C' MEMCHECK 0F8F' MEMCHECK2 0E87' MIN 0E8F' MINMAX 0E95' MINMAXEND 0DE1' MINUS 0D61' MOD 0D6D' MUL 0D7A' MULDIV 0D31' MULDIVMOD 0A13' NADEC 1020' NASCII 1212' NBEGIN 0EAB' NCOLON 10EA' NCOMPILER 0FD7' NCONSTANT 0EC7' NCREATE 106A' NDEFINER 12A6' NDO 10AC' NDOESGT 0DA9' NEGATE 11E5' NELSE 04B9' NEXT 04BF' NEXTDE 04BA' NEXTSUB 15B5' NFA 06FD' NFEGOON 06EF' NFEXP 06CE' NFGOON 06BC' NFLOAT 06D3' NFLOOP1 06DF' NFLOOP2 0711' NFQUIT 0A07' NIBASC 11BB' NIF 135D' NLBRACKET 12B6' NLOOP 12C8' NPLUSLOOP 1383' NPTSTR 1243' NREPEAT 111D' NRUNSGT 049D' NSEMICOLON 1200' NTHEN 09F7' NUM 06A9' NUMBER 071C' NUMBERERR 0714' NUMBERQUIT 099C' NUMGT 09E1' NUMS 09E3' NUMSLP 125B' NUNTIL 0FC4' NVARIABLE 11CD' NWHILE 127C' OFFSJUMP 17CF' OILOOP 17D4' OIQUIT 0536' OK 054D' OKQUIT 0E1F' ONEMINUS 0E09' ONEPLUS 0BFD' OUT 17C1' OUTINDENT 17FB' OUTTXT 17E4' OUTWORD 17E1' OUTWORDI 0912' OVER 17F0' OWDOXX MACRO-80 3.44 09-Dec-81 PAGE S-3 15DB' P2AGOON 15D4' P2ARUN 15F2' P2NGOON 15F4' P2NLOOP 0499' PAD 2701 PADMEM 0925' PICK 0B6F' PLGOON 0B4A' PLOT 0DD2' PLUS 12D0' PLUSLOOP 0B7F' PLX0Y0 0B8C' PLXOR 0060 PND 09B3' PNT 180E' PNTHL 09C3' PNTLEFT 15C0' PTR2ADDR 15E8' PTR2NAME 1388' PTSTR 084E' PULLBC 0CF3' PUSHDEHL 08EE' QDUP 04F5' QLLOOP 059B' QLOOP 0594' QSTART 058C' QUERY 0099' QUIT 04F2' QUITLOOP 00AD' RABORT 18EC' RAGOON 18DF' RALOOP 18B6' RALOOP1 18B8' RALOOP2 18C7' RALOOP3 3C18 RAMTOP 3C24 RAMVAR 18F0' RASTART 18B5' RASYNC 18E7' RAVERIFY 18FE' RB8LOOP 1917' RBDELAY 191B' RBLOOP 0085' RCHR7 007C' RCHRLP 000A RDDLEN 0004 RDDNAME 1452' RDGOON1 147F' RDGOON2 0004 RDNCODE 000A RDNEND 000C RDNNAME 0006 RDNRUN 0002 RDOCODE 0008 RDOEND 0000 RDONAME 1A74' READHEADER 14CF' REDEFABORT 13FD' REDEFINE 03EE' REMIT 03F5' RENORM 124C' REPEAT 1610' RESCURR 18FB' RETURN 0578' RETYPE 0644' RFIND 1307' RGET 0055' RGFXLP 005F' RGFXM 003B' RGOON 08DF' RGT 1A95' RHBINARY 1A9F' RHCHECK 1AA7' RHCLOOP 1AAE' RHCNEXT 1AA9' RHCSTART 1A76' RHLOOP 0A5F' RHOLD 0028' RMEMLP 0933' ROLL 1FFC' ROMCHR 1808' ROMTXT 010D' ROMVAR 013A' ROMVEND 08FF' ROT 0859' RPULL 085F' RPUSH 009B' RQUIT 04B8' RSEMIS 04C8' RSLNEXT 04D9' RSLNGOON 13E1' RSQRBR 1142' RUNSCORR 1125' RUNSGT 18A7' RXALL 1911' RXBIT 18FC' RXBYTE 1AB6' RXERROR 1915' RXLEVEL 068A' RZERO 000C SAFETY 1934' SAVE 139F' SAVETEXT 0290' SCNOCAPS 2400 SCREEN 2700 SCREND 2800 SCRMEND 0421' SCROLLUP 3C1C SCRPOS 1A0E' SEMICODE 04A1' SEMICOLON 04B6' SEMIS 11B5' SETCONTEXT 0A4A' SIGN 159E' SKIPOFFS 15A2' SKOFFS2 15B1' SKOGOON 04C6' SLNEXT 0846' SLOW 0A73' SPACE 0A78' SPACEQUIT 0A83' SPACES 3C3B SPARE 0A86' SPCLOOP 3C28 STATIN 13B8' STFND 3C37 STKBOT 13A1' STLOOP 0885' SWAP 1864' TABIT0 1887' TACHECK 1839' TADEL1 1847' TADEL2 184F' TADEL3 185C' TADEL4 1862' TADEL5 188F' TAEND 1832' TAGOON1 1843' TAGOON2 1837' TALOOP1 1859' TALOOP2 186D' TANEXT 188A' TASTART 1207' THEN 0807' TOUPPER 1897' TRQDEL6 0E29' TWOMINUS 0E13' TWOPLUS 1820' TXALL 1892' TXRXQUIT 096E' TYPE 0979' TYPEDE 0C77' UCMP 0D8C' UDIVMOD 1D59' UFLOAT 1D62' UFLOOP 0C72' ULT 0CA8' UMUL 0CB3' UMULLOOP 0CBE' UMULNEXT 1263' UNTIL 09D0' UPNT 04E4' USERBREAK 0FCF' VARIABLE 3C3F VBASE 3C33 VCONTEXT 3C31 VCURRENT 0142' VDELAY MACRO-80 3.44 09-Dec-81 PAGE S-4 1967' VERIFY 0818' VIS 0325' VKAGAIN 0310' VKEY 0320' VKNEW 0331' VKPRESS 0332' VKQUIT 062D' VLIST 117D' VOCABULARY 3C35 VOCLNK 0147' VSCNT 0170' VSCTRL 0176' VSEND 0167' VSNOGRF 016D' VSNOINV 013A' VSYNC 05B3' WCLLOOP 05C6' WGOON1 05D1' WGOON2 11D5' WHILE 05AB' WORD 3C2F XCOORD 0E2D' XMINUS 0E17' XPLUS 0E2E' XPLUSMINUS 3C30 YCOORD 0688' ZERO 0C1A' ZEROEQ 0C3A' ZEROGT 0C2E' ZEROLT No Fatal error(s)  3C35 VOCLNK 0147' VSCNT 0170' VSCTRL 0176' VSEND 0167' VSNOG