From 3f9e0b72076f38699c8fa01f763e7f20eb79381e Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Mon, 19 Jan 2026 03:12:29 +1000 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D0=BA=D0=BE=D0=BB=D0=B4=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B0=20=D0=B7=D0=B0=D0=B4=D0=B5=D1=80=D0=B6?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B4=D0=BB=D1=8F=20=D1=81=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=BF=D0=BB=D0=BE=D1=82=D0=BD=D0=BE=D1=81=D1=82=D0=B8?= =?UTF-8?q?=20=D1=83=20=D1=82=D0=BE=D1=80=D0=BC=D0=BE=D0=B7=D0=BD=D1=8B?= =?UTF-8?q?=D1=85=205.25=20=D1=84=D0=BB=D0=BE=D0=BF=D0=B0=D1=80=D0=B5?= =?UTF-8?q?=D0=B9.=20=D0=92=20=D1=80=D0=B5=D0=BA=D0=B0=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D0=B8=20=D0=B4=D0=BE=D1=81=20=D0=B8=D0=B7=20=D1=85=D0=BE=D1=82?= =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=203,=20=D1=84=D1=84=D0=BE=D1=80=D0=BC?= =?UTF-8?q?=D0=B0=D1=82=201.17?= 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 | 174 ++++++++++++++++--------- src/bios/exp/FUNC_SYS.ASM | 9 +- src/bios/shared/RECOVERY.IMG | Bin 98304 -> 98304 bytes 4 files changed, 115 insertions(+), 70 deletions(-) diff --git a/Shared_Includes b/Shared_Includes index f5f85b3..6073b87 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit f5f85b3d14c65bfc2f8619b596815e350f1a9d5b +Subproject commit 6073b8787867fe5d217d064c9f5f77972303148c diff --git a/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm b/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm index e1599c2..c1b1e06 100644 --- a/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm +++ b/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm @@ -188,12 +188,12 @@ FDD_5x_LONG_READ: EX DE,HL IN A,(SLOT3) EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - LD IY,(SYS_PAGE.FDD_TABLE.BytesPerSector) - LD XH,C ; Memory Page Number - LD A,(SYS_PAGE.FDD_TABLE.SECTORS) - LD C,A + LD A,SYS_PAGE + OUT (SLOT3),A + LD IY,(SYS_PAGE.FDD_TABLE.BytesPerSector) + LD XH,C ; Memory Page Number + LD A,(SYS_PAGE.FDD_TABLE.SECTORS) + LD C,A EX AF,AF' OUT (SLOT3),A .DSK_LP: LD A,D @@ -206,7 +206,7 @@ FDD_5x_LONG_READ: PUSH BC PUSH HL CALL FDD_RW_SECTOR - JR C,ERRDOS + JR C,.ERRDOS ; размер сектора LD D,YH LD E,YL @@ -254,7 +254,7 @@ FDD_5x_LONG_READ: XOR A RET ; -ERRDOS: POP HL +.ERRDOS: POP HL POP BC POP DE CALL SET_DOS_OFF @@ -488,7 +488,39 @@ S_FDD: PUSH BC RET ; -; +;----------------------------------------------------------------------; +; CHANGE_SPEED: IN A,(SLOT3) +; EX AF,AF' +; LD A,SYS_PAGE +; OUT (SLOT3),A +; LD A,(SYS_PAGE.FDD_TABLE.DISK) +; XOR #80 +; LD (SYS_PAGE.FDD_TABLE.DISK),A +; RLA +; EX AF,AF' +; OUT (SLOT3),A +; EX AF,AF' +; JR NC,FDD.SET720 +; FDD.SET1440: LD A,FDD_Density.SET_1440 +; OUT (FDD_Density),A +; RET +; ; +; ; +; SET_SPEED: IN A,(SLOT3) +; EX AF,AF' +; LD A,SYS_PAGE +; OUT (SLOT3),A +; LD A,(SYS_PAGE.FDD_TABLE.DISK) +; ;AND #80 +; RLA +; EX AF,AF' +; OUT (SLOT3),A +; EX AF,AF' +; JR C,FDD.SET1440 +; FDD.SET720: LD A,FDD_Density.SET_720 +; OUT (FDD_Density),A +; RET + CHANGE_SPEED: IN A,(SLOT3) EX AF,AF' LD A,SYS_PAGE @@ -496,37 +528,58 @@ CHANGE_SPEED: IN A,(SLOT3) LD A,(SYS_PAGE.FDD_TABLE.DISK) XOR #80 LD (SYS_PAGE.FDD_TABLE.DISK),A - ;AND #80 - RLA - EX AF,AF' - OUT (SLOT3),A - EX AF,AF' - ;JR Z,FDD.SET720 - JR NC,FDD.SET720 - ;JP FDD.SET1440 ;CF=1 -FDD.SET1440: LD A,FDD_Density.SET_1440 - OUT (FDD_Density),A - RET -; + JR SET_SPEED.set + + ; ; SET_SPEED: IN A,(SLOT3) EX AF,AF' LD A,SYS_PAGE OUT (SLOT3),A LD A,(SYS_PAGE.FDD_TABLE.DISK) - ;AND #80 - RLA +.set: AND #80 + RRA + RRA + OR 1 + OUT (FDD_Density),A EX AF,AF' - OUT (SLOT3),A - EX AF,AF' - ;JR NZ,FDD.SET1440 - JR C,FDD.SET1440 - ;JR FDD.SET720 ;CF=0 -FDD.SET720: LD A,FDD_Density.SET_720 - OUT (FDD_Density),A - RET + OUT (SLOT3),A + RET +;----------------------------------------------------------------------; + +//////////////////////////////////////////////////////////////////////// +; Вход: BC - внутренний и внешний счётчики +WAIT_FDD_FOR_SEARCH_TRACK: + LD A,#C0 ;!HARDCODE CMD КР1818ВГ93 + OUT (FDC_93.Command),A + PUSH BC + CALL .LOOP + POP BC + RET NC + CALL CHANGE_SPEED + DEC C + JR NZ,WAIT_FDD_FOR_SEARCH_TRACK + SCF + RET + ; +.LOOP: LD HL,#F000 +.loop_reg_HL: IN A,(FDC_93.DrvCTRL) + AND #C0 + RET NZ + ; +.ID_LP4: DEC HL + LD A,H + OR L + JR NZ,.loop_reg_HL + ; + DJNZ .LOOP + SCF + RET + + +//////////////////////////////////////////////////////////////////////// ; прерывания должны быть отключены ; выход: A - FDD_INIT_TABLE.DISK, B - sector size high byte DISK_ID: EXX @@ -535,32 +588,25 @@ DISK_ID: EXX OUT (FDC_93.Data),A LD A,#18 ;!TODO выписать комманды ВГ ;SEARCH ;!HARDCODE CMD КР1818ВГ93 CALL EXECOM - LD C,4 ; счётчик -.loop_reg_C: LD A,#C0 ;!HARDCODE CMD КР1818ВГ93 - OUT (FDC_93.Command),A - LD HL,#F000 ; счётчик -.loop_reg_HL: IN A,(FDC_93.DrvCTRL) - AND #C0 - JR NZ,.Read_Index - ; -.ID_LP4: DEC HL - LD A,H - OR L - JR NZ,.loop_reg_HL - CALL CHANGE_SPEED - DEC C - JR NZ,.loop_reg_C + ; кусок для быстрых флоппарей + LD BC,#0104 ; 1 - счётчик + CALL WAIT_FDD_FOR_SEARCH_TRACK + JR NC,.Read_Index + ; кусок для тормозных флоппарей + LD BC,#0504 ; 1 - счётчик + CALL WAIT_FDD_FOR_SEARCH_TRACK + JR NC,.Read_Index EXX - SCF + ;SCF RET ; .Read_Index: ; ; Данные FDC_93.Data: - ; номер цилиндра BYTE + ; номер цилиндра BYTE ; номер головки BYTE ; номер сектора BYTE ; длина сектора BYTE - ; контрольная сумма WORD + ; контрольная сумма WORD LD H,4 ; !HARDCODE счётчик до байта размера сектора .ID_LP2: IN A,(FDC_93.Data) DEC H @@ -583,6 +629,7 @@ DISK_ID: EXX EX AF,AF' AND #80 RET +//////////////////////////////////////////////////////////////////////// ; SEEK: LD XL,A @@ -688,25 +735,22 @@ NTRACK: PUSH HL RET ; SAVE_INTERRUPTS: -.switch_off: PUSH AF - LD A,R - LD A,#80 - JP PE,.set_R - XOR A -.set_R: LD R,A +.switch_off: PUSH AF + LD A,R DI - POP AF + LD A,#80 + JP PE,.set_R + XOR A +.set_R: LD R,A + POP AF RET ; ; -.restore: PUSH AF - LD A,R - BIT 7,A - JR Z,.set_di +.restore: PUSH AF + LD A,R + DI + RLA + JR NC,.set_di EI - POP AF ; PE - RET - ; -.set_di: DI - POP AF ; PO +.set_di: POP AF ; PE RET ;[]===========================================================[] \ No newline at end of file diff --git a/src/bios/exp/FUNC_SYS.ASM b/src/bios/exp/FUNC_SYS.ASM index 1a66800..ad32456 100644 --- a/src/bios/exp/FUNC_SYS.ASM +++ b/src/bios/exp/FUNC_SYS.ASM @@ -345,13 +345,14 @@ FN_TURBO: ;!FIXIT меняем плотность - меняем в системной странице инфу об этом .SET_FDD_720: LD A,FDD_Density.SET_720 - OUT (FDD_Density),A - AND A - RET + JR .set + ; OUT (FDD_Density),A + ; AND A + ; RET ;!FIXIT меняем плотность - меняем в системной странице инфу об этом .SET_FDD_1440: LD A,FDD_Density.SET_1440 - OUT (FDD_Density),A +.set: OUT (FDD_Density),A AND A RET diff --git a/src/bios/shared/RECOVERY.IMG b/src/bios/shared/RECOVERY.IMG index 247d818b20b5e7c0f2bfadb9059fc4f9f2b9f5e9..411414673c5ec7da5465d7f43d13958b34a94748 100644 GIT binary patch delta 17037 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 delta 16764 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 gK)LjV8(