Source file: /~heha/hs/kcemu/kcswberg.zip/DISK/CAOSE.ASM

CAOSEASM;	CAOS 3.4 - ROM E
;	Version CENTRONICS & V.24
;
;	Date: 11.06.1991  (c) by '#+$'
;
 
	ORG 0E000H
 
RESET:	DI
	JR OSTEST
	JP BEXP1
	JP BEXP2
	JP BEXP3
	DEFW TOKTAB
	JP BASPV
 
;*** Steuerung ***
 
OSTEST:	;CAOS-on-Test
	IN A,88H
	RRA
	JP NC,BYE
	LD A,8
	CALL 0F003H
	DEFB 27H	;JUMP
 
	DEFW 7F7FH	;>BASIC<
	DEFM 'BASIC'
	DEFB 0
	;
	LD HL,0C000H
	JR BASON
 
	DEFW 7F7FH	;>REBASIC<
	DEFM 'REBASIC'
	DEFB 0
	;
	LD HL,0C002H
BASON:	IN A,88H
	SET 7,A
	OUT 88H
	JP (HL)
 
;*** CRT-Unit ***
 
PADR1:	LD HL,(0B79CH)
	ADD HL,DE
	SLA H
	SLA H
	SLA H
PADR:	PUSH AF		;UP 34 PADR
	LD A,L
	CP 20H
	JR NC,IAD1
	ADD A
	ADD A
	ADD A
	LD L,H
	SRL H
	SRL H
	SCF
	RR H
	RRA
	SRL H
	RRA
	LD D,H
	SCF
	RR D
	SET 3,D
	LD E,A
	RR E
	RR L
	RRA
	RR L
	LD L,A
	RL H
	POP AF
	AND A
	RET
 
IAD1:	CP 28H
	JR NC,IAD2
	PUSH BC
	AND 7
	ADD A
	LD L,A
	LD A,H
	RLCA
	LD B,A
	AND 1
	OR 0B0H
	LD D,A
	LD A,B
	RLCA
	LD C,A
	AND 3
	OR 50H
	LD B,H
	LD H,A
	LD A,B
	AND 30H
	OR L
	LD L,A
	LD A,C
	RLCA
	RLCA
	AND 0C0H
	OR L
	LD L,A
	RR B
	RR L
	RR B
	RL H
	RR C
	RRA
	LD E,A
	POP BC
DBRE:	POP AF
	AND A
	RET
 
IAD2:	POP AF
	SCF
	RET
 
TCIF:	LD A,(0B79EH)	;UP 33 TCIF
	DEC A
	SUB E
	RET C
	LD A,(0B79FH)
	DEC A
	SUB D
	RET
 
DABR:	PUSH AF		;UP 32 DABR
	CALL TCIF
	JR C,IAD2
	LD A,(0B79CH)
	ADD E
	PUSH DE
	LD E,A
	LD A,(0B79DH)
	ADD D
	ADD A
	ADD A
	ADD A
	LD L,A
	LD H,0
	ADD HL,HL
	ADD HL,HL
	LD D,59H
	ADD HL,DE
	LD E,A
	ADD HL,DE
	POP DE
	JR DBRE
 
WPIX:	;Zeichen sichtbar machen
	PUSH DE
	PUSH BC
	CALL PADR1
	JR C,WPIX4
	LD BC,(0B7A2H)
	EX DE,HL
	BIT 1,C
	JR NZ,WPIX1
	LD M,B
	SET 5,L
	LD M,B
WPIX1:	BIT 0,C
	JR NZ,WPIX4
	LD HL,0B7A6H
	ADD A
	JR NC,WPIX2
	LD L,0AAH
WPIX2:	SUB 40H
	JP P,WPIX3
	INC L
	INC L
	XOR 0C0H
WPIX3:	LD B,M
	INC HL
	LD H,M
	LD L,B
	ADD A
	BIT 2,C
	LD C,A
	LD B,0
	ADD HL,BC
	ADD HL,BC
	CALL CPIX
WPIX4:	POP BC
	POP DE
	RET
 
CPIX:	CALL CPIX1
	SET 5,E
	RES 0,D
CPIX1:	CALL CPIX2
	SET 0,D
CPIX2:	RES 7,E
	LD A,M
	INC HL
	JR Z,CPIX3
	CPL
CPIX3:	LD (DE),A
	SET 7,E
	LD A,M
	INC HL
	JR Z,CPIX4
	CPL
CPIX4:	LD (DE),A
	RET
 
RSPALT:	;Berechne BC,DE:Fenstergrenzen
	;E=0:Nur 1teilig
	ADD A
	ADD A
	ADD A
	LD H,A
	LD DE,2000H
	LD A,(0B79CH)
	LD B,A
	CP D
	LD A,(0B79EH)
	LD C,A
	RET NC
	ADD B
	CP D
	RET C
	SUB D
	LD E,A
	LD A,D
	SUB B
	LD C,A
	RET
 
MOVELN:	;Rolle 1 Zeile
	PUSH HL
	PUSH DE
	PUSH BC
	LD C,A
	PUSH HL
	CALL PADR
	JR C,PIX2
	EX (SP),HL
	PUSH DE
	LD A,H
	ADD 8
	LD H,A
	CALL PADR
	EX (SP),HL
	EX DE,HL
	LD B,0
	LD A,(0B7A2H)
	RRA
	BIT 0,A
	LD A,C
	CALL Z,PIX4
	POP HL
	POP DE
	CALL NC,PIX31
	INC H
	INC D
	CALL NC,PIX3
	DEFB 6		;LD B,n
PIX2:	POP HL
POPS3:	POP BC
	POP DE
	POP HL
	RET
 
PIX3:	RES 7,L
	RES 7,E
PIX31:	CALL PIX4
	SET 7,L
	SET 7,E
PIX4:	RES 5,L
	RES 5,E
	CALL PIX5
	SET 5,L
	SET 5,E
PIX5:	PUSH DE
	PUSH HL
	LD C,A
	LDIR
	POP HL
	POP DE
	RET
 
