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 f5332a9..106637f 100755 Binary files a/src/bios/shared/RECOVERY.IMG and b/src/bios/shared/RECOVERY.IMG differ