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