Ещё попытка починить первый заход на ZIP

This commit is contained in:
Tolik 2025-03-02 23:22:44 +10:00
parent 90bb74daac
commit 8e8d43a9d5
10 changed files with 63 additions and 59 deletions

@ -1 +1 @@
Subproject commit 2b1e30c6108f0a5c271f84558e1e5f804a6d623a Subproject commit 60b5ff6a74b57614b1f54fbe5611585cd46582ab

View File

@ -23,13 +23,15 @@
LUA PASS1 LUA PASS1
local date, month, year = Get_date_RU(sj.get_define("__DATE__")) local date, month, year = Get_date_RU(sj.get_define("__DATE__"))
BuildDate = "'" .. date .. "." .. month .. "." .. year .. "'" BuildDate = "'" .. date .. "." .. month .. "." .. year .. "'"
BuildYear = "'" .. year .. "'"
sj.insert_define("BUILD_DATE", BuildDate) sj.insert_define("BUILD_DATE", BuildDate)
sj.insert_define("BUILD_YEAR", BuildYear)
ENDLUA ENDLUA
LUA ALLPASS LUA ALLPASS
sj.insert_define("BUILD_DATE", BuildDate) sj.insert_define("BUILD_DATE", BuildDate)
sj.insert_define("BUILD_YEAR", BuildYear)
ENDLUA ENDLUA
IF PACKED_MAIN IF PACKED_MAIN
;------------[MAIN prebuild]------------; ;------------[MAIN prebuild]------------;
LUA PASS1 LUA PASS1

View File

