mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
not working
This commit is contained in:
parent
22f9ae494c
commit
d4911f7c45
@ -268,8 +268,8 @@ LOGDRV EQU DEVICE + DEVICE.End
|
||||
.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
|
||||
.Reserved_2 EQU 14
|
||||
.Reserved_3 EQU 15
|
||||
; ‚•Ž„: L - «®£¨ç¥áª¨© ®¬¥à ¢ â ¡«¨æ¥
|
||||
; ‚›•Ž„: IY - ç «® § ¯¨á¨
|
||||
; <20>Ž<EFBFBD>’ˆ’: HL, IY. HL<-->DE
|
||||
|
||||
@ -49,7 +49,7 @@ ReScanDRV:
|
||||
SBC HL,DE
|
||||
JR Z,.nextN ; ¯à®¯ã᪠FDD ¤à ©¢®¢
|
||||
; HDD?
|
||||
LD HL,HDDRIVE
|
||||
LD HL,IDE_DRV.API_TABLE
|
||||
AND A
|
||||
SBC HL,DE
|
||||
; HDD! ‘¢¥àª ¯® â ¡«¨æ¥ LOGDRV
|
||||
@ -185,7 +185,7 @@ Fill_if_Exists:
|
||||
LD A,LOGDRV.TBL_Entry
|
||||
LD IY,LOGDRV
|
||||
CALL .RUN
|
||||
LD DE,HDDRIVE
|
||||
LD DE,IDE_DRV.API_TABLE
|
||||
RET NC
|
||||
; ¯¥à¥å®¤¨¬ ¤àã£ãî â ¡«¨æã - RAMDTBL
|
||||
LD A,(.tbl)
|
||||
|
||||
@ -174,36 +174,38 @@
|
||||
; IDE0 EQU #0C1C0
|
||||
; IDE1 EQU #0C1C8
|
||||
|
||||
; MODULE ATAPI_DRV
|
||||
MODULE IDE_DRV
|
||||
|
||||
|
||||
|
||||
PARTITION_BUFFER _sBOOT_SECTOR = #C000
|
||||
ATAPI_BUFFER _sCDFS_PRIMARY_VOLUME_DESCRIPTOR = #C000
|
||||
|
||||
HDDRIVE: INC C
|
||||
API_TABLE: INC C
|
||||
DEC C
|
||||
JP Z,INIT_H ; [ ] ; c=0 Initialization
|
||||
JP Z,Init ; [ ] ; c=0 Initialization
|
||||
DEC C
|
||||
JP Z,RESE_H ; [ ] ; c=1 open
|
||||
JP Z,Open ; [ ] ; c=1 open
|
||||
DEC C
|
||||
JP Z,STAT_H ; [ ] ; c=2 close
|
||||
JP Z,Close ; [ ] ; c=2 close
|
||||
DEC C
|
||||
JP Z,CHEK_H ; [ ] ; c=3 media check (ᬥ ®á¨â¥«ï)
|
||||
JP Z,MediaCheck ; [ ] ; c=3 media check (ᬥ ®á¨â¥«ï)
|
||||
DEC C
|
||||
JP Z,GBPB_H ; [ ] ; c=4 get BPB
|
||||
JP Z,GetBPB ; [ ] ; c=4 get BPB
|
||||
DEC C
|
||||
JP Z,READH ; [ ] ; c=5 read (ç⥨¥ ᥪâ®à®¢)
|
||||
JP Z,Read ; [ ] ; c=5 read (ç⥨¥ ᥪâ®à®¢)
|
||||
DEC C
|
||||
JP Z,WRITEH ; [ ] ; c=6 write (§ ¯¨áì ᥪâ®à®¢)
|
||||
JP Z,Write ; [ ] ; c=6 write (§ ¯¨áì ᥪâ®à®¢)
|
||||
DEC C
|
||||
JP Z,REMOV_H ; [ ] ; c=7 Removable
|
||||
JP Z,Removable ; [ ] ; c=7 Removable
|
||||
DEC C
|
||||
JP Z,IOCTL_H ; [ ] ; c=8 ã§ âì £¥®¬¥âà¨î ¤¨áª Generic IOCTL
|
||||
JP Z,GenIOCTL ; [ ] ; c=8 ã§ âì £¥®¬¥âà¨î ¤¨áª Generic IOCTL
|
||||
DEC C
|
||||
JP Z,.Reserved ; [ ] ; c=9 Reserved
|
||||
DEC C
|
||||
JP Z,LREADH ; [ ] ; c=10 Read Long
|
||||
JP Z,ReadLong ; [ ] ; c=10 Read Long
|
||||
DEC C
|
||||
JP Z,LWRITEH ; [ ] ; c=11 Write Long
|
||||
JP Z,WriteLong ; [ ] ; c=11 Write Long
|
||||
;
|
||||
.Reserved: LD A,DSS_Error.drv.INVALID_COMMAND
|
||||
SCF
|
||||
@ -216,7 +218,7 @@ HDDRIVE: INC C
|
||||
|
||||
;--------------------------------------------------------------------[v]
|
||||
; c=0 Initialization
|
||||
INIT_H: PUSH IY
|
||||
Init: PUSH IY
|
||||
;!TEST ;[ ] ¤«ï rescanDRV
|
||||
XOR A
|
||||
LD (.count),A
|
||||
@ -285,32 +287,34 @@ INIT_H: PUSH IY
|
||||
; LOGDRV: BLOCK .TBL_Entry * LD_DSK,0
|
||||
; .TBL_Entry EQU 16
|
||||
; .Size EQU $-LOGDRV
|
||||
SELHDD: PUSH DE
|
||||
PUSH HL
|
||||
;
|
||||
LD L,A
|
||||
;
|
||||
LOGDRV_ENTRY_FIND LOGDRV
|
||||
;
|
||||
; [ ] custorm sector size
|
||||
CALL CHECK_IDE_SECTOR_SIZE
|
||||
RLA
|
||||
;
|
||||
;
|
||||
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
|
||||
; [ ] custom sector size
|
||||
;JR C,.exit
|
||||
RRA
|
||||
;
|
||||
.exit: LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER)
|
||||
POP DE
|
||||
RET
|
||||
SelectDrive: PUSH DE
|
||||
PUSH HL
|
||||
;
|
||||
LD L,A
|
||||
;
|
||||
LOGDRV_ENTRY_FIND LOGDRV
|
||||
;
|
||||
; [ ] custorm sector size
|
||||
CALL CHECK_IDE_SECTOR_SIZE
|
||||
RLA
|
||||
;
|
||||
;
|
||||
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
|
||||
; [ ] custom sector size
|
||||
;JR C,.exit
|
||||
RRA
|
||||
;
|
||||
.exit: LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER)
|
||||
POP DE
|
||||
RET NC
|
||||
LD A,DSS_Error.drv.UNKNOWN_FORMAT
|
||||
RET
|
||||
|
||||
; 00 - GET DEVICE PARAMETERS
|
||||
; 01 - READ TRACK
|
||||
@ -318,49 +322,54 @@ SELHDD: PUSH DE
|
||||
; 80 - SET DEVICE PARAMETERS
|
||||
; 81 - WRITE TRACK
|
||||
; 82 - FORMAT TRACK
|
||||
IOCTL_H BIT 7,B
|
||||
JR NZ,O_CTL_H
|
||||
INC B
|
||||
DEC B
|
||||
JP Z,HGETPRM
|
||||
DEC B
|
||||
JP Z,HRDTRAC
|
||||
DEC B
|
||||
JP Z,HCHTRAC
|
||||
LD A,DSS_Error.drv.INVALID_COMMAND
|
||||
SCF
|
||||
RET
|
||||
GenIOCTL: BIT 7,B
|
||||
JR NZ,.Set
|
||||
INC B
|
||||
DEC B
|
||||
JR Z,GetParams
|
||||
DEC B
|
||||
JR Z,.error ;ReadTrack
|
||||
DEC B
|
||||
JR Z,TestTRK
|
||||
LD A,DSS_Error.drv.INVALID_COMMAND
|
||||
SCF
|
||||
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
|
||||
INC B
|
||||
DEC B
|
||||
JP Z,HSETPRM
|
||||
DEC B
|
||||
JP Z,HWRTRAC
|
||||
DEC B
|
||||
JP Z,HFRTRAC
|
||||
LD A,DSS_Error.drv.INVALID_COMMAND
|
||||
SCF
|
||||
RET
|
||||
;HL:IX - SECTOR
|
||||
; DE - ADDRESS
|
||||
; B - COUNTER
|
||||
; A - HDD LOG NUMBER
|
||||
;CHECK SECTOR
|
||||
TestTRK: LD C,BIOS.DRV_VERIFY
|
||||
JP Exec_BIOS
|
||||
;LD B,L
|
||||
;CALL CHECKH
|
||||
;RET
|
||||
|
||||
HRDTRAC LD A,DSS_Error.drv.GENERAL_FAILURE
|
||||
SCF
|
||||
RET
|
||||
|
||||
HCHTRAC LD B,L
|
||||
CALL CHECKH
|
||||
RET
|
||||
; HSETPRM: AND A
|
||||
; RET
|
||||
|
||||
HSETPRM AND A
|
||||
RET
|
||||
|
||||
HWRTRAC LD A,DSS_Error.drv.GENERAL_FAILURE
|
||||
SCF
|
||||
RET
|
||||
|
||||
HFRTRAC LD A,DSS_Error.drv.GENERAL_FAILURE
|
||||
SCF
|
||||
RET
|
||||
; HFRTRAC: LD A,DSS_Error.drv.GENERAL_FAILURE
|
||||
; SCF
|
||||
; RET
|
||||
|
||||
; HL:DE - SECTORS ON LOGICAL DISK
|
||||
; 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
|
||||
; 64 - 8192 bytes
|
||||
; 128 - 16384 bytes
|
||||
HGETPRM:
|
||||
EX DE,HL
|
||||
LD BC,#55AA
|
||||
AND A
|
||||
SBC HL,BC
|
||||
LD L,A
|
||||
LD A,DSS_Error.drv.GENERAL_FAILURE
|
||||
SCF
|
||||
RET NZ
|
||||
;
|
||||
PUSH IX
|
||||
PUSH IY
|
||||
;
|
||||
LOGDRV_ENTRY_FIND LOGDRV
|
||||
;
|
||||
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
||||
PUSH IY
|
||||
LD C,BIOS.DRV_GET_PAR
|
||||
RST ToBIOS
|
||||
POP IY
|
||||
LD A,DSS_Error.drv.INVALID_DRIVE
|
||||
JR C,.error
|
||||
; ¯¥à¥â ᮢª ॣ¨áâ஢ á १ã«ìâ ⮬ ®â BIOS
|
||||
EX DE,HL
|
||||
LD C,E
|
||||
LD E,D
|
||||
LD D,0
|
||||
LD A,B
|
||||
LD B,D
|
||||
EXX
|
||||
;[ ] 04/01/2025 ¢®§¢à 饨¥ à §¬¥à ᥪâ®à
|
||||
EX AF,AF'
|
||||
LD A,XH
|
||||
LD E,XL
|
||||
RL E
|
||||
RLA
|
||||
;
|
||||
; SECTORS ON LOGICAL DISK
|
||||
LD E,(IY+LOGDRV.SIZE_IN_SECTORS+0)
|
||||
LD D,(IY+LOGDRV.SIZE_IN_SECTORS+1)
|
||||
LD L,(IY+LOGDRV.SIZE_IN_SECTORS+2)
|
||||
LD H,(IY+LOGDRV.SIZE_IN_SECTORS+3)
|
||||
;
|
||||
;[x] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
LD C,(IY+LOGDRV.PARTITION_RECORD_NUM) ; ®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª
|
||||
;
|
||||
;[ ] 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/...
|
||||
EX AF,AF'
|
||||
;
|
||||
AND A
|
||||
.error: POP IY
|
||||
POP IX
|
||||
RET
|
||||
|
||||
REMOV_H:
|
||||
LD A,1
|
||||
AND A
|
||||
RET
|
||||
GetParams: EX DE,HL
|
||||
LD BC,#55AA
|
||||
AND A
|
||||
SBC HL,BC
|
||||
LD L,A
|
||||
LD A,DSS_Error.drv.GENERAL_FAILURE
|
||||
SCF
|
||||
RET NZ
|
||||
;
|
||||
PUSH IX
|
||||
PUSH IY
|
||||
;
|
||||
LOGDRV_ENTRY_FIND LOGDRV
|
||||
;
|
||||
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
||||
PUSH IY
|
||||
LD C,BIOS.DRV_GET_PAR
|
||||
RST ToBIOS
|
||||
POP IY
|
||||
LD A,DSS_Error.drv.INVALID_DRIVE
|
||||
JR C,.error
|
||||
; ¯¥à¥â ᮢª ॣ¨áâ஢ á १ã«ìâ ⮬ ®â BIOS
|
||||
EX DE,HL
|
||||
LD C,E
|
||||
LD E,D
|
||||
LD D,0
|
||||
LD A,B
|
||||
LD B,D
|
||||
EXX
|
||||
;[ ] 04/01/2025 ¢®§¢à 饨¥ à §¬¥à ᥪâ®à
|
||||
EX AF,AF'
|
||||
LD A,XH
|
||||
LD E,XL
|
||||
RL E
|
||||
RLA
|
||||
;
|
||||
; SECTORS ON LOGICAL DISK
|
||||
LD E,(IY+LOGDRV.SIZE_IN_SECTORS+0)
|
||||
LD D,(IY+LOGDRV.SIZE_IN_SECTORS+1)
|
||||
LD L,(IY+LOGDRV.SIZE_IN_SECTORS+2)
|
||||
LD H,(IY+LOGDRV.SIZE_IN_SECTORS+3)
|
||||
;
|
||||
;[x] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
LD C,(IY+LOGDRV.PARTITION_RECORD_NUM) ; ®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª
|
||||
;
|
||||
;[ ] 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/...
|
||||
EX AF,AF'
|
||||
;
|
||||
AND A
|
||||
.error: POP IY
|
||||
POP IX
|
||||
RET
|
||||
|
||||
|
||||
|
||||
RESE_H: XOR A
|
||||
RET
|
||||
Removable: XOR A
|
||||
INC A
|
||||
RET
|
||||
|
||||
STAT_H: XOR A
|
||||
RET
|
||||
Open: XOR A
|
||||
RET
|
||||
|
||||
CHEK_H: ;LD A,#FF
|
||||
XOR A
|
||||
;AND A
|
||||
RET
|
||||
Close: XOR 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
|
||||
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
|
||||
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
|
||||
;
|
||||
|
||||
|
||||
;HL:IX - SECTOR
|
||||
; DE - ADDRESS
|
||||
; B - COUNTER
|
||||
; A - HDD LOG NUMBER
|
||||
;READ SECTOR
|
||||
|
||||
; DE - ADDRESS
|
||||
; A - DRIVE
|
||||
GBPB_H: PUSH IY
|
||||
PUSH DE
|
||||
LD L,A
|
||||
;
|
||||
LOGDRV_ENTRY_FIND LOGDRV
|
||||
;
|
||||
; [ ] custorm sector size
|
||||
CALL CHECK_IDE_SECTOR_SIZE
|
||||
JR C,.error
|
||||
;
|
||||
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 XH,D
|
||||
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER)
|
||||
POP DE
|
||||
POP IY
|
||||
LD BC,1*256 + BIOS.DRV_READ
|
||||
JP ToBIOS
|
||||
;
|
||||
.error: POP DE
|
||||
POP IY
|
||||
LD A,DSS_Error.drv.UNKNOWN_FORMAT
|
||||
RET
|
||||
GetBPB: ; !FIXIT ¢ë¡¨à âì § ç¥¨ï ¨áå®¤ï ¨§ ⨯ ¤à ©¢ ¨«¨ ¥éñ 祣®-¨¡ã¤ì
|
||||
LD HL,0
|
||||
LD IX,0
|
||||
JR Read
|
||||
|
||||
; PUSH IY
|
||||
; PUSH DE
|
||||
; LD L,A
|
||||
; ;
|
||||
; LOGDRV_ENTRY_FIND LOGDRV
|
||||
; ;
|
||||
; ; [ ] custorm sector size
|
||||
; CALL CHECK_IDE_SECTOR_SIZE
|
||||
; JR C,.error
|
||||
; ;
|
||||
; 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 XH,D
|
||||
; LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER)
|
||||
; POP DE
|
||||
; POP IY
|
||||
; LD BC,1*256 + BIOS.DRV_READ
|
||||
; JP ToBIOS
|
||||
; ;
|
||||
; .error: POP DE
|
||||
; POP IY
|
||||
; LD A,DSS_Error.drv.UNKNOWN_FORMAT
|
||||
; RET
|
||||
;HL:IX - SECTOR
|
||||
; DE - ADDRESS
|
||||
; B - COUNTER
|
||||
; A'- PAGE
|
||||
; A - HDD LOG NUMBER
|
||||
;READ SECTOR
|
||||
LREADH: PUSH IY
|
||||
CALL SELHDD
|
||||
JR C,.error ; [ ] custorm sector size
|
||||
LD C,BIOS.DRV_READ_LONG
|
||||
RST ToBIOS
|
||||
.error: POP IY
|
||||
RET
|
||||
ReadLong: LD C,BIOS.DRV_READ_LONG
|
||||
JP Exec_BIOS
|
||||
; PUSH IY
|
||||
; CALL SelectDrive
|
||||
; JR C,.error ; [ ] custorm sector size
|
||||
; LD C,BIOS.DRV_READ_LONG
|
||||
; RST ToBIOS
|
||||
; .error: POP IY
|
||||
; RET
|
||||
|
||||
;HL:IX - SECTOR
|
||||
; DE - ADDRESS
|
||||
@ -531,53 +570,66 @@ LREADH: PUSH IY
|
||||
; A'- PAGE
|
||||
; A - HDD LOG NUMBER
|
||||
;WRITE SECTOR
|
||||
LWRITEH:
|
||||
PUSH IY
|
||||
CALL SELHDD
|
||||
JR C,.error ; [ ] custorm sector size
|
||||
LD C,BIOS.DRV_WRITE_LONG
|
||||
RST ToBIOS
|
||||
.error: POP IY
|
||||
RET
|
||||
WriteLong: LD C,BIOS.DRV_WRITE_LONG
|
||||
JP Exec_BIOS
|
||||
; PUSH IY
|
||||
; CALL SelectDrive
|
||||
; JR C,.error ; [ ] custorm sector size
|
||||
; LD C,BIOS.DRV_WRITE_LONG
|
||||
; RST ToBIOS
|
||||
; .error: POP IY
|
||||
; RET
|
||||
|
||||
;HL:IX - SECTOR
|
||||
; DE - ADDRESS
|
||||
; B - COUNTER
|
||||
; A - HDD LOG NUMBER
|
||||
;WRITE SECTOR
|
||||
WRITEH: PUSH IY
|
||||
CALL SELHDD
|
||||
JR C,.error ; [ ] custorm sector size
|
||||
LD C,BIOS.DRV_WRITE
|
||||
RST ToBIOS
|
||||
.error: POP IY
|
||||
RET
|
||||
Write: LD C,BIOS.DRV_WRITE
|
||||
JP Exec_BIOS
|
||||
; PUSH IY
|
||||
; CALL SelectDrive
|
||||
; JR C,.error ; [ ] custorm sector size
|
||||
; LD C,BIOS.DRV_WRITE
|
||||
; 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
|
||||
; DE - ADDRESS
|
||||
; B - COUNTER
|
||||
; A - HDD LOG NUMBER
|
||||
;CHECK SECTOR
|
||||
CHECKH: PUSH IY
|
||||
CALL SELHDD
|
||||
LD C,BIOS.DRV_VERIFY
|
||||
RST ToBIOS
|
||||
POP IY
|
||||
RET
|
||||
; CHECKH: PUSH IY
|
||||
; CALL SelectDrive
|
||||
; LD C,BIOS.DRV_VERIFY
|
||||
; RST ToBIOS
|
||||
; POP IY
|
||||
; 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 ]------------------------------;
|
||||
DEFINE_PARTITIONS:
|
||||
.FAT32_DOS: ;
|
||||
@ -647,7 +699,7 @@ DEFINE_PARTITIONS:
|
||||
JP Z,.FAT32_DOS
|
||||
;
|
||||
CP PartitionSysTypes.Win_Ext_LBA
|
||||
JR Z,.SubLevel
|
||||
JP Z,.SubLevel
|
||||
JP .NextPartition ; à §¤¥« ¥ ¯®¤¤¥à¦¨¢ ¥âáï
|
||||
;
|
||||
|
||||
@ -813,11 +865,11 @@ DEFINE_PARTITIONS:
|
||||
;
|
||||
|
||||
;!TEST <09>®¤áâà 客ª ®â ¯¥à¥¯®«¥¨ï â ¡«¨æë LOGDRV
|
||||
INC_DRV_COUNT: LD A,(INIT_H.count)
|
||||
INC_DRV_COUNT: LD A,(Init.count)
|
||||
INC A
|
||||
CP DSS_MAX_DRIVES_AMOUNT+1
|
||||
RET NC
|
||||
LD (INIT_H.count),A
|
||||
LD (Init.count),A
|
||||
RET
|
||||
|
||||
;=======================================================================
|
||||
@ -831,4 +883,4 @@ EXTDOSH: DW #0000
|
||||
OFFSECT: DW LOGDRV ;POINTER ON CURRENT DISK RECORD
|
||||
;=======================================================================
|
||||
|
||||
; ENDMODULE
|
||||
ENDMODULE
|
||||
@ -121,30 +121,30 @@
|
||||
;-----------------------------------------------------------
|
||||
; <20>à®áª ¨à®¢ âì á¨á⥬ã FDD/HDD ¤¥¢ ©áë ¨ RAM-¤¨áª¨
|
||||
;-----------------------------------------------------------
|
||||
INITDVC: XOR A
|
||||
LD (DRV_PAGE.LDRIVE),A ; á¡à. ï祩ªã
|
||||
LD HL,DEVICE
|
||||
LD (PDEVICE),HL ; ¢®ááâ. ï祩ªã
|
||||
; ‡ ç¨á⪠⠡«¨æ. <20>¥®¡ï§ ⥫ì®, ® ¬ «® «¨ çñ ¡ã¤¥â ¤ «ìè¥... ;[ ]
|
||||
LD HL,DEVICE
|
||||
LD (HL),#FF
|
||||
LD DE,DEVICE+1
|
||||
LD BC,DEVICE.Size + LOGDRV.Size + RAMDTBL.Size - 1
|
||||
LDIR
|
||||
; FDD ¤¥¢ ©áë
|
||||
CALL FDD_DRV.Init ; ã§ âì ç¨á«® FDD-¤¥¢ ©á®¢
|
||||
LD DE,FDD_DRV.API_TABLE ; ¤à¥á ®¡à ¡®â稪 ⥪. ¤¥¢ ©á
|
||||
CALL MAKEDVC ; ¨¨æ. â ¡«¨æã ¯¥à¥å®¤®¢
|
||||
; HDD ¤¥¢ ©áë
|
||||
.if_old: CALL INIT_H ; ¥á«¨ áâ à⥠¢¥àá¨ï BIOS ¥ ¯®¤å®¤¨â, â® £à㧨âìáï ¬®¦® ⮫쪮 á ¤¨áª¥âë, ¤«ï í⮣® âãâ § ¬¥ ª®¤ XOR A : RET
|
||||
LD DE,HDDRIVE
|
||||
CALL MAKEDVC
|
||||
; RAM-¤¨áª¨
|
||||
CALL INIT_RD
|
||||
LD DE,RMDRIVE
|
||||
CALL MAKEDVC
|
||||
XOR A
|
||||
RET
|
||||
INITDVC: XOR A
|
||||
LD (DRV_PAGE.LDRIVE),A ; á¡à. ï祩ªã
|
||||
LD HL,DEVICE
|
||||
LD (PDEVICE),HL ; ¢®ááâ. ï祩ªã
|
||||
; ‡ ç¨á⪠⠡«¨æ. <20>¥®¡ï§ ⥫ì®, ® ¬ «® «¨ çñ ¡ã¤¥â ¤ «ìè¥... ;[ ]
|
||||
LD HL,DEVICE
|
||||
LD (HL),#FF
|
||||
LD DE,DEVICE+1
|
||||
LD BC,DEVICE.Size + LOGDRV.Size + RAMDTBL.Size - 1
|
||||
LDIR
|
||||
; FDD ¤¥¢ ©áë
|
||||
CALL FDD_DRV.Init ; ã§ âì ç¨á«® FDD-¤¥¢ ©á®¢
|
||||
LD DE,FDD_DRV.API_TABLE ; ¤à¥á ®¡à ¡®â稪 ⥪. ¤¥¢ ©á
|
||||
CALL MAKEDVC ; ¨¨æ. â ¡«¨æã ¯¥à¥å®¤®¢
|
||||
; HDD ¤¥¢ ©áë
|
||||
.if_old: CALL IDE_DRV.Init ; ¥á«¨ áâ à⥠¢¥àá¨ï BIOS ¥ ¯®¤å®¤¨â, â® £à㧨âìáï ¬®¦® ⮫쪮 á ¤¨áª¥âë, ¤«ï í⮣® âãâ § ¬¥ ª®¤ XOR A : RET
|
||||
LD DE,IDE_DRV.API_TABLE
|
||||
CALL MAKEDVC
|
||||
; RAM-¤¨áª¨
|
||||
CALL INIT_RD
|
||||
LD DE,RMDRIVE
|
||||
CALL MAKEDVC
|
||||
XOR A
|
||||
RET
|
||||
|
||||
; ˆ¨æ¨¨à®¢ âì â ¡«¨æã ¯¥à¥å®¤®¢ ¤¥¢ ©á .
|
||||
; ¢å®¤: de= ¤à¥á ®¡à ¡®â稪 ¤¥¢ ©á
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit 7ef1dd98b491068d5a9ded34f5ff51430b7fa7e7
|
||||
Subproject commit 857938d1dbf3b332a5e9e8ccabfee531eb3848fa
|
||||
Loading…
Reference in New Issue
Block a user