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 6cd1edd..5d8f5ba 100644 Binary files a/src/bios/shared/RECOVERY.IMG and b/src/bios/shared/RECOVERY.IMG differ