@ -413,13 +413,14 @@ ATAPI_CHECK_MEDIA_CHANGED:
RRA RRA
LD A,BIOS.Error.ATAPI.UnitAttention LD A,BIOS.Error.ATAPI.UnitAttention
RET RET
; ;----------------------------------------------------------------------;
.noWait: EXX
;[ ] media changed
;----------------------------------------------------------------------;
ATAPI_CHECK_ERROR:
CALL ATAPI_GET_ERROR_REG CALL ATAPI_GET_ERROR_REG
EXX ;CP BIOS.Error.ATAPI.NoSence
CP BIOS.Error.ATAPI.NoSence ;JP Z,ATAPI_MEDIA_ERROR
JP Z,ATAPI_MEDIA_ERROR
; !FIXIT ᪮॥ ¢á¥£® ¦¥«¥§® âã⠢뤠á⠢ᥣ¤  Error.ATAPI.NoSence
CP BIOS.Error.ATAPI.NotReady CP BIOS.Error.ATAPI.NotReady
JP Z,ATAPI_MEDIA_ERROR JP Z,ATAPI_MEDIA_ERROR
CP BIOS.Error.ATAPI.UnitAttention CP BIOS.Error.ATAPI.UnitAttention
@ -491,7 +492,7 @@ EXEC_PACKET_COMMAND:
JR NC,.READY JR NC,.READY
; ;
.reset: LD BC,IDE.Write.Command .reset: LD BC,IDE.Write.Command
LD A,IDE.ATAPI.Reset LD A,IDE.CMD.ATAPI.Reset
OUT (C),A OUT (C),A
; ;
LD B,#80 LD B,#80
@ -528,7 +529,7 @@ EXEC_PACKET_COMMAND:
LD BC,IDE.Write.ByteCountHigh LD BC,IDE.Write.ByteCountHigh
OUT (C),D OUT (C),D
LD BC,IDE.Write.Command LD BC,IDE.Write.Command
LD A,IDE.ATAPI.Packet LD A,IDE.CMD.ATAPI.Packet
OUT (C),A OUT (C),A
LD C,H ; ¯à¨§­ ª ⮣®, çâ® ®è¨¡ª  ᬥ­ë ­®á¨â¥«ï ¤®«¦­  ®¡à ¡ â뢠âìáï ¢ EXEC_PACKET_COMMAND LD C,H ; ¯à¨§­ ª ⮣®, çâ® ®è¨¡ª  ᬥ­ë ­®á¨â¥«ï ¤®«¦­  ®¡à ¡ â뢠âìáï ¢ EXEC_PACKET_COMMAND
CALL ATAPI_WAITPRT CALL ATAPI_WAITPRT
@ -592,7 +593,7 @@ EXEC_PACKET_COMMAND:
EXX EXX
RET Z ; ¢ë室, ¥á«¨ ®è¨¡ª  ®¡à ¡ â뢠¥âáï ­¥ ¢ EXEC_PACKET_COMMAND RET Z ; ¢ë室, ¥á«¨ ®è¨¡ª  ®¡à ¡ â뢠¥âáï ­¥ ¢ EXEC_PACKET_COMMAND
; ;
JP ATAPI_CHECK_MEDIA_CHANGED.noWait JP ATAPI_CHECK_ERROR
;====== IF DATA REQUEST ===============================================; ;====== IF DATA REQUEST ===============================================;
.data_request: IN A,(SLOT3) .data_request: IN A,(SLOT3)
EX AF,AF' ;>-----------> \ EX AF,AF' ;>-----------> \
@ -743,13 +744,16 @@ ATAPI_READ_CAPACITY_DATA:
CP BIOS.Error.ATAPI.NotReady CP BIOS.Error.ATAPI.NotReady
SCF SCF
RET NZ RET NZ
;
PUSH BC
CALL ATAPI_MEDIA_ERROR CALL ATAPI_MEDIA_ERROR
CP BIOS.Error.ATAPI.NotReady CP BIOS.Error.ATAPI.NotReady
SCF SCF
POP BC
RET NZ RET NZ
; ;
CPI CPI
RET PO RET PO ;áçñâ稪
; ;
LD HL,0 LD HL,0
.pause: DEC HL .pause: DEC HL
@ -779,21 +783,24 @@ ATAPI_MEDIA_ERROR:
LD DE,SYS_PAGE.SHARED_BUFFER_256b LD DE,SYS_PAGE.SHARED_BUFFER_256b
CALL ATAPI_REQUEST_SENSE.FN CALL ATAPI_REQUEST_SENSE.FN
; ;
LD A,(SYS_PAGE.SHARED_BUFFER_256b + 2) ; SenceKey. 06 - UNIT ATTENTION LD A,(SYS_PAGE.SHARED_BUFFER_256b + 2) ; SenceKey
CP 2 ; SenceKey. 02 - NOT READY CP 2 ; NOT READY
JR Z,.Not_Ready JR Z,.Not_Ready
CP 6 CP 6 ; UNIT ATTENTION
JR NZ,.unkn_error JR NZ,.unkn_error
; ;
LD A,(SYS_PAGE.SHARED_BUFFER_256b + 12) ; AdditionalSenceKey. #28 LD A,(SYS_PAGE.SHARED_BUFFER_256b + 12) ; AdditionalSenceKey
CP #28 CP #28 ; NOT READY TO READY TRANSITION
JR NZ,.unkn_error JR Z,.MedCh3
CP #29 ; POWER ON, RESET OR BUS DEVICE RESET OCCURRED
JR Z,.MedChanged
JR .unkn_error
; ;
LD A,(SYS_PAGE.SHARED_BUFFER_256b + 13) ; AdditionalSenseCodeQualifier. 0 .MedCh3: LD A,(SYS_PAGE.SHARED_BUFFER_256b + 13) ; AdditionalSenseCodeQualifier. 0
AND A AND A
JR NZ,.unkn_error JR NZ,.unkn_error
; ;
LD A,(IY + IDE.HDD_INIT_TABLE.MediaParameters) .MedChanged: LD A,(IY + IDE.HDD_INIT_TABLE.MediaParameters)
OR %0000'0011 OR %0000'0011
LD (IY + IDE.HDD_INIT_TABLE.MediaParameters),A LD (IY + IDE.HDD_INIT_TABLE.MediaParameters),A
; ;
@ -826,11 +833,15 @@ ATAPI_MEDIA_ERROR:
; ;
.Not_Ready: LD A,(SYS_PAGE.SHARED_BUFFER_256b + 12) ; AdditionalSenceKey .Not_Ready: LD A,(SYS_PAGE.SHARED_BUFFER_256b + 12) ; AdditionalSenceKey
LD C,BIOS.Error.ATAPI.MediumError ; ­¥â ­®á¨â¥«ï LD C,BIOS.Error.ATAPI.MediumError ; ­¥â ­®á¨â¥«ï
;!TODO
; 06,00 - NO REFERENCE POSITION FOUND (media may be upside down)
; 3A - MEDIUM NOT PRESENT
;
CP 4 CP 4
JR NZ,.exit JR NZ,.exit
; [ ] !(test for ZIP) ; [ ] !(test for ZIP)
LD A,(SYS_PAGE.SHARED_BUFFER_256b + 13) ; AdditionalSenseCodeQualifier LD A,(SYS_PAGE.SHARED_BUFFER_256b + 13) ; AdditionalSenseCodeQualifier
CP 1 CP 1 ; LOGICAL DRIVE NOT READY - IN PROGRESS OF BECOMING READY
JR NZ,.exit JR NZ,.exit
; ;
; ¨¤ñâ ¨­¨æ¨ «¨§ æ¨ï ; ¨¤ñâ ¨­¨æ¨ «¨§ æ¨ï

