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

CAOSFVASM;	CAOS 3.4 - ROM F
;	Version V.24 / RS 232
;
;	Date: 11.06.1991  (c) by '#+$'
;
SIO	EQU 008H	;SIO PORT A
CTC	EQU 00CH	;SIO-CTC
; StrByte des Interface-Moduls
UMODL	EQU 1EEH	;M003 V24
 
	ORG 0F000H
 
PRESET:	JP PWRON	;>> POWER ON <<
	JP PV1		;DEFB NR
	JR PV2		;(ARGC)
ZEI0:	DEFB 0
	JR PV3		;REG. E
ZEI2:	DEFB 2
	JR PV4		;+IRM
ZEI4:	DEFB 4
	JP RCALL
	JP NEWOS	;>JUMP<
	JP PV5		;(ARGC)
	JP IRMON
	JP IRMOFF
 
PV6:	PUSH BC		;*** PV 6 ***
	CALL IRMON
	CALL PV2
	JR PV51
 
PV5:	PUSH BC		;*** PV 5 ***
	CALL IRMON
	CALL PV3
PV51: 	CALL IRMOFF
	POP BC
	RET
 
PV4:	PUSH AF		;*** PV 4 ***
	IN A,88H
	OR 4
	OUT 88H,A
	POP AF
	CALL PV3
SCROFF:	PUSH AF
	IN A,88H
	AND 0FBH
	OUT 88H,A
	POP AF
	RET
 
PV1:	PUSH HL		;*** PV 1 ***
	DI
	POP HL
	POP HL
	INC HL
	PUSH HL
	DEC HL
	DEC SP
	DEC SP
	EI
TABJP:	PUSH DE
	LD E,M
PV11:	LD D,0
	LD HL,(0B7B0H)
	PUSH AF
	ADD HL,DE
	ADD HL,DE
	POP AF
	LD E,M
	INC HL
	LD D,M
	EX DE,HL
	POP DE
PV1END:	EX (SP),HL
	RET
 
PV3:	SCF		;*** PV 3 ***
	DEFB 0EDH
PV2:	AND A		;*** PV 2 ***
PV21:	PUSH HL
	PUSH DE
	PUSH BC
	PUSH HL
	LD HL,POPS3
	EX (SP),HL
	PUSH HL
	PUSH DE
	JR C,PV11
	LD DE,(0B780H)
	JR PV11
 
IRMON:	POP BC		;*** IRM ON ***
	DI
	LD (IX+0BH),A
	IN A,88H
	SET 2,A
	OUT 88H,A
	LD (0B7CBH),SP
	LD SP,(0B7AEH)
OFFEND:	LD A,(IX+0BH)
	EI
	PUSH BC
	RET
 
IRMOFF:	POP BC		;*** IRM OFF ***
	DI
	LD SP,(0B7CBH)
	LD (IX+0BH),A
	IN A,88H
	RES 2,A
	OUT 88H,A
	JR OFFEND
 
INTB:	PUSH HL		;UP 16 INTB
	LD HL,(0B7BBH)
	JR TABJP
 
OCHRP:	LD A,(0B7D9H)
OCHR:	PUSH HL		;UP 24 OCHR
	LD HL,(0B7B9H)
	JR TABJP
 
RCALL:	EX (SP),HL	;*** RCALL ***
	LD E,M
	INC HL
	LD D,M
	INC HL
	EX DE,HL
	ADD HL,DE
	EX DE,HL
	EX (SP),HL
	PUSH DE
	RET
 
;*** Switch & Jump ***
 
	DEFW 7F7FH	;>SWITCH<
	DEFM 'SWYTCH'
	DEFB 1
	;
	LD D,E
	CALL MODU
MODOUT:	;Ausgabe 3 Bytes L,H,D
	CALL LHSPCE
	LD A,H
	CALL AHSPCE
	LD A,D
	CALL AHEX
	JP CRLF
 
