проверка DSS_MAX_SECTOR_SIZE для FDD

This commit is contained in:
Tolik 2025-04-16 04:49:07 +10:00
parent a51e56090b
commit 1430dec045
10 changed files with 86 additions and 116 deletions

View File

@ -1 +1 @@
30
31

View File

@ -249,8 +249,8 @@ ERR_MSG PUSH DE
FMESAGE INC DE
LD HL,ERR0
LD BC,ERR0.Size
LD HL,SYS_ERRORS
LD BC,SYS_ERRORS.Size
LCPIR XOR A
CPIR
RET PO

View File

@ -55,7 +55,7 @@ ReScanDRV:
; HDD! ‘¢¥àª  ¯® â ¡«¨æ¥ LOGDRV
JP Z,SCAN_TABLES.HARD_DRV
; RD?
LD HL,RMDRIVE
LD HL,RAMDSK_DRV.API_TABLE
AND A
SBC HL,DE
; RAM Drive! ‘¢¥àª  ¯® â ¡«¨æ¥ RAMDTBL
@ -173,7 +173,7 @@ Fill_if_Exists:
LD A,RAMDTBL.TBL_Entry
LD IY,RAMDTBL
CALL .RUN
LD DE,RMDRIVE
LD DE,RAMDSK_DRV.API_TABLE
RET NC
LD A,(.tbl)
DEC A ;!!!!! ¬®¦¥â ¡ëâì ¯¥à¥¯®«­¥­¨¥
@ -328,7 +328,7 @@ RAM_DRV:
; <20>®«ãç ¥¬ ­®¬¥à à ¬¤¨áª  ¢ OLD_TABLES.RAMDTBL
LD A,B
LD BC,OLD_TABLES.RAMDTBL
CALL GET_RAMDRV_NUM.skip_tbl
CALL RAMDSK_DRV.GET_RAMDRV_NUM.skip_tbl
LD (.cur_drv),BC
AND #0F
LD C,A ; ­®¬¥à à ¬¤¨áª 

View File

@ -140,8 +140,8 @@ INITDVC: XOR A
LD DE,IDE_DRV.API_TABLE
CALL MAKEDVC
; RAM-¤¨áި
CALL INIT_RD
LD DE,RMDRIVE
CALL RAMDSK_DRV.Init
LD DE,RAMDSK_DRV.API_TABLE
CALL MAKEDVC
XOR A
RET

View File

@ -580,40 +580,9 @@ Open: CALL MediaCheck
SCF
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
; ;
; ; [ ] media changed
; LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER)
; LD C,BIOS.DRV_DETECT ;[ ] media change ¯¥à¥¤¥« âì «®£¨ªã âãâ ¨ ¢ ¡¨®á? ; !FIXIT
; PUSH IY
; RST ToBIOS
; POP IY
; JR NC,.next_check
; ;
; CP BIOS.Error.ATAPI.UnitAttention
; JR Z,.Reinit
; JR .exit
; ;
; .next_check: BIT 1,(IY + LOGDRV.MediaParameters)
; JR NZ,.Reinit
; ;
; XOR A
; .exit: POP IY
; RET
; ;
; .Reinit: LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER)
; LD (CURRENT_DRIVE.Number),A
; LD (LOGDRV_OFFSET),IY
; ;RES 1,(IY + LOGDRV.MediaParameters)
; CALL DEFINE_PARTITIONS
; LD A,#FF ;!HARDCODE drive changed
; OR A
; POP IY
; RET
MediaCheck: PUSH IY
CALL SelectDrive.NoSector
JR NC,.next_step

View File