PCHR:	LD HL,0B7A2H
	BIT 4,M
	JR Z,PCHR0
	RES 4,M
	CP '0'
	RET C
	CP 3AH
	JR C,ESCJ1
	CP 'A'
	RET C
	RES 5,A
	CP 5BH
	RET NC
	SUB 7
ESCJ1:	SUB 30H
	LD HL,0B7DFH
	CP M
	RET NC
	LD HL,(0B7DDH)
	JR PCHV
 
PCHR0:	CP 20H
	JR NC,PCHR1
	BIT 3,M
	JR NZ,PCHR1
	LD HL,(0B7B2H)
PCHV:	ADD A
	LD C,A
	LD B,0
	ADD HL,BC
	LD A,M
	INC HL
	LD H,M
	LD L,A
	LD A,1
	JP (HL)
 
ASC5:	LD A,E
	AND 0F8H
	ADD 8
	LD E,A
	JR PCHR3
 
PCHR1:	CALL DABR
	RET C
PCHR2:	LD M,A
	CALL WPIX
CUR:	INC E
PCHR3:	LD A,(0B79EH)
	DEC A
	CP E
	RET NC
CRNL:	LD E,0
CUD:	INC D
	LD A,(0B79FH)
	CP D
	RET NZ
	LD HL,(0B7A4H)
	JP (HL)
 
HCOPY:	LD HL,(0B799H)
	JP (HL)
 
CUL:	LD A,E
	AND A
	JR Z,LINUP
	DEC E
	RET
 
LINUP:	LD A,D
	AND A
	RET Z
	DEC D
CEL:	LD A,(0B79EH)
	DEC A
	LD E,A
	RET
 
CUU:	LD A,D
	AND A
	RET Z
	DEC D
	RET
 
PAGE:	LD HL,HOMEPG
WADR:	LD (0B7A4H),HL
	RET
 
SCROL:	LD HL,SCRLPG
	JR WADR
 
CLEAR:	CALL CUL
DEL:	PUSH DE
DEL1:	CALL DABR
	LD A,M
	AND A
	JR Z,INS3
	PUSH DE
	PUSH HL
	INC E
	CALL DABR
	JR NC,DEL2
	LD E,0
	INC D
	CALL DABR
DEL2:	LD A,M
	POP HL
	POP DE
	JR C,DEL3
	OR A
	JR Z,DEL3
	CALL PCHR2
	JR DEL1
 
INS:	PUSH DE
	LD A,20H
INS1:	CALL DABR
	LD B,M
	CALL PCHR2
	LD A,B
	AND A
	JR Z,INS3
	LD A,E
	OR D
	LD A,B
	JR NZ,INS1
	POP DE
	RET
 
DEL3:	CALL DABR
	XOR A
	LD M,A
	LD A,20H
	CALL WPIX
INS3:	POP DE
	RET
 
CLLINE:	;Zeile(nst}ck) l|schen
	LD L,B
	CALL PADR
	RET C
	LD A,(0B7A2H)
	RRA
	BIT 0,A
	LD A,(0B7A3H)
	CALL Z,CM2
	LD A,0
	RET C
	EX DE,HL
	CALL CM1
	INC D
CM1:	RES 7,E
	CALL CM2
	SET 7,E
CM2:	RES 5,E
	CALL CM3
	SET 5,E
CM3:	PUSH DE
	LD B,C
CM4:	LD (DE),A
	INC E
	DJNZ CM4
	POP DE
	RET
 
CLS:	LD A,(0B79FH)
	LD D,0
CLS1:	PUSH AF
	CALL DELLN
	POP AF
	INC D
	DEC A
	JR NZ,CLS1
HOMEPG:	LD D,0
CRN:	LD E,0
	RET
 
SCRLPG:	;Scrollroutine
	LD A,(0B79EH)
	LD C,A
	LD B,0
	LD A,(0B79FH)
	DEC A
	JR Z,SCRL4
	PUSH DE
	PUSH AF
	LD DE,0
	CALL DABR
	JR C,SCRL3
	EX DE,HL
SCRL1:	LD HL,28H
	ADD HL,DE
	PUSH HL
	PUSH BC
	LDIR
	POP BC
	POP DE
	DEC A
	JR NZ,SCRL1
	LD A,(0B79DH)
	CALL RSPALT
SCRL2:	LD A,C
	LD L,B
	CALL MOVELN
	LD A,E
	AND A
	LD L,D
	CALL NZ,MOVELN
	LD A,H
	ADD 8
	LD H,A
	POP AF
	DEC A
	PUSH AF
	JR NZ,SCRL2
SCRL3:	POP AF
	POP DE
SCRL4:	DEC D
	;
DELLN:	LD E,0
	PUSH DE
	CALL DABR
	LD A,(0B79EH)
	LD B,A
	XOR A
DL1:	LD M,A
	INC HL
	DJNZ DL1
	LD A,(0B79DH)
	ADD D
	CALL RSPALT
	PUSH DE
	PUSH HL
	CALL CLLINE
	POP HL
	POP BC
	CP C
	CALL NZ,CLLINE
	POP DE
	RET
 
BEL:	LD BC,0A1FH
	LD L,70H
	CALL RTON
	LD A,2EH	;Ton+Pause
	;
WAIT:	LD B,A		;UP 14 WAIT
	XOR A
WAIT0:	CALL WAIT1
	DJNZ WAIT0
	RET
 
RCLICK:	LD BC,20FH
	LD L,50H
RTON:	PUSH DE		;Ton nur rechts
	LD H,0
	LD E,H
	CALL PHALT
	OUT 8EH		;CTC off
	CALL TONP
	POP DE
	RET
 
ASC6:	LD HL,0B7A3H	;=ESC 8
	LD A,M		;Farbe compeln
	AND 0C0H
	LD C,A
	LD A,M
	AND 7
	RLCA
	RLCA
	RLCA
	OR C
	LD C,A
	LD A,M
	RRCA
	RRCA
	RRCA
	AND 7
	OR C
 
LDMA:	LD M,A		;UP 28 LDMA
	RET
 
