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
|
.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
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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
|
||||||
@ -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
|
||||||
Loading…
Reference in New Issue
Block a user