MODU:	;VR:AF,H,BC,(D)	;UP 26 MODU
	LD H,0B8H
	LD C,80H
	LD B,L
	CP 2
	JR NC,MDL2
	LD D,M
MDL1:	IN H,(C)
	RET
 
MDL2:	LD M,D
	LD B,L
	INC B
	IN A,88H
	DJNZ NRAM0
	AND 0F5H
	BIT 0,D
	JR Z,RAM01
	SET 1,A
RAM01:	BIT 1,D
	JR Z,OUTB
	SET 3,A
OUTB:	OUT 88H
	JR MDL1
 
NRAM0:	DJNZ NIRM
	BIT 0,D
	RES 2,A
	JR Z,OUTB
	SET 2,A
	JR OUTB
 
NIRM:	DJNZ NROM
	RLA
	LD H,D
	RR H
	RRA
	JR OUTB
 
NROM:	LD B,L
	OUT (C),D
	JR MDL1
 
	DEFW 7F7FH	;>JUMP<
	DEFM 'JUMP'
	DEFB 1
	RET Z
	LD A,L
	;
JUMP:	OR A		;UP 27 JUMP
	JR Z,SYS
	LD B,A
	LD C,80H
	IN A,(C)
	INC A
	JP Z,ERRM
	LD D,0FFH
	CALL MOSW2
	XOR A
	LD B,(IX+4)
	LD L,B
	LD M,A
	JR SYS1
 
SYS:	LD C,88H
	IN A,(C)
	SET 0,A
SYS1:	DI
	JP 0B7B4H
 
;====== POWER ON =======================
;(Einspr}nge PWRON,NEWOS,BYE)
 
PWRON:	DI
	LD SP,1C4H
	LD A,3EH
	OUT 88H
	CALL MODSW1
	LD E,(IX+4)
	XOR A
	LD B,0E0H
	LD H,A		;Clear Memo
	LD L,A
PWRO1:	LD M,A
	INC L
	JR NZ,PWRO1
	INC H
	DJNZ PWRO1
	LD C,80H	;Modul off
	LD A,E
PWRO2:	CP B
	JR Z,PWRO3
	OUT (C),L
PWRO3:	DJNZ PWRO2
	LD B,E
NEWOS:	DI
	LD (IX+4),B
	CALL SYSI	;Systeminit
	XOR A
PWRO4:	LD (0B79BH),A	;Windows
	CALL WCOPY
	INC A
	CP 0AH
	JR C,PWRO4
	CALL MODSW
 
BYE:	LD SP,1C4H	;UP 0D BYE
	LD A,1EH
	OUT 88H		;init.MEM on !!
	CALL SYSI
	JR MEN1
 
	DEFW 7F7FH	;>MENU<
	DEFM 'MENU'
	DEFB 1
	;
	POP HL
MEN1:	CALL OSTR
	DEFB 0CH
	DEFB 0AH
	DEFM '* HC-CAOS 3.4 *'
	DEFB 0
MENU:	LD HL,0C000H	;UP 46 MENU
	LD C,L
	LD B,L
MEN2:	CALL CRLF
MEN3:	CALL BRKT
	JR C,LOOP
	LD A,(IX+9)
MEN4:	CPIR
	JP PO,LOOP
	CPI
	JR NZ,MEN4
	CALL OCHRP
MEN5:	LD A,M
	CP 2
	JR C,MEN2
	CP 30H
	JR C,MEN6
	CP 60H
	JR NC,MEN6
	CALL OCHR
	INC HL
	DEC BC
	JR MEN5
MEN6:	CALL CLLN
	JR MEN3
 
NLP1:	POP HL		;LOOP
NLP2:	CALL ERRM
LOOP0:	LD A,0BH
	CALL C,OCHR
	CALL CLLN
LOOP:	CALL OCHRP	;UP 12 LOOP
	CALL INLIN
	JR C,LOOP0	;Brk
	INC DE
	LD A,(DE)
	CP 21H
	JR C,LOOP
	CALL MSUCH
	JR NC,NLP2
	PUSH HL
	CALL GARG
	JR C,NLP1
	LD HL,LOOP
	EX (SP),HL
	LD A,M
	INC HL
	PUSH HL
	AND A
	CALL LARG
	CALL Z,SCROFF
	AND A
	RET
 