@ -172,7 +172,7 @@ Reserved: LD A,DSS_Error.drv.INVALID_COMMAND
;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
Init: LD A,2 ;ª®«¨ç¥á⢮ FDD ¢ ª®¬¯¥ ;!FIXIT   ¥á«¨ ®âª«îçã ¢ <20>ˆŽ?
Init: LD A,2 ;ª®«¨ç¥á⢮ FDD ¢ ª®¬¯¥
AND A
RET
; ; ;
@ -190,7 +190,7 @@ Open: PUSH AF
LD DE,-DSS_MAX_SECTOR_SIZE - 1 ; [ ] 15/04/25 ­¥ ¡ã¤¥â ç¨â âì ᥪâ®à ¡®«ìè¥ DSS_MAX_SECTOR_SIZE
; ZF = 0
LD A,DSS_Error.sys.UNKNOWN_FORMAT
OR A
OR A ; 㡨ࠥ¬ ZF, ¥á«¨ ¥áâì
;
ADD IX,DE ; ¥á«¨ à §¬¥à ᥪâ®à  ¡®«ìè¥, â® ®¡«®¬
RET
@ -202,7 +202,7 @@ Close: XOR A
; ; ;
;!FIXIT ¯à®¢¥àïâì ƒ93 ª®£¤  íâ® áâ ­¥â ¢®§¬®¦­ë¬
;!FIXIT ¯à®¢¥àïâì ƒ93 ª®£¤  (¥á«¨) íâ® áâ ­¥â ¢®§¬®¦­ë¬
MediaCheck: CALL Open
RET C
IF NON_REMOVABLE_FDD
@ -249,13 +249,13 @@ GetBPB: LD IX,0
; RET
; ; ;
; !FIXIT ¬®¦¥â 㬥à¥âì ­  à §¬¥à¥ ᥪâ®à  ¡®«ìè¥ 512 ¡ ©â®¢
Read: LD C,BIOS.DRV_READ
RST ToBIOS
RET
; ; ;
; !FIXIT ¬®¦¥â 㬥à¥âì ­  à §¬¥à¥ ᥪâ®à  ¡®«ìè¥ 512 ¡ ©â®¢
Write: LD C,BIOS.DRV_WRITE
RST ToBIOS
RET
@ -411,16 +411,10 @@ GenIOCTL: BIT 7,B
POP AF
LD C,BIOS.DRV_SET_PAR
JP ToBIOS
;RST ToBIOS
;RET C
;AND A
;RET
; ; ;
Removable: ; LD A,1
; AND A
XOR A
Removable: XOR A
INC A
RET
; ; ;

View File