LDAM:	LD A,M		;UP 29 LDAM
	RET
 
SHLOCK:	LD A,80H
	DEFB 1		;LD BC,...
CLICK:	LD A,20H
	XOR (IX+8)
	LD (IX+8),A
DUMMY:	RET
 
CRT:	PUSH HL		;UP 00 CRT
	PUSH DE
	PUSH BC
	PUSH AF
	LD DE,(0B7A0H)
	CALL PCHR
	LD (0B7A0H),DE
	POP AF
	JP POPS3
 
ESC:	ADD A		;Beeinflussung
ESC4:	ADD A		; Steuerbits
ESC7:	ADD A
ESCF:	ADD A
ESC3:	LD HL,0B7A2H
	XOR M
	LD M,A
	RET
 
;*** KBD-Unit ***
 
ISRC3:	EI		;ISR CTC 3 KBD
	PUSH AF
	LD A,23H
	OUT 8FH
	LD (IX+0DH),0
	JR TST4
 
ISRPB:	EI		;ISR PIO B KBD
TAST:	PUSH AF
	DEC (IX)
	IN A,8FH
	PUSH AF
	LD A,0A7H
	OUT 8FH,A
	LD A,8FH
	OUT 8FH,A
	POP AF
	CP 14H
	JR C,TST4
	CP 65H
	JR NC,TST3
	ADD 0BEH
	JR C,TST3
	LD A,(IX+0CH)
	RRA
	XOR 1
	PUSH HL
	PUSH DE
	LD E,A
	LD D,0
	LD L,(IX+0EH)
	LD H,(IX+0FH)
	ADD HL,DE
	LD A,M
	BIT 7,(IX+8)
	JR NZ,TST1
	CP 40H
	JP M,TST1
	XOR 20H
TST1:	CP (IX+0DH)
	PUSH AF
	JR NZ,TST5
	LD A,(0B7E0H)	;COUNT
	CP (IX+0AH)
	JR C,TST7
	POP AF
	INC (IX+0AH)
TST2:	POP DE
	POP HL
TST3:	RR (IX+0CH)
TST4:	POP AF
INTE:	RETI
 
TST5:	LD (IX+0AH),0
	LD A,E
	CP 73H		;Tast-Nr.SoftRes
	JR NZ,TST6
	BIT 3,(IX+8)
	RES 3,(IX+8)
	JR NZ,TST7
	LD HL,RESET
	PUSH HL
	JR INTE
 
TST6:	SET 3,(IX+8)
TST7:	POP AF
	LD (IX+0DH),A
	SET 0,(IX+8)
	JR TST2
 
KBDS:	XOR A		;UP 0C KBDS
	BIT 0,(IX+8)
	RET Z
	LD A,(IX+0DH)
	SCF
	RET
 
KBDZ:	CALL KBDS	;UP 0E KBDZ
	RET NC
RESFL:	RES 0,(IX+8)
	RET
 
;*** Tape-Unit ***
 
ESC1:	LD A,(IX+7)
	XOR 2
	LD (IX+7),A
	RET
 
IMBII:	;intern mit Standardpuffer,
	;Erwarteter Block und Unter-
	;dr}ckung OK-Block
	CALL SIXD3
	LD (IX+3),1
	SET 5,(IX+7)
	;
IMBI:	;Init.MB-Eingabe ohne Lesen
	;und ohne Init.(IX+5/6)
	IN 89H
	RES 7,A
	OUT 89H		;Blink off
	IN A,88H
	SET 6,A		;MSS on
IMBI1:	OUT 88H,A
	EI
	PUSH HL
	LD HL,(0B7A4H)
	LD (0B7CFH),HL
	CALL NOUT
	LD (0B7CDH),HL
	CALL PAGE
	POP HL
PHALT:	LD A,3
	OUT 8CH,A
	OUT 8DH,A
	RES 1,(IX+8)
	RET
 
CMBI:	;Abschlu~ MB-Eingabe
	CALL CRO0
BLION:	;Blinken on
	IN A,89H
	SET 7,A
	OUT 89H
	DI
	LD A,47H
	OUT 8EH
	LD A,0CH
	OUT 8EH
	EI
	RET
 
CSRO:	;Abschlu~ MB-Ausgabe mit
	;Schreiben letzter Block
	LD (IX+2),0FEH;UP 09 CSRO
	CALL MBOT
CRO0:	PUSH HL
	LD HL,(0B7CDH)
	LD (0B7B9H),HL
	LD HL,(0B7CFH)
	LD (0B7A4H),HL
	LD HL,0B780H
	XOR A
CRO1:	DEC L
	LD M,A
	JR NZ,CRO1
	POP HL
	IN A,88H
	AND 9FH
	OUT 88H,A
	CALL CRLF
	JP SIXD2
 
ISROI:	CALL SIXD3	;intern
ISRO:	IN A,88H	;UP 08 ISRO
	OR 60H
	CALL IMBI1
	LD (IX+2),0
	LD BC,0A00H
	;
MBOT:	INC (IX+2)	;UP 01 MBOT
	DI
	LD A,87H
	OUT 8DH,A
	LD A,2FH
	OUT 8DH,A
	EI
	LD D,A
	LD E,A
MBOT1:	CALL BITOUT
	CPI
	JP PE,MBOT1
	CALL ZTON
	LD A,(IX+2)
	CALL BYTOT
	LD L,(IX+5)
	LD H,(IX+6)
	LD B,80H
MBT1:	LD A,M
	CALL BYTOT
	LD A,C
	ADD M
	LD C,A
	INC HL
	DJNZ MBT1
	CALL BYTOT
	LD A,D
	CALL HBITOT
	LD A,3
	OUT 8DH,A
	RET
 
BYTOT:	PUSH BC
	LD C,A
	LD B,8
BYTOUT:	RRC C
	LD E,17H
	CALL NC,BITOUT
	LD E,2FH
	CALL C,BITOUT
	DJNZ BYTOUT
	POP BC
