убран баг XLAT

This commit is contained in:
Anatoliy Belyanskiy 2024-03-31 05:14:31 +10:00
parent c8b5e323a5
commit 959648169a
9 changed files with 218 additions and 137 deletions

@ -1 +1 @@
Subproject commit 68681fbc50da463f1debae860e6db64603886d39 Subproject commit 18c132c6e9b507cb92d2144f5497278f021a0292

View File

@ -51,7 +51,7 @@ FDD_5x.GETMED:
ELSE ELSE
LD HL,(FDD_INI_TABLE.FDD_0.SECTORS) LD HL,(FDD_INI_TABLE.FDD_0.SECTORS)
LD DE,(FDD_INI_TABLE.FDD_0.CYLINDL) LD DE,(FDD_INI_TABLE.FDD_0.CYLINDL)
LD IX,(FDD_INI_TABLE.FDD_0.B_P_S) LD IX,(FDD_INI_TABLE.FDD_0.BytesPerSector)
LD A,(FDD_INI_TABLE.FDD_0.F144) LD A,(FDD_INI_TABLE.FDD_0.F144)
ENDIF ENDIF
LD B,A LD B,A
@ -102,7 +102,7 @@ FDD_5x.SETMED:
LD A,B LD A,B
LD (FDD_INI_TABLE.FDD_0.SECTORS),HL LD (FDD_INI_TABLE.FDD_0.SECTORS),HL
LD (FDD_INI_TABLE.FDD_0.CYLINDL),DE LD (FDD_INI_TABLE.FDD_0.CYLINDL),DE
LD (FDD_INI_TABLE.FDD_0.B_P_S),IX LD (FDD_INI_TABLE.FDD_0.BytesPerSector),IX
LD (FDD_INI_TABLE.FDD_0.F144),A LD (FDD_INI_TABLE.FDD_0.F144),A
ENDIF ENDIF
EX AF,AF' EX AF,AF'
@ -200,7 +200,7 @@ FDD_5x.LONG_READ:
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD IY,(FDD_INI_TABLE.FDD_0.B_P_S) LD IY,(FDD_INI_TABLE.FDD_0.BytesPerSector)
LD XH,C LD XH,C
LD A,(FDD_INI_TABLE.FDD_0.SECTORS) LD A,(FDD_INI_TABLE.FDD_0.SECTORS)
LD C,A LD C,A
@ -347,7 +347,7 @@ FDD_5x.LONG_WRITE:
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD IY,(FDD_INI_TABLE.FDD_0.B_P_S) LD IY,(FDD_INI_TABLE.FDD_0.BytesPerSector)
LD XH,C LD XH,C
LD A,(FDD_INI_TABLE.FDD_0.SECTORS) LD A,(FDD_INI_TABLE.FDD_0.SECTORS)
LD C,A LD C,A

View File

