This commit is contained in:
Tolik 2025-01-04 23:24:37 +10:00
parent 883bbf0aeb
commit 22f9ae494c
15 changed files with 183 additions and 93 deletions

View File

@ -163,7 +163,7 @@ MKDIR:
LD E,L LD E,L
INC DE INC DE
LD (HL),0 LD (HL),0
LD BC,512-65 ;!HARDCODE sector size LD BC,512-65 ;!HARDCODE ;!FIXIT ; [ ] sector size
LDIR LDIR
; ;
POP HL ; áâ à訩 ­®¬¥à ᥪâ®à  POP HL ; áâ à訩 ­®¬¥à ᥪâ®à 
@ -197,7 +197,7 @@ MKDIR:
JR Z,.skip_clean JR Z,.skip_clean
; ;
LD DE,CORE_BUFFERS.SECTOR_BUFFER+1 LD DE,CORE_BUFFERS.SECTOR_BUFFER+1
LD BC,511 ;!HARDCODE sector size LD BC,511 ;!HARDCODE ;!FIXIT ; [ ] sector size
LD (HL),0 LD (HL),0
LDIR LDIR
.skip_clean: ; .skip_clean: ;

View File

@ -110,7 +110,7 @@ READ: LD (.R_POINT),HL
; ;
EXX EXX
POP DE POP DE
LD HL,512 ;!HARDCODE sector size! LD HL,512 ;!HARDCODE ;!FIXIT ; [ ] sector size
AND A AND A
SBC HL,DE SBC HL,DE
LD B,H LD B,H

View File

@ -152,7 +152,7 @@ WRITE: ;!TEST ;!TODO 5/12/23 ; [ ]
EXX EXX
POP DE POP DE
JP C,.ERR1 JP C,.ERR1
LD HL,512 ;!HARDCODE sector size! LD HL,512 ;!HARDCODE ;!FIXIT ; [ ] sector size
AND A AND A
SBC HL,DE SBC HL,DE
LD B,H LD B,H

View File

@ -254,8 +254,9 @@ DEVICE EQU $
;+01 LONG SECTOR OFFSET ;+01 LONG SECTOR OFFSET
;+05 LONG SIZE IN SECTORS ;+05 LONG SIZE IN SECTORS
;+09 BYTE PARTITION RECORD NUMBER (in drive MBR) ;+09 BYTE PARTITION RECORD NUMBER (in drive MBR)
;+09 FREE ;+10 WORD Sector Size
;+15 ;+12 FREE
;
LOGDRV EQU DEVICE + DEVICE.End LOGDRV EQU DEVICE + DEVICE.End
.TBL_Entry EQU 16 .TBL_Entry EQU 16
.Size EQU DSS_MAX_DRIVES_AMOUNT * .TBL_Entry .Size EQU DSS_MAX_DRIVES_AMOUNT * .TBL_Entry
@ -264,6 +265,11 @@ LOGDRV EQU DEVICE + DEVICE.End
.SECTOR_OFFSET EQU 1 .SECTOR_OFFSET EQU 1
.SIZE_IN_SECTORS EQU 5 .SIZE_IN_SECTORS EQU 5
.PARTITION_RECORD_NUM EQU 9 .PARTITION_RECORD_NUM EQU 9
.SECTOR_SIZE EQU 10 ; word
.RemovableMedia EQU 12 ; bit0=1 removable, bit1=1 drive changed, bit7..2 reserved
.Reserved_1 EQU 13
.Reserved_1 EQU 14
.Reserved_1 EQU 15
; ‚•Ž„: L - «®£¨ç¥áª¨© ­®¬¥à ¢ â ¡«¨æ¥ ; ‚•Ž„: L - «®£¨ç¥áª¨© ­®¬¥à ¢ â ¡«¨æ¥
; ‚›•Ž„: IY - ­ ç «® § ¯¨á¨ ; ‚›•Ž„: IY - ­ ç «® § ¯¨á¨
; <20>Ž<EFBFBD>ˆ: HL, IY. HL<-->DE ; <20>Ž<EFBFBD>ˆ: HL, IY. HL<-->DE

View File

