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

@ -49,4 +49,4 @@ SCANDRV:
RET RET
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
;/////////////////////////////////////////////////////////////////////// ;///////////////////////////////////////////////////////////////////////
; ;

View File

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

View File

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

View File

@ -435,8 +435,16 @@ KEYSCAN:
LD IX,KEYFLAG LD IX,KEYFLAG
.RESCAN: .RESCAN:
IN A,(Z84.SIO.Ch_A.Ctrl) IN A,(Z84.SIO.Ch_A.Ctrl)
BIT 0,A AND 1
RET Z 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) IN A,(Z84.SIO.Ch_A.Data)
CP #F0 CP #F0
JR Z,FULL_BF.F0_KEY JR Z,FULL_BF.F0_KEY
@ -451,10 +459,10 @@ KEYSCAN:
CALL SHIFTS CALL SHIFTS
RES FLAG_E0,(IX+KEYFLG) RES FLAG_E0,(IX+KEYFLG)
RES FLAG_E1,(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 CALL INPCODE ;L - AT POS. CODE
PUTCODE: ;PUTCODE
LD HL,#1C00 ;Caps Lock LD HL,#1C00 ;Caps Lock
AND A AND A
SBC HL,DE SBC HL,DE
@ -479,16 +487,24 @@ PUTCODE:
AND A AND A
SBC HL,DE SBC HL,DE
CALL Z,SCL_X CALL Z,SCL_X
;[x] small optimization)))
;small optimization ; LD HL,#CF00 ;Ctrl + Alt + Del
; LD HL,#CF00 ;Ctrl + Alt + Del ; AND A
; AND A ; SBC HL,DE
; SBC HL,DE ; CALL Z,RST_X
; CALL Z,RST_X ;
;;;
LD BC,(KEYFLAG) LD BC,(KEYFLAG)
CALL PUTSYM CALL PUTSYM
RET 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) UN_KEY RES FLAG_F0,(IX+KEYFLG)
LD L,A LD L,A
@ -922,29 +938,30 @@ SHF2RUS DB #F1,Esc,"!",#22,"#","$",":",#2C,".",";","?","%","_","+",Bcs
;================================ ;================================
BEEP LD A,#10 BEEP: LD A,#10
OUT (#FE),A OUT (ZX_Beeper),A
LD B,D LD B,D
LD C,E LD C,E
BPP DEC BC .loop1: DEC BC
LD A,B LD A,B
OR C OR C
JR NZ,BPP JR NZ,.loop1
LD A,#00 XOR A ;LD A,#00
OUT (#FE),A OUT (ZX_Beeper),A
LD B,D LD B,D
LD C,E LD C,E
BPP2 DEC BC .loop2: DEC BC
LD A,B LD A,B
OR C OR C
JR NZ,BPP2 JR NZ,.loop2
DEC HL DEC HL
LD A,H LD A,H
OR L OR L
JR NZ,BEEP JR NZ,BEEP
RET RET
KINIT XOR A ;LD A,0 KEYBOARD_INIT:
XOR A ;LD A,0
OUT (Z84.SIO.Ch_A.Ctrl),A OUT (Z84.SIO.Ch_A.Ctrl),A
INC A ;LD A,1 INC A ;LD A,1
OUT (Z84.SIO.Ch_A.Ctrl),A OUT (Z84.SIO.Ch_A.Ctrl),A
@ -964,5 +981,24 @@ KINIT XOR A ;LD A,0
OUT (Z84.SIO.Ch_A.Ctrl),A OUT (Z84.SIO.Ch_A.Ctrl),A
RET 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 ;//MODULE: KEYINTER
;[END] ;[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 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 DEFINE MOUSE_READ_PORT_TIMEOUT 1280
; ;
; ;
;LD_DSK EQU 16 ; ¬ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å HDD ¤¨áª®¢ ¢ á¨á⥬¥ ;LD_DSK EQU 16 ; ¬ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å HDD ¤¨áª®¢ ¢ á¨á⥬¥
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////
define _bit (1<?((FAT_CACHE.Sectors-1) 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: MOUSE_BAUD:
.multiplier_1 EQU #02 ; ¯¥à¢ë© ¬­®¦¨â¥«ì = 2. 875000/Œ­1*Œ­2=2404 .multiplier_1 EQU %0100'0000 ; ¯¥à¢ë© ¬­®¦¨â¥«ì = 16.
.multiplier_2 EQU #B6 ; ¢â®à®© ¬­®¦¨â¥«ì = 182. 875000/Œ­1*Œ­2=2404 .multiplier_2 EQU 22 ; ¢â®à®© ¬­®¦¨â¥«ì = 22. 875000/Œ­1*Œ­2=2485
ELSEIF MOUSE_COM_BAUD = 2 ELSEIF MOUSE_COM_BAUD = 2
MOUSE_BAUD: MOUSE_BAUD:
.multiplier_1 EQU #04 ; ¯¥à¢ë© ¬­®¦¨â¥«ì = 1. 875000/Œ­1*Œ­2=4807 .multiplier_1 EQU %0000'0000 ; ¯¥à¢ë© ¬­®¦¨â¥«ì = 1.
.multiplier_2 EQU #B6 ; ¢â®à®© ¬­®¦¨â¥«ì = 182. 875000/Œ­1*Œ­2=4807 .multiplier_2 EQU 182 ; ¢â®à®© ¬­®¦¨â¥«ì = 182. 875000/Œ­1*Œ­2=4807
ELSE ELSE
MOUSE_BAUD: MOUSE_BAUD:
.multiplier_1 EQU #47 ; ¯¥à¢ë© ¬­®¦¨â¥«ì = 16. 875000/Œ­1*Œ­2=1215 .multiplier_1 EQU %0100'0000 ; ¯¥à¢ë© ¬­®¦¨â¥«ì = 16.
.multiplier_2 EQU #2D ; ¢â®à®© ¬­®¦¨â¥«ì = 45. 875000/Œ­1*Œ­2=1215 .multiplier_2 EQU 45 ; ¢â®à®© ¬­®¦¨â¥«ì = 45. 875000/Œ­1*Œ­2=1215
ENDIF ENDIF
;----------------------------------------------------; ;----------------------------------------------------;
; ;

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