эксперименты с SIO

This commit is contained in:
Anatoliy Belyanskiy 2024-03-16 22:55:49 +10:00
parent 63c527ace8
commit 54b1e804ba
4 changed files with 64 additions and 44 deletions

View File

@ -167,27 +167,38 @@ MS_INIT:
; reg 4 - ᪮à®áâì ¯®àâ  ¯¥à¢ë© ¬­®¦¨â¥«ì
LD A,4
OUT (PORT_MOUSE.Ctrl),A
LD A,+(7 | MOUSE_BAUD.multiplier_1)
;LD A,+(5 | MOUSE_BAUD.multiplier_1) ; parity
LD A,+(4 | MOUSE_BAUD.multiplier_1) ; no parity
OUT (PORT_MOUSE.Ctrl),A
; reg 3
LD A,3
OUT (PORT_MOUSE.Ctrl),A
LD A,#41
;LD A,#C1
OUT (PORT_MOUSE.Ctrl),A
; reg 5
LD A,5
OUT (PORT_MOUSE.Ctrl),A
LD A,%1110'0000 ; bit7 ¤«ï ª®à४⭮£® ¨­¨â  Sega ¤¦®©á⨪  ¢ ¯®àâã ª¥¬¯áâ®­ ¤¦®©á⨪ 
OUT (PORT_MOUSE.Ctrl),A
IF MOUSE_INT_ENABLED
; reg 1
LD A,1
OUT (PORT_MOUSE.Ctrl),A
IF MOUSE_INT_ENABLED
LD A,%0001'1001
ELSE
XOR A
ENDIF
OUT (PORT_MOUSE.Ctrl),A
; reg 2
LD A,2
OUT (PORT_MOUSE.Ctrl),A
LD A,#FF ; ¢¥ªâ®à ¯à¥à뢠­¨ï #FF
OUT (PORT_MOUSE.Ctrl),A
ELSE
; reg 1
LD A,1
OUT (PORT_MOUSE.Ctrl),A
XOR A
OUT (PORT_MOUSE.Ctrl),A
ENDIF
; ᪮à®áâì ¯®àâ  - ¢â®à®© ¬­®¦¨â¥«ì
LD A,#55
OUT (Z84.CTC.Ch_0),A
@ -622,22 +633,29 @@ MOUSE: LD A,(MODE_M)
RET
;----------------------------------------------------------------------;
CLEAR_MOUSE_BUFFER:
IN A,(Z84.SIO.Ch_B.Data)
IN A,(Z84.SIO.Ch_B.Ctrl)
RRCA
JR C,CLEAR_MOUSE_BUFFER
SCF
RET
;----------------------------------------------------------------------;
READ_M:
;[ ] 18/02/2024 能恥丞<E681A5> <20> 砲鄍祚垠平言 <EFBD9E>
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
JR Z,.READ_FIRST_BYTE
; reg 0 - error reset
LD A,%0011'0000
OUT (Z84.SIO.Ch_B.Ctrl),A
.NEXT: ;
JP CLEAR_MOUSE_BUFFER
.READ_FIRST_BYTE:
IN A,(PORT_MOUSE.Ctrl)
RRCA
RET NC
@ -652,47 +670,52 @@ READ_M:
RET Z
;[x] mouse freeeeezzzz
LD BC,MOUSE_READ_PORT_TIMEOUT
;LD BC,MOUSE_READ_PORT_TIMEOUT
;
.TST_01:
.READ_SECOND_BYTE:
IN A,(PORT_MOUSE.Ctrl)
RRCA
;[x] mouse freeeeezzzz
JR C,.NXT_1
DEC BC
LD A,B
OR C
JR NZ,.TST_01
RET
;JR NC,TST_01
;JR C,.NXT_1
;DEC BC
;LD A,B
;OR C
;JR NZ,.TST_01
;RET
JR NC,.READ_SECOND_BYTE
;
.NXT_1: IN A,(PORT_MOUSE.Data)
;.NXT_1:
IN A,(PORT_MOUSE.Data)
LD E,A
BIT 6,A
CCF
AND %0100'0000
;CCF
RET NZ
;[x] mouse freeeeezzzz
LD BC,MOUSE_READ_PORT_TIMEOUT
;LD BC,MOUSE_READ_PORT_TIMEOUT
;
.TST_02:
.READ_LAST_BYTE:
IN A,(PORT_MOUSE.Ctrl)
RRCA
;[x] mouse freeeeezzzz
JR C,.NXT_2
DEC BC
LD A,B
OR C
JR NZ,.TST_02
RET
;JR NC,TST_02
;JR C,.NXT_2
;DEC BC
;LD A,B
;OR C
;JR NZ,.READ_LAST_BYTE
;RET
JR NC,.READ_LAST_BYTE
;
.NXT_2: IN A,(PORT_MOUSE.Data)
;.NXT_2:
IN A,(PORT_MOUSE.Data)
LD D,A
BIT 6,A
CCF
;BIT 6,A
AND %0100'0000
;CCF
RET NZ
; ¢á¥ âਠ¡ ©â  ¯ ª¥â  ¯à®ç¨â ­ë
;
LD A,E
AND #3F
LD E,A
@ -814,7 +837,7 @@ DECY: LD A,E
SENSE: LD HL,(SENSEXY)
LD A,L
;!TEST
; [ ] 15/03/2024 ⥯¥àì ¯®¯à ¢ª¨ çã¢á⢨⥫쭮á⨠¯® ª®®à¤¨­ â ¬ à ¡®â îâ ª®à४⭮
;OR L
;RET Z
;DEC A
@ -840,7 +863,7 @@ SENSE: LD HL,(SENSEXY)
LD B,A
;
.next: LD E,B
; !TEST
; [ ] 15/03/2024 ⥯¥àì ¯®¯à ¢ª¨ çã¢á⢨⥫쭮á⨠¯® ª®®à¤¨­ â ¬ à ¡®â îâ ª®à४⭮
.check_Y:
LD A,H
CP 2
@ -971,7 +994,7 @@ MIN_X: DW 0
MAX_X: DW 319
MIN_Y: DW 0
MAX_Y: DW 255
SENSEXY:
SENSEXY: ; ‘í­ ‘íªá¨
.X: DB 0
.Y: DB 2

