FN_HDD_RECAL: работа со всеми каналами IDE

ATAPI_5x_RESET: переделана пауза, чтоб убрать EI
Обновлён recovery.img
This commit is contained in:
Tolik 2025-04-23 02:42:10 +10:00
parent 6f588ed8bb
commit fdad365528
12 changed files with 68 additions and 30 deletions

@ -1 +1 @@
Subproject commit 4a5753ea2c090485263117929d6a734d4a669ec4
Subproject commit be6067585059da92ec2674091bedf341e9219f09

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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
;

View File

@ -354,7 +354,6 @@ _SW_ROM EQU SW_ROM
;
;---------------------------------------
; _mInfoBLOCK #3FC6-$,#FF
;!FIXIT ¯¥à¥¤¥« âì <20>‡“ âà¤®á  ¨ ᯥªâà㬮¢ ¯®¤ ¯à ¢¨«ì­ë© ¢ë§®¢ ä㭪権 ¡¨®á  (  ­¥ ¢¬¥áâ® ä㭪権 4x ä㭪樨 0x)
; ¨«¨ ¬®¦­® ¤®¡ ¢¨âì ä㭪樨
; TRDOS_HD_CMD:
; ; LD A,C
@ -377,7 +376,6 @@ _SW_ROM EQU SW_ROM
;---------------------------------------
;!FIXIT ¯¥à¥¤¥« âì <20>‡“ âà¤®á  ¨ ᯥªâà㬮¢ ¯®¤ ¯à ¢¨«ì­ë© ¢ë§®¢ ä㭪権 ¡¨®á  (  ­¥ ¢¬¥áâ® ä㭪権 4x ä㭪樨 0x)
;--------[ From TR-DOS to HDD part2]--------
_mInfoBLOCK #3FD8-$,#FF
TRDOS_HD_CMD:

View File

@ -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

View File

@ -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

View File

@ -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

Binary file not shown.