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