@ -202,54 +202,57 @@
; OR #60 ;!HARDCODE ᤥ« âì ­®¬¥à  à §­ëå ãáâனá⢠ç¥à¥§ ¬¥âª¨
; ENDM
MODULE RAMDSK_DRV
; parser
RMDRIVE: INC C
API_TABLE: INC C
DEC C
JP Z,INIT_RD ; 0
JP Z,Init ; 0
DEC C
JR Z,RESET_RD ; 1
JR Z,Open ; 1
DEC C
JR Z,STATUS_RD ; 2
JR Z,Close ; 2
DEC C
JR Z,CHEK_RD ; 3
JR Z,MediaCheck ; 3
DEC C
JR Z,GBPB_RD ; 4
JR Z,GetBPB ; 4
DEC C
JR Z,READ_RD ; 5
JR Z,Read ; 5
DEC C
JR Z,WRITE_RD ; 6
JR Z,Write ; 6
DEC C
JR Z,REMOV_RD ; 7
JR Z,Removable ; 7
DEC C
JP Z,IOCTL_RD ; 8
JP Z,GenIOCTL ; 8
DEC C
JP Z,.error ; 9 RESR_H
DEC C
JP Z,LREAD_RD ; 10
JP Z,ReadLong ; 10
DEC C
JP Z,LWRITE_RD ; 11
.error:
LD A,DSS_Error.drv.INVALID_COMMAND
JP Z,WriteLong ; 11
;
.error: LD A,DSS_Error.drv.INVALID_COMMAND
SCF
RET
REMOV_RD:
RESET_RD:
STATUS_RD: XOR A
;
Removable:
Open:
Close: XOR A
RET
;
;!FIXIT ᤥ« âì ¢ SYS_PAGE ¤«ï à ¬¤¨áª®¢ ¯¥à¥¬¥­­ë¥ ¨ ¡à âì ®ââ㤠 §­ ç¥­¨¥
;!FIXIT ª ª-â® ®¯à¥¤¥«ïâì ᬥ­ã RMD?
; [x] 18/08/2024 ¯®ª  ­¥¬­®£® ª®áâë«ì­® ¨ ®¯ á­®
CHEK_RD: ;LD A,#FF
MediaCheck: ;LD A,#FF
;AND A
XOR A
;
RET
;DE - ADDRESS
GBPB_RD: LD IX,0
GetBPB: LD IX,0
LD HL,0
LD B,#01
;JP READ_RD
@ -258,7 +261,7 @@ GBPB_RD: LD IX,0
; DE - ADDRESS
; B - COUNT
; A - DRIVE
READ_RD: PUSH BC
Read: PUSH BC
CALL GET_RAMDRV_NUM
POP BC
LD C,BIOS.DRV_READ
@ -266,8 +269,7 @@ READ_RD: PUSH BC
; RST ToBIOS
; XOR A
; RET
LREAD_RD:
PUSH BC
ReadLong: PUSH BC
CALL GET_RAMDRV_NUM
POP BC
LD C,BIOS.DRV_READ_LONG
@ -281,8 +283,7 @@ LREAD_RD:
; DE - ADDRESS
; B - COUNT
; A - DRIVE
WRITE_RD:
PUSH BC
Write: PUSH BC
CALL GET_RAMDRV_NUM
POP BC
LD C,BIOS.DRV_WRITE
@ -291,8 +292,7 @@ WRITE_RD:
; XOR A
; RET
LWRITE_RD:
PUSH BC
WriteLong: PUSH BC
CALL GET_RAMDRV_NUM
POP BC
LD C,BIOS.DRV_WRITE_LONG
@ -358,7 +358,7 @@ LWRITE_RD:
;;;
;----------------------------------------------------------------------;!TEST
;S_P_P DB #00
INIT_RD:
Init:
; .SectorSize EQU 512 ;!HARDCODE
; LD HL,.SectorSize
; LD A,#80
@ -425,8 +425,7 @@ INIT_RD:
; 80 - SET DEVICE PARAMETERS
; 81 - WRITE TRACK
; 82 - FORMAT TRACK
IOCTL_RD:
BIT 7,B
GenIOCTL: BIT 7,B
JR NZ,.O_CTL_F
INC B
DEC B
@ -530,4 +529,5 @@ GET_RAMDRV_NUM: LD BC,RAMDTBL
RET
;
;ENDDRVR EQU $
ENDMODULE ;RAMDSK_DRV
;

View File

@ -3,18 +3,25 @@
; ¢å®¤: a=­®¬¥à ®è¨¡ª¨
;-------------------------------------------------
print_err_message:
ld hl,SYS_ERRORS ; ¬ áᨢ áâப
ld bc,SYS_ERRORS.Size ; à §¬¥à ¬ áᨢ 
;cp %1000'0000
RLA
jr nc,.set_de
;
;and %0111'1111
ld hl,DRV_ERRORS ; ¬ áᨢ áâப
ld bc,DRV_ERRORS.Size ; à §¬¥à ¬ áᨢ 
;
.set_de: SRL A
ld e,a
ld d,0
inc de
ld hl,ERR0 ; ¬ áᨢ áâப
ld bc,ERR0.Size ; à §¬¥à ¬ áᨢ 
call LCPIR ; ­ ©â¨ áâபã
call PRINTZ ; ä®à¬ â. ¢ë¢®¤ áâப¨
; call newline
jp newline
; ‚뢮¤ áâப¨ ®è¨¡ª¨
;A850D:
invalid_param:

View File

@ -1 +1 @@
489
494

@ -1 +1 @@
Subproject commit bd4546a854905998edab6144547b79aa673404f6
Subproject commit f533c03f52f53e581c794c1017b7b0d61d39dfbf