This commit is contained in:
Anatoliy Belyanskiy 2024-01-06 00:55:03 +10:00
parent d6ed41730c
commit f734b2a361
2 changed files with 78 additions and 92 deletions

@ -1 +1 @@
Subproject commit d1ce63928bdbb44e48b311f9d4a0005c2f44fcd4
Subproject commit 24e062942e2c89a1bcd5817cc82316b52186f86c

View File

@ -6,25 +6,25 @@
; MS-DOS utilites
;********************************************
;************************************************
;* <09>ணࠬ¬  ç⥭¨ï/§ ¯¨á¨ MS-DOS ¤¨áª®¢ *
;* 1. €¤à¥á ¡ãä¥à  - HL *
;* 2. <20>®¬¥à ᥪâ®à  - DE *
;* 3. —¨á«® ᥪâ®à®¢ - B *
;* 4. Š®¬ ­¤  - C *
;* 5. ‘âà ­¨æ  އ“ - A *
;************************************************
HDD_REDIR:
POP AF
CALL HD_CMD
RET NC
JP HDD_ERROR
MSD_R_W_UT:
PUSH AF
CALL DISK_REDIR
CP #40
JR NC,HDD_REDIR
JR C,.NOT_HDD
;************************************************
;* <20>®¤¯à®£à ¬¬  ç⥭¨ï/§ ¯¨á¨ MS-DOS ¤¨áª®¢ *
;* 1. €¤à¥á ¡ãä¥à  - HL *
;* 2. <20>®¬¥à ᥪâ®à  - DE *
;* 3. —¨á«® ᥪâ®à®¢ - B *
;* 4. Š®¬ ­¤  - C *
;* 5. ‘âà ­¨æ  އ“ - A *
;************************************************
.HDD: POP AF
CALL HD_CMD
RET NC
JP HDD_ERROR
;************************************************
.NOT_HDD:
POP AF
EX AF,AF'
LD A,C
@ -417,21 +417,19 @@ SET_1440:
READ_BPB:
CALL DISK_REDIR
CP #40
JR NC,HDD_REDIR2
JR NC,.HDD_REDIR2
CP 4
JP NC,ERROR_MSDOS
JP NC,.ERROR_MSDOS
CALL SET_DISK
CALL MAIN_BPB
CALL .MAIN
RET NC
JP ERROR_MSDOS
HDD_REDIR2:
CALL MAIN_BPB
JP .ERROR_MSDOS
.HDD_REDIR2:
CALL .MAIN
RET NC
SPACIAL_BPB:
.SPACIAL:
LD IX,0
LD DE,63
LD A,SYS_PAGE
@ -439,43 +437,38 @@ SPACIAL_BPB:
LD C,BIOS.HDD_READ and #BF
LD B,1
CALL MSD_R_W_UT
CALL BPB_PARAMS
CALL READ_BPB.PARAMS
RET NC
JP ERROR_MSDOS
MAIN_BPB:
;LD IX,0
;LD DE,0
LD A,SYS_PAGE
JP .ERROR_MSDOS
.MAIN: LD A,SYS_PAGE
LD HL,MS_BPB
LD C,BIOS.HDD_READ_BPB and #BF
;LD B,1
CALL MSD_R_W_UT
CALL BPB_PARAMS
RET
;CALL BPB_PARAMS
;RET
; LD C,18H
; LD A,(OPER_DISK)
; CALL HD_CMD
; LD C,18H
; LD A,(OPER_DISK)
; CALL HD_CMD
; ;
; DI
; IN A,(PAGE3)
; EX AF,AF'
; LD A,SYS_PAGE
; OUT (PAGE3),A
; ;
; LD A,(MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ ­  â४
; LD L,A
; ;
; EX AF,AF'
; OUT (PAGE3),A
; EI
; ;
; LD A,(OPER_DISK)
; LD C,19H
; CALL HD_CMD
; DI
; IN A,(PAGE3)
; EX AF,AF'
; LD A,SYS_PAGE
; OUT (PAGE3),A
;
; LD A,(MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ ­  â४
; LD L,A
;
; EX AF,AF'
; OUT (PAGE3),A
; EI
;
; LD A,(OPER_DISK)
; LD C,19H
; CALL HD_CMD
BPB_PARAMS:
.PARAMS:
DI
IN A,(PAGE3)
EX AF,AF'
@ -484,35 +477,32 @@ BPB_PARAMS:
LD A,(MS_BPB+FORM_CODE)
CP #F0
JP C,ERROR_BPB
JP C,.ERROR_BPB
LD HL,MS_BPB+FAT_ID
LD DE,FAT1_MSG
LD DE,.FAT1_MSG
LD B,4
R_BPB_L1:
LD A,(DE)
.L1: LD A,(DE)
CP ' '
JR NZ,R_BPB_L11
JR NZ,.L11
INC DE
JR R_BPB_L1
R_BPB_L11:
CP (HL)
JR NZ,PC_DOS_BPB
JR .L1
.L11: CP (HL)
JR NZ,.PC_DOS
INC HL
INC DE
DJNZ R_BPB_L1
DJNZ .L1
LD A,(HL)
CP '6'
LD HL,#81FF ; FAT16 ä« £
JR Z,BPB_FAT
JR Z,.FAT
CP '2'
JP NZ,ERROR_BPB
JP NZ,.ERROR_BPB
PC_DOS_BPB:
.PC_DOS:
LD HL,#01FF ; FAT12 ä« £
BPB_FAT:
LD (FAT_FLAG),HL
.FAT: LD (FAT_FLAG),HL
LD A,(MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ ­  â४
LD (MSD_SECS),A
@ -522,11 +512,10 @@ BPB_FAT:
LD IX,0
LD HL,0 ; ¢ëç¨á«¨âì ­ ç «ì­ë© ᥪâ®à FAT
JR Z,NO_LD_SPECIAL
JR Z,.NO_LD_SPECIAL
LD IX,(MS_BPB+SPECIAL_SECS)
LD HL,(MS_BPB+SPECIAL_SECS+2)
NO_LD_SPECIAL:
.NO_LD_SPECIAL:
LD BC,0
LD DE,(MS_BPB+RESERV_SECS)
@ -540,11 +529,11 @@ NO_LD_SPECIAL:
LD BC,0
LD A,(MS_BPB+FATS_NUM) ; ª®«¨ç¥á⢮ FATs
NEXT_ADD:
.NEXT_ADD:
ADD IX,DE
ADC HL,BC
DEC A
JR NZ,NEXT_ADD
JR NZ,.NEXT_ADD
LD (MSD_CAT_SEC),IX ; ­ ç «ì­ë© ᥪâ®à DIR
LD (MSD_CAT_SEC2),HL ; ­ ç «ì­ë© ᥪâ®à DIR
@ -566,11 +555,11 @@ NEXT_ADD:
EX DE,HL
DEC HL
XOR A
NEXT_ADD2:
.NEXT_ADD2:
INC A
JR Z,ERROR_BPB
JR Z,.ERROR_BPB
SBC HL,BC
JR NC,NEXT_ADD2
JR NC,.NEXT_ADD2
EX DE,HL
LD E,A ; A - ç¨á«® ᥪâ®à®¢ ¢ DIR
@ -589,11 +578,11 @@ NEXT_ADD2:
LD A,(MS_BPB+CLAST_SIZE)
LD D,A
LD A,0
NEXT_ADD3:
.NEXT_ADD3:
ADD HL,BC ; ‚ëç¨á«¥­¨¥ ¤«¨­ë ª« áâ¥à 
ADC A,0
DEC D
JR NZ,NEXT_ADD3
JR NZ,.NEXT_ADD3
LD (CLASTER_LEN),HL
LD B,0
@ -603,31 +592,28 @@ NEXT_ADD3:
LD HL,0
LD BC,(MS_BPB+S_P_T)
LD A,(MS_BPB+H_P_S)
BPB_L1: ; ‚›—ˆ‘‹ˆ’œ ŠŽ‹ˆ—…‘’‚Ž …ŠŽ<E28099>Ž <20>ˆˆ<E280B9><EFBFBD>
.BPB_L1:; ‚›—ˆ‘‹ˆ’œ ŠŽ‹ˆ—…‘’‚Ž …ŠŽ<E28099>Ž <20>ˆˆ<E280B9><EFBFBD>
ADD HL,BC
DEC A
JR NZ,BPB_L1
JR NZ,.BPB_L1
LD (S_X_H),HL
;
EX AF,AF'
OUT (PAGE3),A
EI
AND A
RET
ERROR_BPB:
.ERROR_BPB:
EX AF,AF'
OUT (PAGE3),A
SCF
EI
RET
ERROR_MSDOS:
.ERROR_MSDOS:
LD HL,MSG_3
JP AUTO_03E4
FAT1_MSG: DB 'FAT1'
.FAT1_MSG:
DB 'FAT1'
;********************************************
READ_NEXT_DIR:
DI
@ -713,7 +699,7 @@ LOOP_TRK:
INC A
JR NZ,LOOP_TRK
POP BC
JP ERROR_BPB
JP READ_BPB.ERROR_BPB
SEC_ENDER:
ADD HL,BC