ZTON:	LD E,5DH
BITOUT:	CALL HBITOT
HBITOT:	LD (IX),D
HBIT1:	LD A,(IX)
	AND A
	JR NZ,HBIT1
	LD D,E
	RET
 
ISRI:	CALL IMBI	;UP 0A ISRI
	;
MBI:	LD A,83H	;UP 05 MBI
	OUT 8AH,A
	PUSH HL
	PUSH DE
MBI1:	CALL BRKT
	JR C,MBI6
	LD B,16H
MBI2:	CALL STOP1
	JR C,MBI1
	CP 0BAH
	CALL LEDON
	JR C,MBI1
	DJNZ MBI2
MBI3:	LD B,2
MBI4:	XOR A
	LD C,A
	CALL STOP2
	CP 5DH
	JR NC,MBI3
	DJNZ MBI4
	CALL BYTIN
	JR C,MBI6
	LD (IX+2),A
	LD B,80H
	LD L,(IX+5)
	LD H,(IX+6)
	LD E,0
MBI5:	PUSH DE
	CALL BYTIN
	POP DE
	JR C,MBI6
	LD M,A
	ADD E
	LD E,A
	INC HL
	DJNZ MBI5
	LD L,A
	CALL BYTIN
	JR C,MBI6
	SUB L
	ADD 0FFH
MBI6:	POP DE
	POP HL
	LD A,3
	OUT 8AH,A
LEDON:	IN A,88H
	SET 5,A
	JR NC,MBI7
	RES 5,A
MBI7:	OUT 88H,A
	RET
 
MOT:	;Umschalten der MSS (ESC A)
	IN A,88H
	XOR 60H
	JR MBI7
 
ISRC1:	PUSH AF		;ISR CTC 1 MBO
	LD A,87H
	OUT 8DH,A
	LD A,(IX)
	OUT 8DH,A
	LD (IX),0
	JR IMBEND
 
ISRPA:	PUSH AF		;ISR PIO A MBI
	IN A,8EH
	LD (IX),A
	LD A,7
	OUT 8EH,A
	LD A,0A3H
	OUT 8EH,A
IMBEND:	POP AF
INTEND:	EI
	RETI
 
STOP1:	LD (IX),0
STOP11:	LD A,(IX)
	OR A
	JR Z,STOP11
	LD C,A
STOP2:	LD (IX),0
STOP21:	LD A,(IX)
	OR A
	JR Z,STOP21
	ADD C
	RET
 
BYTIN:	LD DE,800H
TRN1:	CALL STOP1
	JR C,TRN2
	CP 0BAH
	RET C
TRN2:	CCF
	RR E
	DEC D
	JR NZ,TRN1
	CALL STOP1
	LD A,E
	RET
 
;*** Sound Unit ***
 
ISRC2:	PUSH AF		;ISR CTC 2 TON
	CALL PHALT
	CALL BLION
	JR IMBEND
 
TON:	CALL LARG	;UP 35 TON
TON1:	BIT 1,(IX+8)
	JR NZ,TON1
TONP:	LD A,C
	RLA
	CPL
	LD C,A
	LD A,B
	ADD 0FFH
	JR NC,TON2
	DI
	SET 1,(IX+8)
	LD A,0C7H
	OUT 8EH,A
	LD A,B
	OUT 8EH,A
	EI
TON2:	LD A,C
	RRA
	OUT 89H,A
 
	LD C,8CH
	CALL ZKO
	INC C
	EX DE,HL
ZKO:	LD A,L
	AND A
	LD L,3
	JR Z,TON3
	LD L,A
	LD A,H
	RRCA
	RRCA
	OR 0AH		;2*5
	RRA
	XOR 2
	DI
	OUT (C),A
TON3:	OUT (C),L
	EI
	RET
 
 
;====== BASIC-ERWEITERUNG ==============
 
 
;*** BASIC I/O-Verteiler ***
 
BASPV:	PUSH BC
	PUSH HL
	CALL IRMON
	BIT 5,E
	PUSH DE
	JR NZ,BASBYE
	INC HL
	INC HL
	BIT 7,E
	JR NZ,BSA2
	PUSH HL
	LD A,E
	AND 7
	LD HL,BUPTAB
	ADD L
	LD L,A
	LD A,D
	LD D,E
	LD E,M
	POP HL
	CALL PV3
	POP DE
	LD D,A
	LD A,E
	AND 4FH
	XOR 43H
	JR NZ,BSA1
	CALL OSTR
	DEFM 'VERIFY'
	DEFB 0
	CALL YESNO
	CALL Z,VERIFY
BSA1:	LD A,D
	RES 3,E
	CALL IRMOFF
BSAE:	POP HL
	POP BC
	RET
 
BUPTAB:	DEFB 16H	;KEINE 100H-
	DEFB 24H	;Ueberschneidung
	DEFB 37H
	DEFB 38H
	DEFB 6
	DEFB 2
	DEFB 7
	DEFB 3
 
BSA2:	CALL KBDS
BSA3:	POP DE
	LD D,A
	JR NC,BSA1
	RES 7,E
	JR BSA1
 
BASBYE:	IN A,88H
	RES 7,A
	OUT 88H
	JP LOOP
 
;*** BASIC-Expander ***
 
BEXP1:	LD A,B
	SUB 9
	JR C,SNERR1
	CP 1BH
	JR NC,SNERR1
	RLCA
	LD C,A
	LD B,0
	EX DE,HL
	LD HL,TADR5
	JP 0C8B7H
 
LOCOL:	;LoadColor
	PUSH HL
	LD HL,0B7A3H
	CALL RLDAM
	POP HL
	RET
 
BEXP2:	LD A,M
	CP 0DFH
	RET C
	CP 0E3H
	RET NC
	CP 0E1H
	JP Z,AT
	LD A,(3FDH)
	AND A
	JR NZ,SNERR1
	INC A
	LD (3FDH),A
	DEFB 3EH	;LD A,n
RBE2:	PUSH BC
	CALL LOCOL
	LD (37EH),A
	LD A,M
	CP 0DFH
	JR Z,BE23
	CP 0E2H
	JP Z,PRCOL
	CALL 0C8BDH
	CALL PAPER
