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

SERVICE+ASM;---	SERVICE+.KCC	---
;
;Adressen: BDDF C000 BFF2
;
;		` ml 24.05.92
;----------------------------
ARGN	EQU	0B781H
ARG1	EQU	ARGN+1
ARG2	EQU	ARG1+2
NUMVX	EQU	0B797H
PV1	EQU	0F003H
WAIT	EQU	14H
INLIN	EQU	17H
ERRM	EQU	19H
HLHX	EQU	1AH
HLDE	EQU	1BH
AHEX	EQU	1CH
OSTR	EQU	23H
OCHR	EQU	24H
CRLF	EQU	2CH
IRMON	EQU	0F018H
IRMOF	EQU	0F01BH
;---------------
	ORG	0BDDFH
;BASIC-Schnittstelle:
;--------------------
BAS	LD A,0	;CALL*D8
	DEFB 1		;LD BC,13EH
	LD A,1	;CALL*DB
	DEFB 1		;LD BC,23EH
	LD A,2	;CALL*DE
	DEFB 1		;LD BC,33EH
	LD A,3	;CALL*E1
	DEFB 1		;LD BC,43EH
	LD A,4	;CALL*E4
	DEFB 1		;LD BC,53EH
	LD A,5	;CALL*E7
	DEFB 1		;LD BC,63EH
	LD A,6	;CALL*EA
	DEFB 1		;LD BC,73EH
	LD A,7	;CALL*ED
	CALL	IRMON
	CALL	JUMP	;BE00H
	CALL	IRMOF
	RET
;---------------
;Sprungverteiler:
JUMP	CP	8
	RET	NC	;wenn>8
	ADD	A
	LD	HL,TAB
	ADD	L
	LD	L,A
	LD	A,M
	INC	HL
	LD	H,M
	LD	L,A
	JP	(HL)	;Ansprung
;-------
TAB	DEFW	FLOAD
	DEFW	FSAVE
	DEFW	DIR
	DEFW	STAT
	DEFW	REN
	DEFW	SETRO
	DEFW	SETWR
	DEFW	ERA
;---------------
FLOAD	LD	HL,0
	CALL	NAMOUT
	JR	FLO
;-------
	DEFW	7F7FH
	DEFM	'FLOAD'
	DEFB	1
	CALL	NAME
FLO	EX	(SP),HL
	LD	(NUMVX),HL
	EX	(SP),HL
	LD	A,9	;Lesen open
	CALL	STEUER
	JP	NZ,ERROR
	LD	BC,90F2H
	IN	A,(C)	;ARGN
	CP	2
	JP	C,ERR2	;wenn<2
	CP	10
	JP	NC,ERR2	;wenn>10
	INC	B
	IN	L,(C)
	INC	B
	IN	H,(C)	;HL=Ladeadr
	INC	B
	IN	E,(C)
	INC	B
	IN	D,(C)	;DE=Endadr
	CP	3
	JR	C,NST1	;keine Startadr
	PUSH	HL
	INC	B
	IN	L,(C)
	INC	B
	IN	H,(C)	;Startadr
	EX	(SP),HL
NST1	EX	AF,AF'
	LD	A,(ARGN)
	AND	A
	JR	Z,NST3	;ohne Offset
	LD	BC,(ARG1);Offset
	ADD	HL,BC
	EX	DE,HL
	ADD	HL,BC
	EX	DE,HL
	EX	AF,AF'
	JR	C,NST2	;keine Startadr
	EX	(SP),HL
	ADD	HL,BC
	EX	(SP),HL
NST2	EX	AF,AF'
NST3	CALL	PV1
	DEFB	HLDE
	EX	AF,AF'
	JR	C,NST4	;keine Startadr
	EX	(SP),HL
	CALL	PV1
	DEFB	HLHX
	EX	(SP),HL
NST4	CALL	PV1
	DEFB	CRLF
LST	LD	A,1	;Lesen normal
	CALL	STEUER
	JR	NZ,ERROR
	DEC	C
LOA	INI
	INC	B
	INC	B
	PUSH	HL
	SBC	HL,DE	;ENDE?
	POP	HL
	RET	NC	;ja
	LD	A,B
	AND	A
	JR	NZ,LOA
	JR	LST
ERROR	POP	HL
	LD	HL,(NUMVX)
	PUSH	HL
ERR1	LD	BC,81F3H
	IN	A,(C)
	CALL	PV1
	DEFB	AHEX
ERR2	CALL	PV1
	DEFB	ERRM
	RET
;---------------
FSAVE	LD	HL,0
	CALL	NAMOUT
	JR	FSA
;-------
	DEFW	7F7FH
	DEFM	'FSAVE'
	DEFB	1
	CALL	NAME
FSA	LD	A,(ARGN)
	CP	2
	JR	C,ERR2	;wenn<2
	LD	HL,ARGN
	LD	DE,0B0BH;Schreib open
	LD	BC,91F2H
SAVE	OUTI
	INC	B
	INC	B
	DEC	E
	JR	NZ,SAVE
	LD	A,D
	CALL	STEUER
	LD	A,0
	LD	(ARGN),A
	JR	Z,NERR
	JP	ERR1
NERR	LD	BC,81F2H
	BIT	3,D
	JR	Z,SOPE	;wenn open
	LD	HL,(ARG1)
SOPE	PUSH	HL
	LD	DE,(ARG2)
	AND	A
	SBC	HL,DE
	POP	HL
	LD	BC,81F2H
	LD	DE,0380H;Schreib normal
	JR	NC,SCLO
	JR	SAVE
SCLO	LD	A,43H	;Schreib close
	CALL	STEUER
	JP	NZ,ERR1
	RET
;---------------
	DEFW	7F7FH
	DEFM	'DIR'
	DEFB	1
DIR	LD	A,0DH	;Directory open
WDI	CALL	STEUER
	JP	NZ,ERR1	;Fehler
	BIT	2,A	;Ende
	JR	NZ,STAT
	LD	D,3	;3 Namen
	LD	B,82H
NA3	LD	E,9	;Name
	CALL	ANZ
	PUSH	AF
	LD	E,2	;Typ
	CALL	ANZ
	POP	AF
	BIT	7,A
	LD	A,' '	;WR
	JR	Z,WR
	LD	A,'*'	;RO
WR	CALL	PV1
	DEFB	OCHR
	LD	A,' '
	CALL	PV1
	DEFB	OCHR
	INC	B
	DEC	D
	JR	NZ,NA3
	LD	E,2
	CALL	ANZ
	LD	A,5	;Dir weiter
	JR	WDI
STAT	LD	A,15H	;Status
	CALL	STEUER
	JP	NZ,ERR1	;Fehler
	LD	E,20
	LD	B,82H
ANZ	IN	A,(C)
	PUSH	AF
	AND	7FH
	INC	B
	PUSH	DE
	PUSH	BC
	CALL	PV1
	DEFB	OCHR
	POP	BC
	POP	DE
	POP	AF
	DEC	E
	JR	NZ,ANZ
	RET
;-------------------
	DEFW	7F7FH
	DEFM	'REN'
	DEFB	1
REN	CALL	NAME
	LD	A,29H	;Ren old
	CALL	STEUER
	CALL	NAME
	LD	A,21H	;Ren new
OUT	CALL	STEUER
	JP	NZ,ERR1
	RET
;-------------------
	DEFW	7F7FH
	DEFM	'ERA'
	DEFB	1
ERA	CALL	NAME
	LD	A,11H	;Era
	JR	OUT
;-------------------
	DEFW	7F7FH
	DEFM	'SETRO'
	DEFB	1
SETRO	CALL	NAME
	LD	A,25H	;Setro
	JR	OUT
;-------------------
	DEFW	7F7FH
	DEFM	'SETWR'
	DEFB	1
SETWR	CALL	NAME
	LD	A,31H	;Setwr
	JR	OUT
;-------
NAME	CALL	PV1
	DEFB	OSTR
	DEFM	'Name :'
	DEFB	0
	CALL	PV1
	DEFB	INLIN
	LD	HL,6
	ADD	HL,DE
NAMOUT	LD	E,12
	LD	BC,82F3H
NAM	LD	A,M
	OUT	(C),A
	INC	HL
	INC	B
	DEC	E
	JR	NZ,NAM
	LD	B,80H
	RET
;-------
STEUER	LD	BC,80F3H
	OUT	(C),A
STEU	PUSH	BC
	LD	A,1
	CALL	PV1
	DEFB	WAIT
	POP	BC
	IN	A,(C)
	BIT	0,A
	JR	NZ,STEU	;fertig ?
	BIT	7,A	;Fehler ?
	RET
;-------
START	LD	HL,BAS
	LD	DE,00D8H;f. BASIC
	LD	BC,21H
	LDIR
	RET
;-------
	NOP
	NOP
;C000H
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Detected encoding: ANSI (CP1252)4
Wrong umlauts? - Assume file is ANSI (CP1252) encoded