mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
-bug: некорректно работала функция обработки чувствительности мышки MS_SENT
This commit is contained in:
parent
00e9cb59f0
commit
63c527ace8
@ -154,6 +154,38 @@ A0038: ;
|
|||||||
; POP AF ;
|
; POP AF ;
|
||||||
; EX AF,AF' ;
|
; EX AF,AF' ;
|
||||||
; POP AF ;
|
; POP AF ;
|
||||||
|
;!TEST SIO INT
|
||||||
|
; reg 0 - error reset
|
||||||
|
IF KEYBOARD_INT_ENABLED && MOUSE_INT_ENABLED == 0
|
||||||
|
PUSH AF
|
||||||
|
; reg 0 - error reset
|
||||||
|
LD A,%0011'0000
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
; reg 0 - return from int
|
||||||
|
LD A,%0011'1000
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
POP AF
|
||||||
|
ELSEIF MOUSE_INT_ENABLED && KEYBOARD_INT_ENABLED == 0
|
||||||
|
PUSH AF
|
||||||
|
; reg 0 - error reset
|
||||||
|
LD A,%0011'0000
|
||||||
|
OUT (Z84.SIO.Ch_B.Ctrl),A
|
||||||
|
; reg 0 - return from int
|
||||||
|
LD A,%0011'1000
|
||||||
|
OUT (Z84.SIO.Ch_B.Ctrl),A
|
||||||
|
POP AF
|
||||||
|
ELSEIF MOUSE_INT_ENABLED && KEYBOARD_INT_ENABLED
|
||||||
|
PUSH AF
|
||||||
|
; reg 0 - error reset
|
||||||
|
LD A,%0011'0000
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
OUT (Z84.SIO.Ch_B.Ctrl),A
|
||||||
|
; reg 0 - return from int
|
||||||
|
LD A,%0011'1000
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
OUT (Z84.SIO.Ch_B.Ctrl),A
|
||||||
|
POP AF
|
||||||
|
ENDIF
|
||||||
EI ;
|
EI ;
|
||||||
RETI ;
|
RETI ;
|
||||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||||
|
|||||||
@ -151,8 +151,6 @@ INT_: PUSH AF
|
|||||||
PUSH IX
|
PUSH IX
|
||||||
PUSH IY
|
PUSH IY
|
||||||
CALL KEYSCAN
|
CALL KEYSCAN
|
||||||
; LD C,Dss.Mouse.GetPackets
|
|
||||||
; RST ToDSS.Mouse
|
|
||||||
CALL M_INT
|
CALL M_INT
|
||||||
IFN CLASSIC_CURSOR
|
IFN CLASSIC_CURSOR
|
||||||
CALL cursor_interrupt; ¢¥ªâ®à ®¡á«ã¦. ªãàá®à ;!!!!! VASIL
|
CALL cursor_interrupt; ¢¥ªâ®à ®¡á«ã¦. ªãàá®à ;!!!!! VASIL
|
||||||
|
|||||||
247
DSS/INTMOUSE.ASM
247
DSS/INTMOUSE.ASM
@ -102,7 +102,8 @@ PORT_MOUSE.Data EQU Z84.SIO.Ch_B.Data
|
|||||||
; 4 - CURSOR OFF (UZHE)
|
; 4 - CURSOR OFF (UZHE)
|
||||||
; 5 - CURSOR IMAGE VERY BIG
|
; 5 - CURSOR IMAGE VERY BIG
|
||||||
|
|
||||||
INTMOUS BIT 7,C
|
INTMOUS:
|
||||||
|
BIT 7,C
|
||||||
JR NZ,EMOUSE
|
JR NZ,EMOUSE
|
||||||
INC C
|
INC C
|
||||||
DEC C
|
DEC C
|
||||||
@ -116,9 +117,9 @@ INTMOUS BIT 7,C
|
|||||||
DEC C
|
DEC C
|
||||||
JP Z,MS_GOTO ; 4
|
JP Z,MS_GOTO ; 4
|
||||||
DEC C
|
DEC C
|
||||||
JR Z,MS_RESR ; 5
|
JR Z,.RESERVED ; 5
|
||||||
DEC C
|
DEC C
|
||||||
JR Z,MS_RESR ; 6
|
JR Z,.RESERVED ; 6
|
||||||
DEC C
|
DEC C
|
||||||
JP Z,MS_VERT ; 7
|
JP Z,MS_VERT ; 7
|
||||||
DEC C
|
DEC C
|
||||||
@ -130,28 +131,30 @@ INTMOUS BIT 7,C
|
|||||||
DEC C
|
DEC C
|
||||||
JP Z,MS_BCUR ; 11
|
JP Z,MS_BCUR ; 11
|
||||||
DEC C
|
DEC C
|
||||||
JR Z,MS_RESR ; 12
|
JR Z,.RESERVED ; 12
|
||||||
DEC C
|
DEC C
|
||||||
JR Z,MS_RESR ; 13
|
JR Z,.RESERVED ; 13
|
||||||
DEC C
|
DEC C
|
||||||
JP Z,MS_GSEN ; 14
|
JP Z,MS_GSEN ; 14
|
||||||
DEC C
|
DEC C
|
||||||
JP Z,MS_SENT ; 15
|
JP Z,MS_SENT ; 15
|
||||||
MS_RESR LD A,DSS_Error.mouse.INVALID_COMMAND
|
.RESERVED:
|
||||||
|
LD A,DSS_Error.mouse.INVALID_COMMAND
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
|
|
||||||
EMOUSE RES 7,C
|
EMOUSE: RES 7,C
|
||||||
INC C
|
INC C
|
||||||
DEC C
|
DEC C
|
||||||
JP Z,M_INT
|
JP Z,M_INT
|
||||||
DEC C
|
DEC C
|
||||||
JP Z,M_MODE
|
JP Z,M_MODE
|
||||||
DEC C
|
DEC C
|
||||||
JR Z,M_RESR
|
JR Z,.RESERVED
|
||||||
DEC C
|
DEC C
|
||||||
JP Z,M_REFR
|
JP Z,M_REFR
|
||||||
M_RESR LD A,DSS_Error.mouse.INVALID_COMMAND
|
.RESERVED:
|
||||||
|
LD A,DSS_Error.mouse.INVALID_COMMAND
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
|
|
||||||
@ -159,12 +162,12 @@ M_RESR LD A,DSS_Error.mouse.INVALID_COMMAND
|
|||||||
MS_INIT:
|
MS_INIT:
|
||||||
DI
|
DI
|
||||||
; reg 0
|
; reg 0
|
||||||
XOR A ;LD A,0
|
XOR A
|
||||||
OUT (PORT_MOUSE.Ctrl),A
|
OUT (PORT_MOUSE.Ctrl),A
|
||||||
; reg 4
|
; reg 4 - ᪮à®áâì ¯®àâ ¯¥à¢ë© ¬®¦¨â¥«ì
|
||||||
LD A,4
|
LD A,4
|
||||||
OUT (PORT_MOUSE.Ctrl),A
|
OUT (PORT_MOUSE.Ctrl),A
|
||||||
LD A,+(7 | MOUSE_BAUD.multiplier_1) ; ¯¥à¢ë© ¬®¦¨â¥«ì
|
LD A,+(7 | MOUSE_BAUD.multiplier_1)
|
||||||
OUT (PORT_MOUSE.Ctrl),A
|
OUT (PORT_MOUSE.Ctrl),A
|
||||||
; reg 3
|
; reg 3
|
||||||
LD A,3
|
LD A,3
|
||||||
@ -176,7 +179,6 @@ MS_INIT:
|
|||||||
OUT (PORT_MOUSE.Ctrl),A
|
OUT (PORT_MOUSE.Ctrl),A
|
||||||
LD A,%1110'0000 ; bit7 ¤«ï ª®à४⮣® ¨¨â Sega ¤¦®©á⨪ ¢ ¯®àâã ª¥¬¯áâ® ¤¦®©á⨪
|
LD A,%1110'0000 ; bit7 ¤«ï ª®à४⮣® ¨¨â Sega ¤¦®©á⨪ ¢ ¯®àâã ª¥¬¯áâ® ¤¦®©á⨪
|
||||||
OUT (PORT_MOUSE.Ctrl),A
|
OUT (PORT_MOUSE.Ctrl),A
|
||||||
;
|
|
||||||
; reg 1
|
; reg 1
|
||||||
LD A,1
|
LD A,1
|
||||||
OUT (PORT_MOUSE.Ctrl),A
|
OUT (PORT_MOUSE.Ctrl),A
|
||||||
@ -186,17 +188,18 @@ MS_INIT:
|
|||||||
XOR A
|
XOR A
|
||||||
ENDIF
|
ENDIF
|
||||||
OUT (PORT_MOUSE.Ctrl),A
|
OUT (PORT_MOUSE.Ctrl),A
|
||||||
;!TEST mouse
|
; ᪮à®áâì ¯®àâ - ¢â®à®© ¬®¦¨â¥«ì
|
||||||
LD A,#55
|
LD A,#55
|
||||||
OUT (Z84.CTC.Ch_0),A
|
OUT (Z84.CTC.Ch_0),A
|
||||||
LD A,MOUSE_BAUD.multiplier_2 ; ¢â®à®© ¬®¦¨â¥«ì
|
LD A,MOUSE_BAUD.multiplier_2
|
||||||
OUT (Z84.CTC.Ch_0),A
|
OUT (Z84.CTC.Ch_0),A
|
||||||
;
|
;
|
||||||
EI
|
EI
|
||||||
XOR A
|
XOR A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
MS_SHOW PUSH IX
|
MS_SHOW:
|
||||||
|
PUSH IX
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
@ -216,7 +219,8 @@ MS_SHOW PUSH IX
|
|||||||
XOR A
|
XOR A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
MS_HIDD PUSH IX
|
MS_HIDD:
|
||||||
|
PUSH IX
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
@ -234,13 +238,15 @@ MS_HIDD PUSH IX
|
|||||||
XOR A
|
XOR A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
MS_READ LD HL,(PIX_X)
|
MS_READ:
|
||||||
|
LD HL,(PIX_X)
|
||||||
LD DE,(PIX_Y)
|
LD DE,(PIX_Y)
|
||||||
LD A,(MB)
|
LD A,(MOUSE_BUTTONS)
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
MS_GOTO PUSH IX
|
MS_GOTO:
|
||||||
|
PUSH IX
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
LD (PIX_X),HL
|
LD (PIX_X),HL
|
||||||
@ -258,7 +264,8 @@ MS_GOTO PUSH IX
|
|||||||
XOR A
|
XOR A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
MS_CURS PUSH BC
|
MS_CURS:
|
||||||
|
PUSH BC
|
||||||
PUSH DE
|
PUSH DE
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH IX
|
PUSH IX
|
||||||
@ -278,9 +285,9 @@ MS_CURS PUSH BC
|
|||||||
LD B,0
|
LD B,0
|
||||||
LD A,(M_YSIZE)
|
LD A,(M_YSIZE)
|
||||||
LD HL,0
|
LD HL,0
|
||||||
MSCURS1 ADD HL,BC
|
.loop: ADD HL,BC
|
||||||
DEC A
|
DEC A
|
||||||
JR NZ,MSCURS1
|
JR NZ,.loop
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD BC,M_IMAGE.Size+1
|
LD BC,M_IMAGE.Size+1
|
||||||
AND A
|
AND A
|
||||||
@ -290,27 +297,29 @@ MSCURS1 ADD HL,BC
|
|||||||
POP BC
|
POP BC
|
||||||
POP HL
|
POP HL
|
||||||
LD A,5
|
LD A,5
|
||||||
JR C,NOLOADM
|
JR C,.NOLOADM
|
||||||
LD DE,M_IMAGE
|
LD DE,M_IMAGE
|
||||||
DI
|
DI
|
||||||
LDIR
|
LDIR
|
||||||
XOR A
|
XOR A
|
||||||
NOLOADM POP HL
|
.NOLOADM:
|
||||||
|
POP HL
|
||||||
POP DE
|
POP DE
|
||||||
POP BC
|
POP BC
|
||||||
EI
|
EI
|
||||||
RET
|
RET
|
||||||
|
|
||||||
MS_BCUR PUSH IX
|
MS_BCUR:
|
||||||
|
PUSH IX
|
||||||
EXX
|
EXX
|
||||||
LD A,(M_XSIZE)
|
LD A,(M_XSIZE)
|
||||||
LD C,A
|
LD C,A
|
||||||
LD B,0
|
LD B,0
|
||||||
LD A,(M_YSIZE)
|
LD A,(M_YSIZE)
|
||||||
LD HL,0
|
LD HL,0
|
||||||
MSBCUR1 ADD HL,BC
|
.loop: ADD HL,BC
|
||||||
DEC A
|
DEC A
|
||||||
JR NZ,MSBCUR1
|
JR NZ,.loop
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD BC,M_IMAGE.Size+1
|
LD BC,M_IMAGE.Size+1
|
||||||
AND A
|
AND A
|
||||||
@ -335,22 +344,23 @@ MSBCUR1 ADD HL,BC
|
|||||||
LD D,C
|
LD D,C
|
||||||
LD BC,0
|
LD BC,0
|
||||||
XOR A
|
XOR A
|
||||||
NOSAVEM EI
|
NOSAVEM:
|
||||||
|
EI
|
||||||
RET
|
RET
|
||||||
|
|
||||||
MS_HORZ
|
MS_HORZ:
|
||||||
LD (MIN_X),HL
|
LD (MIN_X),HL
|
||||||
LD (MAX_X),DE
|
LD (MAX_X),DE
|
||||||
XOR A
|
XOR A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
MS_VERT
|
MS_VERT:
|
||||||
LD (MIN_Y),HL
|
LD (MIN_Y),HL
|
||||||
LD (MAX_Y),DE
|
LD (MAX_Y),DE
|
||||||
XOR A
|
XOR A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
MS_MASK
|
MS_MASK:
|
||||||
LD (ANDXORS),HL
|
LD (ANDXORS),HL
|
||||||
LD (ANDXORA),DE
|
LD (ANDXORA),DE
|
||||||
XOR A
|
XOR A
|
||||||
@ -358,13 +368,12 @@ MS_MASK
|
|||||||
|
|
||||||
; H - VERTICAL SENSITIVE
|
; H - VERTICAL SENSITIVE
|
||||||
; L - HORIZONTAL SENSITIVE
|
; L - HORIZONTAL SENSITIVE
|
||||||
|
MS_SENT:
|
||||||
MS_SENT
|
|
||||||
LD (SENSEXY),HL
|
LD (SENSEXY),HL
|
||||||
XOR A
|
XOR A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
MS_GSEN
|
MS_GSEN:
|
||||||
LD HL,(SENSEXY)
|
LD HL,(SENSEXY)
|
||||||
XOR A
|
XOR A
|
||||||
RET
|
RET
|
||||||
@ -616,13 +625,30 @@ MOUSE: LD A,(MODE_M)
|
|||||||
|
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|
||||||
READ_M: IN A,(PORT_MOUSE.Ctrl)
|
READ_M:
|
||||||
|
;[ ] 18/02/2024 ¯à®¢¥àª ¯¥à¥¯®«¥¨¥ ¡ãä¥à
|
||||||
|
; reg 1
|
||||||
|
LD A,1
|
||||||
|
OUT (PORT_MOUSE.Ctrl),A
|
||||||
|
IN A,(PORT_MOUSE.Ctrl)
|
||||||
|
AND %0010'0000 ; check receiver overrun error
|
||||||
|
; JP NZ,.Receiver_Overrun
|
||||||
|
JR Z,.NEXT
|
||||||
|
; reg 0 - error reset
|
||||||
|
LD A,%0011'0000
|
||||||
|
OUT (Z84.SIO.Ch_B.Ctrl),A
|
||||||
|
.NEXT: ;
|
||||||
|
IN A,(PORT_MOUSE.Ctrl)
|
||||||
RRCA
|
RRCA
|
||||||
RET NC
|
RET NC
|
||||||
|
; AND 1
|
||||||
|
; RET Z
|
||||||
|
|
||||||
IN A,(PORT_MOUSE.Data)
|
IN A,(PORT_MOUSE.Data)
|
||||||
LD L,A
|
LD L,A
|
||||||
BIT 6,A
|
AND %0100'0000
|
||||||
CCF
|
;BIT 6,A
|
||||||
|
;CCF
|
||||||
RET Z
|
RET Z
|
||||||
|
|
||||||
;[x] mouse freeeeezzzz
|
;[x] mouse freeeeezzzz
|
||||||
@ -632,7 +658,7 @@ READ_M: IN A,(PORT_MOUSE.Ctrl)
|
|||||||
IN A,(PORT_MOUSE.Ctrl)
|
IN A,(PORT_MOUSE.Ctrl)
|
||||||
RRCA
|
RRCA
|
||||||
;[x] mouse freeeeezzzz
|
;[x] mouse freeeeezzzz
|
||||||
JR C,.NXT
|
JR C,.NXT_1
|
||||||
DEC BC
|
DEC BC
|
||||||
LD A,B
|
LD A,B
|
||||||
OR C
|
OR C
|
||||||
@ -641,7 +667,7 @@ READ_M: IN A,(PORT_MOUSE.Ctrl)
|
|||||||
;JR NC,TST_01
|
;JR NC,TST_01
|
||||||
;
|
;
|
||||||
|
|
||||||
.NXT: IN A,(PORT_MOUSE.Data)
|
.NXT_1: IN A,(PORT_MOUSE.Data)
|
||||||
LD E,A
|
LD E,A
|
||||||
BIT 6,A
|
BIT 6,A
|
||||||
CCF
|
CCF
|
||||||
@ -650,18 +676,19 @@ READ_M: IN A,(PORT_MOUSE.Ctrl)
|
|||||||
;[x] mouse freeeeezzzz
|
;[x] mouse freeeeezzzz
|
||||||
LD BC,MOUSE_READ_PORT_TIMEOUT
|
LD BC,MOUSE_READ_PORT_TIMEOUT
|
||||||
;
|
;
|
||||||
TST_02: IN A,(PORT_MOUSE.Ctrl)
|
.TST_02:
|
||||||
|
IN A,(PORT_MOUSE.Ctrl)
|
||||||
RRCA
|
RRCA
|
||||||
;[x] mouse freeeeezzzz
|
;[x] mouse freeeeezzzz
|
||||||
JR C,.NXT
|
JR C,.NXT_2
|
||||||
DEC BC
|
DEC BC
|
||||||
LD A,B
|
LD A,B
|
||||||
OR C
|
OR C
|
||||||
JR NZ,TST_02
|
JR NZ,.TST_02
|
||||||
RET
|
RET
|
||||||
;JR NC,TST_02
|
;JR NC,TST_02
|
||||||
;
|
;
|
||||||
.NXT: IN A,(PORT_MOUSE.Data)
|
.NXT_2: IN A,(PORT_MOUSE.Data)
|
||||||
LD D,A
|
LD D,A
|
||||||
BIT 6,A
|
BIT 6,A
|
||||||
CCF
|
CCF
|
||||||
@ -696,45 +723,66 @@ TST_02: IN A,(PORT_MOUSE.Ctrl)
|
|||||||
.STBU: RLCA
|
.STBU: RLCA
|
||||||
RLCA
|
RLCA
|
||||||
AND #03
|
AND #03
|
||||||
LD (MB),A
|
LD (MOUSE_BUTTONS),A
|
||||||
CALL SENSE
|
CALL SENSE
|
||||||
LD A,E
|
LD (MOUSE_COORDINATES),DE
|
||||||
LD (MX),A
|
; LD A,E
|
||||||
LD A,D
|
; LD (MX),A
|
||||||
LD (MY),A
|
; LD A,D
|
||||||
|
; LD (MY),A
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
|
;[ ] 14/03/2024 ¯à®¢¥àª ¯¥à¥¯®«¥¨¥ ¡ãä¥à
|
||||||
|
/*
|
||||||
|
.Receiver_Overrun:
|
||||||
|
; empty the buffer
|
||||||
|
IN A,(Z84.SIO.Ch_B.Data)
|
||||||
|
IN A,(Z84.SIO.Ch_B.Ctrl)
|
||||||
|
RRCA
|
||||||
|
JR C,.Receiver_Overrun
|
||||||
|
; reg 0 - error reset
|
||||||
|
LD A,%0011'0000
|
||||||
|
OUT (Z84.SIO.Ch_B.Ctrl),A
|
||||||
|
;!TEST
|
||||||
|
; reg 0 - return from int
|
||||||
|
; LD A,%0011'1000
|
||||||
|
; OUT (Z84.SIO.Ch_B.Ctrl),A
|
||||||
|
;
|
||||||
|
RET
|
||||||
|
*/
|
||||||
|
|
||||||
MCORECT LD HL,(PIX_X)
|
|
||||||
LD DE,(MX)
|
MCORECT:
|
||||||
|
LD HL,(PIX_X)
|
||||||
|
LD DE,(MOUSE_COORDINATES)
|
||||||
LD D,0
|
LD D,0
|
||||||
BIT 7,E
|
BIT 7,E
|
||||||
JR NZ,DECX
|
JR NZ,.DECX
|
||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
LD (PIX_X),HL
|
LD (PIX_X),HL
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD HL,(MAX_X)
|
LD HL,(MAX_X)
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
JR NC,YCOO
|
JR NC,.YCOO
|
||||||
LD HL,(MAX_X)
|
LD HL,(MAX_X)
|
||||||
LD (PIX_X),HL
|
LD (PIX_X),HL
|
||||||
JP YCOO
|
JP .YCOO
|
||||||
DECX LD A,E
|
.DECX: LD A,E
|
||||||
NEG
|
NEG
|
||||||
LD E,A
|
LD E,A
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
LD (PIX_X),HL
|
LD (PIX_X),HL
|
||||||
JR C,YCOO2
|
JR C,.YCOO2
|
||||||
LD DE,(MIN_X)
|
LD DE,(MIN_X)
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
JR NC,YCOO
|
JR NC,.YCOO
|
||||||
YCOO2 LD HL,(MIN_X)
|
.YCOO2: LD HL,(MIN_X)
|
||||||
LD (PIX_X),HL
|
LD (PIX_X),HL
|
||||||
|
|
||||||
YCOO LD HL,(PIX_Y)
|
.YCOO: LD HL,(PIX_Y)
|
||||||
LD DE,(MY)
|
LD DE,(MOUSE_COORDINATES.Y)
|
||||||
LD D,0
|
LD D,0
|
||||||
BIT 7,E
|
BIT 7,E
|
||||||
JR NZ,DECY
|
JR NZ,DECY
|
||||||
@ -750,77 +798,90 @@ YCOO LD HL,(PIX_Y)
|
|||||||
LD (PIX_Y),HL
|
LD (PIX_Y),HL
|
||||||
RET
|
RET
|
||||||
|
|
||||||
DECY LD A,E
|
DECY: LD A,E
|
||||||
NEG
|
NEG
|
||||||
LD E,A
|
LD E,A
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
LD (PIX_Y),HL
|
LD (PIX_Y),HL
|
||||||
JR C,XCOO
|
JR C,.XCOO
|
||||||
LD DE,(MIN_Y)
|
LD DE,(MIN_Y)
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
RET NC
|
RET NC
|
||||||
XCOO LD HL,(MIN_Y)
|
.XCOO: LD HL,(MIN_Y)
|
||||||
LD (PIX_Y),HL
|
LD (PIX_Y),HL
|
||||||
RET
|
RET
|
||||||
|
|
||||||
SENSE LD HL,(SENSEXY)
|
SENSE: LD HL,(SENSEXY)
|
||||||
LD A,L
|
LD A,L
|
||||||
OR L
|
;!TEST
|
||||||
RET Z
|
;OR L
|
||||||
DEC A
|
;RET Z
|
||||||
RET Z
|
;DEC A
|
||||||
|
;RET Z
|
||||||
|
CP 2
|
||||||
|
CCF
|
||||||
|
JR NC,.check_Y
|
||||||
|
;
|
||||||
LD A,E
|
LD A,E
|
||||||
BIT 7,A
|
BIT 7,A
|
||||||
LD B,#FF
|
LD B,#FF
|
||||||
JR Z,SEN1
|
JR Z,.loop
|
||||||
LD B,#7F
|
LD B,#7F
|
||||||
NEG
|
NEG
|
||||||
SEN1 INC B
|
.loop: INC B
|
||||||
SUB L
|
SUB L
|
||||||
JR NC,SEN1
|
JR NC,.loop
|
||||||
BIT 7,B
|
BIT 7,B
|
||||||
JR Z,SEN2
|
JR Z,.next
|
||||||
LD A,B
|
LD A,B
|
||||||
RES 7,A
|
RES 7,A
|
||||||
NEG
|
NEG
|
||||||
LD B,A
|
LD B,A
|
||||||
SEN2 LD E,B
|
;
|
||||||
|
.next: LD E,B
|
||||||
|
; !TEST
|
||||||
|
.check_Y:
|
||||||
|
LD A,H
|
||||||
|
CP 2
|
||||||
|
CCF
|
||||||
|
RET NC
|
||||||
|
;
|
||||||
LD A,D
|
LD A,D
|
||||||
BIT 7,A
|
BIT 7,A
|
||||||
LD B,#FF
|
LD B,#FF
|
||||||
JR Z,SEN3
|
JR Z,.loop2
|
||||||
LD B,#7F
|
LD B,#7F
|
||||||
NEG
|
NEG
|
||||||
SEN3 INC B
|
.loop2: INC B
|
||||||
SUB H
|
SUB H
|
||||||
JR NC,SEN3
|
JR NC,.loop2
|
||||||
BIT 7,B
|
BIT 7,B
|
||||||
JR Z,SEN4
|
JR Z,.skip2
|
||||||
LD A,B
|
LD A,B
|
||||||
RES 7,A
|
RES 7,A
|
||||||
NEG
|
NEG
|
||||||
LD B,A
|
LD B,A
|
||||||
SEN4 LD D,B
|
.skip2: LD D,B
|
||||||
RET
|
RET
|
||||||
|
|
||||||
M_MODE LD (MODE_M),A
|
M_MODE: LD (MODE_M),A
|
||||||
OR A
|
OR A
|
||||||
JR Z,UNKMODE
|
JR Z,.UNKMODE
|
||||||
CP 1
|
CP 1
|
||||||
JR Z,UNKMODE
|
JR Z,.UNKMODE
|
||||||
CP 2
|
CP 2
|
||||||
JR Z,S320256
|
JR Z,S320256
|
||||||
CP 3
|
CP 3
|
||||||
JR Z,S640256
|
JR Z,S640256
|
||||||
BIT 7,A
|
BIT 7,A
|
||||||
JR Z,UNKMODE
|
JR Z,.UNKMODE
|
||||||
RES 7,A
|
RES 7,A
|
||||||
CP 1
|
CP 1
|
||||||
JR Z,S320256
|
JR Z,S320256
|
||||||
CP 2
|
CP 2
|
||||||
JR Z,S640256
|
JR Z,S640256
|
||||||
UNKMODE:
|
.UNKMODE:
|
||||||
XOR A ; ????? ¬®¦¥â âãâ ¤® .INVALID_COMMAND ?
|
XOR A ; ????? ¬®¦¥â âãâ ¤® .INVALID_COMMAND ?
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
@ -858,13 +919,19 @@ M_INT: IN A,(SLOT3)
|
|||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD A,C
|
LD A,C
|
||||||
OUT (PORT_Y),A
|
OUT (PORT_Y),A
|
||||||
|
;!TEST SIO INT
|
||||||
|
IF MOUSE_INT_ENABLED
|
||||||
|
LD A,%0011'1000 ; return from int
|
||||||
|
OUT (Z84.SIO.Ch_B.Ctrl),A
|
||||||
|
ENDIF
|
||||||
RET
|
RET
|
||||||
|
|
||||||
M_REFR CALL CONTROL
|
M_REFR: CALL CONTROL
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
CONTROL CALL READ_M
|
CONTROL:
|
||||||
|
CALL READ_M
|
||||||
RET NC
|
RET NC
|
||||||
CALL MCORECT
|
CALL MCORECT
|
||||||
;LD A,#00
|
;LD A,#00
|
||||||
@ -894,9 +961,11 @@ MODE_M: DB #03
|
|||||||
PIX_X: DW 160
|
PIX_X: DW 160
|
||||||
PIX_Y: DW 128
|
PIX_Y: DW 128
|
||||||
|
|
||||||
MX: DB #00
|
MOUSE_COORDINATES:
|
||||||
MY: DB #00
|
.X: DB #00
|
||||||
MB: DB #00
|
.Y: DB #00
|
||||||
|
MOUSE_BUTTONS: DB #00
|
||||||
|
|
||||||
;MB_OLD DB #00 ; !FIXIT - ¥ 㦮?
|
;MB_OLD DB #00 ; !FIXIT - ¥ 㦮?
|
||||||
MIN_X: DW 0
|
MIN_X: DW 0
|
||||||
MAX_X: DW 319
|
MAX_X: DW 319
|
||||||
@ -904,7 +973,7 @@ MIN_Y: DW 0
|
|||||||
MAX_Y: DW 255
|
MAX_Y: DW 255
|
||||||
SENSEXY:
|
SENSEXY:
|
||||||
.X: DB 0
|
.X: DB 0
|
||||||
.Y: DB 0
|
.Y: DB 2
|
||||||
|
|
||||||
XHOT_SP: DW 0
|
XHOT_SP: DW 0
|
||||||
YHOT_SP: DW 0
|
YHOT_SP: DW 0
|
||||||
|
|||||||
@ -433,6 +433,14 @@ FULL_BF:
|
|||||||
|
|
||||||
KEYSCAN:
|
KEYSCAN:
|
||||||
LD IX,KEYFLAG
|
LD IX,KEYFLAG
|
||||||
|
;!TEST SIO INT
|
||||||
|
IF KEYBOARD_INT_ENABLED
|
||||||
|
CALL .RESCAN
|
||||||
|
LD A,%0011'1000 ; return from int
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
RET
|
||||||
|
ENDIF
|
||||||
|
;
|
||||||
.RESCAN:
|
.RESCAN:
|
||||||
IN A,(Z84.SIO.Ch_A.Ctrl)
|
IN A,(Z84.SIO.Ch_A.Ctrl)
|
||||||
AND 1
|
AND 1
|
||||||
@ -443,7 +451,7 @@ KEYSCAN:
|
|||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
IN A,(Z84.SIO.Ch_A.Ctrl)
|
IN A,(Z84.SIO.Ch_A.Ctrl)
|
||||||
AND %0010'0000 ; check receiver overrun error
|
AND %0010'0000 ; check receiver overrun error
|
||||||
JP NZ,Receiver_Overrun
|
JP NZ,KBD_Receiver_Overrun
|
||||||
;
|
;
|
||||||
IN A,(Z84.SIO.Ch_A.Data)
|
IN A,(Z84.SIO.Ch_A.Data)
|
||||||
CP #F0
|
CP #F0
|
||||||
@ -963,36 +971,55 @@ BEEP: LD A,#10
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
KEYBOARD_INIT:
|
KEYBOARD_INIT:
|
||||||
XOR A ;LD A,0
|
DI
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
; reg 0
|
||||||
INC A ;LD A,1
|
XOR A
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
|
||||||
XOR A ;LD A,0 ;#18
|
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
|
||||||
LD A,3
|
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
|
||||||
LD A,#C1
|
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
; reg 4
|
||||||
LD A,4
|
LD A,4
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
LD A,#07 ;#05
|
LD A,#07 ;#05
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
; reg 3
|
||||||
|
LD A,3
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
LD A,#C1
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
; reg 5
|
||||||
LD A,5
|
LD A,5
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
LD A,#62
|
LD A,#62
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
; reg 1
|
||||||
|
LD A,1
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
IF KEYBOARD_INT_ENABLED
|
||||||
|
LD A,%0001'1001
|
||||||
|
ELSE
|
||||||
|
XOR A ;#18
|
||||||
|
ENDIF
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
;
|
||||||
|
EI
|
||||||
RET
|
RET
|
||||||
|
|
||||||
;[ ] 18/02/2024 能恥丞<E681A5> <20> 砲鄍祚垠平言 ~銗<EFBD9E>
|
;[x] 18/02/2024 能恥丞<E681A5> <20> 砲鄍祚垠平言 ~銗<EFBD9E>
|
||||||
Receiver_Overrun:
|
KBD_Receiver_Overrun:
|
||||||
; empty the buffer
|
; empty the buffer
|
||||||
IN A,(Z84.SIO.Ch_A.Data)
|
IN A,(Z84.SIO.Ch_A.Data)
|
||||||
IN A,(Z84.SIO.Ch_A.Ctrl)
|
IN A,(Z84.SIO.Ch_A.Ctrl)
|
||||||
RRCA
|
RRCA
|
||||||
JR C,Receiver_Overrun
|
JR C,KBD_Receiver_Overrun
|
||||||
; reg 0 - reset errors
|
; reg 0 - error reset
|
||||||
LD A,%0011'0000
|
LD A,%0011'0000
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
;!TEST SIO INT
|
||||||
|
; reg 0 - return from int
|
||||||
|
IF KEYBOARD_INT_ENABLED
|
||||||
|
LD A,%0011'1000
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
ENDIF
|
||||||
|
;
|
||||||
;!TODO ¯à¨ ¤¥â¥ªâ¥ ¯¥à¥¯®«¥¨ï ¡ãä¥à ¯à®æ áïâì ª« ¢¨è¨ ¨§ ¯®àâ #FE ᯥªâàã¬
|
;!TODO ¯à¨ ¤¥â¥ªâ¥ ¯¥à¥¯®«¥¨ï ¡ãä¥à ¯à®æ áïâì ª« ¢¨è¨ ¨§ ¯®àâ #FE ᯥªâàã¬
|
||||||
;
|
;
|
||||||
LD (IX+K_SHIFT),0
|
LD (IX+K_SHIFT),0
|
||||||
@ -1001,7 +1028,7 @@ Receiver_Overrun:
|
|||||||
; LD A,(HOST)
|
; LD A,(HOST)
|
||||||
; LD (HEAD),A
|
; LD (HEAD),A
|
||||||
;
|
;
|
||||||
AND A
|
;AND A
|
||||||
RET
|
RET
|
||||||
;//MODULE: KEYINTER
|
;//MODULE: KEYINTER
|
||||||
;[END]
|
;[END]
|
||||||
@ -1 +1 @@
|
|||||||
943
|
944
|
||||||
@ -10,7 +10,9 @@
|
|||||||
;
|
;
|
||||||
DEFINE MOUSE_COM_BAUD 0 ; 1 - 2485, 2 - 4807, else - 1215 (default)
|
DEFINE MOUSE_COM_BAUD 0 ; 1 - 2485, 2 - 4807, else - 1215 (default)
|
||||||
DEFINE MOUSE_INT_ENABLED 0 ; INT from SIO ch. B
|
DEFINE MOUSE_INT_ENABLED 0 ; INT from SIO ch. B
|
||||||
DEFINE MOUSE_READ_PORT_TIMEOUT 1280 ; Š®áâë«ìë© â ©¬- ãâ ®¦¨¤ ¨¥ ¡ ©â ®â ¬ë誨. <EFBFBD>à®áâ® ¥áâì ªà¨¢ë¥ ¯¥à¥å®¤¨ª¨
|
DEFINE MOUSE_READ_PORT_TIMEOUT 3072 ; Š®áâë«ìë© â ©¬- ãâ ®¦¨¤ ¨¥ ¡ ©â ®â ¬ë誨. <EFBFBD>à®áâ® ¥áâì ªà¨¢ë¥ ¯¥à¥å®¤¨ª¨
|
||||||
|
;
|
||||||
|
DEFINE KEYBOARD_INT_ENABLED 0 ; INT from SIO ch. A
|
||||||
;
|
;
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user