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

MOUSE3ASM	;
;***	haftmann#software	***
;***	MOUSE3 f}r 2 V.24-Module***
;***	voll verschieblich	***
;***	10.03.94		***
;***	f}r Microsoft Mouse Mode***
OS	EQU	0F003H
RC	EQU	0F00FH
	ORG	3000H
ISRD
	DEFB	14H	;SCHACHT1
	DEFB	14H	;SCHACHT2
	DEFB	9	;SIOADR
	DEFB	0	;EMPFANGSBYTENR
	DEFB	0	;TASTENSTATI
	DEFB	0F6H	;USERTASTE
	DEFB	0	;FREIGABE
	DEFB	8	;MICKEY X
	DEFB	10H	;STEP X
	DEFB	8	;MICKEY Y
	DEFB	10H	;STEP Y
ISR
	PUSH	AF
	PUSH	HL
	PUSH	DE
	PUSH	BC
	;
	CALL	RC
	DEFW	0
NEXT	POP	HL
	LD	DE,ISRD-NEXT
	ADD	HL,DE	;Datenzeiger
	LD	B,M
	LD	C,80H
	XOR	A
	OUT	(C),A	;M003 (1) aus
	INC	HL
	LD	B,M
	INC	A
	OUT	(C),A	;M003 (2) ein
	PUSH	HL
	;
	INC	HL
	LD	C,M	;SIOADR
	IN	D,(C)	;Byte holen
	INC	HL
	;
	XOR	A
	OR	M	;Null?
	JR	NZ,DIRECT
	LD	A,D
	AND	40H
	CP	40H
	JR	NZ,EXIT00
	ld	a,d
	and	30h
	cp	30h	;Beide Tasten?
	jr	z,nomid
	res	6,d
nomid	INC	M	;Bytez{hler
	INC	HL	;^Tastenstati
	LD	A,m	;Altes 1. Byte
	CPL
	AND	d	;Bit=1 dr}ck!
	LD	M,D
	INC	HL	;^Usertaste
	rlca
	rlca
	jr	nc,nmid
	inc	hl
	ld	a,m
	cpl
	jr	nover
nmid	rlca
	JR	NC,NLEFT
	LD	C,13
	LD	A,M
	JR	EINTR
NLEFT	rlca
	LD	C,M
	LD	A,M
	JR	C,EINTR
EXIT00	JR	EXIT
;
DIRECT	ld	e,a
	bit	6,d
	jr	nz,exit
	res	7,d
	inc	hl
	ld	a,m
	dec	hl
	bit	0,e
	jr	nz,nosh1
	rrca
	rrca
nosh1	rrca
	rrca
	and	0c0h	;die MSB's
	or	d
	bit	0,e
	jr	nz,nosh2
	neg		;Richtung
nosh2	ld	d,a
	ld	a,m
	INC	A
	CP	3
	JR	C,DIR1
	XOR	A
DIR1	RR	M	;x oder y?
	LD	M,A	;neue Nummer
	INC	HL
	INC	HL
	INC	HL
	LD	B,M	;Freigabe
	INC	HL
	LD	C,8	;CUL
	JR	C,DIR2
	INC	HL
	INC	HL
	LD	C,10	;CUD
DIR2	LD	A,M	;Mickey
	INC	HL
	LD	E,M	;Step
	DEC	HL
	ADD	D
	BIT	7,A
	JR	Z,POSI
	ADD	E
	BIT	7,A
	JR	Z,EINTR1
	XOR	A
	JR	EINTR1
	;
POSI	CP	E
	JR	C,NOVER
	INC	C
	SUB	E
	CP	E
	JR	C,EINTR1
	LD	A,E
	DEC	A
	JR	EINTR1
	;
EINTR1	INC	B	;Null?
	DJNZ	EXIT
EINTR	LD	(IX+13),C
	SET	0,(IX+8)
NOVER	LD	M,A
EXIT	POP	HL
	IN	A,88H
	LD	E,A	;Kein PUSH!!
	SET	2,A
	OUT	88H
	LD	C,M
	LD	B,0B8H
	LD	A,(BC)
	LD	B,C
	LD	C,80H
	OUT	(C),A	;M003 (2) alt
	DEC	HL
	LD	C,M
	LD	B,0B8H
	LD	A,(BC)
	LD	B,C
	LD	C,80H
	OUT	(C),A	;M003 (1) alt
	LD	A,E
	OUT	88H
	;
	POP	BC
	POP	DE
	POP	HL
	POP	AF
	EI
	RETI
