not working

This commit is contained in:
Tolik 2025-01-16 01:27:59 +10:00
parent 22f9ae494c
commit d4911f7c45
5 changed files with 314 additions and 262 deletions

View File

@ -268,8 +268,8 @@ LOGDRV EQU DEVICE + DEVICE.End
.SECTOR_SIZE EQU 10 ; word .SECTOR_SIZE EQU 10 ; word
.RemovableMedia EQU 12 ; bit0=1 removable, bit1=1 drive changed, bit7..2 reserved .RemovableMedia EQU 12 ; bit0=1 removable, bit1=1 drive changed, bit7..2 reserved
.Reserved_1 EQU 13 .Reserved_1 EQU 13
.Reserved_1 EQU 14 .Reserved_2 EQU 14
.Reserved_1 EQU 15 .Reserved_3 EQU 15
; ‚•Ž„: L - «®£¨ç¥áª¨© ­®¬¥à ¢ â ¡«¨æ¥ ; ‚•Ž„: L - «®£¨ç¥áª¨© ­®¬¥à ¢ â ¡«¨æ¥
; ‚›•Ž„: IY - ­ ç «® § ¯¨á¨ ; ‚›•Ž„: IY - ­ ç «® § ¯¨á¨
; <20>Ž<EFBFBD>ˆ: HL, IY. HL<-->DE ; <20>Ž<EFBFBD>ˆ: HL, IY. HL<-->DE

View File

@ -49,7 +49,7 @@ ReScanDRV:
SBC HL,DE SBC HL,DE
JR Z,.nextN ; ¯à®¯ã᪠FDD ¤à ©¢®¢ JR Z,.nextN ; ¯à®¯ã᪠FDD ¤à ©¢®¢
; HDD? ; HDD?
LD HL,HDDRIVE LD HL,IDE_DRV.API_TABLE
AND A AND A
SBC HL,DE SBC HL,DE
; HDD! ‘¢¥àª  ¯® â ¡«¨æ¥ LOGDRV ; HDD! ‘¢¥àª  ¯® â ¡«¨æ¥ LOGDRV
@ -185,7 +185,7 @@ Fill_if_Exists:
LD A,LOGDRV.TBL_Entry LD A,LOGDRV.TBL_Entry
LD IY,LOGDRV LD IY,LOGDRV
CALL .RUN CALL .RUN
LD DE,HDDRIVE LD DE,IDE_DRV.API_TABLE
RET NC RET NC
; ¯¥à¥å®¤¨¬ ­  ¤àã£ãî â ¡«¨æã - RAMDTBL ; ¯¥à¥å®¤¨¬ ­  ¤àã£ãî â ¡«¨æã - RAMDTBL
LD A,(.tbl) LD A,(.tbl)

View File