@ -1599,7 +1599,7 @@ SET_FAT32_CACHE_BLOCK_CHANGED_REGION:
JR Z,.set_region JR Z,.set_region
; ;
.loop: SLA H .loop: SLA H
AND A ;AND A
SUB L SUB L
JR NZ,.loop JR NZ,.loop
; ;
@ -1676,20 +1676,16 @@ WRITE_TO_FAT: LD DE,(CORE_BUFFERS.FatBuffer.END_CHAIN_CLUSTER_L) ;
INC HL ; ­®¬¥à ª« áâ¥à  INC HL ; ­®¬¥à ª« áâ¥à 
LD (HL),D LD (HL),D
.exit: ; .exit: ;
IF FAST_FAT_CASHE
; [ ] ã᪮७¨¥ à ¡®âë á ªí襬 FAT ; [ ] ã᪮७¨¥ à ¡®âë á ªí襬 FAT
CALL SET_FAT32_CACHE_BLOCK_CHANGED_REGION CALL SET_FAT32_CACHE_BLOCK_CHANGED_REGION
; ;
ENDIF
POP AF ; ¢®ááâ. ¯®àâ POP AF ; ¢®ááâ. ¯®àâ
POP HL POP HL
OUT (SLOT3),A OUT (SLOT3),A
IFN FAST_FAT_CASHE
; [x] 2/12/23 FAT ­¥ ¢á¥£¤  ¬®£ § ¯¨á âìáï ­  HDD ; [x] 2/12/23 FAT ­¥ ¢á¥£¤  ¬®£ § ¯¨á âìáï ­  HDD
LD A,#FF ;LD A,#FF
LD (CORE_BUFFERS.FatBuffer.CacheUpdated),A ;LD (CORE_BUFFERS.FatBuffer.CacheUpdated),A
; ;
ENDIF
; CF = 0 ; CF = 0
RET RET
; ;
@ -1862,7 +1858,6 @@ WRITE_FAT_TABLE:
LD B,E ; MAX ç¨á«® ᥪâ®à®¢ ¤«ï ç⥭¨ï ¢ ªíè LD B,E ; MAX ç¨á«® ᥪâ®à®¢ ¤«ï ç⥭¨ï ¢ ªíè
LD A,(CORE_BUFFERS.FatBuffer.SectorsPerFAT_H) LD A,(CORE_BUFFERS.FatBuffer.SectorsPerFAT_H)
LD (.sub_A),A LD (.sub_A),A
;LD DE,(CORE_BUFFERS.BootSector.SectorsPerFAT16) ; ᥪâ®à®¢ ­  FAT
LD DE,(CORE_BUFFERS.FatBuffer.SectorsPerFAT_L) LD DE,(CORE_BUFFERS.FatBuffer.SectorsPerFAT_L)
AND A AND A
LD A,C LD A,C
@ -1970,17 +1965,14 @@ WRITE_FAT_TABLE:
LD XL,E LD XL,E
; HL:IX - ᬥ饭¨¥ ¢­ãâਠࠧ¤¥«  ­  ­ ç «® ­ã¦­®£® ¡«®ª  FAT ; HL:IX - ᬥ饭¨¥ ¢­ãâਠࠧ¤¥«  ­  ­ ç «® ­ã¦­®£® ¡«®ª  FAT
LD A,(CORE_BUFFERS.FatBuffer.CacheUpdated) LD A,(CORE_BUFFERS.FatBuffer.CacheUpdated)
IF FAST_FAT_CASHE
CP #FF CP #FF
JR NZ,.SAVE_NOT_ALL_BLOCK JR NZ,.SAVE_NOT_ALL_BLOCK
ENDIF
; ;
LD DE,FATPAGE.cache ; ®âªã¤  LD DE,FATPAGE.cache ; ®âªã¤ 
LD A,(CORE_BUFFERS.FatBuffer.DRIVE) ; ­®¬¥à ¤¨áª  LD A,(CORE_BUFFERS.FatBuffer.DRIVE) ; ­®¬¥à ¤¨áª 
LD C,Dss.DRV.Write LD C,Dss.DRV.Write
JP ToDSS.DRV JP ToDSS.DRV
; ;
IF FAST_FAT_CASHE
.SAVE_NOT_ALL_BLOCK: .SAVE_NOT_ALL_BLOCK:
; A = CORE_BUFFERS.FatBuffer.CacheUpdated ; A = CORE_BUFFERS.FatBuffer.CacheUpdated
; HL:IX - ᬥ饭¨¥ ¢­ãâਠࠧ¤¥«  ­  ­ ç «® ­ã¦­®£® ¡«®ª  FAT ; HL:IX - ᬥ饭¨¥ ¢­ãâਠࠧ¤¥«  ­  ­ ç «® ­ã¦­®£® ¡«®ª  FAT
@ -2042,9 +2034,6 @@ WRITE_FAT_TABLE:
POP DE POP DE
POP AF POP AF
RET RET
; DJNZ .region_loop
; RET
ENDIF
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
; ;
;[x] fat32 ;!TEST ;[x] fat32 ;!TEST
@ -2390,7 +2379,6 @@ BLOCK_READ: LD (READ.PointerOnBuffer),IX
; ;
.ECL1: AND A .ECL1: AND A
RET RET
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
; [x] fat32 ; [x] fat32