View File

@ -353,10 +353,10 @@ RW_ATA_SECTORs: LD C,IDE.Device.HDD
LD XL,0 LD XL,0
LD XH,A LD XH,A
LD BC,IDE.Write.Command LD BC,IDE.Write.Command
LD A,IDE.ATA.WriteSectorsWithRetry LD A,IDE.CMD.ATA.WriteSectorsWithRetry
JR C,.set_command ; CF = r/w JR C,.set_command ; CF = r/w
; ;
LD A,IDE.ATA.ReadSectorsWithRetry LD A,IDE.CMD.ATA.ReadSectorsWithRetry
.set_command: OUT (C),A .set_command: OUT (C),A
EX AF,AF' EX AF,AF'
EXX EXX
@ -455,7 +455,7 @@ WRITE_ATA_SECTORs:
LD XL,0 LD XL,0
LD XH,A LD XH,A
LD BC,IDE.Write.Command LD BC,IDE.Write.Command
LD A,IDE.ATA.WriteSectorsWithRetry LD A,IDE.CMD.ATA.WriteSectorsWithRetry
OUT (C),A OUT (C),A
; SAVE HL?! ; SAVE HL?!
EXX EXX
@ -547,7 +547,7 @@ ATA_5x_VERIFY: PUSH IY
CALL PRESET CALL PRESET
POP HL POP HL
LD BC,IDE.Write.Command LD BC,IDE.Write.Command
LD A,IDE.ATA.ReadVerifySectorsWithRetry LD A,IDE.CMD.ATA.ReadVerifySectorsWithRetry
OUT (C),A OUT (C),A
LD BC,IDE.Read.Status LD BC,IDE.Read.Status
IN A,(C) IN A,(C)

View File

