;Die Original-ASM-Texte wurden um Zeilennummern, Adressen und Operationscode ergaenzt. ;Die Zeilennummern stimmen nicht immer, es gibt Spruenge, z.B. wegen DEFB, DEFM ;und der Kommentare, die ja beim Reassemblieren fehlen. ;Unterschiedliche Schreibweisen der einzelnen Bearbeiter wurden vereinheitlicht. ;Die Namen der Originaldateien wurden, wie in der naechsten Zeile zu sehen, ;hinter den Doppelkreuzen angegeben. ; (Ulrich Zander im Juli 2013) ; ; ############################################### BICLUD.ASM ab hier (UZ) ; ;************************************************ ; ;ROM-BETRIEBSSYSTEM FUER BIC A5105 ; ;Teil: Initialisierung, Drucker und allgemeine UP ; ;STAND: 17.05.89 / LUDEWIG ; ;************************************************ ; ;Externals EXTERNAL JCPSTX JTCHAR JTYPTS JBAINI EXTERNAL CHRO98 ERDEVI TCHAR0 EXTERNAL ZG ;Globals GLOBAL INKEY RDRIPU OUTASC PRTOUT PRSTA PRTREI ;************************************************ ; ;Vereinbarungen ;================================================ CTC0 EQU 80H CTC1 EQU CTC0+1 CTC2 EQU CTC0+2 CTC3 EQU CTC0+3 COND K4 CTCVT EQU CTC0 ;Vorteiler (K4) CTCIR EQU CTC2 ;20 ms IR (K4) ENDC ; ------------------------ DPIOA EQU 90H KPIOA EQU DPIOA+2 ; DPIOB EQU DPIOA+1 ;Versch. E/A KPIOB EQU DPIOA+3 ; ; TXD EQU 1 ;TxD-Bit CTS EQU 4 ;CTS-Bit ; ------------------------ PPIA EQU 0A8H ;Bankumschaltung PPIB EQU 0A9H ;Eing. Zeilenleitungen PPIC EQU 0AAH ;Ausg. Bit 0-3: Spaltennr. ; Keyclick,Diode,Kassette,Motor PPIM EQU 0ABH ;Bitmanipulation Port C ; ------------------------ DCTC0 EQU 50H ;DSE-CTC DKPIOA EQU 62H ;DSE-SIO Kdo Port A ; ------------------------ CR EQU 0DH ;Carriage return LF EQU 0AH ;Line feed ;************************************************ ------------------------------------------------------- Z80 DISASSEMBLER LISTING Line Addr Opcodes Label Instruction Comment ------------------------------------------------------- 0001 0000 F3 RESET: DI 0002 0001 C3 9B 01 JP SPEKO ;SPEicherKOnfiguration 0003 0004 10 80 DEFW ZG ;Zeichengenerator 0004 0006 27 0B DEFW INJOY 0005 ; 0006 0008 C3 03 23 JP JCPSTX 0007 000B 00 DEFB 0 0008 000C C3 1F 02 JP LREB ;Long REad Byte 0009 000F 00 DEFB 0 0010 0010 C3 06 23 JP JTCHAR 0011 0013 00 DEFB 0 0012 0014 C3 2C 02 JP LWRB ;Long WRite Byte 0013 0017 00 DEFB 0 0014 0018 C3 5D 03 JP CHARO ;CHARacterOut 0015 001B 00 DEFB 0 0016 001C C3 51 02 JP L3CALL ;Long-3-CALL 0017 001F 00 DEFB 0 0018 0020 C3 51 03 JP CPREG ;ComPare REGister 0019 0023 00 DEFB 0 0020 0024 C3 66 02 JP BANKUM 0021 0027 00 DEFB 0 0022 0028 C3 09 23 JP JTYPTS 0023 002B A1 13 DEFW 13A1H ;Format Datumsingbe 0024 ; 0025 002D C3 04 13 JP REZEMU ;REad ZEichenMUster 0026 0030 C3 3F 02 JP L2CALL ;Long-2-CALL 0027 0033 C3 4F 46 JP TCHAR0 0028 0036 81 FC DEFW NACALL 0029 0037 C3 00 04 JP RST38H (absturz) 0030 ; 0031 003B C3 DF 08 JP MUINI ;MUsikINIt 0032 003E C3 86 11 JP FTINI ;FTastenINIt 0033 0041 C3 CE 1F JP VDPCOM ;VDP in COmmandoMode ;siehe Zeile 4729 0034 0044 C3 CE 1F JP VDPDAM ;VDP in DAtenMode ;siehe Zeile 4729 0035 0047 C3 CE 1F JP PRGVDP ;PRoG VDP ;siehe Zeile 4729 0036 004A C3 68 13 JP RDVRM ;ReaD Video-RaM 0037 004D C3 74 13 JP WRTVRM ;WRiTe Video-RaM 0038 0050 C3 CE 1F JP VDPREM ;VDP in REadMode ;siehe Zeile 4729 0039 0053 C3 CE 1F JP VDPWRM ;VDP in WRiteMode ;siehe Zeile 4729 0040 0056 C3 EC 12 JP OUTBCA ;OUT BC-mal A-register 0041 0059 C3 91 12 JP INBCDE ;IN BC-mal nach DE-adresse 0042 005C C3 C9 12 JP OTBCDE ;OuT BC-mal von DE-adresse 0043 005F C3 48 0E JP SELSCR ;SELect SCReen 0044 0062 C3 CE 1F JP PR7VDP ;PRog reg7 VDP ;siehe Zeile 4729 0045 0065 00 DEFB 0 0046 0066 C3 41 03 JP NMI 0047 0069 C3 D8 21 JP SPRRES ;SPRiteRESet 0048 006C C3 CE 13 JP SSCR0 ;Set SCReen0 0049 006F C3 D1 13 JP SSCR1 ;Set SCReen 1 0050 0072 C3 D4 13 JP SSCR2 0051 0075 C3 D7 13 JP SSCR3 0052 0078 C3 CE 1F JP VDPSC0 ;VDP prog SCreen0 ;siehe Zeile 4729 0053 007B C3 CE 1F JP VDPSC1 ;siehe Zeile 4729 0054 007E C3 CE 1F JP VDPSC2 ;siehe Zeile 4729 0055 0081 C3 CE 1F JP VDPSC3 ;siehe Zeile 4729 0056 0084 C3 CE 1F JP ;Get SPRiteADresse ;siehe Zeile 4729 0057 0087 C3 CE 1F JP GSPRAT ;Get SPRiteATtribut ;siehe Zeile 4729 0058 008A C3 CE 1F JP TESPRM ;TEst SPRiteMode ;siehe Zeile 4729 0059 008D C3 CC 17 JP TXTGSC ;TeXT in GrafikSCreen 0060 0090 C3 EC 08 JP MUINIT ;MUsikINIT 0061 0093 C3 F7 0A JP MUOTAE ;MUsikOuT A=regnr E=kdo 0062 0096 C3 CE 1F JP INPPSG ;INPut vom PSG ;siehe Zeile 4729 0063 0099 C3 1D 08 JP MUZELV ;MUsikZELlen Verwalten 0064 009C C3 06 FD JP ICONST ;INKEY 0065 009F C3 09 FD JP ICONIN ;RDRIPU, ReaD RIngPUffer 0066 00A2 C3 0C FD JP ICONOUT ;OUTASC, OUT A-reg to SCreen 0067 00A5 C3 99 02 JP PRTREI ;PRinterTREIber 0068 00A8 C3 2D FD JP ILISTST ;PRSTA ,PRinterSTAtus 0069 00AB C3 72 12 JP CHRTST ;CHaRacterTeST 0070 00AE C3 A6 1C JP EDI1 0071 00B1 C3 BC 1C JP EDI2 0072 00B4 C3 B3 1C JP GETST ;GET STring 0073 00B7 C3 9D 04 JP DSTPTS ;Direkter SToPTeSt 0074 00BA C3 26 04 JP STPTST ;SToPTeST 0075 00BD C3 BD 0A JP BREAK 0076 00C0 C3 C6 0A JP BEEP 0077 00C3 C3 EF 16 JP ZCLS ;Z-flagabh. CLS 0078 00C6 C3 63 12 JP CRSPOS ;CuRSorPOS 0079 00C9 C3 00 12 JP BKEYAN ;Bedingte KEYANzeige 0080 00CC C3 F2 11 JP KEYOFF 0081 00CF C3 06 12 JP KEYON 0082 00D2 C3 B2 13 JP LATXTM ;screen to LAst TeXTMode 0083 00D5 C3 09 0B JP GSTICK ;Get STICK 0084 00D8 C3 74 0B JP GSTRIG ;Get STRIG 0085 00DB C3 BA 0B JP GPAD ;Get PAD 0086 00DE C3 BD 0B JP GPDL ;Get PDL 0087 00E1 C3 46 0C JP INVT ;INput VorTon 0088 00E4 C3 9B 0C JP INBYTE ;INput BYTE 0089 00E7 C3 CC 0B JP MOFF ;Motor OFF 0090 00EA C3 D4 0B JP OUTVT ;OUTput VorTon 0091 00ED C3 FC 0B JP OUTBYT ;OUTput BYTe 0092 00F0 C3 C0 0B JP WMOFF ;Wait and Motor OFF 0093 00F3 C3 97 0B JP MOTST ;MOTorSTeuerung 0094 00F6 C3 BA 08 JP MU1D ;MUsik-1-Dummy 0095 00F9 C3 61 08 JP MUPUW ;MUsikPUffer Write 0096 00FC C3 D2 19 JP APRGT1 ;Adr Punkt RiGhT 1 0097 00FF C3 0D 1A JP APLFT1 ;Adr Punkt LeFT 1 0098 0102 C3 49 1A JP APUP10 ;Adr Punkt UP 1 0099 0105 C3 24 1A JP APUP ;Adr Punkt UP 0100 0108 C3 6A 1A JP APDWN1 ;Adr Punt DoWN 1 0101 010B C3 55 1A JP APDWN ;Adr Punkt DoWN 0102 010E C3 54 18 JP TPPOS ;Test PunktPOSition 0103 0111 C3 8F 18 JP MKPMA ;MaKe PunktMusterAdr 0104 0114 C3 E8 18 JP LDPMA ;LoaD PunktMusterAdr 0105 0117 C3 EF 18 JP STPMA ;STore PunktMusterAdr 0106 011A C3 47 19 JP STAINK ;STore Akt INK 0107 011D C3 F6 18 JP GPOINT ;Get POINT 0108 0120 C3 98 19 JP SPOINT ;Set POINT 0109 0123 C3 F1 1A JP FILL ;FILL 0110 0126 C3 C8 1B JP LDELLI ;LoaD ELLIpsenparam 0111 0129 C3 D0 1B JP PAIUP1 ;PAInt-UP 1 0112 012C C3 D7 1B JP PAIUP2 ;PAInt-UP 2 0113 012F C3 3C 1C JP PAIUP3 ;PAInt-UP 3 0114 0132 C3 61 09 JP CAPLED ;CAPsLED bedienen 0115 0135 C3 A5 09 JP KEYCLK ;KEYCLicK neg 0116 0138 C3 70 02 JP DBAABF ;Direkte BAnkABFrage 0117 013B C3 73 02 JP DBAUM ;Direkte BAnkUMschaltung 0118 013E C3 CE 1F JP STAVDP ;siehe Zeile 4729 0119 0141 C3 AB 0B JP DTMABF ;Direkte TastenMatrixABFrage 0120 0144 C3 57 03 JP DUMMY1 0121 0147 C3 5A 03 JP DUMMY2 0122 014A C3 46 03 JP TAFCB ;Test Akt FCB 0123 014D C3 0F FD JP ILIST ;PRTOUT ;PRinTerOUTput 0124 0150 C3 47 08 L1168: JP MUR1 ;MUsikRechnung 1 0125 0153 C3 4B 08 L1176: JP MUR2 0126 0156 C3 93 04 JP LORIPU ;LOeschen RIngPUffer 0127 0159 C3 39 02 JP L1CALL ;Long-1-CALL ;------------------------------------------------ 0128 015C C3 91 11 JP VFTINI ;neue Spruenge 0129 015F C3 4D 17 JP RDMOD 0130 0162 C3 7D 17 JP WRMOD 0131 0165 C3 B6 10 JP SETBOR 0132 0168 C3 D7 0D JP BSINIT 0133 016B C3 59 12 JP TGRASC 0134 016E C3 C9 10 JP SETPAL 0135 0171 C3 C0 10 JP SETPAP 0136 0174 C3 C4 13 JP KOMSCR 0137 0177 C3 06 13 JP WRZEMU 0138 017A C3 D5 1F JP PUTSPR 0139 017D C3 8C 13 JP MONTV 0140 0180 C3 DD 05 JP GETA35 0141 0183 C3 7C 0A JP RIPUZI 0142 0186 C3 5A 09 JP CAPSB 0143 0189 66 F2 DEFW ZLLAST 0144 018A 46 F7 DEFW FKEY1 0145 018D 97 F2 DEFW SCHRIP 0146 018E 09 FC DEFW STCSSW 0147 0191 19 FC DEFW CAPSSW 0148 0192 40 FD DEFW IRT 0149 0195 C3 01 0B JP WAITBC 0150 0198 C3 20 10 JP REMASK ;*********************************************** ;SPEicherKOnfiguration bestimmen (02D7H) ; ;IN: DI ;OUT: DI / SP undefiniert !! ; 0151 019B 3E 66 SPEKO: LD A,66H ;PIO B programmieren 0152 019D D3 91 OUT (DPIOB),A ; (91H) 0153 019F 3E CF LD A,0CFH ;Bit-EA 0154 01A1 D3 93 OUT (KPIOB),A 0155 01A3 3E 99 LD A,99H ;Bit 7,4,3,0=Eingang 0156 01A5 D3 93 OUT (KPIOB),A 0157 01A7 3E 07 LD A,07H ;DI, keine Maske 0158 01A9 D3 93 OUT (KPIOB),A 0159 01AB 3E 66 LD A,66H ;1.Ausgabe 0160 01AD D3 91 OUT (DPIOB),A ; ------------------------ 0161 01AF 3E 82 LD A,82H ;PPI Port A,C: Out 0162 01B1 D3 AB OUT (PPIM),A ; Port B: In 0163 01B3 3E A0 SPEK10: LD A,0A0H ;0H,4000H auf Bank 0 0164 01B5 D3 A8 OUT (PPIA),A ; 8000H,C000H auf Bank 2 0165 01B7 3E 50 LD A,50H ;Motor aus,Tape aus 0166 01B9 D3 AA OUT (0AAH),A ; CAP-LED aus,Keyclick an ; ------------------------ 0167 01BB 3E 03 LD A,03H ;Software-RESET (DI) fuer 0168 01BD D3 92 OUT KPIOA,A 0169 01BF D3 81 OUT (CTC1),A 0170 01C1 D3 83 OUT (CTC3),A ; 0171 01C3 D3 50 OUT (DCTC0),A ; nicht benutzte 0172 01C5 D3 51 OUT (DCTC0+1),A 0173 01C7 D3 52 OUT (DCTC0+2),A 0174 01C9 D3 53 OUT (DCTC0+3),A 0175 01CB D3 62 OUT (DKPIOAH),A 0176 01CD D3 63 OUT (DKPIOA+1),A ; EA-Kanaele ; ------------------------ 0177 01CF ED 5E IM 2 0178 01D1 21 40 FD LD HL,IRT 0179 01D4 7C LD A,H 0180 01D5 ED 47 LD I,A ;I-Reg laden ; ------------------------ 0181 01D7 7D LD A,L ;CTC:IR-Vektor 0182 01D8 D3 80 OUT (CTC0),A 0183 01DA 3E 07 LD A,7 ;DI,Zeitgeber 0184 01DC D3 80 OUT (CTCVT),A 0185 01DE 3E 2B LD A,43 0186 01E0 D3 80 OUT (CTCVT),A 0187 01E2 3E C7 LD A,0C7H ;EI,Zaehler 0188 01E4 D3 82 OUT (CTCIR),A 0189 01E6 3E 6D LD A,109 ;20 ms 0190 01E8 D3 82 OUT (CTCIR),A ; ------------------------ 0191 01EA 3E 18 LD A,18H ;DSE-SIO 0192 01EC D3 6A OUT (6AH),A ; RESET Kanal A (LAN) 0193 01EE D3 6B OUT (6BH),A ; Kanal B (Plotter) 0194 01F0 3E 02 LD A,2 0195 01F2 D3 6B OUT (6BH),A 0196 01F4 21 50 FD LD HL,SIOVEK 0197 01F7 7D LD A,L 0198 01F8 D3 6B OUT (6BH),A ; IR-Vektor ; ------------------------ 0199 01FA 3E 01 LD A,01H 0200 01FC D3 58 OUT (58H),A ;DSE 8000h fuer Sonderserie ; ------------------------ 0201 01FE 01 4A 0B LD BC,XIRSY1-LREUP-1 0202 0201 11 36 F2 LD DE,LREUP+1 0203 0204 21 35 F2 LD HL,LREUP 0204 0207 36 00 LD (HL),00H ;LREUP...XIRSY1-1 0205 0209 ED B0 LDIR ; mit 00H laden ; ------------------------ 0206 020B 21 05 04 LD HL,YIRSYS ;IR-Rahmen in RAM kopieren 0207 020E 11 D6 FC LD DE,RIRSYS 0208 0211 01 21 00 LD BC,STPTST-YIRSYS 0209 0214 ED B0 LDIR ; ------------------------ 0210 0216 21 D6 FC LD HL,RIRSYS 0211 0219 22 44 FD LD (IRT+(CTCIR-80H)*2),HL ;IRT laden 0212 021C C3 00 23 JP JBAINI ;*********************************************** ;Long REad Byte (01B6H) ; ;IN: A=Banknr. (Bit 7=0, Bit 1,0=Banknr.) ; HL=Speicheradresse ;OUT: A=Byte ;REG: AF, BC, DE ; 0213 021F CD 76 02 LREB: CALL MABAUM 0214 0222 DB A8 IN A,(PPIA) 0215 0224 57 LD D,A ;D= Istbank 0216 0225 A1 AND C 0217 0226 B0 OR B ;A= Zielbank 0218 0227 CD 35 F2 CALL LREUP 0219 022A 7B LD A,E ;A=E= Byte 0220 022B C9 RET ;------------------------------- ; (F380H) ;LREUP: OUT (PPIA),A ;Bank umschalten ; LD E,(HL) ;Byte lesen ; JR LWRUP1 ;*********************************************** ;Long WRite Byte (01D1H) ; ;IN: A=Banknr. (Bit 7=0, Bit 1,0=Banknr.) ; HL=Speicheradresse ; E=Byte ;OUT: ;REG: AF, BC, D ; 0221 022C D5 LWRB: PUSH DE ;Byte retten 0222 022D CD 76 02 CALL MABAUM 0223 0230 D1 POP DE ;Byte zur 0224 0231 DB A8 IN A,(PPIA) 0225 0233 57 LD D,A ;D= Istbank 0226 0234 A1 AND C 0227 0235 B0 OR B ;A= Zielbank 0228 0236 C3 3A F2 JP LWRUP ;RET ;------------------------------- ; (F385H) ;LWRUP: OUT (PPIA),A ;Bank umschalten ; LD (HL),E ;Byte schreiben ;LWRUP1:LD A,D ; OUT (PPIA),A ;Bank rueckschalten ; RET ;************************************************ ;Long 1 CALL (01FFH) ; ;IN: (BASUB)= Banknr. (Bit 7=0, Bit 1,0=Banknr.) ; IX=Speicheradresse ;OUT: DI ! ;REG: ALLE ! ; 0229 0239 FD 2A 6F FC L1CALL: LD IY,(BASUB-1) 0230 023D 18 12 JR L3CALL ;************************************************ ;Long 2 CALL (0205H) ; ;IN: 3 Byte nach Aufruf: Banknr. (Bit 7=0, Bit 1,0=Banknr.) ; Speicheradresse ;OUT: Retadr=Retadr+3 / DI ! ;REG: ALLE ! ; 0231 023F E3 L2CALL: EX (SP),HL 0232 0240 F5 PUSH AF 0233 0241 D5 PUSH DE 0234 0242 7E LD A,(HL) 0235 0243 F5 PUSH AF 0236 0244 FD E1 POP IY ;H(IY)= Zielbank 0237 0246 23 INC HL 0238 0247 5E LD E,(HL) 0239 0248 23 INC HL 0240 0249 56 LD D,(HL) 0241 024A 23 INC HL 0242 024B D5 PUSH DE 0243 024C DD E1 POP IX ;IX= Adr 0244 024E D1 POP DE 0245 024F F1 POP AF 0246 0250 E3 EX (SP),HL ;Retadr+3 in Stack ;************************************************ ;Long 3 CALL (0217H) ; ;IN: H(IY)=Banknr. (Bit 7=0, Bit 1,0=Banknr.) ; IX=Speicheradresse ;OUT: DI ! ;REG: ALLE ! ; 0247 0251 F3 L3CALL: DI 0248 0252 D9 EXX ;BC' - HL' 0249 0253 08 EX AF,AF' ;AF' ; ------------------------ 0250 0254 FD E5 PUSH IY 0251 0256 F1 POP AF ;A'= Zielbank 0252 0257 DD E5 PUSH IX 0253 0259 E1 POP HL ;HL'= Adr 0254 025A CD 76 02 CALL MABAUM ; ------------------------ 0254 025A CD 76 02 CALL (PPIA) 0256 025F F5 PUSH AF ;Istbank im Stack 0257 0260 A1 AND C 0258 0261 B0 OR B ;A'= Zielbank 0259 0262 D9 EXX ;BC - HL 0260 0263 C3 41 F2 JP LCAUP ;------------------------------- ; (F38CH) ;LCAUP: OUT (PPIA),A ;Bank umschalten ; EX AF,AF' ;AF ; CALL LCAUP1 ; EX AF,AF' ;AF' ; POP AF ; OUT (PPIA),A ;Bank rueckschalten ; EX AF,AF' ;AF ; RET ; ;LCAUP1:JP (IX) ;(F398H) ;*********************************************** ;BANKUMschaltung (025EH) ; ;IN: A=Banknr. (Bit 7=0, Bit 1,0=Banknr.) ; HL=Speicheradresse ;OUT: ;REG: Alle ; 0261 0266 CD 76 02 BANKUM: CALL MABAUM 0262 0269 DB A8 IN A,(PPIA) 0263 026B A1 AND C 0264 026C B0 OR B 0265 026D D3 A8 OUT (PPIA),A ;Bank umschalten 0266 026F C9 RET ;************************************************************ ;Direkte BAnkABfrage (144CH) ; 0267 0270 DB A8 DBAABF: IN A,(PPIA) ;A=akt. Bankkonfiguration 0268 0272 C9 RET ;************************************************************ ;Direkte BAnkUMschaltung (144FH) ; 0269 0273 D3 A8 DBAUM: OUT (PPIA),A ;Soll-Bankkonfiguration 0270 0275 C9 RET ;*********************************************** ;MAsken fuer BAnkUMschaltung ermitteln (027EH) ;IN: A=Zielbank / HL=Adr ;OUT: A,HL unveraendert / B,C = Masken ;REG: D,E ; 0271 0276 F5 MABAUM: PUSH AF 0272 0277 7C LD A,H 0273 0278 07 RLCA 0274 0279 07 RLCA 0275 027A E6 03 AND 03H 0276 027C 5F LD E,A 0277 027D 3E C0 LD A,0C0H 0278 027F 07 MABA10: RLCA 0279 0280 07 RLCA 0280 0281 1D DEC E 0281 0282 F2 7F 02 JP P,MABA10 0282 0285 5F LD E,A 0283 0286 2F CPL 0284 0287 4F LD C,A 0285 0288 F1 POP AF 0286 0289 F5 PUSH AF 0287 028A E6 03 AND 03H 0288 028C 3C INC A 0289 028D 47 LD B,A 0290 028E 3E AB LD A,-55H ;0ABH 0291 0290 C6 55 MABA20: ADD A,55H 0292 0292 10 FC DJNZ MABA20 0293 0294 57 LD D,A 0294 0295 A3 AND E 0295 0296 47 LD B,A 0296 0297 F1 POP AF 0297 0298 C9 RET ;*********************************************** ;PRinterTREIber (085DH) ; ;IN: A:Zeichen ;OUT: NC=Ausgabe i.O. / A=Zeichen / EI ! ; C=Abbruch mit STOP / (LPTPOS)=0 / A=Zeichen / EI ! ;REG: F ; 0298 0299 CD 0D FE PRTREI: CALL XPRTRE ;(0FFB6H) 0299 029C F5 PUSH AF ; ------------------------- 0300 029D CD BD 02 PRTR2: CALL PRSTA ;Status mit CTRL-STOP-Abfrage 0301 02A0 38 0A JR C,PRTR6 0302 02A2 28 F9 JR Z,PRTR2 ; ------------------------ 0303 02A4 F1 POP AF 0304 02A5 F5 PRTR4: PUSH AF 0305 02A6 CD D1 02 CALL V24OUT ;Zeichenausgabe (DI/EI!) 0306 02A9 F1 POP AF 0307 02AA A7 AND A ;CY=0 0308 02AB C9 RET ;------------------------------- 0309 02AC AF PRTR6: XOR A 0310 02AD 32 DC F2 LD (LPTPOS),A 0311 02B0 3E 0D LD A,CR 0312 02B2 CD D1 02 CALL V24OUT 0313 02B5 3E 0A LD A,LF 0314 02B7 CD D1 02 CALL V24OUT 0315 02BA F1 POP AF 0316 02BB 37 SCF ;Fehler-->CY=1 0317 02BC C9 RET ;************************************************ ;PRinterSTAtus (0884H) ; ;IN: - ;OUT: NC,NZ = bereit / NC,Z oder C,Z = nicht bereit ; C,NZ = gibt es nicht!! ;REG AF ; 0318 02BD CD 12 FE PRSTA: CALL XPRSTA ;(0FFBBH) ; ------------------------- 0319 02C0 CD 9D 04 CALL DSTPTS ;STOP-Tastenabfrage 0320 02C3 30 05 JR NC,PRST3 0321 02C5 28 03 JR Z,PRST3 0322 02C7 AF XOR A ;Z: nicht bereit 0323 02C8 37 SCF ;C: Abbruch mit CTRL-STOP 0324 02C9 C9 RET ; ------------------------ 0325 02CA DB 91 PRST3: IN A,(DPIOB) 0326 02CC EE 10 XOR 2**CTS ;CTS-BIT neg 0327 02CE CB 67 BIT CTS,A ;Z/NZ: nicht bereit / bereit 0328 02D0 C9 RET ;NC: kein CTRL-STOP ;************************************************ ;V24-OUTput ; ;IN: A=Zeichen ;OUT: EI ! ;REG: AF ; 0329 02D1 CD 1F FE V24OUT: CALL XV24OU 0330 02D4 C5 PUSH BC 0331 02D5 D5 PUSH DE 0332 02D6 E5 PUSH HL ;------------------------------- 0333 02D7 16 FF LD D,0FFH ;Stop- u. Paritaetsbit in D 0334 02D9 06 09 LD B,9 ;Bitanzahl 0335 02DB 2A AF F2 LD HL,(V24FO) ;L=V24FO 0336 02DE CB 65 BIT 4,L 0337 02E0 28 01 JR Z,V24O10 ; ------------------------ 0338 02E2 04 INC B ;2 Stopbit ;------------------------------- 0339 02E3 CB 75 V24O10: BIT 6,L 0340 02E5 28 17 JR Z,V24O20 ; ------------------------ 0341 02E7 04 INC B ;mit Paritaet 0342 02E8 CB 7D BIT 7,L 0343 02EA 20 02 JR NZ,V24O13 0344 02EC E6 7F AND 7FH ;nur 7 Datenbit 0345 02EE CB 6D V24O13: BIT 5,L ;Sollparitaet gerade? 0346 02F0 28 06 JR Z,V24O16 ; Ja--> ; 0347 02F2 A7 AND A ;Istparitaet bilden 0348 02F3 E2 FC 02 JP PO,V24O18 ; Istparitaet ungerade--> 0349 02F6 18 06 JR V24O20 ; Istparitaet gerade--> ; 0350 02F8 A7 V24O16: AND A ;Istparitaet bilden 0351 02F9 E2 FE 02 JP PO,V24O20 ; Istparitaet ungerade--> 0352 02FC CB 82 V24O18: RES 0,D ; Paritaetsbit in D = 0 ;------------------------------- 0353 02FE 5F V24O20: LD E,A 0354 02FF CB 23 SLA E ;Startbit anfuegen 0355 0301 CB 7D BIT 7,L 0356 0303 28 03 JR Z,V24O30 ; ------------------------ 0357 0305 CB 12 RL D ;8. Datenbit 0358 0307 04 INC B ;------------------------------- 0359 0308 7D V24O30: LD A,L 0360 0309 21 01 00 LD HL,01H ;ZK fuer 19200 Baud 0361 030C E6 07 AND 07H 0362 030E 28 04 JR Z,V24O40 0363 0310 29 V24O35: ADD HL,HL ;ZK=ZK*2 0364 0311 3D DEC A 0365 0312 20 FC JR NZ,V24O35 ;------------------------------- 0366 0314 F3 V24O40: DI ;DI 0367 0315 DB 91 IN A,(DPIOB) ;PIO ruecklesen ; ------------------------ 0368 0317 1F V24O45: RRA 0369 0318 1F RRA 0370 0319 CB 1A RR D 0371 031B CB 1B RR E 0372 031D 17 RLA 0373 031E 17 RLA 0374 031F D3 91 OUT (DPIOB),A ;Bitweise Ausgabe ; ------------------------ 0375 0321 E5 PUSH HL ;Mod. 1. Durchlauf 0376 0322 BE CP (HL) 0377 0323 18 09 JR V24O55 0378 0325 DD E3 V24O50: EX (SP),IX ;Zeitschleife 0379 0327 DD E3 EX (SP),IX 0380 0329 DD E3 EX (SP),IX 0381 032B DD E3 EX (SP),IX 0382 032D 00 NOP 0383 032E DD E3 V24O55: EX (SP),IX 0384 0330 DD E3 EX (SP),IX 0385 0332 2B DEC HL 0386 0333 4F LD C,A 0387 0334 7C LD A,H 0388 0335 B5 OR L 0389 0336 79 LD A,C ;L1017? 0390 0337 20 EC JR NZ,V24O50 ; ------------------------ 0391 0339 E1 POP HL 0392 033A 10 DB DJNZ V24O45 ;naechstes Bit ;------------------------------- 0393 033C E1 POP HL 0394 033D D1 POP DE 0395 033E C1 POP BC 0396 033F FB EI ;EI 0397 0340 C9 RET ;************************************************ ; (1398H) 0398 0341 CD B8 FD NMI: CALL XNMI ;(0FDD6H) 0399 0344 ED 45 RETN ;************************************************ ;Test Aktueller FCB (145FH) ; ;OUT:Z: (ACTFCB)=0 / NZ: (ACTFCB)<>0 ;REG: AF ; 0400 0346 CD BD FD TAFCB: CALL XTAFCB ;(0FEDFH) 0401 0349 E5 PUSH HL 0402 034A 2A 2B F7 LD HL,(ACTFCB) 0403 034D 7D LD A,L 0404 034E B4 OR H 0405 034F E1 POP HL 0406 0350 C9 RET ;************************************************************ ;ComPare REGister hl und de (146AH) ; ;OUT: HL,DE unveraendert / Flags entspr Vergleich ;REG: AF ; 0407 0351 7C CPREG: LD A,H 0408 0352 92 SUB D 0409 0353 C0 RET NZ 0410 0354 7D LD A,L 0411 0355 93 SUB E 0412 0356 C9 RET ;************************************************************ ; (148AH) 0413 0357 C3 C2 FD DUMMY1: JP XDUMM1 ;(0FFA7H) ;************************************************************ ; (148EH) 0414 035A C3 C7 FD DUMMY2: JP XDUMM2 ;(0FFACH) ;************************************************************ ;CHARacter Output (1B45H) ; ;IN: A=Zeichen ;OUT: A=Zeichen ;REG: F, IX ; 0415 035D F5 CHARO: PUSH AF 0416 035E CD CC FD CALL XCHRO ;------------------------------- 0417 0361 CD 46 03 CALL TAFCB ;Conout ueber FCB? 0418 0364 28 08 JR Z,CHARO2 ; Nein--> 0419 0366 F1 POP AF 0420 0367 DD 21 50 6E LD IX,CHRO98 0421 036B C3 39 02 JP L1CALL ;------------------------------- 0422 036E 3A DD F2 CHARO2: LD A,(PTORSC) 0423 0371 B7 OR A ;Screen? 0424 0372 20 04 JR NZ,CHARO4 ; Nein--> 0425 0374 F1 POP AF 0426 0375 C3 0C FD JP ICONOUT ;SCREEN-Ausgabe ;------------------------------- 0427 0378 F1 CHARO4: POP AF ;Printer 0428 0379 C3 0F FD JP ILIST ;************************************************************ ;PRinTerOUTput (1B63H) ; ;IN: A=Zeichen ;OUT: BASIC: NC: Ausgabe i.O. / A=Zeichen / EI ! ; bei CTRL-STOP: hart zu ERDEVI / EI ! ; SCP: NC: Ausgabe i.O. / A=Zeichen / EI! ; C : Abbruch mit CTRL-STOP / A=Zeichen / EI! ;REG: F ; HL (nur im SCP) ; 0429 037C CD 17 FE PRTOUT: CALL XPRTOU 0430 037F E5 PUSH HL 0431 0380 F5 PUSH AF ;=============================== 0432 0381 2A DE F2 LD HL,(DRUTYP) ;L=DRUTYP 0433 0384 3A 91 FF LD A,(BSKENN) 0434 0387 67 LD H,A ;H=BSKENN 0435 0388 F1 POP AF 0436 0389 F5 PUSH AF 0437 038A CB 65 BIT 4,L ;mit Steuerzeichenauswertung? 0438 038C 20 61 JR NZ,PRTO60 ; Nein--> ;=============================== 0439 038E FE 09 CP 09H 0440 0390 20 10 JR NZ,PRTO20 ; ------------------------ 0441 0392 3E 20 PRTO10: LD A,20H ;TAB in 0442 0394 CD 7C 03 CALL PRTOUT 0443 0397 38 59 JR C,PRTO65 0444 0399 3A DC F2 LD A,(LPTPOS) 0445 039C E6 07 AND 07H 0446 039E 20 F2 JR NZ,PRTO10 ; SPC wandeln 0447 03A0 18 50 JR PRTO65 ;RET (NC) ;=============================== 0448 03A2 D6 0D PRTO20: SUB CR ;CR? 0449 03A4 28 0A JR Z,PRTO30 ; Ja (A=0)--> ; ------------------------ 0450 03A6 38 0B JR C,PRTO40 ;andere Steuerzeichen? 0451 03A8 FE 13 CP 13H 0452 03AA 38 07 JR C,PRTO40 ; Ja--> ; ------------------------ 0453 03AC 3A DC F2 LD A,(LPTPOS) 0454 03AF 3C INC A ;Zeichenzaehler ink 0455 03B0 32 DC F2 PRTO30: LD (LPTPOS),A ;=============================== 0456 03B3 F1 PRTO40: POP AF 0457 03B4 F5 PUSH AF ;------------------------------- 0458 03B5 CB 6D BIT 5,L ;Linker Rand? 0459 03B7 28 0B JR Z,PRTO42 ; Nein--> ; ------------------------ 0460 03B9 FE 0D CP 0DH 0461 03BB 20 07 JR NZ,PRTO42 ; 0462 03BD CD 99 02 CALL PRTREI ;Ausgabe CR 0463 03C0 38 30 JR C,PRTO65 0464 03C2 18 CE JR PRTO10 ; +linker Rand ;=============================== 0465 03C4 CB 4C PRTO42: BIT 1,H ;SCP? 0466 03C6 20 1F JR NZ,PRTO55 ; Ja--> ; ------------------------ 0467 03C8 CB 5D BIT 3,L ;IBM-Drucker? 0468 03CA 20 10 JR NZ,PRTO45 ; Nein--> ; ------------------------ 0469 03CC CD 72 12 CALL CHRTST ;2.Grapbyte-40H, 0470 03CF 38 1E JR C,PRTO60 ; sonst unveraend 0471 03D1 3E 1B LD A,1BH ;GCH-->ESC ^ 0472 03D3 CD 99 02 CALL PRTREI 0473 03D6 38 1A JR C,PRTO65 0474 03D8 3E 5E LD A,'^' ;5EH 0475 03DA 18 13 JR PRTO60 ;=============================== 0476 03DC CD 72 12 PRTO45: CALL CHRTST 0477 03DF 30 11 JR NC,PRTO65 ;GCH-->RET 0478 03E1 28 04 JR Z,PRTO55 ; sonst--> 0479 03E3 3E 2A PRTO50: LD A,'*' ; 2.Graphbyte 0480 03E5 18 08 JR PRTO60 ; wandeln in Stern ;------------------------------- 0481 03E7 CB 55 PRTO55: BIT 2,L 0482 03E9 28 04 JR Z,PRTO60 ;EPSON--> 0483 03EB FE 80 CP 80H 0484 03ED 30 F4 JR NC,PRTO50 ;sonst >80H in Stern ;=============================== 0485 03EF CD 99 02 PRTO60: CALL PRTREI ; ------------------------ 0486 03F2 E1 PRTO65: POP HL 0487 03F3 7C LD A,H 0488 03F4 E1 POP HL 0489 03F5 CD 1C FE CALL XPRTO2 ;RET bei SCP 0490 03F8 D0 RET NC ;OK-->RET ; ======================== 0491 03F9 DD 21 CF 75 LD IX,ERDEVI 0492 03FD C3 39 02 JP L1CALL ;Fehler ;************************************************************ ;RST38 = absturz oder break ; 0493 0400 CD 3D FE RST38: CALL XRST38 0494 0403 F3 DI 0495 0404 76 HALT ;************************************************************ ; ;############################################################ BICLUE.ASM ab hier (UZ) ; ;************************************************************************ ;Tastatur- Spielhebel- Kassetten- u. Musik- Treiber ;BEEP ueber Kanal A ;27.06.89 ;Bearbeiter: Luetzner ;************************************************************************ ; external STOP1 ; ;************************************************************************ global IRSYS SYS06 SYS19 SOTB SOTB10 FTB FTB6 global CAPSB STOPB HOMEB RIPUZI CTRIPU global STB STB2 LORIPU INKEY RDRIPU RDRIP1 GETA35 global YSLDIF ;************************************************************************ 0496 0405 ED 73 D3 FC YIRSYS: LD (IRSPL2),SP 0497 0409 31 D3 FC LD SP,IRSPL2 0498 040C F5 PUSH AF 0499 040D DB A8 IN A,(PPIA) 0500 040F 32 D5 FC LD (H1PPIA),A 0501 0412 3E A0 LD A,0A0H ; YSLOT: EQU $-1 ; 0502 0414 D3 A8 OUT (PPIA),A 0503 0416 CD E1 04 CALL IRSYS ;Tastatur-IR ausfuehren 0504 0419 3A D5 FC LD A,(H1PPIA) 0505 041C D3 A8 OUT (PPIA),A 0506 041E F1 POP AF 0507 041F ED 7B D3 FC LD SP,(IRSPL2) 0508 0423 FB EI 0509 0424 ED 4D RETI ;-------------------------------- YSLDIF EQU YSLOT-YIRSYS ;-------------------------------- ;SToPTeST ; ;IN: HL= ; 0510 0426 3A 8D FA STPTST: LD A,(STOPFL) 0511 0429 A7 AND A 0512 042A C0 RET NZ ;Stop aus-->RET ;------------------------------- 0513 042B E5 PUSH HL 0514 042C 21 09 FC LD HL,STCSSW 0515 042F F3 DI 0516 0430 7E LD A,(HL) 0517 0431 36 00 LD (HL),00H 0518 0433 E1 POP HL 0519 0434 FB EI 0520 0435 A7 AND A 0521 0436 C8 RET Z ;kein Stop-->RET ;------------------------------- 0522 0437 FE 03 CP 03H ;CTRL-STOP? 0523 0439 28 1C JR Z,STPT20 ; Ja-->STPT20 ; ------------------------ 0524 043B E5 PUSH HL 0525 043C D5 PUSH DE 0526 043D C5 PUSH BC 0527 043E CD 28 15 CALL KUSEZ ;Bed. Kursoranz 0528 0441 21 09 FC LD HL,STCSSW 0529 0444 F3 STPT15: DI 0530 0445 7E LD A,(HL) 0531 0446 36 00 LD (HL),00H 0532 0448 FB EI 0533 0449 A7 AND A 0534 044A 28 F8 JR Z,STPT15 ;Warten auf 2. STOP 0535 044C F5 PUSH AF 0536 044D CD 44 15 CALL KUREZ ;Bed. Kursorloe 0537 0450 F1 POP AF 0538 0451 C1 POP BC 0539 0452 D1 POP DE 0540 0453 E1 POP HL 0541 0454 FE 03 CP 03H ;CTRL-STOP? 0542 0456 C0 RET NZ ; Nein-->RET ;=============================================== 0543 0457 E5 STPT20: PUSH HL ;CTRL-STOP-Beh 0544 0458 CD 93 04 CALL LORIPU ;Loe Ringpuff 0545 045B CD 7F 04 CALL TSTPIR ;Test Stop-IR 0546 045E 30 0A JR NC,STPT30 ;kein IR-->STPT30 ; ------------------------ 0547 0460 21 D8 FB LD HL,STOPSW 0548 0463 F3 DI 0549 0464 CD 7F 07 CALL IRAMN ;IR anmelden 0548 0463 F3 DI 0549 0464 CD 7F 07 CALL ;----------------------------------------------- 0553 046A CD B2 13 STPT30: CALL LATXTM 0554 046D 3A 70 FC LD A,(BASUB) 0555 0470 26 40 LD H,40H 0556 0472 CD 66 02 CALL BANKUM ;BASIC zuschalten 0557 0475 E1 POP HL ;HL unveraendert 0558 0476 AF XOR A 0559 0477 ED 7B 77 F5 LD SP,(HELPSP) 0560 047B C5 PUSH BC ;Masken Bankum 0561 047C C3 EF 65 JP STOP1 ;*********************************************** ;Test SToPtasten-IR ; ;OUT: CY=1: IR 0562 047F 3A D8 FB TSTPIR: LD A,(STOPSW) 0563 0482 0F RRCA 0564 0483 D0 RET NC ; ------------------------ 0565 0484 2A D9 FB LD HL,(STOPAD) 0566 0487 7C LD A,H 0567 0488 B5 OR L 0568 0489 C8 RET Z ; ------------------------- 0569 048A 2A E2 F2 LD HL,(ACTZN) 0570 048D 23 INC HL 0571 048E 7C LD A,H 0572 048F B5 OR L 0573 0490 C8 RET Z ; ------------------------- 0574 0491 37 SCF ;CY=1-->IR 0575 0492 C9 RET ;************************************************ ;LOeschen RIngPUffer ; 0576 0493 2A 97 F2 LORIPU: LD HL,(SCHRIP) 0577 0496 22 99 F2 LD (LESRIP),HL 0578 0499 CD 9F FD CALL XRDRP2 ;SCP - Statuspufferzeile ; loeschen 0579 049C C9 RET ;************************************************ ;Direkter SToptasten-TeSt ; ;OUT: CY=1: CTRL-STOP ; 0580 049D DB AA DSTPTS: IN A,(PPIC) 0581 049F E6 F0 AND 0F0H 0582 04A1 F6 06 OR 06H 0583 04A3 D3 AA OUT (PPIC),A 0584 04A5 E3 EX (SP),HL 0585 04A6 E3 EX (SP),HL 0586 04A7 DB A9 IN A,(PPIB) 0587 04A9 E6 04 AND 04H ;CTRL ? 0588 04AB C0 RET NZ ;nein ; ------------------------ 0589 04AC DB AA IN A,(PPIC) 0590 04AE 3C INC A 0591 04AF D3 AA OUT (PPIC),A 0592 04B1 E3 EX (SP),HL 0593 04B2 E3 EX (SP),HL 0594 04B3 DB A9 IN A,(PPIB) 0595 04B5 E6 10 AND 10H ;STOP 0596 04B7 20 0A JR NZ,DSTPT1 ;nein ; ------------------------ 0597 04B9 3A D7 FA LD A,(LTMSTP) 0598 04BC E6 EF AND 0EFH ;STOP eintr. 0599 04BE 32 D7 FA LD (LTMSTP),A 0600 04C1 18 0F JR DSTPT2 ; ------------------------ 0601 04C3 DB AA DSTPT1: IN A,(PPIC) 0602 04C5 E6 F0 AND 0F0H 0603 04C7 F6 03 OR 03H 0604 04C9 D3 AA OUT (PPIC),A 0605 04CB E3 EX (SP),HL 0606 04CC E3 EX (SP),HL 0607 04CD DB A9 IN A,(PPIB) 0608 04CF E6 01 AND 01H ;C ? 0609 04D1 C0 RET NZ ;nein ;------------------------------- 0610 04D2 E5 DSTPT2: PUSH HL 0611 04D3 2A 97 F2 LD HL,(SCHRIP) 0612 04D6 22 99 F2 LD (LESRIP),hl ;Ringpuff loeschen 0613 04D9 E1 POP HL 0614 04DA 3E 13 LD A,13H ;Tastatur entprellen 0615 04DC 32 96 F2 LD (TSTPRZ),A 0616 04DF 37 SCF ;CY=1 0617 04E0 C9 RET ;************************************************ 0618 04E1 E5 IRSYS: PUSH HL 0619 04E2 D5 PUSH DE 0620 04E3 C5 PUSH BC 0621 04E4 D9 EXX 0622 04E5 08 EX AF,AF' 0623 04E6 E5 PUSH HL 0624 04E7 D5 PUSH DE 0625 04E8 C5 PUSH BC 0626 04E9 F5 PUSH AF 0627 04EA FD E5 PUSH IY 0628 04EC DD E5 PUSH IX ; ------------------------ 0629 04EE CD 80 FD CALL XIRSY1 ;0FD9AH ; ------------------------ 0630 04F1 FB EI 0631 04F2 CD 8F FD CALL XIRSY2 ;0FD9FH ;------------------------------- 0632 04F5 2A 10 FC LD HL,(DAUER) 0633 04F8 2B DEC HL 0634 04F9 7C LD A,H 0635 04FA B5 OR L 0636 04FB 20 09 JR NZ,SYS05 ; ------------------------ 0637 04FD 21 ED FB LD HL,INTVSW 0638 0500 CD 7F 07 CALL IRAMN ;IR: Time 0639 0503 2A 0E FC LD HL,(VAIVAL) ; ------------------------ 0640 0506 22 10 FC SYS05: LD (DAUER),HL ;------------------------------- 0641 0509 2A 0C FC SYS06: LD HL,(VATIME) 0642 050C 23 INC HL 0643 050D 22 0C FC LD (VATIME),HL ;Time-Variable+1 ;------------------------------- 0644 0510 3A 1C FA LD A,(MUKAFL) ;Tonerzeugung fuer 0645 0513 4F LD C,A 0646 0514 AF XOR A 0647 0515 CB 19 SYS10: RR C 0648 0517 F5 PUSH AF 0649 0518 C5 PUSH BC 0650 0519 DC 94 07 CALL C,MUERZI 0651 051C C1 POP BC 0652 051D F1 POP AF 0653 051E 3C INC A 0654 051F FE 03 CP 03H ; alle 3 Kanaele 0655 0521 38 F2 JR C,SYS10 ;------------------------------- 0656 0523 21 95 F2 LD HL,TSTIRZ 0657 0526 35 DEC (HL) 0658 0527 20 65 JR NZ,SYS15 ;================================ 0659 0529 36 02 LD (HL),02H ;------------------------------- 0660 052B CD 94 FD CALL XIRSY4 ;SCP: PC=SYS19 ; ------------------------ 0661 052E CD 27 0B CALL INJOY 0662 0531 E6 F0 AND 0F0H ;nur Schussauswertung 0663 0533 47 LD B,A 0664 0534 CD 45 0B CALL INKSTA 0665 0537 E6 01 AND 01H ;Space ? 0666 0539 78 LD A,B 0667 053A 28 02 JR Z,SYS30 0668 053C F6 01 OR 01H ;nein 0669 053E 4F SYS30: LD C,A ;Bit 0: Space-Taste ;Bit 4-7: Aktionstasten ; ------------------------ 0670 053F 21 86 F2 LD HL,HSTRIG 0671 0542 AE XOR (HL) 0672 0543 A6 AND (HL) ;Bit i,A=1 bei 1/0-Flanke 0673 0544 71 LD (HL),C 0674 0545 4F LD C,A ; ------------------------ 0675 0546 0F RRCA 0676 0547 21 DE FB LD HL,SRG0SW 0677 054A DC 7F 07 CALL C,IRAMN ;IR: Space-Taste ; ------------------------ 0678 054D CB 11 RL C 0679 054F 21 E4 FB LD HL,SRG2SW 0680 0552 DC 7F 07 CALL C,IRAMN ;IR: Joy2 Aktionstaste1 ; ------------------------ 0681 0555 CB 11 RL C 0682 0557 21 EA FB LD HL,SRG4SW 0683 055A DC 7F 07 CALL C,IRAMN ;IR: Joy2 Aktionstaste2 ; ------------------------ 0684 055D CB 11 RL C 0685 055F 21 E1 FB LD HL,SRG1SW 0686 0562 DC 7F 07 CALL C,IRAMN ;IR: Joy1 Aktionstaste1 ; ------------------------ 0687 0565 CB 11 RL C 0688 0567 21 E7 FB LD HL,SRG3SW 0689 056A DC 7F 07 CALL C,IRAMN ;IR: Joy1 Aktionstaste2 ;=============================== 0690 056D AF SYS19: XOR A 0691 056E 32 CF FA LD (KCLK1T),A ;-------------------------------- 0692 0571 CD 9C 05 CALL GETAST ;Abfrage Tastenmatrix 0693 0574 20 18 JR NZ,SYS15 ;noch Zeichen im Ringpuffer -->Ende ;------------------------------- 0694 0576 21 96 F2 LD HL,TSTPRZ ;Repeatzaehler=0 ? 0695 0579 35 DEC (HL) 0696 057A 20 12 JR NZ,SYS15 ; Nein-->Ende ; ------------------------ 0697 057C 36 01 LD (HL),01H 0698 057E 21 D0 FA LD HL,LTAMAT 0699 0581 11 D1 FA LD DE,LTAMAT+1 0700 0584 01 08 00 LD BC,0008H 0701 0587 36 FF LD (HL),0FFH 0702 0589 ED B0 LDIR ;LTAMAT loeschen 0703 058B CD C9 05 CALL GETA25 ;Erneute Tastenabfrage ;=============================== 0704 058E DD E1 SYS15: POP IX 0705 0590 FD E1 POP IY 0706 0592 F1 POP AF 0707 0593 C1 POP BC 0708 0594 D1 POP DE 0709 0595 E1 POP HL 0710 0596 08 EX AF,AF' 0711 0597 D9 EXX 0712 0598 C1 POP BC 0713 0599 D1 POP DE 0714 059A E1 POP HL 0715 059B C9 RET ;************************************************ ;GEt TASTaturbelegung ; 0716 059C DB AA GETAST: IN A,(PPIC) 0717 059E E6 F0 AND 0F0H 0718 05A0 4F LD C,A 0719 05A1 06 09 LD B,09H ;Spaltenanzahl 0720 05A3 21 D9 FA LD HL,ATAMAT ;aktuelle Tastenmatrix 0721 05A6 79 GETA05: LD A,C 0722 05A7 D3 AA OUT (PPIC),A 0723 05A9 E3 EX (SP),HL 0724 05AA E3 EX (SP),HL 0725 05AB DB A9 IN A,(PPIB) 0726 05AD 77 LD (HL),A ;akt. Tastenbelegung fuer Spalte c 0727 05AE 0C INC C 0728 05AF 23 INC HL 0729 05B0 10 F4 DJNZ GETA05 ; ---------------------- 0730 05B2 CD A7 FD CALL XGETA5 ;Test auf unerfuelte STOP-Anforderung ;----------------------------- 0731 05B5 11 D9 FA GETA10: LD DE,ATAMAT 0732 05B8 06 09 LD B,09H 0733 05BA 1B GETA15: DEC DE ;akt Tastenbelgg = 0734 05BB 2B DEC HL ; letzte - " - 0735 05BC 1A LD A,(DE) 0736 05BD BE CP (HL) 0737 05BE 20 04 JR NZ,GETA20 ; Nein-->GETA20 0738 05C0 10 F8 DJNZ GETA15 0739 05C2 18 05 JR GETA25 ; ------------------------ 0740 05C4 3E 13 GETA20: LD A,13H ;(19) Repeatzaehler 0741 05C6 32 96 F2 LD (TSTPRZ),A ; laden ;------------------------------- 0742 05C9 06 09 GETA25: LD B,09H 0743 05CB 21 D0 FA LD HL,LTAMAT ;alte Tastenbelegg. 0744 05CE 11 D9 FA LD DE,ATAMAT ;akt. -"- 0745 05D1 1A GETA30: LD A,(DE) 0746 05D2 4F LD C,A 0747 05D3 AE XOR (HL) ;Bit i,A=1, wenn Taste gedr 0748 05D4 A6 AND (HL) ; (d.h. Bit i,(HL) mit 1/0-Flanke) 0749 05D5 71 LD (HL),C 0750 05D6 C4 04 06 CALL NZ,TASTV ;Behandlung d.gedr. Taste(n) 0751 05D9 13 INC DE 0752 05DA 23 INC HL 0753 05DB 10 F4 DJNZ GETA30 ;=============================== 0754 05DD 2A 99 F2 GETA35: LD HL,(LESRIP) ;Lesezeiger 0755 05E0 3A 97 F2 LD A,(SCHRIP) 0756 05E3 95 SUB L ;Zeichen im Ringpuffer 0757 05E4 C9 RET ;NZ: Ja ;************************************************ ; ;Out: NZ ,wenn Zeichen im Buffer ; 0758 05E5 FB INKEY: EI 0759 05E6 E5 PUSH HL 0760 05E7 D5 PUSH DE 0761 05E8 C5 PUSH BC 0762 05E9 CD 54 12 CALL TGRASV ;Grafikscreen ? 0763 05EC 30 0F JR NC,INKEY2 ; ja ; ------------------------ 0764 05EE 3A C3 FA LD A,(FTSHI) 0765 05F1 21 DF FA LD HL,ASTAMT 0766 05F4 AE XOR (HL) 0767 05F5 21 85 F2 LD HL,FKTANZ 0768 05F8 A6 AND (HL) 0769 05F9 0F RRCA 0770 05FA DC 06 12 CALL C,KEYON ; ------------------------- 0771 05FD CD DD 05 INKEY2: CALL GETA35 0772 0600 C1 POP BC 0773 0601 D1 POP DE 0774 0602 E1 POP HL 0775 0603 C9 RET ;************************************************ ;TASTaturVerteiler ;IN: Bit i,A: Zeile der gedr Taste ; B: 9-Spalte - " - ; 0776 0604 E5 TASTV: PUSH HL 0777 0605 D5 PUSH DE 0778 0606 C5 PUSH BC 0779 0607 F5 PUSH AF 0780 0608 3E 09 LD A,09H 0781 060A 90 SUB B 0782 060B 87 ADD A,A 0783 060C 87 ADD A,A 0784 060D 87 ADD A,A 0785 060E 4F LD C,A ;8*Spalte(0-8) 0786 060F 06 08 LD B,08H 0787 0611 F1 POP AF 0788 0612 1F TASTV2: RRA 0789 0613 C5 PUSH BC 0790 0614 F5 PUSH AF 0791 0615 DC 42 0A CALL C,JPCDE 0792 0618 F1 POP AF 0793 0619 C1 POP BC 0794 061A 0C INC C 0795 061B 10 F5 DJNZ TASTV2 0796 061D C3 04 14 JP POP2 ;************************************************ ;TAstenCOdeTabelle ; 0797 0620 30 31 32 33 TACOT: DEFM '0123456789' ;ohne Sondertaste 34 35 36 37 38 39 0798 062A 3C DEFB 3CH ;< oder mit CTRL 0799 062B 2B DEFB 2BH ;+ (A=0) 0800 062C 94 DEFB 94H ;oe 0801 062D 84 DEFB 84H ;ae 0802 062E 81 DEFB 81H ;ue 0803 062F 23 DEFB 23H ;# 0804 0630 27 DEFB 27H 0805 0631 3F DEFB 3FH ;? 0806 0632 2C DEFB 2CH ;, 0807 0633 2E DEFB 2EH ;. 0808 0634 2D DEFB 2DH ;- 0809 0635 00 DEFB 0 0810 0636 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D DEFM 'abcdefghijklm' 0811 0643 6E 6F 70 71 72 73 74 75 76 77 78 79 7A DEFM 'nopqrstuvwxyz' ;------------------------------- 0812 0650 3D DEFB 3DH ;= mit SHIFT 0813 0651 21 DEFB 21h ;! oder CTRL SHIFT 0814 0652 22 DEFB 22h ;" (A=1) 0815 0653 5C DEFB 5Ch ;\ 0816 0654 24 DEFB 24H ;$ 0817 0655 25 DEFB 25H ;% 0818 0656 26 DEFB 26H ;& 0819 0657 2F DEFB 2FH ;/ 0820 0658 28 DEFB 28H ;( 0821 0659 29 DEFB 29H ;) 0822 065A 3E DEFB 3EH ;> 0823 065B 2A DEFB 2AH ;* 0824 065C 99 DEFB 99H ;OE 0825 065D 8E DEFB 8EH ;AE 0826 065E 9A DEFB 9AH ;UE 0827 065F 5E DEFB 5EH ;^ 0828 0660 60 DEFB 60H 0829 0661 E1 DEFB 0EH 0830 0662 3B DEFB 3BH ;; 0831 0663 3A DEFB 3AH ;: 0832 0664 5F DEFB 5FH ;_ 0833 0665 00 DEFB 0 0834 0666 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D DEFM 'ABCDEFGHIJKLM' 0835 0673 4E 4F 50 51 52 53 54 55 56 57 58 59 5A DEFM 'NOPQRSTUVWXYZ' ;-------------------------------- 0836 0680 09 DEFB 09H ; mit GRAPH 0837 0681 AC DEFB 0ACH ; (A=2) 0838 0682 AB DEFB 0ABH 0839 0683 12 DEFB 12H 0840 0684 AA DEFB 0AAH 0841 0685 16 DEFB 16H 0842 0686 F4 DEFB 0F4H 0843 0687 1D DEFB 1DH 0844 0688 EC DEFB 0ECH 0845 0689 FA DEFB 0FAH 0846 068A AE DEFB 0AEH 0847 068B F1 DEFB 0F1H 0848 068C 06 DEFB 06H 0849 068D 05 DEFB 05H 0850 068E 01 DEFB 01H 0851 068F 0F DEFB 0FH 0852 0690 00 DEFB 0 0853 0891 0D DEFB 0DH 0854 0692 B0 DEFB 0B0H 0855 0693 FB DEFB 0FBH 0856 0694 17 DEFB 017H 0857 0695 00 DEFB 0 0858 0696 C7 DEFB 0C7H 0859 0697 C8 DEFB 0C8H 0860 0698 BD DEFB 0BDH 0861 0699 B6 DEFB 0B6H 0862 069A B7 DEFB 0B7H 0863 069B DD DEFB 0DDH 0864 069C DF DEFB 0DFH 0865 069D CC DEFB 0CCH 0866 069E CB DEFB 0CBH 0867 069F CE DEFB 0CEH 0868 06A0 B9 DEFB 0B9H 0869 06A1 B1 DEFB 0B1H 0870 06A2 BC DEFB 0BCH 0871 06A3 CA DEFB 0CAH 0872 06A4 BB DEFB 0BBH 0873 06A5 BH DEFB 0BH 0874 06A6 D6 DEFB 0D6H 0875 06A7 10 DEFB 10H 0876 06A8 D7 DEFB 0D7H 0877 06A9 1F DEFB 1FH 0878 06AA C9 DEFB 0C9H 0879 06AB DB DEFB 0DBH 0880 06AC D2 DEFB 0D2H 0881 06AD D0 DEFB 0D0H 0882 06AE D3 DEFB 0D3H 0883 06AF BA DEFB 0BAH ;------------------------------- 0884 06B0 0A DEFB 0AH ; mit SHIFT GRAPH 0885 06B1 EF DEFB 0EFH ; (A=3) 0886 06B2 FD DEFB 0FDH 0887 06B3 FC DEFB 0FCH 0888 06B4 A9 DEFB 0A9H 0889 06B5 F6 DEFB 0F6H 0890 06B6 F5 DEFB 0F5H 0891 06B7 F8 DEFB 0F8H 0892 06B8 F9 DEFB 0F9H 0893 06B9 08 DEFB 08H 0894 06BA AF DEFB 0AFH 0895 06BB FE DEFB 0FEH 0896 06BC 04 DEFB 04H 0897 06BD 03 DEFB 03H 0898 06BE 02 DEFB 02H 0899 06BF 7E DEFB 7EH 0900 06C0 00 DEFB 0 0901 06C1 0E DEFB 0EH 0902 06C2 C4 DEFB 0C4H 0903 06C3 F7 DEFB 0F7H 0904 06C4 F0 DEFB 0F0H 0905 06C5 00 DEFB 0 0906 06C6 C6 DEFB 0C6H 0907 06C7 C0 DEFB 0C0H 0908 06C8 BE DEFB 0BEH 0909 06C9 B5 DEFB 0B5H 0910 06CA B8 DEFB 0B8H 0911 06CB DE DEFB 0DEH 0912 06CC DC DEFB 0DCH 0913 06CD C3 DEFB 0C3H 0914 06CE C2 DEFB 0C2H 0915 06CF C5 DEFB 0C5H 0916 06D0 B4 DEFB 0B4H 0917 06D1 B2 DEFB 0B2H 0918 06D2 D9 DEFB 0D9H 0919 06D3 C1 DEFB 0C1H 0920 06D4 BF DEFB 0BFH 0921 06D5 0C DEFB 0CH 0922 06D6 D5 DEFB 0D5H 0923 06D7 11 DEFB 11H 0924 06D8 D8 DEFB 0D8H 0925 06D9 1E DEFB 01EH 0926 06DA DA DEFB 0DAH 0927 06DB B3 DEFB 0B3H 0928 06DC D1 DEFB 0D1H 0929 06DD CF DEFB 0CFH 0930 06DE D4 DEFB 0D4H 0931 06DF CD DEFB 0CDH ;------------------------------- 0932 06E0 EB DEFB 0EBH ; mit ALT 0933 06E1 00 DEFB 0 ; (A=4) 0934 06E2 40 DEFB 40H 0935 06E3 15 DEFB 15H 0936 06E4 87 DEFB 87H 0937 06E5 EE DEFB 0EEH 0938 06E6 E7 DEFB 0E7H 0939 06E7 07 DEFB 07H 0940 06E8 5B DEFB 5BH 0941 06E9 5D DEFB 5DH 0942 06EA F3 DEFB 0F3H 0943 06EB 00 DEFB 0 0944 06EC 00 DEFB 0 0945 06ED 00 DEFB 0 0946 06EE ED DEFB 0EDH 0947 06EF EB DEFB 0E5H 0948 06F0 00 DEFB 0 0949 06F1 E9 DEFB 0E9H 0950 06F2 86 DEFB 86H 0951 06F3 A6 DEFB 0A6H 0952 06F4 A7 DEFB 0A7H 0953 06F5 00 DEFB 0 0954 06F6 E0 DEFB 0E0H 0955 06F7 97 DEFB 97H 0956 06F8 8D DEFB 8DH 0957 06F9 8B DEFB 8BH 0958 06FA 8C DEFB 8CH 0959 06FB 9F DEFB 9FH 0960 06FC 98 DEFB 98H 0961 06FD 00 DEFB 0 0962 06FE A1 DEFB 0A1H 0963 06FF 91 DEFB 91H 0964 0700 00 DEFB 0 0965 0701 00 DEFB 0 0966 0702 E6 DEFB 0E6H 0967 0703 A4 DEFB 0A4H 0968 0704 A2 DEFB 0A2H 0969 0705 A3 DEFB 0A3H 0970 0706 83 DEFB 83H 0971 0707 93 DEFB 93H 0972 0708 89 DEFB 89H 0973 0709 96 DEFB 96H 0974 070A 82 DEFB 82H 0975 070B 95 DEFB 95H 0976 070C 88 DEFB 88H 0977 070D 8A DEFB 8AH 0978 070E 85 DEFB 85H 0979 070F A0 DEFB 0A0H ;------------------------------- 0980 0710 13 DEFB 13H ; mit SHIFT ALT 0981 0711 AD DEFB 0ADH ; (A=5) 0982 0712 9E DEFB 9EH 0983 0713 9C DEFB 9CH 0984 0714 80 DEFB 80H 0985 0715 14 DEFB 14H 0986 0716 E2 DEFB 0E2H 0987 0717 9B DEFB 9BH 0988 0718 7B DEFB 7BH 0989 0719 7D DEFB 7DH 0990 071A F2 DEFB 0F2H 0991 071B EA DEFB 0EAH 0992 071C 00 DEFB 0 0993 071D 7C DEFB 7CH 0994 071E E8 DEFB 0E8H 0995 071F E4 DEFB 0E4H 0996 0720 00 DEFB 0 0997 0721 A8 DEFB 0A8H 0998 0722 8F DEFB 8FH 0999 0723 00 DEFB 0 1000 0724 00 DEFB 0 1001 0725 00 DEFB 0 1002 0726 00 DEFB 0 1003 0727 00 DEFB 0 1004 0728 00 DEFB 0 1005 0729 1A DEFB 1AH 1006 072A 18 DEFB 18H 1007 072B 00 DEFB 0 1008 072C 00 DEFB 0 1009 072D 00 DEFB 0 1010 072E 00 DEFB 0 1011 072F 92 DEFB 92H 1012 0730 00 DEFB 0 1013 0731 00 DEFB 0 1014 0732 00 DEFB 0 1015 0733 A5 DEFB 0A5H 1016 0734 00 DEFB 0 1017 0735 E3 DEFB 0E3H 1018 0736 1C DEFB 1CH 1019 0737 00 DEFB 0 1020 0738 1B DEFB 1BH 1021 0739 00 DEFB 0 1022 073A 90 DEFB 90H 1023 073B 00 DEFB 0 1024 073C 00 DEFB 0 1025 073D 19 DEFB 19H 1026 073E 9D DEFB 9DH 1027 073F 00 DEFB 0 ;********************************************************************* ;FunktionsTasten-Behandlung ; ;IN: C = Tastencode (35H...39H) ;OUT: bei SHIFT: C = C+5 ; 1036 0740 3E 37 FTB: LD A,37H ;F5..F1 1037 0742 91 SUB C ;in 1038 0743 C6 37 ADD A,37H ;F1..F5 1039 0745 4F LD C,A ;WANDELN 1040 0746 3A DF FA LD A,(ASTAMT) 1041 0749 0F RRCA 1042 074A 38 04 JR C,FTB2 1043 074C 79 LD A,C 1044 074D C6 05 ADD A,05H 1045 074F 4F LD C,A 1046 0750 59 FTB2: LD E,C ;C=35H(F1)...3EH(F10) 1047 0751 16 00 LD D,00H ; ------------------------ 1048 0753 CD 98 FD CALL XFTB ;SCP: PC:= FTB6 ; ------------------------ 1049 0756 21 8F FA LD HL,FIRERL-35H ;Kann FTaste 1050 0759 19 ADD HL,DE 1051 075A 7E LD A,(HL) 1052 075B A7 AND A ; IR ausloesen? 1053 075C 20 13 JR NZ,FIRANM ; JA--> ;------------------------------- 1054 075E EB FTB6: EX DE,HL 1055 075F 29 ADD HL,HL 1056 0760 29 ADD HL,HL 1057 0761 29 ADD HL,HL 1058 0762 29 ADD HL,HL ;HL=DE*10H 1059 0763 11 F6 F3 LD DE,FKEY1-350H 1060 0766 19 ADD HL,DE 1061 0767 EB EX DE,HL ;DE=Adr ZK fuer FTaste ;------------------------------- 1062 0768 1A FTB8: LD A,(DE) 1063 0769 A7 AND A ;Endezeichen? 1064 076A C8 RET Z ; Ja-->RET 1065 076B CD 7D 09 CALL CTRIPU ;ZK in Ringpuffer 1066 076E 13 INC DE 1067 076F 18 F7 JR FTB8 ;************************************************ ;Funktionstasten-IR-ANMeldung ; 1068 0771 2A E2 F2 FIRANM: LD HL,(ACTZN) 1069 0774 23 INC HL 1070 0775 7C LD A,H 1071 0776 B5 OR L ;Direktmode? 1072 0777 28 E5 JR Z,FTB6 ; Ja--> ;------------------------------- 1073 0779 21 1B FB LD HL,KEY1SW-3*35H 1074 077C 19 ADD HL,DE 1075 077D 19 ADD HL,DE 1076 077E 19 ADD HL,DE ;HL=KEY1SW...KEY10S ;************************************************ ;IR-ANMeldung ; ;IN: HL = IR-Steuerbyte ; 1077 077F 7E IRAMN: LD A,(HL) 1078 0780 E6 01 AND 01H ;IR ON gewesen? 1079 0782 C8 RET Z ; Nein-->RET ;------------------------------- 1080 0783 7E LD A,(HL) 1081 0784 F6 04 OR 04H ;IR STOP gewesen? 1082 0786 BE CP (HL) 1083 0787 C8 RET Z ; Ja-->RET ;------------------------------- 1084 0788 77 LD (HL),A ;IR STOP 1085 0789 EE 05 XOR 05H 1086 078B C0 RET NZ ;-------------------------------- 1087 078C 3A CE FA LD A,(IRVAN) ;je IR-Quelle 1088 078F 3C INC A ;einmalige 1089 0790 32 CE FA LD (IRVAN),A ;Anmeldung 1090 0793 C9 RET ;************************************************ ;MUsikERZeugung im Interrupt ; ;IN: A=SVG-Kanal (0..2) ; 1091 0794 47 MUERZI: LD B,A 1092 0795 CD 47 08 CALL MUR1 ;------------------------------- 1093 0798 2B DEC HL ;Dekr 2 Byte in (HL-2) 1094 0799 56 LD D,(HL) 1095 079A 2B DEC HL 1096 079B 5E LD E,(HL) 1097 079C 1B DEC DE 1098 079D 73 LD (HL),E 1099 079E 23 INC HL 1100 079F 72 LD (HL),D ;------------------------------- 1101 07A0 7A LD A,D ;Ergebnis=0? 1102 07A1 B3 OR E 1103 07A2 C0 RET NZ ; Nein-->RET ;------------------------------- 1104 07A3 78 LD A,B 1105 07A4 32 1B FA LD (HEMUKA),A 1106 07A7 CD 3B 08 CALL MUREAD 1107 07AA FE FF CP 0FFH 1108 07AC 28 5B JR Z,MUER40 ;------------------------------- 1109 07AE 57 LD D,A 1110 07AF E6 E0 AND 0E0H 1111 07B1 07 RLCA 1112 07B2 07 RLCA 1113 07B3 07 RLCA 1114 07B4 4F LD C,A 1115 07B5 7A LD A,D 1116 07B6 E6 1F AND 1FH 1117 07B8 77 LD (HL),A ;------------------------------- 1118 07B9 CD 3B 08 CALL MUREAD 1119 07BC 2B DEC HL 1120 07BD 77 LD (HL),A 1121 07BE 0C INC C ;================================ 1122 07BF 0D MUER10: DEC C 1123 07C0 C8 RET Z ;C=0-->RET ;------------------------------- 1124 07C1 CD 3B 08 CALL MUREAD 1125 07C4 57 LD D,A 1126 07C5 E6 C0 AND 0C0H 1127 07C7 20 11 JR NZ,MUER20 ;------------------------------- 1128 07C9 CD 3B 08 CALL MUREAD 1129 07CC 5F LD E,A 1130 07CD 78 LD A,B 1131 07CE 07 RLCA 1132 07CF CD F7 0A CALL MUOTAE ;Frequenz ;------------------------------- 1133 07D2 3C INC A 1134 07D3 5A LD E,D 1135 07D4 CD F7 0A CALL MUOTAE ; an SVG 1136 07D7 0D DEC C 1137 07D8 18 E5 JR MUER10 ;=============================== 1138 07DA 67 MUER20: LD H,A 1139 07DB E6 80 AND 80H 1140 07DD 28 0F JR Z,MUER30 ;------------------------------- 1141 07DF 5A LD E,D 1142 07E0 78 LD A,B 1143 07E1 C6 08 ADD A,08H 1144 07E3 CD F7 0A CALL MUOTAE ;Lautstaerke an SVG ;------------------------------- 1145 07E6 7B LD A,E 1146 07E7 E6 10 AND 10H 1147 07E9 3E 0D LD A,0DH 1148 07EB C4 F7 0A CALL NZ,MUOTAE ;Huellkurve an SVG ;------------------------------- 1149 07EE 7C MUER30: LD A,H 1150 07EF E6 40 AND 40H 1151 07F1 28 CC JR Z,MUER10 ;------------------------------- 1152 07F3 CD 3B 08 CALL MUREAD 1153 07F6 57 LD D,A 1154 07F7 CD 3B 08 CALL MUREAD 1155 07FA 5F LD E,A 1156 07FB 3E 0B LD A,0BH 1157 07FD CD F7 0A CALL MUOTAE ;Periode der ;------------------------------- 1158 0800 3C INC A 1159 0801 5A LD E,D 1160 0802 CD F7 0A CALL MUOTAE ; Huellkurve an SVG 1161 0805 0D DEC C 1162 0806 0D DEC C 1163 0807 18 B6 JR MUER10 ;=============================== 1164 0809 78 MUER40: LD A,B 1165 080A C6 08 ADD A,08H 1166 080C 1E 00 LD E,00H 1167 080E CD F7 0A CALL MUOTAE ;Lautstaerke=0 ;------------------------------- 1168 0811 04 INC B 1169 0812 21 1C FA LD HL,MUKAFL 1170 0815 AF XOR A 1171 0816 37 SCF ;------------------------------- 1172 0817 17 MUER50: RLA 1173 0818 10 FD DJNZ MUER50 1174 081A A6 AND (HL) 1175 081B AE XOR (HL) ;Res i,(HL), i=Kanalnr. 1176 081C 77 LD (HL),A ;************************************************ ;MUsikZELlen Verwalten ; 1177 081D 3A 1C FA MUZELV: LD A,(MUKAFL) 1178 0820 B7 OR A 1179 0821 C0 RET NZ ;------------------------------- 1180 0822 21 1D FA LD HL,MUHLP 1181 0825 7E LD A,(HL) 1182 0826 B7 OR A 1183 0827 C8 RET Z ;------------------------------- 1184 0828 35 DEC (HL) 1185 0829 21 01 00 LD HL,0001H 1186 082C 22 1E FA LD (MULA0),HL 1187 082F 22 43 FA LD (MULA1),HL 1188 0832 22 68 FA LD (MULA2),HL 1189 0835 3E 07 LD A,07H 1190 0837 32 1C FA LD (MUKAFL),A 1191 083A C9 RET ;************************************************ ;MUsik READ ; 1192 083B 3A 1B FA MUREAD: LD A,(HEMUKA) 1193 083E E5 PUSH HL 1194 083F D5 PUSH DE 1195 0840 C5 PUSH BC 1196 0841 CD 7C 08 CALL MUPUR 1197 0844 C3 04 14 JP POP2 ;************************************************ ;MUsikRechnung 1 ; ;IN: A=SVG-Kanal ; 1198 0847 2E 02 MUR1: LD L,02H 1199 0849 18 03 JR MUR3 ;************************************************ ;MUsikRechnung 2 ; ;IN: L= ? ; MUR2 ld a,(MUKA) ;************************************************ ;MUsikRechnung 3 ; ;IN: A=SVG-Kanal / L= ? ;OUT:HL=MULA0+L+25H*A ; 1200 084B 3A 15 FA MUR3: PUSH DE 1202 084F 11 1E FA LD DE,MULA0 1203 0852 26 00 LD H,00H 1204 0854 19 ADD HL,DE 1205 0855 B7 OR A 1206 0856 28 07 JR Z,MUR34 1207 0858 11 25 00 LD DE,0025H 1208 085B 19 MUR32: ADD HL,DE 1209 085C 3D DEC A 1210 085D 20 FC JR NZ,MUR32 1211 085F D1 MUR34: POP DE 1212 0860 C9 RET ;************************************************ ;MUsikPUffer Write ; ;IN: A=SVG-Kanal / E=Musikbyte ; 1213 0861 CD C9 08 MUPUW: CALL MUPUKR 1214 0864 78 LD A,B 1215 0865 3C INC A 1216 0866 23 INC HL 1217 0867 A6 AND (HL) 1218 0868 B9 CP C 1219 0869 C8 RET Z ;Puffer voll (?) ;------------------------------- 1220 086A E5 PUSH HL 1221 086B 2B DEC HL 1222 086C 2B DEC HL 1223 086D 2B DEC HL 1224 086E E3 EX (SP),HL 1225 086F 23 INC HL 1226 0870 4F LD C,A 1227 0871 7E LD A,(HL) 1228 0872 23 INC HL 1229 0873 66 LD H,(HL) 1230 0874 6F LD L,A 1231 0875 06 00 LD B,00H 1232 0877 09 ADD HL,BC 1233 0878 73 LD (HL),E ;Musikbyte abspeichern 1234 0879 E1 POP HL 1235 087A 71 LD (HL),C 1236 087B C9 RET ;************************************************ ;MUsikPUffer Read ; ;IN: A=SVG-Kanal ;OUT:A= ; HL= ; 1237 087C CD C9 08 MUPUR: CALL MUPUKR 1238 087F 36 00 LD (HL),00H 1239 0881 20 1D JR NZ,MUPUR2 ;------------------------------- 1240 0883 79 LD A,C 1241 0884 B8 CP B 1242 0885 C8 RET Z ;Pufferende (Z=1) ;------------------------------- 1243 0886 23 INC HL 1244 0887 3C INC A 1245 0888 A6 AND (HL) 1246 0889 2B DEC HL 1247 088A 2B DEC HL 1248 088B E5 PUSH HL 1249 088C 23 INC HL 1250 088D 23 INC HL 1251 088E 23 INC HL 1252 088F 4F LD C,A 1253 0890 7E LD A,(HL) 1254 0891 23 INC HL 1255 0892 66 LD H,(HL) 1256 0893 6F LD L,A 1257 0894 06 00 LD B,00H 1258 0896 09 ADD HL,BC 1259 0897 7E LD A,(HL) 1260 0898 E1 POP HL 1261 0899 71 LD (HL),C 1262 089A B7 OR A 1263 089B C0 RET NZ ;RET (Z=0) ;------------------------------- 1264 089C 3C INC A 1265 089D 3E 00 LD A,00H 1266 089F C9 RET ;------------------------------- 1267 08A0 4F MUPUR2: LD C,A 1268 08A1 06 00 LD B,00H 1269 08A3 21 4D F8 LD HL,MUPU0-5 ;F970 1270 08A6 09 ADD HL,BC 1271 08A7 7E LD A,(HL) 1272 08A8 C9 RET ;************************************************ ;MUsikPUfferKopf Initialisieren ; ;IN: A=SVG-Kanal / B=7FH / DE=MUPU0/1/2 ; 1273 08A9 C5 MUPUKI: PUSH BC 1274 08AA CD D3 08 CALL MUR4 1275 08AD 70 LD (HL),B 1276 08AE 23 INC HL 1277 08AF 70 LD (HL),B 1278 08B0 23 INC HL 1279 08B1 70 LD (HL),B 1280 08B2 23 INC HL 1281 08B3 F1 POP AF 1282 08B4 77 LD (HL),A 1283 08B5 23 INC HL 1284 08B6 73 LD (HL),E 1285 08B7 23 INC HL 1286 08B8 72 LD (HL),D 1287 08B9 C9 RET ;************************************************ ;MUsik-1-Dummy ; ;IN: A=SVG-Kanal ;OUT:HL= ; 1288 08BA CD C9 08 MU1D: CALL MUPUKR 1289 08BD 78 LD A,B 1290 08BE 3C INC A 1291 08BF 23 INC HL 1292 08C0 A6 AND (HL) 1293 08C1 47 LD B,A 1294 08C2 79 LD A,C 1295 08C3 90 SUB B 1296 08C4 A6 AND (HL) 1297 08C5 6F LD L,A 1298 08C6 26 00 LD H,00H 1299 08C8 C9 RET ;************************************************ ;MUsikPUfferKopf Read ; ;IN: A=SVG-Kanal ;OUT:HL=MUPUK0/1/2+2 ; B=(MUPUK0/1/2) ; C=(MUPUK0/1/2+1) ; A=(MUPUK0/1/2+2) ; F entsprechend OR A ; 1300 08C9 CD D3 08 MUPUKR: CALL MUR4 1301 08CC 46 LD B,(HL) 1302 08CD 23 INC HL 1303 08CE 4E LD C,(HL) 1304 08CF 23 INC HL 1305 08D0 7E LD A,(HL) 1306 08D1 B7 OR A 1307 08D2 C9 RET ;************************************************ ;MUsikRechnung 4 ; ;IN: A=SVG-Kanal ;OUT:HL=MUPUK0/1/2 / B=0 ; 1308 08D3 07 MUR4: RLCA 1309 08D4 47 LD B,A 1310 08D5 07 RLCA 1311 08D6 80 ADD A,B 1312 08D7 4F LD C,A 1313 08D8 06 00 LD B,00H 1314 08DA 2A 92 F2 LD HL,(AMUPUK) 1315 08DD 09 ADD HL,BC 1316 08DE C9 RET ;************************************************ 1317 08DF 3E 07 MUINI: LD A,07H 1318 08E1 1E 07 LD E,07H ;alle Kanaele ein 1319 08E3 CD F7 0A CALL MUOTAE ; ----------------------------------- 1320 08E6 3E 0B LD A,0BH 1321 08E8 5F LD E,A 1322 08E9 CD F7 0A CALL MUOTAE ;------------------------------------------ ; 1323 08EC E5 MUINIT: PUSH HL 1324 08ED D5 PUSH DE 1325 08EE C5 PUSH BC 1326 08EF F5 PUSH AF 1327 08F0 21 1C FA LD HL,MUKAFL 1328 08F3 06 71 LD B,3*37+2 1329 08F5 AF XOR A 1330 08F6 77 MUIN02: LD (HL),A 1331 08F7 23 INC HL 1332 08F8 10 FC DJNZ MUIN02 ; ------------------------------------- 1333 08FA 11 52 F8 LD DE,MUPU0 1334 08FD 06 7F LD B,7FH 1335 08FF 21 80 00 LD HL,0080H 1336 0902 E5 MUIN04: PUSH HL 1337 0903 D5 PUSH DE 1338 0904 C5 PUSH BC 1339 0905 F5 PUSH AF 1340 0906 CD A9 08 CALL MUPUKI ; ---------------------------- 1341 0909 F1 POP AF ;Kanalnr. 1342 090A C6 08 ADD A,08H 1343 090C 1E 00 LD E,00H ;Lautstaerke=0 -> aus 1344 090E CD F7 0A CALL MUOTAE 1345 0911 D6 08 SUB 08H 1346 0913 F5 PUSH AF ; ---------------------------- 1347 0914 2E 0F LD L,0FH 1348 0916 CD 4E 08 CALL MUR3 ;DE=MUKOP0/1/2 1349 0919 EB EX DE,HL 1350 091A 21 37 09 LD HL,MUINTB 1351 091D 01 06 00 LD BC,0006H 1352 0920 ED B0 LDIR ;---------------------------------- 1353 0922 F1 POP AF 1354 0923 C1 POP BC 1355 0924 E1 POP HL 1356 0925 D1 POP DE ;Reihenfolge getauscht ! 1357 0926 19 ADD HL,DE 1358 0927 EB EX DE,HL ;DE+:=80h, HL=80h ; -------------------------- 1359 0928 3C INC A 1360 0929 FE 03 CP 03H 1361 092B 38 D5 JR C,MUIN04 ;naechsten Kanal ; -------------------------- 1362 092D 3E 07 LD A,07H 1363 092F 1E 07 LD E,07H 1364 0931 CD F7 0A CALL MUOTAE ;--------------------------------- 1365 0934 C3 03 14 JP POP1 ;=============================================== 1366 0937 04 MUINTB: INC B 1367 0938 04 INC B 1368 0939 78 LD A,B 1369 093A 88 ADC A,B 1370 093B FF RST 38H 1371 093C 00 NOP ; ;************************************************ ;HOME-Behandlung ; 1372 093D 3A DF FA HOMEB: LD A,(ASTAMT) 1373 0940 0F RRCA ;mit SHIFT? 1374 0941 3E 0C LD A,0CH ; Ja: A=0CH (CLS) 1375 0943 30 04 JR NC,HOMEB2 ; ----------------------- 1376 0945 21 AE F2 LD HL,HOMECO ;Nein (HOME) 1377 0948 9E SBC A,(HL) ; RBASIC: A=0BH ; SCP : A=1 ; ----------------------- 1378 0949 18 0D HOMEB2: JR STB4 ;************************************************ ;SonderTasten-Behandlung ; ;IN: A= Tastencode (>2FH) ; 1379 094B CD 85 FD STB: CALL XSTB ;0FDD1H ;------------------------------- 1380 094E 5F LD E,A 1381 094F 16 00 LD D,00H 1382 0951 21 24 0A LD HL,STACOT-30H 1383 0954 19 STB2: ADD HL,DE ;Zeichencode lesen 1384 0955 7E LD A,(HL) 1385 0956 A7 AND A 1386 0957 C8 RET Z 1387 0958 18 23 STB4 JR CTRIPU ;************************************************ ;CAPS-Behandlung ; 1388 095A 21 19 FC CAPSB: LD HL,CAPSSW 1389 095D 7E LD A,(HL) 1390 095E 2F CPL 1391 095F 77 LD (HL),A 1392 0960 2F CPL ;************************************************ ;CAPs-LED bedienen ; ;IN: A = 0 : LED ein ; 1 : aus ; 1393 0961 A7 CAPLED: AND A 1394 0962 3E 0C LD A,0CH 1395 0964 28 01 JR Z,CAPL5 1396 0966 3C INC A 1397 0967 D3 AB CAPL5: OUT (PPIM),A 1398 0969 C9 RET ;************************************************ ;STOP-Behandlung ; 1399 096A 3A DF FA STOPB: LD A,(ASTAMT) 1400 096D 0F RRCA 1401 096E 0F RRCA 1402 096F 0F RRCA 1403 0970 3E 03 LD A,03H ;CTRL-STOP: A=3 (NC) 1404 0972 30 01 JR NC,STOPB2 1405 0974 3C INC A ;nur STOP: A=4 (CY) 1406 0975 32 09 FC STOPB2: LD (STCSSW),A ; ----------------------- 1407 0978 CD 9C FD CALL XSTOPB ; ----------------------- 1408 097B 38 12 JR C,TKCLK ;************************************************ ;Character To RIngPUffer ; 1409 097D 2A 97 F2 CTRIPU: LD HL,(SCHRIP) 1410 0980 77 LD (HL),A 1411 0981 CD 7C 0A CALL RIPUZI ;Zeiger erhoehen 1412 0984 3A 99 F2 LD A,(LESRIP) 1413 0987 BD CP L 1414 0988 C8 RET Z 1415 0989 22 97 F2 LD (SCHRIP),HL ; ---------------------- 1416 098C CD 9F FD CALL XRDRP2 ;************************************************ ;Test KeyCLicK ; 1417 098F 3A 84 F2 TKCLK: LD A,(KCLKSW) 1418 0992 A7 AND A 1419 0993 C8 RET Z ;------------------------------- 1420 0994 3A CF FA LD A,(KCLK1T) ;bei mehreren 1421 0997 A7 AND A ; gedrueckten Tasten 1422 0998 C0 RET NZ ; nur 1 Click !! ;------------------------------- 1423 0999 3E 0F LD A,0FH ;A=15: Keyclick on 1424 099B 32 CF FA LD (KCLK1T),A 1425 099E D3 AB OUT (PPIM),A ;------------------------------- 1426 09A0 3E 0A LD A,0AH ;Warten 1427 09A2 3D TKCLK2: DEC A 1428 09A3 20 FD JR NZ,TKCLK2 ;************************************************ ;KEYCLicK negieren ; ;IN: A=0 : Click off ; <>0: on ; 1429 09A5 A7 KEYCLK: AND A 1430 09A6 3E 0E LD A,0EH 1431 09A8 28 01 JR Z,KEYCL2 1432 09AA 3C INC A 1433 09AB D3 AB KEYCL2: OUT (PPIM),A 1434 09AD C9 RET ;************************************************ ;SOnstige TastenBehandlung ; ;IN: C=Tastencode (<30H) ; 1435 09AE 3A DF FA SOTB: LD A,(ASTAMT) 1436 09B1 5F LD E,A 1437 09B2 1F RRA 1438 09B3 1F RRA 1439 09B4 1F RRA 1440 09B5 F5 PUSH AF ;CTRL gedrueckt: CY=0 ;------------------------------- 1441 09B6 7B LD A,E 1442 09B7 2F CPL ;------------------------------- 1443 09B8 CD A5 FD CALL XSOTB1 ;SCP: or a / ret ,d.h. CY=0 ;------------------------------- 1444 09BB 30 14 JR NC,SOTB10 ;A=0 : CTRL ;A=1 : CTRL u SHIFT ;------------------------------- 1445 09BD E6 01 AND 01H ;Shift 1446 09BF CB 63 BIT 4,E ;ALT? 1447 09C1 20 04 JR NZ,SOTB06 ; ----------------------- 1448 09C3 F6 04 OR 04H 1449 09C5 18 0C JR SOTB20 ; ----------------------- 1450 09C7 5F SOTB06: LD E,A 1451 09C8 3A E0 FA LD A,(ASTAMT+1) 1452 09CB 2F CPL 1453 09CC E6 04 AND 04H ;GRAPH 1454 09CE 0F RRCA 1455 09CF B3 OR E ;+ Shift ;********************************************* ; rra ; rra ; rlca ; and 3 ; bit 1,a ; jr nz,SOTB20 ;A=2 : GRAPH ; ;A=3 : GRAPH u SHIFT ;------------------------------- ; bit 4,e ; jr nz,SOTB20 ;A=0 : nur Taste ; ;A=1 : SHIFT ;------------------------------- ; or 4 ;A=4 : ALT ; ;A=5 : ALT u SHIFT 1456 09D0 11 DEFB 11H ;LD DE,1E6H 1457 09D1 E6 01 SOTB10: AND 1 ; - " - ;=============================== 1458 09D3 5F SOTB20: LD E,A 1459 09D4 87 ADD A,A 1460 09D5 83 ADD A,E 1461 09D6 87 ADD A,A 1462 09D7 87 ADD A,A 1463 09D8 87 ADD A,A 1464 09D9 87 ADD A,A 1465 09DA 5F LD E,A 1466 09DB 16 00 LD D,00H ;DE=30H*A ;------------------------------- 1467 09DD 21 20 06 LD HL,TACOT 1468 09E0 19 ADD HL,DE 1469 09E1 42 LD B,D ;B=0 1470 09E2 09 ADD HL,BC ;------------------------------- 1471 09E3 7E LD A,(HL) ; ------------------------ 1472 09E4 21 D3 FF LD HL,SZFLAG 1473 09E7 34 INC (HL) 1474 09E8 35 DEC (HL) 1475 09E9 28 0E JR Z,SOTB24 ;sz u. ? normal ;------------------------------- 1476 09EB FE 3F CP 3FH ;a='?' ? 1477 09ED 20 04 JR NZ,SOTB22 ; ------------------------ 1478 09EF 3E E1 LD A,0E1H ; ja: ? -> sz 1479 09F1 18 06 JR SOTB24 ;------------------------------- 1480 09F3 FE E1 SOTB22: CP 0E1H ;a='sz' ? 1481 09F5 20 02 JR NZ,SOTB24 ; ------------------------ 1482 09F7 3E 3F LD A,3FH ; ja: sz -> ? ;------------------------------- 1483 09F9 21 19 FC SOTB24: LD HL,CAPSSW 1484 09FC 34 INC (HL) 1485 09FD 35 DEC (HL) 1486 09FE 28 19 JR Z,SOTB30 ;------------------------------- 1487 0A00 FE 61 CP 'a' ;61H 1488 0A02 38 08 JR C,SOTB25 1489 0A04 FE 7B CP 'z'+1 ;7BH 1490 0A06 30 04 JR NC,SOTB25 ; ------------------------ 1491 0A08 E6 DF AND 0DFH ;klein -> gross 1492 0A0A 18 0D JR SOTB30 ;------------------------------- 1493 0A0C 0E 08 SOTB25: LD C,GUMLT-KUMLT 1494 0A0E 21 73 0A LD HL,GUMLT-1 1495 0A11 ED B9 CPDR 1496 0A13 20 04 JR NZ,SOTB30 ; ------------------------ 1497 0A15 0E 09 LD C,GUMLT-KUMLT+1 ;09H 1498 0A17 09 ADD HL,BC 1499 0A18 7E LD A,(HL) ; ------------------------ 1500 0A19 CD AA FD SOTB30: CALLl XSOTB2 ; ------------------------ 1501 0A1C 5F LD E,A 1502 0A1D F1 POP AF ;CTRL-> CY=0 1503 0A1E 7B LD A,E 1504 0A1F 3C INC A 1505 0A20 3D DEC A 1506 0A21 C8 RET Z ;------------------------------- 1507 0A22 38 0F JR C,SOTB40 ;ohne CTRL ;------------------------------- 1508 0A24 E6 DF AND 0DFH 1509 0A26 D6 40 SUB 40H 1510 0A28 FE 20 CP 20H 1511 0A2A D0 RET NC ;ungueltige CTRL-Kombination ; ------------------------ 1512 0A2B FE 03 CP 03H 1513 0A2D CA 75 09 JP Z,STOPB2 ;^C = ^STOP ; ------------------------ 1514 0A30 C3 7D 09 SOTB38: JP CTRIPU ; 1515 0A33 FE 20 SOTB40: CP 20H 1516 0A35 30 F9 JR NC,SOTB38 1517 0A37 F5 PUSH AF ;2-Byte-Grafikzeichen 1518 0A38 3E 01 LD A,01H ;GCH 1519 0A3A CD 7D 09 CALL CTRIPU 1520 0A3D F1 POP AF 1521 0A3E C6 40 ADD A,40H 1522 0A40 18 EE JR SOTB38 ;************************************************ ;JmP, wenn Cy-flag gesetzt nach (DE) ; ;IN: C=phys. Tastencode (0..71) ;OUT: Ansprung entsprechendes Tastenbehandluns-Programm ; 1523 0A42 79 JPCDE: LD A,C 1524 0A43 21 24 0D LD HL,TABET ;------------------------------- 1525 0A46 CD 8A FD CALL XJPCDE ;0FDCCH ; SCP: hl=TABET2 ;------------------------------- 1526 0A49 BE JPCDE2: CP (HL) 1527 0A4A 23 INC HL 1528 0A4B 5E LD E,(HL) ;Low-Teil 1529 0A4C 23 INC HL 1530 0A4D 56 LD D,(HL) 1531 0A4E 23 INC HL 1532 0A4F D5 PUSH DE ;CAnsprung UP 1534 0A51 D1 POP DE 1535 0A52 18 F5 JR JPCDE2 ;************************************************ ;SonderTasten-COdeTabelle ; 1536 0A54 00 STACOT: DEFB 0 ;SHIFT 1537 0A55 1B DEFB 1BH ;ESC(CTRL) 1538 0A56 00 DEFB 0 ;CTRL(GRAPH) 1539 0A57 00 DEFB 0 ;CAPS 1540 0A58 00 DEFB 0 ;ALT 1541 0A59 00 DEFB 0 ;F1 1542 0A5A 00 DEFB 0 ;F2 1543 0A5B 00 DEFB 0 ;F3 1544 0A5C 00 DEFB 0 ;F4 1545 0A5D 00 DEFB 0 ;F5 1546 0A5E 00 DEFB 0 ;GRAPH(ESC) 1547 0A5F 00 DEFB 0 ;TAB 1548 0A60 00 DEFB 0 ;STOP 1549 0A61 00 DEFB 0 ;BS 1550 0A62 00 DEFB 0 ;SELECT 1551 0A63 0D DEFB 0DH ;RETURN 1552 0A64 20 DEFB 20H ;SPACE 1553 0A65 00 DEFB 0 ;HOME 1554 0A66 12 DEFB 12H ;INS 1555 0A67 7F DEFB 7FH ;DEL 1556 0A68 1D DEFB 1DH ;<- 1556a 0A69 1E DEFB 1EH ;^ 1556b 0A6A 1F DEFB 1FH ;v 1556c 0A6B 1C DEFB 1CH ;-> ;************************************************ ; 1557 0A6C 82 KUMLT: DEFB 82H 1558 0A6D 84 DEFB 84H ;mit ALT und 1559 0A6E 94 DEFB 94H 1560 0A6F 81 DEFB 81H 1561 0A70 A4 DEFB 0A4H ;Umlaute klein 1562 0A71 86 DEFB 86H 1563 0A72 87 DEFB 87H 1564 0A73 91 DEFB 91H ;************************************************* ;Grossbuchstaben - UMLautTabelle ; 1565 0A74 90 GUMLT: DEFB 90H 1566 0A75 8E DEFB 8EH 1567 0A76 99 DEFB 99H 1568 0A77 9A DEFB 9AH 1569 0A78 A5 DEFB 0A5H 1570 0A79 8F DEFB 8FH 1571 0A7A 80 DEFB 80H 1572 0A7B 92 DEFB 92H ;************************************************ ;RIngPUfferZeiger Inkrementieren ; ;IN: Zeigerwert in HL ; 1573 0A7C 23 RIPUZI: INC HL 1574 0A7D 7D LD A,L 1575 0A7E FE 0A CP (RINGPU+40) ;?.AND.0FFH? 1576 0A80 C0 RET NZ 1577 0A81 21 E2 FA LD HL,RINGPU 1578 0A84 C9 RET ;************************************************ ;ReaD RIngPUffer ; ;OUT: A=Zeichenkode ; 1579 0A85 E5 RDRIPU: PUSH HL 1580 0A86 D5 PUSH DE 1581 0A87 C5 PUSH BC ;------------------------------- 1582 0A88 CD EA FD RDRIP1: CALL XRDRI1 1583 0A8B CD E5 05 CALL INKEY ;Zeichen im Puffer? 1584 0A8E 20 0E JR NZ,RDRIP4 ; Ja--> ;------------------------------- 1585 0A90 CD 28 15 CALL KUSEZ 1586 0A93 CD EF FD RDRIP2: CALL XRDRI2 1587 0A96 CD E5 05 CALL INKEY 1588 0A99 28 F8 JR Z,RDRIP2 ;Warten auf Zeichen 1589 0A9B CD 44 15 CALL KUREZ ;-------------------------------- 1590 0A9E 21 09 FC RDRIP4: LD HL,STCSSW 1591 0AA1 7E LD A,(HL) 1592 0AA2 FE 04 CP 04H ;CTRL-STOP gedrueckt? 1593 0AA4 20 02 JR NZ,RDRIP6 ; Ja--> 1594 0AA6 36 00 LD (HL),00H ;Schalter loeschen ;------------------------------- 1595 0AA8 2A 99 F2 RDRIP6: LD HL,(LESRIP) ; ------------------------ 1596 0AAB CD A2 FD CALL XRDRP4 ;falls Stop-Monitor aktiv war -> RDRIP1 ; ------------------------ 1597 0AAE 4E LD C,(HL) ;Zeichen lesen 1598 0AAF CD 7C 0A CALL RIPUZI 1599 0AB2 22 99 F2 LD (LESRIP),HL ; ------------------------ 1600 0AB5 CD 9F FD CALL XRDRP2 ;aktual. Statuszeile ; ------------------------ 1601 0AB8 FB EI 1602 0AB9 79 LD A,C 1603 0ABA C3 04 14 JP POP2 ;************************************************ ;BREAK ; ;OUT: Bei CTRL-STOP: Rueckkehr ins BASIC mit ; HL=0 (Fehlercode o Zeilennr) ; 1604 0ABD E5 BREAK: PUSH HL 1605 0ABE 21 00 00 LD HL,0000H 1606 0AC1 CD 26 04 CALL STPTST 1607 0AC4 E1 POP HL 1608 0AC5 C9 RET ;************************************************ ;BEEPausgabe (Version 2.00 ueber Kanal C mit Low-Frequ.= 55H) ; 1609 0AC6 3E 00 BEEP: LD A,00H 1610 0AC8 1E 80 LD E,80H ;Bit 6=0 wegen moegl. SVG-Probleme 1611 0ACA CD F7 0A CALL MUOTAE 1612 0ACD 1E 00 LD E,00H 1613 0ACF 3C INC A 1614 0AD0 CD F7 0A CALL MUOTAE 1615 0AD3 1E 01 LD E,01H ;Kanal A 1616 0AD5 3E 07 LD A,07H 1617 0AD7 CD F7 0A CALL MUOTAE 1618 0ADA 1E 07 LD E,07H 1619 0ADC 3E 08 LD A,08H ;Lautstaerke 7 fuer A 1620 0ADE CD F7 0A CALL MUOTAE 1621 0AE1 01 D0 07 LD BC,07D0H 1622 0AE4 CD 01 0B CALL WAITBC 1623 0AE7 1E 00 LD E,00H 1624 0AE9 3E 08 LD A,08H ;Ton aus 1625 0AEB CD F7 0A CALL MUOTAE 1626 0AEE 3A 91 FF LD A,(BSKENN) 1627 0AF1 CB 4F BIT 1,A 1628 0AF3 C0 RET NZ ;SCP -> RET 1629 0AF4 C3 EC 08 JP MUINIT ;************************************************ ;MUsik Out To A mit parameter E ; 1630 0AF7 F3 MUOTAE: DI 1631 0AF8 D3 A0 OUT (0A0H),A ;Reg. anwaehlen 1632 0AFA F5 PUSH AF 1633 0AFB 7B LD A,E ;Parameter 1634 0AFC D3 A1 OUT (0A1H),A 1635 0AFE F1 POP AF 1636 0AFF FB EI 1637 0B00 C9 RET ;************************************************* ;WAIT BC-mal ; 1638 0B01 0B WAITBC: DEC BC 1639 0B02 E3 EX (SP),HL 1640 0B03 E3 EX (SP),HL 1641 0B04 78 LD A,B 1642 0B05 B1 OR C 1643 0B06 20 F9 JR NZ,WAITBC 1644 0B08 C9 RET ;************************************************ ;Get STICK Richtungsabfrage ; ;IN: A=0 :Tastatur / =1: Joy 1 / = 2: Joy 2 ;OUT:A=Joycode (1...8) ; A=0 ,keine Betaetigung ; 1645 0B09 3D GSTICK: DEC A 1646 0B0A FA 1B 0B JP M,STICK4 ;------------------------------- 1647 0B0D CD 27 0B CALL INJOY ;Bit 0-3,A: Richtung 1648 0B10 21 54 0B LD HL,JOYCT 1649 0B13 E6 0F STICK2: AND 0FH 1650 0B15 5F LD E,A 1651 0B16 16 00 LD D,00H 1652 0B18 19 ADD HL,DE 1653 0B19 7E LD A,(HL) 1654 0B1A C9 RET ;=============================== 1655 0B1B CD 45 0B STICK4: CALL INKSTA ;Abfrage Cursortasten 1656 0B1E 0F RRCA 1657 0B1F 0F RRCA 1658 0B20 0F RRCA 1659 0B21 0F RRCA 1660 0B22 21 64 0B LD HL,KSCT 1661 0B25 18 EC JR STICK2 ;************************************************ ;INput JOYstick ; ;IN: A=0/1: Joy 1/2 ;OUT:Bit 0-3,A: Richtung ; 4-5,A: Aktionstasten Joy 1 ; 6-7,A: -#- 2 ; 1662 0B27 E6 01 INJOY: AND 01H 1663 0B29 47 LD B,A 1664 0B2A F3 DI 1665 0B2B DB 91 IN A,(DPIOB) ;Bit 5,A =0 Joy1 aktiv 1666 0B2D E6 9F AND 9FH ;Bit 6,A =0 Tastatur aus 1667 0B2F 05 DEC B 1668 0B30 FA 35 0B JP M,INJOY1 1669 0B33 F6 20 OR 20H ;Bit 5,A =1 Joy2 aktiv 1670 0B35 D3 91 INJOY1: OUT (DPIOB),A 1671 0B37 3E 00 LD A,00H ;8 Takte 1672 0B39 DB A9 IN A,(PPIB) 1673 0B3B F5 PUSH AF 1674 0B3C DB 91 IN A,(DPIOB) 1675 0B3E F6 40 OR 40H ;Tastatur ein 1676 0B40 D3 91 OUT (DPIOB),A 1677 0B42 F1 POP AF 1678 0B43 FB EI 1679 0B44 C9 RET ;************************************************ ;INput KurSor-TAsten ; ;OUT: A=Tastencode fuer Kursor- und Space-Tasten ; 1680 0B45 F3 INKSTA: DI 1681 0B46 DB AA IN A,(PPIC) 1682 0B48 E6 F0 AND 0F0H 1683 0B4A C6 08 ADD A,08H 1684 0B4C D3 AA OUT (PPIC),A 1685 0B4E E3 EX (SP),HL 1686 0B4F E3 EX (SP),HL 1687 0B50 DB A9 IN A,(0A9H) 1688 0B52 FB EI 1689 0B53 C9 RET ;************************************************ ;JOYCode-Tabelle ; 1690 0B54 00 JOYCT: DEFB 00H 1691 0B55 05 DEFB 05H 1692 0B56 01 DEFB 01H 1693 0B57 00 DEFB 00H 1694 0B58 07 DEFB 07H 1695 0B59 06 DEFB 06H 1696 0B5A 08 DEFB 08H 1697 0B5B 07 DEFB 07H 1698 0B5C 03 DEFB 03H 1699 0B5D 04 DEFB 04H 1700 0B5E 02 DEFB 02H 1701 0B5F 03 DEFB 03H 1702 0B60 00 DEFB 00H 1703 0B61 05 DEFB 05H 1704 0B62 01 DEFB 01H 1705 0B63 00 DEFB 00H ;************************************************ ;KurSorCode-Tabelle ; 1706 0B64 00 KSCT: DEFB 00H 1707 0B65 03 DEFB 03H 1708 0B66 05 DEFB 05H 1709 0B67 04 DEFB 04H 1710 0B68 01 DEFB 01H 1711 0B69 02 DEFB 02H 1711a 0B6A 00 DEFB 00H 1711b 0B6B 03 DEFB 03H 1711c 0B6C 07 DEFB 07H 1711d 0B6D 00 DEFB 00H 1711e 0B6E 06 DEFB 06H 1711f 0B6E 05 DEFB 05H 1711g 0B70 08 DEFB 08H 1711h 0B71 01 DEFB 01H 1711i 0B71 07 DEFB 07H 1711j 0B71 00 DEFB 00H ;************************************************ ;Get STRIG Abfrage Aktionstaste (A) ; ;IN: A=0 : Tastatur (Space) ; 1 : Joy 1 Knopf 1 ; 2 : Joy 2 Knopf 1 ; 3 : Joy 1 Knopf 2 ; 4 : Joy 2 Knopf 2 ; ;OUT:A=0 : Aktionstaste (A) nicht gedrueckt ; A=FF: sonst ; 1712 0B74 3D GSTRIG: DEC A 1713 0B75 FA 8C 0B JP M,STRIG6 1714 0B78 F5 PUSH AF 1715 0B79 01 93 0B LD BC,MASKT 1716 0B7C 81 ADD A,C 1717 0B7D 4F LD C,A 1718 0B7E 30 01 JR NC,STRIG1 1719 0B80 04 INC B 1720 0B81 0A STRIG1: LD A,(BC) 1721 0B82 4F LD C,A ;Maske fuer Aktionstaste 1722 0B83 F1 POP AF 1723 0B84 CD 27 0B CALL INJOY 1724 0B87 A1 AND C 1725 0B88 D6 01 STRIG4: SUB 01H 1726 0B8A 9F SBC A,A 1727 0B8B C9 RET 1728 0B8C CD 45 0B STRIG6: CALL INKSTA 1729 0B8F E6 01 AND 01H 1730 0B91 18 F5 JR STRIG4 ;----------------------------- 1731 0B93 20 MASKT: DEFB 20H 1732 0B93 80 DEFB 80H 1732a 0B95 10 DEFB 10H 1732b 0B95 40 DEFB 40H ;************************************************ ;MOTor-STeuerung Kassette ; ;IN: A=0 : Aus / =1 : Ein / =FF: Negieren ; 1733 0B97 A7 MOTST: AND A 1734 0B98 FA A5 0B JP M,MOTST6 1735 0B9B 20 03 MOTST2: JR NZ,MOTST4 1736 0B9D 3E 09 LD A,09H 1737 0B9F C2 DEFB 0C2H ;JP NZ,83EH 1737a 0B9F 3E 08 MOTST4: LD A,08H ; - " - 1738 0BA2 D3 AB OUT (PPIM),A 1739 0BA4 C9 RET 1740 0BA5 DB AA MOTST6: IN A,(PPIC) 1741 0BA7 E6 10 AND 10H 1742 0BA9 18 F0 JR MOTST2 ;************************************************ ;Direkte TastenMAtrix-ABFrage ; ;IN: A=Spaltenbelegung ;OUT:A=Zeilenbelegung ; 1743 0BAB 4F DTMABF: LD C,A 1744 0BAC F3 DI 1745 0BAD DB AA IN A,(PPIC) 1746 0BAF E6 F0 AND 0F0H 1747 0BB1 81 ADD A,C 1748 0BB2 D3 AA OUT (PPIC),A 1749 0BB4 E3 EX (SP),HL 1750 0BB5 E3 EX (SP),HL 1751 0BB6 DB A9 IN A,(PPIB) 1752 0BB8 FB EI 1753 0BB9 C9 RET ;****************************************************** 1754 0BBA 3E FF GPAD: LD A,0FFH ;nichts gedrueckt 1755 0BBC C9 RET 1756 0BBD 3E FF GPDL: LD A,0FFH 1757 0BBF C9 RET ;****************************************************** ;Wait und Motor OFF ; ;OUT: EI ! ; 1758 0BC0 C5 WMOFF: PUSH BC 1759 0BC1 F5 PUSH AF 1760 0BC2 01 00 00 LD BC,0000H 1761 0BC5 0B WMOFF2: DEC BC 1762 0BC6 78 LD A,B 1763 0BC7 B1 OR C 1764 0BC8 20 FB JR NZ,WMOFF2 1765 0BCA F1 POP AF 1766 0BCB C1 POP BC ;****************************************************** ;Motor OFF ; ;OUT: EI ! ; 1767 0BCC F5 MOFF: PUSH AF 1768 0BCD 3E 09 LD A,09H 1769 0BCF D3 AB OUT (PPIM),A 1770 0BD1 F1 POP AF 1771 0BD2 FB EI 1772 0BD3 C9 RET ;****************************************************** ;OUTput VorTon ; ;IN: A=0 : Kurzer / <>0 : langer Vorton ; 1773 0BD4 B7 OUTVT: OR A 1774 0BD5 F5 PUSH AF ;------------------------------- 1775 0BD6 3E 08 LD A,08H 1776 0BD8 D3 AB OUT (PPIM),A ;Motor on ;------------------------------- 1777 0BDA 21 00 00 LD HL,0000H 1778 0BDD 2B OUTVT2: DEC HL 1779 0BDE 7C LD A,H 1780 0BDF B5 OR L 1781 0BE0 20 FB JR NZ,OUTVT2 ;warten ;------------------------------- 1782 0BE2 F1 POP AF 1783 0BE3 3A A9 F2 LD A,(VOTOL) 1784 0BE6 28 02 JR Z,OUTVT4 ;-->kuzer VT 1785 0BE8 87 ADD A,A 1786 0BE9 87 ADD A,A ;langer VT ;------------------------------- 1787 0BEA 47 OUTVT4: LD B,A 1788 0BEB 0E 00 LD C,00H ;BC=A*256 1789 0BED F3 DI 1790 0BEE CD 30 0C OUTVT6: CALL OTHIFR 1791 0BF1 CD 22 0C CALL OT0BI2 ;UP=RET 1792 0BF4 0B DEC BC 1793 0BF5 78 LD A,B 1794 0BF6 B1 OR C 1795 0BF7 20 F5 JR NZ,OUTVT6 1796 0BF9 C3 9D 04 JP DSTPTS ;****************************************************** ;OUTput BYTe ; ;IN: A=Byte ; 1797 0BFC 2A A5 F2 OUTBYT: LD HL,(NUBIFR) 1798 0BFF F5 PUSH AF ;------------------------------- 1799 0C00 7D LD A,L 1800 0C01 D6 0E SUB 0EH ;Korrektur Low-Zeit 1801 0C03 6F LD L,A 1802 0C04 CD 33 0C CALL OTPER ;Startbit ausgeben ;------------------------------- 1803 0C07 F1 POP AF 1804 0C08 06 08 LD B,08H 1805 0C0A 0F OUTBY2: RRCA 1806 0C0B DC 23 0C CALL C,OT1BI ;Bit 0...7 1807 0C0E D4 1C 0C CALL NC,OT0BI 1808 0C11 10 F7 DJNZ OUTBY2 ;------------------------------- 1809 0C13 CD 23 0C CALL OT1BI ;2 Stopbits 1810 0C16 CD 23 0C CALL OT1BI ;ausgeben 1811 0C19 C3 9D 04 JP DSTPTS ;****************************************************** ;OuTput 0-BIt ; ;1 Periode der niedrigen Frequenz ; 1812 0C1C 2A A5 F2 OT0BI: LD HL,(NUBIFR) 1813 0C1F CD 33 0C CALL OTPER 1814 0C22 C9 OT0BI2: RET ;****************************************************** ;OuTput 1-BIt ; ;2 Perioden der hohen Frequenz ; 1815 0C23 CD 30 0C OT1BI: CALL OTHIFR 1816 0C26 E3 EX (SP),HL ;60 Takte 1817 0C27 E3 EX (SP),HL 1818 0C28 00 NOP 1819 0C29 00 NOP 1820 0C2A 00 NOP 1821 0C2B 00 NOP ; warten 1822 0C2C CD 30 0C CALL OTHIFR 1823 0C2F C9 RET ;****************************************************** ;OuTput HIgh-FRequenz ; 1824 0C30 2A A7 F2 OTHIFR: LD HL,(EIBIFR) ;****************************************************** ;OuTput 1 PERiode ; ;IN: L=LOW-Zeit / H=HIGH-Zeit ; 1825 0C33 F5 OTPER: PUSH AF 1826 0C34 2D OTPER2 DEC L ;16*L Takte Low 1827 0C35 C2 34 0C JP NZ,OTPER2 ; ------------------------ 1828 0C38 3E 0B LD A,0BH 1829 0C3A D3 AB OUT (PPIM),A ;Ausgabe High 1830 0C3C 25 OTPER4: DEC H ;16*H Takte High 1831 0C3D C2 3C 0C JP NZ,OTPER4 ; ------------------------ 1832 0C40 3E 0A LD A,0AH 1833 0C42 D3 AB OUT (PPIM),A ;Ausgabe Low 1834 0C44 F1 POP AF 1835 0C45 C9 RET ;****************************************************** ;INput VorTon ; 1836 0C46 3E 08 INVT: LD A,08H ;Motor on 1837 0C48 D3 AB OUT (PPIM),A 1838 0C4A F3 DI ;DI ! ;------------------------------- 1839 0C4B 21 57 04 INVT10: LD HL,1111 ;1111 Perioden einlesen ; ------------------------ 1840 0C4E 51 INVT20: LD D,C ;D=letzte Periode 1841 0C4F CD 13 0D CALL TBPD2 ;Periodendauer auszaehlen 1842 0C52 D8 RET C ;CTRL-STOP-->RET ; ------------------------ 1843 0C53 79 LD A,C ;A=jetzige Periode 1844 0C54 FE DE CP 222 ;Absoluttoleranz 1845 0C56 30 F3 JR NC,INVT10 ; 5<=A<222? 1846 0C58 FE 05 CP 05H 1847 0C5A 38 EF JR C,INVT10 ; Nein--> ; ------------------------ 1848 0C5C 92 SUB D 1849 0C5D 30 02 JR NC,INVT30 1850 0C5F 2F CPL 1851 0C60 3C INC A 1852 0C61 FE 04 INVT30: CP 04H ;Gleichlauf 1853 0C63 30 E6 JR NC,INVT10 ; ABS(A-D)<=4? ; ------------------------ 1854 0C65 2B DEC HL ; ja 1855 0C66 7C LD A,H 1856 0C67 B5 OR L 1857 0C68 20 E4 JR NZ,INVT20 ;------------------------------- 1858 0C6A 21 00 00 LD HL,0000H 1859 0C6D 45 LD B,L 1860 0C6E 55 LD D,L ; ------------------------ 1861 0C6F CD 13 0D INVT40: CALL TBPD2 ;256 Perioden zum 1862 0C72 D8 RET C ;Erkennen der 1863 0C73 09 ADD HL,BC ;Baud-Rate lesen 1864 0C74 15 DEC D 1865 0C75 C2 6F 0C JP NZ,INVT40 ; ------------------------ 1866 0C78 01 AE 06 LD BC,1710 1867 0C7B 09 ADD HL,BC 1868 0C7C 7C LD A,H 1869 0C7D 1F RRA 1870 0C7E E6 7F AND 7FH ;a=h/2 1871 0C80 57 LD D,A 1872 0C81 29 ADD HL,HL 1873 0C82 7C LD A,H 1874 0C83 92 SUB D 1875 0C84 57 LD D,A 1876 0C85 D6 06 SUB 06H ;Mindestperiodendauer 1877 0C87 32 12 FC LD (VKAIN1),A ;fuer Startbit ; ------------------------ 1878 0C8A 7A LD A,D 1879 0C8B 87 ADD A,A 1880 0C8C 06 00 LD B,00H ; ------------------------ 1881 0C8E D6 03 INVT50: SUB 03H 1882 0C90 04 INC B 1883 0C91 30 FB JR NC,INVT50 ; ------------------------ 1884 0C93 78 LD A,B 1885 0C94 D6 03 SUB 03H ;Zeitfensterbreite 1886 0C96 32 13 FC LD (VKAIN2),A ;zum Flankenzaehlen ;------------------------------- 1887 0C99 B7 OR A ;CY=0 1888 0C9A C9 RET ;****************************************************** ;INput BYTE ; ;OUT: A=Byte ; 1889 0C9B 3A 12 FC INBYTE: LD A,(VKAIN1) 1890 0C9E 57 LD D,A ;------------------------------- 1891 0C9F CD 9D 04 INBY2: CALL DSTPTS 1892 0CA2 D8 RET C ; CTRL-Stop 1893 0CA3 DB 91 IN A,(DPIOB) 1894 0CA5 07 RLCA 1895 0CA6 30 F7 JR NC,INBY2 ;Warten auf High ;-------------------------------- 1896 0CA8 CD 9D 04 INBY4: CALL DSTPTS 1897 0CAB D8 RET C 1898 0CAC DB 91 IN A,(DPIOB) 1899 0CAE 07 RLCA 1900 0CAF 38 F7 JR C,INBY4 ;Warten auf Low ;=============================== 1901 0CB1 1E 00 LD E,00H ;Startbit mit Low beginnend 1902 0CB3 CD FE 0C CALL ;Halbperiode auszaehlen 1903 0CB6 41 INBY6: LD B,C ;Zaehlwert 1904 0CB7 CD FE 0C CALL TBPD1 1905 0CBA D8 RET C ;CTRL-Stop 1906 0CBB 78 LD A,B 1907 0CBC 81 ADD A,C ;zulaessige Startbitperiodendauer ? 1908 0CBD DA B6 0C JP C,INBY6 ; nein - zu gross 1909 0CC0 BA CP D 1910 0CC1 38 F3 JR C,INBY6 ; nein - zu klein ;------------------------------- 1911 0CC3 2E 08 LD L,08H ;8 Datenbit 1912 0CC5 CD E2 0C INBY8: CALL TBFLZ ;Flanken im Zeitfenster zaehlen 1913 0CC8 FE 04 CP 04H 1914 0CCA 3F CCF 1915 0CCB D8 RET C 1916 0CCC FE 02 CP 02H ;2-3 Flanken -> 1-Bit 1917 0CCE 3F CCF ;0-1 -#- -> 0-Bit 1918 0CCF CB 1A RR D ;Byte aufbauen 1919 0CD1 79 LD A,C 1920 0CD2 0F RRCA 1921 0CD3 D4 02 0D CALL NC,TBPD12 ;auf 1.bzw. 3. Flanke warten 1922 0CD6 CD FE 0C CALL TBPD1 ;auf letzte Flanke warten 1923 0CD9 2D DEC L 1924 0CDA C2 C5 0C JP NZ,INBY8 ; ------------------------ 1925 0CDD CD 9D 04 CALL DSTPTS 1926 0CE0 7A LD A,D ;Byte 1927 0CE1 C9 RET ;****************************************************** ;TonBand-FLankenanZahl ; ;IN: E=Maske fuer Flanke ;OUT:A=Flankenzahl ; E=/E ,nach jeder Flanke ; 1928 0CE2 3A 13 FC TBFLZ: LD A,(VKAIN2) 1929 0CE5 47 LD B,A ;B=Zaehlzeit 1930 0CE6 0E 00 LD C,00H ;C=Zaehler ;------------------------------- 1931 0CE8 DB 91 TBFLZ2: IN A,(DPIOB) 1932 0CEA AB XOR E ;war Flanke ? 1933 0CEB F2 F6 0C JP P,TBFLZ4 ; nein ; ------------------------ 1934 0CEE 7B LD A,E ; ja 1935 0CEF 2F CPL 1936 0CF0 5F LD E,A ;E=/E ;----------------------- 1937 0CF1 0C INC C 1938 0CF2 10 F4 DJNZ TBFLZ2 ;------------------------------- 1939 0CF4 79 LD A,C 1940 0CF5 C9 RET ;=============================== 1941 0CF6 00 TBFLZ4: NOP ;Zeitschleife 1942 0CF7 00 NOP 1943 0CF8 00 NOP 1944 0CF9 00 NOP 1945 0CFA 10 EC DJNZ TBFLZ2 ;------------------------------- 1946 0CFC 79 LD A,C 1947 0CFD C9 RET ;****************************************************** ;TonBand-PeriodenDauer 1 ; 1948 0CFE CD 9D 04 TBPD1: CALL DSTPTS 1949 0D01 D8 RET C ;****************************************************** ;TonBand-PeriodenDauer 12 ; 1950 0D02 0E 00 TBPD12: LD C,00H ;Anfangsstand Zaehler ;****************************************************** ;TonBand-PeriodenDauer ; ;IN: C=Anfangsstand Zaehler ; E=Maske fuer Flanke ;OUT:C=Zaehlergebnis ; E=/E wenn Flanke kam ; 1951 0D04 0C TBPD14: INC C 1952 0D05 28 0A JR Z,TBPD16 ;Uberlauf--> 1953 0D07 DB 91 IN A,(DPIOB) 1954 0D09 AB XOR E 1955 0D0A F2 04 0D JP P,TBPD14 ;Warten auf Flanke ; ------------------------ 1956 0D0D 7B LD A,E 1957 0D0E 2F CPL 1958 0D0F 5F LD E,A ;E=/E 1959 0D10 C9 RET ;------------------------------- 1960 0D11 0D TBPD16: DEC C 1961 0D12 C9 RET ;*********************************************** ;TonBand-PeriodenDauer2 ; ;OUT:C=Periodendauer ; 1962 0D13 CD 9D 04 TBPD2: CALL DSTPTS 1963 0D16 D8 RET C ;CTRL-Stop 1964 0D17 DB 91 IN A,(DPIOB) 1965 0D19 07 RLCA 1966 0D1A 38 F7 JR C,TBPD2 ;Warten auf low ;------------------------------- 1967 0D1C 1E 00 LD E,00H ;Zaehlen 1968 0D1E CD 02 0D CALL TBPD12 ; Low- u. 1969 0D21 C3 04 0D JP TBPD14 ; High-Zeit ;*********************************************** ;TAstenBEehandlungs-Tabelle ; 1970 0D24 30 TABET: DEFB 30H 1971 0D25 AE 09 DEFW SOTB 1972 0D27 33 DEFB 33H 1973 0D28 4B 09 DEFW STB 1974 0D2A 34 DEFB 34H 1975 0D2B 5A 09 DEFW CAPSB 1976 0D2D 35 DEFB 35H 1977 0D2E 4B 09 DEFW STB 1978 0D30 3A DEFB 3AH 1979 0D31 40 07 DEFW FTB 1980 0D33 3C DEFB 3CH 1981 0D34 4B 09 DEFW STB 1982 0D36 3D DEFB 3DH 1983 0D37 6A 09 DEFW STOPB 1984 0D39 41 DEFB 41H 1985 0D3A 4B 09 DEFW STB 1986 0D3C 42 DEFB 42H 1987 0D3D 3D 09 DEFW HOMEB 1994 0D3F FF DEFB 0FFH 1995 0D40 4B 09 DEFW STB ;************************************************ ; ; ############################################### BICGAE.ASM ab hier (UZ) ; ;************************************************ ;Betriebssystem BIC Teil: Bildausgabe ;Bearbeiter: Gaertner EEM ; ; STAND: 23.05.89 ; FILE: BICGAE.S ; ;------------------------------------------------ global CURSS global CURSRD global JPVER5 global VHOME global BEEP global KULIFS global VLF global CLSTSC global VCR global CSCRFK global KUREFS global CLINFK global CLIN global KUHO global ESC global WRZEMU global REZEMU global AOUTI4 global AOUTI5 global SAZLSP global ESCF7 global POP0 global DEL global TGRASC global VFTIN2 global VFTIN6 global WRMOD global FULL global STWIND global SELSCR global KEYON global KEYOFF external ERINT ;************************************************ ;Adressen Videobereiche fuer F-Tastenbelegung ; VFKEY1 EQU 0FF40h VFKEY6 EQU 0FF90h ;************************************************ COND ZDS.OR.K4 FLAGR EQU 98H ENDC COND CGG FLAGR EQU 0B8H ENDC PARAP EQU FLAGR READP EQU FLAGR+1 COMNP EQU READP VISDAT EQU FLAGR+4 VISMOD EQU VISDAT+1 VISADD EQU VISMOD+1 ;------------------------------ VRESET EQU 0 FIGS EQU 4CH CURS EQU 49H CURD EQU 0E0H PITCH EQU 47H VSYNC EQU 6FH ZOOM EQU 46H PRAM EQU 70H START EQU 6BH CCHAR EQU 4BH RDATWO EQU 0A0H WDATWO EQU 20H MASK EQU 4AH SYNC EQU 0EH ;************************************************************* ; Initialisierungswerte der VIS-Register 1996 0D42 00 VISIW: DEFB 0 ;Reg.0 Normalmodus 1997 0D43 66 DEFB 66H ;Reg.6 Pal.farbe 3 1998 0D44 54 DEFB 54H ;Reg.5 Pal.farbe 2 1999 0D45 42 DEFB 42H ;Reg.4 Pal.farbe 1 2000 0D46 30 DEFB 30H ;Reg.3 Paperfarbe schwarz 2001 0D47 20 DEFB 20H ;Reg.2 Borderfarbe schwarz 2002 0D48 12 DEFB 12H ;Reg.1 40 Zeichen,ZG-Manipulation aus ;------------------------------- ;Synchronisationsparameter 2003 0D49 0E BS40OA: DEFB SYNC ;40 Zeichen pro Zeile 200 FS-Zeilen 2004 0D4A 08 DEFB 08H 2005 0D4B 14 DEFB 14H 2006 0D4C 26 DEFB 26H 2007 0D4D C1 DEFB 0C1H 2008 0D4E 13 DEFB 13H 2009 0D4F 0C DEFB 0CH 2010 0D50 29 DEFB 29H 2011 0D51 C8 DEFB 0C8H 2012 0D52 A4 DEFB 0A4H 2013 0D53 47 DEFB PITCH 2014 0D54 01 DEFB 1 2015 0D54 28 DEFB 40 2016 0D54 4B DEFB CCHAR ;1 Zeile = 8 FS-Zeilen 2017 0D57 03 DEFB 3 ;Kursor stehend 1.bis 8. FS-Zeile 2018 0D58 87 INICHR: DEFB 87H 2019 0D59 A0 DEFB 0A0H 2020 0D5A 39 DEFB 39H 2021 0D5B 6F DEFB VSYNC ;GDC in Mastermode 2022 0D5C 00 DEFB 0 2023 0D5D 46 DEFB ZOOM ;ZOOM ist 0 2024 0D5E 01 DEFB 1 2025 0D5E 00 DEFB 0 2026 0D5E 70 DEFB PRAM ;Bildbereich 1 ab Adresse 0 , 200 FS-Zeilen 2027 0D61 04 DEFB 4 2028 0D62 00 00 DEFW 00 2029 0D64 80 DEFB 80H 2030 0D65 0C DEFB 0CH 2031 0D66 49 DEFB CURS ;Kursor auf Adresse 0 2032 0D67 03 DEFB 3 2033 0D68 00 00 DEFW 00 2034 0D6A 00 DEFB 0 2035 0D6B 4A DEFB MASK ;Maske FFFF alle Bits beschreiben 2036 0D6C 02 DEFB 2 2037 0D6D FF FF DEFW 0FFFFH 2038 0D6F 4C DEFB FIGS ;Screibrichtung 2 Anzahl 4000H-1 (Textbereich) 2039 0D70 03 DEFB 3 2040 0D71 02 DEFB 2 2041 0D72 FF FF DEFW 3FFFH 2042 0D74 20 DEFB WDATWO ;Schreiben SPACE,gelb auf schwarz 2043 0D75 02 DEFB 2 2044 0D76 20 DEFB 20H 2045 0D77 06 DEFB 6 2046 0D78 4C DEFB FIGS ;s.o. (1.Grafikbereich) 2047 0D79 03 DEFB 3 2048 0D7A 02 DEFB 2 2049 0D7B FF 3F DEFW 03FFFH 2050 0D7D 20 DEFB WDATWO ;Schreiben Farbe 0 (Paper) 2051 0D7E 02 DEFB 2 2052 0D7F 00 00 DEFW 00 2053 0D81 4C DEFB FIGS ;s.o. (2.Grafikbereich) 2054 0D82 03 DEFB 3 2055 0D83 02 DEFB 2 2056 0D84 FF 3F DEFW 03FFFH 2057 0D86 20 DEFB WDATWO ;s.o. 2058 0D87 02 DEFB 2 2059 0D88 00 00 DEFW 00 2060 0D8A 4C DEFB FIGS ;s.o. (3.Grafikbereich) 2061 0D8B 03 DEFB 3 2062 0D8C 02 DEFB 2 2063 0D8D FF 3F DEFW 03FFFH 2064 0D8F 20 DEFB WDATWO ;s.o. 2065 0D90 02 DEFB 2 2066 0D91 00 00 DEFW 00 2067 0D93 49 DEFB CURS ;Kursor auf Adresse 0 2068 0D94 03 DEFB 3 2069 0D95 00 00 DEFW 00 2070 0D97 00 DEFB 0 2071 0D98 4A DEFB MASK ;s.o. 2072 0D99 02 DEFB 2 2073 0D9A FF FF DEFW 0FFFFH 2074 0D9C 6B DEFB START ;GDC in Anzeigemodus 2075 0D9D 00 DEFB 0 ;************************************************ ;Initialisierungswerte RAM fuer 40 Zeichenmodus ; 2076 0D9E 01 BPA1IW: DEFB 1 2077 0D9F 28 DEFB 40 2078 0DA0 01 DEFB 1 2079 0DA1 19 DEFB 25 2080 0DA2 01 DEFB 1 2081 0DA3 01 DEFB 1 2082 0DA4 0E DEFB 14 2083 0DA5 28 00 DEFW 40 ; ;Initialisierungswerte RAM fuer 80 Zeichenmodus ; 2084 0DA7 01 BPA2IW: DEFB 1 2085 0DA8 50 DEFB 80 2086 0DA9 01 DEFB 1 2087 0DAA 19 DEFB 25 2088 0DAB 01 DEFB 1 2089 0DAC 01 DEFB 1 2090 0DAD 38 DEFB 56 2091 0DAE 50 00 DEFW 80 ; ;*************************************************** ;Synchronisationsparameter fuer verschiedene Modi 2092 0DB0 26 ISYBE1: DEFB 26H 2093 0DB1 C1 DEFB 0C1H 2094 0DB2 13 DEFB 13H 2095 0DB3 0C DEFB 0CH ;------------------- 2096 0DB4 4E DEFB 4EH 2097 0DB5 C3 DEFB 0C3H 2098 0DB6 27 DEFB 27H 2099 0DB7 19 DEFB 19H ;------------------- 2100 0DB8 26 DEFB 26H 2101 0DB9 C1 DEFB 0C1H 2102 0DBA 13 DEFB 13H 2103 0DBB 0A DEFB 0AH ;------------------- 2104 0DBC 4E DEFB 4EH 2105 0DBD C3 DEFB 0C3H 2105a 0DBE 2B DEFB 2BH 2105b 0DBF 14 DEFB 14H ;------------------- 2105c 0DC0 14 ISYBE2: DEFB 14h 2105d 0DC1 FA DEFB 0FAH 2105e 0DC2 2C DEFB 2CH ;------------------- 2105f 0DC3 29 ISYBE3: DEFB 29H 2105g 0DC4 C8 DEFB 0C8H 2105h 0DC5 A4 DEFB 0A4H ;-------------------- 2105i 0DC6 00 CHRSTD: DEFB 0 ;Initwert fuer SZFLAG 2105j 0DC7 09 DEFB 09 ;Init.werte fuer Zeichen und Kursor 2105k 0DC8 07 DEFB 07 2105l 0DC9 A0 DEFB 0A0H 2105m 0DCA 84 DEFB 84H 2105n 0DCB 39 DEFB 39H ;-------------------------------- ;UP zum Test Slot mit ZG 2106 0DCC D3 A8 INZGUP: OUT (PPIA),A 2107 0DCE ED 5B 20 80 LD DE,(ZG+10H) 2108 0DD2 21 3E 7F LD HL,7F3EH 2109 0DD5 E7 RST 20H ;CPREG 2110 0DD6 C9 RET ;Initialisierung Bilschirmanzeige ;-------------------------------- 2111 0DD7 CD F4 FD BSINIT: CALL XBSINI 2112 0DDA F3 DI 2113 0DDB 3E 90 LD A,90H ;SCP-ROM zuschalten 2114 0DDD CD CC 0D CALL INZGUP 2115 0DE0 28 0B JR Z,BSINI1 2116 0DE2 3E 80 LD A,80H 2117 0DE4 CD CC 0D CALL INZGUP 2118 0DE7 28 04 JR Z,BSINI1 2119 0DE9 3E B0 LD A,0B0H 2120 0DEB D3 A8 OUT (PPIA),A 2121 0DED 21 10 80 BSINI1: LD HL,ZG ;ZG LADEN 2122 0DF0 0E 9C LD C,VISDAT 2123 0DF2 3E 13 LD A,13H 2124 0DF4 D3 9D OUT (VISMOD),A ;ZG-MANIPULATION EIN 2125 0DF6 AF XOR A ;ZAEHLER 256 2126 0DF7 D3 9E INITZG: OUT (VISADD),A ;ZG-ADRESSE 2127 0DF9 06 08 LD B,08H 2128 0DFB ED B3 OTIR 2129 0DFD 3C INC A 2130 0DFE 20 F7 JR NZ,INITZG 2131 0E00 3E A0 LD A,0A0H ;SCP-ROM abschalten 2132 0E02 D3 A8 OUT (PPIA),A ;------------------------------ 2133 0E04 0C INIVIS: INC C ;VIS PROGAMMIEREN 2134 0E05 21 42 0D LD HL,VISIW 2135 0E08 06 07 LD B,BS40OA-VISIW 2136 0E0A ED B3 OTIR 2137 0E0C 2B DEC HL 2138 0E0D 7E LD A,(HL) 2139 0E0E 32 20 FC LD (VIREG1),A ;------------------------------ 2140 0E11 21 4A 0D INIGDC: LD HL,BS40OA+1 ;Synchronisationsparameter 2141 0E14 E5 PUSH HL 2142 0E15 1E 13 LD E,19 ;ANZAHL DER KOMMANDOS 2143 0E17 AF XOR A 2144 0E18 D3 99 OUT (COMNP),A ;VRESET 2145 0E1A CD 3B 0E CALL IGDCU3 2146 0E1D FB EI 2147 0E1E E1 POP HL 2148 0E1F 2B DEC HL 2149 0E20 11 C5 F2 LD DE,SYNBER 2150 0E23 01 12 00 LD BC,18 2151 0E26 ED B0 LDIR 2152 0E28 01 06 00 LD BC,0006H 2153 0E2B 11 D3 FF LD DE,SZFLAG ;und SZFLAG 2154 0E2E 21 C6 0D LD HL,CHRSTD 2155 0E31 ED B0 LDIR 2156 0E33 C3 1B 17 JP CLSTS3 ;ZLSTAT INIT. ;----------------------------- ; GDC-KOMMANDOS ABARBEITEN ;IN: HL ADR.SPEICHEN KOMMANDOS UND PARAMETER ; E ANZAHL DER KOMMANDOS ; 2157 0E36 7E IGDCU0: LD A,(HL) ;Kommandobyte in A 2158 0E37 CD 8F 1F IGDCU1: CALL COMND ;Kommando an GDC 2159 0E3A 23 INC HL 2160 0E3B 46 IGDCU3: LD B,(HL) ;Anzahl der Parameter in B 2161 0E3C 23 INC HL 2162 0E3D 05 DEC B 2163 0E3E 04 INC B 2164 0E3F 28 03 JR Z,IGDCU2 ;keine Parameter 2165 0E41 CD 9D 1F CALL PARAM0 ;Parameter an GDC 2166 0E44 1D IGDCU2: DEC E ;Anzahl der Kommandos -1 2167 0E45 20 EF JR NZ,IGDCU0 2168 0E47 C9 RET ;alle Kommandos fertig ;************************************************ ; SELect SCReen ; IN: bc Screennr./seite aktiv ; de Screennr./seite visuell ; OUT af s=m FC-ERROR s=p i.o. ;------------------------------ 2169 0E48 F3 SELSCR: DI 2170 0E49 CD 59 12 CALL TGRASC 2171 0E4C DC 2D 10 CALL C,TXRET ;Parameter Textmodus retten 2172 0E4F D5 PUSH DE 2173 0E50 50 LD D,B 2174 0E51 59 LD E,C 2175 0E52 CD 20 10 CALL REMASK ;Maske auf 0FFFFh 2176 0E55 2A 72 F2 LD HL,(PAGEAK) 2177 0E58 E7 RST 20H 2178 0E59 28 45 JR Z,SELSC6 ;aktive Seite bleibt 2179 0E5B EB EX DE,HL 2180 0E5C 22 72 F2 LD (PAGEAK),HL 2181 0E5F 7C LD A,H 2182 0E60 F5 PUSH AF 2183 0E61 21 B9 0F LD HL,SCAKTA-2 2184 0E64 0E 07 LD C,07H 2185 0E66 CD 51 14 CALL JPVER5 ;Routine fuer Aktiven Screen anspringen ;----------------------------- ; Speicherbereich loeschen, falls in ; anderem Modus verwendet 2186 0E69 F1 POP AF 2187 0E6A FE 04 CP 04H 2188 0E6C 28 32 JR Z,SELSC6 ;Plotter 2189 0E6E E6 F7 AND 0F7H ; 8,9 --> 0,1 2190 0E70 F5 PUSH AF 2191 0E71 21 F4 F7 LD HL,TBTXT ;Tabelle der Statusbytes fuer Textseiten 2192 0E74 FE 02 CP 02H 2193 0E76 38 03 JR C,SELSC2 2194 0E78 21 04 F8 LD HL,TBTXT+16 ; -"- fuer Grafikseiten 2195 0E7B E6 01 SELSC2: AND 01H ; Modus 0,2 oder 1,3,5 ? 2196 0E7D 06 00 LD B,00H 2197 0E7F 3A 72 F2 LD A(PAGEAK) 2198 0E82 28 16 JR Z,SELSC5 2199 0E84 CB 27 SLA A ;Modus 1,3,5 Seitenzahl*2 2200 0E86 4F LD C,A ;bc: Seitenzahl*2 2201 0E87 09 ADD HL,BC 2202 0E88 F1 POP AF ;a: aktueller Modus 2203 0E89 BE CP (HL) 2204 0E8A 28 08 JR Z,SELSC4 ;Modus stimmt 2205 0E8C 77 LD (HL),A ;neuen Modus laden 2206 0E8D 23 INC HL ;naechster Speicherbereich 2207 0E8E 77 SELSC3: LD (HL),A ;neuen Modus laden 2208 0E8F CD F6 16 CALL CLSASC 2209 0E92 18 0C JR SELSC6 ;fertig 2210 0E94 23 SELSC4: INC HL ;naechster Speicherbereich 2211 0E95 BE CP (HL) 2212 0E96 20 F6 JR NZ,SELSC3 ;2. Bereich stimmt nicht 2213 0E98 18 06 JR SELSC6 ;Modus stimmt ->fertig 2214 0E9A 4F SELSC5: LD C,A ;Modus 0,2 2215 0E9B 09 ADD HL,BC 2216 0E9C F1 POP AF ;a: aktueller Modus 2217 0E9D BE CP (HL) 2218 0E9E 20 EE JR NZ,SELSC3 ;Modus stimmt nicht ;--------------------------------------------------------- ; visuellen Modus und Seite einstellen 2219 0EA0 D1 SELSC6: POP DE 2220 0EA1 2A 70 F2 LD HL,(PAGEVI) 2221 0EA4 E7 RST 20H 2222 0EA5 CA 9D 0F JP Z,SELSC9 ;visuelle Seite bleibt 2223 0EA8 EB EX DE,HL 2224 0EA9 22 70 F2 LD (PAGEVI),HL 2225 0EAC DB 98 SELSC7: IN A,(FLAGR) ;warten auf Vertikalsynchronisation 2226 0EAE E6 20 AND 20H 2227 0EB0 20 FA JR NZ,SELSC7 2228 0EB2 DB 98 SELS71: IN A,(FLAGR) 2229 0EB4 E6 20 AND 20H 2230 0EB6 28 FA JR Z,SELS71 2231 0EB8 7C LD A,H 2232 0EB9 BA CP D 2233 0EBA CA 98 0F JP Z,SELSC8 ;Modus bleibt nur Seite aendern 2234 0EBD 3E 0C LD A,0CH ;Bildschirm dunkel 2235 0EBF CD 8F 1F CALL COMND 2236 0EC2 7C LD A,H ;-------------------------------Routine fuer visuellen Modus ; IN: a Modus 2237 0EC3 F5 SCREVI: PUSH AF 2238 0EC4 11 C8 F2 LD DE,SYNBER+3 2239 0EC7 01 04 00 LD BC,0004H 2240 0ECA 21 B0 0D LD HL,ISYBE1 2241 0ECD 1F RRA 2242 0ECE F5 PUSH AF 2243 0ECF 3E 12 LD A,12H 2244 0ED1 30 03 JR NC,SCREV0 ;40 Zeichen 2245 0ED3 09 ADD HL,BC ;80 Zeichen 2246 0ED4 3D DEC A 2247 0ED5 3D DEC A 2248 0ED6 D3 9D SCREV0: OUT (VISMOD),A ;Frequenz vom VIS einstellen 2249 0ED8 32 20 FC LD (VIREG1),A 2250 0EDB 3A 1A FC LD A,(MONSW) 2251 0EDE A7 AND A 2252 0EDF 28 02 JR Z,SCREV1 ;TV 2253 0EE1 09 ADD HL,BC 2254 0EE2 09 ADD HL,BC ;Monitor 2255 0EE3 ED B0 SCREV1: LDIR 2256 0EE5 F1 POP AF 2257 0EE6 3E 50 LD A,80 ;PITCH-Parameter 2258 0EE8 38 01 JR C,SCREV2 2259 0EEA 0F RRCA ;40 Zeichen 2260 0EEB 32 D1 F2 SCREV2: LD (SYNBER+12),A 2261 0EEE F1 POP AF ;a : visueller Modus 2262 0EEF CD 5C 12 CALL TGRAS1 ;Modus-Test 2263 0EF2 21 D4 F2 LD HL,PCHAR 2264 0EF5 30 21 JR NC,SCREV4 ;Grafik-Modus 2265 0EF7 E6 08 AND 08H ;Test auf Abstand 2266 0EF9 F5 PUSH AF 2267 0EFA CD 59 12 CALL TGRASC ;Grafikmodus aktiv 2268 0EFD 3E 00 LD A,00H 2269 0EFF 30 08 JR NC,SCREV3 ;Kursor immer aus 2270 0F01 3A 17 FC LD A,(CURSW) 2271 0F04 A7 AND A 2272 0F05 28 02 JR Z,SCREV3 ;Kursor aus 2273 0F07 3E 80 LD A,80H ;Kursor ein 2274 0F09 77 SCREV3: LD (HL),A 2275 0F0A F1 POP AF 2276 0F0B 28 1F JR Z,SCREV6 2277 0F0D 3A D4 FF LD A,(CURSO0) ;mit Abstand 2278 0F10 B6 OR (HL) 2279 0F11 E5 PUSH HL 2280 0F12 21 C0 0D LD HL,ISYBE2 ;Parameter mit Abstand 2281 0F15 E3 EX (SP),HL 2282 0F16 18 1D JR SCREV7 2283 0F18 FE 05 SCREV4: CP 05H 2284 0F1A 3E 01 LD A,01H ;Hochaufloesend 2285 0F1C 20 01 JR NZ,SCREV5 2286 0F1E 3C INC A ;Multicolor 2287 0F1F F5 SCREV5: PUSH AF 2288 0F20 AF XOR A 2289 0F21 77 LD (HL),A ;PCHAR laden 2290 0F22 23 INC HL 2291 0F23 77 LD (HL),A 2292 0F24 23 INC HL 2293 0F25 77 LD (HL),A 2294 0F26 21 C3 0D LD HL,ISYBE3 ;Parameter Grafik 2295 0F29 F1 POP AF 2296 0F2A 18 20 JR SCREV9 2297 0F2C 3A D5 FF SCREV6: LD A,(CURSO1) ;ohne Abstand 2298 0F2F B6 OR (HL) 2299 0F30 E5 PUSH HL 2300 0F31 21 C3 0D LD HL,ISYBE3 ;Parameter ohne Abstand 2301 0F34 E3 EX (SP),HL 2302 0F35 77 SCREV7: LD (HL),A ;1. PCHAR-Parameter 2303 0F36 23 INC HL 2304 0F37 3A D6 FF LD A,(CURSO2) 2305 0F3A 77 LD (HL),A 2306 0F3B 3A 18 FC LD A,(CURGK) 2307 0F3E A7 AND A 2308 0F3F 28 04 JR Z,SCREV8 ;Normalkursor 2309 0F41 3A D7 FF LD A,(CURSO3) 2310 0F44 77 LD (HL),A ;Kleinkursor blinkend 2311 0F45 23 SCREV8: INC HL 2312 0F46 3A D8 FF LD A,(CURSO4) 2313 0F49 77 LD (HL),A 2314 0F4A E1 POP HL 2315 0F4B AF XOR A ;Textmodus 2316 0F4C D3 9D SCREV9: OUT (VISMOD),A ;VIS-Register 0 2317 0F4E 32 1F FC LD (VIREG0), 2318 0F51 01 03 00 LD BC,0003H 2319 0F54 ED B0 LDIR ;Parameter laden ab SYNBER+7 2320 0F56 21 C5 F2 LD HL,SYNBER 2321 0F59 1E 03 LD E,03H 2322 0F5B CD 36 0E CALL IGDCU0 ;1. 3 Synchr.befehle ausgeben ;---------------------------- 2323 0F5E 2A 70 F2 SCREVX: LD HL,(PAGEVI) 2324 0F61 7C LD A,H 2325 0F62 CD 5C 12 CALL TGRAS1 2326 0F65 F5 PUSH AF 2327 0F66 D4 73 10 CALL NC,GVRMBE ;Grafik 2328 0F69 F1 POP AF 2329 0F6A F5 PUSH AF 2330 0F6B DC 5E 10 CALL C,VRAMBE ;Text Anf.adr. BWS berechnen 2331 0F6E 22 6C F2 LD (VVRAM),HL 2332 0F71 22 B5 F2 LD (PPARAM),HL 2333 0F74 21 B7 F2 LD HL,PPARAM+2 2334 0F77 F1 POP AF 2335 0F78 FE 08 CP 08H 2336 0F7A 38 07 JR C,SCREVY 2337 0F7C 36 A0 LD (HL),0A0H 2338 0F7E 23 INC HL 2339 0F7F 36 0F LD (HL),0FH ;250 Bildschirmzeilen 2340 0F81 18 05 JR SCREVZ 2341 0F83 36 80 SCREVY: LD (HL),80H 2342 0F85 23 INC HL 2343 0F86 36 0C LD (HL),0CH ;200 Bildschirmzeilen 2344 0F88 06 04 SCREVZ: LD B,04H 2345 0F8A CD 95 1F CALL PARAM2 2346 0F8D 3E 0D LD A,0DH ;Bildschirm hell 2347 0F8F CD 8F 1F CALL COMND 2348 0F92 CD 91 11 CALL VFTINI ;F-Tasten initialisieren 2349 0F95 C3 00 12 JP BKEYAN ;----------------------------- 2350 0F98 CD 9D 0F SELSC8: CALL SELSC9 ;Kursuorbehandlung 2351 0F9B 18 C1 JR SCREVX ;----------------------------- ; Kursor stellen, wenn nur aktive Seite anders 2352 0F9D CD 59 12 SELSC9: CALL TGRASC 2353 0FA0 30 0D JR NC,SELSCA ;Grafik Kursor immer aus 2354 0FA2 3A 17 FC LD A,(CURSW) ;Text Kursor entsprechen Kursorschalter 2355 0FA5 A7 AND A 2356 0FA6 28 07 JR Z,SELSCA ;Kursor aus 2357 0FA8 3A D4 F2 LD A,(PCHAR) ;Kursor ein 2358 0FAB F6 80 OR 80H 2359 0FAD 18 05 JR SELSCB 2360 0FAF 3A D4 F2 SELSCA: LD A,(PCHAR) 2361 0FB2 E6 7F AND 7FH 2362 0FB4 32 D4 F2 SELSCB: LD (PCHAR),A 2363 0FB7 E5 PUSH HL 2364 0FB8 C3 6E 15 JP KURES3 ;----------------------------- 2365 0FBB 00 SCAKTA: DEFB 0 ;Tabelle der Ansprungadressen fuer Routinen 2366 0FBC F1 0F DEFW SCREA0 ;bei aktivem Screen 2367 0FBE 01 DEFB 1 2368 0FBF F6 0F DEFW SCREA1 2369 0FC1 02 DEFB 2 2370 0FC2 88 10 DEFW SCREA2 2371 0FC4 03 DEFB 3 2372 0FC5 93 10 DEFW SCREA3 2373 0FC7 05 DEFB 5 2374 0FC8 7D 10 DEFW SCREA5 2375 0FCA 08 DEFB 8 2376 0FCB F1 0F DEFW SCREA0 2377 0FCD 09 DEFB 9 2378 0FCE F6 0F DEFW SCREA1 ;****************************** ;Umschaltung Monitor <--> TV 2380 0FD0 3A 1A FC MONCTR: LD A,(MONSW) 2381 0FD3 EE 01 XOR 01H 2382 0FD5 32 1A FC LD (MONSW),a 2383 0FD8 2A 70 F2 LD HL,(PAGEVI) 2384 0FDB 16 04 LD D,04H 2385 0FDD C3 AC 0E JP SELSC7 ;****************************** aktive Seite einstellen 2386 0FE0 21 9E 0D SCREU0: LD HL,BPA1IW ;Bildparameter 40 Zeichen 2387 0FE3 18 03 JR SCREU7 2388 0FE5 21 A7 0D SCREU1: LD HL,BPA2IW ;Bildparameter 80 Zeichen 2389 0FE8 11 63 F2 SCREU7: LD DE,SPFIRS 2390 0FEB 01 09 00 LD BC,0009H 2391 0FEE ED B0 LDIR 2392 0FF0 C9 RET ;----------------------------- 2393 0FF1 CD E0 0F SCREA0: CALL SCREU0 2394 0FF4 18 03 JR SCREA7 2395 0FF6 CD E5 0F SCREA1: CALL SCREU1 2396 0FF9 2A D7 F2 SCREA7: LD HL,(PATXAK) ;h SCRNTX 2397 0FFC BC CP H 2398 0FFD F5 PUSH AF 2399 0FFE 21 66 F2 LD HL,ZLLAST 2400 1001 3A 85 F2 LD A,(FKTANZ) ; 0 - keyoff -1 - keyon 2401 1004 86 ADD A,(HL) ; +25 standard 2402 1005 77 LD (HL),A 2403 1006 2A 72 F2 SCREA8: LD HL,(PAGEAK) ;letzten Textmodus 2404 1009 2C INC L 2405 100A 2D DEC L 2406 100B 20 03 JR NZ,SCREA9 ;nur wenn Seite 0 2407 100D 22 D7 F2 LD (PATXAK),HL ;merken 2408 1010 CD 5E 10 SCREA9: CALL VRAMBE 2409 1013 22 6E F2 LD (AVRAM),HL 2410 1016 CD 86 17 CALL CURSS ;Kursor auf Bildanfang 2411 1019 CD 20 10 CALL REMASK 2412 101C F1 POP AF 2413 101D 28 29 JR Z,TXLAD ;alter Textscr. wieder aktiv 2414 101F C9 RET ;----------------------------- 2415 1020 21 FF FF REMASK: LD HL,0FFFFH 2416 1023 22 B5 F2 LD (PPARAM),HL 2417 1026 06 02 LD B,02H 2418 1028 3E 4A LD A,MASK 2419 102A C3 97 1F JP PARAM3 ;Maske fuer Text auf FFFF ;----------------------------- ;zeilenstatus u. kursorpos. fuer TeXtmodus (seite 0) RETten 2420 102D 3A 72 F2 TXRET: LD A,(PAGEAK) 2421 1030 A7 AND A 2422 1031 C0 RET NZ ;nicht Kommandoseite 2423 1032 C5 PUSH BC 2424 1033 D5 PUSH DE 2425 1034 2A 67 F2 LD HL,(CRSZL) 2426 1037 22 D9 F2 LD (CRSTX),HL 2427 103A 21 8E FA LD HL,ZLSTAT 2428 103D 11 A7 FA LD DE,ZLSTTX 2429 1040 01 19 00 LD BC,25 2430 1043 ED B0 LDIR 2431 1045 D1 POP DE 2432 1046 C1 POP BC 2433 1047 C9 RET ;----------------------------- ;zeilenstatus u. kursorpos. fuer TeXtmodus (seite 0) LADen 2434 1048 3A 72 F2 TXLAD: LD A,(PAGEAK) 2435 104B A7 AND A 2436 104C C0 RET NZ ;nicht Seite 0 2437 104D 21 A7 FA LD HL,ZLSTTX 2438 1050 11 8E FA LD DE,ZLSTAT 2439 1053 01 19 00 LD BC,25 2440 1056 ED B0 LDIR 2441 1058 2A D9 F2 LD HL,(CRSTX) 2442 105B C3 AD 15 JP SAZLSP ;Kursor auf alte Position ;----------------------------- 2443 105E 45 VRAMBE: LD B,L ; b Seitennr. 2444 105F 7C LD A,H ; c Screennr. 2445 1060 21 00 00 LD HL,0000H 2446 1063 11 00 04 LD DE,0400H 2447 1066 04 VRAMB0: INC B 2448 1067 05 DEC B 2449 1068 C8 RET Z ; Seite 0 2450 1069 EB EX DE,HL 2451 106A 1F RRA 2452 106B 30 01 JR NC,VRAMB1 2453 106D 29 ADD HL,HL ;Screen 1 bzw. 3,5 2454 106E EB VRAMB1: EX DE,HL 2455 106F 19 VRAMB2: ADD HL,DE 2456 1070 10 FD DJNZ VRAMB2 2457 1072 C9 RET ;**********************************: 2458 1073 45 GVRMBE: LD B,L ;L Seitennr. 2459 1074 7C LD A,H ;h Screennr. 2460 1075 21 00 40 LD HL,4000H ;Anfang Grafik-RAM 2461 1078 11 00 20 LD DE,2000H 2462 107B 18 E9 JR VRAMB0 ;*********************************** 2463 107D 21 40 01 SCREA5: LD HL,320 2464 1080 22 7E F2 LD (PVIEW2),HL 2465 1083 21 50 00 LD HL,80 2466 1086 18 14 JR SCREA4 2467 1088 21 40 01 SCREA2: LD HL,320 2468 108B 22 7E F2 LD (PVIEW2),HL 2469 108E 21 28 00 LD HL,40 2470 1091 18 09 JR SCREA4 2471 1093 21 80 02 SCREA3: LD HL,640 2472 1096 22 7E F2 LD (PVIEW2),HL 2473 1099 21 50 00 LD HL,80 2474 109C 22 6A F2 SCREA4: LD (WIDTH),HL 2475 109F 2A 72 F2 LD HL,(PAGEAK) 2476 10A2 CD 73 10 CALL GVRMBE 2477 10A5 22 6E F2 LD (AVRAM),HL ;--------------------------------- 2478 10A8 CD 86 17 REGRKU: CALL CURSS ;Grafikkursor links unten 2479 10AB 06 14 LD B,20 2480 10AD 21 2D FC LD HL,XALT 2481 10B0 36 00 REGRK1: LD (HL),00H 2482 10B2 23 INC HL 2483 10B3 10 FB DJNZ REGRK1 2484 10B5 C9 RET ;----------------------------------- ;SET BORderfarbe ; 2485 10B6 E6 0F SETBOR: AND 0FH 2486 10B8 F6 20 OR 20H ;VIS-Register 2 2487 10BA 32 21 FC LD (VIREG2),A 2488 10BD D3 9D SETBO1: OUT (VISMOD),A 2489 10BF C9 RET ;-------------------------------- ;SET PAPerfarbe ; 2490 10C0 E6 0F SETPAP: AND 0FH 2491 10C2 F6 30 OR 30H ;VIS-Register 3 2492 10C4 32 22 FC LD (VIREG3),A 2493 10C7 18 F4 JR SETBO1 ;-------------------------------- ;SET PALette ; 2494 10C9 E5 SETPAL: PUSH HL 2495 10CA 21 74 F2 LD HL,PAL11 2496 10CD 1F RRA 2497 10CE 30 03 JR NC,SETPA1 ;gerade --> Pal.1 2498 10D0 21 77 F2 LD HL,PAL21 ;ungerade --> Pal.2 2499 10D3 06 03 SETPA1: LD B,3 2500 10D5 0E 9D LD C,VISMOD 2501 10D7 ED B3 OTIR 2502 10D9 D5 PUSH DE 2503 10DA 2B DEC HL 2504 10DB 01 03 00 LD BC,0003H 2505 10DE 11 25 FC LD DE,VIREG6 2506 10E1 ED B8 LDDR ;Palette merken 2507 10E3 D1 POP DE 2508 10E4 E1 POP HL 2509 10E5 C9 RET ;-------------------------------- 2510 10E6 73 63 72 65 65 6E 20 STFTAT: DEFM 'screen ' 2517 10ED 00 00 DEFW 00 2518 10EF 00 00 DEFW 00 2519 10F1 00 00 DEFW 00 2520 10F3 00 00 DEFW 00 2521 10F5 00 DEFB 0 ; 2522 10F6 15 DEFB 15H 2523 10F7 61 75 74 6F 20 DEFM 'auto ' 2528 10FC 00 DEFW 00 2529 10FE 00 DEFW 00 2530 1100 00 DEFW 00 2531 1102 00 DEFW 00 2532 1104 00 DEFW 00 ; 2533 1106 15 DEFB 15H 2534 1107 6C 6F 61 64 22 DEFM 'load"' 2539 110C 00 00 DEFW 00 2540 110E 00 00 DEFW 00 2541 1110 00 00 DEFW 00 2542 1112 00 00 DEFW 00 2543 1114 00 00 DEFW 00 ; 2544 1116 15 DEFB 15H 2545 1117 6C 69 73 74 20 DEFM 'list ' 2550 111C 00 00 DEFW 00 2551 111E 00 00 DEFW 00 2552 1120 00 00 DEFW 00 2553 1122 00 00 DEFW 00 2554 1124 00 00 DEFW 00 ; 2555 1126 15 DEFB 15h 2556 1127 72 75 6E DEFM 'run' 2559 112A 0D DEFB 0DH 2560 112B 00 DEFB 0 2561 112C 00 00 DEFW 00 2562 112E 00 00 DEFW 00 2563 1130 00 00 DEFW 00 2564 1132 00 00 DEFW 00 2565 1134 00 00 DEFW 00 ; 2575 1136 15 DEFB 15H 2576 1137 63 6F 6C 6F 72 20 36 2C 30 2C 30 20 DEFM 'color 6,0,0 ' 2588 1143 0D DEFB 0DH 2589 1144 00 00 DEFW 00 ; 2598 1146 15 DEFB 15H 2599 1147 66 69 6C 65 73 DEFM 'files' 2604 114C 0D DEFB 0DH 2605 114D 00 00 DEFB 0 2606 114E 00 00 DEFW 00 2607 1150 00 00 DEFW 00 2608 1152 00 00 DEFW 00 2609 1154 00 00 DEFW 00 ; 2613 1156 15 DEFB 15H 2614 1157 73 61 76 65 22 DEFM 'save"' 2619 115C 00 00 DEFW 00 2620 115E 00 00 DEFW 00 2621 1160 00 00 DEFW 00 2622 1162 00 00 DEFW 00 2623 1164 00 00 DEFW 00 ; 2628 1166 15 DEFB 15H 2629 1167 6C 69 73 74 2E DEFM 'list.' 2633 116C 0D DEFB 0DH 2634 116D 1E DEFB 1EH 2635 116E 1E DEFB 1EH 2636 116F 00 DEFB 0 2637 1170 00 00 DEFW 00 2638 1172 00 00 DEFW 00 2639 1174 00 00 DEFW 00 ; 2642 1176 15 DEFB 15H 2643 1177 72 75 6E DEFM 'run' 2646 117A 00 00 DEFW 00 2647 117C 00 00 DEFW 00 2648 117E 00 00 DEFW 00 2649 1180 00 00 DEFW 00 2650 1182 00 00 DEFW 00 2651 1184 00 00 DEFW 00 ;-------------------------------- ;FunktionsTasten INItialisierung ; 2658 1186 01 A0 00 FTINI: LD BC,160 2659 1189 11 46 F7 LD DE,FKEY1 2660 118C 21 E6 10 LD HL,STFTAT 2661 118F ED B0 LDIR ;------------------------------- ;Videobereich fuer FTasten INItialisieren ; 2662 1191 CD 97 17 VFTINI: CALL CURSRD 2663 1194 E5 PUSH HL 2664 1195 06 07 LD B,07H 2665 1197 3A 71 F2 LD A,(SCRNRV) 2666 119A 0F RRCA 2667 119B 30 02 JR NC,VFTIN1 ;40 Zeichen Screen 2668 119D CB 10 RL B 2669 119F 0E 05 VFTIN1: LD C,5 ;5 F-Tasten 2670 11A1 C5 PUSH BC 2671 11A2 21 40 FF LD HL,VFKEY1 ;Videobereich 1 2672 11A5 11 46 F7 LD DE,FKEY1 2673 11A8 CD BA 11 CALL VFTIN2 2674 11AB C1 POP BC 2675 11AC 21 90 FF LD HL,VFKEY6 ;Videobereich 2 2676 11AF 11 96 F7 LD DE,FKEY6 2677 11B2 CD BA 11 CALL VFTIN2 2678 11B5 E1 POP HL 2679 11B6 CD 86 17 CALL CURSS 2680 11B9 C9 RET ;------------------------------- 2681 11BA CD 86 17 VFTIN2: CALL CURSS ;Kursor auf Anfang Videobereich 2682 11BD D5 PUSH DE 2683 11BE C5 PUSH BC 2684 11BF EB EX DE,HL 2685 11C0 CD B3 FD VFTIN7: CALL XVFTIN 2686 11C3 CD 7D 17 VFTIN3: CALL WRMOD 2687 11C6 7E VFTIN4: LD A,(HL) 2688 11C7 23 INC HL 2689 11C8 CD 72 12 CALL CHRTST 2690 11CB 30 F9 JR NC,VFTIN4 ;GCH 2691 11CD 20 05 JR NZ,VFTIN5 ;2. Grafikbyte 2692 11CF FE 20 CP 20H 2693 11D1 30 01 JR NC,VFTIN5 ;kein Steuerzeichen 2694 11D3 AF XOR A 2695 11D4 D3 98 VFTIN5: OUT (PARAP),A 2696 11D6 CD A7 1F CALL FULL 2697 11D9 3A 91 F2 LD A,(ACTCOL) 2698 11DC D3 98 OUT (PARAP),A 2699 11DE 10 E3 DJNZ VFTIN3 2700 11E0 0E 00 VFTIN6: LD C,0 ;Leerzeichen 2701 11E2 47 LD B,A ;Farbcode 2702 11E3 CD 72 17 CALL CHRTS0 ;F-Taste mit 0 abschliessen 2703 11E6 C1 POP BC 2704 11E7 E1 POP HL 2705 11E8 0D DEC C 2706 11E9 C8 RET Z ;5 F-Tasten fertig 2707 11EA 11 10 00 LD DE,16 2708 11ED 19 ADD HL,DE 2709 11EE E5 PUSH HL 2710 11EF C5 PUSH BC 2711 11F0 18 CE JR VFTIN7 ;------------------------------- ;KEYanzeige OFF ; 2712 11F2 CD D6 FD KEYOFF: CALL XKEYOF 2713 11F5 E5 PUSH HL 2714 11F6 AF XOR A 2715 11F7 CD 51 12 CALL SFATGS ;Test Grafikscreen 2716 11FA F3 DI 2717 11FB CD 5E 0F CALL SCREVX ;nein 2718 11FE E1 POP HL 2719 11FF C9 RET ;------------------------------- ;Bedingte KEYanzeige ; 2720 1200 3A 85 F2 BKEYAN: LD A,(FKTANZ) 2721 1203 A7 AND A 2722 1204 28 49 JR Z,KEYON4 ;------------------------------- ;KEYanzeige ON ; 2723 1206 CD D1 FD KEYON: CALL XKEYON 2724 1209 F3 DI 2725 120A 3E FF LD A,0FFH 2726 120C CD 51 12 CALL SFATGS 2727 120F D0 RET NC ;Grafikscreen 2728 1210 E5 PUSH HL 2729 1211 2A 6C F2 LD HL,(VVRAM) 2730 1214 22 B5 F2 LD (PPARAM),HL ;Bildbereich 1 2731 1217 21 B7 F2 LD HL,PPARAM+2 2732 121A 3A 71 F2 LD A,(SCRNRV) 2733 121D FE 08 CP 08H 2734 121F 38 07 JR C,KEYON1 ;Screen 0 und 1 2735 1221 36 00 LD (HL),00H 2736 1223 23 INC HL 2737 1224 36 0F LD (HL),0FH ;240 FS-Zeilen 2738 1226 18 05 JR KEYON2 2739 1228 36 00 KEYON1: LD (HL),00H 2740 122A 23 INC HL 2741 122B 36 0C LD (HL),0CH ;192 FS-Zeilen 2742 122D 3A DF FA KEYON2: LD A,(ASTAMT) 2743 1230 0F RRCA 2744 1231 11 40 FF LD DE,VFKEY1 2745 1234 3E 01 LD A,01H ;kein Shift 2746 1236 38 04 JR C,KEYON3 2747 1238 11 90 FF LD DE,VFKEY6 2748 123B AF XOR A ;Shift 2749 123C 32 C3 FA KEYON3: LD (FTSHI),A 2750 123F 23 INC HL ;2.Bildbereich 2751 1240 73 LD (HL),E 2752 1241 23 INC HL 2753 1242 72 LD (HL),D ;Anfangsadr. entsprechend Shift-Taste 2754 1243 23 INC HL 2755 1244 36 A0 LD (HL),0A0H 2756 1246 23 INC HL 2757 1247 36 00 LD (HL),00H ;10 FS-Zeilen 2758 1249 06 08 LD B,08H 2759 124B CD 95 1F CALL PARAM2 2760 124E E1 POP HL 2761 124F FB KEYON4: ei 2762 1250 C9 RET ;-------------------------------- ;Set FktAnz und Test GrafikScreen ;IN : A 0/FF ; 2763 1251 32 85 F2 SFATGS: LD (FKTANZ),A 2764 1254 3A 71 F2 TGRASV LD A,(SCRNRV) 2765 1257 18 03 JR TGRAS1 ;------------------------------ ;Test ,ob Grafik-Bs ; OUT: NC Grafik (2,3,4,5) 2766 1259 3A 73 F2 TGRASC: LD A,(SCRNRA) 2767 125C FE 02 TGRAS1: CP 02H 2768 125E D8 RET C ;0,1 2769 125F FE 06 CP 06H 2770 1261 3F CCF 2771 1262 C9 RET ;*********************************** ;KURSOR POSITIONIEREN ; IN: HL SPALTE,ZEILE ; 2772 1263 3E 1B CRSPOS: LD A,1BH 2773 1265 DF RST 18H 2774 1266 3E 59 LD A,59H 2775 1268 DF RST 18H 2776 1269 7D LD A,L 2777 126A C6 1F ADD A,1FH 2778 126C DF RST 18H 2779 126D 7C LD A,H 2780 126E C6 1F ADD A,1FH 2781 1270 DF RST 18H 2782 1271 C9 RET ;************************************************, ;CHaRacterTeST ; ;IN: A:Zeichen ;OUT: NC/ Z, wenn A=GCH (01H) ; C/NZ, wenn A=2.Grafbyte und A=A-40H ; NC/NZ, sonst ; 2783 1272 E5 CHRTST: PUSH HL 2784 1273 F5 PUSH AF 2785 1274 21 14 FC LD HL,GCHSW 2786 1277 AF XOR A 2787 1278 BE CP (HL) 2788 1279 77 LD (HL),A 2789 127A 28 0D JR Z,CHRT6 2790 127C F1 POP AF 2791 127D D6 40 SUB 40H 2792 127F FE 20 CP 20H 2793 1281 38 04 JR C,CHRT4 2794 1283 C6 40 ADD A,40H 2795 1285 BF CHRT2: CP A 2796 1286 37 SCF 2797 1287 E1 CHRT4: POP HL 2798 1288 C9 RET 2799 1289 F1 CHRT6: POP AF 2800 128A FE 01 CP 01H 2801 128C 20 F7 JR NZ,CHRT2 2802 128E 77 LD (HL),A 2803 128F E1 POP HL 2804 1290 C9 RET ;************************************************ ;INput BC-mal zeichen aus bws in DE ff. ; ; in: hl bwsadresse bc anzahl(max.127) de zielpuffer ; ;------------------------------------------------ 2805 1291 41 INBCDE: LD B,C 2806 1292 0E 98 LD C,PARAP 2807 1294 DB 98 INBC1: IN A,(FLAGR) 2808 1296 E6 04 AND 04H ;FIFO leer ? 2809 1298 28 FA JR Z,INBC1 ;nein 2810 129A 3E 49 LD A,CURS ;ja 2811 129C D3 99 OUT (COMNP),A 2812 129E ED 69 OUT (C),L 2813 12A0 ED 61 OUT (C),H ;Kursor setzen 2814 12A2 3E 4C LD A,FIGS 2815 12A4 D3 99 OUT (COMNP),A 2816 12A6 3E 02 LD A,02H ;Richtung 2 2817 12A8 D3 98 OUT (PARAP),A 2818 12AA ED 41 OUT (C),B 2819 12AC AF XOR A 2820 12AD D3 98 OUT (PARAP),A ;Anzahl an GDC 2821 12AF CB 20 SLA B ;Anzahl*2 2822 12B1 0E 99 LD C,READP 2823 12B3 EB EX DE,HL ;Zieladresse in hl 2824 12B4 DB 98 INBC2: IN A,(FLAGR) 2825 12B6 E6 04 AND 04H ;FIFO leer - bereit fuer Leserichtung ? 2826 12B8 28 FA JR Z,INBC2 ;nein 2827 12BA 3E A0 LD A,RDATWO 2828 12BC D3 99 OUT (COMNP),A 2829 12BE DB 98 INBC3: IN A,(FLAGR) 2830 12C0 E6 01 AND 01H ;Daten bereit ? 2831 12C2 28 FA JR Z,INBC3 ;nein 2832 12C4 ED A2 INI 2833 12C6 20 F6 JR NZ,INBC3 ;weitere Bytes lesen 2834 12C8 C9 RET ;----------------------------------------------- ; OuT BC-mal zeichen an bws aus quellpuffer DE ; ; in: hl bws-adresse bc anzahl(max.127) de quellpuffer ; ;----------------------------------------------- 2835 12C9 DB 98 OTBCDE: IN A,(FLAGR) ;FIFO leer ? 2836 12CB E6 04 AND 04H 2837 12CD 28 FA JR Z,OTBCDE ;nein 2838 12CF 3E 49 LD A,CURS 2839 12D1 D3 99 OUT (COMNP),A 2840 12D3 41 LD B,C 2841 12D4 0E 98 LD C,PARAP 2842 12D6 ED 69 OUT (C),L 2843 12D8 ED 61 OUT (C),H 2844 12DA EB EX DE,HL 2845 12DB CB 20 SLA B ;Anzahl*2 2846 12DD 3E 20 LD A,WDATWO 2847 12DF D3 99 OUT (COMNP),A 2848 12E1 DB 98 OTBC1: IN A,(FLAGR) 2849 12E3 E6 02 AND 02H ;FIFO voll ? 2850 12E5 20 FA JR NZ,OTBC1 ;ja 2851 12E7 ED A3 OUTI 2852 12E9 20 F6 JR NZ,OTBC1 ;weitere Bytes 2853 12EB C9 RET ;--------------------------------- ; OUt BC-mal Zeichen aus ; IN: bc Anzahl (max 127) ; a Zeichen ; hl Adresse VIDEO-RAM 2854 12EC 41 OUTBCA: LD B,C 2855 12ED 4F LD C,A 2856 12EE CD 86 17 CALL CURSS 2857 12F1 CB 20 SLA B 2858 12F3 3E 20 LD A,WDATWO 2859 12F5 CD 8F 1F CALL COMND 2860 12F8 DB 98 OUTBC1: IN A,(FLAGR) 2861 12FA E6 02 AND 02H 2862 12FC 20 FA JR NZ,OUTBC1 2863 12FE 79 LD A,C 2864 12FF D3 98 OUT (PARAP),A 2865 1301 10 F5 DJNZ OUTBC1 2866 1303 C9 RET ;************************************************* ;REad ZEichenMUster ; 2867 1304 4F REZEMU: LD C,A 2868 1305 3E DEFB 3EH ; 3E AF ==> LD A,0AFH 2868a 1305 AF WRZEMU: XOR A 2869 1307 F5 PUSH AF 2870 1308 F3 DI 2871 1309 DB 98 REZEM0: IN A,(FLAGR) 2872 130B E6 20 AND 20H 2873 130D 28 FA JR Z,REZEM0 2874 130F 3A 20 FC LD A,(VIREG1) 2875 1312 F6 01 OR 01H ;ZG-Manipulation ein 2876 1314 D3 9D OUT (VISMOD),A 2877 1316 79 LD A,C 2878 1317 D3 9E OUT (VISADD),A 2879 1319 F1 POP AF 2880 131A B7 OR A 2881 131B 06 08 LD B,08H 2882 131D 20 06 JR NZ,REZEM1 2883 131F 0E 9C LD C,VISDAT 2884 1321 ED B3 OTIR 2885 1323 18 09 JR ZEMU2 2886 1325 11 AA FB REZEM1: LD DE,ZEIPUF 2887 1328 DB 9C REZEM2: IN A,(VISDAT) 2888 132A 12 LD (DE),A 2889 132B 13 INC DE 2890 132C 10 FA DJNZ REZEM2 2891 132E 3A 20 FC ZEMU2: LD A,(VIREG1) 2892 1331 D3 9D OUT (VISMOD),A 2893 1333 FB EI 2894 1334 C9 RET ;************************************************* ;Get CHaracter ADdress ; ; in : HL spalte/zeile ; out: HL bws-adresse de uv ;--------------------------------------------. 2895 1335 25 GCHAD: DEC H 2896 1336 2D DEC L 2897 1337 06 00 LD B,00H 2898 1339 4C LD C,H ;BC Spalte-1 2899 133A C5 PUSH BC 2900 133B 60 LD H,B ;HL Zeile-1 2901 133C 3A 73 F2 LD A,(SCRNRA) 2902 133F 1F RRA 2903 1340 30 01 JR NC,GCHAD1 2904 1342 29 ADD HL,HL 2905 1343 29 GCHAD1: ADD HL,HL 2906 1344 29 ADD HL,HL 2907 1345 29 ADD HL,HL 2908 1346 4D LD C,L 2909 1347 44 LD B,H 2910 1348 29 ADD HL,HL 2911 1349 29 ADD HL,HL 2912 134A 09 ADD HL,BC 2913 134B C1 POP BC 2914 134C 09 ADD HL,BC 2915 134D ED 4B 6E F2 LD BC,(AVRAM) 2916 1351 09 ADD HL,BC 2917 1352 C9 RET ;-------------------------------------------- ; Get Line ATtribut und ADresse ; ; in: l zeile ; out: a attribut de adresse ; ;------------------------------------------- 2918 1353 E5 GLATAD: PUSH HL 2919 1354 11 8D FA LD DE,ZLSTAT-1 2920 1357 26 00 LD H,00H 2921 1359 19 ADD HL,DE 2922 135A 7E LD A,(HL) 2923 135B EB EX DE,HL 2924 135C E1 POP HL 2925 135D A7 AND A 2926 135E C9 RET ;------------------------------------------ 2927 135F 3E SEZL: DEFB 3EH 2927a 135F AF REZL: DEFB 0AFH ;------------------------------------------ 2928 1361 F5 SLIAT: PUSH AF 2929 1362 CD 53 13 CALL GLATAD 2930 1365 F1 POP AF 2931 1366 12 LD (DE),A 2932 1367 C9 RET ;---------------------------- ;ReaD from VideoRaM ;in: hl VRAMAdresse ;out: b Farbcode c=a Zeichencode hl,de uv 2933 1368 D5 RDVRM: PUSH DE 2934 1369 11 71 13 LD DE,RDVRM1 2935 136C D5 PUSH DE 2936 136D E5 PUSH HL 2937 136E C3 29 17 JP CHRAS1 2938 1371 D1 RDVRM1: POP DE 2939 1372 FB EI 2940 1373 C9 RET ;---------------------------- ;WRite To VideoRaM ;in: hl VRAMAdresse b Farbcode c Zeichencode ;out: hl,de uv 2941 1374 4F WRTVRM: LD C,A 2942 1375 D5 WRTVR1: PUSH DE 2943 1376 E5 PUSH HL 2944 1377 CD 97 17 CALL CURSRD 2945 137A E3 EX (SP),HL 2946 137B 11 84 13 LD DE,WRTVR2 ;Ruecksprungadr. kellern 2947 137E D5 PUSH DE 2948 137F E5 PUSH HL 2949 1380 C5 PUSH BC 2950 1381 C3 60 17 JP CHRTS1 2951 1384 E3 WRTVR2: EX (SP),HL 2952 1385 CD 86 17 CALL CURSS 2953 1388 E1 POP HL 2954 1389 D1 POP DE 2955 138A FB EI 2956 138B C9 RET ;---------------------------- ;Einstellung Monitor- oder TV-Modus ; 2957 138C F5 MONTV: PUSH AF ;a=0 von SCP a=0FFh von RBASIC 2958 138D 3A 26 F7 LD A,(SLCTRL) 2959 1390 FE 94 CP 94H ;alter VIS !!!!!!!!!!!!! 2960 1392 06 00 LD B,00H 2961 1394 CA 99 13 JP Z,MONTV4 2962 1397 06 08 LD B,08H 2963 1399 DB 78 MONTV4: IN A,(78H) ;Adressbyte fuer Vernetzung (DSE-typisch) 2964 139B E6 80 AND 80H 2965 139D 28 03 JR Z,MONTV1 2966 139F AF XOR A ;a=0 2967 13A0 18 01 JR MONTV2 ;DSE nicht angschlossen -> TV-Modus 2968 13A2 3C MONTV1: INC A ;a=1 2969 13A3 32 1A FC MONTV2: LD (MONSW),A ;Monitormodus 2970 13A6 F1 POP AF 2971 13A7 A7 AND A 2972 13A8 20 01 JR NZ,MONTV3 ;RBASIC ->SCREEN0/8 2973 13AA 04 INC B ;SCP -> SCREEN1/9 2974 13AB 50 MONTV3: LD D,B 2975 13AC 0E 00 LD C,00H 2976 13AE 59 LD E,C 2977 13AF C3 48 0E JP SELSCR ;---------------------------- ;LAst TeXTModus einstellen 2978 13B2 CD 59 12 LATXTM: CALL TGRASC 2979 13B5 D8 RET C ;bereits Textscreen eingestellt 2980 13B6 ED 4B D7 F2 LD BC,(PATXAK) 2981 13BA ED 5B 70 F2 LD DE,(PAGEVI) 2982 13BE CD F9 FD CALL XLATXM 2983 13C1 C3 48 0E LATXT1: JP SELSCR ;----------------------------- ;KOMmandoSCReen einstellen (letzter textmodus seite 0) 2984 13C4 3A D8 F2 KOMSCR: LD A,(SCRNTX) 2985 13C7 47 LD B,A 2986 13C8 57 LD D,A 2987 13C9 0E 00 LD C,00H 2988 13CB 59 LD E,C 2989 13CC 18 F3 JR LATXT1 ;---------------------------- ;Screen entsprechend Ansprungadr. Seite 0 2990 13CE 3E 00 SSCR0: LD A,0 2991 13D0 01 DEFB 1 2992 13D1 3E 01 SSCR1: LD A,1 2993 13D3 01 DEFB 1 2994 13D4 3E 02 SSCR2: LD A,2 2995 13D6 01 DEFB 1 2996 13D7 3E 03 SSCR3: LD A,3 2997 13D9 01 DEFB 1 2998 13DA 3E 08 SSCR8: LD A,8 2999 13DC 01 DEFB 1 2999a 13DD 3E 09 SSCR9: LD A,9 2999b 13DF 47 LD B,A 2999c 13E0 57 LD D,A 2999d 13E1 0E 00 LD C,00H 2999e 13E3 59 LD E,C 3000 13E4 CD 48 0E CALL SELSCR 3001 13E7 C3 F6 16 JP CLSASC ;************************************************+ ;OUTput A-reg in SCreen ; 3002 13EA F3 OUTASC: DI 3003 13EB E5 PUSH HL 3004 13EC D5 PUSH DE 3005 13ED C5 PUSH BC 3006 13EE F5 PUSH AF 3007 13EF CD FE FD CALL XOUASC ; ------------------------ 3008 13F2 CD 59 12 CALL TGRASC 3009 13F5 30 0C JR NC,POP1 ; ------------------------ 3010 13F7 F1 POP AF 3011 13F8 F5 PUSH AF 3012 13F9 CD 09 14 CALL AOUTIK ; ------------------------ 3013 13FC 3A 68 F2 POP0: LD A,(CRSSP) 3014 13FF 3D DEC A 3015 1400 32 27 F5 LD (CRSSPI),A ;------------------------------- 3016 1403 F1 POP1: POP AF 3017 1404 C1 POP2: POP BC 3018 1405 D1 POP DE 3019 1406 E1 POP HL 3020 1407 FB EI 3021 1408 C9 RET ;************************************************ ;A-reg-OUTput und Inc Kursor ; 3022 1409 CD 72 12 AOUTIK: CALL CHRTST 3023 140C D0 RET NC ;A=GCH-->RET ; ------------------------ 3024 140D 4F LD C,A 3025 140E 20 0D JR NZ,AOUTI5 ;A=2.Grafbyte--> ;------------------------------- 3026 1410 21 15 FC LD HL,ESCSW 3027 1413 7E LD A,(HL) 3028 1414 A7 AND A ;ESC-Folge? 3029 1415 C2 CD 14 JP NZ,ESCFB ;Ja--> ; ------------------------ 3030 1418 79 LD A,C 3031 1419 FE 20 AOUTST: CP 20H ;Steuerzeichen? 3032 141B 38 2F JR C,JPVER ; Ja-->JPVER ; ------------------------ 3033 141D 2A 67 F2 AOUTI5: LD HL,(CRSZL) ;HL=Spalte/Zeile 3034 1420 FE 7F CP 7FH 3035 1422 CA 9F 16 JP Z,DEL ;A=DEL-->DEL ;------------------------------- 3036 1425 3A 91 F2 AOUTI4: LD A,(ACTCOL) 3037 1428 47 LD B,A 3038 1429 CD 72 17 CALL CHRTS0 3040 142F BC CP H 3041 1430 28 05 JR Z,AOUTI6 3042 1432 24 INC H 3043 1433 22 67 F2 LD (CRSZL),HL 3044 1436 C9 RET ;------------------------------- 3045 1437 CD 60 13 AOUTI6: CALL REZL ;ZEILENSTATUS 0 -- FORTSETZUNG 3046 143A 3A 63 F2 LD A,(SPFIRS) 3047 143D 67 LD H,A ;Spalte=1 3048 143E CD A5 15 VLF: CALL KURU 3049 1441 C0 RET NZ ;Kein Bildende-->RET ;------------------------------- 3050 1442 CD AD 15 CALL SAZLSP 3051 1445 3A 65 F2 LD A,(ZLFIRS) 3052 1448 6F LD L,A 3053 1449 C3 EA 15 JP BIHORO ;************************************************ ;JP-VERteiler ; ;IN: A:Byte ;OUT: NC/NZ/M, wenn nicht gefunden ; NC/ Z/P, wenn UP abgearbeitet ; 3054 144C 21 65 14 JPVER: LD HL,VT1-2 ;Tabadr in HL 3055 144F 0E 0E LD C,0EH ;Tablaenge in C ;=============================== 3056 1451 23 JPVER5: INC HL 3057 1452 23 INC HL 3058 1453 A7 AND A 3059 1454 0D DEC C ;Tabende? 3060 1455 F8 RET M ; Ja-->RET ; ------------------------ 3061 1456 BE CP (HL) ;Gefunden? 3062 1457 23 INC HL 3063 1458 20 F7 JR NZ,JPVER5 ; Nein--> ;-------------------------------- 3064 145A 4E LD C,(HL) 3065 145B 23 INC HL 3066 145C 46 LD B,(HL) ;BC=UP-Adr 3067 145D 2A 67 F2 LD HL,(CRSZL) ;HL=Spalte/Zeile 3068 1460 CD 65 14 CALL JPBC 3069 1463 AF XOR A 3070 1464 C9 RET ;------------------------------- 3071 1465 C5 JPBC: PUSH BC 3072 1466 C9 RET ;JP (BC) ;************************************************ 3073 1467 07 VT1: DEFB 07H 3074 1468 C6 0A DEFW BEEP 3075 146A 08 DEFB 08H 3076 146B 85 15 DEFW KULIFS 3077 146D 09 DEFB 09H 3078 146E BD 15 DEFW TAB 3079 1470 0A DEFB 0AH 3080 1471 3E 14 DEFW VLF 3081 1473 0B DEFB 0BH 3082 1474 DD 15 DEFW VHOME 3083 1476 0C DEFB 0CH 3084 1477 FC 16 DEFW CLSTSC 3085 1479 0D DEFB 0DH 3086 147A E1 15 DEFW VCR 3087 147C 1B DEFB 1BH 3088 147D C7 14 DEFW ESC 3089 147F 1C DEFB 1CH 3090 1480 9D 15 DEFW KUREFS 3091 1482 1D DEFB 1DH 3092 1483 85 15 DEFW KULIFS 3093 1485 1E DEFB 1EH 3094 1486 8D 15 DEFW KUHO 3095 1488 1F DEFB 1FH 3096 1489 A5 15 DEFW KURU 3097 148B 17 DEFB 17H 3098 148C CB 15 DEFW STWIND 3099 148E 18 DEFB 18H 3100 148F D0 0F DEFW MONCTR ;************************************************ 3101 1491 6A ESCT: DEFB 6AH 3102 1492 FC 16 DEFW CLSTSC 3103 1494 45 DEFB 45H 3104 1495 FC 16 DEFW CLSTSC 3105 1497 4B DEFB 4BH 3106 1498 B5 16 DEFW CLINFK 3107 149A 4A DEFB 4AH 3108 149B DF 16 DEFW CSCRFK 3109 149D 6C DEFB 6CH 3110 149E B1 16 DEFW CLIN 3111 14A0 4C DEFB 4CH 3112 14A1 43 16 DEFW INSZL 3113 14A3 4D DEFB 4DH 3114 14A4 E7 15 DEFW DELZL 3115 14A6 59 DEFB 59H 3116 14A7 C4 14 DEFW ESCGY 3117 14A9 41 DEFB 41H 3118 14AA 8D 15 DEFW KUHO 3119 14AC 42 DEFB 42H 3120 14AD A5 15 DEFW KURU 3121 14AF 43 DEFB 43H 3122 14B0 7D 15 DEFW KUREFL 3123 14B2 44 DEFB 44H 3124 14B3 95 15 DEFW KULIFL 3125 14B5 48 DEFB 48H 3126 14B6 DD 15 DEFW VHOME 3127 14B8 78 DEFB 78H 3128 14B9 BE 14 DEFW ESCX 3129 14BB 79 DEFB 79H 3130 14BC C1 14 DEFW ESCKY ;************************************************ 3137 14BE 3E 01 ESCX: LD A,01H 3138 14C0 01 DEFB 01H 3139 14C1 3E ESCKY: DEFB 3EH 3140 14C2 02 DEFB 02H 3141 14C3 01 DEFB 01H 3142 14C4 3E ESCGY: DEFB 3EH 3143 14C5 04 DEFB 4 3144 14C6 01 DEFB 1 3145 14C7 3E ESC: DEFB 3EH 3146 14C8 FF DEFB 0FFH 3147 14C9 32 15 FC LD (ESCSW),A 3148 14CC C9 RET ;------------------------------- ;ESCX LD A,1 ; LD BC,23EH ;ESC1 LD BC,43EH ;ESC2 LD BC,0FF3EH ;ESC3 LD (ESCSW),A ; RET ;ESCKY LD A,2 ; JR ESC1 ;ESCGY LD A,4 ; JR ESC2 ;ESC LD A,0FFH ; JR ESC3 ;************************************************ ;ESCapeFolge-Behandlung ; ;IN: HL:ESCSW / C:Zeichen nach ESC /A:Steuerbyte (1,2,3,4,FF) ; 3149 14CD F2 DB 14 ESCFB: JP P,ESCF1 ;ESC x/Y/y-->ESCF1 ; ------------------------ 3150 14D0 36 00 LD (HL),00H 3151 14D2 79 LD A,C 3152 14D3 21 8F 14 LD HL,ESCT-2 3153 14D6 0E 0F LD C,15 3154 14D8 C3 51 14 JP JPVER5 ;------------------------------- 3155 14DB 3D ESCF1: DEC A 3156 14DC 28 27 JR Z,ESCF3 ; ------------------------ 3157 14DE 3D DEC A 3158 14DF 28 2E JR Z,ESCF4 ;------------------------------- 3159 14E1 3D DEC A 3160 14E2 77 LD (HL),A 3161 14E3 3A 64 F2 LD A,(SPLAST) 3162 14E6 11 68 F2 LD DE,CRSSP 3163 14E9 F5 PUSH AF 3164 14EA 28 06 JR Z,ESCF2 ; ------------------------ 3165 14EC 36 03 LD (HL),03H ;ESC Y Zeile 3166 14EE 3A 66 F2 LD A,(ZLLAST) 3167 14F1 1B DEC DE ; ------------------------ 3168 14F2 47 ESCF2: LD B,A ;ESC Y Zeile Spalte 3169 14F3 79 LD A,C 3170 14F4 D6 20 SUB 20H 3171 14F6 B8 CP B 3172 14F7 3C INC A 3173 14F8 12 LD (DE),A 3174 14F9 38 02 JR C,ESCF2A ; ------------------------ 3175 14FB 78 LD A,B 3176 14FC 12 LD (DE),A ;Begrenzung auf Bild 3177 14FD F1 ESCF2A: POP AF 3178 14FE C0 RET NZ 3179 14FF 2A 67 F2 LD HL,(CRSZL) 3180 1502 C3 AD 15 JP SAZLSP ;================================ 3181 1505 77 ESCF3: LD (HL),A 3182 1506 79 LD A,C 3183 1507 D6 34 SUB 34H 3184 1509 28 0B JR Z,ESCF5 ;ESC x 4-->Grosskursor 3185 150B 3D DEC A 3186 150C 28 10 JR Z,ESCF7 ;ESC x 5-->Kursor ein 3187 150E C9 RET 3188 150F 77 ESCF4: LD (HL),A 3189 1510 79 LD A,C 3190 1511 D6 34 SUB 34H 3191 1513 20 06 JR NZ,ESCF6 ;ESC y 5-->Kursor aus 3192 1515 3C INC A ;ESC y 4-->Kleinkursor 3193 1516 32 18 FC ESCF5: LD (CURGK),A 3194 1519 18 06 JR ESCF8 3195 151B 3D ESCF6: DEC A 3196 151C C0 RET NZ 3197 151D 3C INC A 3198 151E 32 17 FC ESCF7: LD (CURSW),A 3199 1521 CD 2F 15 ESCF8: CALL KUSENZ 3200 1524 CD 44 15 CALL KUREZ 3201 1527 C9 RET ;************************************************ ;KUsor SEtzen, wenn cursw=Zero ; 3202 1528 3A 17 FC KUSEZ: LD A,(CURSW) 3203 152B A7 AND A 3204 152C C0 RET NZ 3205 152D 18 05 JR KUSE ;************************************************ ;KUrsor SEtzen, wenn cursw=Not Zero ; 3206 152F 3A 17 FC KUSENZ: LD A,(CURSW) 3207 1532 A7 AND A 3208 1533 C8 RET Z ;------------------------------- 3209 1534 CD 03 FE KUSE: CALL XKUSE 3210 1537 CD 54 12 CALL TGRASV 3211 153A D0 RET NC ;Grafik 3212 153B E5 PUSH HL 3213 153C 21 D4 F2 LD HL,PCHAR 3214 153F 7E LD A,(HL) 3215 1540 F6 80 OR 80H 3216 1542 18 1A JR KURES1 ;************************************************ ;KUrsor REset, wenn cursw=Zero ; 3217 1544 3A 17 FC KUREZ: LD A,(CURSW) 3218 1547 A7 AND A 3219 1548 C0 RET NZ 3220 1549 18 05 JR KURES ;************************************************ ;KUrsor REset, wenn cursw=Not Zero ; 3221 154B 3A 17 FC KURENZ: LD A,(CURSW) 3222 154E A7 AND A 3223 154F C8 RET Z ;------------------------------- 3224 1550 CD 08 FE KURES: CALL XKURES 3225 1553 CD 54 12 CALL TGRASV 3226 1556 D0 RET NC ;Grafik 3227 1557 E5 PUSH HL 3228 1558 21 D4 F2 LD HL,PCHAR 3229 155B 7E LD A,(HL) 3230 155C E6 7F AND 7FH 3231 155E 77 KURES1: LD (HL),A 3232 155F 23 INC HL 3233 1560 3A D6 FF LD A,(CURSO2) 3234 1563 77 LD (HL),A 3235 1564 3A 18 FC LD A,(CURGK) 3236 1567 B7 OR A 3237 1568 28 04 JR Z,KURES3 3238 156A 3A D7 FF LD A,(CURSO3) 3239 156D 77 LD (HL),A 3240 156E 3E 4B KURES3: LD A,CCHAR 3241 1570 CD 8F 1F CALL COMND 3242 1573 06 03 LD B,03H 3243 1575 21 D4 F2 LD HL,PCHAR 3244 1578 CD 9D 1F CALL PARAM0 3245 157B E1 POP HL 3246 157C C9 RET ;************************************************ ;KUrsor REchts For Line ; 3247 157D 3A 64 F2 KUREFL: LD A,(SPLAST) 3248 1580 BC CP H ;Zeilenende? 3249 1581 C8 RET Z ; Ja-->RET 3250 1582 24 INC H ;Spalte+1 3251 1583 18 28 JR SAZLSP ;************************************************ ;KUrsor LInks For Screen ; 3252 1585 CD 95 15 KULIFS: CALL KULIFL 3253 1588 C0 RET NZ ;kein Zeilenanf-->RET 3254 1589 3A 64 F2 LD A,(SPLAST) 3255 158C 67 LD H,A ;Spalte=Zeilenende ;************************************************ ; KUrsor HOch 3256 158D 3A 65 F2 KUHO: LD A,(ZLFIRS) 3257 1590 BD CP L 3258 1591 C8 RET Z ;Bildanf-->RET 3259 1592 2D DEC L 3260 1593 18 18 JR SAZLSP ;************************************************ ;KUrsor LInks For Line 3261 1595 3A 63 F2 KULIFL: LD A,(SPFIRS) ;1.spalte 3262 1598 BC CP H 3263 1599 C8 RET Z ;zeilenanfang 3264 159A 25 DEC H 3265 159B 18 10 JR SAZLSP ;************************************************ ;KUrsor REchts For Screen ; 3266 159D CD 7D 15 KUREFS: CALL KUREFL 3267 15A0 C0 RET NZ ;kein Zeiilende-->RET 3268 15A1 3A 63 F2 LD A,(SPFIRS) 3269 15A4 67 LD H,A ;1.Spalte ;************************************************ ;KUrsor RUnter ; 3270 15A5 3A 66 F2 KURU: LD A,(ZLLAST) 3271 15A8 BD CP L 3272 15A9 C8 RET Z ;letzte Zeile-->RET 3273 15AA 38 0D JR C,KURU1 3274 15AC 2C INC L ;------------------------------- 3275 15AD 22 67 F2 SAZLSP: LD (CRSZL),HL ;SAve ZeiLe/SPalte 3276 15B0 F5 PUSH AF 3277 15B1 CD 35 13 CALL GCHAD 3278 15B4 CD 86 17 CALL CURSS 3279 15B7 F1 POP AF 3280 15B8 C9 RET ;================================================ 3281 15B9 2D KURU1: DEC L 3282 15BA AF XOR A 3283 15BB 18 F0 JR SAZLSP ;************************************************ ;TABulatorbehandlung ; 3284 15BD 3E 20 TAB: LD A,' ' 3285 15BF CD 09 14 CALL AOUTIK 3286 15C2 3A 68 F2 LD A,(CRSSP) 3287 15C5 3D DEC A 3288 15C6 E6 07 AND 07H 3289 15C8 20 F3 JR NZ,TAB 3290 15CA C9 RET ;************************************************ ;Standard-WINDOW setzen ; 3291 15CB 3A 73 F2 STWIND: LD A,(SCRNRA) 3292 15CE 1F RRA 3293 15CF D4 E0 0F CALL NC,SCREU0 3294 15D2 DC E5 0F CALL C,SCREU1 3295 15D5 21 66 F2 LD HL,ZLLAST 3296 15D8 3A 85 F2 LD A,(FKTANZ) 3297 15DB 86 ADD A,(HL) 3298 15DC 77 LD (HL),A ;********************************************** ;kursor an HOME-position ; 3299 15DD 3A 65 F2 VHOME: LD A,(ZLFIRS) 3300 15E0 6F LD L,A ;************************************************ ;CR-behandlung ; 3301 15E1 3A 63 F2 VCR: LD A,(SPFIRS) ;1. spalte 3302 15E4 67 LD H,A 3303 15E5 18 C6 JR SAZLSP ;************************************************ ;DELete ZeiLe (mit Bild nachrollen) ; 3304 15E7 CD E1 15 DELZL: CALL VCR ;************************************************ ;BIld HOch ROllen ; 3305 15EA 3A 66 F2 BIHORO: LD A,(ZLLAST) 3306 15ED 95 SUB L 3307 15EE D8 RET C ;Zeile zu gross-->RET 3308 15EF CA 3B 16 JP Z,BIHOR2 ;Letzte Zeile ;------------------------------- 3309 15F2 F5 PUSH AF 3310 15F3 E5 PUSH HL 3311 15F4 4F LD C,A 3312 15F5 06 00 LD B,00H 3313 15F7 CD 53 13 CALL GLATAD 3314 15FA 6B LD L,E 3315 15FB 62 LD H,D 3316 15FC 23 INC HL 3317 15FD ED B0 LDIR ;Zeilenattribute umsp ; ------------------------ 3318 15FF 50 LD D,B 3319 1600 21 C0 FA LD HL,CUPOVO 3320 1603 35 DEC (HL) 3321 1604 C5 PUSH BC 3322 1605 CD 4B 15 CALL KURENZ 3323 1608 C1 POP BC 3324 1609 E1 POP HL 3325 160A 3A 63 F2 LD A,(SPFIRS) 3326 160D 67 LD H,A 3327 160E 3A 64 F2 LD A,(SPLAST) 3328 1611 94 SUB H 3329 1612 3C INC A 3330 1613 5F LD E,A ;DE zeilenlaenge ;HL zeile/spalte 1.zeichen 3331 1614 CD 35 13 CALL GCHAD ;HL adresse 1.zeichen 3332 1617 C1 POP BC 3333 1618 C5 BIHOR1: PUSH BC 3334 1619 D5 PUSH DE 3335 161A E5 PUSH HL 3336 161B 42 LD B,D 3337 161C 4B LD C,E 3338 161D C5 PUSH BC 3339 161E ED 5B 6A F2 LD DE,(WIDTH) 3340 1622 19 ADD HL,DE 3341 1623 E5 PUSH HL 3342 1624 11 0A FB LD DE,ZEILPU 3343 1627 CD 91 12 CALL INBCDE 3344 162A 11 0A FB LD DE,ZEILPU 3345 162D E1 POP HL 3346 162E C1 POP BC 3347 162F E3 EX (SP),HL 3348 1630 CD C9 12 CALL OTBCDE 3349 1633 E1 POP HL 3350 1634 D1 POP DE 3351 1635 C1 POP BC 3352 1636 10 E0 DJNZ BIHOR1 ; ------------------------ 3353 1638 CD 2F 15 CALL KUSENZ 3354 163B 3A 66 F2 BIHOR2: LD A,(ZLLAST) 3355 163E 6F LD L,A 3356 163F CD B1 16 CALL CLIN ;Letzte Zeile loeschen 3357 1642 C9 RET ;************************************************ ;INSert ZeiLe ; 3358 1643 CD E1 15 INSZL: CALL VCR ;************************************************ 3359 1646 E5 BIRURO: PUSH HL 3360 1647 3A 66 F2 LD A,(ZLLAST) 3361 164A 67 LD H,A 3362 164B 95 SUB L 3363 164C D8 RET C 3364 164D 28 4B JR Z,BIRUR2 3365 164F 6C LD L,H 3366 1650 F5 PUSH AF 3367 1651 E5 PUSH HL ;------------------------. 3368 1652 4F LD C,A 3369 1653 06 00 LD B,00H 3370 1655 CD 53 13 CALL GLATAD 3371 1658 6B LD L,E 3372 1659 62 LD H,D 3373 165A E5 PUSH HL 3374 165B 2B DEC HL 3375 165C ED B8 LDDR ;----------------------- 3376 165E E1 POP HL 3377 165F 74 LD (HL),H 3378 1660 50 LD D,B 3379 1661 C5 PUSH BC 3380 1662 CD 4B 15 CALL KURENZ 3381 1665 C1 POP BC 3382 1666 E1 POP HL 3383 1667 3A 63 F2 LD A,(SPFIRS) 3384 166A 67 LD H,A 3385 166B 3A 64 F2 LD A,(SPLAST) 3386 166E 94 SUB H 3387 166F 3C INC A 3388 1670 5F LD E,A 3389 1671 CD 35 13 CALL GCHAD 3390 1674 C1 POP BC ;----------------------- 3391 1675 C5 BIRUR1: PUSH BC 3392 1676 D5 PUSH DE 3393 1677 E5 PUSH HL 3394 1678 42 LD B,D 3395 1679 4B LD C,E 3396 167A C5 PUSH BC 3397 167B AF XOR A 3398 167C ED 5B 6A F2 LD DE,(WIDTH) 3399 1680 ED 52 SBC HL,DE 3400 1682 E5 PUSH HL 3401 1683 11 0A FB LD DE,ZEILPU 3402 1686 CD 91 12 CALL INBCDE 3403 1689 11 0A FB LD DE,ZEILPU 3404 168C E1 POP HL 3405 168D C1 POP BC 3406 168E E3 EX (SP),HL 3407 168F CD C9 12 CALL OTBCDE 3408 1692 E1 POP HL 3409 1693 D1 POP DE 3410 1694 C1 POP BC 3411 1695 10 DE DJNZ BIRUR1 3412 1697 CD 2F 15 CALL KUSENZ 3413 169A E1 BIRUR2: POP HL 3414 169B CD B1 16 CALL CLIN 3415 169E C9 RET ;************************************************ ;DELete zeichen ; 3416 169F E5 DEL: PUSH HL 3417 16A0 CD 85 15 CALL KULIFS 3418 16A3 E1 POP HL 3419 16A4 C8 RET Z 3420 16A5 0E 20 LD C,' ' 3421 16A7 3A 91 F2 LD A(ACTCOL) 3422 16AA 47 LD B,A 3423 16AB CD 72 17 CALL CHRTS0 3424 16AE C3 85 15 JP KULIFS ;************************************************ ;Clear LINe ; 3425 16B1 3A 63 F2 CLIN: LD A,(SPFIRS) 3426 16B4 67 LD H,A ;-------------------------------- ; in: hl spalte/zeile ;-------------------------------- 3427 16B5 E5 CLINFK: PUSH HL 3428 16B6 CD 5F 13 CALL SEZL 3429 16B9 3A 64 F2 LD A,(SPLAST) 3430 16BC 94 SUB H 3431 16BD 06 00 LD B,00H 3432 16BF 4F LD C,A 3433 16C0 CD B9 1F CALL PFIGS 3434 16C3 CD 35 13 CALL GCHAD 3435 16C6 E5 PUSH HL 3436 16C7 CD 86 17 CALL CURSS 3437 16CA CD 7D 17 CALL WRMOD 3438 16CD 3E 20 LD A,20H ;leerzeichen 3439 16CF D3 98 OUT (PARAP),A 3440 16D1 3A 91 F2 LD A,(ACTCOL) 3441 16D4 CD A7 1F CALL FULL 3442 16D7 D3 98 OUT (PARAP),A 3443 16D9 E1 POP HL 3444 16DA CD 86 17 CALL CURSS 3445 16DD E1 POP HL 3446 16DE C9 RET ;************************************************ ;Clear SCReen From Kursor ; 3447 16DF CD B5 16 CSCRFK: CALL CLINFK ;Loeschen akt. Zeile 3448 16E2 3A 66 F2 LD A,(ZLLAST) 3449 16E5 BD CP L 3450 16E6 D8 RET C 3451 16E7 C8 RET Z ;Bildende-->RET ; ------------------------ 3452 16E8 3A 63 F2 LD A,(SPFIRS) 3453 16EB 67 LD H,A ;1.spalte 3454 16EC 2C INC L ;Zeile+1 3455 16ED 18 F0 JR CSCRFK ;************************************************ 3456 16EF C0 ZCLS: RET NZ 3457 16F0 E5 PUSH HL 3458 16F1 CD F6 16 CALL CLSASC 3459 16F4 E1 POP HL 3460 16F5 C9 RET ;---------------------------------. 3461 16F6 CD 59 12 CLSASC: CALL TGRASC 3462 16F9 D2 78 1A JP NC,GCLS ;Grafik-CLS ;--------------------------------- 3463 16FC CD 4B 15 CLSTSC: CALL KURENZ 3464 16FF 3A 65 F2 LD A,(ZLFIRS) 3465 1702 6F LD L,A 3466 1703 CD B1 16 CLSTS1: CALL CLIN 3467 1706 2C INC L 3468 1707 3A 66 F2 LD A,(ZLLAST) 3469 170A BD CP L 3470 170B 30 F6 JR NC,CLSTS1 3471 170D 3A 91 FF LD A,(BSKENN) 3472 1710 CB 4F BIT 1,A 3473 1712 CC 91 11 CALL Z,VFTINI ;bei SCP nicht 3474 1715 CD DD 15 CALL VHOME 3475 1718 CD 2F 15 CALL KUSENZ 3476 171B 21 8E FA CLSTS3: LD HL,ZLSTAT 3477 171E 06 19 LD B,25 3478 1720 70 CLSTS2: LD (HL),B 3479 1721 23 INC HL 3480 1722 10 FC DJNZ CLSTS2 3481 1724 C9 RET ;------------------------------------------------ ; CHRASC EINGABE ZEICHEN VOM BWS ; ; IN HL SPALTE,ZEILE ; OUT: A=C=ZEICHEN ACTCOL FARBCODE ; B=FARBCODE ; ;-------------------------------- 3482 1725 E5 CHRASC: PUSH HL 3483 1726 CD 35 13 CALL GCHAD 3484 1729 E5 CHRAS1: PUSH HL 3485 172A CD 97 17 CALL CURSRD 3486 172D E3 EX (SP),HL 3487 172E CD 86 17 CALL CURSS 3488 1731 01 01 00 LD BC,1 3489 1734 CD B9 1F CALL PFIGS 3490 1737 CD 4D 17 CALL RDMOD 3491 173A DB 99 IN A,(READP) 3492 173C F5 PUSH AF 3493 173D CD B0 1F CALL READY 3494 1740 DB 99 IN A,(READP) 3495 1742 67 LD H,A 3496 1743 F1 POP AF 3497 1744 6F LD L,A 3498 1745 E3 EX (SP),HL 3499 1746 CD 86 17 CALL CURSS 3500 1749 C1 POP BC 3501 174A 79 LD A,C 3502 174B E1 POP HL 3503 174C C9 RET ;--------------------------------- 3504 174D DB 98 RDMOD: IN A,(FLAGR) 3505 174F E6 04 AND 04H ;FIFO leer ? 3506 1751 28 FA JR Z,RDMOD 3507 1753 3E A0 LD A,RDATWO 3508 1755 D3 99 OUT (COMNP),A 3509 1757 CD B0 1F CALL READY 3510 175A C9 RET ;-------------------------------------------- ; CHRTSC AUSGABE ZEICHEN IN BWS ; ; IN: C ZEICHEN HL SPALTE,ZEILE ; B FARBCODE ;------------------------------------------------ 3511 175B E5 CHRTSC: PUSH HL 3512 175C C5 PUSH BC 3513 175D CD 35 13 CALL GCHAD 3514 1760 DB 98 CHRTS1: IN A,(FLAGR) ;FIFO leer ? 3515 1762 E6 04 AND 04H 3516 1764 28 FA JR Z,CHRTS1 ;nein 3517 1766 3E 49 LD A,CURS ;ja ... Kursor setzen 3518 1768 D3 99 OUT (COMNP),A 3519 176A 7D LD A,L 3520 176B D3 98 OUT (PARAP),A 3521 176D 7C LD A,H 3522 176E D3 98 OUT (PARAP),A 3523 1770 C1 POP BC 3524 1771 E1 POP HL 3525 1772 3E 20 CHRTS0: LD A,WDATWO 3526 1774 D3 99 OUT (COMNP),A 3527 1776 79 LD A,C 3528 1777 D3 98 OUT (PARAP),A ;AUSGABE ZEICHENCODE 3529 1779 78 LD A,B 3530 177A D3 98 OUT (PARAP),A ;AUSGABE FARBCODE 3531 177C C9 RET ;------------------------------------------------ ; WRMOD VORBEREITUNG WORTAUSGABE AN GDC ; 3532 177D 3E 20 WRMOD: LD A,WDATWO 3533 177F CD 8F 1F CALL COMND 3534 1782 CD A7 1F CALL FULL 3535 1785 C9 RET ;------------------------------------------------ ; kursor setzen ; ; in: hl kusoradresse ; out: bc,de,hl uv ;------------------------------------------------ 3536 1786 DB 98 CURSS: IN A,(FLAGR) ;FIFO leer ? 3537 1788 E6 04 AND 04H 3538 178A 28 FA JR Z,CURSS ;nein 3539 178C 3E 49 LD A,CURS 3540 178E D3 99 OUT (COMNP),A 3541 1790 7D LD A,L 3542 1791 D3 98 OUT (PARAP),A 3543 1793 7C LD A,H 3544 1794 D3 98 OUT (PARAP),A 3545 1796 C9 RET ;----------------------------------------------- ; kursuradresse lesen ; ; out: hl kursoradresse ; ;---------------------------------------------- 3546 1797 DB 98 CURSRD: IN A,(FLAGR) 3547 1799 E6 04 AND 04H 3548 179B 28 FA JR Z,CURSRD 3549 179D 3E E0 LD A,CURD 3550 179F D3 99 OUT (COMNP),A 3551 17A1 DB 98 CURSR1: IN A,(FLAGR) ;Daten im FIFO ? 3552 17A3 E6 01 AND 01H 3553 17A5 28 FA JR Z,CURSR1 ;nein 3554 17A7 DB 99 IN A,(READP) 3555 17A9 6F LD L,A 3556 17AA DB 98 CURSR2: IN A,(FLAGR) ;Daten im FIFO ? 3557 17AC E6 01 AND 01H 3558 17AE 28 FA JR Z,CURSR2 ;nein 3559 17B0 DB 99 IN A,(READP) 3560 17B2 67 LD H,A 3561 17B3 DB 98 CURSR3: IN A,(FLAGR) ;Daten im FIFO ? 3562 17B5 E6 01 AND 01 3563 17B7 28 FA JR ZH,CURSR3 ;nein 3564 17B9 DB 99 IN A,(READP) ;3.Byte wegwerfen 3565 17BB DB 98 CURSR4: IN A,(FLAGR) ;Daten im FIFO ? 3566 17BD E6 01 AND 01H 3567 17BF 28 FA JR Z,CURSR4 ;nein 3568 17C1 DB 99 IN A,(READP) ;4.Byte wegwerfen 3569 17C3 DB 98 CURSR5: IN A,(FLAGR) ;Daten im FIFO ? 3570 17C5 E6 01 AND 01H 3571 17C7 28 FA JR Z,CURSR5 ;nein 3572 17C9 DB 99 IN A,(READP) ;5.Byte wegwerfen 3573 17CB C9 RET ;**************************************************** ; Grafikroutinen ; ; 3574 17CC E5 TXTGSC: PUSH HL 3575 17CD D5 PUSH DE 3576 17CE C5 PUSH BC 3577 17CF F5 PUSH AF 3578 17D0 CD 72 12 CALL CHRTST 3579 17D3 30 58 JR NC,TXTG75 3580 17D5 20 08 JR NZ,TXTG10 3581 17D7 FE 0D CP 0DH 3582 17D9 28 55 JR Z,TXTG80 3583 17DB FE 20 CP 20H 3584 17DD 38 4E JR C,TXTG75 ;=============================== 3585 17DF CD 04 13 TXTG10: CALL REZEMU 3586 17E2 2A 2F FC LD HL,(YALT) 3587 17E5 EB EX DE,HL 3588 17E6 ED 4B 2D FC LD BC,(XALT) 3589 17EA CD 54 18 CALL TPPOS 3590 17ED 30 3E JR NC,TXTG75 3591 17EF CD 8F 18 CALL MKPMA 3592 17F2 11 B1 FB LD DE,ZEIPUF+7 3593 17F5 0E 08 LD C,08H 3594 17F7 06 08 TXTG20: LD B,8 3595 17F9 CD E8 18 CALL LDPMA 3596 17FC E5 PUSH HL 3597 17FD F5 PUSH AF 3598 17FE 1A LD A,(DE) 3599 17FF 0F TXTG30: RRCA 3600 1800 F5 PUSH AF 3601 1801 DC 98 19 CALL C,SPOINT 3602 1804 CD A4 19 CALL APRGT 3603 1807 E1 POP HL 3604 1808 38 04 JR C,TXTG40 3605 180A E5 PUSH HL 3606 180B F1 POP AF 3607 180C 10 F1 DJNZ TXTG30 3608 180E F1 TXTG40: POP AF 3609 180F E1 POP HL 3610 1810 CD EF 18 CALL STPMA 3611 1813 CD 55 1A CALL APDWN 3612 1816 38 04 JR C,TXTG50 3613 1818 1B DEC DE 3614 1819 0D DEC C 3615 181A 20 DB JR NZ,TXTG20 3616 181C 2A 2D FC TXTG50: LD HL,(XALT) 3617 181F 11 08 00 LD DE,0008H 3618 1822 19 ADD HL,DE 3619 1823 ED 5B 7E F2 LD DE,(PVIEW2) 3620 1827 E7 RST 20H 3621 1828 30 06 JR NC,TXTG80 3622 182A 22 2D FC LD (XALT),HL 3623 182D C3 03 14 TXTG75: JP POP1 ;------------------------------- 3624 1830 AF TXTG80: XOR A ;CY=0 3625 1831 2A 7C F2 LD H L,(PVIEW1) 3626 1834 22 2D FC LD (XALT),HL 3627 1837 2A 2F FC LD HL,(YALT) 3628 183A 11 08 00 LD DE,0008H 3629 183D ED 52 SBC HL,DE 3630 183F ED 5B 80 F2 LD DE,(PVIEW3) 3631 1843 E7 RST 20H 3632 1844 ED 5B 82 F2 LD DE,(PVIEW4) 3633 1848 38 03 JR C,TXTG85 3634 184A E7 RST 20H 3635 184B 38 02 JR C,TXTG90 3636 184D EB TXTG85: EX DE,HL 3637 184E 2B DEC HL 3638 184F 22 2F FC TXTG90: LD (YALT),HL 3639 1852 18 D9 JR TXTG75 ;**************************************************** ;Test PunktPOSition ; ;IN: DE=log. Zeile / BC=log. Spalte ;OUT: ; 3640 1854 E5 TPPOS: PUSH HL 3641 1855 C5 PUSH BC 3642 1856 06 01 LD B,01H 3643 1858 EB EX DE,HL 3644 1859 7C LD A,H 3645 185A 87 ADD A,A 3646 185B 30 05 JR NC,TPPOS1 3647 185D 21 00 00 LD HL,0000H 3648 1860 18 09 JR TPOS2 3649 1862 ED 5B 82 F2 TPPOS1: LD DE,(PVIEW4) ;Standard 200 3649 1862 ED 5B 82 F2 L0493: LD DE,(0F282H) 3650 1866 E7 RST 20H 3651 1867 38 04 JR C,TPPOS3 3652 1869 EB EX DE,HL 3653 186A 2B DEC HL 3654 186B 06 00 TPOS2: LD B,00H 3655 186D E3 TPPOS3: EX (SP),HL 3656 186E 7C LD A,H 3657 186F 87 ADD A,A 3658 1870 30 05 JR NC,TPPOS4 3659 1872 21 00 00 LD HL,0000H 3660 1875 18 09 JR TPPOS5 3661 1877 ED 5B 7E F2 TPPOS4: LD DE,(PVIEW2) ;Standard 320 3662 187B E7 RST 20H 3663 187C 38 04 JR C,TPPOS6 3664 187E EB EX DE,HL 3665 187F 2B DEC HL 3666 1880 06 00 TPPOS5: LD B,00H 3667 1882 D1 TPPOS6: POP DE 3668 1883 78 LD A,B 3669 1884 0F RRCA 3670 1885 44 LD B,H 3671 1886 4D LD C,L 3672 1887 E1 POP HL 3673 1888 C9 RET ;**************************************************** ;Test SCreen 2 oder 3 ; ;OUT: Z = Screen 2 ; NZ = 3 ; 3674 1889 3A 73 F2 TSC23: LD A,(SCRNRA) 3675 188C D6 02 SUB 02H 3676 188E C9 ;**************************************************** ;MaKe PunktMaske und punktAdresse ; ;IN: BC=X-Koordinate / DE=Y-Koordinate ; 3677 188F C5 MKPMA: PUSH BC 3678 1890 AF XOR A 3679 1891 21 C7 00 LD HL,199 3680 1894 ED 52 SBC HL,DE 3681 1896 EB EX DE,HL 3682 1897 3A 73 F2 LD A,(SCRNRA) 3683 189A FE 05 CP 05H 3684 189C 79 LD A,C 3685 189D 28 0D JR Z,MKPMA2 3686 189F 21 DC 18 LD HL,MKPMAT 3687 18A2 E6 07 AND 07H 3688 18A4 C1 POP BC 3689 18A5 CB 38 SRL B 3690 18A7 CB 19 RR C 3691 18A9 C5 PUSH BC 3692 18AA 18 05 JR MKPMA3 3693 18AC 21 E4 18 MKPMA2: LD HL,MKPMT5 3694 18AF E6 03 AND 03H 3695 18B1 4F MKPMA3: LD C,A 3696 18B2 06 00 LD B,00H 3697 18B4 09 ADD HL,BC 3698 18B5 7E LD A,(HL) 3699 18B6 32 F3 F7 LD (POIMA),A ;--------------------------- 3700 18B9 EB EX DE,HL 3701 18BA 3A 73 F2 LD A,(SCRNRA) 3702 18BD 0F RRCA 3703 18BE 30 01 JR NC,MKPMA1 3704 18C0 29 ADD HL,HL 3705 18C1 29 MKPMA1: ADD HL,HL 3706 18C2 29 ADD HL,HL 3707 18C3 29 ADD HL,HL 3708 18C4 54 LD D,H 3709 18C5 5D LD E,L 3710 18C6 29 ADD HL,HL 3711 18C7 29 ADD HL,HL 3712 18C8 19 ADD HL,DE 3713 18C9 C1 POP BC 3714 18CA CB 38 SRL B 3715 18CC CB 19 RR C 3716 18CE CB 38 SRL B 3717 18D0 CB 19 RR C 3718 18D2 09 ADD HL,BC 3719 18D3 ED 4B 6E F2 LD BC,(AVRAM) 3720 18D7 09 ADD HL,BC 3721 18D8 22 F1 F7 LD (POIADR),HL 3722 18DB C9 RET ;=============================== 3723 18DC 01 MKPMAT: DEFB 1 3724 18DD 02 DEFB 2 3724a 18DE 04 DEFB 4 3724b 18DF 08 DEFB 8 3724c 18E0 10 DEFB 10H 3725 18E1 20 DEFB 20H 3726 18E2 40 DEFB 40H 3727 18E3 80 DEFB 80H ;------------------------------- 3728 18E4 11 MKPMT5: DEFB 11H 3728a 18E5 22 DEFB 22H 3728b 18E6 44 DEFB 44H 3729 18E7 88 DEFB 88H ;**************************************************** ;LoaD PunktMAske und punktAdresse ; 3730 18E8 3A F3 F7 LDPMA: LD A,(POIMA) 3731 18EB 2A F1 F7 LD HL,(POIADR) 3732 18EE C9 RET ;**************************************************** ;STore PunktMAske und punktAdresse ; 3733 18EF 32 F3 F7 STPMA: LD (POIMA),A 3734 18F2 22 F1 F7 LD (POIADR),HL 3735 18F5 C9 RET ;**************************************************** ;Get POINT ; 3736 18F6 C5 GPOINT: PUSH BC 3737 18F7 D5 PUSH DE 3738 18F8 E5 PUSH HL 3739 18F9 CD E8 18 CALL LDPMA 3740 18FC F5 PUSH AF 3741 18FD CD 68 13 CALL RDVRM 3742 1900 3A 73 F2 LD A,(SCRNRA) 3743 1903 FE 05 CP 05H 3744 1905 28 11 JR Z,GPOIN3 3745 1907 F1 POP AF ;Screen2,3 3746 1908 F5 PUSH AF 3747 1909 A1 AND C 3748 190A 28 02 JR Z,GPOIN1 3749 190C 3E 01 LD A,01H 3750 190E 4F GPOIN1: LD C,A 3751 190F F1 POP AF 3752 1910 A0 AND B 3753 1911 28 02 JR Z,GPOIN2 3754 1913 3E 02 LD A,02H 3755 1915 B1 GPOIN2: OR C 3756 1916 18 2B JR GPOIN8 ;------------------------ 3757 1918 F1 GPOIN3: POP AF ;Screen5 3758 1919 F5 PUSH AF ;a: Punktmaske 3759 191A 1E 00 LD E,00H 3760 191C A1 AND C 3761 191D 28 0D JR Z,GPOIN5 ; im Lowbyte kein Farbanteil 3762 191F 4F LD C,A 3763 1920 E6 F0 AND 0F0H ; Test 1. Halbbyte 3764 1922 28 07 JR Z,GPOIN4 ; Kein Farbanteil 3765 1924 1C INC E 3766 1925 1C INC E ; Farbe +2 3767 1926 79 LD A,C 3768 1927 E6 0F AND 0FH ; Test 2. Halbbyte 3769 1929 28 01 JR Z,GPOIN5 ; kein Farbanteil 3770 192B 1C GPOIN4: INC E ; Farbe +1 3771 192C F1 GPOIN5: POP AF ; a: Punktmaske 3772 192D A0 AND B 3773 192E 28 12 JR Z,GPOIN7 ; im Highbyte kein Farbanteil 3774 1930 47 LD B,A 3775 1931 E6 F0 AND 0F0H ; Test 1.Halbbyte 3776 1933 28 09 JR Z,GPOIN6 ; kein Farb anteil 3777 1935 3E 08 LD A,08H 3778 1937 83 ADD A,E 3779 1938 5F LD E,A ; Farbe +8 3780 1939 78 LD A,B 3781 193A E6 0F AND 0FH ; Test 2.Halbyte 3782 193C 28 04 JR Z,GPOIN7 ; kein Farbanteil 3783 193E 3E 04 GPOIN6: LD A,04H 3784 1940 83 ADD A,E 3785 1941 5F LD E,A ;Farbe +4 3786 1942 7B GPOIN7: LD A,E 3787 1943 E1 GPOIN8: POP HL 3788 1944 D1 POP DE 3789 1945 C1 POP BC 3790 1946 C9 RET ;**************************************************** ;STore Akt INK ; 3791 1947 32 87 F2 STAINK: LD (ACTINK),A 3792 194A E5 STAIN3: PUSH HL 3793 194B 21 7A F2 LD HL,PALCOL 3794 194E F5 STAIN0: PUSH AF 3795 194F 3A 73 F2 LD A,(SCRNRA) 3796 1952 FE 05 CP 05H 3797 1954 28 1F JR Z,STAIN5 ;-------------------------- 3798 1956 F1 POP AF ;a: Farbe 3799 1957 FE 04 CP 04H ;fuer Screen2,3 testen 3800 1959 30 27 JR NC,STAIN6 ;>3 falsch 3801 195B C5 PUSH BC 3802 195C 01 00 00 LD BC,0000H 3803 195F B7 OR A 3804 1960 28 08 JR Z,STAIN1 ;Farbe 0 (Hintergrund) 3805 1962 05 DEC B ;b=FF 3806 1963 FE 02 CP 02H 3807 1965 28 03 JR Z,STAIN1 ;Farbe 2 3808 1967 38 07 JR C,STAIN2 ;Farbe 1 3809 1969 48 LD C,B ;Farbe 3 3810 196A 71 STAIN1: LD (HL),C 3811 196B 23 INC HL 3812 196C 70 LD (HL),B 3813 196D C1 POP BC 3814 196E E1 POP HL 3815 196F C9 RET 3816 1970 04 STAIN2: INC B ;b=0 3817 1971 0D DEC C ;c=FF 3818 1972 3F CCF 3819 1973 18 F5 JR STAIN1 ;--------------------------------- 3820 1975 F1 STAIN5: POP AF 3821 1976 FE 10 CP 16 ;Screen5 3822 1978 30 08 JR NC,STAIN6 3823 197A CD 85 19 CALL STAIN7 3824 197D 23 INC HL ;Highbyte der Farbkodierung 3825 197E CD 85 19 CALL STAIN7 3826 1981 37 SCF 3827 1982 3F STAIN6: CCF 3828 1983 E1 POP HL 3829 1984 C9 RET ;-------------------------------UP zur Farbauswertung 3830 1985 1F STAIN7: RRA ; Bit 0 blau oder Bit 2 rot 3831 1986 36 00 LD (HL),00H 3832 1988 30 02 JR NC,STAIN8 ;nicht gesetzt 3833 198A 36 0F LD (HL),0FH 3834 198C 1F STAIN8: RRA ; Bit 1 gruen oder Bit 3 hell 3835 198D F5 PUSH AF 3836 198E 3E 00 LD A,00H 3837 1990 30 02 JR NC,STAIN9 ;nicht gesetzt 3838 1992 3E F0 LD A,0F0H 3839 1994 B6 STAIN9: OR (HL) 3840 1995 77 LD (HL),A 3841 1996 F1 POP AF 3842 1997 C9 RET ;**************************************************** ;Set POINT ; 3843 1998 E5 SPOINT: PUSH HL 3844 1999 3A F3 F7 LD A,(POIMA) 3845 199C 2A F1 F7 LD HL,(POIADR) 3846 199F CD 9F 1B CALL SPINA 3847 19A2 E1 POP HL 3848 19A3 C9 RET ;**************************************************** 3849 19A4 E5 APRGT: PUSH HL 3850 19A5 D5 PUSH DE 3851 19A6 CD E8 18 CALL LDPMA 3852 19A9 07 RLCA 3853 19AA 30 6D JR NC,APLFT3 3854 19AC 3A 73 F2 LD A,(SCRNRA) 3855 19AF FE 05 CP 05H 3856 19B1 1E 11 LD E,11H 3857 19B3 28 02 JR Z,APRGT3 3858 19B5 1E 01 LD E,01H 3859 19B7 23 APRGT3: INC HL 3860 19B8 7D LD A,L 3861 19B9 E6 07 AND 07H 3862 19BB 7B LD A,E 3863 19BC 20 58 JR NZ,APLFT2 3864 19BE E5 PUSH HL 3865 19BF ED 5B 6E F2 LD DE,(AVRAM) 3865 19BF ED 5B 6E F2 LD DE,(0F26EH) 3866 19C3 ED 52 SBC HL,DE 3867 19C5 ED 5B 6A F2 LD DE,(WIDTH) 3868 19C9 ED 52 APRGT2: SBC HL,DE 3869 19CB 28 53 JR Z,APUP1 3870 19CD 30 FA JR NC,APRGT2 3871 19CF E1 POP HL 3872 19D0 18 44 JR APLFT2 ;**************************************************** 3873 19D2 E5 APRGT1: PUSH HL 3874 19D3 D5 PUSH DE 3875 19D4 CD E8 18 CALL LDPMA 3876 19D7 07 RLCA 3877 19D8 30 3F JR NC,APLFT3 3878 19DA 23 INC HL 3879 19DB 18 39 JR APLFT2 ;**************************************************** 3880 19DD E5 APLFT: PUSH HL 3881 19DE D5 PUSH DE 3882 19DF CD E8 18 CALL LDPMA 3883 19E2 0F RRCA 3884 19E3 30 34 JR NC,APLFT3 3885 19E5 3A 73 F2 LD A,(SCRNRA) 3886 19E8 FE 05 CP 05H 3887 19EA 1E 88 LD E,88H 3888 19EC 28 02 JR Z,APLFT6 3889 19EE 1E 80 LD E,80H 3890 19F0 7D APLFT6: LD A,L 3891 19F1 E6 07 AND 07H 3892 19F3 7B LD A,E 3893 19F4 20 14 JR NZ,APLFT5 3894 19F6 E5 PUSH HL 3895 19F7 ED 5B 6E F2 LD DE,(AVRAM) 3896 19FB ED 52 SBC HL,DE 3897 19FD 28 21 JR Z,APUP1 3898 19FF ED 5B 6A F2 LD DE,(WIDTH) 3899 1A03 ED 52 APLFT4: SBC HL,DE 3900 1A05 28 19 JR Z,APUP1 3901 1A07 30 FA JR NC,APLFT4 3902 1A09 E1 POP HL 3903 1A0A 2B APLFT5: DEC HL 3904 1A0B 18 09 JR APLFT2 ;**************************************************** 3905 1A0D E5 APLFT1: PUSH HL 3906 1A0E D5 PUSH DE 3907 1A0F CD E8 18 CALL LDPMA 3908 1A12 0F RRCA 3909 1A13 30 04 JR NC,APLFT3 3910 1A15 2B DEC HL 3911 1A16 22 F1 F7 APLFT2: LD (POIADR),HL 3912 1A19 32 F3 F7 APLFT3: LD (POIMA),A 3913 1A1C A7 AND A 3914 1A1D D1 POP DE 3915 1A1E E1 POP HL 3916 1A1F C9 RET ;**************************************************** 3917 1A20 E1 APUP1: POP HL 3918 1A21 37 SCF 3919 1A22 18 22 JR APUP4 ;**************************************************** 3920 1A24 E5 APUP: PUSH HL 3921 1A25 D5 PUSH DE 3922 1A26 CD 89 18 CALL TSC23 3923 1A29 11 40 1F LD DE,8000 3924 1A2C 28 03 JR Z,APUP2 3925 1A2E 11 80 3E LD DE,16000 3926 1A31 2A 6E F2 APUP2: LD HL,(AVRAM) 3927 1A34 19 ADD HL,DE 3928 1A35 E5 PUSH HL 3929 1A36 2A F1 F7 LD HL,(POIADR) 3930 1A39 ED 5B 6A F2 LD DE,(WIDTH) 3931 1A3D 19 ADD HL,DE 3932 1A3E D1 POP DE 3933 1A3F E7 RST 20H 3934 1A40 3F CCF 3935 1A41 38 03 JR C,APUP4 3936 1A43 22 F1 F7 APUP3: LD (POIADR),HL 3937 1A46 D1 APUP4: POP DE 3938 1A47 E1 POP HL 3939 1A48 C9 RET ;**************************************************** 3940 1A49 E5 APUP10: PUSH HL 3941 1A4A D5 PUSH DE 3942 1A4B 2A F1 F7 LD HL,(POIADR) 3943 1A4E ED 5B 6A F2 LD DE,(WIDTH) 3944 1A52 19 ADD HL,DE 3945 1A53 18 EE JR APUP3 ;**************************************************** 3946 1A55 E5 APDWN: PUSH HL 3947 1A56 D5 PUSH DE 3948 1A57 2A F1 F7 LD HL,(POIADR) 3949 1A5A ED 5B 6A F2 LD DE,(WIDTH) 3950 1A5E AF XOR A 3951 1A5F ED 52 SBC HL,DE 3952 1A61 ED 5B 6E F2 LD DE,(AVRAM) 3953 1A65 E7 RST 20H 3954 1A66 38 DE JR C,APUP4 3955 1A68 18 D9 JR APUP3 ;**************************************************** 3956 1A6A E5 APDWN1: PUSH HL 3957 1A6B D5 PUSH DE 3958 1A6C 2A F1 F7 LD HL,(POIADR) 3959 1A6F ED 5B 6A F2 LD DE,(WIDTH) 3960 1A73 AF XOR A 3961 1A74 ED 52 SBC HL,DE 3962 1A76 18 CB JR APUP3 ;**************************************************** 3963 1A78 2A 6E F2 GCLS: LD HL,(AVRAM) 3964 1A7B E5 PUSH HL 3965 1A7C CD 86 17 CALL CURSS 3966 1A7F CD 20 10 CALL REMASK 3967 1A82 01 40 1F LD BC,1F40H 3968 1A85 3A 73 F2 LD A,(SCRNRA) 3969 1A88 F5 PUSH AF 3970 1A89 0F RRCA 3971 1A8A 30 03 JR NC,GCLS1 3972 1A8C 01 40 3F LD BC,3F40H 3973 1A8F CD B9 1F GCLS1: CALL PFIGS 3974 1A92 CD 7D 17 CALL WRMOD 3975 1A95 F1 POP AF 3976 1A96 FE 05 CP 05H 3977 1A98 28 15 JR Z,GCLS3 3978 1A9A AF XOR A 3979 1A9B D3 98 OUT (PARAP),a 3980 1A9D CD A7 1F CALL FULL 3981 1AA0 D3 98 OUT (PARAP),a 3982 1AA2 E1 GCLS4: POP HL 3983 1AA3 CD A8 10 CALL REGRKU ;------------------------- 3984 1AA6 21 64 19 LD HL,6500 ;Warteschleife fuer GDC 3985 1AA9 2B GCLS2: EC HL 3986 1AAA 7C LD A,H 3987 1AAB B5 OR L 3988 1AAC 20 FB JR NZ,GCLS2 3989 1AAE C9 RET ;-------------------------- 3990 1AAF 3A 89 F2 GCLS3: LD A,(PAPER) 3991 1AB2 CD 4A 19 CALL STAIN3 3992 1AB5 3A 7A F2 LD A,(PALCOL) 3993 1AB8 D3 98 OUT (PARAP),A 3994 1ABA CD A7 1F CALL FULL 3995 1ABD 3A 7B F2 LD A,(PALCOL+1) 3996 1AC0 D3 98 OUT (PARAP),A 3997 1AC2 18 DE JR GCLS4 ;***************************************************** ;FILL ; 3998 1AC4 DB 98 FILLUP: IN A,(FLAGR) ;neue Version 3999 1AC6 E6 04 AND 04H ;FIFO leer ? 4000 1AC8 28 FA JR Z,FILLUP 4001 1ACA 3E 49 LD A,CURS 4002 1ACC D3 99 OUT (COMNP),A 4003 1ACE 7D LD A,L 4004 1ACF D3 98 OUT (PARAP),A 4005 1AD1 7C LD A,H 4006 1AD2 D3 98 OUT (PARAP),A ;Kursor setzen 4007 1AD4 3E 4A LD A,MASK 4008 1AD6 D3 99 OUT (COMNP),A 4009 1AD8 3E FF LD A,0FFH 4010 1ADA D3 98 OUT (PARAP),A 4011 1ADC D3 98 OUT (PARAP),A ;Maske auf FFFF 4012 1ADE 09 ADD HL,BC 4013 1ADF 0B DEC BC 4014 1AE0 3E 4C LD A,FIGS 4015 1AE2 D3 99 OUT (COMNP),A 4016 1AE4 3E 02 LD A,02H 4017 1AE6 D3 98 OUT (PARAP),A ;Richtung 2 4018 1AE8 79 LD A,C 4019 1AE9 D3 98 OUT (PARAP),A 4020 1AEB 78 LD A,B 4021 1AEC D3 98 OUT (PARAP),a ;Anzahl bc 4022 1AEE C3 B9 1B JP SPINA2 ;--------------------------- 4023 1AF1 3A 73 F2 FILL: LD A,(SCRNRA) 4024 1AF4 FE 05 CP 05H 4025 1AF6 20 5A JR NZ,FILL0 4026 1AF8 E5 FILS5: PUSH HL 4027 1AF9 CD E8 18 CALL LDPMA 4028 1AFC E3 EX (SP),HL 4029 1AFD 0F RRCA 4030 1AFE 38 1C JR C,FILS52 4031 1B00 07 RLCA 4032 1B01 01 FF FF LD BC,-1 4033 1B04 F5 PUSH AF 4034 1B05 09 FILS51: ADD HL,BC 4035 1B06 30 37 JR NC,FILS55 4036 1B08 07 RLCA 4037 1B09 30 FA JR NC,FILS51 4038 1B0B F1 POP AF 4039 1B0C E6 0F AND 0FH 4040 1B0E 3D DEC A 4041 1B0F 2F CPL 4042 1B10 5F LD E,A 4043 1B11 07 RLCA 4044 1B12 07 RLCA 4045 1B13 07 RLCA 4046 1B14 07 RLCA 4047 1B15 A3 AND E 4048 1B16 E3 EX (SP),HL 4049 1B17 CD 9F 1B CALL SPINA 4050 1B1A 23 INC HL 4051 1B1B E3 EX (SP),HL 4052 1B1C 7D FILS52: LD A,L 4053 1B1D E6 03 AND 03H 4054 1B1F 5F LD E,A 4055 1B20 7D LD A,L 4056 1B21 CB 0C RRC H 4057 1B23 1F RRA 4058 1B24 CB 0C RRC H 4059 1B26 1F RRA 4060 1B27 B7 OR A 4061 1B28 E1 POP HL 4062 1B29 4F LD C,A 4063 1B2A 06 00 LD B,00H 4064 1B2C 50 LD D,B 4065 1B2D 28 03 JR Z,FILS54 4066 1B2F CD C4 1A CALL FILLUP 4067 1B32 1D FILS54: DEC E 4068 1B33 F8 RET M 4069 1B34 E5 PUSH HL 4070 1B35 21 3C 1B LD HL,FILTS5 4071 1B38 19 ADD HL,DE 4072 1B39 7E LD A,(HL) 4073 1B3A 18 62 JR FILL6 ;=============================== 4074 1B3C 11 FILTS5: DEFB 11H 4074a 1B3D 33 DEFB 33H 4074b 1B3E 77 DEFB 77H ;=============================== 4075 1B3F E6 F0 FILS55: AND 0F0H 4076 1B41 3D DEC A 4077 1B42 47 LD B,A 4078 1B43 F1 POP AF 4079 1B44 E6 F0 AND 0F0H 4080 1B46 3D DEC A 4081 1B47 2F CPL 4082 1B48 A0 AND B 4083 1B49 F5 PUSH AF 4084 1B4A 07 RLCA 4085 1B4B 07 RLCA 4086 1B4C 07 RLCA 4087 1B4D 07 RLCA 4088 1B4E C1 POP BC 4089 1B4F B0 OR B 4090 1B50 18 4C JR FILL6 ;-------------------------------- 4091 1B52 E5 FILL0: PUSH H L 4092 1B53 CD E8 18 CALL LDPMA 4093 1B56 E3 EX (SP),HL 4094 1B57 0F RRCA 4095 1B58 38 14 JR C,FILL2 4096 1B5A 07 RLCA 4097 1B5B 01 FF FF LD BC,-1 4098 1B5E F5 PUSH AF 4099 1B5F 09 FILL1: ADD HL,BC 4100 1B60 30 36 JR NC,FILL5 4101 1B62 07 RLCA 4102 1B63 30 FA JR NC,FILL1 4103 1B65 F1 POP AF 4104 1B66 3D DEC A 4105 1B67 2F CPL 4106 1B68 E3 EX (SP),HL 4107 1B69 CD 9F 1B CALL SPINA 4108 1B6C 23 INC HL 4109 1B6D E3 EX (SP),HL 4110 1B6E 7D FILL2: LD A,L 4111 1B6F E6 07 AND 07H 4112 1B71 5F LD E,A 4113 1B72 7D LD A,L 4114 1B73 CB 0C RRC H 4115 1B75 1F RRA 4116 1B76 CB 0C RRC H 4117 1B78 1F RRA 4118 1B79 CB 0C RRC H 4119 1B7B 1F RRA 4120 1B7C B7 OR A 4121 1B7D E1 POP HL 4122 1B7E 4F LD C,A 4123 1B7F 06 00 LD B,00H 4124 1B81 50 LD D,B 4125 1B82 28 03 JR Z,FILL4 4126 1B84 CD C4 1A CALL FILLUP 4127 1B87 1D FILL4: DEC E 4128 1B88 F8 RET M 4129 1B89 E5 PUSH HL 4130 1B8A 21 91 1B LD HL,FILLT 4131 1B8D 19 ADD HL,DE 4132 1B8E 7E LD A,(HL) 4133 1B8F 18 0D JR FILL6 ;=============================== 4134 1B91 01 FILLT: DEFB 1 4134a 1B91 03 DEFB 3 4134b 1B91 07 DEFB 7 4135 1B94 0F DEFB 0FH 4136 1B95 1F DEFB 1FH 4137 1B96 3F DEFB 3FH 4138 1B97 7F DEFB 7FH ;=============================== 4139 1B98 3D FILL5: DEC A 4140 1B99 47 LD B,A 4141 1B9A F1 POP AF 4142 1B9B 3D DEC A 4143 1B9C 2F CPL 4144 1B9D A0 AND B 4145 1B9E E1 FILL6: POP HL ;**************************************************** ;Set Punkt IN A ;IN: a POIMA hl POIADR PALCOL ,+1 ;OUT: hl bc de :uv ; 4146 1B9F F5 SPINA: PUSH AF 4147 1BA0 DB 98 SPINA1: IN A,(FLAGR) 4148 1BA2 E6 04 AND 04H ;FIFO leer ? 4149 1BA4 28 FA JR Z,SPINA1 ;nein 4150 1BA6 3E 49 LD A,CURS ;ja 4151 1BA8 D3 99 OUT (COMNP),A 4152 1BAA 7D LD A,L 4153 1BAB D3 98 OUT (PARAP),A 4154 1BAD 7C LD A,H 4155 1BAE D3 98 OUT (PARAP),A ;Kursor auf Adr. POIADR 4156 1BB0 3E 4A LD A,MASK 4157 1BB2 D3 99 OUT (COMNP),A 4158 1BB4 F1 POP AF 4159 1BB5 D3 98 OUT (PARAP),A 4160 1BB7 D3 98 OUT (PARAP),A ;Maske setzen auf POIMA 4161 1BB9 3E 20 SPINA2: LD A,WDATWO 4162 1BBB D3 99 OUT (COMNP),A 4163 1BBD 3A 7A F2 LD A,(PALCOL) 4164 1BC0 D3 98 OUT (PARAP),A 4165 1BC2 3A 7B F2 LD A,(PALCOL+1) 4166 1BC5 D3 98 OUT (PARAP),A ;Farbwort schreiben 4167 1BC7 C9 RET ;**************************************************** ;LoaD ELLIpsenparameter ; 4168 1BC8 2A AA F2 LDELLI: LD HL,(ELLIX) 4169 1BCB EB EX DE,HL 4170 1BCC 2A AC F2 LD HL,(ELLIY) 4171 1BCF C9 RET ;**************************************************** ;PAInt-UP 1 ; 4172 1BD0 E5 PAIUP1: PUSH HL 4173 1BD1 21 27 FC LD HL,PARAND 4174 1BD4 C3 4E 19 JP STAIN0 ;**************************************************** ;PAInt-UP 2 ; 4175 1BD7 78 PAIUP2: LD A,B 4176 1BD8 32 2D F7 LD (AUTSTL),A 4177 1BDB AF XOR A 4178 1BDC 67 LD H,A 4179 1BDD 6F LD L,A 4180 1BDE 4F LD C,A 4181 1BDF 32 30 F7 LD (PAIHL2),A 4182 1BE2 3A 27 FC LD A,(PARAND) 4183 1BE5 CD 7C 1C PAIU21: CALL PAIU5 4184 1BE8 20 0E JR NZ,PAIU22 4185 1BEA 1B DEC DE 4186 1BEB 7A LD A,D 4187 1BEC B3 OR E 4188 1BED 4F LD C,A 4189 1BEE C8 RET Z 4190 1BEF CD A4 19 CALL APRGT 4191 1BF2 30 F1 JR NC,PAIU21 4192 1BF4 11 00 00 LD DE,0000H 4193 1BF7 C9 RET ;------------------------------- 4194 1BF8 CD 65 1C PAIU22: CALL PAIU4 4195 1BFB D5 PUSH DE 4196 1BFC CD E8 18 CALL LDPMA 4197 1BFF 22 1F F8 LD (HLPPA1),hl 4198 1C02 32 21 F8 LD (HLPPA2),A 4199 1C05 11 00 00 LD DE,0000H 4200 1C08 13 PAI23: INC DE 4201 1C09 CD A4 19 CALL APRGT 4202 1C0C 38 0A JR C,PAI24 4203 1C0E CD 7C 1C CALL PAIU5 4204 1C11 28 05 JR Z,PAI24 4205 1C13 CD 65 1C CALL PAIU4 4206 1C16 18 F0 JR PAI23 ;------------------------------- 4207 1C18 D5 PAI24: PUSH DE 4208 1C19 CD E8 18 CALL LDPMA 4209 1C1C E5 PUSH HL 4210 1C1D F5 PUSH AF 4211 1C1E 2A 1F F8 LD HL,(HLPPA1) 4212 1C21 3A 21 F8 LD A,(HLPPA2) 4213 1C24 CD EF 18 CALL STPMA 4214 1C27 EB EX DE,HL 4215 1C28 22 2E F7 LD (PAIHL1),HL 4216 1C2B 3A 2D F7 LD A,(AUTSTL) 4217 1C2E A7 AND A 4218 1C2F C4 F1 1A CALL NZ,FILL 4219 1C32 F1 POP AF 4220 1C33 E1 POP HL 4221 1C34 CD EF 18 CALL STPMA 4222 1C37 E1 POP HL 4223 1C38 D1 POP DE 4224 1C39 C3 60 1C JP PAIU34 ;**************************************************** 4225 1C3C AF PAIUP3: XOR A 4226 1C3D 67 LD H,A 4227 1C3E 6F LD L,A 4228 1C3F 4F LD C,A 4229 1C40 32 30 F7 LD (PAIHL2),A 4230 1C43 CD DD 19 PAIU31: CALL APLFT 4231 1C46 38 0E JR C,PAIU33 4232 1C48 CD 7C 1C CALL PAIU5 4233 1C4B 28 06 JR Z,PAIU32 4234 1C4D CD 65 1C CALL PAIU4 4235 1C50 23 INC HL 4236 1C51 18 F0 JR PAIU31 ;------------------------------- 4237 1C53 CD D2 19PAIU32 CALL APRGT1 4238 1C56 E5 PAIU33: PUSH HL 4239 1C57 ED 5B 2E F7 LD DE,(PAIHL1) 4240 1C5B 19 ADD HL,DE 4241 1C5C CD F1 1A CALL FILL 4242 1C5F E1 POP HL 4243 1C60 3A 30 F7 PAIU34: LD A,(PAIHL2) 4244 1C63 4F LD C,A 4245 1C64 C9 RET ;**************************************************** ;in: bc Farbe aktueller Punkt 4246 1C65 D5 PAIU4: PUSH DE 4247 1C66 3A F3 F7 LD A,(POIMA) 4248 1C69 5F LD E,A 4249 1C6A 3A 7A F2 LD A,(PALCOL) 4250 1C6D A9 XOR C 4251 1C6E A3 AND E 4252 1C6F 20 05 JR NZ,PAIU41 4253 1C71 3A 7B F2 LD A,(PALCOL+1) 4254 1C74 A8 XOR B 4255 1C75 A3 AND E 4256 1C76 D1 PAIU41: POP DE 4257 1C77 C8 RET Z ;gleich Malfarbe -> (PAIHL2) bleibt 0 4258 1C78 32 30 F7 LD (PAIHL2),A ;a<>0 4259 1C7B C9 RET ;--------------------------- ;in: POIMA, POIADR ;out: z-Flag 4260 1C7C D5 PAIU5: PUSH DE 4261 1C7D E5 PUSH HL 4262 1C7E CD E8 18 CALL LDPMA 4263 1C81 5F LD E,A ;e: POIMA 4264 1C82 CD 86 17 CALL CURSS 4265 1C85 01 01 00 LD BC,0001H 4266 1C88 CD B9 1F CALL PFIGS ;1 Wort lesen 4267 1C8B CD 4D 17 CALL RDMOD 4268 1C8E DB 99 IN A,(READP) 4269 1C90 4F LD C,A 4270 1C91 21 27 FC LD HL,PARAND 4271 1C94 AE XOR (HL) 4272 1C95 A3 AND E ;akt.Farbe XOR Randfarbe AND Punktmaske Lowbyte 4273 1C96 F5 PUSH AF 4274 1C97 CD B0 1F CALL READY 4275 1C9A F1 POP AF 4276 1C9B DB 99 IN A,(READP) 4277 1C9D 47 LD B,A 4278 1C9E 20 03 JR NZ,PAIU51 4279 1CA0 23 INC HL 4280 1CA1 AE XOR (HL) 4281 1CA2 A3 AND E ;akt.Farbe XOR Randfarbe AND Punktmaske Highbyte 4282 1CA3 E1 PAIU51: POP HL 4283 1CA4 D1 POP DE 4284 1CA5 C9 RET ;**************************************************** ; Screeneditor ; ; ;EDIt 1 ; 4285 1CA6 CD DB FD EDI1: CALL XEDI1 4286 1CA9 3A 70 F5 LD A,(AUTOFL) ;AUTO? 4287 1CAC A7 AND A ; Ja--> 4288 1CAD 20 0D JR NZ,EDI2 ;------------------------------- 4289 1CAF 2E 00 LD L,00H ;L=Zeile=0 4290 1CB1 18 14 JR EDI22 ;**************************************************** ;GET STring ; 4291 1CB3 CD E5 FD GETST: CALL XGETST 4292 1CB6 3E 3F LD A,'?' 4293 1CB8 DF RST 18H 4294 1CB9 3E 20 LD A,' ' ;Ausgabe "? " 4295 1CBB DF RST 18H ;**************************************************** 4296 1CBC CD E0 FD EDI2: CALL XEDI2 4297 1CBF 2A 67 F2 LD HL,(CRSZL) ;HL=Spalte/Zeile ; ------------------------ 4298 1CC2 2D DEC L ;vorherige Zeile als 4299 1CC3 C4 5F 13 CALL NZ,SEZL ; Endezeile 4300 1CC6 2C INC L ; ------------------------ 4301 1CC7 22 C0 FA EDI22: LD (CUPOVO),HL ;Kursor vor Eingabe 4302 1CCA AF XOR A 4303 1CCB 32 09 FC LD (STCSSW),A ;(CTRL-)STOP loeschen ;------------------------------- 4304 1CCE CD 09 FD EDI24: CALL ICONIN ;A=Zeichen 4305 1CD1 21 19 1D LD HL,SCRET-2 4306 1CD4 0E 0B LD C,0BH 4307 1CD6 CD 51 14 CALL JPVER5 ;Steuerzeichenauswertung ; C/NZ:CR,STOP-IR ; C/ Z:CTRL-STOP ; NC/ Z:STZ ; NC/NZ:kein STZ ; ------------------------ 4308 1CD9 F5 PUSH AF 4309 1CDA C4 E6 1C CALL NZ,AOUT ;Zeichenausgabe 4310 1CDD F1 POP AF 4311 1CDE 30 EE JR NC,EDI24 ;-------------------------------- 4312 1CE0 21 23 F4 LD HL,HEDIBU ;Weiter nach CR,CTRL-STOP ; (Stackmanipulation) 4313 1CE3 C8 RET Z ;------------------------------- 4314 1CE4 3F CCF 4315 1CE5 C9 EDI26: RET ;**************************************************** ;A-register-OUTput ; ;IN: A=Zeichen ; 4316 1CE6 F5 AOUT: PUSH AF 4317 1CE7 FE 09 CP 09H 4318 1CE9 20 0F JR NZ,AOUT4 ;------------------------------- 4319 1CEB F1 POP AF ;TAB in 4320 1CEC 3E 20 AOUT2: LD A,' ' 4321 1CEE CD E6 1C CALL AOUT 4322 1CF1 3A 68 F2 LD A,(CRSSP) 4323 1CF4 3D DEC A 4324 1CF5 E6 07 AND 07H 4325 1CF7 20 F3 JR NZ,AOUT2 4326 1CF9 C9 RET ; SPC wandeln ;=============================== 4327 1CFA F1 AOUT4: POP AF 4328 1CFB 21 16 FC LD HL,INSSW ; ------------------------ 4329 1CFE FE 01 CP 01H ;GCH? 4330 1D00 28 0B JR Z,AOUT6 ; Ja--> ; ------------------------ 4331 1D02 FE 20 CP 20H ;Steuerzeichen? 4332 1D04 38 09 JR C,RIMAO ; Ja--> ;------------------------------- 4333 1D06 F5 PUSH AF 4334 1D07 7E LD A,(HL) ;Insertmode? 4335 1D08 A7 AND A 4336 1D09 C4 D3 1D CALL NZ,ESLR ; Ja-->Verschieben 4337 1D0C F1 POP AF ;------------------------------- 4338 1D0D DF AOUT6: RST 18H ;Ausgabe 4339 1D0E C9 RET ;**************************************************** ;Reset InsertMode A-register Output ; ;IN: HL=INSSW ; A=Zeichen ; 4340 1D0F 36 00 RIMAO: LD (HL),00H 4341 1D11 DF RST 18H 4342 1D12 3E DEFB 3EH ; - / LD A,3EH ;**************************************************** ;SET InsertMode (Kleinkursor) ; 4342 1D13 3E SETIM: DEFB 3EH ;LD A,0AFH / - " - ;**************************************************** ;RESet InsertMode (Grosskursor) ; 4343 1D14 AF RESIM: DEFB 0AFH ;- " - / XOR A ; ------------------------ 4344 1D15 32 18 FC LD (CURGK),A ;Gross-/Kleinkursor 4345 1D18 C3 2F 15 JP KUSENZ ;bed.Kursorset. ;**************************************************** ;SCReen-Editor-Tabelle ; 4346 1D1B 08 SCRET: DEFB 8 4347 1D1C 51 1E DEFW EBS 4348 1D1E 12 DEFB 12H 4349 1D1F C6 1D DEFW EINMO 4350 1D21 1B DEFB 1BH 4351 1D22 E5 1C DEFW EDI26 4352 1D24 02 DEFB 2 4353 1D25 12 1F DEFW LTNW 4354 1D27 06 DEFB 6 4355 1D28 FC 1E DEFW RTNW 4356 1D2A 0E DEFB 0EH 4357 1D2B D7 1E DEFW RTLE 4358 1D2D 05 DEFB 5 4359 1D2E B5 1E DEFW DTLE 4360 1D30 03 DEFB 3 4361 1D31 A7 1D DEFW ECTSP 4362 1D33 0D DEFB 0DH 4363 1D34 3C 1D DEFW ECR 4364 1D36 15 DEFB 15H 4365 1D37 AD 1E DEFW ECLLN 4366 1D39 7F DEFB 7FH 4367 1D3A 3E 1E DEFW EDEL ;**************************************************** ;Edit-CR ; ;IN: H=Spalte / L=Zeile ; 4371 1D3C CD 75 1F ECR: CALL GCPVO ;veraendert HL ! ;------------------------- 4372 1D3F 3A 70 F5 LD A,(AUTOFL) 4373 1D42 A7 AND A ;AUTO? 4374 1D43 28 04 JR Z,ECR10 4375 1D45 3A 63 F2 LD A,(SPFIRS) 4376 1D48 67 LD H,A ; ------------------------ 4377 1D49 CD 4B 15 ECR10: CALL KURENZ ;Korsor loe. ;=============================== 4378 1D4C 11 24 F4 LD DE,EDIBUF 4379 1D4F 06 FE LD B,0FEH ;Laenge 4380 1D51 2D DEC L ;Zeile-1 ;------------------------------- 4381 1D52 2C ECR20: INC L ;Zeile+1 ; ======================== 4382 1D53 D5 ECR30: PUSH DE 4383 1D54 C5 PUSH BC 4384 1D55 CD 25 17 CALL CHRASC ;Zeichen aus BWSP 4385 1D58 C1 POP BC 4386 1D59 D1 POP DE ; ------------------------ 4387 1D5A A7 AND A ;Zeichen=0? 4388 1D5B 28 14 JR Z,ECR50 ; Ja--> ; ------------------------ 4389 1D5D FE 20 CP 20H ;Grafikzeichen? 4390 1D5F 30 0B JR NC,ECR40 ; Nein--> ; ======================== 4391 1D61 05 DEC B ;Puffer voll? 4392 1D62 28 1F JR Z,ECR60 ; Ja--> ; ------------------------ 4393 1D64 4F LD C,A 4394 1D65 3E 01 LD A,01H 4395 1D67 12 LD (DE),A ;GCH abspeichern 4396 1D68 13 INC DE ; ------------------------ 4397 1D69 79 LD A,C ;Kodekorrektur 4398 1D6A C6 40 ADD A,40H ; Grafikzeichen ; ========================= 4399 1D6C 12 ECR40: LD (DE),A ;Zeichen abspeichern 4400 1D6D 13 INC DE 4401 1D6E 05 DEC B ;Puffer voll? 4402 1D6F 28 12 JR Z,ECR60 ; Ja--> ; ========================= 4403 1D71 24 ECR50: INC H ;Spalte+1 4404 1D72 3A 64 F2 LD A,(SPLAST) 4405 1D75 BC CP H ;Zeilenende? 4406 1D76 30 DB JR NC,ECR30 ; Nein--> ;------------------------------- 4407 1D78 D5 PUSH DE 4408 1D79 CD 53 13 CALL GLATAD ;Endzeile? 4409 1D7C D1 POP DE 4410 1D7D 3A 63 F2 LD A,(SPFIRS) ;(Spalte 1) 4411 1D80 67 LD H,A 4412 1D81 28 CF JR Z,ECR20 ; Nein--> ;=============================== 4413 1D83 1B ECR60: DEC DE 4414 1D84 1A LD A,(DE) ;SPC am Pufferende 4415 1D85 FE 20 CP ' ' 4416 1D87 28 FA JR Z,ECR60 ; abschneiden ;------------------------------- 4417 1D89 D5 PUSH DE 4418 1D8A CD 2F 15 CALL KUSENZ ;Kursor set. 4419 1D8D D1 POP DE ;------------------------------- 4420 1D8E 13 INC DE 4421 1D8F AF XOR A ;Endekennzeichen 4422 1D90 12 LD (DE),A ; in Puffer ;=============================== 4423 1D91 3E 0D ECR70: LD A,0DH ;CR 4424 1D93 A7 AND A ;Z=0 (NZ) bei CR !! ; ------------------------ 4425 1D94 F5 ECR80: PUSH AF ;Flags speichern ;------------------------------- 4426 1D95 CD 5F 13 CALL SEZL ;Endezeile markieren 4427 1D98 CD 63 12 CALL CRSPOS ;Kursor positionieren 4428 1D9B 3E 0A LD A,0AH 4429 1D9D DF RST 18H ;Ausgabe LF 4430 1D9E AF XOR A 4431 1D9F 32 16 FC LD (INSSW),A ;Grosskursor ; ------------------------ 4432 1DA2 F1 POP AF ;Flags wie oben ! 4433 1DA3 37 SCF ;CY=1 4434 1DA4 E1 POP HL ;Stackmanipulation !! 4435 1DA5 C9 RET ;**************************************************** ;Edit-CTrl-StoP ; ;IN: H=Spalte / L=Zeile ; 4436 1DA6 2C ECTSP2: INC L ;Zeile+1 ;=============================== 4437 1DA7 CD 53 13 ECTSP: CALL GLATAD ;Endzeile? 4438 1DAA 28 FA JR Z,ECTSP2 ; Nein--> ;------------------------------- 4439 1DAC CD 14 1D CALL RESIM ;Res INS-mode 4440 1DAF AF XOR A 4441 1DB0 32 24 F4 LD (EDIBUF),A ;Puffer loeschen 4442 1DB3 3A 63 F2 LD A,(SPFIRS) ;1.spalte 4443 1DB6 67 LD H,A 4444 1DB7 E5 PUSH HL ; call MUINIT ;PSG init ; ------------------------ 4445 1DB8 CD 7F 04 CALL TSTPIR ;STOP-IR? 4446 1DBB E1 POP HL 4447 1DBC 38 D3 JR C,ECR70 ; Ja--> ;------------------------------- 4448 1DBE 3A 8D FA LD A,(STOPFL) 4449 1DC1 A7 AND A ;Stop ein? 4450 1DC2 20 CD JR NZ,ECR70 ; Nein--> ;------------------------------- 4451 1DC4 18 CE JR ECR80 ;sonst ( NC/Z !!) ;**************************************************** ;Edit-INsertMOde ; 4452 1DC6 21 16 FC EINMO: LD HL,INSSW 4453 1DC9 7E LD A,(HL) 4454 1DCA EE FF XOR 0FFH ;Switch negieren 4455 1DCC 77 LD (HL),A 4456 1DCD CA 14 1D JP Z,RESIM ;=0-->Reset 4457 1DD0 C3 13 1D JP SETIM ;<>0-->Set ;**************************************************** ;Edit Shift Line Right ; 4458 1DD3 CD 4B 15 ESLR: CALL KURENZ ;=============================== 4459 1DD6 2A 67 F2 LD HL,(CRSZL) ;HL=Spalte/Zeile 4460 1DD9 3A 91 F2 LD A,(ACTCOL) 4461 1DDC 47 LD B,A 4462 1DDD 0E 20 LD C,' ' ;C=neues Zeichen 4463 1DDF E5 ESLR10: PUSH HL ;=============================== 4464 1DE0 C5 ESLR20: PUSH BC ;neu Zei in Stack 4465 1DE1 CD 25 17 CALL CHRASC ;C=alt Zei aus BWSP 4466 1DE4 D1 POP DE ;E=neu Zei 4467 1DE5 C5 PUSH BC ;alt Zei in Stack 4468 1DE6 4B LD C,E ;C=neu Zei 4469 1DE7 42 LD B,D 4470 1DE8 CD 5B 17 CALL CHRTSC ;neu Zei in BWSP 4471 1DEB C1 POP BC ;C=alt Zei ; ------------------------ 4472 1DEC 3A 64 F2 LD A,(SPLAST) 4473 1DEF 24 INC H ;Spalte+1 4474 1DF0 BC CP H ;Zeilenende? 4475 1DF1 30 ED JR NC,ESLR20 ; Nein--> ;------------------------------- 4476 1DF3 E1 POP HL 4477 1DF4 CD 53 13 CALL GLATAD ;Endzeile? 4478 1DF7 28 3E JR Z,ESLR70 ; Nein--> ; ------------------------ 4479 1DF9 79 LD A,C 4480 1DFA FE 20 CP ' ' ;alt Zei=SPC? 4481 1DFC F5 PUSH AF ;Flags in Stack 4482 1DFD 20 10 JR NZ,ESLR30 ; Nein--> ; ------------------------ 4483 1DFF 3A 64 F2 LD A,(SPLAST) 4484 1E02 BC CP H ;letztes Zeichen auf Zeile? 4485 1E03 28 0A JR Z,ESLR30 ; Ja--> ; ------------------------ 4486 1E05 F1 POP AF 4487 1E06 2A 67 F2 ESLR25: LD HL,(CRSZL) 4488 1E09 CD AD 15 CALL SAZLSP 4489 1E0C C3 2F 15 JP KUSENZ ;-->Ende !! ;=============================== 4490 1E0F CD 60 13 ESLR30: CALL REZL ;Reset Endzeile 4491 1E12 2C INC L ;Zeile+1 4492 1E13 C5 PUSH BC ;alt Zei in Stack 4493 1E14 E5 PUSH HL 4494 1E15 3A 66 F2 LD A,(ZLLAST) 4495 1E18 BD CP L ;Bildende? 4496 1E19 38 05 JR C,ESLR40 ; Ja--> ; ------------------------ 4497 1E1B CD 46 16 CALL BIRURO ;Restbild runterrollen 4498 1E1E 18 11 JR ESLR60 ;------------------------------- 4499 1E20 21 67 F2 ESLR40: LD HL,CRSZL 4500 1E23 35 DEC (HL) ;Zeile-1 4501 1E24 20 01 JR NZ,ESLR50 4502 1E26 34 INC (HL) ;bei 0-->Zeile+1 4503 1E27 3A 65 F2 ESLR50: LD A,(ZLFIRS) 4504 1E2A 6F LD L,A 4505 1E2B CD EA 15 CALL BIHORO ;Bild hochrollen 4506 1E2E E1 POP HL 4507 1E2F 2D DEC L ;Zeile-1 4508 1E30 E5 PUSH HL ; ------------------------ 4509 1E31 E1 ESLR60: POP HL 4510 1E32 C1 POP BC ;C=alt Zei 4511 1E33 F1 POP AF ;Flags 4512 1E34 28 D0 JR Z,ESLR25 ; SPC--> 4513 1E36 2D DEC L ;Zeile-1 ; ------------------------ 4514 1E37 2C ESLR70: INC L ;Zeile+1 4515 1E38 3A 63 F2 LD A,(SPFIRS) ;1.SPALTE 4516 1E3B 67 LD H,A 4517 1E3C 18 A1 JR ESLR10 ;alt Zei-->neu Zei ;**************************************************** ;Edit-DELete ; 4518 1E3E 3A 64 F2 EDEL: LD A,(SPLAST) 4519 1E41 BC CP H ;Zeilenende? 4520 1E42 20 07 JR NZ,EDEL2 ; Nein--> ; ------------------------ 4521 1E44 CD 53 13 CALL GLATAD ;Endzeile? 4522 1E47 E5 PUSH HL 4523 1E48 20 3E JR NZ,EBS50 ; Ja--> 4524 1E4A E1 POP HL ;------------------------------- 4525 1E4B 3E 1C EDEL2: LD A,1CH ;Kursor rechts MIT HC-TASTATUR SONST 1CH 4526 1E4D DF RST 18H 4527 1E4E 2A 67 F2 LD HL,(CRSZL) ;HL=Spalte/Zeile ;**************************************************** ;Edit-BackSpace ; ;IN: H=Spalte / L=Zeile ; 4528 1E51 CD 4B 15 EBS: CALL KURENZ ;Kursor loe. ;------------------------------- 4529 1E54 3A 63 F2 LD A,(SPFIRS) 4530 1E57 BC CP H 4531 1E58 20 14 JR NZ,EBS20 ;kein Zeilenanfang 4532 1E5A E5 PUSH HL 4533 1E5B 3A 65 F2 LD A,(ZLFIRS) 4534 1E5E BD CP L 4535 1E5F 28 0B JR Z,EBS10 ; Bildanfang--> 4536 1E61 2D DEC L 4537 1E62 3A 64 F2 LD A,(SPLAST) 4538 1E65 67 LD H,A ;letzte Spalte 4539 1E66 CD 53 13 CALL GLATAD ;Endzeile? 4540 1E69 20 01 JR NZ,EBS10 ; Ja--> 4541 1E6B E3 EX (SP),HL 4542 1E6C E1 EBS10: POP HL 4543 1E6D 24 INC H 4544 1E6E 25 EBS20: DEC H 4545 1E6F E5 PUSH HL ;------------------------------- 4546 1E70 3A 64 F2 EBS30: LD A,(SPLAST) 4547 1E73 BC CP H ;Zeilenende? 4548 1E74 28 12 JR Z,EBS50 ; Ja--> ; ------------------------ 4549 1E76 24 INC H ;Rest der Zeile 4550 1E77 CD 25 17 EBS40: CALL CHRASC 4551 1E7A 25 DEC H 4552 1E7B CD 5B 17 CALL CHRTSC 4553 1E7E 24 INC H 4554 1E7F 24 INC H ; ranruecken 4555 1E80 3A 64 F2 LD A,(SPLAST) 4556 1E83 3C INC A 4557 1E84 BC CP H 4558 1E85 20 F0 JR NZ,EBS40 ; ------------------------ 4559 1E87 25 DEC H 4560 1E88 0E 20 EBS50: LD C,' ' 4561 1E8A 3A 91 F2 LD A,(ACTCOL) 4562 1E8D 47 LD B,A 4563 1E8E CD 5B 17 CALL CHRTSC ;SPC anfuegen ; ------------------------ 4564 1E91 CD 53 13 CALL GLATAD ;Endzeile? 4565 1E94 28 07 JR Z,EBS60 ;nein 4566 1E96 E1 POP HL 4567 1E97 CD AD 15 CALL SAZLSP ;ja ENDE 4568 1E9A C3 2F 15 JP KUSENZ ;================================ 4569 1E9D E5 EBS60: PUSH HL ;Kursorpos retten 4570 1E9E 2C INC L ;1.Zeichen der 4571 1E9F 3A 63 F2 LD A,(SPFIRS) 4572 1EA2 67 LD H,A 4573 1EA3 CD 25 17 CALL CHRASC ; auf letztes Zeichen 4574 1EA6 E3 EX (SP),HL 4575 1EA7 CD 5B 17 CALL CHRTSC ; der alten Zeile 4576 1EAA E1 POP HL ;Kursor auf 1.Zei neue Zeile 4577 1EAB 18 C3 JR EBS30 ;**************************************************** ;Edit-CLear-LiNe ; ;IN: H=Spalte / L=Zeile ; 4578 1EAD CD 4B 15 ECLLN: CALL KURENZ ;Kursor loe 4579 1EB0 CD 75 1F CALL GCPVO ;Kursor an 4580 1EB3 18 05 JR DTLE1 ;**************************************************** ;Delete from kursor to LineEnd ; ;IN: H=Spalte / L=Zeile ; 4581 1EB5 E5 DTLE: PUSH HL 4582 1EB6 CD 4B 15 CALL KURENZ ;Kursor loe 4583 1EB9 E1 POP HL ;------------------------------- 4584 1EBA E5 DTLE1: PUSH HL 4585 1EBB CD 53 13 DTLE2: CALL GLATAD 4586 1EBE F5 PUSH AF 4587 1EBF CD B5 16 CALL CLINFK ;Clear Line From Kursor 4588 1EC2 F1 POP AF 4589 1EC3 20 07 JR NZ,DTLE3 ;Endzeile--> ; ------------------------ 4590 1EC5 3A 63 F2 LD A,(SPFIRS) 4591 1EC8 67 LD H,A ;naechste 4592 1EC9 2C INC L ; Zeile 4593 1ECA 18 EF JR DTLE2 4594 1ECC E1 DTLE3: POP HL 4595 1ECD CD AD 15 DTLE4: CALL SAZLSP 4596 1ED0 AF DTLE5: XOR A 4597 1ED1 32 16 FC LD (INSSW),A 4598 1ED4 C3 14 1D JP RESIM ;Res INS-Mode ;**************************************************** ;kursor Right To LineEnd ; 4599 1ED7 CD 4B 15 RTLE: CALL KURENZ 4600 1EDA 2A 67 F2 LD HL,(CRSZL) ;HL=Spalte/Zeile 4601 1EDD 2D DEC L ;------------------------------- 4602 1EDE 2C RTLE2: INC L ;Zeile+1 4603 1EDF CD 53 13 CALL GLATAD ;Endzeile? 4604 1EE2 28 FA JR Z,RTLE2 ; Nein--> ;------------------------------- 4605 1EE4 3A 64 F2 LD A,(SPLAST) 4606 1EE7 67 LD H,A 4607 1EE8 24 INC H ;Letzte Spalte +1 ; ------------------------ 4608 1EE9 25 RTLE4: DEC H ;Spalte-1 4609 1EEA 28 0E JR Z,RTLE6 ;Zeilenanfang--> 4610 1EEC CD 25 17 CALL CHRASC 4611 1EEF FE 20 CP ' ' ;SPC? 4612 1EF1 28 F6 JR Z,RTLE4 ; Ja--> ;------------------------------- 4613 1EF3 3A 64 F2 LD A,(SPLAST) 4614 1EF6 BC CP H 4615 1EF7 28 01 JR Z,RTLE6 4616 1EF9 24 INC H 4617 1EFA 18 D1 RTLE6: JR DTLE4 ;**************************************************** ;kursor Right To New Word ; 4618 1EFC CD 4B 15 RTNW: CALL KURENZ ;Kursor loe 4619 1EFF CD 38 1F CALL ZTKL ;Kursor links ;------------------------------- 4620 1F02 CD 28 1F RTNW2: CALL ZTKR ;Zeichentest 4621 1F05 28 C6 JR Z,DTLE4 ;Bildende--> 4622 1F07 38 F9 JR C,RTNW2 ;kein Trennzeichen--> ;-------------------------------- 4623 1F09 CD 28 1F RTNW4: CALL ZTKR ;Zeichentest 4624 1F0C 28 BF JR Z,DTLE4 ;Bildende--> 4625 1F0E 30 F9 JR NC,RTNW4 ;Trennzeichen--> ;------------------------------- 4626 1F10 18 BB JR DTLE4 ;**************************************************** ;kursor Left To New Word ; 4627 1F12 CD 4B 15 LTNW: CALL KURENZ ;------------------------------- 4628 1F15 CD 38 1F LTNW2: CALL ZTKL 4629 1F18 28 B3 JR Z,DTLE4 ;Bildanfang--> 4630 1F1A 30 F9 JR NC,LTNW2 ;Trennzeichen--> ;------------------------------- 4631 1F1C CD 38 1F LTNW4: CALL ZTKL 4632 1F1F 28 AC JR Z,DTLE4 ;Bildanfang--> 4633 1F21 38 F9 JR C,LTNW4 ;kein Trennzeichen--> ;------------------------------- 4634 1F23 CD 9D 15 CALL KUREFS 4635 1F26 18 A8 JR DTLE5 ;**************************************************** ;ZeichenTest ab Kursor+1 nach Rechts ; ;OUT: Z: Bildende ; NZ/NC: Trennzeichen ; NZ/CY: kein Trennzeichen ; 4636 1F28 2A 67 F2 ZTKR: LD HL,(CRSZL) ;HL=Spalte/Zeile 4637 1F2B CD 9D 15 CALL KUREFS ;------------------------------- 4638 1F2E 3A 66 F2 LD A,(ZLLAST) 4639 1F31 5F LD E,A 4640 1F32 3A 64 F2 LD A,(SPLAST) 4641 1F35 57 LD D,A ;DE=Sollkursor 4642 1F36 18 0E JR ZTKL2 ; (Bildende) ;**************************************************** ;ZeichenTest ab Kursor-1 nach Links ; ;OUT: Z: Bildanfang ; NZ/NC: Trennzeichen ; NZ/CY: kein Trennzeichen ; 4643 1F38 2A 67 F2 ZTKL: LD HL,(CRSZL) ;HL=Spalte/Zeile 4644 1F3B CD 85 15 CALL KULIFS 4645 1F3E 3A 63 F2 LD A,(SPFIRS) 4646 1F41 57 LD D,A 4647 1F42 3A 65 F2 LD A,(ZLFIRS) 4648 1F45 5F LD E,A ; DE SOLLKURSOR ;================================ 4649 1F46 2A 67 F2 ZTKL2: LD HL,(CRSZL) ;Istkursor 4650 1F49 E7 RST 20H 4651 1F4A C8 RET Z ;RET (Z), wenn gleich ;------------------------------- 4652 1F4B 11 71 1F LD DE,ZTKL4 ;Ret-Adr 4653 1F4E D5 PUSH DE ; in Stack 4654 1F4F CD 25 17 CALL CHRASC ;Zeichen in A ;=============================== 4655 1F52 FE 30 CP 30H 4656 1F54 3F CCF 4657 1F55 D0 RET NC ;sonst-->RET (NC) 4658 1F56 FE 3A CP 3 AH 4659 1F58 D8 RET C ;Zahl-->RET (CY) ;------------------------------- 4660 1F59 FE 41 CP 41H 4661 1F5B 3F CCF 4662 1F5C D0 RET NC ;sonst-->RET (NC) 4663 1F5D FE 5B CP 5BH 4664 1F5F D8 RET C ;Grossbuchstabe-->RET (CY) ;------------------------------- 4665 1F60 FE 61 CP 61H 4666 1F62 3F CCF 4667 1F63 D0 RET NC ;sonst-->RET (NC) 4668 1F64 FE 7B CP 7BH 4669 1F66 D8 RET C ;Kleinbuchstabe-->RET (CY) ;------------------------------- 4670 1F67 FE 86 CP 86H 4671 1F69 3F CCF 4672 1F6A D0 RET NC ;sonst-->RET (NC) 4673 1F6B FE A0 CP 0A0H 4674 1F6D D8 RET C ;86H..A0H-->RET (CY) ;------------------------------- 4675 1F6E FE A6 CP 0A6H 4676 1F70 3F CCF ;>=A6H-->RET (CY) ;================================ 4677 1F71 3E 00 ZTKL4: LD A,00H 4678 1F73 3C INC A ;NZ 4679 1F74 C9 RET ;**************************************************** ;Get CursorPosition VOr eingabe ; ;IN: HL=Spalte/Zeile (aktuell) ;OUT:HL=Spalte/Zeile (ab Eingabebeginn) ; 4680 1F75 3A 65 F2 GCPVO: LD A,(ZLFIRS) 4681 1F78 BD CP L 4682 1F79 28 07 JR Z,GCPVO2 ; Bildanfang--> ; ------------------------ 4683 1F7B 2D DEC L 4684 1F7C CD 53 13 CALL GLATAD ;Endzeile? 4685 1F7F 28 F4 JR Z,GCPVO ;NEIN ;------------------------------- 4686 1F81 2C GCPVO1: INC L ;Zeile+1 4687 1F82 3A C0 FA GCPVO2: LD A,(CUPOVO) ;Kursor noch 4688 1F85 BD CP L ; in selber Zeile? 4689 1F86 3A 63 F2 LD A,(SPFIRS) 4690 1F89 67 LD H,A 4691 1F8A C0 RET NZ ; Nein-->RET ; ------------------------ 4692 1F8B 2A C0 FA LD H L,(CUPOVO) ;HL=alte Kursorposition 4693 1F8E C9 RET ;***************************************************** ;----------------------------------------------- 4694 1F8F CD A7 1F COMND: CALL FULL 4695 1F92 D3 99 OUT (COMNP),A 4696 1F94 C9 RET ;----------------------------------------------- 4697 1F95 3E 70 PARAM2: LD A,PRAM 4698 1F97 CD 8F 1F PARAM3: CALL COMND 4699 1F9A 21 B5 F2 PARAM: LD HL,PPARAM 4700 1F9D 0E 98 PARAM0: LD C,PARAP 4701 1F9F CD A7 1F PARAM1: CALL FULL 4702 1FA2 ED A3 OUTI 4703 1FA4 20 F9 JR NZ,PARAM1 4704 1FA6 C9 RET ;------------------------------------------------ 4705 1FA7 F5 FULL: PUSH AF 4706 1FA8 DB 98 FULL1: IN A,(FLAGR) 4707 1FAA E6 02 AND 02H 4708 1FAC 20 FA JR NZ,FULL1 4709 1FAE F1 POP AF 4710 1FAF C9 RET ;--------------------------------------------- 4711 1FB0 F5 READY: PUSH AF 4712 1FB1 DB 98 READY1: IN A,(FLAGR) 4713 1FB3 E6 01 AND 01H 4714 1FB5 28 FA JR Z,READY1 4715 1FB7 F1 POP AF 4716 1FB8 C9 RET ;----------------------------------------------- ;FIGS-Parameter ausgeben ;IN: bc Anzahl ;OUT: bc,de,hl uv 4717 1FB9 DB 98 PFIGS: IN A,(FLAGR) 4718 1FBB E6 04 AND 04H ;FIFO leer? 4719 1FBD 28 FA JR Z,PFIGS 4720 1FBF 3E 4C LD A,FIGS 4721 1FC1 D3 99 OUT (COMNP),A 4722 1FC3 3E 02 LD A,02H 4723 1FC5 D3 98 OUT (PARAP),A ;Richtung 4724 1FC7 79 LD A,C 4725 1FC8 D3 98 OUT (PARAP),A 4726 1FCA 78 LD A,B 4727 1FCB D3 98 OUT (PARAP),A ;Anzahl 4728 1FCD C9 RET ;================================================== 4729 1FCE DD 21 79 70 INPPSG: VDPCOM: VDPDAM: PRGVDP: PR7VDP: VDPSC0: VDPSC1: VDPSC2: VDPSC3: GSPRAD: GSPRAT: TESPRM: STAVDP: VDPWRM: VDPREM: LD IX,ERINT 4730 1FD2 C3 39 02 JP L1CALL ;*************************************** ; ; ############################################### SPRITE.ASM ab hier (UZ) ; ;*************************************** ;PUT SPRite 8*8 Pixel in Bildspeicher setzen ; alten BS-Inhalt retten ; ; IN: a Nummer des Sprite ; bc x-Koordinate ; de y-Koordinate ; ; Stand: 10.04.89 ; ;------------------------------------------------- 4731 1FD5 F5 PUTSPR: PUSH AF 4732 1FD6 21 93 FF LD HL,SPRT0 4733 1FD9 3C INC A 4734 1FDA 3D PUSP1: DEC A 4735 1FDB CA E3 1F JP Z,PUSP2 4736 1FDE 23 INC HL 4737 1FDF 23 INC HL 4738 1FE0 C3 DA 1F JP PUSP1 4739 1FE3 E5 PUSP2: PUSH HL 4740 1FE4 DD E1 POP IX ;Zeiger auf akt.Sprite 4741 1FE6 DD 7E 30 LD A,(IX+48) 4742 1FE9 DD B6 31 OR (IX+49) ;Test,ob Sprite definiert 4743 1FEC 37 SCF 4744 1FED C8 RET Z ;nicht definiert -> CY=1 4745 1FEE F3 DI 4746 1FEF 7E LD A,(HL) 4747 1FF0 B7 OR A ;Test POIMA* 4748 1FF1 C4 63 21 CALL NZ,RUECK ;Rueckschreiben alter Hintergrund 4749 1FF4 CD 54 18 CALL TPPOS ;neue Koordinate testen 4750 1FF7 D2 0C 20 JP NC,PUSP3 ;ausserhalb 4751 1FFA C5 PUSH BC 4752 1FFB D5 PUSH DE 4753 1FFC CD 8F 18 CALL MKPMA 4754 1FFF 11 07 00 LD DE,0007H 4755 2002 E1 POP HL 4756 2003 19 ADD HL,DE 4757 2004 EB EX DE,HL ;de=de+7 4758 2005 C1 POP BC 4759 2006 09 ADD HL,BC 4760 2007 44 LD B,H 4761 2008 4D LD C,L ;bc=bc+7 4762 2009 CD 54 18 CALL TPPOS ;rechte obere Ecke 4763 200C DD 72 00 PUSP3: LD (IX+00H),D ;(POIMA*)=0 4764 200F D2 5F 21 JP NC,PUSPFE ;fertig 4765 2012 DD 73 01 LD (IX+01H),E ;y+7 4766 2015 DD 71 10 LD (IX+16),C 4767 2018 DD 70 11 LD (IX+17),B ;x+7 4768 201B F1 POP AF 4769 201C F5 PUSH AF 4770 201D DD E5 PUSH IX 4771 201F 57 LD D,A ;Zaehler fuer hoehere Prioritaet ;------------------------------------------- ;Test, ob Sprite mit hoeherer Prioritaet vorhanden ;wenn ja, dann aktuelles Sprite nicht setzen ;------------------------------------------- 4772 2020 14 INC D 4773 2021 15 PUSP4: DEC D 4774 2022 CA 5D 20 JP Z,PUSP5 4775 2025 DD 2B DEC IX 4776 2027 DD 2B DEC IX ;Zeiger auf Daten n{chstes Sprite 4777 2029 DD 7E 00 LD A,(IX+00H) ;Test (POIMA*) 4778 202C A7 AND A 4779 202D CA 21 20 JP Z,PUSP4 ;Sprite ist nicht gesetzt 4780 2030 DD 7E 01 LD A,(IX+01H) 4781 2033 93 SUB E ;y-Koordinate 4782 2034 D2 39 20 JP NC,PUSP42 4783 2037 ED 44 NEG 4784 2039 E6 F8 PUSP42: AND 0F8H ;max 15 Pixel Abstand 4785 203B C2 21 20 JP NZ,PUSP4 ;nein 4786 203E DD 6E 10 LD L,(IX+16) 4787 2041 DD 66 11 LD H,(IX+17) ;x-Koordinate 4788 2044 ED 42 SBC HL,BC ;max 15 Pixel Abstand 4789 2046 D2 50 20 JP NC,PUSP41 4790 2049 7C LD A,H 4791 204A 2F CPL 4792 204B 67 LD H,A 4793 204C 7D LD A,L 4794 204D 2F CPL 4795 204E 6F LD L,A 4796 204F 23 INC HL ;Zweierkomplement hl 4797 2050 7D PUSP41: LD A,L 4798 2051 E6 F8 AND 0F8H 4799 2053 B4 OR H 4800 2054 C2 21 20 JP NZ,PUSP4 ;nein 4801 2057 E1 POP HL ;getroffen -> Sprite nicht setzen 4802 2058 F1 POP AF 4803 2059 FB EI 4804 205A C3 C3 21 JP KOLLI ;--------------- 4805 205D DD E1 PUSP5: OP IX 4806 205F F1 POP AF 4807 2060 DD E5 PUSH IX 4808 2062 F6 F8 OR 0F8H 4809 2064 2F CPL 4810 2065 57 LD D,A ;d=7-a Zaehler niedrigere Prioritaet ;--------------------------------------------------- ;Test, ob Sprite mit niedrigerer Priorit{t vorhanden ;wenn ja, dann dieses Sprite l|schen ;--------------------------------------------------- 4811 2066 AF XOR A 4812 2067 32 82 F6 LD (HSWAP),A ;Hilfszelle Zaehlen niedere Sprites 4813 206A 14 INC D 4814 206B 15 PUSP6: DEC D 4815 206C CA B0 20 JP Z,PUSP7 ;keine niederen Sprites mehr 4816 206F DD 23 INC IX 4817 2071 DD 23 INC IX ;Zeiger auf naechsten niederes Spite 4818 2073 DD 7E 00 LD A,(IX+00H) 4819 2076 A7 AND A ;Test, ob Sprite gesetzt 4820 2077 CA 6B 20 JP Z,PUSP6 ;nein 4821 207A DD 7E 01 LD A,(IX+01H) ;y-Koordinate 4822 207D 93 SUB E ;max 15 Pixel Abstand 4823 207E D2 83 20 JP NC,PUSP62 4824 2081 ED 44 NEG 4825 2083 E6 F8 PUSP62: AND 0F8H 4826 2085 C2 6B 20 JP NZ,PUSP6 ;nein 4827 2088 DD 6E 10 LD L,(IX+16) 4828 208B DD 66 11 LD H,(IX+17) 4829 208E ED 42 SBC HL,BC 4830 2090 D2 9A 20 JP NC,PUSP61 4831 2093 7C LD A,H 4832 2094 2F CPL 4833 2095 67 LD H,A 4834 2096 7D LD A,L 4835 2097 2F CPL 4836 2098 6F LD L,A 4837 2099 23 INC HL 4838 209A 7D PUSP61: LD A,L ;x-Koordinate 4839 209B E6 F8 AND 0F8H ;max 15 Pixel Abstand 4840 209D B4 OR H 4841 209E C2 6B 20 JP NZ,PUSP6 ;nein 4842 20A1 DD E5 PUSH IX ;getroffen 4843 20A3 E1 POP HL 4844 20A4 7E LD A,(HL) ;POIMA* 4845 20A5 36 00 LD (HL),00H 4846 20A7 CD 63 21 CALL RUECK ;Sprite wegnehmen 4847 20AA CD BA 21 CALL BKOLLI ;bedingte Kollissionsanzeige 4848 20AD C3 6B 20 JP PUSP6 ;naechstes Sprite ;-------------------------------------------------------- 4849 20B0 DD E1 PUSP7: POP IX ;Zeiger akt. Sprite regenerieren 4850 20B2 3A F3 F7 LD A,(POIMA) 4851 20B5 DD 77 00 LD (IX+00H),A ;POIMA* aktual. 4852 20B8 ED 5B F1 F7 LD DE,(POIADR) 4853 20BC DD 73 20 LD (IX+32),E 4854 20BF DD 72 21 LD (IX+33),D ;POIADR* aktual. 4855 20C2 DD 6E 30 LD L,(IX+48) 4856 20C5 DD 66 31 LD H,(IX+49) ;hl Zeiger auf Hintergrundpuffer ;--------------------------------------------------------- ;Hintergrund speichern ;--------------------------------------------------------- 4857 20C8 01 98 03 LD BC ;b=3 3 Spalten c=98h PARAP 4858 20CB C5 PUSP8: PUSH BC 4859 20CC 3E 49 LD A,CURS 4860 20CE D3 99 OUT (COMNP),A 4861 20D0 ED 59 OUT (C),E 4862 20D2 ED 51 OUT (C),D ;----------- 4863 20D4 3E 4C LD A,FIGS 4864 20D6 D3 99 OUT (COMNP),A 4865 20D8 3E 04 LD A,04H 4866 20DA D3 98 OUT (PARAP),A 4867 20DC 87 ADD A,A ;a=8 Anzahl 4868 20DD D3 98 OUT (PARAP),A 4869 20DF AF XOR A 4870 20E0 D3 98 OUT (PARAP),A ;------------ 4871 20E2 01 99 10 LD BC,1099H ;b=16 Zahhler c=99h Portnr. 4872 20E5 DB 98 PUSP9: IN A,(FLAGR) ;Test vor READ 4873 20E7 E6 04 AND 04H 4874 20E9 28 FA JR Z,PUSP9 4875 20EB 3E A0 LD A,RDATWO 4876 20ED D3 99 OUT (COMNP),A 4877 20EF DB 98 PUSP10: IN A,(FLAGR) ;Test,ob gelesen 4878 20F1 E6 01 AND 1 4879 20F3 28 FA JR Z,PUSP10 4880 20F5 ED A2 INI 4881 20F7 C2 EF 20 JP NZ,PUSP10 4882 20FA 13 INC DE 4883 20FB C1 POP BC 4884 20FC 10 CD DJNZ PUSP8 ;noch nicht alle Spalten ;------------- 4885 20FE 3E 4C LD A,FIGS ;Schreibrichtung rückstellen 4886 2100 D3 99 OUT (COMNP),A 4887 2102 3E 02 LD A,02H 4888 2104 D3 98 OU (PARAP),A 4889 2106 AF XOR A 4890 2107 D3 98 OUT (PARAP),A 4891 2109 D3 98 OUT (PARAP),A ;-------------------------------------------------------- ;Sprite entsprechend POIMA in VRAM schreiben ;IN: hl Zeiger auf Spritepuffer ;------------------------------------------------------- 4892 210B 3A F3 F7 LD A,(POIMA) 4893 210E 11 18 00 LD DE,24 4894 2111 0F PUSP11: RRCA 4895 2112 DA 19 21 JP C,PUSP12 4896 2115 19 ADD HL,DE ;Zeiger auf naechste Spritestellung 4897 2116 C3 11 21 JP PUSP11 4898 2119 EB PUSP12: EX DE,HL ;de Quellpuffer 4899 211A 01 98 08 LD BC,0898H ;b Zaehler 8 Zeilen c Portadr. 4900 211D 2A F1 F7 LD HL,(POIADR) ;---------------- 4901 2120 DB 98 PUSSY1: IN A,(FLAGR) 4902 2122 E6 20 AND 20H 4903 2124 C2 20 21 JP NZ,PUSSY1 4904 2127 DB 98 PUSSY2: IN A,(FLAGR) 4905 2129 E6 20 AND 20H 4906 212B CA 27 21 JP Z,PUSSY2 ;---------------- 4907 212E C5 PUSP13: PUSH BC 4908 212F 3E 49 LD A,CURS 4909 2131 D3 99 OUT (COMNP),A 4910 2133 ED 69 OUT (C),L 4911 2135 ED 61 OUT (C),H 4912 2137 AF XOR A 4913 2138 01 50 00 LD BC,80 4914 213B ED 42 SBC HL,BC 4915 213D E5 PUSH HL ;Kursor naechste Zeile kellern 4916 213E 01 98 03 LD BC,0398H ;b Zaehler 3 Spalten c Portadr. 4917 2141 2A 7A F2 LD HL,(PALCOL) 4918 2144 3E 4A PUSP14: LD A,MASK 4919 2146 D3 99 OUT (COMNP),A 4920 2148 1A LD A,(DE) ;aktuelle Maske 4921 2149 13 INC DE 4922 214A D3 98 OUT (PARAP),A 4923 214C D3 98 OUT (PARAP),A 4924 214E 3E 20 LD A,WDATWO 4925 2150 D3 99 OUT (COMNP),A 4926 2152 ED 69 OUT (C),L 4927 2154 ED 61 OUT (C),H 4928 2156 10 EC DJNZ PUSP14 ;noch nicht 3 Spalten 4929 2158 E1 POP HL 4930 2159 C1 POP BC 4931 215A 10 D2 DJNZ PUSP13 ;noch nicht alle 8 Zeilen 4932 215C AF XOR A ;cY=0 4933 215D FB EI 4934 215E C9 RET ;fertig geschrieben 4935 215F F1 PUSPFE: POP AF 4936 2160 AF XOR A ;CY=0 4937 2161 FB EI 4938 2162 C9 RET ;fertig ohne Schreiben ;============================================================= ;3 mal 8 Worte entsprechend POIMA in den Bildspeicher schreiben ;IN : hl POIADR de Zeiger auf Quellpuffer a POIMA ;------------------------------------------------------------- 4939 2163 C5 RUECK: PUSH BC 4940 2164 D5 PUSH DE 4941 2165 E6 0F AND 0FH 4942 2167 3D DEC A 4943 2168 2F CPL 4944 2169 47 LD B,A 4945 216A 0F RRCA 4946 216B 0F RRCA 4947 216C 0F RRCA 4948 216D 0F RRCA 4949 216E A0 AND B 4950 216F 47 LD B,A 4951 2170 2F CPL 4952 2171 F5 PUSH AF 4953 2172 C5 PUSH BC 4954 2173 01 10 00 LD BC,0010H 4955 2176 09 ADD HL,BC 4956 2177 09 ADD HL,BC ;hl Zeiger auf POIADR* 4957 2178 5E LD E,(HL) 4958 2179 23 INC HL 4959 217A 56 LD D,(HL) 4960 217B 09 ADD HL,BC ;hl Zeiger auf Highbyte der Spriteadresse 4961 217C 7E LD A,(HL) 4962 217D 2B DEC HL 4963 217E 6E LD L,(HL) 4964 217F 67 LD H,A ;hl Quelle de Zeiger in VRAM 4965 2180 3E 4C LD A,FIGS 4966 2182 D3 99 OUT (COMNP),A 4967 2184 3E 04 LD A,4 4968 2186 D3 98 OUT (PARAP),a 4969 2188 AF XOR A 4970 2189 D3 98 OUT (PARAP),A 4971 218B D3 98 OUT (PARAP),A ;Anzahl -1 = 0 4972 218D C1 POP BC 4973 218E 0E 98 LD C,PARAP 4974 2190 CD A0 21 CALL RUECK2 ;Spalte 1 mit MASKE schreiben 4975 2193 06 FF LD B,0FFH 4976 2195 CD A0 21 CALL RUECK2 ;Spalte 2 mit Maske FF schreiben 4977 2198 F1 POP AF 4978 2199 CD 9F 21 CALL RUECK1 ;Spalte 3 mit NMASKE schreiben 4979 219C D1 POP DE 4980 219D C1 POP BC 4981 219E C9 RET ;---------------------------------------------------------- ;1 mal 8 Worte senkrecht in den Bildspeicher schreiben ;IN: a Maske de POIADR hl Zeiger in Quellpuffer ;OUT: de POIADR+1 hl Zeiger in Quellpuffer ; 4982 219F 47 RUECK1: LD B,A 4983 21A0 3E 49 RUECK2: LD A,CURS 4984 21A2 D3 99 OUT (COMNP),A 4985 21A4 ED 59 OUT (C),E 4986 21A6 ED 51 OUT (C),D 4987 21A8 3E 4A LD A,MASK 4988 21AA D3 99 OUT (COMNP),A 4989 21AC ED 41 OUT (C),B 4990 21AE ED 41 OUT (C),B 4991 21B0 06 10 LD B,16 4992 21B2 3E 20 LD A,WDATWO 4993 21B4 D3 99 OUT (COMNP),A ;hl Quellpuffer 4994 21B6 ED B3 OTIR 4995 21B8 13 INC DE ;POIADR +1 4996 21B9 C9 RET ;================================================================ ;Kollissionsanmeldung ;-------------------------------------------------------------- 4997 21BA 3A 82 F6 BKOLLI: LD A,(HSWAP) 4998 21BD A7 AND A 4999 21BE C0 RET NZ ;Spriteinterrupt bereits angemeldet 5000 21BF 3C INC A 5001 21C0 32 82 F6 LD (HSWAP),A 5002 21C3 21 DB FB KOLLI: LD HL,SPRISW 5003 21C6 7E LD A,(HL) 5004 21C7 E6 01 AND 1 ;IR ON gewesen? 5005 21C9 C8 RET Z ;nein 5006 21CA 7E LD A,(HL) 5007 21CB F6 04 OR 4 ;IR STOP gewesen? 5008 21CD BE CP (HL) 5009 21CE C8 RET Z ;ja 5010 21CF 77 LD (HL),A ;IR STOP 5011 21D0 EE 05 XOR 05H 5012 21D2 C0 RET NZ 5013 21D3 21 CE FA LD HL,IRVAN 5014 21D6 34 INC (HL) ;Anmeldung hochzaehlen 5015 21D7 C9 RET ;================================================================ ;SPRiteRESet ;---------------------------------------------------------------- 5016 21D8 21 93 FF SPRRES: LD HL,SPRT0 5017 21DB 06 40 LD B,64 5018 21DD AF XOR A 5019 21DE 77 SPRRE1: LD (HL),A 5020 21DF 23 INC HL 5021 21E0 10 FC DJNZ SPRRE1 5022 21E2 C9 RET ;---------------------------------------------------------------- 5023 21E3 FF RST 38H ; bis 5307 22FF FF RST 38H ;*************************************** ; ; ############################################### BASIC.ASM ab hier (UZ) ; ;*************************************** ;================================================ ; ROM-BASIC ; File: BASIC.S ; Stand: 27.06.89 ;=============================================== *L OFF ;********************************************************** ; externals aus BIC_SYS ;********************************************************** ZG EQU 4 CPSTX EQU 8 TCHAR EQU 10H CHARO EQU 18H CPREG EQU 20H TYPTST EQU 28H SPRRES EQU 69H BANKPO EQU 0A8H L3CALL EQU 1CH TAFCB EQU 14AH EDI1 EQU 0AEH STPTST EQU 0BAH LATXTM EQU 0D2H EDI2 EQU 0B1H BREAK EQU 0BDH GETST EQU 0B4H TPPOS EQU 10EH MKPMA EQU 111H SPOINT EQU 120H STAINK EQU 11AH LDPMA EQU 114H FILL EQU 123H STPMA EQU 117H GPOINT EQU 11DH PAIUP1 EQU 129H APUP EQU 105H PAIUP2 EQU 12CH PAIUP3 EQU 12FH APDWN EQU 10BH LDELLI EQU 126H WMOFF EQU 0F0H OUTBYT EQU 0EDH MOFF EQU 0E7H OUTVT EQU 0EAH INBYTE EQU 0E4H INVT EQU 0E1H MUR2 EQU 153H MUR1 EQU 150H BANKUM EQU 24H MUZELV EQU 99H MU1D EQU 0F6H MUINIT EQU 90H MUPUW EQU 0F9H LREB EQU 0CH TXTGSC EQU 08DH BKEYAN EQU 0C9H FTINI EQU 03EH MUINI EQU 03BH INBCDE EQU 59H KEYOFF EQU 0CCH GPAD EQU 0DBH GSTICK EQU 0D8H GPDL EQU 0DEH GSTRIG EQU 0D5H ZCLS EQU 0C3H CRSPOS EQU 0C6H MOTST EQU 0F3H MUOTAE EQU 093H CHRTST EQU 0ABH KEYON EQU 0CFH OUTBCA EQU 56H OTBCDE EQU 5CH SELSCR EQU 5FH DTMABF EQU 141H SETPAP EQU 171H SETPAL EQU 16EH SETBOR EQU 165H KOMSCR EQU 174H WRZEMU EQU 177H PUTSPR EQU 17AH BSINIT EQU 168H APRGT1 EQU 0FCH APLFT1 EQU 0FFH APDWN1 EQU 108H VFTINI EQU 15CH TGRASC EQU 16BH RDVRM EQU 4AH WRTVRM EQU 4DH SCR0 EQU 6Ch MONTV EQU 17DH external INKEY RDRIPU OUTASC PRTOUT external PRSTA ;============================================= ; globals fuer BIC_SYS und BIC_DSK ;============================================= global AC1HLT global AC1IHL global ADD8 global ADRDE0 global ADRTDE global ADTDE global AUSGE global AUZN global BNKTS9 global BYTAE1 global BYTAE2 global BYTAE3 global CDBL global CDBL1 global CHR2 global CINT global CINT1 global CLOSE1 global CLOSEA global DATNA global DIM1 global DIV8 global ERALOP global ERBFNA global ERBFNR global ERFC global ERFIOV global ERINPE global ERINT global ERNTFO global ERNTOP global ERRO global ERSN global ERTM global FCBAD global FCBBE5 global FN7 global GERDS global HAUZN global HLAC1T global INIBA global INIT2 global INKUEB global INKUP global INT0 global INTDE2 global INTPA2 global KOM7 global LDELLI global LEERZK global LINP14 global LSTRE1 global LSTRES global MLT4 global MLT8HL global MOERR0 global NEW2 global NLDIRT global OPEN4 global OUTZK global POS1 global POS2 global PTNEW global REN10 global RUNMOD global SNAL1 global SNAL3 global SUB8 global TCHAR0 global TCHARD global TSTZK global TYPTS0 global JCPSTX global JTYPTS global JTCHAR global WIUEB global WLAZK1 global XYUEB global XYUEB1 global ZKUP18 global ZKUP2 global JBAINI global ERDEVI global STOP1 global ERRO3 global CHRO98 global BPA1IW global YTAUS1 ;;*L ON ;============================================= 5308 2300 C3 CA 7C JBAINI: JP INIT 5309 2303 C3 5D 55 JCPSTX: JP CPSTX0 5310 2306 C3 4F 46 JTCHAR: JP TCHAR0 5311 2309 C3 68 55 JTYPTS: JP TYPTS0 ; ARITHMETIK 8 BYTES 5312 230C 21 0D F7 SUB8: LD HL,AC2 5313 230F 7E LD A,(HL) 5314 2310 B7 OR A 5315 2311 C8 RET Z 5316 2312 EE 80 XOR 80H 5317 2314 77 LD (HL),A 5318 2315 18 09 JR ADD81 ; 5319 2317 CD 6F 2B ADD80: CALL HLAC2T 5320 231A 21 0D F7 ADD8: LD HL,AC2 5321 231D 7E LD A,(HL) 5322 231E B7 OR A 5323 231F C8 RET Z 5324 2320 E6 7F ADD81: AND 7FH 5325 2322 47 LD B,A 5326 2323 11 BC F6 LD DE,AC1 5327 2326 1A LD A,(DE) 5328 2327 B7 OR A 5329 2328 CA 85 2B JP Z,AC21T 5330 232B E6 7F AND 7FH 5331 232D 90 SUB B 5332 232E 30 11 JR NC,ADD83 5333 2330 2F CPL 5334 2331 3C INC A 5335 2332 F5 PUSH AF 5336 2333 E5 PUSH HL 5337 2334 06 08 LD B,08H 5338 2336 1A ADD82: LD A,(DE) 5339 2337 4E LD C,(HL) 5340 2338 77 LD (HL),A 5341 2339 79 LD A,C 5342 233A 12 LD (DE),A 5343 233B 13 INC DE 5344 233C 23 INC HL 5345 233D 10 F7 DJNZ ADD82 5346 233F E1 POP HL 5347 2340 F1 POP AF 5348 2341 FE 10 ADD83: CP 10H 5349 2343 D0 RET NC 5350 2344 F5 PUSH AF 5351 2345 AF XOR A 5352 2346 32 C4 F6 LD (ARIBU),A 5353 2349 32 15 F7 LD (HLPCNV),A 5354 234C 21 0E F7 LD HL,AC2+1 5355 234F F1 POP AF 5356 2350 CD 23 24 CALL ADD8O 5357 2353 21 0D F7 LD HL,AC2 5358 2356 3A BC F6 LD A,(AC1) 5359 2359 AE XOR (HL) 5360 235A FA 77 23 JP M,ADD84 5361 235D 3A 15 F7 LD A,(HLPCNV) 5362 2360 32 C4 F6 LD (ARIBU),A 5363 2363 CD D9 23 CALL ADD8E 5364 2366 D2 BC 23 JP NC,ADD8B 5365 2369 EB EX DE,HL 5366 236A 7E LD A,(HL) 5367 236B 34 INC (HL) 5368 236C AE XOR (HL) 5369 236D FA 68 40 JP M,EROV 5370 2370 CD 5B 24 CALL ADD8S 5371 2373 CB E6 SET 4,(HL) 5372 2375 18 45 JR ADD8B 5373 2377 CD EB 23 ADD84: CALL ADD8H 5374 237A 21 BD F6 ADD85: LD HL,AC1+1 5375 237D 01 00 08 LD BC,0800H 5376 2380 7E ADD86: LD A,(HL) 5377 2381 B7 OR A 5378 2382 20 08 JR NZ,ADD87 5379 2384 23 INC HL 5380 2385 0D DEC C 5381 2386 0D DEC C 5382 2387 10 F7 DJNZ ADD86 5383 2389 C3 FD 2A JP NULAC1 5384 238C E6 F0 ADD87: AND 0F0H ;PLUSTOK 5385 238E 20 06 JR NZ,ADD88 5386 2390 E5 PUSH HL 5387 2391 CD 17 24 CALL ADD8L 5388 2394 E1 POP HL 5389 2395 0D DEC C 5390 2396 3E 08 ADD88: LD A,08H 5391 2398 90 SUB B 5392 2399 28 12 JR Z,ADD8A 5393 239B F5 PUSH AF 5394 239C C5 PUSH BC 5395 239D 48 LD C,B 5396 239E 11 BD F6 LD DE,AC1+1 5397 23A1 06 00 LD B,00H 5398 23A3 ED B0 LDIR 5399 23A5 C1 POP BC 5400 23A6 F1 POP AF 5401 23A7 47 LD B,A 5402 23A8 AF XOR A 5403 23A9 12 ADD89: LD (DE),A 5404 23AA 13 INC DE 5405 23AB 10 FC DJNZ ADD89 5406 23AD 79 ADD8A: LD A,C 5407 23AE B7 OR A 5408 23AF 28 0B JR Z,ADD8B 5409 23B1 21 BC F6 LD HL,AC1 5409 23B1 21 BC F6 LD HL,EROV 5415 23BB C8 RET Z 5416 23BC 21 C4 F6 ADD8B: LD HL,ARIBU 5417 23BF 06 07 LD B,07H 5418 23C1 7E ADD8C: LD A,(HL) 5419 23C2 FE 50 CP 'P' 5420 23C4 D8 RET C 5421 23C5 2B DEC HL 5422 23C6 AF XOR A 5423 23C7 37 SCF 5424 23C8 8E ADD8D: ADC A,(HL) 5425 23C9 27 DAA 5426 23CA 77 LD (HL),A 5427 23CB D0 RET NC 5428 23CC 2B DEC HL 5429 23CD 10 F9 DJNZ ADD8D 5430 23CF 7E LD A,(HL) 5431 23D0 34 INC (HL) 5432 23D1 AE XOR (HL) 5433 23D2 FA 68 40 JP M,EROV 5434 23D5 23 INC HL 5435 23D6 36 10 LD (HL),10H 5436 23D8 C9 RET 5437 23D9 21 14 F7 ADD8E: LD HL,AC2+7 5438 23DC 11 C3 F6 LD DE,AC1+7 5439 23DF 06 07 LD B,07H 5440 23E1 AF ADD8F: XOR A 5441 23E2 1A ADD8G: LD A,(DE) 5442 23E3 8E ADC A,(HL) 5443 23E4 27 DAA 5444 23E5 12 LD (DE),A 5445 23E6 1B DEC DE 5446 23E7 2B DEC HL 5447 23E8 10 F8 DJNZ ADD8G 5448 23EA C9 RET 5449 23EB 21 15 F7 ADD8H: LD HL,HLPCNV 5450 23EE 7E LD A,(HL) 5451 23EF FE 50 CP 'P' 5452 23F1 20 01 JR NZ,ADD8I 5453 23F3 34 INC (HL) 5454 23F4 11 C4 F6 ADD8I: LD DE,ARIBU 5455 23F7 06 08 LD B,08H 5456 23F9 AF XOR A 5457 23FA 1A ADD8J: LD A,(DE) 5458 23FB 9E SBC A,(HL) 5459 23FC 27 DAA 5460 23FD 12 LD (DE),A 5461 23FE 1B DEC DE 5462 23FF 2B DEC HL 5463 2400 10 F8 DJNZ ADD8J 5464 2402 D0 RET NC 5465 2403 EB EX DE,HL 5466 2404 7E LD A,(HL) 5467 2405 EE 80 XOR 80H 5468 2407 77 LD (HL),A 5469 2408 21 C4 F6 LD HL,ARIBU 5470 240B 06 08 LD B,08H 5471 240D AF XOR A 5472 240E 3E 00 ADD8K: LD A,00H 5473 2410 9E SBC A,(HL) 5474 2411 27 DAA 5475 2412 77 LD (HL),A 5476 2413 2B DEC HL 5477 2414 10 F8 DJNZ ADD8K 5478 2416 C9 RET 5479 2417 21 C4 F6 ADD8L: LD HL,ARIBU 5480 241A C5 ADD8M: PUSH BC 5481 241B AF XOR A 5482 241C ED 6F ADD8N: RLD 5483 241E 2B DEC HL 5484 241F 10 FB DJNZ ADD8N 5485 2421 C1 POP BC 5486 2422 C9 RET 5487 2423 B7 ADD8O: OR A 5488 2424 1F RRA 5489 2425 F5 PUSH AF 5490 2426 B7 OR A 5491 2427 CA 62 24 JP Z,ADD8U 5492 242A F5 PUSH AF 5493 242B 2F CPL 5494 242C 3C INC A 5495 242D 4F LD C,A 5496 242E 06 FF LD B,0FFH 5497 2430 11 07 00 LD DE,0007H 5498 2433 19 ADD HL,DE 5499 2434 54 LD D,H 5500 2435 5D LD E,L 5501 2436 09 ADD HL,BC 5502 2437 3E 08 LD A,08H 5503 2439 81 ADD A,C 5504 243A 4F LD C,A 5505 243B C5 PUSH BC 5506 243C 06 00 LD B,00H 5507 243E ED B8 LDDR 5508 2440 C1 POP BC 5509 2441 F1 POP AF 5510 2442 23 INC HL 5511 2443 13 INC DE 5512 2444 D5 PUSH DE 5513 2445 47 LD B,A 5514 2446 AF XOR A 5515 2447 77 ADD8P: LD (HL),A 5516 2448 23 INC HL 5517 2449 10 FC DJNZ ADD8P 5518 244B E1 POP HL 5519 244C F1 POP AF 5520 244D D0 RET NC 5521 244E 79 LD A,C 5522 244F E5 ADD8Q: PUSH HL 5523 2450 C5 PUSH BC 5524 2451 47 LD B,A 5525 2452 AF XOR A 5526 2453 ED 67 ADD8R: RRD 5527 2455 23 INC HL 5528 2456 10 FB DJNZ ADD8R 5529 2458 C1 POP BC 5530 2459 E1 POP HL 5531 245A C9 RET 5532 245B 21 BD F6 ADD8S: LD HL,AC1+1 5533 245E 3E 08 ADD8T: LD A,08H 5534 2460 18 ED JR ADD8Q 5535 2462 F1 ADD8U: POP AF 5536 2463 D0 RET NC 5537 2464 18 F8 JR ADD8T ; 5538 2466 CD F1 2A MLT8: CALL TVORZ 5539 2469 C8 RET Z 5540 246A 3A 0D F7 LD A,(AC2) 5541 246D B7 OR A 5542 246E CA FD 2A JP Z,NULAC1 5543 2471 47 LD B,A 5544 2472 21 BC F6 LD HL,AC1 5545 2475 AE XOR (HL) 5546 2476 E6 80 AND 80H 5547 2478 4F LD C,A 5548 2479 CB B8 RES 7,B 5549 247B 7E LD A,(HL) 5550 247C E6 7F AND 7FH 5551 247E 80 ADD A,B 5552 247F 47 LD B,A 5553 2480 36 00 LD (HL),00H 5554 2482 E6 C0 AND 0C0H 5555 2484 C8 RET Z 5556 2485 FE C0 CP 0C0H 5557 2487 20 03 JR NZ,MLT81 5558 2489 C3 68 40 JP EROV 5559 248C 78 MLT81: LD A,B 5560 248D C6 40 ADD A,'@' 5561 248F E6 7F AND 7FH 5562 2491 C8 RET Z 5563 2492 B1 OR C 5564 2493 2B DEC HL 5565 2494 77 LD (HL),A 5566 2495 11 0B F7 LD DE,HLPRND+7 5567 2498 01 08 00 LD BC,0008H 5568 249B 21 C3 F6 LD HL,AC1+7 5569 249E D5 PUSH DE 5570 249F ED B8 LDDR 5571 24A1 23 INC HL 5572 24A2 AF XOR A 5573 24A3 06 08 LD B,08H 5574 24A5 77 MLT82: LD (HL),A 5575 24A6 23 INC HL 5576 24A7 10 FC DJNZ MLT82 5577 24A9 D1 POP DE 5578 24AA 01 03 25 LD BC,MLT8A 5579 24AD C5 PUSH BC 5580 24AE CD 0A 25 MLT83: CALL MLT8B 5581 24B1 E5 PUSH HL 5582 24B2 01 08 00 LD BC,0008H 5583 24B5 EB EX DE,HL 5584 24B6 ED B8 LDDR 5585 24B8 EB EX DE,HL 5586 24B9 21 03 F7 LD HL,ARIBU+3FH 5587 24BC 06 08 LD B,08H 5588 24BE CD E1 23 CALL ADD8F 5589 24C1 D1 POP DE 5590 24C2 CD 0A 25 CALL MLT8B 5591 24C5 0E 07 LD C,07H 5592 24C7 11 14 F7 LD DE,AC2+7 5593 24CA 1A MLT84: LD A,(DE) 5594 24CB B7 OR A 5595 24CC 20 04 JR NZ,MLT85 5596 24CE 1B DEC DE 5597 24CF 0D DEC C 5598 24D0 18 F8 JR MLT84 5599 24D2 1A MLT85: LD A,(DE) 5600 24D3 1B DEC DE 5601 24D4 D5 PUSH DE 5602 24D5 21 D3 F6 LD HL,ARIBU+15 5603 24D8 87 MLT86: ADD A,A 5604 24D9 38 08 JR C,MLT88 5605 24DB 28 14 JR Z,MLT89 5606 24DD 11 08 00 MLT87: LD DE,0008H 5607 24E0 19 ADD HL,DE 5608 24E1 18 F5 JR MLT86 5609 24E3 F5 MLT88: PUSH AF 5610 24E4 06 08 LD B,08H 5611 24E6 11 C3 F6 LD DE,AC1+7 5612 24E9 E5 PUSH HL 5613 24EA CD E1 23 CALL ADD8F 5614 24ED E1 POP HL 5615 24EE F1 POP AF 5616 24EF 18 EC JR MLT87 5617 24F1 06 0F MLT89: LD B,0FH 5618 24F3 11 CA F6 LD DE,ARIBU+6 5619 24F6 21 CB F6 LD HL,ARIBU+7 5620 24F9 CD 7E 2B CALL NLDDR 5621 24FC 36 00 LD (HL),00H 5622 24FE D1 POP DE 5623 24FF 0D DEC C 5624 2500 20 D0 JR NZ,MLT85 5625 2502 C9 RET 5626 2503 2B MLT8A: DEC HL 5627 2504 7E LD A,(HL) 5628 2505 23 INC HL 5629 2506 77 LD (HL),A 5630 2507 C3 7A 23 JP ADD85 5631 250A 21 F8 FF MLT8B: LD HL,-8 5632 250D 19 ADD HL,DE 5633 250E 0E 03 LD C,03H 5634 2510 06 08 MLT8C: LD B,08H 5635 2512 B7 OR A 5636 2513 1A MLT8D: LD A,(DE) 5637 2514 8F ADC A,A 5638 2515 27 DAA 5639 2516 77 LD (HL),A 5640 2517 2B DEC HL 5641 2518 1B DEC DE 5642 2519 10 F8 DJNZ MLT8D 5643 251B 0D DEC C 5644 251C 20 F2 JR NZ,MLT8C 5645 251E C9 RET ; 5646 251F 3A 0D F7 DIV8: LD A,(AC2) 5647 2522 B7 OR A 5648 2523 CA 59 40 JP Z,ERD0 5649 2526 47 LD B,A 5650 2527 21 BC F6 LD HL,AC1 5651 252A 7E LD A,(HL) 5652 252B B7 OR A 5653 252C CA FD 2A JP Z,NULAC1 5654 252F A8 XOR B 5655 2530 E6 80 AND 80H 5656 2532 4F LD C,A 5657 2533 CB B8 RES 7,B 5658 2535 7E LD A,(HL) 5659 2536 E6 7F AND 7FH 5660 2538 90 SUB B 5661 2539 47 LD B,A 5662 253A 1F RRA 5663 253B A8 XOR B 5664 253C E6 40 AND '@' 5665 253E 36 00 LD (HL),00H 5666 2540 28 07 JR Z,DIV82 5667 2542 78 LD A,B 5668 2543 E6 80 AND 80H 5669 2545 C0 RET NZ 5670 2546 C3 68 40 DIV81: JP EROV 5671 2549 78 DIV82: LD A,B 5672 254A C6 41 ADD A,'A' 5673 254C E6 7F AND 7FH 5674 254E 77 LD (HL),A 5675 254F 28 F5 JR Z,DIV81 5676 2551 B1 OR C 5677 2552 36 00 LD (HL),00H 5678 2554 2B DEC HL 5679 2555 77 LD (HL),A 5680 2556 11 C3 F6 LD DE,AC1+7 5681 2559 21 14 F7 LD HL,AC2+7 5682 255C 06 07 LD B,07H 5683 255E AF XOR A 5684 255F BE DIV83: CP (HL) 5685 2560 20 04 JR NZ,DIV84 5686 2562 1B DEC DE 5687 2563 2B DEC HL 5688 2564 10 F9 DJNZ DIV83 5689 2566 22 B8 F6 DIV84: LD (HARI2),HL 5690 2569 EB EX DE,HL 5691 256A 22 B6 F6 LD (HARI1),HL 5692 256D 78 LD A,B 5693 256E 32 BA F6 LD (HARI3),A 5694 2571 21 04 F7 LD HL,HLPRND 5695 2574 06 0F DIV85: LD B,0FH 5696 2576 E5 DIV86: PUSH HL 5697 2577 C5 PUSH BC 5698 2578 2A B8 F6 LD HL,(HARI2) 5699 257B EB EX DE,HL 5700 257C 2A B6 F6 LD HL,(HARI1) 5701 257F 3A BA F6 LD A,(HARI3) 5702 2582 0E FF LD C,0FFH 5703 2584 0C DIV87: INC C 5704 2585 47 LD B,A 5705 2586 E5 PUSH HL 5706 2587 D5 PUSH DE 5707 2588 AF XOR A 5708 2589 EB EX DE,HL 5709 258A 1A DIV88: LD A,(DE) 5710 258B 9E SBC A,(HL) 5711 258C 27 DAA 5712 258D 12 LD (DE),A 5713 258E 2B DEC HL 5714 258F 1B DEC DE 5715 2590 10 F8 DJNZ DIV88 5716 2592 1A LD A,(DE) 5717 2593 98 SBC A,B 5718 2594 12 LD (DE),A 5719 2595 D1 POP DE 5720 2596 E1 POP HL 5721 2597 3A BA F6 LD A,(HARI3) 5722 259A 30 E8 JR NC,DIV87 5723 259C 47 LD B,A 5724 259D EB EX DE,HL 5725 259E CD E1 23 CALL ADD8F 5726 25A1 30 02 JR NC,DIV89 5727 25A3 EB EX DE,HL 5728 25A4 34 INC (HL) 5729 25A5 79 DIV89: LD A,C 5730 25A6 C1 POP BC 5731 25A7 4F LD C,A 5732 25A8 C5 PUSH BC 5733 25A9 CB 38 SRL B 5734 25AB 04 INC B 5735 25AC 58 LD E,B 5736 25AD 16 00 LD D,00H 5737 25AF 21 BB F6 LD HL,AC1-1 5738 25B2 19 ADD HL,DE 5739 25B3 CD 1A 24 CALL ADD8M 5740 25B6 C1 POP BC 5741 25B7 E1 POP HL 5742 25B8 78 LD A,B 5743 25B9 0C INC C 5744 25BA 0D DEC C 5745 25BB 20 36 JR NZ,DIV8E 5746 25BD FE 0F CP 0FH 5747 25BF 28 23 JR Z,DIV8D 5748 25C1 0F RRCA 5749 25C2 07 RLCA 5750 25C3 30 2E JR NC,DIV8E 5751 25C5 C5 PUSH BC 5752 25C6 E5 PUSH HL 5753 25C7 21 BC F6 LD HL,AC1 5754 25CA 06 08 LD B,08H 5755 25CC AF XOR A 5756 25CD BE DIV8A: CP (HL) 5757 25CE 20 0F JR NZ,DIV8C 5758 25D0 23 INC HL 5759 25D1 10 FA DJNZ DIV8A 5760 25D3 E1 POP HL 5761 25D4 C1 POP BC 5762 25D5 CB 38 SRL B 5763 25D7 04 INC B 5764 25D8 AF XOR A 5765 25D9 77 DIV8B: LD (HL),A 5766 25DA 23 INC HL 5767 25DB 10 FC DJNZ DIV8B 5768 25DD 18 26 JR DIV8H 5769 25DF E1 DIV8C: POP HL 5770 25E0 C1 POP BC 5771 25E1 78 LD A,B 5772 25E2 18 0F JR DIV8E 5773 25E4 3A BB F6 DIV8D: LD A,(HDIV) 5774 25E7 5F LD E,A 5775 25E8 3D DEC A 5776 25E9 32 BB F6 LD (HDIV),A 5777 25EC AB XOR E 5778 25ED F2 74 25 JP P,DIV85 5779 25F0 C3 FD 2A JP NULAC1 5780 25F3 1F DIV8E: RRA 5781 25F4 79 LD A,C 5782 25F5 38 05 JR C,DIV8F 5783 25F7 B6 OR (HL) 5784 25F8 77 LD (HL),A 5785 25F9 23 INC HL 5786 25FA 18 05 JR DIV8G 5787 25FC 87 DIV8F: ADD A,A 5788 25FD 87 ADD A,A 5789 25FE 87 ADD A,A 5790 25FF 87 ADD A,A 5791 2600 77 LD (HL),A 5792 2601 05 DIV8G: DEC B 5793 2602 C2 76 25 JP NZ,DIV86 5794 2605 21 C4 F6 DIV8H: LD HL,ARIBU 5795 2608 11 0B F7 LD DE,HLPRND+7 5796 260B 06 08 LD B,08H 5797 260D CD 7E 2B CALL NLDDR 5798 2610 C3 03 25 JP MLT8A ; 5799 2613 21 E3 29 COS: LD HL,KP1591 5800 2616 CD BB 28 CALL MLT8HL 5801 2619 3A BC F6 LD A,(AC1) 5802 261C E6 7F AND 7FH 5803 261E 32 BC F6 LD (AC1),A 5804 2621 21 A3 29 LD HL,KP25 5805 2624 CD B2 28 CALL SUB8HL 5806 2627 CD 0D 2B CALL ABS2 5807 262A 18 06 JR SIN1 ; 5808 262C 21 E3 29 SIN: LD HL,KP1591 5809 262F CD BB 28 CALL MLT8HL 5810 2632 3A BC F6 SIN1: LD A,(AC1) 5811 2635 B7 OR A 5812 2636 FC 00 29 CALL M,HIRO2 5813 2639 CD 4C 29 CALL AC1ST 5814 263C CD 4F 2D CALL INT 5815 263F CD CD 28 CALL AC1AC2 5816 2642 CD 61 29 CALL STAC1 5817 2645 CD 0C 23 CALL SUB8 5818 2648 3A BC F6 LD A,(AC1) 5819 264B FE 40 CP '@' 5820 264D DA 75 26 JP C,SIN3 5821 2650 3A BD F6 LD A,(AC1+1) 5822 2653 FE 25 CP '%' 5823 2655 DA 75 26 JP C,SIN3 5824 2658 FE 75 CP 'u' ;KLEIN U 5825 265A D2 6C 26 JP NC,SIN2 5826 265D CD CD 28 CALL AC1AC2 5827 2660 21 91 29 LD HL,KP5 5828 2663 CD DC 28 CALL IHLAC1 5829 2666 CD 0C 23 CALL SUB8 5830 2669 C3 75 26 JP SIN3 5831 266C 21 9B 29 SIN2: LD HL,K1 5832 266F CD D0 28 CALL IHLAC2 5833 2672 CD 0C 23 CALL SUB8 5834 2675 21 6F 2A SIN3: LD HL,KTB4 5835 2678 C3 08 29 JP HIRO3 ; 5836 267B CD 4C 29 TAN: CALL AC1ST 5837 267E CD 13 26 CALL COS 5838 2681 CD EF 28 CALL HIRO1 5839 2684 CD 2C 26 CALL SIN 5840 2687 CD 5C 29 CALL STAC2 5841 268A 3A 0D F7 LD A,(AC2) 5842 268D B7 OR A 5843 268E C2 1F 25 JP NZ,DIV8 5844 2691 C3 68 40 JP EROV ; 5845 2694 3A BC F6 ATN: LD A,(AC1) 5846 2697 B7 OR A 5847 2698 C8 RET Z 5848 2699 FC 00 29 CALL M,HIRO2 5849 269C FE 41 CP 'A' 5850 269E DA BC 26 JP C,ATN1 5851 26A1 CD CD 28 CALL AC1AC2 5852 26A4 21 9B 29 LD HL,K1 5853 26A7 CD DC 28 CALL IHLAC1 5854 26AA CD 1F 25 CALL DIV8 5855 26AD CD BC 26 CALL ATN1 5856 26B0 CD CD 28 CALL AC1AC2 5857 26B3 21 C3 29 LD HL,K1P570 5858 26B6 CD DC 28 CALL IHLAC1 5859 26B9 C3 0C 23 JP SUB8 5860 26BC 21 CB 29 ATN1: LD HL,KP2679 5861 26BF CD C7 28 CALL VGL8HL 5862 26C2 FA EC 26 JP M,ATN2 5863 26C5 CD 4C 29 CALL AC1ST 5864 26C8 21 D3 29 LD HL,K1P732 5865 26CB CD AC 28 CALL ADD8HL 5866 26CE CD EF 28 CALL HIRO1 5867 26D1 21 D3 29 LD HL,K1P732 5868 26D4 CD BB 28 CALL MLT8HL 5869 26D7 21 9B 29 LD HL,K1 5870 26DA CD B2 28 CALL SUB8HL 5871 26DD CD 5C 29 CALL STAC2 5872 26E0 CD 1F 25 DIV8 5873 26E3 CD EC 26 ATN2 5874 26E6 21 DB 29 LD HL,KP5235 5875 26E9 C3 AC 28 JP ADD8HL 5876 26EC 21 B0 2A ATN2: LD HL,KTB5 5877 26EF C3 08 29 JP HIRO3 ; 5878 26F2 CD F1 2A LOG: CALL TVORZ 5879 26F5 FA 40 47 JP M,ERFC 5880 26F8 CA 40 47 JP Z,ERFC 5881 26FB 21 BC F6 LD HL,AC1 5882 26FE 7E LD A,(HL) 5883 26FF F5 PUSH AF 5884 2700 36 41 LD (HL),41H 5885 2702 21 AB 29 LD HL,K3P162 5886 2705 CD C7 28 CALL VGL8HL 5887 2708 FA 12 27 JP M,LOG1 5888 270B F1 POP AF 5889 270C 3C INC A 5890 270D F5 PUSH AF 5891 270E 21 BC F6 LD HL,AC1 5892 2711 35 DEC (HL) 5893 2712 F1 LOG1: POP AF 5894 2713 32 63 F5 LD (HARI4),A 5895 2716 CD 4C 29 CALL AC1ST 5896 2719 21 9B 29 LD HL,K1 5897 271C CD AC 28 CALL ADD8HL 5898 271F CD EF 28 CALL HIRO1 5899 2722 21 9B 29 LD HL,K1 5900 2725 CD B2 28 CALL SUB8HL 5901 2728 CD 5C 29 CALL STAC2 5902 272B CD 1F 25 CALL DIV8 5903 272E CD 4C 29 CALL AC1ST 5904 2731 CD B8 28 CALL MLT8A1 5905 2734 CD 4C 29 CALL AC1ST 5906 2737 CD 4C 29 CALL AC1ST 5907 273A 21 46 2A LD HL,KTB3 5908 273D CD 23 29 CALL HIRO5 5909 2740 CD EF 28 CALL HIRO1 5910 2743 21 25 2A LD HL,KTB2 5911 2746 CD 23 29 CALL HIRO5 5912 2749 CD 5C 29 CALL STAC2 5913 274C CD 1F 25 CALL DIV8 5914 274F CD 5C 29 CALL STAC2 5915 2752 CD 66 24 CALL MLT8 5916 2755 21 B3 29 LD HL,KP8685 5917 2758 CD AC 28 CALL ADD8HL 5918 275B CD 5C 29 CALL STAC2 5919 275E CD 66 24 CALL MLT8 5920 2761 CD 4C 29 CALL AC1ST 5921 2764 3A 63 F5 LD A,(HARI4) 5922 2767 D6 41 SUB 'A' 5923 2769 6F LD L,A 5924 276A 87 ADD A,A 5925 276B 9F SBC A,A 5926 276C 67 LD H,A 5927 276D CD 4B 2C CALL CV4BC1 5928 2770 CD C2 2C CALL CDBL1 5929 2773 CD 5C 29 CALL STAC2 5930 2776 CD 1A 23 CALL ADD8 5931 2779 21 BB 29 LD HL,K2P302 5932 277C C3 BB 28 JP MLT8HL ; 5933 277F CD F1 2A SQR: CALL TVORZ 5934 2782 C8 RET Z 5935 2783 FA 40 47 JP M,ERFC 5936 2786 CD CD 28 CALL AC1AC2 5937 2789 3A BC F6 LD A,(AC1) 5938 278C B7 OR A 5939 278D 1F RRA 5940 278E CE 20 ADC A,' ' 5941 2790 32 0D F7 LD (AC2),A 5942 2793 3A BD F6 LD A,(AC1+1) 5943 2796 B7 OR A 5944 2797 0F RRCA 5945 2798 B7 OR A 5946 2799 0F RRCA 5947 279A E6 33 AND '3' 5948 279C C6 10 ADD A,10H 5949 279E 32 0E F7 LD (AC2+1),A 5950 27A1 3E 07 LD A,07H 5951 27A3 32 63 F5 SQR1: LD (HARI4),A 5952 27A6 CD 4C 29 CALL AC1ST 5953 27A9 CD 47 29 CALL AC2ST 5954 27AC CD 1F 25 CALL DIV8 5955 27AF CD 5C 29 CALL STAC2 5956 27B2 CD 1A 23 CALL ADD8 5957 27B5 21 91 29 LD HL,KP5 5958 27B8 CD BB 28 CALL MLT8HL 5959 27BB CD CD 28 CALL AC1AC2 5960 27BE CD 61 29 CALL STAC1 5961 27C1 3A 63 F5 LD A,(HARI4) 5962 27C4 3D DEC A 5963 27C5 20 DC JR NZ,SQR1 5964 27C7 C3 D9 28 JP AC2AC1 ; 5965 27CA 21 89 29 EXP: LD HL,KP4342 5966 27CD CD BB 28 CALL MLT8HL 5967 27D0 CD 4C 29 CALL AC1ST 5968 27D3 CD 0A 2C CALL CINT 5969 27D6 7D LD A,L 5970 27D7 17 RLA 5971 27D8 9F SBC A,A 5972 27D9 BC CP H 5973 27DA 28 14 JR Z,EXP2 5974 27DC 7C LD A,H 5975 27DD B7 OR A 5976 27DE F2 ED 27 JP P,EXP1 5977 27E1 CD CF 2C CALL CDBL2 5978 27E4 CD 61 29 CALL STAC1 5979 27E7 21 93 29 LD HL,K0 5980 27EA C3 DC 28 JP IHLAC1 5981 27ED C3 68 40 EXP1: JP EROV 5982 27F0 22 63 F5 EXP2: LD (HARI4),HL 5983 27F3 CD BA 2C CALL CDBL 5984 27F6 CD CD 28 CALL AC1AC2 5985 27F9 CD 61 29 CALL STAC1 5986 27FC CD 0C 23 CALL SUB8 5987 27FF 21 91 29 LD HL,KP5 5988 2802 CD C7 28 CALL VGL8HL 5989 2805 F5 PUSH AF 5990 2806 28 08 JR Z,EXP3 5991 2808 38 06 JR C,EXP3 5992 280A 21 91 29 LD HL,KP5 5993 280D CD B2 28 CALL SUB8HL 5994 2810 CD 4C 29 EXP3: CALL AC1ST 5995 2813 21 0C 2A LD HL,KTB1 5996 2816 CD 08 29 CALL HIRO3 5997 2819 CD EF 28 CALL HIRO1 5998 281C 21 EB 29 LD HL,KTB0 5999 281F CD 1A 29 CALL HIRO4 6000 2822 CD 5C 29 CALL STAC2 6001 2825 CD 47 29 CALL AC2ST 6002 2828 CD 4C 29 CALL AC1ST 6003 282B CD 0C 23 CALL SUB8 6004 282E 21 04 F7 LD HL,HLPRND 6005 2831 CD E7 28 CALL AC1IHL 6006 2834 CD 5C 29 CALL STAC2 6007 2837 CD 61 29 CALL STAC1 6008 283A CD 1A 23 CALL ADD8 6009 283D 21 04 F7 LD HL,HLPRND 6010 2840 CD D0 28 CALL IHLAC2 6011 2843 CD 1F 25 CALL DIV8 6012 2846 F1 POP AF 6013 2847 38 08 JR C,EXP4 6014 2849 28 06 JR Z,,EXP4 6015 284B 21 AB 29 LD HL,K3P162 6016 284E CD BB 28 CALL MLT8HL 6017 2851 3A 63 F5 .EXP4. LD A,(HARI4) 6018 2854 21 BC F6 LD HL,AC1 6019 2857 4E LD C,(HL) 6020 2858 86 ADD A,(HL) 6021 2859 77 LD (HL),A 6022 285A A9 XOR C 6023 285B F0 RET P 6024 285C C3 68 40 JP EROV ; 6025 285F CD F1 2A RND: CALL TVORZ 6026 2862 21 1D F7 LD HL,LSTRND 6027 2865 28 2E JR Z,RND1 6028 2867 FC E7 28 CALL M,AC1IHL 6029 286A 21 04 F7 LD HL,HLPRND 6030 286D 11 1D F7 LD DE,LSTRND 6031 2870 CD EA 28 CALL IDEIHL 6032 2873 21 79 29 LD HL,KRND1 6033 2876 CD D0 28 CALL IHLAC2 6034 2879 21 71 29 LD HL,KRND0 6035 287C CD DC 28 CALL IHLAC1 6036 287F 11 0B F7 LD DE,HLPRND+7 6037 2882 CD AE 24 CALL MLT83 6038 2885 11 C4 F6 LD DE,ARIBU 6039 2888 21 1E F7 LD HL,LSTRND+1 6040 288B 06 07 LD B,07H 6041 288D CD 77 2B CALL NLDIR 6042 2890 21 1D F7 LD HL,LSTRND 6043 2893 36 00 LD (HL),00H 6044 2895 CD DC 28 RND1: CALL IHLAC1 6045 2898 21 BC F6 LD HL,AC1 6046 289B 36 40 LD (HL),'@' 6047 289D AF XOR A 6048 289E 32 C4 F6 LD (ARIBU),A 6049 28A1 C3 7A 23 JP ADD85 6050 28A4 11 81 29 RND2: LD DE,KRND2 6051 28A7 21 1D F7 LD HL,LSTRND 6052 28AA 18 3E JR IDEIHL ;********************************************* ; HILFROUTINEN RECHNEN,UMLAD,VGL ;********************************************* 6053 28AC CD D0 28 ADD8HL: CALL IHLAC2 6054 28AF C3 1A 23 JP ADD8 6055 28B2 CD D0 28 SUB8HL: CALL IHLAC2 6056 28B5 C3 0C 23 JP SUB8 6057 28B8 21 BC F6 MLT8A1: LD HL,AC1 6058 28BB CD D0 28 MLT8HL: CALL IHLAC2 6059 28BE C3 66 24 JP MLT8 6060 28C1 CD D0 28 DIV8HL: CALL IHLAC2 6061 28C4 C3 1F 25 JP DIV8 6062 28C7 CD D0 28 VGL8HL: CALL IHLAC2 6063 28CA C3 DC 2B JP VGL8 6064 28CD 21 BC F6 AC1AC2: LD HL,AC1 6065 28D0 11 0D F7 IHLAC2: LD DE,AC2 6066 28D3 EB IHLIDE: EX DE,HL 6067 28D4 CD EA 28 CALL IDEIHL 6068 28D7 EB EX DE,HL 6069 28D8 C9 RET 6070 28D9 21 0D F7 AC2AC1: LD HL,AC2 6071 28DC 11 BC F6 IHLAC1: LD DE,AC1 6072 28DF 18 F2 JR IHLIDE 6073 28E1 CD 4B 2C AC1LRN: CALL CV4BC1 6074 28E4 21 1D F7 LD HL,LSTRND 6075 28E7 11 BC F6 AC1IHL: LD DE,AC1 6076 28EA 06 08 IDEIHL: LD B,08H 6077 28EC C3 77 2B JP NLDIR 6078 28EF E1 HIRO1: POP HL 6079 28F0 22 8B F6 LD (HLPPTR),HL 6080 28F3 CD 5C 29 CALL STAC2 6081 28F6 CD 4C 29 CALL AC1ST 6082 28F9 CD D9 28 CALL AC2AC1 6083 28FC 2A 8B F6 LD HL,(HLPPTR) 6084 28FF E9 JP (HL) 6085 2900 CD 0D 2B HIRO2: CALL ABS2 6086 2903 21 0D 2B LD HL,ABS2 6087 2906 E3 EX (SP),HL 6088 2907 E9 JP (HL) 6089 2908 22 8B F6 HIRO3: LD (HLPPTR),HL 6090 290B CD 4C 29 CALL AC1ST 6091 290E 2A 8B F6 LD HL,(HLPPTR) 6092 2911 CD 1A 29 CALL HIRO4 6093 2914 CD 5C 29 CALL STAC2 6094 2917 C3 66 24 JP MLT8 6095 291A 22 8B F6 HIRO4: LD (HLPPTR),HL 6096 291D CD B8 28 CALL MLT8A1 6097 2920 2A 8B F6 LD HL,(HLPPTR) 6098 2923 7E HIRO5: LD A,(HL) 6099 2924 F5 PUSH AF 6100 2925 23 INC HL 6101 2926 E5 PUSH HL 6102 2927 21 8B F6 LD HL,HLPPTR 6103 292A CD E7 28 CALL AC1IHL 6104 292D E1 POP HL 6105 292E CD DC 28 CALL IHLAC1 6106 2931 F1 HIRO6: POP AF 6107 2932 3D DEC A 6108 2933 C8 RET Z 6109 2934 F5 PUSH AF 6110 2935 E5 PUSH HL 6111 2936 21 8B F6 LD HL,HLPPTR 6112 2939 CD BB 28 CALL MLT8HL 6113 293C E1 POP HL 6114 293D CD D0 28 CALL IHLAC2 6115 2940 E5 PUSH HL 6116 2941 CD 1A 23 CALL ADD8 6117 2944 E1 POP HL 6118 2945 18 EA JR HIRO6 6119 2947 21 14 F7 AC2ST: LD HL,AC2+7 6120 294A 18 03 JR AC1ST1 6121 294C 21 C3 F6 AC1ST: LD HL,AC1+7 6122 294F 3E 04 AC1ST1: LD A,04H 6123 2951 D1 POP DE 6124 2952 46 AC1ST2: LD B,(HL) 6125 2953 2B DEC HL 6126 2954 4E LD C,(HL) 6127 2955 2B DEC HL 6128 2956 C5 PUSH BC 6129 2957 3D DEC A 6130 2958 20 F8 JR NZ,AC1ST2 6131 295A EB EX DE,HL 6132 295B E9 JP (HL) 6133 295C 21 0D F7 STAC2: LD HL,AC2 6134 295F 18 03 JR STAC11 6135 2961 21 BC F6 STAC1: LD HL,AC1 6136 2964 3E 04 STAC11: LD A,04H 6137 2966 D1 POP DE 6138 2967 C1 STAC12: POP BC 6139 2968 71 LD (HL),C 6140 2969 23 INC HL 6141 296A 70 LD (HL),B 6142 296B 23 INC HL 6143 296C 3D DEC A 6144 296D 20 F8 JR NZ,STAC12 6145 296F EB EX DE,HL 6146 2970 E9 JP (HL) ;********************************************* ; BCD-KONSTANTEN ;********************************************* 6147 2971 00 KRND0: DEFB 0 6148 2972 14 DEFB 14H 6149 2973 38 DEFB 38H ;`8` 6149a 2974 98 DEFB 98H 6150 2975 20 DEFB 20H 6150a 2976 42 DEFB 42H ;`B` 6151 2977 08 DEFB 8H 6152 2978 21 DEFB 21H ;`!` 6152a 2979 00 KRND1: DEFB 0 6152b 297A 21 DEFB 21H ;`!` 6153 297B 13 DEFB 13H 6154 297C 24 DEFB 24H ;`$` 6155 297D 86 DEFB 86H 6156 297E 54 DEFB 54H ;`T` 6157 297F 05 DEFB 5H 6158 2980 19 DEFB 19H 6159 2981 00 KRND2: DEFB 0 6160 2982 40 DEFB 40H ;`@` 6161 2983 64 DEFB 64H ;`d` 6162 2984 96 DEFB 96H 6163 2985 51 DEFB 51H ;`Q` 6164 2986 37 DEFB 37H ;`7` 6165 2987 23 DEFB 23H ;`#` 6166 2988 58 DEFB 58H ;`X` 6167 2989 40 KP4342: DEFB 40H ;`@` 6168 298A 43 DEFB 43H ;`C` 6169 298B 42 DEFB 42H ;`B` 6170 298C 94 DEFB 94H 6171 298D 48 DEFB 48H ;`H` 6172 298E 19 DEFB 19H 6173 298F 03 DEFB 3H 6174 2990 24 DEFB 24H ;`$` 6175 2991 40 KP5: DEFB 40H ;`@` 6176 2992 50 DEFB 50H ;`P` 6177 2993 00 K0: DEFB 0 6178 2994 00 DEFB 0 6179 2995 00 DEFB 0 6180 2996 00 DEFB 0 6181 2997 00 DEFB 0 6182 2998 00 DEFB 0 6183 2999 00 DEFB 0 6184 299A 00 DEFB 0 6185 299B 41 K1: DEFB 41H ;`A` 6186 299C 10 DEFB 10H 6186a 299D 00 DEFB 0 6187 299E 00 DEFB 0 6188 299F 00 DEFB 0 6189 29A0 00 DEFB 0 6190 29A1 00 DEFB 0 6191 29A2 00 DEFB 0 6192 29A3 40 KP25: DEFB 40H ;`@` 6193 29A4 25 DEFB 25H ;`%` 6194 29A5 00 DEFB 0 6195 29A6 00 DEFB 0 6196 29A7 00 DEFB 0 6197 29A8 00 DEFB 0 6198 29A9 00 DEFB 0 6199 29AA 00 DEFB 0 6200 29AB 41 K3P162: DEFB 41H ;`A` 6201 29AC 31 DEFB 31H ;`1` 6201a 29AD 62 DEFB 62H ;`b` 6201b 29AE 27 DEFB 27H ;`'` 6202 29AF 76 DEFB 76H ;`v` 6203 29B0 60 DEFB 60H ;``` 6204 29B1 16 DEFB 16H 6204a 29B2 84 DEFB 84H 6205 29B3 40 KP8685: DEFB 40H ;`@` 6206 29B4 86 DEFB 86H 6207 29B5 85 DEFB 85H 6208 29B6 88 DEFB 88H 6209 29B7 96 DEFB 96H 6210 29B8 38 DEFB 38H ;`8` 6210a 29B8 06 DEFB 6H 6211 29BA 50 DEFB 50H ;`P` 6212 29BB 41 K2P302: DEFB 41H ;`A` 6213 29BC 23 DEFB 23H ;`#` 6214 29BD 02 DEFB 2H 6215 29BE 58 DEFB 58H ;`X` 6216 29BF 50 DEFB 50H ;`P` 6217 29C0 92 DEFB 92H 6218 29C1 99 DEFB 99H 6219 29C2 40 DEFB 40H ;`@` 6220 29C3 41 K1P570: DEFB 41H ;`A` 6221 29C4 15 DEFB 15H 6222 29C5 70 DEFB 70H ;`p` 6223 29C6 79 DEFB 79H ;`y` 6224 29C7 63 DEFB 63H ;`c` 6225 29C8 26 DEFB 26H ;`&` 6225a 29C9 79 DEFB 79H ;`y` 6226 29CA 49 DEFB 49H ;`I` 6227 29CB 40 KP2679: DEFB 40H ;`@` 6228 29CC 26 DEFB 26H ;`&` 6228a 29CD 79 DEFB 79H ;`y` 6229 29CE 49 DEFB 49H ;`I` 6230 29CF 19 DEFB 19H 6231 29D0 24 DEFB 24H ;`$` 6232 29D1 31 DEFB 31H ;`1` 6232a 29D2 12 DEFB 12H 6232b 29D3 41 K1P732: DEFB 41H ;`A` 6233 29D4 17 DEFB 17H 6234 29D5 32 DEFB 32H ;`2` 6234a 29D6 05 DEFB 5H 6234b 29D7 08 DEFB 8H 6235 29D8 07 DEFB 7H 6236 29D9 56 DEFB 56H ;`V` 6237 29DA 89 DEFB 89H 6238 29DB 40 KP5235: DEFB 40H ;`@` 6239 29DC 52 DEFB 52H ;`R` 6240 29DD 35 DEFB 35H ;`5` 6241 29DE 98 DEFB 98H 6242 29DF 77 DEFB 77H ;`w`