View File

@ -31,7 +31,7 @@
; ­®¬¥à ¢¥àᨨ (0..9) ; ­®¬¥à ¢¥àᨨ (0..9)
VERS EQU 1 VERS EQU 1
; ­®¬¥à ¬®¤¨ä¨ª æ¨¨ (0..99) ; ­®¬¥à ¬®¤¨ä¨ª æ¨¨ (0..99)
MODF EQU 70 MODF EQU 71
; ­®¬¥à ¡¨«¤  (0..999) ; ­®¬¥à ¡¨«¤  (0..999)
BUILD EQU lua_BUILD BUILD EQU lua_BUILD
; ;

View File

@ -1 +1 @@
999 0

View File

@ -28,7 +28,6 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////
DEFINE CHANGE_FREE_CLU_AFTER_DEL 1 DEFINE CHANGE_FREE_CLU_AFTER_DEL 1
DEFINE FAST_FAT_CASHE 1
SERVICE_SECTORS: SERVICE_SECTORS:
.FAT12 EQU #0FEF .FAT12 EQU #0FEF
@ -94,6 +93,8 @@ FAT_CACHE:
;.Part_Mask_12 EQU ((1<<(.bytes_record_12*8)) / (.Size/2))-1 ;.Part_Mask_12 EQU ((1<<(.bytes_record_12*8)) / (.Size/2))-1
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////
; ;
DEFINE DSS_MAX_SECTOR_SIZE 512
DSS_MAX_DRIVES_AMOUNT EQU 26 DSS_MAX_DRIVES_AMOUNT EQU 26
DEFINE MAX_RAMDRIVES 16 DEFINE MAX_RAMDRIVES 16
DEFINE NeedSafePort_Y 1 DEFINE NeedSafePort_Y 1

View File