MSUCH:	LD HL,0C000H
	LD B,L
	LD C,L
	LD A,(IX+9)
 
ZSUCH:	CPIR		;UP 1D ZSUCH
	SCF
	CCF
	RET PO
	CPI
	JR NZ,ZSUCH
	PUSH AF
	PUSH DE
ZS1:	LD A,(DE)
	CP 21H
	JR C,ZS3
	INC DE
	CPI
	JR Z,ZS1
ZS2:	POP DE
	POP AF
	JR ZSUCH
ZS3:	LD A,M
	CP 2
	JR C,ZS4
	CP 20H
	JR C,ZS2
	INC HL
	JR ZS3
ZS4:	POP BC
	POP AF
	SCF
	RET
 
WAIT1:	DEC A
	RET Z
	PUSH AF
	POP AF
	JR WAIT1
 
CBNRO:	CALL CLLN
BNROST:	LD A,(IX+2)
AHOSTR:	CALL AHEX
	;
OSTR:	EX (SP),HL	;UP 23 OSTR
	CALL ZKOUT
	EX (SP),HL
	RET
 
NORM:	CALL NIN	;UP 13 NORM
	;
NOUT:	LD HL,ZEI0	;UP 20 NOUT
	;
SOUT:	PUSH HL		;UP 1E SOUT
	LD HL,(0B7B9H)
	EX (SP),HL
	LD (0B7B9H),HL
	POP HL
	RET
 
NIN:	LD HL,ZEI4	;UP 21 NIN
	;
SIN:	PUSH HL		;UP 1F SIN
	LD HL,(0B7BBH)
	EX (SP),HL
	LD (0B7BBH),HL
	POP HL
	RET
 
BRKT:	CALL KBDS	;UP 2A BRKT
BRKT1:	CP 3
	SCF
	RET Z
	CP 13H
	SCF
	CCF
	RET NZ
	CALL RESFL
	CALL KBD1
	JR BRKT1
 
KBD:	BIT 6,(IX+8)	;UP 4 KBD
KBD1:	PUSH HL
	PUSH DE
	PUSH BC
	JR NZ,KBD8
KBD2:	CALL CUCP
KBD3:	CALL KBDZ
	JR NC,KBD3
	CALL CUCP
KBD4:	BIT 5,(IX+8)
	LD D,A
	CALL NZ,RCLICK
	LD A,D
	LD HL,0B7A2H
	BIT 4,M
	CALL NZ,CRT
	JR NZ,KBD2
KBD5:	CP 1BH
	JR NZ,KBD6
	SET 4,M
	JR KBD2
 
KBD6:	CP 0F1H
	JP C,POPS3
	SET 6,(IX+8)
	SUB 0F0H
	LD B,A
	LD HL,0B900H
KBD7:	LD A,M
	AND A
	INC HL
	JR NZ,KBD7
	DJNZ KBD7
	JR KBD9
 
KBD8:	CALL BRKT
	JR C,KBD10
	LD HL,(0B7D1H)
KBD9:	LD A,M
	INC HL
	LD (0B7D1H),HL
	AND A
	JP NZ,POPS3
KBD10:	RES 6,(IX+8)
	JR KBD2
 
;*** CCP ***
 
INLIN:	CALL INTB
	CALL OCHR
	CP 0DH
	JR Z,ILN1
	CP 3
	JR NZ,INLIN
	SCF
ILN1:	PUSH AF
	CALL CRLF
	LD DE,(0B7A0H)
	CP D
	JR NZ,ILN2
	LD A,(0B79FH)
	LD D,A
ILN2:	DEC D
	PUSH HL
	CALL DABR
	EX DE,HL
	POP HL
	POP AF
	RET
 
HLHX:	LD A,H		;UP 1A HLHX
	CALL AHEX