@ -174,36 +174,38 @@
; IDE0 EQU #0C1C0 ; IDE0 EQU #0C1C0
; IDE1 EQU #0C1C8 ; IDE1 EQU #0C1C8
; MODULE ATAPI_DRV MODULE IDE_DRV
PARTITION_BUFFER _sBOOT_SECTOR = #C000 PARTITION_BUFFER _sBOOT_SECTOR = #C000
ATAPI_BUFFER _sCDFS_PRIMARY_VOLUME_DESCRIPTOR = #C000 ATAPI_BUFFER _sCDFS_PRIMARY_VOLUME_DESCRIPTOR = #C000
HDDRIVE: INC C API_TABLE: INC C
DEC C DEC C
JP Z,INIT_H ; [ ] ; c=0 Initialization JP Z,Init ; [ ] ; c=0 Initialization
DEC C DEC C
JP Z,RESE_H ; [ ] ; c=1 open JP Z,Open ; [ ] ; c=1 open
DEC C DEC C
JP Z,STAT_H ; [ ] ; c=2 close JP Z,Close ; [ ] ; c=2 close
DEC C DEC C
JP Z,CHEK_H ; [ ] ; c=3 media check (ᬥ­  ­®á¨â¥«ï) JP Z,MediaCheck ; [ ] ; c=3 media check (ᬥ­  ­®á¨â¥«ï)
DEC C DEC C
JP Z,GBPB_H ; [ ] ; c=4 get BPB JP Z,GetBPB ; [ ] ; c=4 get BPB
DEC C DEC C
JP Z,READH ; [ ] ; c=5 read (ç⥭¨¥ ᥪâ®à®¢) JP Z,Read ; [ ] ; c=5 read (ç⥭¨¥ ᥪâ®à®¢)
DEC C DEC C
JP Z,WRITEH ; [ ] ; c=6 write (§ ¯¨áì ᥪâ®à®¢) JP Z,Write ; [ ] ; c=6 write (§ ¯¨áì ᥪâ®à®¢)
DEC C DEC C
JP Z,REMOV_H ; [ ] ; c=7 Removable JP Z,Removable ; [ ] ; c=7 Removable
DEC C DEC C
JP Z,IOCTL_H ; [ ] ; c=8 ã§­ âì £¥®¬¥âà¨î ¤¨áª  Generic IOCTL JP Z,GenIOCTL ; [ ] ; c=8 ã§­ âì £¥®¬¥âà¨î ¤¨áª  Generic IOCTL
DEC C DEC C
JP Z,.Reserved ; [ ] ; c=9 Reserved JP Z,.Reserved ; [ ] ; c=9 Reserved
DEC C DEC C
JP Z,LREADH ; [ ] ; c=10 Read Long JP Z,ReadLong ; [ ] ; c=10 Read Long
DEC C DEC C
JP Z,LWRITEH ; [ ] ; c=11 Write Long JP Z,WriteLong ; [ ] ; c=11 Write Long
; ;
.Reserved: LD A,DSS_Error.drv.INVALID_COMMAND .Reserved: LD A,DSS_Error.drv.INVALID_COMMAND
SCF SCF
@ -216,7 +218,7 @@ HDDRIVE: INC C
;--------------------------------------------------------------------[v] ;--------------------------------------------------------------------[v]
; c=0 Initialization ; c=0 Initialization
INIT_H: PUSH IY Init: PUSH IY
;!TEST ;[ ] ¤«ï rescanDRV ;!TEST ;[ ] ¤«ï rescanDRV
XOR A XOR A
LD (.count),A LD (.count),A
@ -285,32 +287,34 @@ INIT_H: PUSH IY
; LOGDRV: BLOCK .TBL_Entry * LD_DSK,0 ; LOGDRV: BLOCK .TBL_Entry * LD_DSK,0
; .TBL_Entry EQU 16 ; .TBL_Entry EQU 16
; .Size EQU $-LOGDRV ; .Size EQU $-LOGDRV
SELHDD: PUSH DE SelectDrive: PUSH DE
PUSH HL PUSH HL
; ;
LD L,A LD L,A
; ;
LOGDRV_ENTRY_FIND LOGDRV LOGDRV_ENTRY_FIND LOGDRV
; ;
; [ ] custorm sector size ; [ ] custorm sector size
CALL CHECK_IDE_SECTOR_SIZE CALL CHECK_IDE_SECTOR_SIZE
RLA RLA
; ;
; ;
LD E,(IY+LOGDRV.SECTOR_OFFSET) LD E,(IY+LOGDRV.SECTOR_OFFSET)
LD D,(IY+LOGDRV.SECTOR_OFFSET+1) LD D,(IY+LOGDRV.SECTOR_OFFSET+1)
ADD IX,DE ADD IX,DE
LD E,(IY+LOGDRV.SECTOR_OFFSET+2) LD E,(IY+LOGDRV.SECTOR_OFFSET+2)
LD D,(IY+LOGDRV.SECTOR_OFFSET+3) LD D,(IY+LOGDRV.SECTOR_OFFSET+3)
POP HL POP HL
ADC HL,DE ADC HL,DE
; [ ] custom sector size ; [ ] custom sector size
;JR C,.exit ;JR C,.exit
RRA RRA
; ;
.exit: LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) .exit: LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER)
POP DE POP DE
RET RET NC
LD A,DSS_Error.drv.UNKNOWN_FORMAT
RET
; 00 - GET DEVICE PARAMETERS ; 00 - GET DEVICE PARAMETERS
; 01 - READ TRACK ; 01 - READ TRACK
@ -318,49 +322,54 @@ SELHDD: PUSH DE
; 80 - SET DEVICE PARAMETERS ; 80 - SET DEVICE PARAMETERS
; 81 - WRITE TRACK ; 81 - WRITE TRACK
; 82 - FORMAT TRACK ; 82 - FORMAT TRACK
IOCTL_H BIT 7,B GenIOCTL: BIT 7,B
JR NZ,O_CTL_H JR NZ,.Set
INC B INC B
DEC B DEC B
JP Z,HGETPRM JR Z,GetParams
DEC B DEC B
JP Z,HRDTRAC JR Z,.error ;ReadTrack
DEC B DEC B
JP Z,HCHTRAC JR Z,TestTRK
LD A,DSS_Error.drv.INVALID_COMMAND LD A,DSS_Error.drv.INVALID_COMMAND
SCF SCF
RET RET
;
.Set: RES 7,B
INC B
DEC B
RET Z ;SetParams
DEC B
JR Z,.error ;WriteTrack
DEC B
JR Z,.error
LD A,DSS_Error.drv.INVALID_COMMAND
SCF
RET
;
.error: LD A,DSS_Error.drv.GENERAL_FAILURE
SCF
RET
O_CTL_H RES 7,B ;HL:IX - SECTOR
INC B ; DE - ADDRESS
DEC B ; B - COUNTER
JP Z,HSETPRM ; A - HDD LOG NUMBER
DEC B ;CHECK SECTOR
JP Z,HWRTRAC TestTRK: LD C,BIOS.DRV_VERIFY
DEC B JP Exec_BIOS
JP Z,HFRTRAC ;LD B,L
LD A,DSS_Error.drv.INVALID_COMMAND ;CALL CHECKH
SCF ;RET
RET
HRDTRAC LD A,DSS_Error.drv.GENERAL_FAILURE
SCF
RET
HCHTRAC LD B,L ; HSETPRM: AND A
CALL CHECKH ; RET
RET
HSETPRM AND A
RET
HWRTRAC LD A,DSS_Error.drv.GENERAL_FAILURE ; HFRTRAC: LD A,DSS_Error.drv.GENERAL_FAILURE
SCF ; SCF
RET ; RET
HFRTRAC LD A,DSS_Error.drv.GENERAL_FAILURE
SCF
RET
; HL:DE - SECTORS ON LOGICAL DISK ; HL:DE - SECTORS ON LOGICAL DISK
; C - PARTITION RECORD NUMBER IN DRIVE MBR. if #FF - then not supported ;[x] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£® ; C - PARTITION RECORD NUMBER IN DRIVE MBR. if #FF - then not supported ;[x] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£®
@ -387,143 +396,173 @@ HFRTRAC LD A,DSS_Error.drv.GENERAL_FAILURE
; 32 - 4096 bytes ; 32 - 4096 bytes
; 64 - 8192 bytes ; 64 - 8192 bytes
; 128 - 16384 bytes ; 128 - 16384 bytes
HGETPRM: GetParams: EX DE,HL
EX DE,HL LD BC,#55AA
LD BC,#55AA AND A
AND A SBC HL,BC
SBC HL,BC LD L,A
LD L,A LD A,DSS_Error.drv.GENERAL_FAILURE
LD A,DSS_Error.drv.GENERAL_FAILURE SCF
SCF RET NZ
RET NZ ;
; PUSH IX
PUSH IX PUSH IY
PUSH IY ;
; LOGDRV_ENTRY_FIND LOGDRV
LOGDRV_ENTRY_FIND LOGDRV ;
; 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/... PUSH IY
PUSH IY LD C,BIOS.DRV_GET_PAR
LD C,BIOS.DRV_GET_PAR RST ToBIOS
RST ToBIOS POP IY
POP IY LD A,DSS_Error.drv.INVALID_DRIVE
LD A,DSS_Error.drv.INVALID_DRIVE JR C,.error
JR C,.error ; ¯¥à¥â á®¢ª  ॣ¨áâ஢ á १ã«ìâ â®¬ ®â BIOS
; ¯¥à¥â á®¢ª  ॣ¨áâ஢ á १ã«ìâ â®¬ ®â BIOS EX DE,HL
EX DE,HL LD C,E
LD C,E LD E,D
LD E,D LD D,0
LD D,0 LD A,B
LD A,B LD B,D
LD B,D EXX
EXX ;[ ] 04/01/2025 ¢®§¢à é¥­¨¥ à §¬¥à  ᥪâ®à 
;[ ] 04/01/2025 ¢®§¢à é¥­¨¥ à §¬¥à  ᥪâ®à  EX AF,AF'
EX AF,AF' LD A,XH
LD A,XH LD E,XL
LD E,XL RL E
RL E RLA
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) LD L,(IY+LOGDRV.SIZE_IN_SECTORS+2)
LD L,(IY+LOGDRV.SIZE_IN_SECTORS+2) LD H,(IY+LOGDRV.SIZE_IN_SECTORS+3)
LD H,(IY+LOGDRV.SIZE_IN_SECTORS+3) ;
; ;[x] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£®
;[x] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£® LD C,(IY+LOGDRV.PARTITION_RECORD_NUM) ; ­®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª 
LD C,(IY+LOGDRV.PARTITION_RECORD_NUM) ; ­®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª  ;
; ;[ ] 04/01/2025 ¢®§¢à é¥­¨¥ à §¬¥à  ᥪâ®à 
;[ ] 04/01/2025 ¢®§¢à é¥­¨¥ à §¬¥à  ᥪâ®à  ; 00 - undefined
; 00 - undefined ; 01 - 128 bytes
; 01 - 128 bytes ; 02 - 256 bytes
; 02 - 256 bytes ; 04 - 512 bytes
; 04 - 512 bytes ; 08 - 1024 bytes
; 08 - 1024 bytes ; 16 - 2048 bytes
; 16 - 2048 bytes ; 32 - 4096 bytes
; 32 - 4096 bytes ; 64 - 8192 bytes
; 64 - 8192 bytes ; 128 - 16384 bytes
; 128 - 16384 bytes ;EX AF,AF'
;EX AF,AF' LD B,A
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' ;
; AND A
AND A .error: POP IY
.error: POP IY POP IX
POP IX RET
RET
REMOV_H:
LD A,1
AND A
RET
RESE_H: XOR A Removable: XOR A
RET INC A
RET
STAT_H: XOR A Open: XOR A
RET RET
CHEK_H: ;LD A,#FF Close: XOR A
XOR A RET
;AND A
RET ;[ ] media changed - bios 5x DETECT
; ¢ë室 A=#FF - changed, A=0 - not changed, ZF=1 - not changed
MediaCheck: PUSH IY
CALL SelectDrive
JR C,.exit
;
LD A,#FF
BIT 1,(IY + LOGDRV.RemovableMedia)
JR NZ,.exit
;
LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER)
LD C,BIOS.DRV_DETECT
RST ToBIOS
AND %0000'0010
JR Z,.norm_exit
;
ld
; २­¨â ¤à ©¢ 
;
.norm_exit: XOR A
.exit: POP IY
RET
; [ ] custorm sector size ; [ ] custorm sector size
CHECK_IDE_SECTOR_SIZE: CHECK_IDE_SECTOR_SIZE:
LD E,(IY+LOGDRV.SECTOR_SIZE) LD E,(IY+LOGDRV.SECTOR_SIZE)
LD D,(IY+LOGDRV.SECTOR_SIZE+1) LD D,(IY+LOGDRV.SECTOR_SIZE+1)
LD HL,DSS_MAX_SECTOR_SIZE LD HL,DSS_MAX_SECTOR_SIZE
AND A AND A
SBC HL,DE SBC HL,DE
RET RET
; ;
;HL:IX - SECTOR
; DE - ADDRESS
; B - COUNTER
; A - HDD LOG NUMBER
;READ SECTOR
; DE - ADDRESS ; DE - ADDRESS
; A - DRIVE ; A - DRIVE
GBPB_H: PUSH IY GetBPB: ; !FIXIT ¢ë¡¨à âì §­ ç¥­¨ï ¨áå®¤ï ¨§ ⨯  ¤à ©¢  ¨«¨ ¥éñ 祣®-­¨¡ã¤ì
PUSH DE LD HL,0
LD L,A LD IX,0
; JR Read
LOGDRV_ENTRY_FIND LOGDRV
; ; PUSH IY
; [ ] custorm sector size ; PUSH DE
CALL CHECK_IDE_SECTOR_SIZE ; LD L,A
JR C,.error ; ;
; ; LOGDRV_ENTRY_FIND LOGDRV
LD E,(IY+LOGDRV.SECTOR_OFFSET) ; ;
LD D,(IY+LOGDRV.SECTOR_OFFSET+1) ; ; [ ] custorm sector size
LD L,(IY+LOGDRV.SECTOR_OFFSET+2) ; CALL CHECK_IDE_SECTOR_SIZE
LD H,(IY+LOGDRV.SECTOR_OFFSET+3) ; JR C,.error
LD XL,E ; ;
LD XH,D ; LD E,(IY+LOGDRV.SECTOR_OFFSET)
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) ; LD D,(IY+LOGDRV.SECTOR_OFFSET+1)
POP DE ; LD L,(IY+LOGDRV.SECTOR_OFFSET+2)
POP IY ; LD H,(IY+LOGDRV.SECTOR_OFFSET+3)
LD BC,1*256 + BIOS.DRV_READ ; LD XL,E
JP ToBIOS ; LD XH,D
; ; LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER)
.error: POP DE ; POP DE
POP IY ; POP IY
LD A,DSS_Error.drv.UNKNOWN_FORMAT ; LD BC,1*256 + BIOS.DRV_READ
RET ; 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
; A'- PAGE ; A'- PAGE
; A - HDD LOG NUMBER ; A - HDD LOG NUMBER
;READ SECTOR ;READ SECTOR
LREADH: PUSH IY ReadLong: LD C,BIOS.DRV_READ_LONG
CALL SELHDD JP Exec_BIOS
JR C,.error ; [ ] custorm sector size ; PUSH IY
LD C,BIOS.DRV_READ_LONG ; CALL SelectDrive
RST ToBIOS ; JR C,.error ; [ ] custorm sector size
.error: POP IY ; LD C,BIOS.DRV_READ_LONG
RET ; RST ToBIOS
; .error: POP IY
; RET
;HL:IX - SECTOR ;HL:IX - SECTOR
; DE - ADDRESS ; DE - ADDRESS
@ -531,53 +570,66 @@ LREADH: PUSH IY
; A'- PAGE ; A'- PAGE
; A - HDD LOG NUMBER ; A - HDD LOG NUMBER
;WRITE SECTOR ;WRITE SECTOR
LWRITEH: WriteLong: LD C,BIOS.DRV_WRITE_LONG
PUSH IY JP Exec_BIOS
CALL SELHDD ; PUSH IY
JR C,.error ; [ ] custorm sector size ; CALL SelectDrive
LD C,BIOS.DRV_WRITE_LONG ; JR C,.error ; [ ] custorm sector size
RST ToBIOS ; LD C,BIOS.DRV_WRITE_LONG
.error: POP IY ; RST ToBIOS
RET ; .error: POP IY
; RET
;HL:IX - SECTOR ;HL:IX - SECTOR
; DE - ADDRESS ; DE - ADDRESS
; B - COUNTER ; B - COUNTER
; A - HDD LOG NUMBER ; A - HDD LOG NUMBER
;WRITE SECTOR ;WRITE SECTOR
WRITEH: PUSH IY Write: LD C,BIOS.DRV_WRITE
CALL SELHDD JP Exec_BIOS
JR C,.error ; [ ] custorm sector size ; PUSH IY
LD C,BIOS.DRV_WRITE ; CALL SelectDrive
RST ToBIOS ; JR C,.error ; [ ] custorm sector size
.error: POP IY ; LD C,BIOS.DRV_WRITE
RET ; RST ToBIOS
; .error: POP IY
; RET
;HL:IX - SECTOR
; DE - ADDRESS
; B - COUNTER
; A - HDD LOG NUMBER
;READ SECTOR
READH: PUSH IY
CALL SELHDD
JR C,.error ; [ ] custorm sector size
LD C,BIOS.DRV_READ
RST ToBIOS
.error: POP IY
RET
;HL:IX - SECTOR ;HL:IX - SECTOR
; DE - ADDRESS ; DE - ADDRESS
; B - COUNTER ; B - COUNTER
; A - HDD LOG NUMBER ; A - HDD LOG NUMBER
;CHECK SECTOR ;CHECK SECTOR
CHECKH: PUSH IY ; CHECKH: PUSH IY
CALL SELHDD ; CALL SelectDrive
LD C,BIOS.DRV_VERIFY ; LD C,BIOS.DRV_VERIFY
RST ToBIOS ; RST ToBIOS
POP IY ; POP IY
RET ; RET
;HL:IX - SECTOR
; DE - ADDRESS
; B - COUNTER
; A - HDD LOG NUMBER
;READ SECTOR
Read: LD C,BIOS.DRV_READ
;
Exec_BIOS: PUSH IY
CALL .exec
POP IY
RET
.exec: CALL SelectDrive
RET C
RST ToBIOS
RET NC
CP BIOS.Error.ATAPI.UnitAttention
SCF
RET NZ
SET 1,(IY + LOGDRV.RemovableMedia)
RET
;------------------------------[ PARTIT ]------------------------------; ;------------------------------[ PARTIT ]------------------------------;
DEFINE_PARTITIONS: DEFINE_PARTITIONS:
.FAT32_DOS: ; .FAT32_DOS: ;
@ -647,7 +699,7 @@ DEFINE_PARTITIONS:
JP Z,.FAT32_DOS JP Z,.FAT32_DOS
; ;
CP PartitionSysTypes.Win_Ext_LBA CP PartitionSysTypes.Win_Ext_LBA
JR Z,.SubLevel JP Z,.SubLevel
JP .NextPartition ; à §¤¥« ­¥ ¯®¤¤¥à¦¨¢ ¥âáï JP .NextPartition ; à §¤¥« ­¥ ¯®¤¤¥à¦¨¢ ¥âáï
; ;
@ -813,11 +865,11 @@ DEFINE_PARTITIONS:
; ;
;!TEST <09>®¤áâà å®¢ª  ®â ¯¥à¥¯®«­¥­¨ï â ¡«¨æë LOGDRV ;!TEST <09>®¤áâà å®¢ª  ®â ¯¥à¥¯®«­¥­¨ï â ¡«¨æë LOGDRV
INC_DRV_COUNT: LD A,(INIT_H.count) INC_DRV_COUNT: LD A,(Init.count)
INC A INC A
CP DSS_MAX_DRIVES_AMOUNT+1 CP DSS_MAX_DRIVES_AMOUNT+1
RET NC RET NC
LD (INIT_H.count),A LD (Init.count),A
RET RET
;======================================================================= ;=======================================================================
@ -831,4 +883,4 @@ EXTDOSH: DW #0000
OFFSECT: DW LOGDRV ;POINTER ON CURRENT DISK RECORD OFFSECT: DW LOGDRV ;POINTER ON CURRENT DISK RECORD
;======================================================================= ;=======================================================================
; ENDMODULE ENDMODULE