;
INITTB	DEFB	47H	;CTC-Stw
	DEFB	2EH
	DEFW	0E002H	;IntVec
	DEFB	18H
	DEFW	4414H
	DEFW	6103H
	DEFW	0AA05H
	DEFW	1811H
	DEFW	0011H	;DI
;
	DEFW	7F7FH
	DEFM	'MOUSE'
	DEFB	1
	LD	D,L
	PUSH	DE
	CALL	RC
	DEFW	0
NXT	POP	HL	;=NXT
	LD	DE,ISR-NXT
	ADD	HL,DE	;HL=ISR
	DI
	LD	(1E0H),HL
	;
	DEC	HL	;Interruptbeginn
	LD	DE,0B789H ;ARG4+1
	LD	A,(0B781H)
	LD	B,A
	CP	4
	JR	C,NSTEPY
	LD	A,(DE)	;STEPY
	LD	M,A
NSTEPY	DEC	HL
	DEC	HL	;^StepX
	JR	C,NSTEPX
	DEC	DE
	LD	A,(DE)	;STEPX
	LD	M,A
NSTEPX	DEC	HL
	DEC	HL	;^Freigabe
	LD	M,0	;Freigabe
	DEC	HL	;Usertaste
	LD	A,B
	CP	3
	JR	C,NUSER
	LD	M,C
NUSER	DEC	HL
	DEC	HL
	DEC	HL	;^SIOPORT
	POP	DE	;D=Slot,E=Port
	CP	2
	JR	C,NSIOK
	LD	A,E
	CP	10H
	JR	NC,USERSIO
	CP	4
	JR	NC,KANNR
	DEC	A
KANNR	AND	1
	ADD	8	;V.24
USERSIO	LD	M,A
NSIOK	LD	A,B
	OR	A
	DEC	HL	;^Schacht2
	JR	Z,SIOSL
	LD	A,D
	OR	A
	JR	Z,SIOTOT
	LD	M,D
SIOSL	LD	D,M	;D=0: SIO t|ten
SIOTOT	DEC	HL	;^Schacht1
	LD	BC,780H
MM03	INC	B
	JR	Z,NM03
	IN	A,(C)
	CP	0EEH
	JR	NZ,MM03
NM03	LD	M,B	;merken
	XOR	A
	OUT	(C),A	;aus
	INC	HL	;^Schacht2
	LD	B,M
	INC	A
	OUT	(C),A	;ein
	INC	HL	;^SIOPort
	LD	A,M
	ADD	4	;CTC
	PUSH	HL
	LD	BC,INITTB-ISRD-2
	ADD	HL,BC
	LD	C,A
	LD	B,2
	OTIR
	SUB	2
	LD	C,A
	SET	0,C	;f.Kanal B
	LD	B,2
	OTIR
	LD	C,A
	LD	B,9
	OTIR
	LD	A,D
	OR	A
	JR	NZ,NTOT
	LD	B,2
	OTIR
NTOT	POP	HL	;^Port
	EI
	DEC	HL
	LD	B,M
	LD	E,B
	LD	C,80H
	LD	D,0B8H
	LD	A,(DE)
	OUT	(C),A
	DEC	HL
	LD	B,M
	LD	E,B
	LD	A,(DE)
	OUT	(C),A
	RET
Ç1
NTOT:S1
NM03:J1
MM03:F1
SIOTOT:E1
SIOSL:;1
NSIOK::1
USERSIO:61
KANNR:$1
NUSER:1
NSTEPX:1
NSTEPY	A,(DE)
	OUT	(C),A
	RET
Ç1
NTOT:S1
NM03:J1
MM03:F1
SIOTOT:E1
SIOSL:;1
NSIOK::1
USERSIO:61
KANNR:$1
NUSER:1
NSTEPX:1
NSTEPY
Detected encoding: OEM (CP437)1
Wrong umlauts? - Assume file is ANSI (CP1252) encoded