LHSPCE:	LD A,L
AHSPCE:	CALL AHEX
	;
SPAC:	LD A,20H	;UP 2B SPAC
SPAC0:	JP OCHR
 
ERRM:	CALL OSTR	;UP 19 ERRM
	DEFM 'Error'
	DEFB 7
	DEFB 0
	;
CRLF:	CALL OSTR	;UP 2C CRLF
	DEFB 0DH
	DEFB 0AH
	DEFB 0
	RET
 
HOME:	LD A,10H	;UP 2D HOME
	JR SPAC0
 
CLLN:	LD A,2
	JR SPAC0
 
AHEX:	PUSH AF		;UP 1C AHEX
	RRA
	RRA
	RRA
	RRA
	CALL AHEX1
	POP AF
AHEX1:	AND 0FH
	ADD 90H
	DAA
	ADC 40H
	DAA
	JR SPAC0
 
HLDE:	CALL HLDE1	;UP 1B HLDE
HLDE1:	CALL HLHX
	EX DE,HL
	RET
 
RHEX0:	INC DE
	;
RHEX:	LD A,(DE)	;UP 18 RHEX
	CP 20H
	JR Z,RHEX0
	XOR A
	LD HL,0B798H
	LD M,A
	DEC HL
	LD M,A
	DEC HL
	LD M,A
RH1:	LD A,(DE)
	OR A
	RET Z
	CP 20H
	RET Z
	SUB 30H
	RET C
	CP 0AH
	JR C,RH2
	SUB 7
	AND 0DFH
	CP 0AH
	RET C
	CP 10H
	CCF
	RET C
RH2:	INC DE
	INC M
	INC HL
	RLD
	INC HL
	RLD
	DEC HL
	DEC HL
	JR Z,RH1
	DEC DE
	SCF
	RET
 
GARG:	LD BC,0B781H	;UP 22 GARG
	XOR A
	LD (BC),A
	INC DE
GARG1:	CALL RHEX
	RET C
	LD A,M
	OR A
	RET Z
	INC HL
	INC BC
	LD A,M
	LD (BC),A
	INC HL
	INC BC
	LD A,M
	LD (BC),A
	LD L,81H
	INC M
	LD A,M
	ADD 0F5H
	JR NC,GARG1
	RET
 
;*** Systeminit ***
 
SYSI:	LD HL,KCTAB0
	LD D,5+2	;+2:V.24-Interf.
	CALL INIMEI
	LD DE,0B799H
	LD BC,STBL1
	LDIR
	LD E,0D8H
	LD C,STBL2
	LDIR
	LD A,1
	;
SIXD:	DI		;UP 31 SIXD
	LD HL,ISRTAB
	LD (0B7D7H),A
	LD I,A
	LD E,0E4H
	LD D,A
	LD BC,0CH
	LDIR
	PUSH DE
	LD E,(IX+4)
	POP IX
	LD (IX+4),E
	LD (IX+8),88H
	LD (IX+9),7FH
	LD (IX+0EH),KTAB
	LD (IX+0FH),0FDH
	LD D,4
	LD HL,KCTAB1
	CALL INIME
	LD HL,103H
	LD (0B800H),HL
SIXD2:	LD A,(IX+7)
	AND 1FH
	LD (IX+7),A
SIXD3:	LD A,0FFH
	OUT 89H
	LD (IX+5),0
	LD (IX+6),0B7H
	EI
	JP RESFL
 
INIEA:	PUSH BC		;UP 43 INIEA
	LD C,M
	INC HL
	LD B,M
	INC HL
	OTIR
	POP BC
	RET
 
INIMEI:	IM 2
INIME:	CALL INIEA	;UP 44 INIME
	DEC D
	JR NZ,INIME
	RET
 
;*** Tape-Routinen ***
 
	DEFW 7F7FH	;>SAVE<
	DEFM 'SAVE'
	DEFB 1
	;
	CP 2
	JP C,ERRM