@ -289,16 +289,26 @@ SELHDD: PUSH DE
PUSH HL PUSH HL
; ;
LD L,A LD L,A
;
LOGDRV_ENTRY_FIND LOGDRV LOGDRV_ENTRY_FIND LOGDRV
; !HARDCODE ;
LD E,(IY+1) ; [ ] custorm sector size
LD D,(IY+2) CALL CHECK_IDE_SECTOR_SIZE
RLA
;
;
LD E,(IY+LOGDRV.SECTOR_OFFSET)
LD D,(IY+LOGDRV.SECTOR_OFFSET+1)
ADD IX,DE ADD IX,DE
LD E,(IY+3) LD E,(IY+LOGDRV.SECTOR_OFFSET+2)
LD D,(IY+4) LD D,(IY+LOGDRV.SECTOR_OFFSET+3)
POP HL POP HL
ADC HL,DE ADC HL,DE
LD A,(IY+0) ;DRIVE NUMBER ; [ ] custom sector size
;JR C,.exit
RRA
;
.exit: LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER)
POP DE POP DE
RET RET
@ -367,6 +377,16 @@ HFRTRAC LD A,DSS_Error.drv.GENERAL_FAILURE
; bit2 - reserved "0" (MAY BE OTHER) ; bit2 - reserved "0" (MAY BE OTHER)
; bit1 - reserved "0" (MAY BE OTHER) ; bit1 - reserved "0" (MAY BE OTHER)
; bit0 - Primary/Secondary Chanel ; bit0 - Primary/Secondary Chanel
; B - ;[ ] sector size ;!TODO
; 00 - undefined
; 01 - 128 bytes
; 02 - 256 bytes
; 04 - 512 bytes
; 08 - 1024 bytes
; 16 - 2048 bytes
; 32 - 4096 bytes
; 64 - 8192 bytes
; 128 - 16384 bytes
HGETPRM: HGETPRM:
EX DE,HL EX DE,HL
LD BC,#55AA LD BC,#55AA
@ -397,6 +417,13 @@ HGETPRM:
LD A,B LD A,B
LD B,D LD B,D
EXX EXX
;[ ] 04/01/2025 ¢®§¢à é¥­¨¥ à §¬¥à  ᥪâ®à 
EX AF,AF'
LD A,XH
LD E,XL
RL E
RLA
;
; SECTORS ON LOGICAL DISK ; SECTORS ON LOGICAL DISK
LD E,(IY+LOGDRV.SIZE_IN_SECTORS+0) LD E,(IY+LOGDRV.SIZE_IN_SECTORS+0)
LD D,(IY+LOGDRV.SIZE_IN_SECTORS+1) LD D,(IY+LOGDRV.SIZE_IN_SECTORS+1)
@ -406,7 +433,19 @@ HGETPRM:
;[x] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£® ;[x] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£®
LD C,(IY+LOGDRV.PARTITION_RECORD_NUM) ; ­®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª  LD C,(IY+LOGDRV.PARTITION_RECORD_NUM) ; ­®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª 
; ;
EX AF,AF' ;[ ] 04/01/2025 ¢®§¢à é¥­¨¥ à §¬¥à  ᥪâ®à 
; 00 - undefined
; 01 - 128 bytes
; 02 - 256 bytes
; 04 - 512 bytes
; 08 - 1024 bytes
; 16 - 2048 bytes
; 32 - 4096 bytes
; 64 - 8192 bytes
; 128 - 16384 bytes
;EX AF,AF'
LD B,A
;
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/... LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
EX AF,AF' EX AF,AF'
; ;
@ -434,6 +473,16 @@ CHEK_H: ;LD A,#FF
RET RET
; [ ] custorm sector size
CHECK_IDE_SECTOR_SIZE:
LD E,(IY+LOGDRV.SECTOR_SIZE)
LD D,(IY+LOGDRV.SECTOR_SIZE+1)
LD HL,DSS_MAX_SECTOR_SIZE
AND A
SBC HL,DE
RET
;
; DE - ADDRESS ; DE - ADDRESS
; A - DRIVE ; A - DRIVE
GBPB_H: PUSH IY GBPB_H: PUSH IY
@ -441,20 +490,27 @@ GBPB_H: PUSH IY
LD L,A LD L,A
; ;
LOGDRV_ENTRY_FIND LOGDRV LOGDRV_ENTRY_FIND LOGDRV
; !HARDCODE ;
LD E,(IY+1) ; [ ] custorm sector size
LD D,(IY+2) CALL CHECK_IDE_SECTOR_SIZE
LD L,(IY+3) JR C,.error
LD H,(IY+4) ;
LD E,(IY+LOGDRV.SECTOR_OFFSET)
LD D,(IY+LOGDRV.SECTOR_OFFSET+1)
LD L,(IY+LOGDRV.SECTOR_OFFSET+2)
LD H,(IY+LOGDRV.SECTOR_OFFSET+3)
LD XL,E LD XL,E
LD XH,D LD XH,D
LD A,(IY+0) LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER)
POP DE POP DE
POP IY POP IY
LD BC,1*256 + BIOS.DRV_READ LD BC,1*256 + BIOS.DRV_READ
JP ToBIOS JP ToBIOS
;
.error: POP DE
POP IY
LD A,DSS_Error.drv.UNKNOWN_FORMAT
RET
;HL:IX - SECTOR ;HL:IX - SECTOR
; DE - ADDRESS ; DE - ADDRESS
; B - COUNTER ; B - COUNTER
@ -463,9 +519,10 @@ GBPB_H: PUSH IY
;READ SECTOR ;READ SECTOR
LREADH: PUSH IY LREADH: PUSH IY
CALL SELHDD CALL SELHDD
JR C,.error ; [ ] custorm sector size
LD C,BIOS.DRV_READ_LONG LD C,BIOS.DRV_READ_LONG
RST ToBIOS RST ToBIOS
POP IY .error: POP IY
RET RET
;HL:IX - SECTOR ;HL:IX - SECTOR
@ -477,9 +534,10 @@ LREADH: PUSH IY
LWRITEH: LWRITEH:
PUSH IY PUSH IY
CALL SELHDD CALL SELHDD
JR C,.error ; [ ] custorm sector size
LD C,BIOS.DRV_WRITE_LONG LD C,BIOS.DRV_WRITE_LONG
RST ToBIOS RST ToBIOS
POP IY .error: POP IY
RET RET
;HL:IX - SECTOR ;HL:IX - SECTOR
@ -489,9 +547,10 @@ LWRITEH:
;WRITE SECTOR ;WRITE SECTOR
WRITEH: PUSH IY WRITEH: PUSH IY
CALL SELHDD CALL SELHDD
JR C,.error ; [ ] custorm sector size
LD C,BIOS.DRV_WRITE LD C,BIOS.DRV_WRITE
RST ToBIOS RST ToBIOS
POP IY .error: POP IY
RET RET
;HL:IX - SECTOR ;HL:IX - SECTOR
@ -501,9 +560,10 @@ WRITEH: PUSH IY
;READ SECTOR ;READ SECTOR
READH: PUSH IY READH: PUSH IY
CALL SELHDD CALL SELHDD
JR C,.error ; [ ] custorm sector size
LD C,BIOS.DRV_READ LD C,BIOS.DRV_READ
RST ToBIOS RST ToBIOS
POP IY .error: POP IY
RET RET
;HL:IX - SECTOR ;HL:IX - SECTOR
@ -595,12 +655,23 @@ DEFINE_PARTITIONS:
;SCF ;SCF
;RET ;RET
.check_atapi: LD A,(DRV_NUM) .check_atapi: LD A,(DRV_NUM)
LD B,A
AND #F0 AND #F0
CP DRIVE_CODES.SPRINTER.ATAPI CP DRIVE_CODES.SPRINTER.ATAPI
SCF SCF
RET NZ RET NZ
; ;
; No Media ; No Media
;!TODO sector size
LD A,B
LD C,BIOS.DRV_GET_PAR
RST ToBIOS
JR NC,.no_err
;
LD IX,#FFFF
.no_err: LD D,XH
LD E,XL
;
XOR A XOR A
;BPB SECTOR ;BPB SECTOR
LD IX,(OFFSECT) LD IX,(OFFSECT)
@ -613,6 +684,10 @@ DEFINE_PARTITIONS:
LD (IX + LOGDRV.SIZE_IN_SECTORS + 1),A LD (IX + LOGDRV.SIZE_IN_SECTORS + 1),A
LD (IX + LOGDRV.SIZE_IN_SECTORS + 2),A LD (IX + LOGDRV.SIZE_IN_SECTORS + 2),A
LD (IX + LOGDRV.SIZE_IN_SECTORS + 3),A LD (IX + LOGDRV.SIZE_IN_SECTORS + 3),A
; [ ] sector size
LD (IX + LOGDRV.SECTOR_SIZE),E
LD (IX + LOGDRV.SECTOR_SIZE + 1),D
;
; ¤«ï ¯à ¢¨«ì­®£® ¢ë室  ¨§ ¯ àá¥à  à §¤¥«®¢ ; ¤«ï ¯à ¢¨«ì­®£® ¢ë室  ¨§ ¯ àá¥à  à §¤¥«®¢
LD B,1 LD B,1
PUSH BC PUSH BC

