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

DEVEX/4ASM;---------------------------------------
;Hilfsprogramme zur Erweiterung von
;	EDAS V4
;
;mit Diskettenerweiterung D004-Floppy
;mit F-Tastenbelegung f}r D005-Tastatur
;
;
;	Adressen: D5D0H D7D9H
;
;
;			` ml 09.07.92
;---------------------------------------
PV1	EQU	0F003H
CRT	EQU	00H
KBD	EQU	04H
KBDS	EQU	0CH
WAIT	EQU	14H
INLIN	EQU	17H
ERRM	EQU	19H
HLHX	EQU	1AH
AHEX	EQU	1CH
OSTR	EQU	23H
OCHR	EQU	24H
BRKT	EQU	2AH
SPACE	EQU	2BH
CRLF	EQU	2CH
DABR	EQU	32H
KEY	EQU	39H
KEYLI	EQU	3AH
 
MTOP	EQU	74H
MBOT	EQU	72H
ARGN	EQU	0B781H
ARG1	EQU	ARGN+1
ARG2	EQU	ARG1+2
ARG3	EQU	ARG2+2
ARG5	EQU	ARG3+4
ARG6	EQU	ARG5+2
NUMVX	EQU	0B797H
WINLG	EQU	0B79EH
CURSO	EQU	0B7A0H
SUTAB	EQU	0B7B0H
;
SUBALT	EQU	0B7FEH	;SUTAB merken
SUBNEU	EQU	0BA00H	;neue SUTAB
;-------
	ORG	0C0DAH	;REEDAS
	CALL	DEVEX	;Start DEVEX
	DEFB	0
;-------
	ORG	0C12AH	;Men}gr|~e
	CALL	FLMEN	;ermitteln
;-------
	ORG	0C1F9H	;QUIT (EXIT)
	CALL	DEVOX	;Stop DEVEX
	DEFB	0
;-------
	ORG	0C350H
	DEFW	0DDDDH
	DEFM	'KEY'
	DEFB	1
	OR	A
	JR	Z,KEYL	;KEY
	LD	A,L
	OR	A
	JP	Z,KEY0	;KEY 0
	CP	0D5H
	JP	Z,KEYD5	;KEY D5
	CALL	PV1
	DEFB	KEY
	RET
KEYL	CALL	PV1
	DEFB	KEYLI
	RET
KEYCL	LD	HL,0B900H
	XOR	A
	LD	B,9CH
KCL	LD	M,A
	INC	HL
	DJNZ	KCL
	RET
	DEFW	0	;frei
;-------
	ORG	0C5EAH	;nach Nameneing.
	JP	NEWL
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP	;l|schen
	NOP
	NOP
	NOP
;-------
;	nach Ende von EDAS/V4:
 
	ORG	0D5D0H
 
NEWL	CALL	PV1
	DEFB	OSTR
	DEFM	'ASM'
	DEFW	0A0DH
	NOP
	LD	A,(CURSO+1)	;Zeile
	DEC	A
	LD	D,A
	CALL	PV1
	DEFB	DABR
	RET
 
;DEVEX-Diskettenerweiterung:
;
DEVEX	LD	(IX+9),0DDH
	LD	A,0CH
	CALL	PV1
	DEFB	CRT	;CLS
	LD	HL,0
	LD	B,80H
DEV02	LD	A,M
	CP	7FH	;Test Prolog?
	INC	HL
	JR	Z,DEV01
	DJNZ	DEV02
	JR	DEV03
DEV01	CP	7FH
	JR	NZ,DEV03
	LD	M,0		;l|schen
DEV03	LD	HL,(SUTAB)
	LD	(SUBALT),HL	;merken
	LD	BC,0FC80H
	IN	A,(C)
	CP	0A7H	;Floppy?
	RET	NZ
	LD	DE,SUBNEU
	LD	(SUTAB),DE
	LD	BC,92H		;L{nge
	LDIR
	LD	HL,MBO		;MBO neu
	LD	(SUBNEU+2),HL
	LD	HL,MBI		;MBI neu
	LD	(SUBNEU+10),HL
	LD	HL,STAB	  ;ISRO-CSRI neu
	LD	DE,SUBNEU+16
	LD	C,8
	LDIR
	RET
;
STAB	DEFW	ISRO
	DEFW	CSRO
	DEFW	ISRI
	DEFW	CSRI
;-------
FLMEN	LD	BC,0FC80H
	IN	A,(C)
	CP	0A7H	;Floppy?
	LD	BC,2600H
	RET	Z	;ja
	LD	BC,DEVEX-0BA00H
	RET
;-------
	DEFW	0DDDDH
	DEFM	'DISK'
	DEFB	1
	LD	BC,0FC80H
	IN	A,(C)
	CP	0A7H	;Floppy?
	JR	Z,DISK
FLERR	CALL	PV1
	DEFB	ERRM
	RET
DISK	LD	HL,SUBNEU
	JR	DEV06
;-------
DEVOX	LD	(IX+9),7FH
	JR	TAPE
;-------
	DEFW	0DDDDH
	DEFM	'TAPE'
	DEFB	1
	LD	BC,0FC80H
	IN	A,(C)
	CP	0A7H	;Floppy?
	JR	NZ,FLERR
TAPE	LD	HL,(SUBALT)
DEV06	LD	(SUTAB),HL
	RET
;-------
	DEFW	0DDDDH
	DEFM	'ERA'
	DEFB	1
	LD	BC,0FC80H
	IN	A,(C)
	CP	0A7H	;Floppy?
	JR	NZ,FLERR
	CALL	NAME
	LD	A,11H	;Era
	JP	STEUER
;-------
	DEFW	0DDDDH
	DEFM	'DIR'
	DEFB	1
	LD	BC,0FC80H
	IN	A,(C)
	CP	0A7H	;Floppy?
	JR	NZ,FLERR
	LD	A,0DH	;Directory open
WDI	CALL	STEUER
	RET	C	;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
	RET	C	;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
;-------
ISRO	LD	(IX+2),0 ;Blocknr.
	LD	L,(IX+5)
	LD	H,(IX+6) ;Blockpuffer
	LD	E,11	 ;Anzahl
	CALL	NAM1	 ;Name ausgeben
	LD	D,11	 ;write open
DEV10	INC	(IX+2)	 ;N{chster Bl.
	LD	H,(IX+6)
	LD	L,(IX+5)
	LD	BC,81F2H ;Sektorpuffer
	LD	E,80H	 ;Blockl{nge
DEV08	OUTI
	INC	B
	INC	B
	DEC	E
	JR	NZ,DEV08
DEV11	LD	A,D	;Steuerbyte
	JP	STEUER
;-------
MBO	LD	D,3	;write normal
	JR	DEV10
;-------
CSRO	CALL	MBO
	RET	C	;bei Fehler
	LD	D,43H	;write close
	LD	(IX+5),0
	LD	(IX+6),0B7H
	JR	DEV11
;-------
ISRI	LD	(IX+2),0
	POP	DE
	POP	HL	;Name
	PUSH	HL
	PUSH	DE
	LD	D,9	;read open
	LD	E,11	;L{nge Name
	CALL	NAM1	;Name ausgeben
	PUSH	DE
	JR	DEV13
;-------
MBI	PUSH	DE
	LD	D,1	;read normal
DEV13	CALL	DEV11	;Steuerbyte
	POP	DE
	RET	C	;bei Fehler
	PUSH	DE
	PUSH	HL
	PUSH	AF
	LD	L,(IX+5)
	LD	H,(IX+6);Puffer
	LD	BC,80F2H
	LD	E,80H	;L{nge
DEV14	INI
	INC	B
	INC	B
	DEC	E
	JR	NZ,DEV14;Block lesen
	INC	(IX+2)	;Blocknr.
	POP	AF
	POP	HL
	POP	DE
	RET
;-------
CSRI	CALL	PV1
	DEFB	CRLF
	RET
;-------
NAME	CALL	PV1
	DEFB	OSTR
	DEFM	'Name :'
	DEFB	0
	CALL	PV1
	DEFB	INLIN
	LD	HL,6
	ADD	HL,DE
	LD	E,12
NAM1	LD	BC,83F3H ;Namenpuffer
NAM2	OUTI
	INC	B
	INC	B
	DEC	E
	JR	NZ,NAM2
	RET
;-------
STEUER	LD	BC,80F3H
	OUT	(C),A	;Steuerbyte
STEU	PUSH	BC
	LD	A,1
	CALL	PV1
	DEFB	WAIT
	POP	BC
	IN	A,(C)
	BIT	0,A
	JR	NZ,STEU	;fertig ?
	AND	A	;CY=0
	BIT	7,A
	RET	Z	;kein Fehler
	INC	B
	IN	A,(C)	;Fehlernr.
	CALL	PV1
	DEFB	AHEX
ERR	CALL	PV1
	DEFB	ERRM
	SCF		;CY=1
	RET
;-------
;Erweiterung der Tastenbelegung f}r
;D005-Tastatur:
KEY0	CALL	KEYCL
	LD	L,1
	LD	M,5
	INC	HL
	INC	HL
	LD	M,6
	RET
KEYD5	CALL	KEYCL
	LD	HL,KEA
	LD	DE,0B900H
	LD	BC,KEE-KEA
	LDIR
	RET
;
KEA	DEFB	0
	DEFB	'['	;F1
	DEFB	0
	DEFB	'\'	;F2
	DEFB	0
	DEFB	']'	;F3
	DEFB	0
	DEFB	'~'	;F4
	DEFB	0
	DEFB	5	;F5
	DEFB	0
	DEFB	6	;F6
	DEFB	0
	DEFB	'{'	;F7
	DEFB	0
	DEFB	'|'	;F8
	DEFB	0
	DEFB	'}'	;F9
	DEFB	0
	DEFB	'`'	;F10
	DEFB	0
	DEFB	''	;F11
	DEFB	0
KEE
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Detected encoding: ANSI (CP1252)4
Wrong umlauts? - Assume file is ANSI (CP1252) encoded