SAVE1:	CALL OSTR
	DEFM 'Name :'
	DEFB 0
	CALL INLIN
	RET C
	LD HL,6
	ADD HL,DE
	;
SAVE:	LD DE,0B700H	;UP 36 SAVE
	LD BC,11
	LDIR
	XOR A
	LD (DE),A
	LD HL,0B781H
	LD E,10H
	LD C,15H
	LDIR
	CALL NBWI
	RES 5,(IX+7)
	LD HL,(0B782H)
SAVE0:	LD (IX+5),L
	LD (IX+6),H
	LD DE,80H
	ADD HL,DE
	LD DE,(0B784H)
	SBC HL,DE
	CCF
	JP C,NBW1
	CALL NBW
	JP C,CRO0
	JR SAVE0
 
LARG:	LD BC,(0B786H)	;UP 15 LARG
	LD DE,(0B784H)
	LD HL,(0B782H)
	LD A,(0B781H)
	RET
 
NBL1:	CALL OSTR
	DEFM '???'
	DEFB 0
NBL2:	JP CMBI		;END CSRO
 
	DEFW 7F7FH	;>VERIFY<
	DEFM 'VERIFY'
	DEFB 1
	;
VERIFY:	RES 0,(IX+7)	;UP 11 VERIFY
	JR LOAD0
 
	DEFW 7F7FH	;>LOAD<
	DEFM 'LOAD'
	DEFB 1
	;
LOAD:	SET 0,(IX+7)	;UP 10 LOAD
	;
LOAD0:	CALL IMBII
	CALL NBR
	RES 5,(IX+7)
LOAD1:	JR C,NBL2	;>CSRO
	LD HL,0B700H
	LD B,11
LOADN:	LD A,M
	INC HL
	CALL CRT
	DJNZ LOADN
	CALL SPAC
	BIT 0,(IX+7)
	JR Z,LOAD4
	LD L,10H
	LD A,M
	SUB 2
	CP 8		;A=0..7
	JR NC,NBL1
	RLCA
	RLCA
	LD H,A
	LD A,(IX+7)
	AND 3
	OR H
	LD (IX+7),A
	LD BC,(0B715H)
	LD DE,(0B713H)
	LD HL,(0B711H)
	LD A,(0B781H)
	AND A
	JR Z,LOAD3
	PUSH BC
	LD BC,(0B782H)
	ADD HL,BC
	EX DE,HL
	ADD HL,BC
	EX DE,HL
	BIT 3,(IX+7)
	JR NZ,LOAD2
	EX (SP),HL
	ADD HL,BC
	EX (SP),HL
LOAD2:	POP BC
LOAD3:	LD (0B782H),HL
	LD (0B784H),DE
	LD (0B786H),BC
	CALL HLDE
LOAD4:	CALL CRLF
	EX DE,HL	;Ziel=DE
LOAD5:	CALL NBR
	JR C,LOAD1	;>CSRO
	BIT 0,(IX+7)
	JR Z,LOAD6
	PUSH HL
	SBC HL,DE
	LD BC,80H
	SBC HL,BC
	ADD HL,BC
	JR NC,BLC1
	LD C,L
BLC1:	LD HL,0B700H
	LDIR
	POP HL
LOAD6:	INC (IX+2)	;FF?
	JR NZ,LOAD5
	;
CSRI:	CALL CMBI	;UP 0B CSRI
	LD A,(IX+7)
	RRA
	RET NC		;bei VER.
	AND 0EH
	RES 0,(IX+7)
	RET Z		;2 ARG
	;
	BIT 1,(IX+7)	;AutoSt.enable ?
	JR Z,CSRI3
CSRI1:	CALL OSTR
	DEFM 'Run'
	DEFB 0
	CALL YESNO
	JR Z,CSRI3
	CP 'S'
	RET NZ
	LD A,3
	LD (0B781H),A
	CALL SAVE1	;PROGR. COPY
	JR CSRI1
 
CSRI3:	LD HL,(0B786H)
	JP (HL)		;AUTOSTART-ADR.
 
