mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
...
This commit is contained in:
parent
36353e7d08
commit
61de8fd9a0
@ -482,7 +482,7 @@ write_to_BPB: PUSH BC
|
||||
|
||||
;
|
||||
write_no_BPB: ld a,(disk) ; ®¬¥à § ¤ ®£® ¤¨áª
|
||||
ld de,#55AA
|
||||
ld de,Dss.DRV.GenIOCTL.Enter
|
||||
ld bc,Dss.DRV.GenIOCTL.GetParams
|
||||
rst ToDSS.DRV
|
||||
ex af,af'
|
||||
|
||||
@ -31,8 +31,8 @@ BOOTDSK:
|
||||
;
|
||||
.loop: PUSH BC
|
||||
LD A,C
|
||||
LD DE,#55AA
|
||||
LD BC,256*0 + Dss.DRV.GenIOCTL
|
||||
LD DE,Dss.DRV.GenIOCTL.Enter
|
||||
LD BC,Dss.DRV.GenIOCTL.GetParams
|
||||
RST ToDSS.DRV
|
||||
;[x] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
LD A,C ; ®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª
|
||||
|
||||
@ -519,7 +519,9 @@ LOADDIR: ;!TODO optimize
|
||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L),HL
|
||||
LD HL,(CORE_BUFFERS.FatBuffer.RootDirStartCluster_H)
|
||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H),HL
|
||||
LD HL,#4000 ;!HARDCODE à §¬¥à ¤¨à¥ªâ®à¨¨
|
||||
|
||||
;LD HL,(CORE_BUFFERS.FatBuffer.BytesPerCluster) ; !FIXIT ¢ëç¨âë¢ âì ¯®«®áâìî ª â «®£
|
||||
LD HL,#4000 ; à §¬¥à ¤¨à¥ªâ®à¨¨
|
||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.F_SIZE),HL
|
||||
;
|
||||
.read_dir: LD HL,DIRPAGE.buffer ; ªã¤
|
||||
|
||||
@ -1 +1 @@
|
||||
994
|
||||
995
|
||||
@ -44,7 +44,7 @@ ReScanDRV:
|
||||
; [¨é¥¬ çâ® § ¤à ©¢]
|
||||
EX DE,HL
|
||||
; FDD?
|
||||
LD HL,FDDRIVE
|
||||
LD HL,FDD_DRV.API_TABLE
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JR Z,.nextN ; ¯à®¯ã᪠FDD ¤à ©¢®¢
|
||||
|
||||
@ -122,68 +122,86 @@
|
||||
; 12 (0Ch) - BUSY (DEVICE OPENED)
|
||||
; 13 (0Dh) - RESERVED
|
||||
|
||||
R_COM EQU #0F ;Command/Status
|
||||
R_TRK EQU #3F ;Track
|
||||
R_SEC EQU #5F ;Sector
|
||||
R_DAT EQU #7F ;Data
|
||||
R_DSK EQU #FF ;Drive Control
|
||||
; R_COM EQU #0F ;Command/Status
|
||||
; R_TRK EQU #3F ;Track
|
||||
; R_SEC EQU #5F ;Sector
|
||||
; R_DAT EQU #7F ;Data
|
||||
; R_DSK EQU #FF ;Drive Control
|
||||
; COM_B EQU #1B
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
MODULE FDD_DRV
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
COM_B EQU #1B
|
||||
|
||||
|
||||
;-------------------------------------------------
|
||||
; Ž¡à ¡®â稪 FDD (rst 18h)
|
||||
;-------------------------------------------------
|
||||
FDDRIVE:
|
||||
INC C
|
||||
API_TABLE: INC C
|
||||
DEC C
|
||||
JP Z,.INIT ;#00
|
||||
JP Z,Init ;#00 Init
|
||||
DEC C
|
||||
JP Z,.RESE ;#01
|
||||
JP Z,Open ;#01 Open
|
||||
DEC C
|
||||
JP Z,.STAT ;#02
|
||||
JP Z,Close ;#02 Close
|
||||
DEC C
|
||||
JP Z,.CHEK ;#03
|
||||
JP Z,MediaCheck ;#03 MediaCheck
|
||||
DEC C
|
||||
JP Z,.GBPB ;#04
|
||||
JP Z,GetBPB ;#04 GetBPB
|
||||
DEC C
|
||||
JP Z,.READD ;#05
|
||||
JP Z,Read ;#05 Read
|
||||
DEC C
|
||||
JP Z,.WRITED ;#06
|
||||
JP Z,Write ;#06 Write
|
||||
DEC C
|
||||
JP Z,.REMOV_F ;#07
|
||||
JP Z,Removable ;#07 Removable
|
||||
DEC C
|
||||
JP Z,.IOCTL_F ;#08
|
||||
JP Z,GenIOCTL ;#08 GenIOCTL
|
||||
DEC C
|
||||
JP Z,.RESRV_F ;#09
|
||||
.RESRV_F:
|
||||
LD A,DSS_Error.drv.INVALID_COMMAND
|
||||
JP Z,Reserved ;#09
|
||||
;
|
||||
Reserved: LD A,DSS_Error.drv.INVALID_COMMAND
|
||||
SCF
|
||||
RET
|
||||
|
||||
;Commands for restart #18
|
||||
.INIT: LD A,2 ;ª®«¨ç¥á⢮ FDD ¢ ª®¬¯¥ ;!FIXIT ¥á«¨ ®âª«îçã ¢ <20>ˆŽ‘?
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Commands for restart #18 ;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;
|
||||
Init: LD A,2 ;ª®«¨ç¥á⢮ FDD ¢ ª®¬¯¥ ;!FIXIT ¥á«¨ ®âª«îçã ¢ <20>ˆŽ‘?
|
||||
AND A
|
||||
RET
|
||||
; ; ;
|
||||
|
||||
.RESE: LD C,BIOS.DRV_RESET
|
||||
;
|
||||
Open: LD C,BIOS.DRV_RESET
|
||||
RST ToBIOS
|
||||
RET
|
||||
; ; ;
|
||||
|
||||
.STAT: XOR A
|
||||
;
|
||||
Close: XOR A
|
||||
RET
|
||||
; ; ;
|
||||
|
||||
.CHEK: ;!FIXIT ¯à®¢¥àïâì ‚ƒ93 ª®£¤ íâ® á⠥⠢®§¬®¦ë¬
|
||||
IF NON_REMOVABLE_FDD
|
||||
|
||||
;!FIXIT ¯à®¢¥àïâì ‚ƒ93 ª®£¤ íâ® á⠥⠢®§¬®¦ë¬
|
||||
MediaCheck: IF NON_REMOVABLE_FDD
|
||||
XOR A
|
||||
ELSE
|
||||
LD A,#FF
|
||||
OR A
|
||||
ENDIF
|
||||
RET
|
||||
; ; ;
|
||||
|
||||
|
||||
;DE - ADDRESS
|
||||
.GBPB: LD IX,0
|
||||
GetBPB: LD IX,0
|
||||
LD HL,0
|
||||
PUSH DE
|
||||
PUSH AF
|
||||
@ -208,18 +226,26 @@ FDDRIVE:
|
||||
RST ToBIOS
|
||||
XOR A
|
||||
RET
|
||||
;READTR:
|
||||
XOR A
|
||||
RET
|
||||
; ; ;
|
||||
|
||||
.READD: LD C,BIOS.DRV_READ
|
||||
|
||||
; !TODO read track?
|
||||
;READTR: XOR A
|
||||
; RET
|
||||
; ; ;
|
||||
|
||||
;
|
||||
Read: LD C,BIOS.DRV_READ
|
||||
RST ToBIOS
|
||||
RET
|
||||
; ; ;
|
||||
|
||||
.WRITED:
|
||||
LD C,BIOS.DRV_WRITE
|
||||
;
|
||||
Write: LD C,BIOS.DRV_WRITE
|
||||
RST ToBIOS
|
||||
RET
|
||||
; ; ;
|
||||
|
||||
|
||||
; 00 - GET DEVICE PARAMETERS
|
||||
; 01 - READ TRACK
|
||||
@ -227,36 +253,41 @@ FDDRIVE:
|
||||
; 80 - SET DEVICE PARAMETERS
|
||||
; 81 - WRITE TRACK
|
||||
; 82 - FORMAT TRACK
|
||||
.IOCTL_F:
|
||||
BIT 7,B
|
||||
GenIOCTL: BIT 7,B
|
||||
JR NZ,.O_CTL_F
|
||||
INC B
|
||||
DEC B
|
||||
JP Z,.FGETPRM
|
||||
; DEC B
|
||||
; JP Z,FRDTRAC
|
||||
; DEC B
|
||||
; JP Z,FCHTRAC
|
||||
JP Z,.GetParams
|
||||
;!TODO
|
||||
;DEC B
|
||||
;JP Z,.ReadTrack
|
||||
;DEC B
|
||||
;JP Z,.TestTRK
|
||||
;
|
||||
LD A,DSS_Error.drv.INVALID_COMMAND
|
||||
SCF
|
||||
RET
|
||||
|
||||
.O_CTL_F:
|
||||
RES 7,B
|
||||
;
|
||||
.O_CTL_F: RES 7,B
|
||||
INC B
|
||||
DEC B
|
||||
JP Z,.FSETPRM
|
||||
; DEC B
|
||||
; JP Z,FWRTRAC
|
||||
; DEC B
|
||||
; JP Z,FFRTRAC
|
||||
JP Z,.SetParams
|
||||
;!TODO
|
||||
;DEC B
|
||||
;JP Z,.WriteTRK
|
||||
;DEC B
|
||||
;JP Z,.FormatTRK
|
||||
;
|
||||
LD A,DSS_Error.drv.INVALID_COMMAND
|
||||
SCF
|
||||
RET
|
||||
; ; ;
|
||||
|
||||
|
||||
; ‚室: - A - Drive number
|
||||
; ‚ë室:
|
||||
; HL:DE - SECTORS ON LOGICAL DISK
|
||||
; C - PARTITION RECORD NUMBER IN DRIVE MBR must be 0 here ;[x] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
; C - PARTITION RECORD NUMBER IN DRIVE MBR. 0 for fdd ;[x] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
; HL' - CYLINDERS ON PHISICAL DISK
|
||||
; DE' - HEADS ON PHISICAL DISK
|
||||
; BC' - SECTORS PER TRACK ON PHISICAL DISK
|
||||
@ -267,42 +298,49 @@ FDDRIVE:
|
||||
; D5 - "1" RESERVED
|
||||
; D6 - ADDRESSING MODE LBA/CHS
|
||||
; D7 - "1" RESERVED
|
||||
.FGETPRM:
|
||||
EX DE,HL
|
||||
.GetParams: EX DE,HL
|
||||
LD BC,#55AA
|
||||
AND A
|
||||
AND #0F
|
||||
SBC HL,BC
|
||||
LD L,A
|
||||
JR Z,.next
|
||||
;
|
||||
LD A,DSS_Error.drv.GENERAL_FAILURE
|
||||
SCF
|
||||
RET NZ
|
||||
LD A,L
|
||||
AND #0F
|
||||
PUSH AF
|
||||
RET
|
||||
;
|
||||
.next: PUSH AF
|
||||
LD C,BIOS.DRV_GET_PAR
|
||||
RST ToBIOS
|
||||
JR C,.NONEF
|
||||
JR C,.NONE_FDD
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
LD A,H
|
||||
LD H,0
|
||||
.MULL1 ADD HL,HL
|
||||
;
|
||||
.mull_loop1: ADD HL,HL
|
||||
DEC A
|
||||
JR NZ,.MULL1
|
||||
; HL - SECTOR PER CYLLINDER
|
||||
JR NZ,.mull_loop1
|
||||
;
|
||||
; HL - SECTOR PER CYLLINDER
|
||||
; A=0 ZF=0 CF=0
|
||||
LD B,H
|
||||
LD C,L
|
||||
LD HL,0
|
||||
;LD HL,0
|
||||
;XOR A
|
||||
LD H,A
|
||||
LD L,A
|
||||
EX AF,AF'
|
||||
XOR A
|
||||
.MULL2 EX AF,AF'
|
||||
;
|
||||
.mull_loop2: EX AF,AF'
|
||||
ADD HL,BC
|
||||
ADC A,0
|
||||
DEC DE
|
||||
EX AF,AF'
|
||||
LD A,D
|
||||
OR E
|
||||
JR NZ,.MULL2
|
||||
JR NZ,.mull_loop2
|
||||
;
|
||||
; A=0 ZF=0 CF=0
|
||||
EX AF,AF'
|
||||
LD E,A
|
||||
EX DE,HL
|
||||
@ -311,21 +349,24 @@ FDDRIVE:
|
||||
POP HL
|
||||
POP AF
|
||||
EX AF,AF'
|
||||
; A=0 ZF=0 CF=0
|
||||
LD A,B
|
||||
LD C,L
|
||||
LD B,0
|
||||
LD C,L
|
||||
LD L,H
|
||||
LD H,B
|
||||
EX DE,HL
|
||||
EXX
|
||||
; A=0 ZF=0 CF=0
|
||||
LD C,0 ;[x] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
AND A
|
||||
RET
|
||||
|
||||
.NONEF POP AF
|
||||
;
|
||||
.NONE_FDD: POP BC
|
||||
LD A,DSS_Error.drv.INVALID_DRIVE
|
||||
SCF
|
||||
; CF=1
|
||||
RET
|
||||
; ; ;
|
||||
|
||||
|
||||
; HL:DE - SECTORS ON LOGICAL DISK
|
||||
@ -338,8 +379,7 @@ FDDRIVE:
|
||||
; D5 - "1" RESERVED
|
||||
; D6 - ADDRESSING MODE LBA/CHS
|
||||
; D7 - "1" RESERVED
|
||||
.FSETPRM:
|
||||
PUSH AF
|
||||
.SetParams: PUSH AF
|
||||
EXX
|
||||
EX DE,HL
|
||||
LD H,L
|
||||
@ -353,20 +393,26 @@ FDDRIVE:
|
||||
RST ToBIOS
|
||||
POP DE
|
||||
POP HL
|
||||
JR C,.NONEF
|
||||
JR C,.NONE_FDD
|
||||
POP AF
|
||||
LD C,BIOS.DRV_SET_PAR
|
||||
RST ToBIOS
|
||||
RET C
|
||||
AND A
|
||||
RET
|
||||
JP ToBIOS
|
||||
;RST ToBIOS
|
||||
;RET C
|
||||
;AND A
|
||||
;RET
|
||||
; ; ;
|
||||
|
||||
.REMOV_F:
|
||||
LD A,1
|
||||
AND A
|
||||
|
||||
Removable: ; LD A,1
|
||||
; AND A
|
||||
XOR A
|
||||
INC A
|
||||
RET
|
||||
; ; ;
|
||||
|
||||
;==============================================
|
||||
|
||||
ENDMODULE ; FDD_DRV
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
@ -132,8 +132,8 @@ INITDVC: XOR A
|
||||
LD BC,DEVICE.Size + LOGDRV.Size + RAMDTBL.Size - 1
|
||||
LDIR
|
||||
; FDD ¤¥¢ ©áë
|
||||
CALL FDDRIVE.INIT ; ã§ âì ç¨á«® FDD-¤¥¢ ©á®¢
|
||||
LD DE,FDDRIVE ; ¤à¥á ®¡à ¡®â稪 ⥪. ¤¥¢ ©á
|
||||
CALL FDD_DRV.Init ; ã§ âì ç¨á«® FDD-¤¥¢ ©á®¢
|
||||
LD DE,FDD_DRV.API_TABLE ; ¤à¥á ®¡à ¡®â稪 ⥪. ¤¥¢ ©á
|
||||
CALL MAKEDVC ; ¨¨æ. â ¡«¨æã ¯¥à¥å®¤®¢
|
||||
; HDD ¤¥¢ ©áë
|
||||
.if_old: CALL INIT_H ; ¥á«¨ áâ à⥠¢¥àá¨ï BIOS ¥ ¯®¤å®¤¨â, â® £à㧨âìáï ¬®¦® ⮫쪮 á ¤¨áª¥âë, ¤«ï í⮣® âãâ § ¬¥ ª®¤ XOR A : RET
|
||||
|
||||
@ -76,20 +76,24 @@ cmd_info: CALL Get_Path
|
||||
LD HL,.none_string
|
||||
LD DE,Buffers.bat_params.PRM7 ; Volume label
|
||||
CALL ncopy_string
|
||||
LD HL,.Unknown_FS
|
||||
LD DE,Buffers.bat_params.PRM8 ; Volume fikle system
|
||||
LD HL,.Unknown_str
|
||||
LD DE,Buffers.bat_params.PRM8 ; Volume file system
|
||||
CALL ncopy_string
|
||||
;
|
||||
POP BC
|
||||
PUSH BC
|
||||
LD A,C
|
||||
LD DE,#55AA
|
||||
LD DE,Dss.DRV.GenIOCTL.Enter
|
||||
LD BC,Dss.DRV.GenIOCTL.GetParams
|
||||
RST ToDSS.DRV
|
||||
JR C,.next_drv
|
||||
; !FIXIT ¥ ¢®§¢à é ¥â à §¬¥à ᥪâ®à , ¯®í⮬ã å प®à ¯® 512
|
||||
RST ToDSS.DRV ; !FIXIT ¥ ¢®§¢à é ¥â à §¬¥à ᥪâ®à , ¯®í⮬ã å प®à ¯® 512
|
||||
JR NC,.calc_size
|
||||
;
|
||||
LD HL,.Unknown_str
|
||||
LD DE,Buffers.bat_params.PRM5 ; Drive size
|
||||
CALL ncopy_string
|
||||
JR .print_info_2
|
||||
; HL:DE * 512 = A:HL:H'L'
|
||||
RL E
|
||||
.calc_size: RL E
|
||||
RL D
|
||||
RL L
|
||||
RL H
|
||||
@ -103,7 +107,7 @@ cmd_info: CALL Get_Path
|
||||
JR .convert_hex
|
||||
;
|
||||
.Collect_Msg: DZ " A: <WAITING>\r" ; ¯ âç¨âáï ¡ãª¢ ¤à ©¢ ¢ 横«¥
|
||||
.Unknown_FS: DZ "unknown"
|
||||
.Unknown_str: DZ "unknown"
|
||||
.none_string: DZ "none"
|
||||
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
433
|
||||
434
|
||||
Loading…
Reference in New Issue
Block a user