mirror of
https://github.com/Tolik-Trek/FORMAT.git
synced 2026-06-15 09:21:40 +03:00
...
This commit is contained in:
parent
31c23144df
commit
36ac5ec831
5
data.z80
5
data.z80
@ -14,8 +14,7 @@ FilesInRootDIR:
|
|||||||
.HDD EQU 512
|
.HDD EQU 512
|
||||||
;
|
;
|
||||||
FAT_ReservedSectors:
|
FAT_ReservedSectors:
|
||||||
.FDD EQU 1
|
.FAT EQU 1
|
||||||
.HDD EQU 8
|
|
||||||
.FAT32 EQU 32
|
.FAT32 EQU 32
|
||||||
ENDMODULE
|
ENDMODULE
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
@ -156,7 +155,7 @@ FAT_PARAMETERS:
|
|||||||
; .FAT.SERIAL_NUMBER DWORD 0 ;
|
; .FAT.SERIAL_NUMBER DWORD 0 ;
|
||||||
; .FAT.LABEL DB 'NO_LABEL ' ;
|
; .FAT.LABEL DB 'NO_LABEL ' ;
|
||||||
; .ID_FAT DB 'FAT16 ' ;
|
; .ID_FAT DB 'FAT16 ' ;
|
||||||
.PART2_FAT12_16_END EQU $
|
.PART2_FAT12_16_SIZE EQU $
|
||||||
|
|
||||||
; FAT32
|
; FAT32
|
||||||
.PART2_FAT32 EQU $
|
.PART2_FAT32 EQU $
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
39
|
47
|
||||||
275
format.asm
275
format.asm
@ -145,9 +145,7 @@ DSS_DRIVE_FORMAT:
|
|||||||
;
|
;
|
||||||
MAKE_AUTO: CALL CALCULATE_FAT
|
MAKE_AUTO: CALL CALCULATE_FAT
|
||||||
CALL FORMAT_DRIVE
|
CALL FORMAT_DRIVE
|
||||||
CALL MAKE_LABEL_IN_DIR
|
CALL MAKE_LABEL_IN_DIR ; ¯¥à¢ ï § ¯¨áì ¢ root dir - ¬¥âª , ¯®â®¬ 㫨
|
||||||
;!FIXIT
|
|
||||||
;CALL MAKE_ROOT_DIR_LABEL ; ¯¥à¢ ï § ¯¨áì ¢ root dir - ¬¥âª , ¯®â®¬ 㫨
|
|
||||||
RET
|
RET
|
||||||
|
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
@ -476,12 +474,12 @@ SET_RESERVED_AND_ROOTDIR:
|
|||||||
; ‘â ¢¨¬ ¤¥ä®«âë¥ § 票ï
|
; ‘â ¢¨¬ ¤¥ä®«âë¥ § 票ï
|
||||||
LD A,(FAT_PARAMETERS.DRIVE_TYPE)
|
LD A,(FAT_PARAMETERS.DRIVE_TYPE)
|
||||||
CP BOOT_SECTOR.Hard_Drive
|
CP BOOT_SECTOR.Hard_Drive
|
||||||
LD HL,CONSTANTS.FAT_ReservedSectors.HDD
|
LD HL,CONSTANTS.FAT_ReservedSectors.FAT
|
||||||
LD DE,CONSTANTS.FilesInRootDIR.HDD
|
LD DE,CONSTANTS.FilesInRootDIR.HDD
|
||||||
JR Z,.set_vars
|
JR Z,.set_vars
|
||||||
; #F0
|
; #F0
|
||||||
CP BOOT_SECTOR.Floppy_3x5_1x44
|
CP BOOT_SECTOR.Floppy_3x5_1x44
|
||||||
LD HL,CONSTANTS.FAT_ReservedSectors.FDD
|
;LD HL,CONSTANTS.FAT_ReservedSectors.FDD
|
||||||
LD DE,CONSTANTS.FilesInRootDIR.FDD_HD
|
LD DE,CONSTANTS.FilesInRootDIR.FDD_HD
|
||||||
JR Z,.set_vars
|
JR Z,.set_vars
|
||||||
; #F9
|
; #F9
|
||||||
@ -493,6 +491,14 @@ SET_RESERVED_AND_ROOTDIR:
|
|||||||
.set_vars: CALL .ChooseReserved
|
.set_vars: CALL .ChooseReserved
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
CALL .ChooseFilesInRootDIR
|
CALL .ChooseFilesInRootDIR
|
||||||
|
;
|
||||||
|
LD A,(VARIABLES.FAT_TYPE)
|
||||||
|
CP CONSTANTS.FAT16
|
||||||
|
LD HL,'61' ; str FAT16
|
||||||
|
JR Z,.set_type
|
||||||
|
;
|
||||||
|
LD H,'2' ; str FAT12
|
||||||
|
.set_type: LD (FAT_PARAMETERS.ID_FAT + 3),HL
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
.for_fat32: LD A,(KEYS_PARAMETERS.FilesInRootDIR + KEYS_PARAMETERS.KEYS_STR.Status)
|
.for_fat32: LD A,(KEYS_PARAMETERS.FilesInRootDIR + KEYS_PARAMETERS.KEYS_STR.Status)
|
||||||
@ -620,19 +626,7 @@ MAKE_SERIAL: LD C,Dss.SysTime
|
|||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
FORMAT_DRIVE: CALL CLEAN_SECTOR_BUFFER
|
FORMAT_DRIVE: CALL MAKE_SYS_SECTORS
|
||||||
;
|
|
||||||
LD HL,FAT_PARAMETERS.PART1
|
|
||||||
LD DE,SECTOR_BUFFER
|
|
||||||
LD BC,FAT_PARAMETERS.PART1_SIZE
|
|
||||||
LDIR
|
|
||||||
;
|
|
||||||
LD A,(VARIABLES.FAT_TYPE)
|
|
||||||
CP CONSTANTS.FAT32
|
|
||||||
;!FIXIT
|
|
||||||
JP NZ,STOP_ERROR
|
|
||||||
;
|
|
||||||
CALL MAKE_SYS_SECTORS
|
|
||||||
CALL CLEAN_SECTOR_BUFFER
|
CALL CLEAN_SECTOR_BUFFER
|
||||||
; clean all fat tables at drive
|
; clean all fat tables at drive
|
||||||
LD A,(VARIABLES.FAT_TYPE)
|
LD A,(VARIABLES.FAT_TYPE)
|
||||||
@ -770,9 +764,27 @@ FORMAT_DRIVE: CALL CLEAN_SECTOR_BUFFER
|
|||||||
|
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
MAKE_SYS_SECTORS:
|
MAKE_SYS_SECTORS:
|
||||||
LD HL,FAT_PARAMETERS.PART2_FAT32
|
CALL CLEAN_SECTOR_BUFFER
|
||||||
LD BC,FAT_PARAMETERS.PART2_FAT32_SIZE + FAT_PARAMETERS.PART3_SHARED_SIZE
|
LD HL,FAT_PARAMETERS.PART1
|
||||||
|
LD DE,SECTOR_BUFFER
|
||||||
|
LD BC,FAT_PARAMETERS.PART1_SIZE
|
||||||
LDIR
|
LDIR
|
||||||
|
;
|
||||||
|
LD A,(VARIABLES.FAT_TYPE)
|
||||||
|
CP CONSTANTS.FAT32
|
||||||
|
JR Z,.set_32
|
||||||
|
;
|
||||||
|
LD HL,(FAT_PARAMETERS.PART2_FAT12_16)
|
||||||
|
LD (SECTOR_BUFFER + FAT_PARAMETERS.PART1_SIZE),HL
|
||||||
|
INC DE
|
||||||
|
INC DE
|
||||||
|
LD HL,FAT_PARAMETERS.PART3_SHARED
|
||||||
|
LD BC,FAT_PARAMETERS.PART3_SHARED_SIZE
|
||||||
|
JR .ldir
|
||||||
|
;
|
||||||
|
.set_32: LD HL,FAT_PARAMETERS.PART2_FAT32
|
||||||
|
LD BC,FAT_PARAMETERS.PART2_FAT32_SIZE + FAT_PARAMETERS.PART3_SHARED_SIZE
|
||||||
|
.ldir: LDIR
|
||||||
;
|
;
|
||||||
LD HL,#AA55
|
LD HL,#AA55
|
||||||
LD (SECTOR_BUFFER + BOOT_SECTOR.MBR_SIGNATURE),HL
|
LD (SECTOR_BUFFER + BOOT_SECTOR.MBR_SIGNATURE),HL
|
||||||
@ -780,14 +792,14 @@ MAKE_SYS_SECTORS:
|
|||||||
LD HL,0
|
LD HL,0
|
||||||
LD IX,0
|
LD IX,0
|
||||||
CALL WRITE_SECTOR_BUFFER
|
CALL WRITE_SECTOR_BUFFER
|
||||||
LD HL,0
|
|
||||||
LD IX,(FAT_PARAMETERS.CopyBootSector)
|
|
||||||
CALL WRITE_SECTOR_BUFFER
|
|
||||||
;
|
;
|
||||||
LD A,(VARIABLES.FAT_TYPE)
|
LD A,(VARIABLES.FAT_TYPE)
|
||||||
CP CONSTANTS.FAT32
|
CP CONSTANTS.FAT32
|
||||||
RET NZ
|
RET NZ
|
||||||
;
|
;
|
||||||
|
LD HL,0
|
||||||
|
LD IX,(FAT_PARAMETERS.CopyBootSector)
|
||||||
|
CALL WRITE_SECTOR_BUFFER
|
||||||
CALL CLEAN_SECTOR_BUFFER
|
CALL CLEAN_SECTOR_BUFFER
|
||||||
LD HL,#AA55
|
LD HL,#AA55
|
||||||
LD (SECTOR_BUFFER + _sFSinfo.SECTOR_SIGNATURE),HL
|
LD (SECTOR_BUFFER + _sFSinfo.SECTOR_SIGNATURE),HL
|
||||||
@ -876,9 +888,9 @@ WRITE_SECTOR_BUFFER:
|
|||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
; IN: HL:IX - rootdir's first sector
|
; IN: (VARIABLES.RootDirFirstSector_H), (VARIABLES.RootDirFirstSector_L)
|
||||||
MAKE_LABEL_IN_DIR:
|
MAKE_LABEL_IN_DIR:
|
||||||
CALL CLEAN_SECTOR_BUFFER ;!FIXIT ᪮॥ ¢á¥£®, ¥ 㦮 ç¨áâ¨âì
|
CALL CLEAN_SECTOR_BUFFER
|
||||||
; make directory record
|
; make directory record
|
||||||
LD HL,FAT_PARAMETERS.LABEL
|
LD HL,FAT_PARAMETERS.LABEL
|
||||||
LD DE,SECTOR_BUFFER
|
LD DE,SECTOR_BUFFER
|
||||||
@ -909,107 +921,6 @@ MAKE_LABEL_IN_DIR:
|
|||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
/*
|
|
||||||
|
|
||||||
PARSE_CMD: LD A,(HL)
|
|
||||||
INC HL
|
|
||||||
INC HL
|
|
||||||
AND A
|
|
||||||
JP Z,SHOW_VERSION
|
|
||||||
;
|
|
||||||
CALL .MAIN
|
|
||||||
RET NC
|
|
||||||
JP STOP_ERROR
|
|
||||||
;
|
|
||||||
.MAIN: PUSH HL
|
|
||||||
LD BC,Dss.EX_Path.GET_ALL
|
|
||||||
RST ToDSS
|
|
||||||
JP C,STOP_ERROR
|
|
||||||
; ¬ 㦠áâப ¢ ª®â®à®© ¥áâì ¤à ©¢, ® ¥â ¯ãâ¨
|
|
||||||
AND %0000'1100
|
|
||||||
XOR %0000'1000
|
|
||||||
JP NZ,STOP_ERROR
|
|
||||||
|
|
||||||
; ¯¥à¥¡¨à ¥¬ ª«îç¨ "/"
|
|
||||||
.loop: POP HL
|
|
||||||
LD DE,SECTOR_BUFFER
|
|
||||||
LD C,Dss.GSwitch
|
|
||||||
RST ToDSS
|
|
||||||
PUSH HL
|
|
||||||
;
|
|
||||||
LD A,(SECTOR_BUFFER)
|
|
||||||
CP '/' ;
|
|
||||||
JR Z,.SET_KEY
|
|
||||||
;
|
|
||||||
AND A
|
|
||||||
EX DE,HL
|
|
||||||
LD HL,(SECTOR_BUFFER + 1)
|
|
||||||
LD BC,-':'
|
|
||||||
ADC HL,BC
|
|
||||||
EX DE,HL
|
|
||||||
JR Z,.get_drv
|
|
||||||
JP STOP_ERROR
|
|
||||||
;
|
|
||||||
;
|
|
||||||
.SET_KEY: LD HL,SECTOR_BUFFER+1
|
|
||||||
LD A,(HL)
|
|
||||||
EX AF,AF'
|
|
||||||
INC HL
|
|
||||||
LD A,(HL)
|
|
||||||
INC HL
|
|
||||||
AND A
|
|
||||||
JP NZ,STOP_ERROR ; ¥¯à ¢¨«ìë© ª«îç
|
|
||||||
;
|
|
||||||
.cont_set: EX AF,AF'
|
|
||||||
LD IX,KEYS_PARAMETERS.TABLE
|
|
||||||
LD B,KEYS_PARAMETERS.TABLE.Elements
|
|
||||||
LD DE,KEYS_PARAMETERS.KEYS_STR
|
|
||||||
;
|
|
||||||
.loop_key: CP (IX + KEYS_PARAMETERS.KEYS_STR.Key)
|
|
||||||
JR NZ,.next
|
|
||||||
;
|
|
||||||
EX DE,HL
|
|
||||||
LD L,(IX + KEYS_PARAMETERS.KEYS_STR.Procedure)
|
|
||||||
LD H,(IX + KEYS_PARAMETERS.KEYS_STR.Procedure + 1)
|
|
||||||
LD A,L
|
|
||||||
OR H
|
|
||||||
CALL NZ,JP_HL
|
|
||||||
EX DE,HL
|
|
||||||
LD A,KEYS_PARAMETERS.Status.On
|
|
||||||
JR NC,.set_stat
|
|
||||||
;
|
|
||||||
LD A,KEYS_PARAMETERS.Status.Ignored
|
|
||||||
.set_stat: LD (IX + KEYS_PARAMETERS.KEYS_STR.Status),A
|
|
||||||
JR .loop
|
|
||||||
;
|
|
||||||
.next: ADD IX,DE
|
|
||||||
DJNZ .loop_key
|
|
||||||
JP STOP_ERROR ; ¥¯à ¢¨«ìë© ª«îç
|
|
||||||
;
|
|
||||||
.get_drv: ; ¤®áâ ñ¬ ¨¬ï ¤à ©¢ (®® ¡¥§ ª«îç "/")
|
|
||||||
LD A,(VARIABLES.CurrentDrive)
|
|
||||||
INC A
|
|
||||||
JP NZ,STOP_ERROR ; ¥¯à ¢¨«ìë© ª«îç
|
|
||||||
;
|
|
||||||
;PUSH HL
|
|
||||||
LD HL,SECTOR_BUFFER
|
|
||||||
LD DE,SECTOR_BUFFER + 3
|
|
||||||
LD BC,Dss.EX_Path.GET_DRIVE
|
|
||||||
RST ToDSS
|
|
||||||
JP C,STOP_ERROR ; ¥¯à ¢¨«ìë© ¤à ©¢
|
|
||||||
;
|
|
||||||
LD (VARIABLES.CurrentDrive),A
|
|
||||||
; ⮫쪮 ¤«ï ⮣®, ç⮡ ®¡®¢¨âì ¯ à ¬¥âàë ¤à ©¢ (¢¤à㣠¤¨áª¥âã ᬥ¨«¨?)
|
|
||||||
LD C,Dss.ChDisk
|
|
||||||
RST ToDSS
|
|
||||||
JR NC,.loop
|
|
||||||
;
|
|
||||||
CP DSS_Error.drv.UNKNOWN_FORMAT
|
|
||||||
JR Z,.loop
|
|
||||||
JP STOP_ERROR ; ¥¯à ¢¨«ìë© ¤à ©¢
|
|
||||||
; .no_err_drv: POP HL
|
|
||||||
; RET
|
|
||||||
*/
|
|
||||||
PARSE_CMD: LD A,(HL)
|
PARSE_CMD: LD A,(HL)
|
||||||
AND A
|
AND A
|
||||||
JP Z,SHOW_VERSION ; ¤«¨ CMD áâப¨ ã«¥¢ ï
|
JP Z,SHOW_VERSION ; ¤«¨ CMD áâப¨ ã«¥¢ ï
|
||||||
@ -1044,7 +955,7 @@ PARSE_CMD: LD A,(HL)
|
|||||||
POP HL
|
POP HL
|
||||||
JR NC,.loop
|
JR NC,.loop
|
||||||
;
|
;
|
||||||
CP DSS_Error.drv.UNKNOWN_FORMAT
|
CP DSS_Error.sys.UNKNOWN_FORMAT
|
||||||
JP NZ,STOP_ERROR
|
JP NZ,STOP_ERROR
|
||||||
; ¯¥à¥¡¨à ¥¬ ª«îç¨ "/"
|
; ¯¥à¥¡¨à ¥¬ ª«îç¨ "/"
|
||||||
.loop: CALL .skip_space
|
.loop: CALL .skip_space
|
||||||
@ -1106,7 +1017,6 @@ JP_HL: EX DE,HL
|
|||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
;!FIXIT
|
|
||||||
SHOW_VERSION: LD SP,(STOP_ERROR.Save_SP)
|
SHOW_VERSION: LD SP,(STOP_ERROR.Save_SP)
|
||||||
LD HL,Version_Msg
|
LD HL,Version_Msg
|
||||||
LD C,Dss.PChars
|
LD C,Dss.PChars
|
||||||
@ -1133,115 +1043,6 @@ GET_KEY_FAT: DI
|
|||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
;!FIXIT
|
|
||||||
/*
|
|
||||||
SET_LABEL: POP HL
|
|
||||||
EX (SP),HL
|
|
||||||
; LD DE,SECTOR_BUFFER
|
|
||||||
; LD C,Dss.GSwitch
|
|
||||||
; RST ToDSS
|
|
||||||
; EX (SP),HL
|
|
||||||
; PUSH HL
|
|
||||||
;
|
|
||||||
;LD HL,SECTOR_BUFFER
|
|
||||||
; LD A,(HL)
|
|
||||||
; INC HL
|
|
||||||
; OR A
|
|
||||||
; SCF
|
|
||||||
; RET C ; ª«îç ¡¥§ ¬¥âª¨
|
|
||||||
;
|
|
||||||
LD A,(HL)
|
|
||||||
INC HL
|
|
||||||
CP '"'
|
|
||||||
SCF
|
|
||||||
RET NZ ; ¬¥âª ç¨ ¥âáï ¥ á ª ¢ë窨
|
|
||||||
;
|
|
||||||
LD DE,SECTOR_BUFFER ; á®§¤ ñ¬ ¬¥âªã âãâ, ¥á«¨ ᨬ¢®«ë ¢ ¯®à浪¥
|
|
||||||
LD C,FAT_PARAMETERS.LABEL.Size
|
|
||||||
LD B,C
|
|
||||||
LD A,(HL)
|
|
||||||
CP ' '+1
|
|
||||||
RET C ; no_name
|
|
||||||
;
|
|
||||||
CALL .loop1
|
|
||||||
CALL C,.skip_label
|
|
||||||
EX (SP),HL
|
|
||||||
JP (HL)
|
|
||||||
|
|
||||||
;
|
|
||||||
.loop1: LD A,(HL)
|
|
||||||
AND A
|
|
||||||
SCF
|
|
||||||
RET Z
|
|
||||||
;
|
|
||||||
;
|
|
||||||
CP #80
|
|
||||||
JR NC,.sym_ok
|
|
||||||
;
|
|
||||||
CP #22
|
|
||||||
JR Z,.end_label
|
|
||||||
CP #7C
|
|
||||||
SCF
|
|
||||||
RET Z ; no_name
|
|
||||||
CP #2A
|
|
||||||
JR C,.check_3A
|
|
||||||
CP #30
|
|
||||||
JR NC,.check_3A
|
|
||||||
CP #2D
|
|
||||||
JR Z,.sym_ok
|
|
||||||
SCF
|
|
||||||
RET ; no_name
|
|
||||||
;
|
|
||||||
.check_3A: CP #3A
|
|
||||||
JR C,.check_5B
|
|
||||||
CP #40
|
|
||||||
JR NC,.check_5B
|
|
||||||
RET ; no_name
|
|
||||||
|
|
||||||
.check_5B: CP #5B
|
|
||||||
JR C,.sym_ok
|
|
||||||
CP #5E
|
|
||||||
RET C ; no_name
|
|
||||||
.sym_ok: LD (DE),A
|
|
||||||
INC HL
|
|
||||||
INC DE
|
|
||||||
DJNZ .loop1
|
|
||||||
LD A,(HL)
|
|
||||||
CP '"'
|
|
||||||
SCF
|
|
||||||
RET NZ
|
|
||||||
;
|
|
||||||
.end_label: LD A,B
|
|
||||||
CP C
|
|
||||||
SCF
|
|
||||||
RET Z ; áâ ¤ àâ ï ¬¥âª
|
|
||||||
;
|
|
||||||
INC B ; ç⮡ ¥ âà â¨âì ¡ ©âë ¯à®¢¥àªã ®«ì
|
|
||||||
EX DE,HL
|
|
||||||
.loop2: LD (HL)," "
|
|
||||||
INC HL
|
|
||||||
DJNZ .loop2
|
|
||||||
INC DE
|
|
||||||
PUSH DE
|
|
||||||
; B=0, C=FAT_PARAMETERS.LABEL.Size
|
|
||||||
LD HL,SECTOR_BUFFER
|
|
||||||
LD DE,FAT_PARAMETERS.LABEL
|
|
||||||
LDIR
|
|
||||||
POP HL
|
|
||||||
AND A
|
|
||||||
RET
|
|
||||||
;
|
|
||||||
.skip_label: LD A,(HL)
|
|
||||||
AND A
|
|
||||||
SCF
|
|
||||||
RET Z
|
|
||||||
;
|
|
||||||
CP '/'
|
|
||||||
SCF
|
|
||||||
RET Z
|
|
||||||
INC HL
|
|
||||||
JR .skip_label
|
|
||||||
*/
|
|
||||||
SET_LABEL: LD HL,SECTOR_BUFFER ; á®§¤ ñ¬ ¬¥âªã âãâ, ¥á«¨ ᨬ¢®«ë ¢ ¯®à浪¥
|
SET_LABEL: LD HL,SECTOR_BUFFER ; á®§¤ ñ¬ ¬¥âªã âãâ, ¥á«¨ ᨬ¢®«ë ¢ ¯®à浪¥
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
;
|
;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user