View File

@ -293,11 +293,11 @@ GenIOCTL: BIT 7,B
; BC' - SECTORS PER TRACK ON PHISICAL DISK ; BC' - SECTORS PER TRACK ON PHISICAL DISK
; A' - PHISICAL DRIVE NUMBER ; A' - PHISICAL DRIVE NUMBER
; A - EXTENDED INFORMATION ; A - EXTENDED INFORMATION
; D1..D3 - "0" RESERVED (MAY BE OTHER)
; D4 - DEVICE MASTER/SLAVE
; D5 - "1" RESERVED
; D6 - ADDRESSING MODE LBA/CHS
; D7 - "1" RESERVED ; D7 - "1" RESERVED
; D6 - ADDRESSING MODE LBA/CHS
; D5 - "1" RESERVED
; D4 - DEVICE MASTER/SLAVE
; D1..D3 - "0" RESERVED (MAY BE OTHER)
.GetParams: EX DE,HL .GetParams: EX DE,HL
LD BC,#55AA LD BC,#55AA
AND #0F AND #0F

View File

@ -393,6 +393,13 @@ HGETPRM:
LD A,B LD A,B
LD B,D LD B,D
EXX EXX
;[ ] 04/01/2025 ¢®§¢à é¥­¨¥ à §¬¥à  ᥪâ®à 
EX AF,AF'
LD A,XH
LD E,XL
RL E
RLA
;
; SECTORS ON LOGICAL DISK ; SECTORS ON LOGICAL DISK
LD E,(IY+LOGDRV.SIZE_IN_SECTORS+0) LD E,(IY+LOGDRV.SIZE_IN_SECTORS+0)
LD D,(IY+LOGDRV.SIZE_IN_SECTORS+1) LD D,(IY+LOGDRV.SIZE_IN_SECTORS+1)
@ -402,7 +409,19 @@ HGETPRM:
;[x] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£® ;[x] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£®
LD C,(IY+LOGDRV.PARTITION_RECORD_NUM) ; ­®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª  LD C,(IY+LOGDRV.PARTITION_RECORD_NUM) ; ­®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª 
; ;
EX AF,AF' ;[ ] 04/01/2025 ¢®§¢à é¥­¨¥ à §¬¥à  ᥪâ®à 
; 00 - undefined
; 01 - 128 bytes
; 02 - 256 bytes
; 04 - 512 bytes
; 08 - 1024 bytes
; 16 - 2048 bytes
; 32 - 4096 bytes
; 64 - 8192 bytes
; 128 - 16384 bytes
;EX AF,AF'
LD B,A
;
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/... LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
EX AF,AF' EX AF,AF'
; ;
@ -437,14 +456,14 @@ GBPB_H: PUSH IY
LD L,A LD L,A
; ;
LOGDRV_ENTRY_FIND LOGDRV LOGDRV_ENTRY_FIND LOGDRV
; !HARDCODE ;
LD E,(IY+1) LD E,(IY+LOGDRV.SECTOR_OFFSET)
LD D,(IY+2) LD D,(IY+LOGDRV.SECTOR_OFFSET+1)
LD L,(IY+3) LD L,(IY+LOGDRV.SECTOR_OFFSET+2)
LD H,(IY+4) LD H,(IY+LOGDRV.SECTOR_OFFSET+3)
LD XL,E LD XL,E
LD XH,D LD XH,D
LD A,(IY+0) LD A,(IY+LOGDRV.SECTOR_OFFSET.PHISICAL_DRV_NUMBER)
POP DE POP DE
POP IY POP IY
LD BC,1*256 + BIOS.DRV_READ LD BC,1*256 + BIOS.DRV_READ