YESNO:	;PA:Z=1 bei YES, RG A
	CALL OSTR
	DEFM '? (Y):'
	DEFB 0
	CALL INTB
	PUSH AF
	CALL OCHR
	CALL CRLF
	POP AF
	RES 5,A
	CP 'Y'
	RET
 
NBR:	;NewBlockRead
	PUSH HL
	LD L,4		;4 Versuche
	LD H,(IX+3)
NBR0:	CALL BRKT
	JR C,NBREND
	CALL MBI
	LD A,(IX+2)
	PUSH AF
	CP H
	JR Z,NBR2
	INC A		;FF?
	JR NZ,NBR4
	LD A,L
	CP 4		;4 Versuche
	JR NZ,NBR4	;Kein 1.Vers.
	DEC H
	JR Z,NBR41	;01 erwartet
	INC H
NBR2:	POP AF
	JR C,NBR5
	BIT 5,(IX+7)
	JR NZ,NBR3
	CALL CBNRO
	DEFM '> '
	DEFB 0
NBR3:	INC H
	LD (IX+3),H
NBREND:	POP HL
	RET
 
NBR41:	INC H
NBR4:	POP AF
	CALL BNROST
	DEFM '*'
	DEFW 808H
	DEFB 8
	DEFB 0
	JR NBR0
 
NBR5:	LD H,A		;falls FF
	DEC L
	JR Z,NBR6
	CALL BNROST
	DEFM '? '
	DEFB 7
	DEFB 0
	JR NBR0
 
NBR6:	CALL BNROST
	DEFM '!'
	DEFB 1EH	;CRNL
	DEFB 0
	JR NBR3
 
NBW:	;NewBlockWrite
	CALL BRKT
	RET C
NBW1:	LD BC,(0B7DAH)	;mit CY=1 !
	BIT 5,(IX+7)
	JR Z,NBW2
	LD BC,500H
NBW2:	JP C,CSRO
	CALL MBOT
NBW3:	CALL BNROST
	DEFM '<'
	DEFB 0DH
	DEFB 0
	RET
 
NBWI:	CALL ISROI
	CALL CLLN
	JR NBW3
 
;*** Monitor ***
 
	DEFW 7F7FH	;>COLOR<
	DEFM 'COLOR'
	DEFB 1
	;
COLOR:	PUSH AF
	LD A,1FH
	AND L
	RLA
	RLA
	RLA
	LD L,A
	POP AF
	CP 2
	LD A,E
	JR NC,COL1
	LD A,(0B7A3H)
COL1:	AND 7
	OR L
COL2:	LD (0B7A3H),A
	RET
 
ESC2:	LD A,(0B7A3H)	;Blinken on/off
	XOR 80H
	JR COL2
 
DPMEMO:	CALL HLHX
	PUSH HL
	LD B,C
DPM1:	LD A,M
	INC HL
	CALL AHSPCE
	DJNZ DPM1
	POP HL
	LD B,C
	LD A,9
	CALL OCHR
DPM2:	LD A,M
	INC HL
	CALL CSTBT
	DJNZ DPM2
	RET
 
CSTBT:	PUSH HL		;UP 42 CSTBT
	LD HL,0B7A2H
	SET 3,M
	CALL OCHR
	RES 3,M
	POP HL
	RET
 
	DEFW 7F7FH	;>DISPLAY<
	DEFM 'DISPLAY'
	DEFB 1
	;
DISP:	SUB 3		;UP 3B DISP
	JR NC,DISP1
	LD C,8
	INC A
	JR Z,DISP1
	LD E,4
DISP1:	PUSH DE
DISP2:	CALL DPMEMO
	CALL CRLF
	CALL BRKT
	JR C,DISP3
	DEC E
	JR NZ,DISP2
	CALL INTB
DISP3:	POP DE
	CP 3
	RET Z
	CP 13H
	JR NZ,DISP1
	JR MO1
 
	DEFW 7F7FH	;>MODIFY<
	DEFM 'MODIFY'
	DEFB 1
	;
	LD C,E
	CP 2
	JR NC,MO1
