first beta

This commit is contained in:
Tolik 2026-04-25 05:09:47 +10:00
parent bb0a225030
commit 8955783ba6
7 changed files with 183 additions and 73 deletions

View File

@ -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"
BYTE "Clusters:\t "
.Clusters: BYTE " \r\n"
BYTE "Cluster size:\t"
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 "\rancelled!\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"
;-----------------------------------------------------------------------

View File

@ -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"

View File

@ -40,7 +40,7 @@
; ­®¬¥à ¢¥àᨨ (0..9)
VERS EQU 0
; ­®¬¥à ¬®¤¨ä¨ª æ¨¨ (0..99)
MODF EQU 50
MODF EQU 60
; ­®¬¥à ¡¨«¤  (0..999)
BUILD EQU lua_BUILD
;

View File

@ -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

View File

@ -1 +1 @@
69
95

BIN
fat_table.xlsx Normal file

Binary file not shown.

View File

@ -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