View File

@ -149,37 +149,37 @@ INITDVC: XOR A
; ˆ­¨æ¨¨à®¢ âì â ¡«¨æã ¯¥à¥å®¤®¢ ¤¥¢ ©á . ; ˆ­¨æ¨¨à®¢ âì â ¡«¨æã ¯¥à¥å®¤®¢ ¤¥¢ ©á .
; ¢å®¤: de= ¤à¥á ®¡à ¡®â稪  ¤¥¢ ©á  ; ¢å®¤: de= ¤à¥á ®¡à ¡®â稪  ¤¥¢ ©á 
; a=ç¨á«® ¤¥¢ ©á®¢ (0=­¥â) ; a=ç¨á«® ¤¥¢ ©á®¢ (0=­¥â)
MAKEDVC: LD C,A MAKEDVC: LD C,A
LD HL,DRV_PAGE.LDRIVE ; ï祩ª  ­®¬¥à  ¯®á«. ¤¨áª  LD HL,DRV_PAGE.LDRIVE ; ï祩ª  ­®¬¥à  ¯®á«. ¤¨áª 
ADD A,(HL) ADD A,(HL)
LD (HL),A LD (HL),A
;!TEST ;[ ] ®¯â¨¬¨§¨à®¢ âì ¡ë«® «¥­ì ;!TEST ;[ ] ®¯â¨¬¨§¨à®¢ âì ¡ë«® «¥­ì
CP DSS_MAX_DRIVES_AMOUNT+1 CP DSS_MAX_DRIVES_AMOUNT+1
JR C,1F JR C,1F
LD (HL),DSS_MAX_DRIVES_AMOUNT LD (HL),DSS_MAX_DRIVES_AMOUNT
SUB DSS_MAX_DRIVES_AMOUNT SUB DSS_MAX_DRIVES_AMOUNT
NEG NEG
ADD C ADD C
JP 2F JP 2F
; ;
1: LD A,C 1: LD A,C
OR A OR A
RET Z ; ­¥â ¤¥¢ ©á®¢ RET Z ; ­¥â ¤¥¢ ©á®¢
2: LD C,0 ; á¡à. 2: LD C,0 ; á¡à.
LD HL,(PDEVICE) ; ⥪. ¯®«®¦. ¢ â ¡«¨æ¥ LD HL,(PDEVICE) ; ⥪. ¯®«®¦. ¢ â ¡«¨æ¥
.loop: LD (HL),C ; ­®¬¥à «®£.¤à ©¢  í⮣® ãáâனá⢠ .loop: LD (HL),C ; ­®¬¥à «®£.¤à ©¢  í⮣® ãáâனá⢠
INC HL INC HL
LD (HL),E ; de= ¤à¥á ®¡à ¡®â稪  LD (HL),E ; de= ¤à¥á ®¡à ¡®â稪 
INC HL INC HL
LD (HL),D LD (HL),D
INC HL INC HL
INC C ; ++­®¬¥à ¤à ©¢  INC C ; ++­®¬¥à ¤à ©¢ 
DEC A DEC A
JR NZ,.loop JR NZ,.loop
LD (PDEVICE),HL LD (PDEVICE),HL
DEC A DEC A
LD (HL),A LD (HL),A
RET RET
;!FIXIT ¯®¯¥à¥¤¥«ë¢ âì âã⠢맮¢ë ç¥à¥§ â®çª¨ ¢å®¤  ⨯  RST ¨«¨ ¢ë§®¢ë ⨯  LD C,0 : CALL HDDRIVE ­  ¯àï¬ë¥ ;!FIXIT ¯®¯¥à¥¤¥«ë¢ âì âã⠢맮¢ë ç¥à¥§ â®çª¨ ¢å®¤  ⨯  RST ¨«¨ ¢ë§®¢ë ⨯  LD C,0 : CALL HDDRIVE ­  ¯àï¬ë¥
@ -192,10 +192,9 @@ INTDISK:
CP #FF CP #FF
JR NZ,.noNeedRescan JR NZ,.noNeedRescan
CP C CP C
;JR Z,INITDVC_RET_DRIVE
JR Z,ReScanDRV JR Z,ReScanDRV
.noNeedRescan:
; ;
.noNeedRescan:
PUSH HL PUSH HL
PUSH BC PUSH BC
_CALC_DEVICE_ENTRY DEVICE _CALC_DEVICE_ENTRY DEVICE

