This commit is contained in:
Anatoliy Belyanskiy 2024-02-20 00:51:08 +10:00
parent 336436ee76
commit a18f382470
7 changed files with 93 additions and 58 deletions

View File

@ -287,7 +287,7 @@ F_START: DI
.good: CALL DEPLOY ;R07 ;íâ  ¯à®æ¥¤ãà  § âàñâáï ¯®á«¥ ¨á¯®«­¥­¨ï
RET C ;R10
CALL KINIT
CALL KEYBOARD_INIT
CALL PRINT_INIT
LD C,Dss.Mouse.Init
RST ToDSS.Mouse

View File

@ -156,44 +156,42 @@ M_RESR LD A,DSS_Error.mouse.INVALID_COMMAND
RET
;!TODO ­  ¡¨®á.
MS_INIT DI
;!TEST mouse
;LD A,#55
;OUT (#10),A
;LD A,#2D
;OUT (#10),A
;
XOR A ;LD A,0
MS_INIT:
DI
; reg 0
XOR A ;LD A,0
OUT (PORT_MOUSE.Ctrl),A
INC A ;LD A,1
; reg 4
LD A,4
OUT (PORT_MOUSE.Ctrl),A
DEC A ;LD A,0
LD A,+(7 | MOUSE_BAUD.multiplier_1) ; ¯¥à¢ë© ¬­®¦¨â¥«ì
OUT (PORT_MOUSE.Ctrl),A
; reg 3
LD A,3
OUT (PORT_MOUSE.Ctrl),A
LD A,#41
OUT (PORT_MOUSE.Ctrl),A
LD A,4
OUT (PORT_MOUSE.Ctrl),A
;!TEST mouse
LD A,MOUSE_BAUD.multiplier_1 ; ¯¥à¢ë© ¬­®¦¨â¥«ì
OUT (PORT_MOUSE.Ctrl),A
;
; reg 5
LD A,5
OUT (PORT_MOUSE.Ctrl),A
; [ ] ¤«ï ª®à४⭮£® ¨­¨â  Sega ¤¦®©á⨪  ¢ ¯®àâã ª¥¬¯áâ®­ ¤¦®©á⨪ 
LD A,%1110'0000
;LD A,%0110'0000
;
LD A,%1110'0000 ; bit7 ¤«ï ª®à४⭮£® ¨­¨â  Sega ¤¦®©á⨪  ¢ ¯®àâã ª¥¬¯áâ®­ ¤¦®©á⨪ 
OUT (PORT_MOUSE.Ctrl),A
;
; 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
;!TEST mouse
LD A,#55
OUT (Z84.CTC.Ch_0),A
LD A,MOUSE_BAUD.multiplier_2 ; ¢â®à®© ¬­®¦¨â¥«ì
OUT (Z84.CTC.Ch_0),A
;
EI
XOR A
RET
@ -516,7 +514,7 @@ MOUSE: LD A,(MODE_M)
JR SET_RESTORE_EXIT
;
;set gfx-mode
.GFX: CP #82 ;640x256x16
.GFX: CP Dss.SetVMod.grf640x256
JR NZ,.NOFIX_640
SRL H
RR L

View File

@ -435,8 +435,16 @@ KEYSCAN:
LD IX,KEYFLAG
.RESCAN:
IN A,(Z84.SIO.Ch_A.Ctrl)
BIT 0,A
AND 1
RET Z
;[ ] 18/02/2024 能恥丞<E681A5> <20> 砲鄍祚垠平言 <EFBD9E>
; A = 1
; reg 1
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
;
IN A,(Z84.SIO.Ch_A.Data)
CP #F0
JR Z,FULL_BF.F0_KEY
@ -451,10 +459,10 @@ KEYSCAN:
CALL SHIFTS
RES FLAG_E0,(IX+KEYFLG)
RES FLAG_E1,(IX+KEYFLG)
RET Z ;IT'S SHIFT KEY
;RET Z ;IT'S SHIFT KEY
;
CALL INPCODE ;L - AT POS. CODE
PUTCODE:
;PUTCODE
LD HL,#1C00 ;Caps Lock
AND A
SBC HL,DE
@ -479,16 +487,24 @@ PUTCODE:
AND A
SBC HL,DE
CALL Z,SCL_X
;small optimization
; LD HL,#CF00 ;Ctrl + Alt + Del
; AND A
; SBC HL,DE
; CALL Z,RST_X
;;;
;[x] small optimization)))
; LD HL,#CF00 ;Ctrl + Alt + Del
; AND A
; SBC HL,DE
; CALL Z,RST_X
;
LD BC,(KEYFLAG)
CALL PUTSYM
RET
;[ ] 18/02/2024 能恥丞<E681A5> <20> 砲鄍祚垠平言 <EFBD9E>
; .Receiver_Overrun:
; LD (IX+K_SHIFT),0
; LD (IX+KEYFLG),0
; ; reg 0 - reset errors
; LD A,%0011'0000
; OUT (Z84.SIO.Ch_A.Ctrl),A
; RET
UN_KEY RES FLAG_F0,(IX+KEYFLG)
LD L,A
@ -922,29 +938,30 @@ SHF2RUS DB #F1,Esc,"!",#22,"#","$",":",#2C,".",";","?","%","_","+",Bcs
;================================
BEEP LD A,#10
OUT (#FE),A
BEEP: LD A,#10
OUT (ZX_Beeper),A
LD B,D
LD C,E
BPP DEC BC
.loop1: DEC BC
LD A,B
OR C
JR NZ,BPP
LD A,#00
OUT (#FE),A
JR NZ,.loop1
XOR A ;LD A,#00
OUT (ZX_Beeper),A
LD B,D
LD C,E
BPP2 DEC BC
.loop2: DEC BC
LD A,B
OR C
JR NZ,BPP2
JR NZ,.loop2
DEC HL
LD A,H
OR L
JR NZ,BEEP
RET
KINIT XOR A ;LD A,0
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
@ -964,5 +981,24 @@ KINIT XOR A ;LD A,0
OUT (Z84.SIO.Ch_A.Ctrl),A
RET
;[ ] 18/02/2024 能恥丞<E681A5> <20> 砲鄍祚垠平言 <EFBD9E>
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
LD A,%0011'0000
OUT (Z84.SIO.Ch_A.Ctrl),A
;
LD (IX+K_SHIFT),0
LD (IX+KEYFLG),0
;
; LD A,(HOST)
; LD (HEAD),A
;
AND A
RET
;//MODULE: KEYINTER
;[END]

View File

@ -1 +1 @@
912
926

View File

@ -3,17 +3,18 @@
;
;
DEFINE SHORT_RSTx10_TABLE 0 ; 㪮à®ç¥­­ ï â ¡«¨æ  ä㭪権 rst #10. 96 ä㭪権.
DEFINE SHORT_RSTx10_TABLE 0 ; 㪮à®ç¥­­ ï â ¡«¨æ  ä㭪権 rst #10. 96 ä㭪権.
DEFINE COMPILE_UNUSED_CODE 0
;
;
DEFINE MOUSE_COM_BAUD 0 ; 1 - 2404, 2 - 4807, else - 1215 (default)
DEFINE MOUSE_COM_BAUD 0 ; 1 - 2485, 2 - 4807, else - 1215 (default)
DEFINE MOUSE_INT_ENABLED 0
DEFINE MOUSE_READ_PORT_TIMEOUT 1280
;
;
;LD_DSK EQU 16 ; ¬ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å HDD ¤¨áª®¢ ¢ á¨á⥬¥
;LD_DSK EQU 16 ; ¬ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å HDD ¤¨áª®¢ ¢ á¨á⥬¥
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
define _bit (1<?((FAT_CACHE.Sectors-1)
@ -94,18 +95,18 @@ HANDBUF.SIZE EQU 32
;
;----------------------------------------------------;
IF MOUSE_COM_BAUD = 1
IF MOUSE_COM_BAUD = 1
MOUSE_BAUD:
.multiplier_1 EQU #02 ; ¯¥à¢ë© ¬­®¦¨â¥«ì = 2. 875000/Œ­1*Œ­2=2404
.multiplier_2 EQU #B6 ; ¢â®à®© ¬­®¦¨â¥«ì = 182. 875000/Œ­1*Œ­2=2404
.multiplier_1 EQU %0100'0000 ; ¯¥à¢ë© ¬­®¦¨â¥«ì = 16.
.multiplier_2 EQU 22 ; ¢â®à®© ¬­®¦¨â¥«ì = 22. 875000/Œ­1*Œ­2=2485
ELSEIF MOUSE_COM_BAUD = 2
MOUSE_BAUD:
.multiplier_1 EQU #04 ; ¯¥à¢ë© ¬­®¦¨â¥«ì = 1. 875000/Œ­1*Œ­2=4807
.multiplier_2 EQU #B6 ; ¢â®à®© ¬­®¦¨â¥«ì = 182. 875000/Œ­1*Œ­2=4807
.multiplier_1 EQU %0000'0000 ; ¯¥à¢ë© ¬­®¦¨â¥«ì = 1.
.multiplier_2 EQU 182 ; ¢â®à®© ¬­®¦¨â¥«ì = 182. 875000/Œ­1*Œ­2=4807
ELSE
MOUSE_BAUD:
.multiplier_1 EQU #47 ; ¯¥à¢ë© ¬­®¦¨â¥«ì = 16. 875000/Œ­1*Œ­2=1215
.multiplier_2 EQU #2D ; ¢â®à®© ¬­®¦¨â¥«ì = 45. 875000/Œ­1*Œ­2=1215
.multiplier_1 EQU %0100'0000 ; ¯¥à¢ë© ¬­®¦¨â¥«ì = 16.
.multiplier_2 EQU 45 ; ¢â®à®© ¬­®¦¨â¥«ì = 45. 875000/Œ­1*Œ­2=1215
ENDIF
;----------------------------------------------------;
;

@ -1 +1 @@
Subproject commit 9a8cc2fa8438c6e27c72b60a7cfd3a2e3470b314
Subproject commit dbf3e86b6290d71e5789cabf7af6981a5a42db0e