BE22:	LD A,M
	CP ';'
	JR Z,BE25
SNERR1:	JP 0C348H
 
PRCOL:	CALL 0C8BDH
	CALL COLR
	JR BE22
 
BE23:	CALL 0C8BDH
	CALL INK
	LD A,M
	CP ';'
	JR Z,BE25
	CALL 0C8CCH
	DEFB 2CH
	CP 0E0H
	JR NZ,SNERR1
	CALL 0C8BDH
	CALL PAPER
	CALL 0C8CCH
	DEFB ';'
BE24:	CALL 0CB03H
	LD A,(37EH)
	PUSH HL
	LD HL,0B7A3H
	CALL RLDMA
	POP HL
	POP BC
	RET
 
BE25:	CALL 0C8BDH
	JR BE24
 
BEXP3:	LD A,C
	CP 62H
	JP Z,VPEEK
	CP 6EH
	JP Z,PTEST
	CP 7CH
	JP Z,CSRLIN
	CP 76H
	JP Z,VGET
	SUB 3EH
	JR C,SNERR1
	CP 7
	JR NC,SNERR1
	EX DE,HL
	LD BC,TOKADR
	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
 
STR:	CALL 0C8CCH
	DEFB '('
	CALL 0D421H
	PUSH AF
	CALL 0C8D6H
	CALL 0CD3AH
	CALL 0C8DBH
	POP AF
	PUSH HL
	PUSH AF
	CALL 0D330H
	INC HL
	INC HL
	LD E,M
	INC HL
	LD D,M
	POP BC
	PUSH BC
	PUSH AF
	PUSH DE
	LD C,A
	XOR A
	CP C
	JR Z,STR2
	CP B
	JR Z,STR2
	LD A,C
	DEC B
	JR Z,STR2
STR1:	ADD C
	JR C,STR5
	DJNZ STR1
STR2:	LD B,A
	LD C,0
	PUSH BC
	CALL 0D1E1H
	POP BC
	POP BC
	PUSH BC
	CALL 0D17EH
	POP HL
	EX (SP),HL
	LD A,H
	POP HL
	EX (SP),HL
	LD L,A
	INC H
STR3:	DEC H
	PUSH HL
	PUSH BC
	JR Z,STR4
	CALL 0D2F2H
	POP BC
	POP HL
	JR STR3
 
STR4:	POP BC
	POP HL
	POP DE
	CALL 0D302H
	JP 0D1A9H
 
STR5:	LD E,1CH
	JP 0C356H
 
REN:	PUSH HL
	LD HL,0AH
	LD (354H),HL
	LD HL,(35FH)
	PUSH AF
	PUSH HL
	INC HL
	INC HL
	LD A,M
	INC HL
	LD H,M
	LD L,A
	LD (34EH),HL
	LD (352H),HL
	LD DE,(3D7H)
	DEC DE
	DEC DE
REN1:	POP HL
	PUSH HL
	LD A,M
	INC HL
	LD H,M
	LD L,A
	CALL 0C689H
	EX (SP),HL
	JR NZ,REN1
	POP DE
	INC HL
	INC HL
	LD A,M
	INC HL
	LD H,M
	LD L,A
	LD (350H),HL
	LD B,4
	POP AF
	LD HL,34EH
	EX (SP),HL
REN2:	JR Z,REN5
	CALL 0C986H
	PUSH AF
	LD A,D
	OR E
REN3:	JP Z,0C967H
	POP AF
	EX (SP),HL
	LD M,E
	INC HL
	LD M,D
	INC HL
	JR Z,REN5
	PUSH AF
	DEC B
	JR Z,REN4
	POP AF
	EX (SP),HL
	CALL 0C8D6H
	JR REN2
 
REN4:	POP AF
	JP NZ,0C348H
REN5:	LD HL,(350H)
	LD DE,(34EH)
	CALL 0C689H
REN6:	JP C,0C967H
	LD HL,(35FH)
REN7:	CALL 0C4BEH
	JR C,REN8
	JR Z,REN3
	JR REN7
 
REN8:	POP HL
	PUSH BC
	LD DE,(350H)
	LD HL,0
	LD (350H),HL
REN9:	LD H,B
	LD L,C
	LD C,M
	INC HL
	LD B,M
	LD A,B
	OR C
	JR Z,REN3
	INC HL
	LD A,M
	INC HL
	LD H,M
	LD L,A
	CALL 0C689H
	LD HL,(350H)
	INC HL
	LD (350H),HL
	JR NZ,REN9
	INC HL
	INC HL
	ADD HL,HL
	INC HL
	LD DE,(3D7H)
	ADD HL,DE
	JR C,REN6
	CALL 0C327H
	LD (3D7H),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,(352H)
	LD (34EH),HL
REN10:	POP HL
	LD C,M
	INC HL
	LD B,M
	INC HL
	PUSH BC
	LD BC,34EH
	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,(34EH)
	LD BC,(354H)
	ADD HL,BC
	LD (34EH),HL
	LD HL,(350H)
	DEC HL
	LD A,H
	OR L
	LD (350H),HL
	JR NZ,REN10
	LD (DE),A
	POP HL
	LD HL,(35FH)
	PUSH HL
REN11:	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,REN15
 
REN12:	INC HL
REN13:	LD A,M
	OR A		;ZEILEN-ENDE
	JR Z,REN11
	CP 88H		;GOTO
	JR Z,REN16
	CP 8CH		;GOSUB
	JR Z,REN16
	CP 8BH		;RESTORE
	JR Z,REN14
	CP 0D4H		;ELSE
	JR Z,REN14
	CP 0A9H		;THEN
	JR NZ,REN12
 
REN14:	CALL 0C987H	;F.RESTORE,THEN,
	LD A,E		; ELSE
	OR D
	CALL NZ,RENLN
	CALL NZ,RENZN
	JR REN13
 
REN15:	DEC HL
	LD (3D7H),HL
	DEC HL
	LD M,A
	DEC HL
	LD M,A
	POP HL
	POP HL
	JP 0C48AH
 
