This commit is contained in:
Tolik 2025-03-01 06:48:37 +10:00
parent 1fa6c70b51
commit 29df4ae54f
3 changed files with 54 additions and 19 deletions

View File

@ -50,6 +50,7 @@ OPEN_FN: ;!TEST Current Dir ;[x] 15/10/23
LD (IY+_sFM.ACCESS_MODE),A
LD A,(TASK)
LD (IY+_sFM.TASK_NUM),A
;!FIXIT ®¯â¨¬¨§­ãâì âãâ § ­ã«¥­¨¥
XOR A
LD (IY+_sFM.OptimizedClusters),A
LD (IY+_sFM.KnownCluster_L),A

View File

@ -1 +1 @@
17
22

View File

@ -322,7 +322,12 @@ Init: PUSH IY
; RET NC
; LD A,DSS_Error.drv.UNKNOWN_FORMAT
; RET
;
; ¯¥à¥¤¥« âì âã⠯஢¥àªã ­  à §¬¥à ᥪâ®à ?
;HL:IX - SECTOR
; DE - ADDRESS
; B - COUNTER
; A - HDD LOG NUMBER
SelectDrive: PUSH DE
PUSH HL
;
@ -333,19 +338,21 @@ SelectDrive: PUSH DE
;
LOGDRV_ENTRY_FIND LOGDRV
;
; [ ] custom sector size
CALL CHECK_IDE_SECTOR_SIZE
LD A,DSS_Error.sys.UNKNOWN_FORMAT
JR C,.error_pop
;
;
LD E,(IY+LOGDRV.SECTOR_OFFSET)
LD D,(IY+LOGDRV.SECTOR_OFFSET+1)
ADD IX,DE
LD E,(IY+LOGDRV.SECTOR_OFFSET+2)
LD D,(IY+LOGDRV.SECTOR_OFFSET+3)
; ; [ ] custom sector size
; CALL CHECK_IDE_SECTOR_SIZE
; LD A,DSS_Error.sys.UNKNOWN_FORMAT
; JR C,.error_pop
; ;
; ;
; LD E,(IY+LOGDRV.SECTOR_OFFSET)
; LD D,(IY+LOGDRV.SECTOR_OFFSET+1)
; ADD IX,DE
; LD E,(IY+LOGDRV.SECTOR_OFFSET+2)
; LD D,(IY+LOGDRV.SECTOR_OFFSET+3)
POP HL
ADC HL,DE
CALL .get_data
JR C,.error_pop2
;
POP DE
LD A,DSS_Error.drv.SECTOR_NOT_FOUND
RET C
@ -354,8 +361,23 @@ SelectDrive: PUSH DE
RET
;
.error_pop: POP HL
POP DE
.error_pop2: POP DE
RET
;
.get_data: ; [ ] custom sector size
CALL CHECK_IDE_SECTOR_SIZE
LD A,DSS_Error.sys.UNKNOWN_FORMAT
RET C
;
LD E,(IY+LOGDRV.SECTOR_OFFSET)
LD D,(IY+LOGDRV.SECTOR_OFFSET+1)
ADD IX,DE
LD E,(IY+LOGDRV.SECTOR_OFFSET+2)
LD D,(IY+LOGDRV.SECTOR_OFFSET+3)
ADC HL,DE
LD A,DSS_Error.sys.SECTOR_NOT_FOUND
RET
; 00 - GET DEVICE PARAMETERS
@ -620,19 +642,29 @@ MediaCheck: PUSH IY
;
POP AF ; ‚®ááâ ­ ¢«¨¢ ¥¬ CF ¨ ª®¤ ®è¨¡ª¨ UNKNOWN_FORMAT, ¥á«¨ CF=1
POP IY
RET C
RET C
XOR A
RET
;
.Reinit: LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER)
.Reinit: LD A,DSS_MAX_DRIVES_AMOUNT - 1 ; ®£à ­¨ç¨â¥«ì, ç⮡ ­¥ ¤¥â¥ªâ¨âì ¡®«ìè¥ 1 à §¤¥« 
LD (Init.count),A
LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER)
LD (CURRENT_DRIVE.Number),A
LD (LOGDRV_OFFSET),IY
;RES 1,(IY + LOGDRV.MediaParameters) - á¡à á뢠¥âáï ¢ DEFINE_PARTITIONS
PUSH IY
CALL DEFINE_PARTITIONS
POP AF
POP IY
RET C ; ‚®ááâ ­ ¢«¨¢ ¥¬ CF ¨ ª®¤ ®è¨¡ª¨ UNKNOWN_FORMAT, ¥á«¨ CF=1
LD A,#FF ;!HARDCODE drive changed
POP AF ; ‚®ááâ ­ ¢«¨¢ ¥¬ CF ¨ ª®¤ ®è¨¡ª¨ UNKNOWN_FORMAT, ¥á«¨ CF=1
CALL C,SelectDrive.get_data
POP IY
JR NC,.no_errors
;
CP DSS_Error.sys.UNKNOWN_FORMAT
SCF
RET Z
;
.no_errors: LD A,#FF ;!HARDCODE drive changed
OR A
RET
@ -644,8 +676,10 @@ CHECK_IDE_SECTOR_SIZE:
; LD HL,DSS_MAX_SECTOR_SIZE
; AND A
; SBC HL,DE
PUSH HL
LD HL,-DSS_MAX_SECTOR_SIZE - 1
ADD HL,DE
POP HL
RET
;