@ -227,6 +227,7 @@ EMM.FreeMemRMD:
;------[ ;------[
; Žá¢®¡®¤¨âì ¡«®ª ¯ ¬ï⨠; Žá¢®¡®¤¨âì ¡«®ª ¯ ¬ïâ¨
; ‚室: A - <20>€—€Ž <E28093>Ž—Šˆ ; ‚室: A - <20>€—€Ž <E28093>Ž—Šˆ
; <20><20>Ž<EFBFBD>ˆœ DE!!!
;EMM_FN3M: ;EMM_FN3M:
EMM.FreeMem: EMM.FreeMem:
AND A AND A
@ -242,7 +243,7 @@ EMM.FreeMem:
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD H,high (SYS_PAGE.RAMD_FAT); - #4000 - #4000) ; !FIXIT SAFE_RGADR + LD H,high (SYS_PAGE.RAMD_FAT)
LD A,L LD A,L
EMM_F3M_L1: EMM_F3M_L1:
LD L,A LD L,A

View File

@ -430,6 +430,7 @@ REINIT: DEC B
; ;
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
; ­¥ ¤®«¦­® ¯®àâ¨âì DE
SET_ROM_FLAG_ZX: SET_ROM_FLAG_ZX:
EX AF,AF' EX AF,AF'
IN A,(SLOT3) IN A,(SLOT3)

View File

@ -0,0 +1,43 @@
;
before_intPointer EQU $
BLOCK #FF - low $,0 ; ¢ëà ¢­¨¢ ­¨¥ ­  #xxFF
INT_POINTER: WORD 0
ASSERT +low INT_POINTER = #FF, 'ERROR! Not valid interrupt pointer!'
IFDEF PREBUILD
ASSERT INT_POINTER-before_intPointer < 16, 'Warning! To much space before INT_POINTER.'
ELSE
IF INT_POINTER-before_intPointer > 16
DISPLAY 'Warning! To much space before INT_POINTER: ',/D,INT_POINTER-before_intPointer
ENDIF
ENDIF
INT_HANDLER:
PUSH AF
EX AF,AF'
PUSH AF
PUSH BC
PUSH DE
PUSH HL
EXX
PUSH BC
PUSH DE
PUSH HL
PUSH IX
PUSH IY
CALL KEYSCAN
POP IY
POP IX
POP HL
POP DE
POP BC
EXX
POP HL
POP DE
POP BC
POP AF
EX AF,AF'
POP AF
EI
RETI
;

View File

@ -51,7 +51,7 @@ SF_ALT EQU 1
SF_BUFF EQU 0 SF_BUFF EQU 0
DB 3 DB 3
; ;
UNCODE: DW 0000 ;UNCODE: DW 0000
; ;
; D15 - LShift ; D15 - LShift
@ -159,9 +159,9 @@ FULL_BF:
BIT SF_BUFF,(IX+SOUND_K) BIT SF_BUFF,(IX+SOUND_K)
JR Z,.FBF JR Z,.FBF
EXX EXX
LD DE,230 LD DE,230
LD HL,50 LD HL,50
CALL BEEP CALL BEEP
EXX EXX
.FBF: EX AF,AF' .FBF: EX AF,AF'
RET RET
@ -185,15 +185,25 @@ RESCANN:
JR Z,F0_KEY JR Z,F0_KEY
CP #E0 CP #E0
JR Z,E0_KEY JR Z,E0_KEY
CP #E1 ;
JR Z,E1_KEY CP #E1
IF USE_E1_SCANCODE
JR Z,E1_KEY
ELSE
JR Z,RESCANN
ENDIF
;
BIT FLAG_F0,(IX+KEYFLG) BIT FLAG_F0,(IX+KEYFLG)
JR NZ,UN_KEY JR NZ,UN_KEY
;
LD L,A LD L,A
CALL XLAT CALL XLAT
CALL SHIFTS CALL SHIFTS
RES FLAG_E0,(IX+KEYFLG) RES FLAG_E0,(IX+KEYFLG)
RES FLAG_E1,(IX+KEYFLG) IF USE_E1_SCANCODE
RES FLAG_E1,(IX+KEYFLG)
ENDIF
;
;[ ] 29/02/2024 ¢ë£à¥¡á⨠¢¥áì ¡ãä¥à ;[ ] 29/02/2024 ¢ë£à¥¡á⨠¢¥áì ¡ãä¥à
JR Z,RESCANN ;IT'S SHIFT KEY JR Z,RESCANN ;IT'S SHIFT KEY
; RET Z ;IT'S SHIFT KEY ; RET Z ;IT'S SHIFT KEY
@ -235,7 +245,7 @@ RESCANN:
;-----------------------; ;-----------------------;
LD BC,(KEYFLAG) LD BC,(KEYFLAG)
CALL PUTSYM CALL PUTSYM
RET JP RESCANN
E0_KEY: SET FLAG_E0,(IX+KEYFLG) E0_KEY: SET FLAG_E0,(IX+KEYFLG)
JR RESCANN JR RESCANN
@ -243,41 +253,43 @@ E0_KEY: SET FLAG_E0,(IX+KEYFLG)
F0_KEY: SET FLAG_F0,(IX+KEYFLG) F0_KEY: SET FLAG_F0,(IX+KEYFLG)
JR RESCANN JR RESCANN
E1_KEY: SET FLAG_E1,(IX+KEYFLG) IF USE_E1_SCANCODE
JR RESCANN E1_KEY: SET FLAG_E1,(IX+KEYFLG)
JR RESCANN
ENDIF
UN_KEY: RES FLAG_F0,(IX+KEYFLG) UN_KEY: RES FLAG_F0,(IX+KEYFLG)
LD L,A LD L,A
CALL XLAT CALL XLAT
CALL UNSHIFT CALL UNSHIFT
RES FLAG_E0,(IX+KEYFLG) RES FLAG_E0,(IX+KEYFLG)
LD H,0 ;LD H,0
LD (UNCODE),HL ;LD (UNCODE),HL
RET RET
CAPS_X: LD A,(IX+K_LOCK) CAPS_X: LD A,(KEYFLAG)
XOR #01 XOR 1<<CAPS_L
LD (IX+K_LOCK),A LD (KEYFLAG),A
RET RET
INS_X: LD A,(IX+K_LOCK) INS_X: LD A,(KEYFLAG)
XOR #02 XOR 1<<INS_L
LD (IX+K_LOCK),A LD (KEYFLAG),A
RET RET
NUM_X: LD A,(IX+K_LOCK) NUM_X: LD A,(KEYFLAG)
XOR #08 XOR 1<<NUM_L
LD (IX+K_LOCK),A LD (KEYFLAG),A
RET RET
PAUSE_X: PAUSE_X:
BIT X_CTRL,(IX+K_SHIFT) BIT X_CTRL,(IX+K_SHIFT)
RET Z RET Z
POP HL POP HL
LD A,(IX+K_LOCK) LD A,(KEYFLAG)
XOR #40 XOR 1<<PAUSE_L
LD (IX+K_LOCK),A LD (KEYFLAG),A
BIT PAUSE_L,(IX+K_LOCK) AND 1<<PAUSE_L
RET Z RET Z
EI EI
.loop: HALT .loop: HALT
@ -286,9 +298,9 @@ PAUSE_X:
DI DI
RET RET
SCL_X: LD A,(IX+K_LOCK) SCL_X: LD A,(KEYFLAG)
XOR #04 XOR 1<<SCRL_L
LD (IX+K_LOCK),A LD (KEYFLAG),A
RET RET
;/////////////////////////////////////////////////////////////////////// ;///////////////////////////////////////////////////////////////////////
@ -376,7 +388,6 @@ SCL_X: LD A,(IX+K_LOCK)
;; ;;
UNSHIFT: UNSHIFT:
LD A,L LD A,L
CP #37 ;L ALT CP #37 ;L ALT
JR Z,.L_ALT JR Z,.L_ALT
CP #39 ;R ALT CP #39 ;R ALT
@ -422,7 +433,6 @@ UNSHIFT:
;; ;;
SHIFTS: SHIFTS:
LD A,L LD A,L
CP #37 ;L ALT CP #37 ;L ALT
JR Z,.L_ALT JR Z,.L_ALT
CP #39 ;R ALT CP #39 ;R ALT
@ -498,7 +508,8 @@ SHF2TAB:
DB #00,#00,#00,"/","*","-","+",Ent,#00 DB #00,#00,#00,"/","*","-","+",Ent,#00
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00 DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00
_mInfoALIGN 256,0 ///////////////////////////////////////////////////////////////////////
; _mInfoALIGN 256,0 ; ¡¥§ ¢ëà ¢­¨¢ ­¨ï
XLAT_T: XLAT_T:
; 0 1 2 3 4 5 6 7 8 9 A B C D E F ; 0 1 2 3 4 5 6 7 8 9 A B C D E F
DB #00,#43,#00,#3F,#3D,#3B,#3C,#46,#00,#44,#42,#40,#3E,#0F,#00,#00 ;00 DB #00,#43,#00,#3F,#3D,#3B,#3C,#46,#00,#44,#42,#40,#3E,#0F,#00,#00 ;00
@ -510,6 +521,9 @@ XLAT_T:
DB #00,#00,#00,#00,#00,#00,#0E,#00,#00,#51,#00,#54,#57,#00,#00,#00 ;60 DB #00,#00,#00,#00,#00,#00,#0E,#00,#00,#51,#00,#54,#57,#00,#00,#00 ;60
DB #50,#4F,#52,#55,#56,#58,#01,#49,#45,#4D,#53,#4C,#4B,#59,#48,#00 ;70 DB #50,#4F,#52,#55,#56,#58,#01,#49,#45,#4D,#53,#4C,#4B,#59,#48,#00 ;70
DB #00,#00,#00,#41,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 ;80 DB #00,#00,#00,#41,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 ;80
XLAT_T.Size EQU $-XLAT_T
///////////////////////////////////////////////////////////////////////
XLAT: BIT FLAG_E0,(IX+KEYFLG) XLAT: BIT FLAG_E0,(IX+KEYFLG)
JR Z,W_O_E0 JR Z,W_O_E0
@ -534,8 +548,24 @@ XLAT: BIT FLAG_E0,(IX+KEYFLG)
RET Z RET Z
LD L,A LD L,A
W_O_E0: LD H,high XLAT_T W_O_E0: ; â ¡«¨æ  á ¢ëà ¢­¨¢ ­¨¥¬ ­  256
LD L,(HL) ; LD H,high XLAT_T
; LD L,(HL)
;
; ¡¥§ ¢ëà ¢­¨¢ ­¨ï
; [ ] 31/03/2024 ¨á¯à ¢«¥­ ¡ £ á ¢ë室®¬ §  £à ­¨æë â ¡«¨æë XLAT_T
CP XLAT_T.Size
LD L,0
RET NC
;
LD HL,XLAT_T
ADD A,L
LD L,A
JR NC,.no_inc
INC H
.no_inc:
LD L,(HL)
RET
RET RET
; !TODO ¯®á¬®âà¥âì ; !TODO ¯®á¬®âà¥âì
@ -543,41 +573,36 @@ W_O_E0: LD H,high XLAT_T
; BIT 1,(IX+1) ;00110000 ; BIT 1,(IX+1) ;00110000
; JR NZ,FN_KEY ;LRCAcaRP ; JR NZ,FN_KEY ;LRCAcaRP
INPCODE: INPCODE: LD D,L
LD D,L LD E,0
LD E,0 ; !TODO ¢¥à­ãâì àãá᪨©? € § ç¥¬?
; BIT LANG_L,(IX+K_LOCK) ; !TODO ¢¥à­ãâì àãá᪨©? € § ç¥¬? ; BIT LANG_L,(IX+K_LOCK)
; JP NZ,RUSCODE ; JP NZ,RUSCODE
LD A,(IX+K_SHIFT) LD A,(KEYCTRL)
AND #C0 AND 1<<L_SHIFT | 1<<R_SHIFT
JR NZ,SHIFT_L JR NZ,.SHIFT
SET 7,D SET 7,D
BIT X_ALT,(IX+K_SHIFT) BIT X_ALT,(IX+K_SHIFT)
RET NZ RET NZ
BIT X_CTRL,(IX+K_SHIFT) BIT X_CTRL,(IX+K_SHIFT)
RET NZ RET NZ
LD D,L LD D,L
BIT CAPS_L,(IX+K_LOCK) BIT CAPS_L,(IX+K_LOCK)
LD BC,CAPSTAB LD BC,CAPSTAB
JR NZ,CONVER JR NZ,CONVERT.NO_SET
LD BC,NORMTAB LD BC,NORMTAB
CONVER: JR CONVERT.NO_SET
LD H,0 ;
ADD HL,BC .SHIFT: LD BC,SHIFTAB
LD E,(HL) BIT CAPS_L,(IX+K_LOCK)
RET JR Z,CONVERT.SET
LD BC,SHF2TAB
SHIFT_L: CONVERT: ;
LD BC,SHIFTAB .SET: SET 7,D
BIT CAPS_L,(IX+K_LOCK) .NO_SET: LD H,0
JR Z,CONVER5 ADD HL,BC
LD BC,SHF2TAB LD E,(HL)
CONVER5: RET
LD H,0
ADD HL,BC
LD E,(HL)
SET 7,D
RET
; !TODO ¢¥à­ãâì àãá᪨©? € § ç¥¬? ; !TODO ¢¥à­ãâì àãá᪨©? € § ç¥¬?
;RUSCODE LD A,(IX+K_SHIFT) ;RUSCODE LD A,(IX+K_SHIFT)
@ -698,28 +723,27 @@ Ent EQU #0D
; ;
;================================ ;================================
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: .loop2: DEC BC
DEC BC LD A,B
LD A,B OR C
OR C JR NZ,.loop2
JR NZ,BPP2 DEC HL
DEC HL LD A,H
LD A,H OR L
OR L JR NZ,BEEP
JR NZ,BEEP RET
RET
;COM_A EQU #19 Z84.SIO.Ch_A.Ctrl ;COM_A EQU #19 Z84.SIO.Ch_A.Ctrl
;DAT_A EQU #18 Z84.SIO.Ch_A.Data ;DAT_A EQU #18 Z84.SIO.Ch_A.Data

View File

@ -299,48 +299,49 @@ CLEARM: IN A,(SLOT3)
; ;
; ;
before_intPointer EQU $ ; before_intPointer EQU $
BLOCK #FF - low $,0 ; ¢ëà ¢­¨¢ ­¨¥ ­  #xxFF ; BLOCK #FF - low $,0 ; ¢ëà ¢­¨¢ ­¨¥ ­  #xxFF
INT_POINTER: WORD 0 ; INT_POINTER: WORD 0
ASSERT +low INT_POINTER = #FF, 'ERROR! Not valid interrupt pointer!' ; ASSERT +low INT_POINTER = #FF, 'ERROR! Not valid interrupt pointer!'
IFDEF PREBUILD ; IFDEF PREBUILD
ASSERT INT_POINTER-before_intPointer < 16, 'Warning! To much space before INT_POINTER.' ; ASSERT INT_POINTER-before_intPointer < 16, 'Warning! To much space before INT_POINTER.'
ELSE ; ELSE
IF INT_POINTER-before_intPointer > 16 ; IF INT_POINTER-before_intPointer > 16
DISPLAY 'Warning! To much space before INT_POINTER: ',/D,INT_POINTER-before_intPointer ; DISPLAY 'Warning! To much space before INT_POINTER: ',/D,INT_POINTER-before_intPointer
ENDIF ; ENDIF
ENDIF ; ENDIF
; INT_HANDLER:
; PUSH AF
; EX AF,AF'
; PUSH AF
; PUSH BC
; PUSH DE
; PUSH HL
; EXX
; PUSH BC
; PUSH DE
; PUSH HL
; PUSH IX
; PUSH IY
; CALL KEYSCAN
; POP IY
; POP IX
; POP HL
; POP DE
; POP BC
; EXX
; POP HL
; POP DE
; POP BC
; POP AF
; EX AF,AF'
; POP AF
; EI
; RETI
; ;
INT_HANDLER:
PUSH AF
EX AF,AF'
PUSH AF
PUSH BC
PUSH DE
PUSH HL
EXX
PUSH BC
PUSH DE
PUSH HL
PUSH IX
PUSH IY
CALL KEYSCAN
POP IY
POP IX
POP HL
POP DE
POP BC
EXX
POP HL
POP DE
POP BC
POP AF
EX AF,AF'
POP AF
EI
RETI
;
INT_OFF: INT_OFF:
DI DI
LD A,#3F LD A,#3F
@ -1190,6 +1191,10 @@ CNF_VER_PRINT:
; LD BC,#0A86 ; LD BC,#0A86
; JP_to_BIOS ; JP_to_BIOS
//////////////////////////////////////////////////////////////////////
INCLUDE 'IM2_INT.asm'
//////////////////////////////////////////////////////////////////////
PRNHEX: LD D,A PRNHEX: LD D,A
RRCA RRCA
RRCA RRCA
@ -1243,6 +1248,7 @@ PRNTIME:
OUT (SLOT3),A OUT (SLOT3),A
RET RET
PMEMORY: PMEMORY:
ADD HL,HL ADD HL,HL
ADD HL,HL ADD HL,HL
@ -1387,6 +1393,9 @@ TRDOSX:
; OUT (SLOT3),A ; OUT (SLOT3),A
; RET ; RET
; ;
setFRAME: setFRAME:
.double: .double:
LD HL,.dataDoubleAll LD HL,.dataDoubleAll
@ -1432,7 +1441,7 @@ ElementsBuffer:
INCLUDE 'SETTINGS.asm' INCLUDE 'SETTINGS.asm'
INCLUDE 'KEY.asm' INCLUDE 'KEY.asm'
;....................................... ;.......................................
;
KEY: EI KEY: EI
JP WAITKEY JP WAITKEY
@ -1532,6 +1541,7 @@ PRINT_CHANEL:
JP LP_PRINT_LINE6 JP LP_PRINT_LINE6
; ;
;--------------------------------------- ;---------------------------------------
INCLUDE 'src/bios/ROM/SETUP/messages.z80' INCLUDE 'src/bios/ROM/SETUP/messages.z80'
;--------------------------------------- ;---------------------------------------

View File

@ -9,6 +9,8 @@
DEFINE PICTURE_FILE './src/bios/logo/psfathers.bmp' DEFINE PICTURE_FILE './src/bios/logo/psfathers.bmp'
DEFINE StandartCGApallete 1 ; <20>®¤ª«îç âì ¯ «¨âàã ¨§ standart_colors.inc DEFINE StandartCGApallete 1 ; <20>®¤ª«îç âì ¯ «¨âàã ¨§ standart_colors.inc
DEFINE BitStream_SizeInPages 4 DEFINE BitStream_SizeInPages 4
DEFINE USE_E1_SCANCODE 0
; ‡ ¤¥à¦ª  ¢ ª ¤à å ¯®á«¥ ®âà¨á®¢ª¨ «®£®â¨¯  (0 = 256) ; ‡ ¤¥à¦ª  ¢ ª ¤à å ¯®á«¥ ®âà¨á®¢ª¨ «®£®â¨¯  (0 = 256)
DEFINE LOGO_DELAY_MIN 25 DEFINE LOGO_DELAY_MIN 25

Binary file not shown.