REN16:	CALL 0C987H	;F.GOTO,GOSUB
	LD A,E
	OR D
	JR Z,REN13
	CALL RENLN
	CALL NZ,RENZN
	LD A,M
	CP 2CH
	JR NZ,REN13
	JR REN16
 
RENLN:	PUSH HL
	PUSH DE
	LD DE,0FFFFH
	CALL 0C4BBH
	POP DE
	INC BC
	INC BC
	INC BC
	INC BC
	LD H,B
	LD L,C
	LD BC,(352H)
RL1:	LD A,M
	INC HL
	PUSH HL
	OR M
	JR Z,REND2
	LD A,M
	DEC HL
	LD L,M
	LD H,A
	CALL 0C689H
	JR Z,REND1
	LD HL,(354H)
	ADD HL,BC
	LD B,H
	LD C,L
	POP HL
	INC HL
	JR RL1
 
REND1:	XOR A
	DEC A
REND2:	POP HL
	POP HL
	RET
 
RENZN:	PUSH BC		;NEUE ZEILEN-NR.
	EX DE,HL	; F.SPRUENGE,...
	LD HL,(3D7H)
	SBC HL,DE
	PUSH HL
RZ1:	POP BC
	LD H,D
	LD L,E
	DEC DE
	LD A,(DE)
	CP ','
	JR Z,RZ2
	CP ':'
	JR NC,RZ2
	PUSH BC
	PUSH DE
	LDIR
	POP DE
	JR RZ1
 
RZ2:	EX DE,HL
	POP DE
	PUSH HL
	PUSH BC
	XOR A
	LD B,98H
	CALL 0D6AEH
	CALL 0D834H
	POP BC
	POP DE
	INC HL
	INC DE
RZ3:	LD A,M
	OR A
	JR Z,RZ4
	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 RZ3
 
RZ4:	PUSH DE
	LD DE,(35FH)
	CALL 0C493H
RZ5:	INC HL
	LD A,M
	INC HL
	OR M
	JR NZ,RZ5
	EX DE,HL
	LD M,E
	INC HL
	LD M,D
	INC DE
	INC DE
	LD (3D7H),DE
	POP HL
	LD D,H
	LD E,L
RZ6:	LD A,M
	OR A
	INC HL
	JR NZ,RZ6
	POP BC
	EX (SP),HL
	PUSH BC
	EX DE,HL
	RET
 
DLTE:	RET Z
	CALL 0C986H
	JP Z,0C442H
	CALL 0C8D6H
	PUSH DE
	CALL 0C986H
	POP HL
	RET NZ
	EX DE,HL
	PUSH HL
	CALL 0C4BBH
	JP NC,0C44DH
	POP DE
	PUSH AF
	PUSH BC
	CALL 0C4BEH
	JP NC,0C44DH
	POP BC
	JP 0C450H
 
PAUSE:	CALL 0C8BEH
	JR NZ,PSE2
PSE1:	LD E,2AH	;BRKT
	CALL PV5
	RET C
	CP 0AH		;CUD
	JR NZ,PSE1
CONT:	JP 0DDE4H
 
PSE2:	CALL 0D421H
	LD C,A
PSE3:	LD A,10H
	LD E,14H	;WAIT
	CALL PV5
	LD E,2AH	;BRKT
	CALL PV5
	RET C
	CP 0AH
	JR Z,CONT
	DEC C
	JR NZ,PSE3
	RET
 
BEEP:	LD B,1
	CALL 0C8BEH
	JR Z,BEEP1
	CALL 0D421H
	LD B,A
BEEP1:	LD A,7
	LD E,0
	CALL PV5
	DJNZ BEEP1
	RET
 
MC8D4:	CALL 0C8D6H
	JP 0D421H
 
WNDW:	CALL 0C8BEH
	JR Z,WDW2
	CALL 0D421H
	LD B,A		;WAY>B
	PUSH BC
	CALL MC8D4
	LD D,A		;WEY>D
	PUSH DE
	CALL MC8D4
	POP DE
	LD E,A		;WAX>E
	PUSH DE
	CALL MC8D4
	POP DE		;WEX>A
	EX (SP),HL	;WAY>H
	LD L,E		;WAX>L
	SUB E
	JR C,SNERR2
	INC A
	LD E,A		;WLX>E
	LD A,D		;WEY
	SUB H		;WAY
	JR C,SNERR2
	INC A
	LD D,A		;WLY>D
WDW1:	CALL IRMON
	CALL WININ0
	CALL IRMOFF
	JR C,SNERR2
	POP HL
	RET
 
WDW2:	PUSH HL
	LD HL,100H
	LD DE,1E28H
	JR WDW1
 
BLOAD:	PUSH HL
	LD HL,0B781H
	XOR A
	CALL RLDMA
	POP HL
	LD E,10H
	JP PV5
 
VPEEK:	CALL 0CDE1H
	EX (SP),HL
	LD DE,0CDF3H
	PUSH DE
	CALL 0C96FH
	PUSH HL
	LD HL,8000H
	ADD HL,DE
	JR C,SNERR2
	BIT 6,H
	JR NZ,SNERR2
	CALL RLDAM
	POP HL
	JP 0D3E9H
 
VPOKE:	CALL 0C96CH
	PUSH DE
	CALL MC8D4
	EX (SP),HL
	LD DE,8000H
	ADD HL,DE
	JR C,SNERR2
	BIT 6,H
	JR Z,JLDMA
SNERR2:	JP 0C348H
 
AT:	LD A,(3FDH)
	BIT 1,A
	SET 1,A
	LD (3FDH),A
	JR NZ,SNERR2
	PUSH DE
	PUSH HL
	CALL IRMON
	LD HL,0
	LD DE,2028H
	CALL WININ0
	CALL IRMOFF
	POP HL
	CALL SUARG
	CALL 0C8DBH
	CALL 0C8CCH
	DEFB ';'
	LD A,M
	CP 0DFH
	JR C,AT2
	CP 0E3H
	JR NC,AT2
	CALL RBE2
