diff --git a/Shared_Includes b/Shared_Includes index d3626ca..eb8e552 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit d3626cafdbc4a718c1bb02da6d4c3dc806875896 +Subproject commit eb8e55262317fea366bfb6b7d834dde90ff7307b diff --git a/src/bios/exp/EXP.asm b/src/bios/exp/EXP.asm index 8e6a4af..cb2fc84 100644 --- a/src/bios/exp/EXP.asm +++ b/src/bios/exp/EXP.asm @@ -72,37 +72,43 @@ RST_30: ; INTERUPT Point RST38: IF TEST_INT - ;INT: - PUSH BC - PUSH AF + ;INT: + PUSH BC + PUSH AF - LD C,SLOT3 - IN B,(C) - LD A,SYS_PAGE - OUT (C),A + LD C,SLOT3 + IN B,(C) + LD A,SYS_PAGE + OUT (C),A - LD A,(SYS_PAGE.INT_ID) - CP #AA - JR Z,YESINT - OUT (C),B - JP NOINT -YESINT: PUSH HL - LD HL,(SYS_PAGE.INT_ADRESS) - LD A,H - OR L - LD A,(SYS_PAGE.INT_PAGE) - OUT (C),B - PUSH DE - CALL NZ,EXTINT - POP DE - POP HL -NOINT: POP AF - POP BC + LD A,(SYS_PAGE.INT_ID) + CP #AA + JR Z,YESINT + OUT (C),B + JP NOINT +YESINT: PUSH HL + LD HL,(SYS_PAGE.INT_ADRESS) + LD A,H + OR L + LD A,(SYS_PAGE.INT_PAGE) + OUT (C),B + PUSH DE + CALL NZ,EXTINT + POP DE + POP HL +NOINT: POP AF + POP BC + EI + RETI + ELSE + +; PUSH AF +; 1: DEC A +; JR NZ,1B +; POP AF + EI + RETI ENDIF - - EI - RETI - ;RST10: ; CALL_48 10h ; RET diff --git a/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm b/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm index 38c0387..b8635e7 100644 --- a/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm +++ b/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm @@ -24,14 +24,36 @@ ;[]===========================================================[] ;!FIXIT всегда идет работа с данными для диска А FDD_5x.GETMED: + ;!TEST FDD 720/1440 + IF FDD_NormalCount + LD IY,FDD_INI_TABLE.FDD_0 + DEC A + JR C,.getParams + LD IY,FDD_INI_TABLE.FDD_1 +.getParams: + ENDIF + IN A,(SLOT3) EX AF,AF' LD A,SYS_PAGE OUT (SLOT3),A - 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 A,(FDD_INI_TABLE.FDD_0.F144) + ;!TEST FDD 720/1440 + IF FDD_NormalCount + LD L,(IY+1) ;SECTORS + LD H,(IY+2) ;HEADS + LD E,(IY+3) ;CYLINDL + LD D,(IY+4) ;CYLINDH + LD A,(IY+5) ;B_P_S low + LD XL,A + LD A,(IY+6) ;B_P_S High + LD XH,A + LD A,(IY+0) ;F144/720 + 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 A,(FDD_INI_TABLE.FDD_0.F144) + ENDIF LD B,A EX AF,AF' OUT (SLOT3),A @@ -51,20 +73,51 @@ FDD_5x.GETMED: ;Return: None ;[]===========================================================[] FDD_5x.SETMED: + ;!TEST FDD 720/1440 + IF FDD_NormalCount + LD IY,FDD_INI_TABLE.FDD_0 + DEC A + JR C,.setParams + LD IY,FDD_INI_TABLE.FDD_1 + ENDIF +.setParams: IN A,(SLOT3) EX AF,AF' LD A,SYS_PAGE OUT (SLOT3),A - 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.F144),A + + ;!TEST FDD 720/1440 + IF FDD_NormalCount + LD (IY+1),L ;SECTORS + LD (IY+2),H ;HEADS + LD (IY+3),E ;CYLINDL + LD (IY+4),D ;CYLINDH + LD A,XL + LD (IY+5),A ;B_P_S low + LD A,XH + LD (IY+6),A ;B_P_S High + LD (IY+0),B ;F144/720 + LD A,B + ELSE + 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.F144),A + ENDIF EX AF,AF' OUT (SLOT3),A EX AF,AF' - AND A - RET + + ;!TEST FDD 720/1440 + IF FDD_NormalCount + AND 1 + JP Z,FN_TURBO.SET_FDD_720 + JP FN_TURBO..SET_FDD_1440 + ELSE + AND A + RET + ENDIF ;[]===========================================================[] ;Function: Detect Disk Density diff --git a/src/bios/exp/FLEX.asm b/src/bios/exp/FLEX.asm index 4950cc8..887ca03 100644 --- a/src/bios/exp/FLEX.asm +++ b/src/bios/exp/FLEX.asm @@ -631,7 +631,6 @@ FN_SYNC: .INT_PENT: LD IX,SCREEN_TABLES.PENTAGON ; JR PROG_SCR - .PROG_SCR: IN A,(SLOT3) EX AF,AF' @@ -643,11 +642,11 @@ FN_SYNC: LD (SYS_PAGE.COPY_RGADR),A LD (SYS_PAGE.CONFIG_ALL),IX - LD A,0 + XOR A ;----[START]-----------------------[? 1] .loop_1: - OUT (RGADR),A + OUT (PORT_Y),A EX AF,AF' LD A,#50 @@ -682,7 +681,7 @@ FN_SYNC: EX AF,AF' INC A - OUT (RGADR),A + OUT (PORT_Y),A EX AF,AF' LD (HL),0 @@ -693,7 +692,7 @@ FN_SYNC: EX AF,AF' INC A - OUT (RGADR),A + OUT (PORT_Y),A EX AF,AF' DJNZ .loop_5 @@ -705,9 +704,9 @@ FN_SYNC: INC HL INC HL INC HL - IN A,(RGADR) + IN A,(PORT_Y) AND #80 - OUT (RGADR),A + OUT (PORT_Y),A DEC C JR NZ,.loop_3 ;------------------------[^ 3]---------- @@ -729,7 +728,7 @@ FN_SYNC: ; Exit LD A,(SYS_PAGE.COPY_RGADR) - OUT (RGADR),A + OUT (PORT_Y),A LD A,(SYS_PAGE.COPY_SLOT3) OUT (SLOT3),A .exit: OR A @@ -771,12 +770,14 @@ SCREEN_TABLES: DB 9 , #F8 DB 0 -;.SCR: DB 41,#F8, 3,#FC, 4,#FC, 7,#FC, 9,#F8, 0 -.INT: DB 40,#FC, 2,#FD, 6,#FC, 7,#FC, 9,#FC, 0 -.INT_SC: DB 41,#F8, 1,#FD, 6,#FC, 7,#FC, 9,#F8, 0 -.BLN: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0 -.SNC: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0 -.RES: DB 41,#F8, 3,#FE, 4,#FE, 7,#FE, 9,#F8, 0 +;.SCR: DB 41,#F8, 3,#FC, 4,#FC, 7,#FC, 9,#F8, 0 + +.INT: DB 40,#FC, 2,#FD, 6,#FC, 7,#FC, 9,#FC, 0 ;!TEST PENTAGON INT 2 квадратика +;.INT: DB 40,#FC, 1,#FD, 1,#FC, 1,#FD, 21,#FC, 0 ;!TEST PENTAGON INT 2 квадратика +.INT_SC: DB 41,#F8, 1,#FD, 6,#FC, 7,#FC, 9,#F8, 0 +.BLN: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0 +.SNC: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0 +.RES: DB 41,#F8, 3,#FE, 4,#FE, 7,#FE, 9,#F8, 0 ;--------------------------------------- ;--- Screen data tables 2: counter1, data address1 .. counterX, data addressX diff --git a/src/bios/shared/DEFINES.INC b/src/bios/shared/DEFINES.INC index 7f56abd..f2a390a 100644 --- a/src/bios/shared/DEFINES.INC +++ b/src/bios/shared/DEFINES.INC @@ -1,8 +1,6 @@ ; ;---------[All shared defines]---------- DEFINE DEBUG 1 ; добавляет строку и сообщение о тестовой сборке на стартовом экране - DEFINE NEW_FEATURE 0 ; !TODO пункты в сетап - DEFINE TEST_INT 1 ; Тестовый обработчик пользовательского INT DEFINE PACKED_MAIN 0 ; паковать MAIN или влезает без этого? DEFINE SP2000_ConfID #FEFF ; DEFINE IDE_Optimization 1 ; слегка оптимизирует некоторые процедуры работы с HDD @@ -10,14 +8,19 @@ DEFINE Pashalki 0 ; DEFINE PICTURE_FILE './src/bios/logo/psfathers.bmp' - DEFINE RECOVERYrdChooseTYPE 1 ; 1 - RECOVERY всегда грузится в диск 15, 2 - ищется свободный рамдиск и если такого нет, то занимается 15ый - DEFINE RECOVERYmountTYPE 1 ; 1 - быстрый немного захардкоженый вариант. 2 - более "правильный" - DEFINE HDDwriteProtect 0 ; Задержка в кадрах после отрисовки логотипа (0 = 256) DEFINE LOGO_DELAY_MIN 25 DEFINE LOGO_DELAY_NORM 100 DEFINE LOGO_DELAY_MAX 130 ; +; +; [ TEST ] + DEFINE TEST_INT 1 ; Тестовый обработчик пользовательского INT + DEFINE NEW_FEATURE 0 ; !TODO пункты в сетап + DEFINE HDDwriteProtect 0 + DEFINE RECOVERYmountTYPE 1 ; 1 - быстрый немного захардкоженый вариант. 2 - более "правильный" + DEFINE RECOVERYrdChooseTYPE 1 ; 1 - RECOVERY всегда грузится в диск 15, 2 - ищется свободный рамдиск и если такого нет, то занимается 15ый + DEFINE FDD_NormalCount 0 ; \ No newline at end of file diff --git a/src/bios/shared/RECOVERY.IMG b/src/bios/shared/RECOVERY.IMG index 132c436..3f37079 100755 Binary files a/src/bios/shared/RECOVERY.IMG and b/src/bios/shared/RECOVERY.IMG differ