проверка 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 FMESAGE INC DE
LD HL,ERR0 LD HL,SYS_ERRORS
LD BC,ERR0.Size LD BC,SYS_ERRORS.Size
LCPIR XOR A LCPIR XOR A
CPIR CPIR
RET PO RET PO

View File

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

View File

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

View File

@ -580,40 +580,9 @@ Open: CALL MediaCheck
SCF SCF
RET RET
; ;
;[ ] media changed - bios 5x DETECT
; ¢ë室 A=#FF - changed, A=0 - not changed, ZF=1 - not changed
; MediaCheck: PUSH IY ;[ ] media changed - bios 5x DETECT
; 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 MediaCheck: PUSH IY
CALL SelectDrive.NoSector CALL SelectDrive.NoSector
JR NC,.next_step 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 AND A
RET RET
; ; ; ; ; ;
@ -190,9 +190,9 @@ Open: PUSH AF
LD DE,-DSS_MAX_SECTOR_SIZE - 1 ; [ ] 15/04/25 ­¥ ¡ã¤¥â ç¨â âì ᥪâ®à ¡®«ìè¥ DSS_MAX_SECTOR_SIZE LD DE,-DSS_MAX_SECTOR_SIZE - 1 ; [ ] 15/04/25 ­¥ ¡ã¤¥â ç¨â âì ᥪâ®à ¡®«ìè¥ DSS_MAX_SECTOR_SIZE
; ZF = 0 ; ZF = 0
LD A,DSS_Error.sys.UNKNOWN_FORMAT LD A,DSS_Error.sys.UNKNOWN_FORMAT
OR A OR A ; 㡨ࠥ¬ ZF, ¥á«¨ ¥áâì
; ;
ADD IX,DE ; ¥á«¨ à §¬¥à ᥪâ®à  ¡®«ìè¥, â® ®¡«®¬ ADD IX,DE ; ¥á«¨ à §¬¥à ᥪâ®à  ¡®«ìè¥, â® ®¡«®¬
RET RET
; ; ; ; ; ;
@ -202,7 +202,7 @@ Close: XOR A
; ; ; ; ; ;
;!FIXIT ¯à®¢¥àïâì ƒ93 ª®£¤  íâ® áâ ­¥â ¢®§¬®¦­ë¬ ;!FIXIT ¯à®¢¥àïâì ƒ93 ª®£¤  (¥á«¨) íâ® áâ ­¥â ¢®§¬®¦­ë¬
MediaCheck: CALL Open MediaCheck: CALL Open
RET C RET C
IF NON_REMOVABLE_FDD IF NON_REMOVABLE_FDD
@ -249,13 +249,13 @@ GetBPB: LD IX,0
; RET ; RET
; ; ; ; ; ;
; !FIXIT ¬®¦¥â 㬥à¥âì ­  à §¬¥à¥ ᥪâ®à  ¡®«ìè¥ 512 ¡ ©â®¢
Read: LD C,BIOS.DRV_READ Read: LD C,BIOS.DRV_READ
RST ToBIOS RST ToBIOS
RET RET
; ; ; ; ; ;
; !FIXIT ¬®¦¥â 㬥à¥âì ­  à §¬¥à¥ ᥪâ®à  ¡®«ìè¥ 512 ¡ ©â®¢
Write: LD C,BIOS.DRV_WRITE Write: LD C,BIOS.DRV_WRITE
RST ToBIOS RST ToBIOS
RET RET
@ -411,16 +411,10 @@ GenIOCTL: BIT 7,B
POP AF POP AF
LD C,BIOS.DRV_SET_PAR LD C,BIOS.DRV_SET_PAR
JP ToBIOS JP ToBIOS
;RST ToBIOS
;RET C
;AND A
;RET
; ; ; ; ; ;
Removable: ; LD A,1 Removable: XOR A
; AND A
XOR A
INC A INC A
RET RET
; ; ; ; ; ;

View File

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

View File

@ -3,16 +3,23 @@
; ¢å®¤: a=­®¬¥à ®è¨¡ª¨ ; ¢å®¤: a=­®¬¥à ®è¨¡ª¨
;------------------------------------------------- ;-------------------------------------------------
print_err_message: print_err_message:
ld e,a ld hl,SYS_ERRORS ; ¬ áᨢ áâப
ld d,0 ld bc,SYS_ERRORS.Size ; à §¬¥à ¬ áᨢ 
inc de ;cp %1000'0000
ld hl,ERR0 ; ¬ áᨢ áâப RLA
ld bc,ERR0.Size ; à §¬¥à ¬ áᨢ  jr nc,.set_de
call LCPIR ; ­ ©â¨ áâபã ;
call PRINTZ ; ä®à¬ â. ¢ë¢®¤ áâப¨ ;and %0111'1111
; call newline ld hl,DRV_ERRORS ; ¬ áᨢ áâப
jp newline ld bc,DRV_ERRORS.Size ; à §¬¥à ¬ áᨢ 
;
.set_de: SRL A
ld e,a
ld d,0
inc de
call LCPIR ; ­ ©â¨ áâபã
call PRINTZ ; ä®à¬ â. ¢ë¢®¤ áâப¨
jp newline
; ‚뢮¤ áâப¨ ®è¨¡ª¨ ; ‚뢮¤ áâப¨ ®è¨¡ª¨
@ -36,25 +43,25 @@ ECHO_MESSAGE:
; <20> ©â¨ áâப㠯® ¨­¤¥ªáã ; <20> ©â¨ áâப㠯® ¨­¤¥ªáã
; ¢å®¤: de=¨­¤¥ªá áâப¨ ; ¢å®¤: de=¨­¤¥ªá áâப¨
; ¢ë室: hl=áâப  ; ¢ë室: hl=áâப 
FMESAGE: inc de FMESAGE: inc de
ld hl,MAIN_MSG.TABLE ; ­ ç «® ¬ áᨢ  áâப ld hl,MAIN_MSG.TABLE ; ­ ç «® ¬ áᨢ  áâப
ld bc,MAIN_MSG.TABLE.Size ; à §¬¥à ¬ áᨢ  ld bc,MAIN_MSG.TABLE.Size ; à §¬¥à ¬ áᨢ 
LCPIR: xor a LCPIR: xor a
cpir cpir
ret po ret po
ret nz ret nz
;R11 ;R11
XOR A XOR A
CP (HL) CP (HL)
JR Z,.no_mess JR Z,.no_mess
; ;
dec de dec de
ld a,d ld a,d
or e or e
jr nz,LCPIR jr nz,LCPIR
ret ret
.no_mess: INC HL .no_mess: INC HL
RET RET
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;

View File

@ -1 +1 @@
489 494

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