View File

@ -978,7 +978,7 @@ KEYBOARD_INIT:
; reg 4
LD A,4
OUT (Z84.SIO.Ch_A.Ctrl),A
LD A,#07 ;#05
;LD A,5 ; parity
OUT (Z84.SIO.Ch_A.Ctrl),A
; reg 3
LD A,3
@ -996,7 +996,7 @@ KEYBOARD_INIT:
IF KEYBOARD_INT_ENABLED
LD A,%0001'1001
ELSE
XOR A ;#18
XOR A
ENDIF
OUT (Z84.SIO.Ch_A.Ctrl),A
;
@ -1025,9 +1025,6 @@ KBD_Receiver_Overrun:
LD (IX+K_SHIFT),0
LD (IX+KEYFLG),0
;
; LD A,(HOST)
; LD (HEAD),A
;
;AND A
RET
;//MODULE: KEYINTER

View File

@ -1 +1 @@
944
958

View File

@ -10,7 +10,7 @@
;
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 3072 ; Š®áâë«ì­ë© â ©¬- ãâ ­  ®¦¨¤ ­¨¥ ¡ ©â  ®â ¬ë誨. <EFBFBD>à®áâ® ¥áâì ªà¨¢ë¥ ¯¥à¥å®¤­¨ª¨
;DEFINE MOUSE_READ_PORT_TIMEOUT 3072 ; Š®áâë«ì­ë© â ©¬- ãâ ­  ®¦¨¤ ­¨¥ ¡ ©â  ®â ¬ë誨. <EFBFBD>à®áâ® ¥áâì ªà¨¢ë¥ ¯¥à¥å®¤­¨ª¨
;
DEFINE KEYBOARD_INT_ENABLED 0 ; INT from SIO ch. A
;