@ -228,7 +228,7 @@ FN_HDD_PREPARE: ;
.SetCommand: .SetCommand:
LD BC,IDE.Write.Command LD BC,IDE.Write.Command
LD A,IDE.ATA.ReadSectorsWithRetry LD A,IDE.CMD.ATA.ReadSectorsWithRetry
; OUT (C),A ; OUT (C),A
AND A AND A
RET RET
@ -276,7 +276,7 @@ FN_HDD_READ:
SAFE_PORTY SAFE_PORTY
; ;
LD BC,IDE.Write.Command LD BC,IDE.Write.Command
LD A,IDE.ATA.ReadSectorsWithRetry LD A,IDE.CMD.ATA.ReadSectorsWithRetry
OUT (C),A OUT (C),A
.L2: WAIT_HDD .L2: WAIT_HDD
;BIT IDE.CtrlBit.DataRequest,A ;BIT IDE.CtrlBit.DataRequest,A
@ -348,7 +348,7 @@ FN_HDD_WRITE:
EX AF,AF' EX AF,AF'
LD BC,IDE.Write.Command LD BC,IDE.Write.Command
LD A,IDE.ATA.WriteSectorsWithRetry LD A,IDE.CMD.ATA.WriteSectorsWithRetry
OUT (C),A OUT (C),A
HD_WR_L2: HD_WR_L2:
@ -387,7 +387,7 @@ FN_HDD_RECAL:
LD A,IDE.Drive.Master LD A,IDE.Drive.Master
LD BC,IDE.Write.DeviceHead LD BC,IDE.Write.DeviceHead
OUT (C),A OUT (C),A
LD A,IDE.ATA.ExecuteDeviceDiagnostic LD A,IDE.CMD.ATA.ExecuteDeviceDiagnostic
CALL HD_CMD_EXE CALL HD_CMD_EXE
;AND A ;AND A
CP IDE.CtrlByte.Error CP IDE.CtrlByte.Error
@ -624,7 +624,7 @@ FN_HDD_INIT:
; ;
.L3: WAIT_HDD .L3: WAIT_HDD
LD BC,IDE.Write.Command LD BC,IDE.Write.Command
LD A,IDE.ATA.IdentifyDevice ;!FIXIT ¯¥à¥¤¥« âì LD A,IDE.CMD.ATA.IdentifyDevice ;!FIXIT ¯¥à¥¤¥« âì
OUT (C),A OUT (C),A
WAIT_HDD WAIT_HDD
AND IDE.CtrlByte.DataRequest AND IDE.CtrlByte.DataRequest
@ -690,7 +690,7 @@ FN_HDD_INIT:
OUT (C),A OUT (C),A
LD A,D LD A,D
OUT (SLOT3),A OUT (SLOT3),A
LD A,IDE.ATA.InitializeDeviceParameters ; SET HDD PARAMETERS LD A,IDE.CMD.ATA.InitializeDeviceParameters ; SET HDD PARAMETERS
;CALL HD_CMD_EXE ;CALL HD_CMD_EXE
;RET ;RET
HD_CMD_EXE: HD_CMD_EXE:

View File

@ -456,7 +456,7 @@ PIC_FN8:
;************************************************** ;**************************************************
; ‚뢮¤ á¯à ©â  ­  íªà ­ ; ‚뢮¤ á¯à ©â  ­  íªà ­
; HL - £®à¨§®â «ì, dE - ¢¥à⨪ «ì ; HL - £®à¨§®â «ì, DE - ¢¥à⨪ «ì
; A',HL' -  ¤à¥á ¤ ­­ëå ; A',HL' -  ¤à¥á ¤ ­­ëå
PIC_FN9: PIC_FN9:
@ -577,7 +577,7 @@ GENERATE_PAL1: XOR A
JR Z,.PP_NO2 JR Z,.PP_NO2
LD L,A LD L,A
.PP_NO2: BIT 2,E ; GREEN .PP_NO2: BIT 2,E ; GREEN
JR Z,.PP_NO3 JR Z,.PP_NO6 ;JR Z,.PP_NO3
LD B,A LD B,A
.PP_NO3: JR .PP_NO6 .PP_NO3: JR .PP_NO6
; ;

View File

@ -577,7 +577,7 @@ GENERATE_PAL1: XOR A
JR Z,.PP_NO2 JR Z,.PP_NO2
LD L,A LD L,A
.PP_NO2: BIT 2,E ; GREEN .PP_NO2: BIT 2,E ; GREEN
JR Z,.PP_NO3 JR Z,.PP_NO6
LD B,A LD B,A
.PP_NO3: JR .PP_NO6 .PP_NO3: JR .PP_NO6
; ;

View File