MODI:	LD C,1		;UP 2E MODI
MO1:	CALL DPMEMO
	LD A,5
	LD (0B7A0H),A
	CALL INLIN
	RET C
	PUSH HL
	CALL RHEX
	LD A,M
	POP HL
	JR C,MO10
	AND A
	JR Z,MO1
	LD HL,(0B797H)
MO2:	PUSH HL
	CALL RHEX
	LD A,M
	AND A
	INC HL
	LD A,M
	POP HL
	JR Z,MO4
MO3:	LD M,A
	INC HL
MO4:	LD A,(DE)
	CP '.'
	RET Z
	CP ','
	JR NZ,MO5
	INC DE
	LD A,(DE)
	INC DE
	JR MO3
MO5:	CP ':'
	JR NZ,MO6
	DEC HL
	JR MO1
MO6:	CP '/'
	JR NZ,MO7
	INC DE
	CALL RHEX
	JR C,MO10
	LD HL,(0B797H)
	JR MO1
MO7:	CP 27H		;Hochkomma
	JR NZ,MO9
	INC DE
MO8:	LD A,(DE)
	INC DE
	AND A
	JR Z,MO1
	CP 27H		;Hochkomma
	JR Z,MO4
	LD M,A
	INC HL
	JR MO8
MO9:	AND A
	JR Z,MO1
	CP 20H
	JR Z,MO2
MO10:	CALL ERRM
	JR MO1
 
	DEFW 7F7FH	;>WINDOW<
	DEFM 'WINDOW'
	DEFB 1
	;
	AND A
	JR Z,WINAK
	DEC A
	JR Z,WINAK0
	CP 3
	JR C,ERRM2
	LD H,L
	LD L,C
	LD D,E
	LD A,(0B788H)
	LD E,A
	LD A,(0B78AH)
	JR NZ,WIN5
	LD A,(0B79BH)
WIN5:	CALL WININ
	RET NC
ERRM2:	JP ERRM
 
WININ0:	LD A,(0B79BH)	;von BASIC
WININ:	PUSH AF		;UP 3C WININ
	CALL PART
IAD21:	JP C,IAD2
	POP AF
	PUSH DE
	PUSH HL
	CALL WCOPY
	POP HL
	POP DE
	LD (0B79CH),HL
	LD (0B79EH),DE
	LD (0B7A0H),BC
	RET
 
WINAK0:	LD A,L
WINAK:	CALL WCOPY	;UP 3D WINAK
WINAK1:	CALL WINANF	;von BASIC
	RET C
	INC HL
	EX DE,HL
	JR WCPY1
 
WINANF:	LD HL,0B79BH
	LD A,M
	ADD 0F6H
	RET C
	ADD A
	LD E,A
	ADD A
	ADD A
	ADD E
	LD E,A
	LD D,0B9H
	AND A
	RET
 
PART:	ADD 0F6H
	RET C
	LD A,D
	SUB 1
	RET C
	ADD H
	RET C
	ADD 0E0H
	RET C
	LD A,E
	SUB 1
	RET C
	ADD L
	RET C
	ADD 0D8H
	RET
 
WCOPY:	PUSH AF
	CALL WINANF
	JR C,IAD21
	POP AF
	LD M,A
	INC HL
WCPY1:	LD BC,0AH
JPLD:	LDIR
	OR A
	RET
 
KDISP1	INC HL
KYDISP:	LD A,M
	AND A
	RET Z
	CALL CSTBT
	JR KDISP1
 
	DEFW 7F7FH	;>KEY<
	DEFM 'KEY'
	DEFB 1
	;
	JR Z,KEYLI
	LD A,L
	;
KEY:	AND A		;UP 39 KEY
	LD HL,0B900H
	JR Z,KKILL
	CP 0DH
	RET NC
	LD B,A
KEY1:	LD A,M
	INC HL
	AND A
	JR NZ,KEY1
	DJNZ KEY1
	CALL KYDISP
