; (c) Denis Parinov
CMOUSE EQU #1B
DMOUSE EQU #1A
VSIZEX EQU 256 ;X SIZE SCREEN
VSIZEY EQU 192 ;Y SIZE SCREEN
;INTERUPT
CALL READ_M
CALL C,MCORECT
RET
;READING MOUSE
; HL - X COORD
; DE - Y COORD
; A - BUTTONS
; D0 - LEFT
; D1 - RIGHT
MS_READ LD HL,(PIX_X)
LD DE,(PIX_Y)
LD A,(MB)
RET
;INITIALIZING COM PORT
MS_INIT DI
LD A,85
OUT (#10),A
LD A,45
OUT (#10),A
LD A,0
OUT (CMOUSE),A
LD A,1
OUT (CMOUSE),A
LD A,0
OUT (CMOUSE),A
LD A,3
OUT (CMOUSE),A
LD A,#41
OUT (CMOUSE),A
LD A,4
OUT (CMOUSE),A
LD A,#47
OUT (CMOUSE),A
LD A,5
OUT (CMOUSE),A
LD A,#E0
OUT (CMOUSE),A
EI
RET
READ_M IN A,(CMOUSE)
RRCA
RET NC
IN A,(DMOUSE)
LD L,A
BIT 6,A
CCF
RET Z
TST_01 IN A,(CMOUSE)
RRCA
JP NC,TST_01
IN A,(DMOUSE)
LD E,A
BIT 6,A
CCF
RET NZ
TST_02 IN A,(CMOUSE)
RRCA
JP NC,TST_02
IN A,(DMOUSE)
LD D,A
BIT 6,A
CCF
RET NZ
LD A,E
AND #3F
LD E,A
LD A,L
AND #03
RRCA
RRCA
OR E
LD E,A
LD A,D
AND #3F
LD D,A
LD A,L
AND #0C
RRCA
RRCA
RRCA
RRCA
OR D
LD D,A
LD A,L
RLCA
RLCA
RLCA
RES 6,A
JR NC,STBU
SET 6,A
STBU RLCA
RLCA
AND #03
LD (MB),A
LD A,E
LD (MX),A
LD A,D
LD (MY),A
SCF
RET
MCORECT LD HL,(PIX_X)
LD DE,(MX)
LD D,0
BIT 7,E
JP NZ,DECX
ADD HL,DE
LD (PIX_X),HL
EX DE,HL
LD HL,VSIZEX-1
AND A
SBC HL,DE
JP NC,YCOO
LD HL,VSIZEX-1
LD (PIX_X),HL
JP YCOO
DECX LD A,E
NEG
LD E,A
AND A
SBC HL,DE
LD (PIX_X),HL
JP NC,YCOO
LD HL,0
LD (PIX_X),HL
YCOO LD HL,(PIX_Y)
LD DE,(MY)
LD D,0
BIT 7,E
JP NZ,DECY
ADD HL,DE
LD (PIX_Y),HL
EX DE,HL
LD HL,VSIZEY-1
AND A
SBC HL,DE
RET NC
LD HL,VSIZEY-1
LD (PIX_Y),HL
RET
DECY LD A,E
NEG
LD E,A
AND A
SBC HL,DE
LD (PIX_Y),HL
RET NC
LD HL,0
LD (PIX_Y),HL
RET
PIX_X DEFW 128
PIX_Y DEFW 96
MX DEFB #00
MY DEFB #00
MB DEFB #00