@ -128,7 +128,7 @@ WAIT:
; SS_SECT EQU #3E ; SS_SECT EQU #3E
MACRO PAUSE_DJNZ num MACRO PAUSE_DJNZ num
IF num<255 IF num<256
LD B,num LD B,num
.loop: DJNZ .loop .loop: DJNZ .loop
ELSE ELSE
@ -304,7 +304,7 @@ AUTODETECTING: CALL DETECTORS.CheckChanel
; ;
.IDE_ABSENT: LD A,IDE.Device.NONE .IDE_ABSENT: LD A,IDE.Device.NONE
LD (IDEDEV),A LD (IDEDEV),A
LD A,IDE.ATA.Nop LD A,IDE.CMD.ATA.Nop
LD BC,IDE.Write.Command LD BC,IDE.Write.Command
OUT (C),A OUT (C),A
DEC B DEC B
@ -415,7 +415,7 @@ IDESPEC: IN A,(SLOT3)
LD BC,IDE.Write.Counter LD BC,IDE.Write.Counter
ENDIF ENDIF
OUT (C),A OUT (C),A
LD A,IDE.ATA.InitializeDeviceParameters LD A,IDE.CMD.ATA.InitializeDeviceParameters
CALL IDE_CMD CALL IDE_CMD
LD C,(IY+IDE.HDD_INIT_TABLE.SectorsPerTrack) ; Sector per track LD C,(IY+IDE.HDD_INIT_TABLE.SectorsPerTrack) ; Sector per track
LD B,0 LD B,0
@ -456,19 +456,11 @@ IDESPEC: IN A,(SLOT3)
CP BIOS.Error.ATAPI.UnitAttention CP BIOS.Error.ATAPI.UnitAttention
JR Z,IDESPEC.END JR Z,IDESPEC.END
; ;
;CP BIOS.Error.ATAPI.NotReady
;SCF
;JR NZ,.set_sector ; «î¡ ï ­¥¯®­ïâ­ ï ®è¨¡ª  - ­¥â ­®á¨â¥«ï
HALT HALT
DJNZ .get_error_loop DJNZ .get_error_loop
; ;
; LD HL,ATAPI_CMD_PACKET.REQUEST_SENSE
; LD DE,IDENTIFY_DEVICE_BUFFER.ReservedWord224 ; ¯à®áâ® ­ã¦¥­ ¡ë« ¡ãä¥à
; CALL EXEC_PACKET_COMMAND.start
; [ ] sector size ATAPI ; [ ] sector size ATAPI
.s_size: ;LD HL,ATAPI_CMD_PACKET.READ_CAPACITY_DATA .s_size: LD DE,IDENTIFY_DEVICE_BUFFER.ReservedWord224 ; ¯à®áâ® ­ã¦¥­ ¡ë« ¡ãä¥à
LD DE,IDENTIFY_DEVICE_BUFFER.ReservedWord224 ; ¯à®áâ® ­ã¦¥­ ¡ë« ¡ãä¥à
;CALL EXEC_PACKET_COMMAND.start_sys_page
CALL ATAPI_READ_CAPACITY_DATA CALL ATAPI_READ_CAPACITY_DATA
; ;
.set_sector: LD HL,#FFFF .set_sector: LD HL,#FFFF
@ -485,7 +477,6 @@ IDESPEC: IN A,(SLOT3)
.No_Media: LD (IY+IDE.HDD_INIT_TABLE.SectorSize),H .No_Media: LD (IY+IDE.HDD_INIT_TABLE.SectorSize),H
LD (IY+IDE.HDD_INIT_TABLE.SectorSize + 1),L LD (IY+IDE.HDD_INIT_TABLE.SectorSize + 1),L
RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media
;LD (IY+IDE.HDD_INIT_TABLE.MediaParameters),%0000'0001 ; !HARDCODE ATAPI ¯®ª  ¢á¥£¤  removable
; ;
JR IDESPEC.END JR IDESPEC.END
/////////////////////////////////////////////////////////////////////[^] /////////////////////////////////////////////////////////////////////[^]
@ -681,7 +672,7 @@ RESET_Slave_ATAPI:
OUT (C),A OUT (C),A
PAUSE_DJNZ 16 PAUSE_DJNZ 16
LD BC,IDE.Write.Command LD BC,IDE.Write.Command
LD A,IDE.ATAPI.Reset LD A,IDE.CMD.ATAPI.Reset
OUT (C),A OUT (C),A
PAUSE_DJNZ 16 PAUSE_DJNZ 16
LD A,IDE.Drive.Master LD A,IDE.Drive.Master
@ -750,7 +741,7 @@ DETECTORS:
;-------; ;-------;
; CHECK BY EXECUTING NOP COMMAND AND WAIT. ; CHECK BY EXECUTING NOP COMMAND AND WAIT.
; Exit: CF - No device ; Exit: CF - No device
.NOP_Check: LD E,IDE.ATA.Nop .NOP_Check: LD E,IDE.CMD.ATA.Nop
LD BC,IDE.Write.Command LD BC,IDE.Write.Command
OUT (C),E OUT (C),E
@ -786,7 +777,7 @@ DETECTORS:
; Exit: CF - No device ; Exit: CF - No device
; NC and ZF - ATA ; NC and ZF - ATA
; NC and NZ - ATAPI ; NC and NZ - ATAPI
.IdentDevCheck: LD E,IDE.ATA.IdentifyDevice .IdentDevCheck: LD E,IDE.CMD.ATA.IdentifyDevice
LD BC,IDE.Write.Command LD BC,IDE.Write.Command
OUT (C),E OUT (C),E
; ;
@ -820,7 +811,7 @@ DETECTORS:
; ATAPI or Absent ; ATAPI or Absent
; Exit: CF - No device ; Exit: CF - No device
; NC - ATAPI ; NC - ATAPI
.IdentPDevChk: LD E,IDE.ATAPI.IdentifyPacketDevice .IdentPDevChk: LD E,IDE.CMD.ATAPI.IdentifyPacketDevice
LD BC,IDE.Write.Command LD BC,IDE.Write.Command
OUT (C),E OUT (C),E
; ;
@ -871,7 +862,7 @@ SetUP_CHANELS:
.CMD: CALL SELECT_IDE .CMD: CALL SELECT_IDE
PAUSE_DJNZ 32 PAUSE_DJNZ 32
LD BC,IDE.Write.Command LD BC,IDE.Write.Command
LD H,IDE.ATA.Nop LD H,IDE.CMD.ATA.Nop
OUT (C),H OUT (C),H
PAUSE_DJNZ 32 PAUSE_DJNZ 32
; Disable INTRQ ; Disable INTRQ
@ -889,9 +880,9 @@ SetUP_CHANELS:
/////////////////////////////////////////////////////////////////////[v] /////////////////////////////////////////////////////////////////////[v]
; DisableWriteCache: ; DisableWriteCache:
; LD BC,IDE.Write.Features ; LD BC,IDE.Write.Features
; LD A,IDE.ATA.SetFeatures.DisableWriteCache ; LD A,IDE.CMD.ATA.SetFeatures.DisableWriteCache
; OUT (C),A ; OUT (C),A
; LD A,IDE.ATA.SetFeatures ; LD A,IDE.CMD.ATA.SetFeatures
; JP IDE_CMD ; JP IDE_CMD
/////////////////////////////////////////////////////////////////////[^] /////////////////////////////////////////////////////////////////////[^]
@ -902,7 +893,7 @@ SetUP_CHANELS:
; LD BC,IDE.Write.Counter ; LD BC,IDE.Write.Counter
; XOR A ; XOR A
; OUT (C),A ; OUT (C),A
; LD A,IDE.ATA.Idle ; LD A,IDE.CMD.ATA.Idle
; JP IDE_CMD ; JP IDE_CMD
/////////////////////////////////////////////////////////////////////[^] /////////////////////////////////////////////////////////////////////[^]
@ -910,9 +901,9 @@ SetUP_CHANELS:
/////////////////////////////////////////////////////////////////////[v] /////////////////////////////////////////////////////////////////////[v]
; DISABLE_8bit: ; DISABLE_8bit:
; LD BC,IDE.Write.Features ; LD BC,IDE.Write.Features
; LD A,IDE.ATA.SetFeatures.Disable8bit ; LD A,IDE.CMD.ATA.SetFeatures.Disable8bit
; OUT (C),A ; OUT (C),A
; LD A,IDE.ATA.SetFeatures ; LD A,IDE.CMD.ATA.SetFeatures
; JP IDE_CMD ; JP IDE_CMD
/////////////////////////////////////////////////////////////////////[^] /////////////////////////////////////////////////////////////////////[^]

Binary file not shown.

View File

@ -41,6 +41,6 @@ bitstream_ver_hex EQU CNF_ID.VER*256+CNF_ID.MOD
;--------------------------------------- ;---------------------------------------
;======================================= ;=======================================
DEFINE SPTeam_year '2024' DEFINE SPTeam_year BUILD_YEAR ;'2024'
DEFINE SetupVer '1.60' DEFINE SetupVer '1.60'
;--------------------------------------- ;---------------------------------------