KEY2:	PUSH AF
	DEC HL
KEY3:	POP AF
KEY4:	CALL INTB
	CP 13H
	JP Z,CRLF
	PUSH AF
	LD B,0
	DEC A
	JR NZ,KEY5
	LD A,M
	AND A
	JR Z,KEY3
	LD D,H
	LD E,L
	PUSH HL
	INC HL
	LD A,9CH
	SUB L
	LD C,A
	LDIR
	POP HL
	POP AF
	CALL OCHR
	JR KEY2
KEY5:	LD A,(0B99AH)
	AND A
	JR NZ,KEY3
	PUSH HL
	LD A,9BH
	SUB L
	LD C,A
	LD HL,0B99AH
	LD DE,0B99BH
	LDDR
	POP HL
	POP AF
	INC HL
	LD M,A
	CALL CSTBT
	JR KEY4
 
KKILL:	LD B,09CH
KKIL1:	LD M,A
	INC HL
	DJNZ KKIL1
	RET
 
KEYLI:	LD HL,0B900H	;UP 3A KEYLI
	LD BC,0CF0H
KEYL0:	INC C
	CALL CLLN
	LD A,C
	CALL AHOSTR
	DEFM ' :'
	DEFB 0
	CALL KDISP1
	CALL CRLF
	DJNZ KEYL0
	RET
 
CUCP:	PUSH HL		;UP 25 CUCP
	PUSH DE
	PUSH AF
	LD DE,(0B7A0H)
	CALL DABR
	JR C,CEND
	LD A,M
	CALL PADR1
	OR A
	JR NZ,CFARB
	SET 5,L
	SET 0,H
	LD A,M
	XOR 7FH
	LD M,A
	JR CEND
 
CFARB:	LD A,(DE)
	CPL
	LD (DE),A
	SET 5,E
	LD A,(DE)
	CPL
	BIT 7,(IX+8)
	JR NZ,CFAB1
	XOR 4
CFAB1:	LD (DE),A
CEND:	POP AF
	JR PUDEND
 
;*** Grafiktreiber ***
 
PUDE:	DEFB 3EH	;UP 2F PUDE
	;
PUSE:	XOR A		;UP 30 PUSE
	PUSH HL
	PUSH DE
	LD HL,(0B7D3H)
	LD DE,(0B7D5H)
	OR A
	JR NZ,PUDEJP
	CALL WTESTV
	CALL NC,POINT
PUDEND:	POP DE
	POP HL
	RET
 
PUDEJP:	CALL WTESTV
	JR C,PUDEND
	PUSH BC
	CALL BADR
	LD B,A
	LD C,M
	CPL
	AND C
	LD M,A
	LD A,B
	AND C
	LD A,(DE)
	POP BC
	JR PUDEND
 
LINE:	EXX		;UP 3E LINE
	PUSH HL
	PUSH DE
	PUSH BC
	LD DE,(0B788H)
	LD HL,(0B784H)
	EXX
	CALL LARG
	LD D,B
	LD E,C
LINE1:	XOR A
	SBC HL,DE
	JR NC,LINE2
	ADD HL,DE
	EX DE,HL
	EXX
	EX DE,HL
	EXX
	JR LINE1
LINE2:	EXX
	PUSH DE
LINE3:	SBC HL,DE
	JR NC,LINE4
	ADD HL,DE
	EX DE,HL
	OR 1
	JR LINE3
LINE4:	PUSH HL
	EXX
	POP BC
	PUSH HL
	SBC HL,BC
	POP HL
	PUSH BC
	JR NC,LINE5
	EX (SP),HL
	OR 2
LINE5:	PUSH HL
	LD B,H
	LD C,L
	EXX
	POP BC
	POP DE
	LD H,B
	LD L,C
	SRL H
	RR  L
	EXX
	POP HL
	EX DE,HL
	INC BC
LINE6:	CALL SHLDE
	EXX
Detected encoding: ASCII (7 bit)2