View File

@ -87,7 +87,7 @@ cmd_info: CALL Get_Path
POP BC POP BC
PUSH BC PUSH BC
LD A,C LD A,C
CP "C" CP "C" - "A"
JR C,.ItIsFDD JR C,.ItIsFDD
LD DE,Dss.DRV.GenIOCTL.Enter LD DE,Dss.DRV.GenIOCTL.Enter
LD BC,Dss.DRV.GenIOCTL.GetParams LD BC,Dss.DRV.GenIOCTL.GetParams
@ -98,18 +98,20 @@ cmd_info: CALL Get_Path
LD DE,Buffers.bat_params.PRM5 ; Drive size LD DE,Buffers.bat_params.PRM5 ; Drive size
CALL ncopy_string CALL ncopy_string
JR .print_info_2 JR .print_info_2
; HL:DE * 512 = A:HL:H'L' ; HL:DE * 512 = A:H'L':HL ;!HARDCODE sector size
.calc_size: RL E .calc_size: RL E
RL D RL D
RL L RL L
RL H RL H
LD C,E
LD A,H LD A,H
EX AF,AF
LD A,E
LD H,L LD H,L
LD L,D LD L,D
EXX EXX
LD H,C LD H,A
LD L,0 LD L,0
EX AF,AF
JR .convert_hex JR .convert_hex
; ;
.Collect_Msg: DZ " A: <WAITING>\r" ; ¯ âç¨âáï ¡ãª¢  ¤à ©¢  ¢ 横«¥ .Collect_Msg: DZ " A: <WAITING>\r" ; ¯ âç¨âáï ¡ãª¢  ¤à ©¢  ¢ 横«¥

View File

@ -1 +1 @@
437 444

@ -1 +1 @@
Subproject commit 6f28f9f83e4737733b76053891bd9be121aed186 Subproject commit 7ef1dd98b491068d5a9ded34f5ff51430b7fa7e7