AT1:	PUSH HL
	CALL IRMON
	LD A,(0B79BH)
	CALL WINAK1
	CALL IRMOFF
	POP HL
	POP DE
	POP BC
	RET
 
AT2:	CALL 0CB03H
	JR AT1
 
INK:	CALL 0D421H
	CP 20H
	JR NC,SNERR2
	ADD A
	ADD A
	ADD A
	LD D,A
	CALL LOCOL
	AND 7
	JR LDCOL
 
PAPER:	CALL 0D421H
	CP 8
	JR NC,SNERR2
	LD D,A
	CALL LOCOL
	AND 0F8H
LDCOL:	OR D
	PUSH HL
	LD HL,0B7A3H
JLDMA:	CALL RLDMA
	POP HL
	RET
 
COLR:	CALL 0C8BEH
	JR Z,SNERR2
	CALL INK
	CALL 0C8BEH
	RET Z
	CALL 0C8D6H
	JR PAPER
 
SUARG:	CALL 0C8BDH
	CALL 0C8CCH
	DEFB '('
 
LOCAT:	CALL 0D421H
	LD D,A
	PUSH DE
	CALL MC8D4
	POP DE
	LD E,A
	CALL IRMON
	CALL TCIF
	JR C,LOCAT1
	LD (0B7A0H),DE
LOCAT1:	CALL IRMOFF
	RET NC
SNERR3:	JP 0C348H
 
INKEY:	PUSH HL
	CALL KBDS
	JR NC,IKY2
	LD A,1
	CALL 0D17BH
	CALL 0DDE4H
AKTCHR:	LD HL,(3C2H)
	LD M,A
IKY1:	JP 0D1A9H
 
IKY2:	XOR A
	CALL 0D17BH
	JR IKY1
 
SOUND:	CALL 0D421H
	PUSH HL
	LD HL,0B782H
	LD B,4
SNDS:	CALL RLDMA
	INC HL
	EX (SP),HL
	DEC B
	JR Z,SND2
	PUSH BC
	CALL MC8D4
	POP BC
	EX (SP),HL
	JR SNDS
 
SND2:	CALL 0C8BEH
	JR Z,SND3
	CALL MC8D4
	EX (SP),HL
	CALL RLDMA
	INC HL
	EX (SP),HL
	CALL 0C8BEH
	JR Z,SND3
	CALL MC8D4
	EX (SP),HL
	CALL RLDMA
	EX (SP),HL
SND3:	LD E,35H
	POP BC
	JP PV5
 
PRES:	LD E,2FH
	DEFB 1
PSET:	LD E,30H
	PUSH DE
	CALL 0C96CH
	PUSH HL
	LD HL,0B7D3H
	CALL LDMDE
	EX (SP),HL
	CALL MC8D4
	EX (SP),HL
	CALL RLDMA
	POP HL
	CALL SUCOL
	POP DE
PNT2:	CALL PV5
	RET NC
	JR SNERR3
 
SUCOL:	CALL 0C8BEH
	RET Z
	CALL MC8D4
	PUSH HL
	LD HL,0B7D6H
	RLCA
	RLCA
	RLCA
	JP JLDMA
 
INSTR:	CALL 0CD36H
	CALL 0C8D6H
	PUSH HL
	CALL 0D330H
	JR Z,FCERR
	LD B,A
	INC HL
	INC HL
	LD E,M
	INC HL
	LD D,M
	POP HL
	PUSH DE
	PUSH BC
	CALL 0CD3AH
	CALL 0C8DBH
	POP BC
	POP DE
	PUSH HL
	PUSH DE
	PUSH BC
	CALL 0D330H
FCERR:	JP Z,0C967H
	INC HL
	INC HL
	LD C,M
	INC HL
	LD H,M
	LD L,C
	POP BC
	LD C,A
	POP DE
	PUSH HL
ISTR1:	PUSH BC
	PUSH DE
	LD A,(DE)
ISTR2:	CP M
	JR Z,ISTR5
	INC HL
	DEC C
	JR NZ,ISTR2
ISTR3:	XOR A
	POP HL
	POP HL
	POP HL
ISTR4:	LD DE,0CDF3H
	PUSH DE
	JP 0D0C0H
 
ISTR5:	INC HL
	PUSH HL
	DEC HL
ISTR6:	INC HL
	DEC C
	JR Z,ISTR7
	INC DE
	DEC B
	JR Z,ISTR8
	LD A,(DE)
	CP M
	JR Z,ISTR6
	POP HL
	POP DE
	LD A,C
	POP BC
	LD C,A
	JR ISTR1
 
ISTR7:	INC DE
	DEC B
	POP HL
	JR NZ,ISTR3
	JR ISTR9
 
ISTR8:	POP HL
ISTR9:	POP DE
	POP DE
	POP DE
	AND A
	SBC HL,DE
	LD A,L
	JR ISTR4
 
BKEY:	CALL 0D421H
	CP 0DH
	JR NC,SNERR4
	LD E,39H
	DEFB 1
KLST:	LD E,3AH
	DEFB 1
RLDAM:	LD E,29H
JPV5:	JP PV5
 
RLDMA:	LD E,28H
	JR JPV5
 
SWTCH:	CALL 0D421H
	PUSH AF
	CALL MC8D4
	LD D,A
	POP AF
	PUSH HL
	LD L,A
	LD A,2
	LD E,26H
	CALL PV5
	POP HL
	RET
 
PTEST:	CALL 0CDE1H
	EX (SP),HL
	LD DE,0CDF3H
	PUSH DE
	CALL 0C96FH
	PUSH HL
	LD HL,0B7D3H
	CALL LDMDE
	CALL IRMON
	LD E,2FH
	CALL PV3
	JR C,PTST2
	LD B,0
	JR Z,PTST1
	INC HL
	LD M,A
	INC E
	CALL PV3
	LD B,1
PTST1:	LD A,B
PTST2:	CALL IRMOFF
	POP HL
	JP NC,0D3E9H
 