View File

@ -121,30 +121,30 @@
;----------------------------------------------------------- ;-----------------------------------------------------------
; <20>à®áª ­¨à®¢ âì á¨á⥬㠭  FDD/HDD ¤¥¢ ©áë ¨ RAM-¤¨áª¨ ; <20>à®áª ­¨à®¢ âì á¨á⥬㠭  FDD/HDD ¤¥¢ ©áë ¨ RAM-¤¨áª¨
;----------------------------------------------------------- ;-----------------------------------------------------------
INITDVC: XOR A INITDVC: XOR A
LD (DRV_PAGE.LDRIVE),A ; á¡à. ï祩ªã LD (DRV_PAGE.LDRIVE),A ; á¡à. ï祩ªã
LD HL,DEVICE LD HL,DEVICE
LD (PDEVICE),HL ; ¢®ááâ. ï祩ªã LD (PDEVICE),HL ; ¢®ááâ. ï祩ªã
; ‡ ç¨á⪠ â ¡«¨æ. <20>¥®¡ï§ â¥«ì­®, ­® ¬ «® «¨ çñ ¡ã¤¥â ¤ «ìè¥... ;[ ] ; ‡ ç¨á⪠ â ¡«¨æ. <20>¥®¡ï§ â¥«ì­®, ­® ¬ «® «¨ çñ ¡ã¤¥â ¤ «ìè¥... ;[ ]
LD HL,DEVICE LD HL,DEVICE
LD (HL),#FF LD (HL),#FF
LD DE,DEVICE+1 LD DE,DEVICE+1
LD BC,DEVICE.Size + LOGDRV.Size + RAMDTBL.Size - 1 LD BC,DEVICE.Size + LOGDRV.Size + RAMDTBL.Size - 1
LDIR LDIR
; FDD ¤¥¢ ©áë ; FDD ¤¥¢ ©áë
CALL FDD_DRV.Init ; ã§­ âì ç¨á«® FDD-¤¥¢ ©á®¢ CALL FDD_DRV.Init ; ã§­ âì ç¨á«® FDD-¤¥¢ ©á®¢
LD DE,FDD_DRV.API_TABLE ;  ¤à¥á ®¡à ¡®â稪  ⥪. ¤¥¢ ©á  LD DE,FDD_DRV.API_TABLE ;  ¤à¥á ®¡à ¡®â稪  ⥪. ¤¥¢ ©á 
CALL MAKEDVC ; ¨­¨æ. â ¡«¨æã ¯¥à¥å®¤®¢ CALL MAKEDVC ; ¨­¨æ. â ¡«¨æã ¯¥à¥å®¤®¢
; HDD ¤¥¢ ©áë ; HDD ¤¥¢ ©áë
.if_old: CALL INIT_H ; ¥á«¨ ­  áâ à⥠¢¥àá¨ï BIOS ­¥ ¯®¤å®¤¨â, â® £à㧨âìáï ¬®¦­® ⮫쪮 á ¤¨áª¥âë, ¤«ï í⮣® âãâ § ¬¥­  ª®¤  ­  XOR A : RET .if_old: CALL IDE_DRV.Init ; ¥á«¨ ­  áâ à⥠¢¥àá¨ï BIOS ­¥ ¯®¤å®¤¨â, â® £à㧨âìáï ¬®¦­® ⮫쪮 á ¤¨áª¥âë, ¤«ï í⮣® âãâ § ¬¥­  ª®¤  ­  XOR A : RET
LD DE,HDDRIVE LD DE,IDE_DRV.API_TABLE
CALL MAKEDVC CALL MAKEDVC
; RAM-¤¨áª¨ ; RAM-¤¨áª¨
CALL INIT_RD CALL INIT_RD
LD DE,RMDRIVE LD DE,RMDRIVE
CALL MAKEDVC CALL MAKEDVC
XOR A XOR A
RET RET
; ˆ­¨æ¨¨à®¢ âì â ¡«¨æã ¯¥à¥å®¤®¢ ¤¥¢ ©á . ; ˆ­¨æ¨¨à®¢ âì â ¡«¨æã ¯¥à¥å®¤®¢ ¤¥¢ ©á .
; ¢å®¤: de= ¤à¥á ®¡à ¡®â稪  ¤¥¢ ©á  ; ¢å®¤: de= ¤à¥á ®¡à ¡®â稪  ¤¥¢ ©á 

@ -1 +1 @@
Subproject commit 7ef1dd98b491068d5a9ded34f5ff51430b7fa7e7 Subproject commit 857938d1dbf3b332a5e9e8ccabfee531eb3848fa