; SYS4 SYS4B BASIC ; ************************* ; * * ; * Tape-Input/Output * ; * * ; ************************* ; KASSETTENFORMAT ANALOG ZU ROBOTRON ; KOMPLETTE SCHWINGUNGEN !!! ;*__*__*__*__*__*__*__*__*__*__*__*__*__ ; ORG EOP2 ; Zeitkonstanten f}r Schreiben: ZKKAT EQU 93 ;Trennzeichen ZKKA0 EQU 23 ; "0" ZKKA1 EQU 47 ; "1" ; Init vor I/O INITI: DI IN A,(P1AD) OR 40H AND 0DFH INIT: OUT (P1AD),A EI LD HL,(WEND) LD (RWEND),HL CALL NNOM LD (NOMC),HL CALL INIT56 CALL APAGE CTCSTOP LD A,3 ;event. CTC-Stop OUT CTC0 OUT CTC1 JR TON9 CSRLX: LD (IX+2),0FEH CALL SRLX ; Init nach I/O RINIT: LD HL,(NOMC) LD (OUTAB),HL LD HL,(RWEND) LD (WEND),HL LD HL,IOPUF+80H XOR A RINIT1: DEC L LD M,A JR NZ,RINIT1 IN A,(P1AD) AND 9FH OUT (P1AD),A CALL CRLF TON9: IN A,P1BD ;Init nach Ton- SET 7,A ;ausgabe OUT P1BD ;Blink on RES 1,(IX+8) LD A,47H OUT CTC2 LD A,BLZK ;Blinkfrequenz OUT CTC2 RET ;*__*__*__*__*__*__*__*__*__*__*__*__*__ ;P R O G R A M M E Z U R A U S G A B E ISRLX: DI IN A,(P1AD) OR 60H CALL INIT LD (IX+2),0;Block 1 LD BC,0A00H;langer Vorton ;_______________________________________ SRLX: INC (IX+2) ;erh|hen Block DI LD A,87H OUT CTC1 ;INIT CTC LD A,ZKKA1 ;Vorton 1 OUT CTC1 EI PUSH DE LD D,A LD E,A KARA1: CALL AUS ;Vorton ausgeben CPI JP PE,KARA1 CALL AUST ;Trennzeichen LD A,(IX+2) CALL KAUBT ;Blocknr. ausg. LD L,(IX+5) LD H,(IX+6);Blockanfang LD B,80H ;Counter+Pr}fsm. KARA2: LD A,M CALL KAUBT ;128 Datenbytes ;ausgeben LD A,C ADD M LD C,A ;Bilden Pr}fsum. INC HL DJNZ KARA2 CALL KAUBT ;Ausgabe Pr}fsum LD A,D CALL DYNST ;Endimpuls POP DE LD A,3 OUT CTC1 ;CTC-Stop RET ; Schreiben eines Bytes KAUBT: PUSH BC ;A=Byte LD C,A LD B,8 KAUB1: RRC C LD E,ZKKA0 CALL NC,AUS ;CY=0 LD E,ZKKA1 CALL C ,AUS ;CY=1 DJNZ KAUB1 POP BC AUST: LD E,ZKKAT ;Trennzeichen AUS: CALL DYNST DYNST: LD (IX),D ;Zeitkonst.->IX DY1: LD A,(IX) AND A JR NZ,DY1 ;Warten bis Zeit LD D,E ;konstante vom RET ;Interruptprogr. ;r}ckgesetzt ;*__*__*__*__*__*__*__*__*__*__*__*__*__ ; Zeitkonstanten f}r Lesen: IKEZK EQU 163 IKEGN EQU 93 IKEG1 EQU 186 ;*__*__*__*__*__*__*__*__*__*__*__*__*__ ;P R O G R A M M Z U M E I N L E S E N ISRLI: CALL INITI SRLIN: LD A,83H OUT (P1AC),A;Int Freig. PIO PUSH HL PUSH DE MA1: CALL BRKT JR C,LED LD B,22 LD (IX+1),0 MA2: CALL LSTOP ;Lesen einer ;Vollschwingung JR C,MA1 ;kein Einsbit ? CP IKEG1 ;Einsbit ? CALL LED2 ;LED ein ohne JR C,MA1 ;PIO-Stop DJNZ MA2 ;Z{hlen Einsbit MA5: LD B,2 MA3: XOR A LD C,A LD (IX),A CALL LS1 ;Lesen einer ;Halbschwingung CP IKEGN ;Nullbit ? JR NC,MA5 DJNZ MA3 ;Warten auf ein ;Komplettes Nullbit CALL IBYTE ;Lesen ein Byte JR C,LED ; Fehler LD (IX+2),A; Blocknr. LD B,80H ; 128 Byte LD L,(IX+5) LD H,(IX+6) MA4: CALL IBYTE ;Lesen 128 Da- ;tenbytes JR C,LED ; Fehler ? LD M,A LD A,(IX+1) ADD M LD (IX+1),A; Pr}fsumme INC HL DJNZ MA4 CALL IBYTE ; -""- lesen JR C,LED ; Fehler ? SUB (IX+1) ; Vgl. Pr}fsumme ADD 0FFH ;Pr}fsumme false ;=> CY=1 LED: POP DE ;Register holen POP HL DI LD A,3 ;PIO-Stop-INT OUT P1AC EI LED2: IN A,(P1AD) SET 5,A ; LED ein JR NC,LED1 RES 5,A ; LED aus,CY=1 LED1: OUT (P1AD),A RET ; Interruptroutine zum Schreiben IKACT: PUSH AF LD A,87H OUT (CTC1),A LD A,(IX) ;Start CTC OUT (CTC1),A LD (IX),0 JR REI ;RETI ; Interruptroutine Lesen IKEP: PUSH AF ;PIO INT. IN A,(CTC2);CTC lesen in LD (IX),A ;-> IX LD A,7 OUT (CTC2),A;CTC Neustart LD A,IKEZK REI1: OUT (CTC2),A REI: POP AF EIRETI: EI RETI LSTOP: HALT ;CTC eingeles. LD A,(IX) LD C,A ; C=1.Halbschw. LS1: HALT ; 2.Halbschw. LD A,(IX) ADD C ; Summe bilden RET ; Eingabe eines Bytes IBYTE: LD DE,800H IB1: CALL LSTOP ;Bit Eingabe JR C,IB2 ;Nullbit ? CP IKEG1 ; Einsbit RET C ;Trennzeichen IB2: CCF RR E ;einschieben DEC D JR NZ,IB1 CALL LSTOP LD A,E ;Byte in A RET ;_______________________________________ ; Interruptroutine f}r Tondauer TONLG: PUSH AF CALL CTCSTOP ;Blink CTC-Init JR REI ;*__*__*__*__*__*__*__*__*__*__*__*__*__ ; Tonausgabeprogramm ; HL: Tonh|he 1.Kanal ; DE: " 2. " ; BC: L{nge/Lautst{rke ; VR: AF,BC,DE,HL TON: CALL ARGS TON0: BIT 1,(IX+8) JR NZ,TON0 TONB: LD A,C XOR 1FH LD C,A SET 7,C LD A,B AND A JR Z,TON1 ;Dauerton RES 7,C SET 1,(IX+8);Tonl{nge aktiv LD A,0C7H OUT CTC2 LD A,B ;Tonl{nge setzen OUT CTC2 TON1: LD A,C ;Lautst{rke OUT P1BD LD C,CTC0 CALL TON2 ;1.Kanal INC C EX DE,HL ;2.Kanal TON2: LD A,L ;Kanal AND A LD L,3 JR Z,TON4 ;off LD L,A LD A,7 BIT 0,H JR Z,TON3 ;VT 16 OR 20H ;VT 256 TON3: OUT (C),A ;Steuerwort TON4 OUT (C),L ;ZK RET ;*__*__*__*__*__*__*__*__*__*__*__*__*__ ;B A S I C - S C H N I T T S T E L L E ;Adressen und Daten aus BASIC-Kern LDTOK: EQU 0D0H SGTOK: EQU 0B6H GBTOK: EQU 08CH RTTOK: EQU 08BH ELTOK: EQU 0D4H TNTOK: EQU 0A9H GTTOK: EQU 088H DISTA: EQU 354H DTFLG: EQU 35EH PSBEG: EQU 35FH ANF: EQU 34EH NANF: EQU 352H SVARP: EQU 3D7H ENDE: EQU 350H STRDA: EQU 3C0H PRFLG: EQU 3FDH COLRE: EQU 37EH RNDV: EQU 31DH ININD: EQU 309H IOCHL: EQU 307H INTPR: EQU 3EAH NEW: EQU 0C641H SNL14: EQU 0CDE1H SNL16: EQU 0CDF3H ARGV1: EQU 0D421H ARGV2: EQU 0D424H SLEN3: EQU 0D1A9H SNER1: EQU 0C348H FCER: EQU 0C967H CPREG: EQU 0C689H CPCOM: EQU 0C8D6H DCHEX: EQU 0C986H DCHE1: EQU 0C987H ZPOIT: EQU 0C4BBH ZPOI1: EQU 0C4BEH TMEM1: EQU 0C327H LIN6: EQU 0C450H LIN10: EQU 0C48AH LIN11: EQU 0C493H LIN13: EQU 0C442H LIN15: EQU 0C44DH SGN1: EQU 0D6AEH NUMKO: EQU 0D834H TCHAR: EQU 0C8BDH TCHA1: EQU 0C8BEH SNALY: EQU 0CD3AH SNAL6: EQU 0CD36H LEN1: EQU 0D330H CPRGT: EQU 0C8DBH POS1: EQU 0D0C0H CPSTX: EQU 0C8CCH SADB1: EQU 0D17EH STADB: EQU 0D17BH STROP: EQU 0D1E1H STRV1: EQU 0D2F2H STRS3: EQU 0D302H ERROO: EQU 0C356H CSTS: EQU 0DDF3H CI: EQU 0DDE4H CO: EQU 0DDD5H EPRV4: EQU 0C96CH EPRV3: EQU 0C96FH INP1: EQU 0D3E9H PRT2: EQU 0CB03H OTCHL: EQU 0DE25H TESTC: EQU 0DDC8H CASS1: EQU 0DCB2H INCHL: EQU 0DE5FH ZFSTR: EQU 0C8B7H ;*************************************** ;INPUT: D- DATEN ; E- CONROL ; HL- NAME IO: PUSH HL PUSH BC CALL BWSN BIT 5,E ;bye? PUSH DE JR NZ,BYETS INC HL INC HL BIT 7,E JR NZ,STATU PUSH HL LD A,E AND 7 LD HL,CHNL ADD L LD L,A LD A,D LD D,E LD E,M POP HL CALL SYS3 RSTR: POP DE LD D,A LD A,E AND 4FH XOR 43H JR NZ,RSTR1 VERY: CALL PRS DEFM 'VER. ?(Y):' NOP CALL BLINK CP 'Y' CALL Z,VERIF RSTR1: LD A,D RES 3,E CALL BWSF POP BC POP HL RET ;--------------------------------------- CHNL: DEFB ZINNN DEFB ZROUT DEFB ZMBIN DEFB ZMBOT DEFB ZUIN DEFB ZUOUT DEFB ZUIN2 DEFB ZUOT2 ;--------------------------------------- STATU: CALL KBDS POP DE LD D,A JR NC,RSTR1 RES 7,E JR RSTR1 BYETS: LD A,(DTFLG) AND A JR Z,BYE1 CALL BWSF CALL NEW CALL BWSN BYE1: IN A,(P1AD) RES 7,A OUT (P1AD),A JP PARSE ;-------------------- ERW1: LD A,B SUB RETOK-LDTOK JR C,ERR1 CP CRTOK-RETOK+1 JR NC,ERR1 RLCA LD C,A LD B,0 EX DE,HL LD HL,ADRT1 JP ZFSTR ;-------------------- ERW2: LD A,M CP INTOK RET C CP COTOK+1 RET NC CP ATTOK JP Z,AT LD A,(PRFLG) AND A JR NZ,ERR1 INC A LD (PRFLG),A ERW21: PUSH HL LD HL,COLOR CALL VSAM POP HL LD (COLRE),A LD A,M CP INTOK JR Z,INPRT CP COTOK JP Z,PRTCL CALL TCHAR CALL PAPER PAP1: LD A,M CP ';' JR Z,CLRG1 JR ERR1 PRTCL: CALL TCHAR CALL UPCOL JR PAP1 ERR1: JP SNER1 INPRT: CALL TCHAR CALL INK LD A,M CP ';' JR Z,CLRG1 CALL CPSTX DEFB ',' CP PPTOK JR NZ,ERR1 CALL TCHAR CALL PAPER CALL CPSTX DEFB ';' CLREG: CALL PRT2 LD A,(COLRE) PUSH HL LD HL,COLOR CALL VSMA POP HL POP BC RET AT3: PUSH BC JR ERW21 CLRG1: CALL TCHAR JR CLREG ERW3: LD A,C CP VETOK+VETOK-SGTOK-SGTOK JP Z,VPEEK CP PTTOK+PTTOK-SGTOK-SGTOK JP Z,PTEST CP CITOK+CITOK-SGTOK-SGTOK JP Z,CSRLN CP VGTOK-SGTOK+VGTOK-SGTOK JP Z,VGET SUB IKTOK-SGTOK+IKTOK-SGTOK JR C,ERR1 CP ISTOK-IKTOK+ISTOK-IKTOK+1 JR NC,ERR1 EX DE,HL LD BC,ADRT2 POP HL LD L,A ADD HL,BC LD C,M INC HL LD H,M LD L,C PUSH HL EX DE,HL RET STRIG: CALL CPSTX DEFB '(' CALL ARGV1 PUSH AF CALL CPCOM CALL SNALY CALL CPRGT POP AF PUSH HL PUSH AF CALL LEN1 INC HL INC HL LD E,(HL) INC HL LD D,(HL) POP BC PUSH BC PUSH AF PUSH DE LD C,A XOR A CP C JR Z,STR1 CP B JR Z,STR1 LD A,C DEC B JR Z,STR1 STR2: ADD C JR C,STRER DJNZ STR2 STR1: LD B,A LD C,0 PUSH BC CALL STROP POP BC POP BC PUSH BC CALL SADB1 POP HL EX (SP),HL LD A,H POP HL EX (SP),HL LD L,A INC H STR4: DEC H PUSH HL PUSH BC JR Z,STR3 CALL STRV1 POP BC POP HL JR STR4 STR3: POP BC POP HL POP DE CALL STRS3 JP SLEN3 STRER: LD E,28 JP ERROO RENUM: PUSH HL LD HL,10 LD (DISTA),HL LD HL,(PSBEG) PUSH AF PUSH HL INC HL INC HL LD A,(HL) INC HL LD H,(HL) LD L,A LD (ANF),HL LD (NANF),HL LD DE,(SVARP) DEC DE DEC DE RNUM1: POP HL PUSH HL LD A,(HL) INC HL LD H,(HL) LD L,A CALL CPREG EX (SP),HL JR NZ,RNUM1 POP DE INC HL INC HL LD A,M INC HL LD H,M LD L,A LD (ENDE),HL LD B,4 POP AF LD HL,ANF EX (SP),HL RNUM2: JR Z,RNUM5 CALL DCHEX PUSH AF LD A,D OR E RNUM3: JP Z,FCER POP AF EX (SP),HL LD (HL),E INC HL LD (HL),D INC HL JR Z,RNUM5 PUSH AF DEC B JR Z,RNUM4 POP AF EX (SP),HL CALL CPCOM JR RNUM2 RNUM4: POP AF JP NZ,SNER RNUM5: LD HL,(ENDE) LD DE,(ANF) CALL CPREG RNU5A: JP C,FCER LD HL,(PSBEG) RNUM6: CALL ZPOI1 JR C,RNUM7 JR Z,RNUM3 JR RNUM6 RNUM7: POP HL PUSH BC LD DE,(ENDE) LD HL,0 LD (ENDE),HL RNUM8: LD H,B LD L,C LD C,M INC HL LD B,M LD A,B OR C JR Z,RNUM3 INC HL LD A,M INC HL LD H,M LD L,A CALL CPREG LD HL,(ENDE) INC HL LD (ENDE),HL JR NZ,RNUM8 INC HL INC HL ADD HL,HL INC HL LD DE,(SVARP) ADD HL,DE JR C,RNU5A CALL TMEM1 LD (SVARP),HL XOR A DEC HL LD M,A DEC HL LD M,A DEC DE DEC DE EX DE,HL LD M,E INC HL LD M,D INC HL DEC A LD M,A INC HL LD M,A INC HL EX DE,HL LD HL,(NANF) LD (ANF),HL RNUM9: POP HL LD C,M INC HL LD B,M INC HL PUSH BC LD BC,ANF LD A,M LD (DE),A LD A,(BC) LD M,A INC HL INC DE INC BC LD A,M LD (DE),A LD A,(BC) LD M,A INC DE LD HL,(ANF) LD BC,(DISTA) ADD HL,BC LD (ANF),HL LD HL,(ENDE) DEC HL LD A,H OR L LD (ENDE),HL JR NZ,RNUM9 LD (DE),A POP HL LD HL,(PSBEG) PUSH HL RNU10: POP HL LD C,M INC HL LD B,M INC HL PUSH BC LD A,M INC HL AND M INC A JR Z,RNU13 RNU11: INC HL RNU12: LD A,M OR A JR Z,RNU10 CP GTTOK JR Z,RNU24 CP GBTOK JR Z,RNU24 CP RTTOK JR Z,RNU1A CP ELTOK JR Z,RNU1A CP TNTOK JR NZ,RNU11 RNU1A: CALL DCHE1 LD A,E OR D CALL NZ,RNU14 CALL NZ,RNU18 JR RNU12 RNU13: DEC HL LD (SVARP),HL DEC HL LD M,A DEC HL LD M,A POP HL POP HL JP LIN10 RNU24: CALL DCHE1 LD A,E OR D JR Z,RNU12 CALL RNU14 CALL NZ,RNU18 LD A,M CP ',' JR NZ,RNU12 JR RNU24 RNU14: PUSH HL PUSH DE LD DE,65535 CALL ZPOIT POP DE INC BC INC BC INC BC INC BC LD H,B LD L,C LD BC,(NANF) RNU15: LD A,M INC HL PUSH HL OR M JR Z,RNU17 LD A,(HL) DEC HL LD L,M LD H,A CALL CPREG JR Z,RNU16 LD HL,(DISTA) ADD HL,BC LD B,H LD C,L POP HL INC HL JR RNU15 RNU16: LD A,0FFH OR A RNU17: POP HL POP HL RET RNU18: PUSH BC EX DE,HL LD HL,(SVARP) SBC HL,DE PUSH HL RNU19: POP BC LD H,D LD L,E DEC DE LD A,(DE) CP ',' JR Z,RNU20 CP 3AH JR NC,RNU20 PUSH BC PUSH DE LDIR POP DE JR RNU19 RNU20: EX DE,HL POP DE PUSH HL PUSH BC XOR A LD B,98H CALL SGN1 CALL NUMKO POP BC POP DE RNU21: INC HL INC DE RNU22: LD A,M OR A JR Z,RNU23 PUSH BC PUSH HL EX DE,HL ADD HL,BC LD D,H LD E,L DEC HL LDDR POP HL LDI POP BC JR RNU22 RNU23: PUSH DE LD DE,(PSBEG) CALL LIN11 RNU26: INC HL LD A,M INC HL OR M JR NZ,RNU26 EX DE,HL LD M,E INC HL LD M,D INC DE INC DE LD (SVARP),DE POP HL LD D,H LD E,L RNU25: LD A,M OR A INC HL JR NZ,RNU25 POP BC EX (SP),HL PUSH BC EX DE,HL RET DELET: RET Z CALL DCHEX JP Z,LIN13 CALL CPCOM PUSH DE CALL DCHEX POP HL RET NZ EX DE,HL PUSH HL CALL ZPOIT JP NC,LIN15 POP DE PUSH AF PUSH BC CALL ZPOI1 JP NC,LIN15 POP BC JP LIN6 PAUSE: CALL TCHA1 JR NZ,PAUS0 PAUS1: CALL KBDS JR NC,PAUS1 CP 3 RET Z CP 0AH ;Cursor down JR NZ,PAUS1 JP CI PAUS0: CALL ARGV1 LD C,A PAUS3: LD A,16 LD E,14H CALL VSCAL PUSH BC CALL KBDS POP BC JR NC,PAUS2 CP 3 RET Z CP 0AH JR NZ,PAUS2 JP CI PAUS2: DEC C JR NZ,PAUS3 RET BBEEP: LD B,1 CALL TCHA1 JR Z,BEE1 CALL ARGV1 LD B,A BEE1: LD A,7 LD E,0 BEE2: CALL VSCAL BEE3: BIT 1,(IX+8) JR NZ,BEE3 DJNZ BEE1 RET WINDO: CALL TCHA1 JR Z,WIND2 PUSH HL CALL ARGV1 EX (SP),HL LD HL,WIN9 CALL VSMA INC HL EX (SP),HL CALL CPCOM CALL ARGV1 EX (SP),HL CALL VSMA INC HL EX (SP),HL CALL CPCOM CALL ARGV1 EX (SP),HL CALL VSMA EX (SP),HL CALL CPCOM CALL ARGV1 EX (SP),HL LD D,A CALL BWSN CP 40 JR NC,ER5 LD A,(WIN9+2) LD E,A CP 40 JR NC,ER5 LD A,D SUB E JR C,ER5 INC A LD (WINLG),A LD A,E LD (WINAN),A LD A,(WIN9+1) CP 32 JR NC,ER5 LD D,A LD A,(WIN9) CP 32 JR NC,ER5 LD E,A LD A,D SUB E JR C,ER5 INC A LD (WINLG+1),A LD A,E LD (WINAN+1),A JR WIND3 WIND2: PUSH HL CALL BWSN LD HL,100H LD (WINAN),HL LD HL,1E28H LD (WINLG),HL WIND3: LD HL,0 LD (CRSR),HL CALL BWSF POP HL RET ER5: CALL BWSF JR SNER BLOAD: PUSH HL LD HL,ARGN XOR A CALL VSMA POP HL LD E,10H JP VSCAL VPEEK: CALL SNL14 EX (SP),HL LD DE,SNL16 PUSH DE CALL EPRV3 PUSH HL LD HL,8000H ADD HL,DE JR C,VP1 LD A,0BFH CP H VP1: JR C,SNER CALL VSAM POP HL JP INP1 SNER: JP SNER1 VPOKE: CALL EPRV4 PUSH DE CALL CPCOM CALL ARGV1 EX (SP),HL LD DE,8000H ADD HL,DE JR C,VP1 LD D,A LD A,0BFH CP H JR C,VP1 LD A,D CALL VSMA POP HL RET BORD: RET AT: LD A,(PRFLG) BIT 1,A SET 1,A LD (PRFLG),A JR NZ,SNER PUSH DE PUSH HL CALL BWSN LD HL,WINAN LD (WIN9),HL LD DE,WIN9-10 LD BC,6 LDIR LD HL,0 LD (WINAN),HL LD HL,2028H LD (WINLG),HL CALL BWSF POP HL CALL LOKA1 CALL CPRGT CALL CPSTX DEFB ';' LD A,M CP INTOK JR C,AT1 CP COTOK+1 JR NC,AT1 CALL AT3 AT2: PUSH HL CALL BWSN LD HL,WIN9-10 LD DE,WINAN LD BC,6 LDIR CALL BWSF POP HL POP DE POP BC RET AT1: CALL PRT2 JR AT2 SNER2: JP SNER1 INK: CALL ARGV1 CP 32 JR NC,SNER2 SLA A SLA A SLA A LD D,A PUSH HL LD HL,COLOR CALL VSAM POP HL AND 7 JR PIP1 PAPER: CALL ARGV1 CP 8 JR NC,SNER2 LD D,A PUSH HL LD HL,COLOR CALL VSAM POP HL AND 0F8H PIP1: OR D PUSH HL LD HL,COLOR CALL VSMA POP HL PIP2: RET UPCOL: CALL TCHA1 JR Z,SNER2 CALL INK CALL TCHA1 RET Z CALL CPCOM JR PAPER LOKA1: CALL TCHAR CALL CPSTX DEFB '(' LOKAT: CALL ARGV1 LD D,A PUSH HL LD HL,WINLG+1 CALL VSAM POP HL DEC A CP D JR C,SNER2 CALL CPCOM PUSH DE CALL ARGV1 POP DE LD C,A PUSH HL LD HL,WINLG CALL VSAM POP HL DEC A CP C JR C,SNER2 LD A,C PUSH HL LD HL,CRSR CALL VSMA LD A,D INC HL LOK1: CALL VSMA POP HL RET INKEY: PUSH HL CALL KBDS JR NC,INKE1 LD A,1 CALL STADB CALL CI INKE3: LD HL,(STRDA+2) LD M,A INKE2: JP SLEN3 INKE1: XOR A CALL STADB JR INKE2 SOUND: CALL ARGV1 PUSH HL LD HL,ARG1 LD B,4 SND2: CALL VSMA INC HL EX (SP),HL DEC B JR Z,SND1 PUSH BC CALL CPCOM CALL ARGV1 POP BC EX (SP),HL JR SND2 SND1: CALL TCHA1 JR Z,SND3 CALL CPCOM CALL ARGV1 EX (SP),HL CALL VSMA INC HL EX (SP),HL CALL TCHA1 JR Z,SND3 CALL CPCOM CALL ARGV1 EX (SP),HL CALL VSMA EX (SP),HL SND3: LD E,35H POP BC JP VSCAL PSET: LD B,1 PSET1: PUSH BC CALL EPRV4 PUSH HL LD A,E LD HL,HOR CALL VSMA LD A,D INC HL CALL VSMA EX (SP),HL CALL CPCOM CALL ARGV1 EX (SP),HL INC HL CALL VSMA POP HL CALL PFARB PS1: LD E,30H POP BC DEC B JR Z,PS2 DEC E PS2: CALL VSCAL JP C,SNER RET PERES: LD B,0 JR PSET1 PFARB: CALL TCHA1 RET Z CALL CPCOM CALL ARGV1 PUSH HL LD HL,HOR+3 RLA RLA RLA JP LOK1 INSTR: CALL SNAL6 CALL CPCOM PUSH HL CALL LEN1 JR Z,INST LD B,A INC HL INC HL LD E,M INC HL LD D,M POP HL PUSH DE PUSH BC CALL SNALY CALL CPRGT POP BC POP DE PUSH HL PUSH DE PUSH BC CALL LEN1 JR Z,INST INC HL INC HL LD C,M INC HL LD H,M LD L,C POP BC LD C,A POP DE PUSH HL INST1: PUSH BC PUSH DE LD A,(DE) INST2: CP M JR Z,INST3 INC HL DEC C JR NZ,INST2 INST4: XOR A POP HL POP HL POP HL INST5: LD DE,SNL16 PUSH DE JP POS1 INST: JP FCER INST3: INC HL PUSH HL DEC HL INST6: INC HL DEC C JR Z,INST7 INC DE DEC B JR Z,INST8 LD A,(DE) CP M JR Z,INST6 POP HL POP DE LD A,C POP BC LD C,A JR INST1 INST7: INC DE DEC B POP HL JR NZ,INST4 JR INST9 INST8: POP HL INST9: POP DE POP DE POP DE AND A SBC HL,DE LD A,L JR INST5 VSMA: LD E,28H JR VS1 VSAM: LD E,29H JR VS1 BKEY: CALL ARGV1 AND A JR Z,SNER4 CP 13 JR NC,SNER4 LD E,39H VS1: JP VSCAL KEYLI: LD E,3AH JR VS1 SWIT: CALL ARGV1 PUSH AF CALL CPCOM CALL ARGV1 LD D,A POP AF PUSH HL LD L,A LD A,2 LD E,26H CALL VSCAL POP HL RET PTEST: CALL SNL14 EX (SP),HL LD DE,SNL16 PUSH DE CALL EPRV3 PUSH HL LD A,E LD HL,HOR CALL VSMA LD A,D INC HL CALL VSMA LD E,2FH CALL VSCAL LD B,0 JR Z,PT1 INC HL INC HL CALL VSMA LD E,30H CALL VSCAL LD B,1 PT1: LD A,B POP HL JP INP1 SNER4: JP SNER1 CLOSE: LD C,0 LD A,M CP 'I' JR Z,CLO1 INC C CP 'O' JR NZ,SNER4 CLO1: PUSH BC INC HL LD A,M CP '#' SNER5: JR NZ,SNER4 INC HL CALL ARGV1 AND 3 POP BC RET Z PUSH HL RL A ADD C PUSH AF DEC A LD B,0 SCF CLO3: RL B DEC A JR NZ,CLO3 LD HL,IOCHL LD A,M XOR B LD M,A POP AF POP HL SET 6,A PUSH DE LD E,A LD D,3 CALL IO POP DE RET RAND: LD A,R LD (RNDV),A RET OPEN: LD A,M INC HL CP 'I' JR Z,IOPEN CP 'O' SNER6: JR NZ,SNER5 OOPEN: CALL OTCHL CALL TESTC OPEN1: RET Z LD A,0D5H CALL CASS1 LD HL,INTPR XOR A CALL CO POP HL RET IOPEN: CALL INCHL LD A,(ININD) AND 3 RET Z LD A,0D5H CALL CASS1 LD HL,INTPR CALL CI POP HL RET LINE: LD BC,43EH ;B=Zahl Para JR GRAPH CIRCL: LD BC,33FH GRAPH: PUSH BC CALL EPRV4 POP BC PUSH BC PUSH HL LD HL,ARG1 GRA1: LD A,E CALL VSMA ;M=:E INC HL LD A,D CALL VSMA ;M=:D INC HL DEC B JR Z,GRA2 EX (SP),HL PUSH BC CALL CPCOM CALL EPRV4 POP BC EX (SP),HL JR GRA1 GRA2: POP HL CALL PFARB POP DE JP VSCAL CSRLN: CALL SNL14 EX (SP),HL LD DE,SNL16 PUSH DE CALL ARGV2 PUSH HL AND A LD A,0 JR NZ,CSRL1 LD HL,WINAN+1 CALL VSAM CSRL1: LD B,A LD HL,CRSR+1 CALL VSAM ADD B POP HL JP INP1 VGET: EX (SP),HL LD A,1 CALL STADB CALL BWSN LD DE,(CRSR) CALL VADR LD A,M CALL BWSF JP INKE3 ;*************************************** ; TABELLE ;--------------------------------------- ZINNN EQU 16H ZROUT EQU 24H ZMBIN EQU 37H ZMBOT EQU 38H ZUIN EQU 6 ZUOUT EQU 2 ZUIN2 EQU 7 ZUOT2 EQU 3 ;*************************************** TOTAB: DEFB 49H+80H DEFM 'NKEY$' IKTOK: EQU 0D5H DEFB 4AH+80H DEFM 'OYST' JOTOK: EQU 0D6H DEFB 53H+80H DEFM 'TRING$' STROK: EQU 0D7H DEFB 49H+80H DEFM 'NSTR' ISTOK: EQU 0D8H DEFB 52H+80H DEFM 'ENUMBER' RETOK: EQU 0D9H DEFB 44H+80H DEFM 'ELETE' DETOK: EQU 0DAH DEFB 50H+80H DEFM 'AUSE' PATOK: EQU 0DBH DEFB 42H+80H DEFM 'EEP' BETOK: EQU 0DCH DEFB 57H+80H DEFM 'INDOW' WITOK: EQU 0DDH DEFB 42H+80H DEFM 'ORDER' BOTOK: EQU 0DEH DEFB 49H+80H DEFM 'NK' INTOK: EQU 0DFH DEFB 50H+80H DEFM 'APER' PPTOK: EQU 0E0H DEFB 41H+80H DEFM 'T' ATTOK: EQU 0E1H DEFB 43H+80H DEFM 'OLOR' COTOK: EQU 0E2H ;------------------- DEFB 53H+80H DEFM 'OUND' SOTOK: EQU 0E3H DEFB 50H+80H DEFM 'SET' PSTOK: EQU 0E4H DEFB 50H+80H DEFM 'RESET' PRTOK: EQU 0E5H DEFB 42H+80H DEFM 'LOAD' BLTOK: EQU 0E6H DEFB 56H+80H DEFM 'PEEK' VETOK: EQU 0E7H DEFB 56H+80H DEFM 'POKE' VPTOK: EQU 0E8H DEFB 4CH+80H DEFM 'OCATE' LOTOK: EQU 0E9H DEFB 4BH+80H DEFM 'EYLIST' KLTOK: EQU 0EAH DEFB 4BH+80H DEFM 'EY' KYTOK: EQU 0EBH DEFB 53H+80H DEFM 'WITCH' SWTOK: EQU 0ECH DEFB 50H+80H DEFM 'TEST' PTTOK: EQU 0EDH DEFB 43H+80H DEFM 'LOSE' CLTOK: EQU 0EEH DEFB 4FH+80H DEFM 'PEN' OPTOK: EQU 0EFH DEFB 0D2H DEFM 'ANDOMIZE' RZTOK: EQU 0F0H DEFB 56H+80H DEFM 'GET$' VGTOK: EQU 0F1H DEFB 0CCH DEFM 'INE' LITOK: EQU 0F2H DEFB 0C3H DEFM 'IRCLE' CRTOK: EQU 0F3H DEFB 0C3H DEFM 'SRLIN' CITOK: EQU 0F4H DEFB 80H ;--------------------------------------- ADRT2: DEFW INKEY DEFW 2FDH DEFW STRIG DEFW INSTR ADRT1: DEFW RENUM DEFW DELET DEFW PAUSE DEFW BBEEP DEFW WINDO DEFW BORD DEFW INK DEFW PAPER DEFW SNER1 DEFW UPCOL DEFW SOUND DEFW PSET DEFW PERES DEFW BLOAD DEFW SNER1 DEFW VPOKE DEFW LOKAT DEFW KEYLI DEFW BKEY DEFW SWIT DEFW SNER1 DEFW CLOSE DEFW OPEN DEFW RAND DEFW SNER1 DEFW LINE DEFW CIRCL ORRˇˊÊI/ACC σ Ko^ABWIG  $mHiˏ?O D? NER1 DEFW LINE DEFW CIRCL ORRˇˊÊI/ACC σ Ko^ABWIG  $mHiˏ?O D? !:=@GW@z@! @!8;@6 @6:8;͠@ê@@!9;4:=>29;͠@@~@5>E@͎@!8;~4:=:9;?A!@Ê*:& KaA~7APYÞ0A*:& !:0A A<=,@UA:;kAK*:":*:":! PAADA ,@AA 82:!::|A,B!:~6B͜B͂B**:͵B":!:yw:ĩB!xhBB**:ͲB":!:~LBLBNPB!,B͜B!:~6pB!:x!mBPA!:xpx!hBʗBʗB,@PA!:yw:OPAy,@:O