убран баг 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
LD HL,(FDD_INI_TABLE.FDD_0.SECTORS)
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)
ENDIF
LD B,A
@ -102,7 +102,7 @@ FDD_5x.SETMED:
LD A,B
LD (FDD_INI_TABLE.FDD_0.SECTORS),HL
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
ENDIF
EX AF,AF'
@ -200,7 +200,7 @@ FDD_5x.LONG_READ:
EX AF,AF'
LD A,SYS_PAGE
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 A,(FDD_INI_TABLE.FDD_0.SECTORS)
LD C,A
@ -347,7 +347,7 @@ FDD_5x.LONG_WRITE:
EX AF,AF'
LD A,SYS_PAGE
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 A,(FDD_INI_TABLE.FDD_0.SECTORS)
LD C,A

View File

@ -227,6 +227,7 @@ EMM.FreeMemRMD:
;------[
; Žá¢®¡®¤¨âì ¡«®ª ¯ ¬ïâ¨
; ‚室: A - <20>€—€Ž <E28093>Ž—Šˆ
; <20><20>Ž<EFBFBD>ˆœ DE!!!
;EMM_FN3M:
EMM.FreeMem:
AND A
@ -242,7 +243,7 @@ EMM.FreeMem:
LD A,SYS_PAGE
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
EMM_F3M_L1:
LD L,A

View File

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

View File

@ -299,48 +299,49 @@ CLEARM: IN A,(SLOT3)
;
;
before_intPointer EQU $
BLOCK #FF - low $,0 ; ¢ëà ¢­¨¢ ­¨¥ ­  #xxFF
INT_POINTER: WORD 0
; 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
; 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
; ;
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:
DI
LD A,#3F
@ -1190,6 +1191,10 @@ CNF_VER_PRINT:
; LD BC,#0A86
; JP_to_BIOS
//////////////////////////////////////////////////////////////////////
INCLUDE 'IM2_INT.asm'
//////////////////////////////////////////////////////////////////////
PRNHEX: LD D,A
RRCA
RRCA
@ -1243,6 +1248,7 @@ PRNTIME:
OUT (SLOT3),A
RET
PMEMORY:
ADD HL,HL
ADD HL,HL
@ -1387,6 +1393,9 @@ TRDOSX:
; OUT (SLOT3),A
; RET
;
setFRAME:
.double:
LD HL,.dataDoubleAll
@ -1432,7 +1441,7 @@ ElementsBuffer:
INCLUDE 'SETTINGS.asm'
INCLUDE 'KEY.asm'
;.......................................
;
KEY: EI
JP WAITKEY
@ -1532,6 +1541,7 @@ PRINT_CHANEL:
JP LP_PRINT_LINE6
;
;---------------------------------------
INCLUDE 'src/bios/ROM/SETUP/messages.z80'
;---------------------------------------

View File

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

Binary file not shown.