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
|
||||
;
|
||||
FAT_ReservedSectors:
|
||||
.FDD EQU 1
|
||||
.HDD EQU 8
|
||||
.FAT EQU 1
|
||||
.FAT32 EQU 32
|
||||
ENDMODULE
|
||||
;-----------------------------------------------------------------------
|
||||
@ -156,7 +155,7 @@ FAT_PARAMETERS:
|
||||
; .FAT.SERIAL_NUMBER DWORD 0 ;
|
||||
; .FAT.LABEL DB 'NO_LABEL ' ;
|
||||
; .ID_FAT DB 'FAT16 ' ;
|
||||
.PART2_FAT12_16_END EQU $
|
||||
.PART2_FAT12_16_SIZE EQU $
|
||||
|
||||
; FAT32
|
||||
.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
|
||||
CALL FORMAT_DRIVE
|
||||
CALL MAKE_LABEL_IN_DIR
|
||||
;!FIXIT
|
||||
;CALL MAKE_ROOT_DIR_LABEL ; ¯¥à¢ ï § ¯¨áì ¢ root dir - ¬¥âª , ¯®â®¬ 㫨
|
||||
CALL MAKE_LABEL_IN_DIR ; ¯¥à¢ ï § ¯¨áì ¢ root dir - ¬¥âª , ¯®â®¬ 㫨
|
||||
RET
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
@ -476,12 +474,12 @@ SET_RESERVED_AND_ROOTDIR:
|
||||
; ‘â ¢¨¬ ¤¥ä®«âë¥ § 票ï
|
||||
LD A,(FAT_PARAMETERS.DRIVE_TYPE)
|
||||
CP BOOT_SECTOR.Hard_Drive
|
||||
LD HL,CONSTANTS.FAT_ReservedSectors.HDD
|
||||
LD HL,CONSTANTS.FAT_ReservedSectors.FAT
|
||||
LD DE,CONSTANTS.FilesInRootDIR.HDD
|
||||
JR Z,.set_vars
|
||||
; #F0
|
||||
CP BOOT_SECTOR.Floppy_3x5_1x44
|
||||
LD HL,CONSTANTS.FAT_ReservedSectors.FDD
|
||||
;LD HL,CONSTANTS.FAT_ReservedSectors.FDD
|
||||
LD DE,CONSTANTS.FilesInRootDIR.FDD_HD
|
||||
JR Z,.set_vars
|
||||
; #F9
|
||||
@ -493,6 +491,14 @@ SET_RESERVED_AND_ROOTDIR:
|
||||
.set_vars: CALL .ChooseReserved
|
||||
EX DE,HL
|
||||
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
|
||||
;
|
||||
.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
|
||||
;
|
||||
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
|
||||
FORMAT_DRIVE: CALL MAKE_SYS_SECTORS
|
||||
CALL CLEAN_SECTOR_BUFFER
|
||||
; clean all fat tables at drive
|
||||
LD A,(VARIABLES.FAT_TYPE)
|
||||
@ -770,9 +764,27 @@ FORMAT_DRIVE: CALL CLEAN_SECTOR_BUFFER
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
MAKE_SYS_SECTORS:
|
||||
LD HL,FAT_PARAMETERS.PART2_FAT32
|
||||
LD BC,FAT_PARAMETERS.PART2_FAT32_SIZE + FAT_PARAMETERS.PART3_SHARED_SIZE
|
||||
CALL CLEAN_SECTOR_BUFFER
|
||||
LD HL,FAT_PARAMETERS.PART1
|
||||
LD DE,SECTOR_BUFFER
|
||||
LD BC,FAT_PARAMETERS.PART1_SIZE
|
||||
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 (SECTOR_BUFFER + BOOT_SECTOR.MBR_SIGNATURE),HL
|
||||
@ -780,14 +792,14 @@ MAKE_SYS_SECTORS:
|
||||
LD HL,0
|
||||
LD IX,0
|
||||
CALL WRITE_SECTOR_BUFFER
|
||||
LD HL,0
|
||||
LD IX,(FAT_PARAMETERS.CopyBootSector)
|
||||
CALL WRITE_SECTOR_BUFFER
|
||||
;
|
||||
LD A,(VARIABLES.FAT_TYPE)
|
||||
CP CONSTANTS.FAT32
|
||||
RET NZ
|
||||
;
|
||||
LD HL,0
|
||||
LD IX,(FAT_PARAMETERS.CopyBootSector)
|
||||
CALL WRITE_SECTOR_BUFFER
|
||||
CALL CLEAN_SECTOR_BUFFER
|
||||
LD HL,#AA55
|
||||
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:
|
||||
CALL CLEAN_SECTOR_BUFFER ;!FIXIT ᪮॥ ¢á¥£®, ¥ 㦮 ç¨áâ¨âì
|
||||
CALL CLEAN_SECTOR_BUFFER
|
||||
; make directory record
|
||||
LD HL,FAT_PARAMETERS.LABEL
|
||||
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)
|
||||
AND A
|
||||
JP Z,SHOW_VERSION ; ¤«¨ CMD áâப¨ ã«¥¢ ï
|
||||
@ -1044,7 +955,7 @@ PARSE_CMD: LD A,(HL)
|
||||
POP HL
|
||||
JR NC,.loop
|
||||
;
|
||||
CP DSS_Error.drv.UNKNOWN_FORMAT
|
||||
CP DSS_Error.sys.UNKNOWN_FORMAT
|
||||
JP NZ,STOP_ERROR
|
||||
; ¯¥à¥¡¨à ¥¬ ª«îç¨ "/"
|
||||
.loop: CALL .skip_space
|
||||
@ -1106,7 +1017,6 @@ JP_HL: EX DE,HL
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
;!FIXIT
|
||||
SHOW_VERSION: LD SP,(STOP_ERROR.Save_SP)
|
||||
LD HL,Version_Msg
|
||||
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 ; á®§¤ ñ¬ ¬¥âªã âãâ, ¥á«¨ ᨬ¢®«ë ¢ ¯®à浪¥
|
||||
EX DE,HL
|
||||
;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user