MOUSE3 ASM ;
;*** 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
|
|