From 959648169a72f64580d4b435c6ab6d76538bb62a Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Sun, 31 Mar 2024 05:14:31 +1000 Subject: [PATCH] =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BD=20=D0=B1=D0=B0?= =?UTF-8?q?=D0=B3=20XLAT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Shared_Includes | 2 +- src/bios/exp/EXTENDED/FDD_DRIVER_2.asm | 8 +- src/bios/exp/FUNC_RAM_ROM_DRV.ASM | 3 +- src/bios/exp/FUNC_SERVICE.asm | 1 + src/bios/rom/SETUP/IM2_INT.asm | 43 ++++++ src/bios/rom/SETUP/KEY.asm | 204 ++++++++++++++----------- src/bios/rom/SETUP/MAIN.asm | 92 ++++++----- src/bios/shared/DEFINES.INC | 2 + src/bios/shared/RECOVERY.IMG | Bin 98304 -> 98304 bytes 9 files changed, 218 insertions(+), 137 deletions(-) create mode 100644 src/bios/rom/SETUP/IM2_INT.asm diff --git a/Shared_Includes b/Shared_Includes index 68681fb..18c132c 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 68681fbc50da463f1debae860e6db64603886d39 +Subproject commit 18c132c6e9b507cb92d2144f5497278f021a0292 diff --git a/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm b/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm index 0142280..b9da1e3 100644 --- a/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm +++ b/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm @@ -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 diff --git a/src/bios/exp/FUNC_RAM_ROM_DRV.ASM b/src/bios/exp/FUNC_RAM_ROM_DRV.ASM index ca833c6..8164131 100644 --- a/src/bios/exp/FUNC_RAM_ROM_DRV.ASM +++ b/src/bios/exp/FUNC_RAM_ROM_DRV.ASM @@ -227,6 +227,7 @@ EMM.FreeMemRMD: ;------[ ; Освободить блок памяти ; Вход: A - НАЧАЛО ЦЕПОЧКИ +; НЕ ПОРТИТЬ 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 diff --git a/src/bios/exp/FUNC_SERVICE.asm b/src/bios/exp/FUNC_SERVICE.asm index 6268ca2..f881600 100644 --- a/src/bios/exp/FUNC_SERVICE.asm +++ b/src/bios/exp/FUNC_SERVICE.asm @@ -430,6 +430,7 @@ REINIT: DEC B ; ;----------------------------------------------------------------------; +; не должно портить DE SET_ROM_FLAG_ZX: EX AF,AF' IN A,(SLOT3) diff --git a/src/bios/rom/SETUP/IM2_INT.asm b/src/bios/rom/SETUP/IM2_INT.asm new file mode 100644 index 0000000..4369781 --- /dev/null +++ b/src/bios/rom/SETUP/IM2_INT.asm @@ -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 +; \ No newline at end of file diff --git a/src/bios/rom/SETUP/KEY.asm b/src/bios/rom/SETUP/KEY.asm index cefab4d..0356dde 100644 --- a/src/bios/rom/SETUP/KEY.asm +++ b/src/bios/rom/SETUP/KEY.asm @@ -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< 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' ;--------------------------------------- diff --git a/src/bios/shared/DEFINES.INC b/src/bios/shared/DEFINES.INC index f0b5345..0da9fb6 100644 --- a/src/bios/shared/DEFINES.INC +++ b/src/bios/shared/DEFINES.INC @@ -9,6 +9,8 @@ DEFINE PICTURE_FILE './src/bios/logo/psfathers.bmp' DEFINE StandartCGApallete 1 ; Подключать палитру из standart_colors.inc DEFINE BitStream_SizeInPages 4 + DEFINE USE_E1_SCANCODE 0 + ; Задержка в кадрах после отрисовки логотипа (0 = 256) DEFINE LOGO_DELAY_MIN 25 diff --git a/src/bios/shared/RECOVERY.IMG b/src/bios/shared/RECOVERY.IMG index f5332a9dfcabc04f8afc4c87e16b5f1a160a7901..106637fba8240d98199b5fe58f8534e4e7d6b8f0 100755 GIT binary patch delta 15292 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 delta 15338 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