mirror of
https://github.com/Tolik-Trek/FORMAT.git
synced 2026-06-15 09:21:40 +03:00
first beta
This commit is contained in:
parent
bb0a225030
commit
8955783ba6
48
Messages.z80
48
Messages.z80
@ -88,22 +88,50 @@ PARAMS_MSG: BYTE "\r\nDrive "
|
||||
PARAMS_MSG: BYTE "\r\nDrive "
|
||||
.disk: BYTE "A: "
|
||||
BYTE "will be formatted using the current settings:\r\n\r\n"
|
||||
BYTE "Partition size:\t"
|
||||
BYTE "Partition size:\t "
|
||||
.fullSize: BYTE " bytes\r\n"
|
||||
BYTE "Available size:\t"
|
||||
BYTE "Available size:\t "
|
||||
.dataSize: BYTE " bytes\r\n"
|
||||
BYTE "Unused space:\t"
|
||||
BYTE "Unused space:\t "
|
||||
.unused: BYTE " bytes\r\n"
|
||||
BYTE "Clusters:\t"
|
||||
.Clusters: BYTE " \r\n"
|
||||
BYTE "Cluster size:\t"
|
||||
BYTE "Clusters:\t "
|
||||
.Clusters: BYTE " \r\n"
|
||||
BYTE "Cluster size:\t "
|
||||
.Clu_size: BYTE " bytes\r\n"
|
||||
BYTE "File system:\t"
|
||||
BYTE "File system:\t "
|
||||
.FATtxt: BYTE "FAT \r\n"
|
||||
BYTE "Serial:\t\t"
|
||||
BYTE "Serial:\t\t "
|
||||
.Serial: BYTE "0000-0000\r\n"
|
||||
BYTE "Label:\t\t"
|
||||
.LabelTxt: BYTE "NO LABEL \r\n\r\n"
|
||||
BYTE "Label:\t\t ", '"'
|
||||
.LabelTxt: BYTE 'NO LABEL "',"\r\n\r\n"
|
||||
BYTE 'Press "Y" for format or any other key to exit', "\r\n"
|
||||
BYTE 0
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
FORMATING_MSG: DZ "\rFormating drive. Please wait...\r\n"
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
DONE_MSG: DZ "Done!\r\n\r\n"
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
CANCELED_MSG: DZ "\r‘ancelled!\r\n\r\n"
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
HELP_MSG: BYTE "DDF it`s quck formating utility.\r\n"
|
||||
BYTE "First parameter - drive letter.\r\n"
|
||||
BYTE "Available keys:\r\n"
|
||||
BYTE "/? - for this help,\r\n"
|
||||
BYTE '/l "label" - for label.',"\r\n"
|
||||
BYTE "Example:\r\n"
|
||||
DZ 'format e: /l "dsk label"',"\r\n\r\n"
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
39
Strings.asm
39
Strings.asm
@ -35,8 +35,11 @@ PRINT_5BYTES: PUSH BC
|
||||
CALL GET_BIG_DIG
|
||||
; DE':DE = 100,000,000
|
||||
CALL .skip_1
|
||||
POP DE ; "000 000 000 000"
|
||||
LD HL,L40BIT.Str ; "0000000000"
|
||||
;
|
||||
; ä®à¬ â¨à®¢ ¨¥ ¯® à §àï¤ ¬
|
||||
POP DE ; "000.000.000.000"
|
||||
PUSH DE
|
||||
LD HL,L40BIT.Str ; "000000000000"
|
||||
LDI
|
||||
LDI
|
||||
LD A,(HL)
|
||||
@ -44,7 +47,7 @@ PRINT_5BYTES: PUSH BC
|
||||
CP " "
|
||||
JR Z,1F
|
||||
;
|
||||
LD A,"," ; à §¤. à §à冷¢
|
||||
LD A,"." ; à §¤. à §à冷¢
|
||||
1: LD (DE),A
|
||||
INC DE
|
||||
LDI
|
||||
@ -54,7 +57,7 @@ PRINT_5BYTES: PUSH BC
|
||||
CP " "
|
||||
JR Z,1F
|
||||
;
|
||||
LD A,"," ; à §¤. à §à冷¢
|
||||
LD A,"." ; à §¤. à §à冷¢
|
||||
1: LD (DE),A
|
||||
INC DE
|
||||
LDI
|
||||
@ -64,13 +67,33 @@ PRINT_5BYTES: PUSH BC
|
||||
CP " "
|
||||
JR Z,1F
|
||||
;
|
||||
LD A,"," ; à §¤. à §à冷¢
|
||||
LD A,"." ; à §¤. à §à冷¢
|
||||
1: LD (DE),A
|
||||
INC DE
|
||||
LDI
|
||||
LDI
|
||||
LDI
|
||||
;SCF
|
||||
;
|
||||
POP HL
|
||||
LD D,H
|
||||
LD E,L
|
||||
LD BC,15 + 1 ;!HARDCODE ¤«¨ ¢ë室®£® ¡ãä¥à á ä®à¬ â¨à®¢ ë¬ ç¨á«®¬
|
||||
.loop_space: DEC C
|
||||
INC B
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
SUB ' '
|
||||
JR Z,.loop_space
|
||||
;
|
||||
DEC HL
|
||||
LD A,B
|
||||
LD B,0
|
||||
LDIR
|
||||
LD B,A
|
||||
EX DE,HL
|
||||
.loop2: LD (HL),' '
|
||||
INC HL
|
||||
DJNZ .loop2
|
||||
RET
|
||||
;
|
||||
.skip_1: EXX
|
||||
@ -184,9 +207,7 @@ GET_BIG_DIG: LD B,"0"-1
|
||||
RET
|
||||
;
|
||||
L40BIT: DB " " ; ¬ àª¥à ¤«ï ix-1
|
||||
.Str: DB " " ; 00
|
||||
L32BIT_: DB " " ; 000000000
|
||||
.end: DB "0"
|
||||
.Str: DB " 0" ; 12 § ª®¢
|
||||
;
|
||||
; SIZE_BUFFER: db " " ; ¬ àª¥à ¤«ï ix-1
|
||||
; .high db " " ; "00"
|
||||
|
||||
@ -40,7 +40,7 @@
|
||||
; ®¬¥à ¢¥àᨨ (0..9)
|
||||
VERS EQU 0
|
||||
; ®¬¥à ¬®¤¨ä¨ª 樨 (0..99)
|
||||
MODF EQU 50
|
||||
MODF EQU 60
|
||||
; ®¬¥à ¡¨«¤ (0..999)
|
||||
BUILD EQU lua_BUILD
|
||||
;
|
||||
|
||||
47
data.z80
47
data.z80
@ -33,30 +33,47 @@ FAT_ReservedSectors:
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
MACRO FAT_TYPES_LINE vol_size, clu_size, fat_type
|
||||
WORD vol_size, clu_size
|
||||
DWORD vol_size
|
||||
WORD clu_size
|
||||
BYTE fat_type
|
||||
ENDM
|
||||
|
||||
MODULE TABLES
|
||||
; VOL SIZE CLUSTER SIZE FAT TYPE
|
||||
FAT_TYPES: FAT_TYPES_LINE #0800, 32768, CONSTANTS.FAT32 ; > 32768
|
||||
FAT_TYPES_LINE #0400, 16384, CONSTANTS.FAT32 ; 16384..32768 Mb
|
||||
FAT_TYPES_LINE #0200, 8192, CONSTANTS.FAT32 ; 8192..16384 Mb
|
||||
FAT_TYPES_LINE #0080, 4096, CONSTANTS.FAT32 ; 2048..8192 Mb
|
||||
FAT_TYPES_LINE #0060, 32768, CONSTANTS.FAT16 ; 1536..2047 Mb
|
||||
FAT_TYPES_LINE #0040, 16384, CONSTANTS.FAT16 ; 1023..1535 Mb
|
||||
FAT_TYPES_LINE #0020, 8192, CONSTANTS.FAT16 ; 511..1023 Mb
|
||||
FAT_TYPES_LINE #0010, 4096, CONSTANTS.FAT16 ; 256..511 Mb
|
||||
FAT_TYPES_LINE #0008, 2048, CONSTANTS.FAT16 ; 128..256 Mb
|
||||
FAT_TYPES_LINE #0004, 1024, CONSTANTS.FAT16 ; 64..128 Mb
|
||||
FAT_TYPES_LINE #0002, 512, CONSTANTS.FAT16 ; 32..64 Mb
|
||||
; ¥á«¨ ¬¥ìè¥, â® FAT12
|
||||
.LineSize EQU 5
|
||||
FAT_TYPES: FAT_TYPES_LINE #04000000, 32768, CONSTANTS.FAT32 ; > 16383
|
||||
FAT_TYPES_LINE #02000000, 16384, CONSTANTS.FAT32 ; 8191..16383 Mb
|
||||
FAT_TYPES_LINE #01000000, 8192, CONSTANTS.FAT32 ; 4095..8191 Mb
|
||||
FAT_TYPES_LINE #007FFE80, 4096, CONSTANTS.FAT32 ; 2048..4095 Mb
|
||||
FAT_TYPES_LINE #00400140, 32768, CONSTANTS.FAT16 ; 1023..2047 Mb
|
||||
FAT_TYPES_LINE #002002A0, 16384, CONSTANTS.FAT16 ; 511..1023 Mb
|
||||
FAT_TYPES_LINE #00100350, 8192, CONSTANTS.FAT16 ; 255..511 Mb
|
||||
FAT_TYPES_LINE #000803A8, 4096, CONSTANTS.FAT16 ; 127..255 Mb
|
||||
FAT_TYPES_LINE #0001FED0, 2048, CONSTANTS.FAT16 ; 32..127 Mb
|
||||
FAT_TYPES_LINE #0000FF80, 8192, CONSTANTS.FAT12 ; 16..32 Mb
|
||||
FAT_TYPES_LINE #00007FD8, 4096, CONSTANTS.FAT12 ; 8..16 Mb
|
||||
FAT_TYPES_LINE #00004004, 2048, CONSTANTS.FAT12 ; 4..8 Mb
|
||||
FAT_TYPES_LINE #0000201A, 1024, CONSTANTS.FAT12 ; 2..4 Mb
|
||||
FAT_TYPES_LINE #000012C0, 512, CONSTANTS.FAT12 ; 1,2..2 Mb
|
||||
FAT_TYPES_LINE #000005A0, 1024, CONSTANTS.FAT12 ; 0,36..1.1 Mb
|
||||
FAT_TYPES_LINE #00000008, 512, CONSTANTS.FAT12 ; 0..0,35 Mb
|
||||
; ¥á«¨ ¬¥ìè¥, â® error
|
||||
.LineSize EQU 7
|
||||
.Records EQU ($ - FAT_TYPES)/.LineSize
|
||||
ENDMODULE
|
||||
;
|
||||
; ¤«ï ¤¢ãå â ¡«¨æ FAT „«ï ®¤®©
|
||||
; #007FFE80 #007FFC80 ; 2048..8191 Mb
|
||||
; #00400140 #003FFF40 ; 1023..2047 Mb
|
||||
; #002002A0 #002000A0 ; 511..1023 Mb
|
||||
; #00100350 #00100150 ; 255..511 Mb
|
||||
; #000803A8 #000801A8 ; 127..255 Mb
|
||||
; #0001FED0 #0001FEB8 ; 32..127 Mb
|
||||
; #0000FF80 #0000FF68 ; 16..32 Mb
|
||||
; #00007FD8 #00007FC0 ; 8..16 Mb
|
||||
; #00004004 #00003FEC ; 4..8 Mb
|
||||
; #0000201A #00002002 ; 2..4 Mb
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
MODULE KEYS_PARAMETERS
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
69
|
||||
95
|
||||
BIN
fat_table.xlsx
Normal file
BIN
fat_table.xlsx
Normal file
Binary file not shown.
116
format.asm
116
format.asm
@ -153,11 +153,13 @@ DSS_DRIVE_FORMAT:
|
||||
;
|
||||
MAKE_AUTO: CALL CALCULATE_FAT
|
||||
CALL SHOW_FORMAT_PARAMETERS
|
||||
JP C,STOP_ERROR ; abort
|
||||
;JP C,STOP_ERROR ; abort
|
||||
CALL FORMAT_DRIVE
|
||||
CALL MAKE_LABEL_IN_DIR ; ¯¥à¢ ï § ¯¨áì ¢ root dir - ¬¥âª , ¯®â®¬ 㫨
|
||||
JP C,STOP_ERROR
|
||||
LD B,DSS_Error.sys.NO_ERROR
|
||||
LD HL,DONE_MSG
|
||||
LD (EXIT.msg),HL
|
||||
JP EXIT
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
@ -178,7 +180,7 @@ CALCULATE_FAT: CALL .STEP1 ;
|
||||
RST ToDSS.DRV
|
||||
JR NC,.set_hidden
|
||||
;
|
||||
CP BIOS.Error.InvalidSubFunction
|
||||
CP DSS_Error.drv.INVALID_COMMAND
|
||||
JP NZ,STOP_ERROR
|
||||
; ¥á«¨ ¥â â ª®© ¯®¤äãªæ¨¨ ¢ ¤à ©¢¥à¥, ⮠ᬥ饨¥ = 0
|
||||
LD HL,0
|
||||
@ -320,6 +322,8 @@ CALCULATE_FAT: CALL .STEP1 ;
|
||||
STOP_ERROR:
|
||||
.Save_SP+1: LD SP,0
|
||||
LD B,DSS_Error.sys.INVALID_FUNCTION
|
||||
LD HL,Error_Msg
|
||||
LD (EXIT.msg),HL
|
||||
;!TODO
|
||||
|
||||
EXIT: LD C,Dss.Exit
|
||||
@ -328,13 +332,13 @@ EXIT: LD C,Dss.Exit
|
||||
LD C,Dss.ChDir
|
||||
RST ToDSS
|
||||
;
|
||||
POP BC
|
||||
LD A,B
|
||||
AND A
|
||||
JP Z,ToDSS
|
||||
; POP BC
|
||||
; LD A,B
|
||||
; AND A
|
||||
; JP Z,ToDSS
|
||||
;
|
||||
PUSH BC
|
||||
LD HL,Error_Msg
|
||||
; PUSH BC
|
||||
.msg+1: LD HL,Error_Msg
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
;
|
||||
@ -679,36 +683,47 @@ GET_DRIVE_TYPE: LD A,(FAT_PARAMETERS.BPB_PHISICAL_DRIVE_NUMBER)
|
||||
; <- DE - CLUSTER SIZE.
|
||||
; C - FAT TYPE.
|
||||
AUTO_CHOOSE_FAT_PARAMS:
|
||||
LD DE,(VARIABLES.VOLUME_SIZE_BYTES + 3)
|
||||
LD DE,(VARIABLES.VOLUME_SIZE_BYTES + 1)
|
||||
EXX
|
||||
LD DE,(VARIABLES.VOLUME_SIZE_BYTES + 3) ; 00:0000:0000
|
||||
LD IX,TABLES.FAT_TYPES
|
||||
LD A,TABLES.FAT_TYPES.Records
|
||||
LD BC,TABLES.FAT_TYPES.LineSize
|
||||
.loop: LD L,(IX)
|
||||
LD H,(IX+1)
|
||||
.loop: LD L,(IX+2)
|
||||
LD H,(IX+3)
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JR C,.found
|
||||
JR NZ,.next
|
||||
;
|
||||
EXX
|
||||
LD L,(IX)
|
||||
LD H,(IX+1)
|
||||
SBC HL,DE
|
||||
EXX
|
||||
JR C,.found
|
||||
JR Z,.found
|
||||
;
|
||||
ADD IX,BC
|
||||
.next: ADD IX,BC
|
||||
DEC A
|
||||
JR NZ,.loop
|
||||
; ã á FAT12 c ª« áâ¥à®¬ ¢ 512
|
||||
; ¤® ¯à®¢¥à¨âì à §¤¥« ¬¨¨¬ «ìë© à §¬¥à ¤«ï FAT
|
||||
; sec_bpb + sec_fat + sec_root_dir + sec_for_data
|
||||
LD A,D
|
||||
OR E
|
||||
JR NZ,.found
|
||||
;
|
||||
LD HL,(VARIABLES.VOLUME_SIZE_BYTES + 1)
|
||||
LD DE,8
|
||||
SBC HL,DE
|
||||
; LD A,D
|
||||
; OR E
|
||||
; JR NZ,.found
|
||||
; ;
|
||||
; LD HL,(VARIABLES.VOLUME_SIZE_BYTES + 1)
|
||||
; LD DE,8
|
||||
; SBC HL,DE
|
||||
RET C ; à §¤¥« ᫨誮¬ ¬ « ¤«ï FAT12 (<2048)
|
||||
.found: ; ¤®áâ ñ¬ ¯ à ¬¥âàë ¨§ â ¡«¨æë
|
||||
DI
|
||||
LD (.restore_SP),SP
|
||||
LD SP,IX
|
||||
POP HL ; 宫®á⮥
|
||||
POP HL ; 宫®á⮥
|
||||
POP DE ; CLUSTER SIZE
|
||||
POP BC ; C - FAT TYPE
|
||||
LD A,C
|
||||
@ -1054,7 +1069,7 @@ PARSE_CMD: LD A,(HL)
|
||||
INC HL
|
||||
AND %1101'1111
|
||||
SUB 'A'
|
||||
JP C,STOP_ERROR
|
||||
JP C,SHOW_HELP_NO_DISK
|
||||
;
|
||||
LD (VARIABLES.CurrentDrive),A
|
||||
LD D,A
|
||||
@ -1065,7 +1080,7 @@ PARSE_CMD: LD A,(HL)
|
||||
AND ~' '
|
||||
ADD A,E
|
||||
SUB ':'
|
||||
JP NZ,STOP_ERROR
|
||||
JP NZ,SHOW_HELP_NO_DISK
|
||||
; ⮫쪮 ¤«ï ⮣®, ç⮡ ®¡®¢¨âì ¯ à ¬¥âàë ¤à ©¢ (¢¤à㣠¤¨áª¥âã ᬥ¨«¨?)
|
||||
PUSH HL
|
||||
LD A,D
|
||||
@ -1180,7 +1195,7 @@ SHOW_FORMAT_PARAMETERS:
|
||||
LD HL,(FAT_PARAMETERS.ID_FAT+3)
|
||||
LD (PARAMS_MSG.FATtxt + 3),HL
|
||||
;.Serial
|
||||
LD HL,FAT_PARAMETERS.SERIAL_NUMBER_2
|
||||
LD HL,FAT_PARAMETERS.SERIAL_NUMBER_2 + 1
|
||||
LD DE,PARAMS_MSG.Serial
|
||||
CALL .make_Serial
|
||||
INC DE
|
||||
@ -1207,8 +1222,11 @@ SHOW_FORMAT_PARAMETERS:
|
||||
LD A,D
|
||||
AND %0111'1111
|
||||
CP #15
|
||||
RET Z
|
||||
SCF
|
||||
JR NZ,SHOW_CANCELED
|
||||
;
|
||||
LD HL,FORMATING_MSG
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
RET
|
||||
;
|
||||
;
|
||||
@ -1231,13 +1249,47 @@ SHOW_FORMAT_PARAMETERS:
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
SHOW_VERSION: LD SP,(STOP_ERROR.Save_SP)
|
||||
SHOW_VERSION: LD HL,Version_Msg
|
||||
;-----------------------------------------------------------------------
|
||||
PRINT_AND_EXIT: LD SP,(STOP_ERROR.Save_SP)
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
LD BC,Dss.Exit
|
||||
RST ToDSS
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
SHOW_DONE: LD HL,DONE_MSG
|
||||
LD (EXIT.msg),HL
|
||||
JP EXIT
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
SHOW_CANCELED: LD HL,CANCELED_MSG
|
||||
LD (EXIT.msg),HL
|
||||
JP EXIT
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
SHOW_HELP: LD HL,Version_Msg
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
LD HL,HELP_MSG
|
||||
LD (EXIT.msg),HL
|
||||
JP EXIT
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
SHOW_HELP_NO_DISK:
|
||||
LD HL,Version_Msg
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
;
|
||||
LD BC,Dss.Exit ; + 256*DSS_Error.sys.INVALID_DRIVE
|
||||
RST ToDSS
|
||||
LD HL,HELP_MSG
|
||||
JR PRINT_AND_EXIT
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
@ -1348,14 +1400,6 @@ STRING_TO_WORD: CALL STR_TO_WORD
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
;!FIXIT
|
||||
SHOW_HELP: LD SP,(STOP_ERROR.Save_SP)
|
||||
DI
|
||||
HALT
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
;!FIXIT
|
||||
GET_KEY_FAT: DI
|
||||
|
||||
Loading…
Reference in New Issue
Block a user