1
0
mirror of https://github.com/Tolik-Trek/DOOM2.git synced 2026-06-15 00:51:33 +03:00
DOOM2/INTMOUSE.asm
Anatoliy Belyanskiy 0516ac2266 Initial commit
2023-06-15 02:04:44 +10:00

179 lines
1.9 KiB
NASM

CMOUSE EQU 1BH
DMOUSE EQU 1AH
VSIZEX EQU 256 ;X SIZE SCREEN
VSIZEY EQU 256 ;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 (10H),A
LD A,45
OUT (10H),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,41H
OUT (CMOUSE),A
LD A,4
OUT (CMOUSE),A
LD A,47H
OUT (CMOUSE),A
LD A,5
OUT (CMOUSE),A
LD A,0E0H
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 03FH
LD E,A
LD A,L
AND 003H
RRCA
RRCA
OR E
LD E,A
LD A,D
AND 03FH
LD D,A
LD A,L
AND 00CH
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 03H
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 128
MX: DEFB 00
MY: DEFB 00
MB: DEFB 00