mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
Почти доделал смену диска ATAPI
This commit is contained in:
parent
4bde8c738c
commit
a93bbd76ad
@ -31,6 +31,7 @@ CLOSE_FN:
|
||||
; [x] 15/11/2023 -bug with bad clusters ;!TEST
|
||||
LD A,(IY+_sFM.DRIVE)
|
||||
CALL OPENDSK
|
||||
JR C,.error
|
||||
;
|
||||
XOR A
|
||||
CALL SET_FM
|
||||
@ -83,4 +84,8 @@ CLOSE_FN:
|
||||
.NOTMODF:
|
||||
LD A,(.TMP)
|
||||
JP RES_FM
|
||||
;
|
||||
.error: POP DE
|
||||
POP DE
|
||||
RET
|
||||
;
|
||||
@ -222,8 +222,27 @@ OPENDSK: ;!TEST DRV.Open
|
||||
.error: CP DSS_Error.sys.INVALID_DRIVE
|
||||
SCF
|
||||
RET Z
|
||||
;
|
||||
CP DSS_Error.sys.MEDIA_CHANGED
|
||||
SCF
|
||||
RET Z
|
||||
;
|
||||
CP DSS_Error.sys.UNKNOWN_FORMAT
|
||||
SCF
|
||||
RET Z
|
||||
;
|
||||
LD A,DSS_Error.sys.NOT_READY
|
||||
RET
|
||||
|
||||
/*
|
||||
0000 0010 02
|
||||
0001 1100 1c
|
||||
0000 1101 0d
|
||||
|
||||
0001 0011
|
||||
*/
|
||||
|
||||
|
||||
;
|
||||
;[x] 29/02/2024 fix "open drive error"; 20/06/2024 fixed
|
||||
.error_bpb: PUSH AF ; á®åà 塞 ®¬¥à ®è¨¡ª¨
|
||||
|
||||
@ -1 +1 @@
|
||||
9
|
||||
12
|
||||
@ -335,7 +335,7 @@ SelectDrive: PUSH DE
|
||||
;
|
||||
; [ ] custom sector size
|
||||
CALL CHECK_IDE_SECTOR_SIZE
|
||||
LD A,DSS_Error.drv.UNKNOWN_FORMAT
|
||||
LD A,DSS_Error.sys.UNKNOWN_FORMAT
|
||||
JR C,.error_pop
|
||||
;
|
||||
;
|
||||
@ -463,7 +463,7 @@ GetParams: EX DE,HL
|
||||
JR .error
|
||||
|
||||
|
||||
; [ ] media change
|
||||
; [ ] media change - ã¡à âì ;!FIXIT
|
||||
.next: EX AF,AF
|
||||
JR NC,.NoMediaChange
|
||||
CP BIOS.Error.ATAPI.UnitAttention
|
||||
@ -545,9 +545,15 @@ Close: XOR A
|
||||
|
||||
;!TODO ¯®ª Open ¨ç¥£® ¥ ¤¥« ¥â ªà®¬¥ ¯à®¢¥àª¨ MediaCheck
|
||||
Open: CALL MediaCheck
|
||||
;!TODO
|
||||
;RET ‘
|
||||
RET Z
|
||||
RET C
|
||||
;!TODO ???
|
||||
;CALL READ_PARTITION_PARAMETERS
|
||||
;
|
||||
INC A
|
||||
RET NZ
|
||||
LD A,DSS_Error.sys.MEDIA_CHANGED
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
;[ ] media changed - bios 5x DETECT
|
||||
@ -588,23 +594,25 @@ MediaCheck: PUSH IY
|
||||
CALL SelectDrive
|
||||
JR NC,.next_step
|
||||
;
|
||||
CP DSS_Error.drv.UNKNOWN_FORMAT
|
||||
SCF
|
||||
CP DSS_Error.sys.UNKNOWN_FORMAT
|
||||
JR NZ,.exit
|
||||
AND A ; á¡à®á ZF
|
||||
SCF
|
||||
; [ ] media changed
|
||||
.next_step: PUSH AF ; ‘®åà 塞 CF ¨ ª®¤ ®è¨¡ª¨ UNKNOWN_FORMAT, ¥á«¨ CF=1
|
||||
LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER)
|
||||
LD C,BIOS.DRV_DETECT ;[ ] media change ¯¥à¥¤¥« âì «®£¨ªã âãâ ¨ ¢ ¡¨®á? ; !FIXIT
|
||||
LD C,BIOS.DRV_GET_PAR ;[ ] media change ¯¥à¥¤¥« âì «®£¨ªã âãâ ¨ ¢ ¡¨®á? ; !FIXIT
|
||||
PUSH IY
|
||||
RST ToBIOS
|
||||
POP IY
|
||||
EX AF,AF'
|
||||
JR NC,.next_check
|
||||
;
|
||||
CP BIOS.Error.ATAPI.UnitAttention
|
||||
JR Z,.Reinit
|
||||
SCF
|
||||
POP BC ; <20> « á á⥪
|
||||
.exit: POP IY
|
||||
.exit: SCF
|
||||
POP IY
|
||||
RET
|
||||
;
|
||||
.next_check: BIT 1,(IY + LOGDRV.MediaParameters)
|
||||
@ -619,7 +627,7 @@ MediaCheck: PUSH IY
|
||||
.Reinit: LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER)
|
||||
LD (CURRENT_DRIVE.Number),A
|
||||
LD (LOGDRV_OFFSET),IY
|
||||
;RES 1,(IY + LOGDRV.MediaParameters)
|
||||
;RES 1,(IY + LOGDRV.MediaParameters) - á¡à áë¢ ¥âáï ¢ DEFINE_PARTITIONS
|
||||
CALL DEFINE_PARTITIONS
|
||||
POP AF
|
||||
POP IY
|
||||
@ -633,9 +641,11 @@ MediaCheck: PUSH IY
|
||||
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
|
||||
; LD HL,DSS_MAX_SECTOR_SIZE
|
||||
; AND A
|
||||
; SBC HL,DE
|
||||
LD HL,-DSS_MAX_SECTOR_SIZE - 1
|
||||
ADD HL,DE
|
||||
RET
|
||||
;
|
||||
|
||||
@ -725,7 +735,7 @@ Exec_BIOS: PUSH IY
|
||||
RET
|
||||
;
|
||||
.exec: CALL SelectDrive
|
||||
RET C
|
||||
RET C ;!FIXIT ¯¥à¥¤¥« âì ®¬¥à ®è¨¡ª¨ á ¤à ©¢¥à ¤®á
|
||||
RST ToBIOS
|
||||
RET NC
|
||||
CP BIOS.Error.ATAPI.UnitAttention
|
||||
@ -799,11 +809,7 @@ DEFINE_PARTITIONS:
|
||||
CALL INC_DRV_COUNT
|
||||
RET NC
|
||||
;
|
||||
LD A,(CURRENT_DRIVE.Number)
|
||||
LD (IX + LOGDRV.PHISICAL_DRV_NUMBER),A
|
||||
LD DE,LOGDRV.TBL_Entry ;DSKITEM
|
||||
ADD IX,DE
|
||||
LD (LOGDRV_OFFSET),IX
|
||||
CALL .set_drv_tbl
|
||||
JP .NextPartition
|
||||
;
|
||||
.NotExtended: CP PartitionSysTypes.FAT16
|
||||
@ -824,8 +830,14 @@ DEFINE_PARTITIONS:
|
||||
JP Z,.SubLevel
|
||||
JP .NextPartition ; à §¤¥« ¥ ¯®¤¤¥à¦¨¢ ¥âáï
|
||||
;
|
||||
|
||||
.ATAPI_TST: ;JR .check_atapi ;!FIXIT CDFS
|
||||
.set_drv_tbl: LD A,(CURRENT_DRIVE.Number)
|
||||
LD (IX + LOGDRV.PHISICAL_DRV_NUMBER),A
|
||||
LD DE,LOGDRV.TBL_Entry ;DSKITEM
|
||||
ADD IX,DE
|
||||
LD (LOGDRV_OFFSET),IX
|
||||
RET
|
||||
;
|
||||
.CDFS_TST: ;JR .check_atapi ;!FIXIT CDFS
|
||||
;SCF
|
||||
;RET
|
||||
.check_atapi: LD A,(CURRENT_DRIVE.Number)
|
||||
@ -833,10 +845,22 @@ DEFINE_PARTITIONS:
|
||||
AND #F0
|
||||
CP DRIVE_CODES.SPRINTER.ATAPI
|
||||
SCF
|
||||
RET NZ
|
||||
;RET NZ
|
||||
PUSH AF
|
||||
;
|
||||
CALL GetSectorSize
|
||||
;BPB SECTOR ;!TODO ¥á«¨ CD-ROM, â® ¤à㣮© ®¬¥à ᥪâ®à
|
||||
CALL .set_LOGDRV
|
||||
POP AF
|
||||
RET NZ ; १ã«ìâ â CP DRIVE_CODES.SPRINTER.ATAPI
|
||||
; ¤«ï ¯à ¢¨«ì®£® ¢ë室 ¨§ ¯ àá¥à à §¤¥«®¢
|
||||
LD B,1
|
||||
PUSH BC
|
||||
;§ £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
LD A,#FF ; ¤«ï ¯à®¯ã᪠.tst_zipNoMBR ¨ § ¯¨á¨ ¢ LOGDRV.PARTITION_RECORD_NUM
|
||||
LD (CURRENT_SECTOR.Low),A
|
||||
JP .not_supported
|
||||
;
|
||||
.set_LOGDRV: ;BPB SECTOR ;!TODO ¥á«¨ CD-ROM, â® ¤à㣮© ®¬¥à ᥪâ®à
|
||||
LD IX,(LOGDRV_OFFSET)
|
||||
LD A,(CURRENT_DRIVE.Removable)
|
||||
LD (IX + LOGDRV.MediaParameters),A
|
||||
@ -853,13 +877,7 @@ DEFINE_PARTITIONS:
|
||||
; [ ] sector size
|
||||
LD (IX + LOGDRV.SECTOR_SIZE),C
|
||||
LD (IX + LOGDRV.SECTOR_SIZE + 1),B
|
||||
;
|
||||
; ¤«ï ¯à ¢¨«ì®£® ¢ë室 ¨§ ¯ àá¥à à §¤¥«®¢
|
||||
LD B,1
|
||||
PUSH BC
|
||||
;§ £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||
DEC A
|
||||
JP .not_supported
|
||||
RET
|
||||
;
|
||||
; ¢å®¤: B - bit0=1 removable, bit1=1 drive changed, bit7..2 reserved
|
||||
.Start: LD IX,0
|
||||
@ -883,7 +901,7 @@ DEFINE_PARTITIONS:
|
||||
;JR NZ,NODEFIN
|
||||
|
||||
; [ ] CDFS
|
||||
JR NZ,.ATAPI_TST
|
||||
JR NZ,.CDFS_TST
|
||||
;SCF
|
||||
;RET NZ
|
||||
;
|
||||
@ -927,7 +945,43 @@ DEFINE_PARTITIONS:
|
||||
ADD IY,DE
|
||||
POP BC
|
||||
DJNZ .DOSAGA
|
||||
AND A
|
||||
;
|
||||
.tst_zipNoMBR: ; [ ] zip no MBR
|
||||
; ⮫쪮 ¤«ï Removable media
|
||||
LD A,(CURRENT_DRIVE.Removable)
|
||||
AND %0000'0001
|
||||
RET Z
|
||||
; ⮫쪮 ¤«ï ATAPI
|
||||
LD A,(CURRENT_DRIVE.Number)
|
||||
LD B,A
|
||||
AND #F0
|
||||
CP DRIVE_CODES.SPRINTER.ATAPI
|
||||
JR NZ,.exit
|
||||
;
|
||||
XOR A
|
||||
LD HL,(CURRENT_SECTOR.Low)
|
||||
OR H
|
||||
OR L
|
||||
LD HL,(CURRENT_SECTOR.High)
|
||||
OR H
|
||||
OR L
|
||||
RET NZ
|
||||
;
|
||||
PUSH IY
|
||||
LD A,B
|
||||
LD C,BIOS.DRV_GET_PAR
|
||||
RST ToBIOS
|
||||
POP IY
|
||||
;
|
||||
LD B,XH
|
||||
LD C,XL
|
||||
CALL .set_LOGDRV
|
||||
LD A,(CURRENT_DRIVE.Removable)
|
||||
LD (IX + LOGDRV.MediaParameters),A
|
||||
LD (IX + LOGDRV.PARTITION_RECORD_NUM),#FF
|
||||
CALL .set_drv_tbl
|
||||
;
|
||||
.exit: AND A
|
||||
RET
|
||||
;
|
||||
.ParseExtended: LD HL,(EXT_Partition.Low)
|
||||
@ -970,7 +1024,7 @@ DEFINE_PARTITIONS:
|
||||
GetSectorSize: PUSH IY
|
||||
LD A,(CURRENT_DRIVE.Number)
|
||||
; sector size
|
||||
LD C,BIOS.DRV_GET_PAR
|
||||
LD C,BIOS.DRV_GET_PAR ; [ ] media change § ¬¥¨âì drv_detect ?
|
||||
RST ToBIOS
|
||||
JR NC,.no_err
|
||||
;
|
||||
|
||||
@ -87,7 +87,15 @@ cmd_dir: push de
|
||||
ld hl,Buffers.work.buffer1
|
||||
ld c,Dss.ChDir
|
||||
rst ToDSS
|
||||
;ld a,DSS_Error.sys.NOT_READY
|
||||
jr nc,.no_error
|
||||
;
|
||||
cp DSS_Error.sys.MEDIA_CHANGED
|
||||
jp nz,print_err_message
|
||||
call print_err_message
|
||||
;
|
||||
ld hl,Buffers.work.buffer1
|
||||
ld c,Dss.ChDir
|
||||
rst ToDSS
|
||||
jp c,print_err_message
|
||||
.no_error: ;
|
||||
ld hl,Buffers.bat_params.PRM1
|
||||
|
||||
@ -4,14 +4,16 @@
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_mkdir:
|
||||
ex de,hl
|
||||
;ld de,T9186 ; ¡ãä¥à
|
||||
ld de,Buffers.work.buffer1;
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||
RST ToDSS
|
||||
;ld hl,T9186 ; ¨¬ï ¯ ¯ª¨
|
||||
ld hl,Buffers.work.buffer1;
|
||||
ld c,Dss.MkDir ; á®§¤ âì ¯ ¯ªã
|
||||
RST ToDSS
|
||||
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
ret
|
||||
push bc
|
||||
jp cmd_rmdir.shared
|
||||
|
||||
; ex de,hl
|
||||
; ld de,Buffers.work.buffer1;
|
||||
; ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||
; RST ToDSS
|
||||
; ld hl,Buffers.work.buffer1 ; ¨¬ï ¯ ¯ª¨
|
||||
; ld c,Dss.MkDir ; á®§¤ âì ¯ ¯ªã
|
||||
; RST ToDSS
|
||||
; call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
; ret
|
||||
|
||||
@ -5,16 +5,12 @@
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_rename:
|
||||
ex de,hl
|
||||
;ld de,T9186
|
||||
ld de,Buffers.work.buffer1;
|
||||
ld c,Dss.GSwitch
|
||||
RST ToDSS
|
||||
;ld de,T9206
|
||||
ld de,Buffers.work.buffer+256;
|
||||
ld c,Dss.GSwitch
|
||||
RST ToDSS
|
||||
;ld hl,T9186
|
||||
;ld de,T9206
|
||||
ld hl,Buffers.work.buffer1;
|
||||
ld de,Buffers.work.buffer+256;
|
||||
ld c,Dss.Rename
|
||||
|
||||
@ -3,15 +3,16 @@
|
||||
; RD, RMDIR. “¤ «¨âì ¯ ¯ªã
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_rmdir:
|
||||
ex de,hl
|
||||
;ld de,T9186 ; ¡ãä¥à
|
||||
cmd_rmdir: ld c,Dss.RmDir ; á®§¤ âì ¯ ¯ªã
|
||||
push bc
|
||||
;
|
||||
.shared: ex de,hl
|
||||
ld de,Buffers.work.buffer1;
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||
RST ToDSS
|
||||
;ld hl,T9186 ; ¨¬ï ¯ ¯ª¨
|
||||
ld hl,Buffers.work.buffer1;
|
||||
ld c,Dss.RmDir ; 㤠«¨âì ¯ ¯ªã
|
||||
ld hl,Buffers.work.buffer1 ; ¨¬ï ¯ ¯ª¨
|
||||
POP BC
|
||||
RST ToDSS
|
||||
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
ret
|
||||
ret nc
|
||||
JP print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
;
|
||||
|
||||
@ -60,10 +60,21 @@ COMP: call EVALCMD ; (batch.asm)
|
||||
jr nc,.NOUP
|
||||
and #5F ; a..z -> A..Z
|
||||
.NOUP: sub "A" ; ®¬¥à ¤¨áª
|
||||
ld (.dsk),a
|
||||
ld c,Dss.ChDisk ; ᬥ¨âì ⥪. ¤¨áª
|
||||
RST ToDSS
|
||||
jp c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
|
||||
jr nc,.no_err
|
||||
;
|
||||
cp DSS_Error.sys.MEDIA_CHANGED
|
||||
jp nz,print_err_message
|
||||
;
|
||||
call print_err_message
|
||||
.dsk+1: ld a,0
|
||||
ld c,Dss.ChDisk ; ᬥ¨âì ⥪. ¤¨áª
|
||||
RST ToDSS
|
||||
jp c,print_err_message
|
||||
;
|
||||
.no_err:
|
||||
;!FIXIT âãâ ¢®ááâ ¢«¨¢ ¥âáï ¤¨à¥ªâ®à¨ï ¨ ¬®£ãâ ¡ëâì £«îª¨ ®¢®¬ ï¤à¥
|
||||
;!TODO ¤®áâ ¢ âì Buffers.sys_path ®â¤¥«ì® ¤«ï ª ¦¤®£® ¤¨áª (¨«¨ ¢ ï¤à¥ ᤥ« âì?)
|
||||
; â¥áâ áãé¥á⢮¢ ¨¥ ¯ ¯ª¨ 楫¥¢®¬ ¤¨áª¥
|
||||
|
||||
@ -1 +1 @@
|
||||
452
|
||||
456
|
||||
@ -1 +1 @@
|
||||
Subproject commit b3224fc3afac71c6b1d461ff54049e58657bbe5a
|
||||
Subproject commit aa0c67b6b30b02b1302145cd4d57b708130e2e0a
|
||||
Loading…
Reference in New Issue
Block a user