From fdad36552830b7163bb978cc519bb3f3086dc843 Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Wed, 23 Apr 2025 02:42:10 +1000 Subject: [PATCH] =?UTF-8?q?FN=5FHDD=5FRECAL:=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=20=D1=81=D0=BE=20=D0=B2=D1=81=D0=B5=D0=BC=D0=B8=20?= =?UTF-8?q?=D0=BA=D0=B0=D0=BD=D0=B0=D0=BB=D0=B0=D0=BC=D0=B8=20IDE=20ATAPI?= =?UTF-8?q?=5F5x=5FRESET:=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=D0=BD=D0=B0=20=D0=BF=D0=B0=D1=83=D0=B7=D0=B0,=20=D1=87?= =?UTF-8?q?=D1=82=D0=BE=D0=B1=20=D1=83=D0=B1=D1=80=D0=B0=D1=82=D1=8C=20EI?= =?UTF-8?q?=20=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D1=91=D0=BD=20recovery.?= =?UTF-8?q?img?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Shared_Includes | 2 +- src/bios/exp/EXP.asm | 2 +- src/bios/exp/EXTENDED/FDD_DRIVER_2.asm | 4 +-- src/bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM | 25 ++++++++++++-- src/bios/exp/FUNC_4x.ASM | 43 +++++++++++++++++++----- src/bios/exp/FUNC_CMOS.ASM | 5 ++- src/bios/exp/FUNC_LOW_PRINT.ASM | 2 +- src/bios/rom/ROM.asm | 2 -- src/bios/rom/SETUP/MAIN.asm | 9 ++--- src/bios/rom/SETUP/SETTINGS.asm | 2 +- src/bios/rom/ZX/ZX_MENU.ASM | 2 +- src/bios/shared/RECOVERY.IMG | Bin 98304 -> 98304 bytes 12 files changed, 68 insertions(+), 30 deletions(-) diff --git a/Shared_Includes b/Shared_Includes index 4a5753e..be60675 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 4a5753ea2c090485263117929d6a734d4a669ec4 +Subproject commit be6067585059da92ec2674091bedf341e9219f09 diff --git a/src/bios/exp/EXP.asm b/src/bios/exp/EXP.asm index 1f6a849..992bd35 100644 --- a/src/bios/exp/EXP.asm +++ b/src/bios/exp/EXP.asm @@ -1065,7 +1065,7 @@ PORTS_INIT: ; Включить доступ к контроллеру диска (третья конфа) LD A,CNF_PORT.CNF_3+ROM.BIOS OUT (SYS_PORT.ROM),A - OUT (FDC_93.DrvCTRL),A + OUT (FDC_93.DrvCTRL),A : ASSERT CNF_PORT.CNF_3+ROM.BIOS = #1C, "ERROR: A != #1C" PUSH HL ; для задержки POP HL ; для задержки LD A,#3C ;!HARDCODE команда для ВГ93 diff --git a/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm b/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm index 6f98de1..24c3430 100644 --- a/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm +++ b/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm @@ -481,7 +481,7 @@ FDD_RW_SECTOR: LD D,5 ;RETRY COUNT OR E JR Z,.SectorSizeError ; - OUTI ; !FIXIT размер сектора может быть плавающим и прибить буфер + OUTI .wwait_data: IN A,(FDC_93.DrvCTRL) AND %1100'0000 ;b6: DRQ (запрос данных = 1). b7: INTRQ (выполняется команда = 0). JR Z,.wwait_data @@ -641,7 +641,7 @@ DISK_ID: EXX EX AF,AF' OUT (SLOT3),A EX AF,AF' - AND #80 + AND #80 RET diff --git a/src/bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM b/src/bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM index f993a38..b037341 100644 --- a/src/bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM +++ b/src/bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM @@ -38,11 +38,28 @@ ATAPI_5x_RESET: LD C,IDE.Device.ATAPI CP BIOS.Error.ATAPI.UnitAttention SCF RET Z - ;!FIXIT не трогать прерывания - EI - HALT + ; + CP BIOS.Error.ATAPI.MediumError + SCF + RET Z + ; не трогать прерывания + ; EI + ; HALT + EXX + XOR A +.pause_loop: LD B,A + DJNZ $ + DEC A + JR NZ,.pause_loop + EXX DJNZ .loop RET +/* +HL = 1e00 + B = 1 +ATAPI_WAITPRT.LOOP +DE = 00FF +*/ ;[]================================================================[#51] @@ -807,6 +824,7 @@ ATAPI_GET_ERROR_REG: ATAPI_WAITPRT: LD DE,256*IDE.CtrlByte.Busy + 0 .Custom: LD B,100 LD HL,#0000 + ; .LOOP: LD A,high IDE.Read.Status IN A,(low IDE.Read.Status) CP #FF @@ -819,6 +837,7 @@ ATAPI_WAITPRT: LD DE,256*IDE.CtrlByte.Busy + 0 .NEXT_TRY: DEC L JR NZ,.LOOP DEC H + ; 15615 JR NZ,.LOOP DJNZ .LOOP .error: SCF diff --git a/src/bios/exp/FUNC_4x.ASM b/src/bios/exp/FUNC_4x.ASM index bb8773f..6a01b9f 100644 --- a/src/bios/exp/FUNC_4x.ASM +++ b/src/bios/exp/FUNC_4x.ASM @@ -382,30 +382,55 @@ HD_WR_LOOP: LD HL,#C000 ; !HARDCODE JR HD_WR_L2 -;!FIXIT пока работает только с одним каналом (по-старому) +;-----------------------------------------------------------------------; FN_HDD_RECAL: + ; !TEST ;[ ] работа с предварительно выбранным HDD + LD BC,IDE.Read.Control + IN A,(C) + PUSH AF + ; LD A,IDE.Drive.Master LD BC,IDE.Write.DeviceHead OUT (C),A LD A,IDE.CMD.ATA.ExecuteDeviceDiagnostic CALL HD_CMD_EXE - ;AND A - CP IDE.CtrlByte.Error - RET Z + ; !TEST работа с предварительно выбранным HDD + POP DE + ; + RET C LD BC,IDE.Read.Error IN A,(C) - CP 1 ; !HARDCODE + ; !TEST работа с предварительно выбранным HDD + LD BC,IDE.Write.DeviceHead + OUT (C),D + ; + AND #7F + DEC A RET Z SCF - RET + RET + +; Diagnostic Codes +; +; Code Description +; #01 Device 0 passed, Device 1 passed or not present +; #00 Device 0 failed, Device 1 passed or not present +; #81 Device 1 failed, Device 0 passed +; #80 Device 1 failed, Device 0 failed +; +; The meaning of values other than #01 and #81 are vendor specific and +; should be considered a diagnostic failed condition. +;-----------------------------------------------------------------------; + - ;????? глянуть ; RET C ; LD A,#1F ; RECALIBRATE ; CALL HD_CMD_EXE ; RET + + ; [x] 28/01/2024 работает со всеми каналами FN_HDD_TEST_IDE: LD E,#00 @@ -703,8 +728,8 @@ HD_WAIT: PUSH BC PUSH AF LD DE,0 -.loop: LD BC,IDE.Read.Status - IN A,(C) + LD BC,IDE.Read.Status +.loop: IN A,(C) AND IDE.CtrlByte.Busy JR Z,.EXIT DEC DE diff --git a/src/bios/exp/FUNC_CMOS.ASM b/src/bios/exp/FUNC_CMOS.ASM index 34e7635..0e7fd31 100644 --- a/src/bios/exp/FUNC_CMOS.ASM +++ b/src/bios/exp/FUNC_CMOS.ASM @@ -7,7 +7,7 @@ ENDM ; -;!FIXIT по доке на функцию должен перед выходом CF ставиться +; не менять CF CMOS_EMU_WR: PUSH DE @@ -25,7 +25,6 @@ CMOS_EMU_WR: ; ; запись в CMOS -;!FIXIT переделать по доке на Даллас и запись в ячейки часов CMOS_WR: ; [x] _mCMOS_MAX_TEST ; @@ -38,7 +37,7 @@ CMOS_WR: ; [x] RET ; -;!FIXIT по доке на функцию должен перед выходом CF ставиться +; не менять CF CMOS_EMU_RD: PUSH DE LD C,SLOT3 IN B,(C) diff --git a/src/bios/exp/FUNC_LOW_PRINT.ASM b/src/bios/exp/FUNC_LOW_PRINT.ASM index f3a9f37..c0c0467 100644 --- a/src/bios/exp/FUNC_LOW_PRINT.ASM +++ b/src/bios/exp/FUNC_LOW_PRINT.ASM @@ -1295,7 +1295,7 @@ LP_SCROLL_UP: DEC E ; Вход : ; D - верхняя строка ( от 0 ) ; E - число скроллируемых строк -LP_SCROLL_DN: DEC E ;!FIXIT правильно? +LP_SCROLL_DN: DEC E RET Z CALL LP_OPEN_PG ; diff --git a/src/bios/rom/ROM.asm b/src/bios/rom/ROM.asm index 55a3fdb..e9a3cb4 100644 --- a/src/bios/rom/ROM.asm +++ b/src/bios/rom/ROM.asm @@ -354,7 +354,6 @@ _SW_ROM EQU SW_ROM ; ;--------------------------------------- ; _mInfoBLOCK #3FC6-$,#FF -;!FIXIT переделать ПЗУ трдоса и спектрумов под правильный вызов функций биоса (а не вместо функций 4x функции 0x) ; или можно добавить функции ; TRDOS_HD_CMD: ; ; LD A,C @@ -377,7 +376,6 @@ _SW_ROM EQU SW_ROM ;--------------------------------------- -;!FIXIT переделать ПЗУ трдоса и спектрумов под правильный вызов функций биоса (а не вместо функций 4x функции 0x) ;--------[ From TR-DOS to HDD part2]-------- _mInfoBLOCK #3FD8-$,#FF TRDOS_HD_CMD: diff --git a/src/bios/rom/SETUP/MAIN.asm b/src/bios/rom/SETUP/MAIN.asm index 9675598..aba9166 100644 --- a/src/bios/rom/SETUP/MAIN.asm +++ b/src/bios/rom/SETUP/MAIN.asm @@ -550,9 +550,6 @@ INSTALL: OUT (SLOT3),A RET -;BUILD: -; db ', BIOS v', Disk_subsystem_ver_txt,0 ; !FIXIT может воткнуть вместе с msgStrings ? - RESTART_ID: .str: DZ "RESTART" .size EQU $ - RESTART_ID.str @@ -1063,10 +1060,10 @@ FDSTART: PUSH BC LD A,msgStrings.bootFdd CALL POSTMSG POP AF - CALL FDD_5x_RESET + CALL FDD_5x_RESET POP BC RET C - JP OS_LOAD + JR OS_LOAD ; CDSTART: LD A,B ; [ ] 15/02/2025 boot from ATAPI OR DRIVE_CODES.SPRINTER.ATAPI @@ -1918,7 +1915,7 @@ MAIN_END_CODE_ADDRESS EQU $-1 ; OUT (SLOT3),A ; ; ; ;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23 -; ;!FIXIT ; [ ] free zx pages! переделать на вызов FREE_ZX_PAGES.INIT_vROM +; [ ] free zx pages! переделать на вызов FREE_ZX_PAGES.INIT_vROM ; LD A,ACEX.vROM.BASIC_128 ; ROM-ID - BASIC 128 ; LD B,#42 ;!HARDCODE page ; CALL SET_PORTS diff --git a/src/bios/rom/SETUP/SETTINGS.asm b/src/bios/rom/SETUP/SETTINGS.asm index e436937..45411b0 100644 --- a/src/bios/rom/SETUP/SETTINGS.asm +++ b/src/bios/rom/SETUP/SETTINGS.asm @@ -566,7 +566,7 @@ PITEM: LD E,(IY+MenusItem.Column) ; x-coor jp POSTMSG ELSE -; !FIXIT вызовы процедур биоса надеются на то, что некоторые регистры не портятся +; вызовы процедур биоса надеются на то, что некоторые регистры не портятся ; HL - item's address PITEM: LD E,(HL) ; x-coordinate INC HL diff --git a/src/bios/rom/ZX/ZX_MENU.ASM b/src/bios/rom/ZX/ZX_MENU.ASM index d6ef0f0..32a8234 100644 --- a/src/bios/rom/ZX/ZX_MENU.ASM +++ b/src/bios/rom/ZX/ZX_MENU.ASM @@ -566,7 +566,7 @@ SPRINTER_reset: ;***************************** ; *** MENU UTILITES *** ;***************************** -;!FIXIT это запуск c:\disk.trd - не думаю, что это нужно, можно заменить +;!FIXIT BIOS SIZE. это запуск c:\disk.trd - не думаю, что это нужно, можно заменить RUN_DISK_TRD: LD HL,C_DISK_C CALL CALL_DOS1 diff --git a/src/bios/shared/RECOVERY.IMG b/src/bios/shared/RECOVERY.IMG index 6cd1edd96b1fc494af153ed373242fa5a5d0b766..5d8f5ba540a86c4942ebdbc516650cd7d6e68f47 100644 GIT binary patch delta 2909 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