SNERR4:	JP 0C348H
 
LDMDE:	LD A,E
	CALL RLDMA
	INC HL
	LD A,D
	CALL RLDMA
	INC HL
	RET
 
CLOSE:	LD C,0
	LD A,M
	CP 'I'
	JR Z,CL1
	INC C
	CP 'O'
	JR NZ,SNERR4
CL1:	PUSH BC
	INC HL
	LD A,M
	CP '#'
CL2:	JR NZ,SNERR4
	INC HL
	CALL 0D421H
	AND 3
	POP BC
	RET Z
	PUSH HL
	RL A
	ADD C
	PUSH AF
	DEC A
	LD B,0
	SCF
CL3:	RL B
	DEC A
	JR NZ,CL3
	LD HL,307H
	LD A,M
	XOR B
	LD M,A
	POP AF
	POP HL
	SET 6,A
	PUSH DE
	LD E,A
	LD D,3
	CALL BASPV
	POP DE
	RET
 
RND:	LD A,R
	LD (31DH),A
	RET
 
OPEN:	LD A,M
	INC HL
	CP 'I'
	JR Z,OPENI
	CP 'O'
	JR NZ,CL2
	CALL 0DE25H
	CALL 0DDC8H
	RET Z
	LD A,0D5H
	CALL 0DCB2H
	LD HL,3EAH
	XOR A
	CALL 0DDD5H
	POP HL
	RET
 
OPENI:	CALL 0DE5FH
	LD A,(309H)
	AND 3
	RET Z
	LD A,0D5H
	CALL 0DCB2H
	LD HL,3EAH
	CALL 0DDE4H
	POP HL
	RET
 
BLINE:	LD BC,43EH
	JR PIC1
 
CIRCL:	LD BC,33FH
 
PIC1:	PUSH BC
	CALL 0C96CH
	POP BC
	PUSH BC
	PUSH HL
	LD HL,0B782H
PIC2:	CALL LDMDE
	DEC B
	JR Z,PIC3
	EX (SP),HL
	PUSH BC
	CALL 0C8D6H
	CALL 0C96CH
	POP BC
	EX (SP),HL
	JR PIC2
 
PIC3:	POP HL
	CALL SUCOL
	POP DE
	JP PV5
 
CSRLIN:	CALL 0CDE1H
	EX (SP),HL
	LD DE,0CDF3H
	PUSH DE
	CALL 0D424H
	PUSH HL
	AND A
	LD A,0
	LD HL,0B79DH
	CALL Z,RLDAM
	LD B,A
	LD L,0A1H
	CALL RLDAM
	ADD B
	POP HL
	JP 0D3E9H
 
VGET:	EX (SP),HL
	LD A,1
	CALL 0D17BH
	CALL IRMON
	LD DE,(0B7A0H)
	CALL DABR
	LD A,M
	CALL IRMOFF
	JP AKTCHR
 
;	BASIC-TOKEN
;	===========
 
TOKTAB:	DEFB 'I'+80H	;TOKEN AB D5
	DEFM 'NKEY$'
	DEFB 'J'+80H
	DEFM 'OYST'
	DEFB 'S'+80H
	DEFM 'TRING$'
	DEFB 'I'+80H
	DEFM 'NSTR'
	DEFB 'R'+80H
	DEFM 'ENUMBER'
	DEFB 'D'+80H
	DEFM 'ELETE'
	DEFB 'P'+80H
	DEFM 'AUSE'
	DEFB 'B'+80H
	DEFM 'EEP'
	DEFB 'W'+80H
	DEFM 'INDOW'
	DEFB 'B'+80H
	DEFM 'ORDER'
	DEFB 'I'+80H
	DEFM 'NK'
	DEFB 'P'+80H
	DEFM 'APER'
	DEFB 'A'+80H
	DEFM 'T'
	DEFB 'C'+80H
	DEFM 'OLOR'
	DEFB 'S'+80H
	DEFM 'OUND'
	DEFB 'P'+80H
	DEFM 'SET'
	DEFB 'P'+80H
	DEFM 'RESET'
	DEFB 'B'+80H
	DEFM 'LOAD'
	DEFB 'V'+80H
	DEFM 'PEEK'
	DEFB 'V'+80H
	DEFM 'POKE'
	DEFB 'L'+80H
	DEFM 'OCATE'
	DEFB 'K'+80H
	DEFM 'EYLIST'
	DEFB 'K'+80H
	DEFM 'EY'
	DEFB 'S'+80H
	DEFM 'WITCH'
	DEFB 'P'+80H
	DEFM 'TEST'
	DEFB 'C'+80H
	DEFM 'LOSE'
	DEFB 'O'+80H
	DEFM 'PEN'
	DEFB 'R'+80H
	DEFM 'ANDOMIZE'
	DEFB 'V'+80H
	DEFM 'GET$'
	DEFB 'L'+80H
	DEFM 'INE'
	DEFB 'C'+80H
	DEFM 'IRCLE'
	dEFB 'C'+80H
	DEFM 'SRLIN'
	DEFB 80H	;ENDE-BYTE
 
TOKADR:	DEFW INKEY
	DEFW 2FDH	;JOY
	DEFW STR
	DEFW INSTR
TADR5:	DEFW REN
	DEFW DLTE
	DEFW PAUSE
	DEFW BEEP
	DEFW WNDW
	DEFW 0D421H	;BORDER
	DEFW INK
	DEFW PAPER
	DEFW 0C348H	;AT
	DEFW COLR
	DEFW SOUND
	DEFW PSET
	DEFW PRES
	DEFW BLOAD
	DEFW 0C348H	;VPEEK
	DEFW VPOKE
	DEFW LOCAT
	DEFW KLST
	DEFW BKEY
	DEFW SWTCH
	DEFW 0C348H	;PTEST
	DEFW CLOSE
	DEFW OPEN
	DEFW RND
	DEFW 0C348H	;VGET
	DEFW BLINE
	DEFW CIRCL
 
;	END
                                                                                                                       
Detected encoding: ASCII (7 bit)2