mirror of
https://github.com/Tolik-Trek/FORMAT.git
synced 2026-06-15 09:21:40 +03:00
...
This commit is contained in:
parent
ee29a4c7b0
commit
ee38a525f0
@ -2,6 +2,20 @@
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ DATA ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
MODULE CONSTANTS
|
||||
FAT16 EQU 2 ; § ®¤® ¨ ¬®¦¨â¥«ì
|
||||
FAT12 EQU 3 ; § ®¤® ¨ ¬®¦¨â¥«ì
|
||||
FAT32 EQU 4 ; § ®¤® ¨ ¬®¦¨â¥«ì
|
||||
;
|
||||
FAT_ReservedSectors:
|
||||
.FDD EQU 1
|
||||
.HDD EQU 8
|
||||
.FAT32 EQU 32
|
||||
ENDMODULE
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
MACRO FAT_TYPES_LINE vol_size, clu_size, fat_type
|
||||
WORD vol_size, clu_size
|
||||
@ -9,9 +23,6 @@
|
||||
ENDM
|
||||
|
||||
MODULE TABLES
|
||||
FAT12 EQU 3
|
||||
FAT16 EQU 2
|
||||
FAT32 EQU 4
|
||||
; VOL SIZE CLUSTER SIZE FAT TYPE
|
||||
FAT_TYPES: FAT_TYPES_LINE #0800, 32768, FAT32 ; > 32768
|
||||
FAT_TYPES_LINE #0400, 16384, FAT32 ; 16384..32768 Mb
|
||||
@ -33,33 +44,57 @@ FAT_TYPES: FAT_TYPES_LINE #0800, 32768, FAT32 ; > 32768
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
VARIABLES EQU $
|
||||
.FAT_TYPE BYTE TABLES.FAT12 ; [x]
|
||||
.CurrentDrive DB 0
|
||||
.VOLUME_SIZE_BYTES BLOCK 5,0
|
||||
.FatFDD_ReservedSectors WORD 1
|
||||
.FatHDD_ReservedSectors WORD 8
|
||||
.Fat32_ReservedSectors WORD 32
|
||||
.RootDirSectors WORD 0
|
||||
.FAT_TYPE BYTE CONSTANTS.FAT12 ; [x]
|
||||
.CurrentDrive DB 0 ; [x]
|
||||
.VOLUME_SIZE_BYTES BLOCK 5,0 ; [ ]
|
||||
;.FatFDD_ReservedSectors WORD 1
|
||||
;.FatHDD_ReservedSectors WORD 8
|
||||
;.Fat32_ReservedSectors WORD 32
|
||||
.ReservedSectors WORD 0 ; [ ]
|
||||
.RootDirSectors WORD 0 ; [ ]
|
||||
.NotUsedSpace BYTE 0 ; in sectors
|
||||
.total_clusters_L: WORD 0
|
||||
.total_clusters_H: WORD 0
|
||||
.FAT32_RootDirClusters WORD 1
|
||||
.FAT.LABEL BYTE 'NO_LABEL '
|
||||
.DriveExtendedParameters BYTE 0
|
||||
.total_clusters_L: WORD 0 ; [x]
|
||||
.total_clusters_H: WORD 0 ; [x]
|
||||
.FAT32_RootDirClusters WORD 1 ; [ ]
|
||||
.FAT.LABEL BYTE 'NO_LABEL ' ; [ ]
|
||||
.DriveExtendedParameters BYTE 0 ; [ ]
|
||||
.DataSectors_L WORD 0 ; [ ]
|
||||
.DataSectors_H WORD 0 ; [ ]
|
||||
.RootDirFirstSector_L WORD 0 ; [x] ¢ëç¨á«ï¥âáï ¢ FORMAT_DRIVE
|
||||
.RootDirFirstSector_H WORD 0 ; [x] ¢ëç¨á«ï¥âáï ¢ FORMAT_DRIVE
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
; Š«îç ¢ëáâ ¢«¥ : „¥ä®«â®¥ § 票¥
|
||||
; ‘â âãá ª«îç : Š«îç : ‡ 票¥
|
||||
KEYS_PARAMETERS EQU $
|
||||
.ONLY_HELP BYTE 0 : BYTE 0 ; [ ] /? ; ¢ë¢®¤ á¯à ¢ª¨
|
||||
.FAT_TYPE BYTE 0 : BYTE TABLES.FAT12 ; [ ] /t ;
|
||||
.BytesPerSector BYTE 0 : WORD #200 ; [ ] /s ;
|
||||
.SectorsPerCluster: BYTE 0 : BYTE 0 ; [ ] /c ;
|
||||
.Number_of_FATs: BYTE 0 : BYTE 2 ; [ ] /n ;
|
||||
.FilesInRootDIR: BYTE 0 : WORD 0 ; [ ] /d ;
|
||||
.RESERVED_SECTORS: BYTE 0 : WORD 0 ; [ ] /r ;
|
||||
.LOW_FORMAT BYTE 0 : BYTE 0 ; [ ] /l ; ¤«ï ¤¨áª¥â
|
||||
.ONLY_HELP BYTE 0 : BYTE '?' : WORD 0 ; [ ] BYTE ; ¢ë¢®¤ á¯à ¢ª¨
|
||||
.FAT_TYPE BYTE 0 : BYTE 't' : WORD CONSTANTS.FAT12 ; [ ] BYTE ;
|
||||
.SectorsPerCluster: BYTE 0 : BYTE 'c' : WORD 0 ; [ ] BYTE ;
|
||||
.FilesInRootDIR: BYTE 0 : BYTE 'd' : WORD 0 ; [ ] WORD ;
|
||||
.Number_of_FATs: BYTE 0 : BYTE 'n' : WORD 2 ; [ ] BYTE ;
|
||||
.RESERVED_SECTORS: BYTE 0 : BYTE 'r' : WORD 0 ; [ ] WORD ;
|
||||
.LOW_FORMAT BYTE 0 : BYTE 'l' : WORD 0 ; [ ] BYTE ; ¤«ï ¤¨áª¥â
|
||||
.BytesPerSector BYTE 0 : BYTE 's' : WORD #200 ; [ ] WORD ;
|
||||
; á¬¥é¥¨ï ¤ ë¥
|
||||
.Status EQU 0
|
||||
.Key EQU 1
|
||||
.Data EQU 2
|
||||
; áâ âãá
|
||||
.Status.Off EQU 0
|
||||
.Status.On EQU 0
|
||||
.Status.Ignored EQU 0
|
||||
; ‘â âãá ª«îç :
|
||||
; 0 - ¥ ãáâ ®¢«¥
|
||||
; 1 - ãáâ ®¢«¥
|
||||
; 2 - ¨£®à¨àã¥âáï
|
||||
/*
|
||||
FilesInRootDIR
|
||||
„«ï ⮬®¢ FAT12 ¨ FAT16 íâ® § 票¥ ¢á¥£¤ ¤®«¦® 㪠§ë¢ âì
|
||||
ª®«¨ç¥á⢮, ª®â®à®¥ ¯à¨ 㬮¦¥¨¨ 32 ¤ ¥â ç¥â®¥ ç¨á«®, ªà ⮥
|
||||
BPB_BytsPerSec. „«ï ¬ ªá¨¬ «ì®© ᮢ¬¥á⨬®á⨠¤«ï ⮬®¢ FAT16 á«¥¤ã¥â
|
||||
¨á¯®«ì§®¢ âì § 票¥ 512.
|
||||
*/
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
@ -117,10 +152,12 @@ FAT_PARAMETERS:
|
||||
; SHARED
|
||||
.PART3_SHARED EQU $
|
||||
;
|
||||
.FAT.EXT_BOOT_REC_SIGNATURE BYTE #29 ; constant ;
|
||||
.FAT.SERIAL_NUMBER DWORD 0 ; [ ]
|
||||
.FAT.LABEL DB 'NO_LABEL ' ; [ ] ;!TODO ¤®¯®«¨â¥«ì® ¯¨á âì ¢ ª®à¥¢ãî ¤¨à¥ªâ®à¨î
|
||||
.ID_FAT DB 'FAT32 ' ;
|
||||
.EXT_BOOT_REC_SIGNATURE BYTE #29 ; constant ;
|
||||
.SERIAL_NUMBER_1 WORD 0 ; [x]
|
||||
.SERIAL_NUMBER_2 WORD 0 ; [x]
|
||||
.LABEL DB 'NO_LABEL ' ; [x]
|
||||
.LABEL.Size EQU $-.LABEL
|
||||
.ID_FAT DB 'FAT32 ' ; [ ]
|
||||
.PART3_SHARED_SIZE EQU $ - .PART3_SHARED
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
@ -69,7 +69,7 @@ main: DI
|
||||
CALL prepare
|
||||
JR NC,.ok_drive
|
||||
;
|
||||
CALL FAT32_FORMAT
|
||||
CALL DSS_DRIVE_FORMAT
|
||||
;
|
||||
LD A,"\a" ; bell
|
||||
SYS ESTEX_pchar
|
||||
@ -204,6 +204,7 @@ init_fat: LD HL,buff
|
||||
LD (HL),0xff
|
||||
INC HL
|
||||
LD A,(fat12_flg)
|
||||
OR A
|
||||
RET NZ
|
||||
LD (HL),0xff ;0xfff8, 0xffff for FAT16
|
||||
RET
|
||||
|
||||
@ -66,27 +66,55 @@ reserved_sectors = ( ((.HIDDEN + min_last_sector) & #0F)>0 ) * #10) - .HIDDEN
|
||||
|
||||
|
||||
; DSS Drive Formatter
|
||||
FAT32_FORMAT:
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
DSS_DRIVE_FORMAT:
|
||||
;-----------------------------------------------------------------------
|
||||
LD A,(KEYS_PARAMETERS.FAT_TYPE + KEYS_PARAMETERS.Status)
|
||||
LD C,A
|
||||
; ¯à®¢¥àª § âã¯
|
||||
LD A,(KEYS_PARAMETERS.FilesInRootDIR + KEYS_PARAMETERS.Status)
|
||||
AND A
|
||||
JR Z,.no_zatup
|
||||
;
|
||||
LD A,C
|
||||
OR A
|
||||
JR Z,.no_zatup
|
||||
;
|
||||
LD A,(KEYS_PARAMETERS.FAT_TYPE + KEYS_PARAMETERS.Data)
|
||||
CP CONSTANTS.FAT32
|
||||
JR NZ,.no_zatup
|
||||
;
|
||||
LD A,KEYS_PARAMETERS.Status.Ignored
|
||||
LD (KEYS_PARAMETERS.FilesInRootDIR + KEYS_PARAMETERS.Status),A
|
||||
.no_zatup: ; ¯à®¢¥àª ¢â®-à áçñâ
|
||||
LD A,(KEYS_PARAMETERS.SectorsPerCluster + KEYS_PARAMETERS.Status)
|
||||
OR C
|
||||
JR Z,MAKE_AUTO
|
||||
;
|
||||
; !TODO
|
||||
;
|
||||
MAKE_AUTO: LD (STOP_ERROR.Save_SP),SP
|
||||
;!FIXIT
|
||||
LD A,(FMTDISK)
|
||||
LD (VARIABLES.CurrentDrive),A
|
||||
;
|
||||
|
||||
CALL CALCULATE_FAT
|
||||
CALL FORMAT_DRIVE
|
||||
CALL MAKE_LABEL_IN_DIR
|
||||
;!FIXIT
|
||||
;CALL MAKE_ROOT_DIR_LABEL ; ¯¥à¢ ï § ¯¨áì ¢ root dir - ¬¥âª , ¯®â®¬ 㫨
|
||||
RET
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
; Ž¯à¥¤¥«¥¨¥ ¯ à ¬¥â஢ ®á¨â¥«ï ¨ ¢ë¡®à FAT
|
||||
; €¢â®¬ â¨ç¥áª®¥ ¯à¥¤¥«¥¨¥ ¯ à ¬¥â஢ ®á¨â¥«ï ¨ ¢ë¡®à FAT
|
||||
CALCULATE_FAT: CALL .STEP1 ; íâ ¤®«¦ ¡ëâì ®¡é¥© ¤«ï § ¯®«¥¨ï £¥®¬¥âਨ ¤¨áª
|
||||
; €¢â®¬ â¨ç¥áª¨© ¢ë¡®à FAT_TYPE, RESERVED_SECTORS, SectorsPerCluster
|
||||
CALL .STEP2
|
||||
; ¤ «ìè¥ ãáâ ¢«¨¢ ¥¬ £¥®¬¥âà¨î. “¦¥ ¤®«¦¥ ¡ëâì ¢ë¡à ⨯ FAT
|
||||
CALL .STEP3
|
||||
CALL MAKE_SERIAL
|
||||
RET
|
||||
;--------------;
|
||||
|
||||
@ -141,7 +169,7 @@ CALCULATE_FAT: CALL .STEP1 ;
|
||||
LD (FAT_PARAMETERS.BytesPerSector),BC
|
||||
; à §¬¥à ¤¨áª ¢ ¡ ©â å EDLHA
|
||||
CALL MUL32_POWER2
|
||||
LD (VARIABLES.VOLUME_SIZE_BYTES),DE
|
||||
LD (VARIABLES.VOLUME_SIZE_BYTES),DE ; !FIXIT ¡ ©â ¨§ E ¥ ¨á¯®«ì§ã¥âáï
|
||||
LD (VARIABLES.VOLUME_SIZE_BYTES + 2),HL
|
||||
LD (VARIABLES.VOLUME_SIZE_BYTES + 4),A
|
||||
RET
|
||||
@ -155,15 +183,15 @@ CALCULATE_FAT: CALL .STEP1 ;
|
||||
;
|
||||
LD A,C
|
||||
LD (VARIABLES.FAT_TYPE),A
|
||||
CP TABLES.FAT32
|
||||
LD HL,(VARIABLES.Fat32_ReservedSectors)
|
||||
JR Z,.set_reserved_s
|
||||
;CP CONSTANTS.FAT32
|
||||
;LD HL,CONSTANTS.FAT_ReservedSectors.FAT32
|
||||
;JR Z,.set_reserved_s
|
||||
;
|
||||
;!FIXIT ¯à®¢¥àª FDD/HDD
|
||||
LD HL,(VARIABLES.FatHDD_ReservedSectors)
|
||||
;LD HL,CONSTANTS.FAT_ReservedSectors.HDD
|
||||
;
|
||||
.set_reserved_s:
|
||||
LD (FAT_PARAMETERS.RESERVED_SECTORS),HL
|
||||
;LD (FAT_PARAMETERS.RESERVED_SECTORS),HL
|
||||
LD HL,(FAT_PARAMETERS.BytesPerSector)
|
||||
DEC HL
|
||||
SBC HL,DE
|
||||
@ -176,7 +204,57 @@ CALCULATE_FAT: CALL .STEP1 ;
|
||||
JR C,STOP_ERROR
|
||||
;
|
||||
LD (FAT_PARAMETERS.SectorsPerCluster),A
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
TODO
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
LD A,(VARIABLES.FAT_TYPE)
|
||||
CP CONSTANTS.FAT32
|
||||
LD HL,CONSTANTS.FAT_ReservedSectors.FAT32
|
||||
JR Z,.set_RS
|
||||
;
|
||||
LD A,(KEYS_PARAMETERS.FilesInRootDIR + KEYS_PARAMETERS.Status)
|
||||
AND A
|
||||
LD HL,(KEYS_PARAMETERS.FilesInRootDIR + KEYS_PARAMETERS.Data)
|
||||
JR NZ,.set_RS
|
||||
;
|
||||
LD A,(FAT_PARAMETERS.BPB_PHISICAL_DRIVE_NUMBER)
|
||||
SRL A
|
||||
LD HL,CONSTANTS.FAT_ReservedSectors.FDD
|
||||
JR Z,.set_RS
|
||||
LD HL,CONSTANTS.FAT_ReservedSectors.HDD
|
||||
|
||||
|
||||
|
||||
|
||||
LD HL,CONSTANTS.FAT_ReservedSectors.HDD
|
||||
JR Z,.next_RS
|
||||
LD HL,CONSTANTS.FAT_ReservedSectors.HDD
|
||||
|
||||
;
|
||||
;
|
||||
LD HL,CONSTANTS.FAT_ReservedSectors.HDD
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.set_RS: LD (VARIABLES.ReservedSectors),HL
|
||||
LD (FAT_PARAMETERS.RESERVED_SECTORS),HL
|
||||
|
||||
|
||||
RET
|
||||
;
|
||||
.choose_RS: LD HL,CONSTANTS.FAT_ReservedSectors.FDD
|
||||
|
||||
;--------------;
|
||||
|
||||
|
||||
@ -213,7 +291,7 @@ CALCULATE_FAT: CALL .STEP1 ;
|
||||
CALL CALC_TOTAL_CLUSTERS
|
||||
LD HL,(CALC_TOTAL_CLUSTERS.fat_size_l)
|
||||
LD A,(VARIABLES.FAT_TYPE)
|
||||
CP TABLES.FAT32
|
||||
CP CONSTANTS.FAT32
|
||||
JR Z,.it_is_fat32
|
||||
;
|
||||
LD (FAT_PARAMETERS.SectorsPerFAT16),HL
|
||||
@ -246,6 +324,13 @@ STOP_ERROR:
|
||||
; (CALC_TOTAL_CLUSTERS.fat_size_h)
|
||||
|
||||
CALC_TOTAL_CLUSTERS:
|
||||
; calc rootdir sectors
|
||||
LD A,(VARIABLES.FAT_TYPE)
|
||||
SUB CONSTANTS.FAT32
|
||||
LD B,A
|
||||
LD C,A
|
||||
JR Z,
|
||||
|
||||
.t_sec_h+1: LD DE,0
|
||||
.t_sec_l+1: LD HL,0
|
||||
; data_sectors
|
||||
@ -288,7 +373,8 @@ CALC_TOTAL_CLUSTERS:
|
||||
SBC HL,BC
|
||||
JR C,STOP_ERROR
|
||||
; data_sectors = HL:DE
|
||||
;
|
||||
LD (VARIABLES.DataSectors_L),DE
|
||||
LD (VARIABLES.DataSectors_H),HL
|
||||
; total_clusters
|
||||
LD A,(FAT_PARAMETERS.SectorsPerCluster)
|
||||
CALL HLDE_Div_A
|
||||
@ -309,7 +395,7 @@ CALC_TOTAL_CLUSTERS:
|
||||
;
|
||||
LD BC,(FAT_PARAMETERS.BytesPerSector)
|
||||
LD A,(VARIABLES.FAT_TYPE)
|
||||
CP TABLES.FAT12
|
||||
CP CONSTANTS.FAT12
|
||||
JR NZ,.no_sla
|
||||
;
|
||||
SLA C
|
||||
@ -409,6 +495,31 @@ AUTO_CHOOSE_FAT_PARAMS:
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
MAKE_SERIAL: LD C,Dss.SysTime
|
||||
RST ToDSS
|
||||
;
|
||||
EX DE,HL
|
||||
ADD IX,DE
|
||||
LD (FAT_PARAMETERS.SERIAL_NUMBER_2),IX
|
||||
;
|
||||
LD A,D
|
||||
LD D,B
|
||||
XOR C
|
||||
.loop: RRA
|
||||
DJNZ .loop
|
||||
;
|
||||
LD E,H
|
||||
LD H,L
|
||||
LD L,E
|
||||
;
|
||||
LD E,A
|
||||
ADD HL,DE
|
||||
LD (FAT_PARAMETERS.SERIAL_NUMBER_1),HL
|
||||
RET
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
FORMAT_DRIVE: CALL CLEAN_SECTOR_BUFFER
|
||||
;
|
||||
@ -418,7 +529,7 @@ FORMAT_DRIVE: CALL CLEAN_SECTOR_BUFFER
|
||||
LDIR
|
||||
;
|
||||
LD A,(VARIABLES.FAT_TYPE)
|
||||
CP TABLES.FAT32
|
||||
CP CONSTANTS.FAT32
|
||||
;!FIXIT
|
||||
JP NZ,STOP_ERROR
|
||||
;
|
||||
@ -426,7 +537,7 @@ FORMAT_DRIVE: CALL CLEAN_SECTOR_BUFFER
|
||||
CALL CLEAN_SECTOR_BUFFER
|
||||
; clean all fat tables at drive
|
||||
LD A,(VARIABLES.FAT_TYPE)
|
||||
CP TABLES.FAT32
|
||||
CP CONSTANTS.FAT32
|
||||
LD BC,(FAT_PARAMETERS.SectorsPerFAT32)
|
||||
LD DE,(FAT_PARAMETERS.SectorsPerFAT32 + 2)
|
||||
JR Z,.its_fat32
|
||||
@ -477,28 +588,55 @@ FORMAT_DRIVE: CALL CLEAN_SECTOR_BUFFER
|
||||
OR E
|
||||
JR NZ,.write_loop
|
||||
EXX
|
||||
; HL:IX - rootdir's first sector
|
||||
;
|
||||
LD (VARIABLES.RootDirFirstSector_L),IX
|
||||
LD (VARIABLES.RootDirFirstSector_H),HL
|
||||
;
|
||||
; make fat table
|
||||
LD HL,(FAT_PARAMETERS.DRIVE_TYPE)
|
||||
LD H,#FF
|
||||
LD (SECTOR_BUFFER),HL
|
||||
LD L,H
|
||||
LD (SECTOR_BUFFER + 2),HL
|
||||
LD HL,SECTOR_BUFFER
|
||||
LD A,(FAT_PARAMETERS.DRIVE_TYPE)
|
||||
LD (HL),A
|
||||
INC HL
|
||||
LD (HL),#FF
|
||||
INC HL
|
||||
LD (HL),#FF
|
||||
LD A,(VARIABLES.FAT_TYPE)
|
||||
CP TABLES.FAT12
|
||||
JR NZ,.not_fat12
|
||||
; fat12
|
||||
XOR A
|
||||
LD (SECTOR_BUFFER + 3),A
|
||||
JR .write_fat
|
||||
CP CONSTANTS.FAT12
|
||||
JR Z,.write_fat ; fat12
|
||||
;
|
||||
.not_fat12 CP TABLES.FAT16
|
||||
JR Z,.write_fat
|
||||
;fat32
|
||||
INC HL
|
||||
LD (HL),#FF
|
||||
JR C,.write_fat ; fat16
|
||||
;
|
||||
; LD HL,(FAT_PARAMETERS.DRIVE_TYPE)
|
||||
; LD H,#FF
|
||||
; LD (SECTOR_BUFFER),HL
|
||||
; LD L,H
|
||||
; LD (SECTOR_BUFFER + 2),HL
|
||||
; LD A,(VARIABLES.FAT_TYPE)
|
||||
; CP TABLES.FAT12
|
||||
; JR C,.write_fat ; fat16
|
||||
; JR NZ,.fat32
|
||||
; ; fat12
|
||||
; XOR A
|
||||
; LD (SECTOR_BUFFER + 3),A
|
||||
; JR .write_fat
|
||||
;
|
||||
LD HL,.Fat32Data
|
||||
LD DE,SECTOR_BUFFER + 3
|
||||
LD BC,.Fat32Data.Size
|
||||
LDIR
|
||||
.fat32: ; fat32
|
||||
LD DE,#0FFF
|
||||
LD B,7
|
||||
LD (HL),D
|
||||
.loop32: INC HL
|
||||
LD (HL),E
|
||||
DJNZ .loop32
|
||||
INC Hl
|
||||
LD (HL),D
|
||||
; EX DE,HL
|
||||
; ;LD DE,SECTOR_BUFFER + 3
|
||||
; LD HL,.Fat32Data
|
||||
; LD BC,.Fat32Data.Size
|
||||
; LDIR
|
||||
;
|
||||
.write_fat: LD A,(FAT_PARAMETERS.Number_of_FATs)
|
||||
LD HL,0
|
||||
@ -526,8 +664,8 @@ FORMAT_DRIVE: CALL CLEAN_SECTOR_BUFFER
|
||||
JR NZ,.write_tbl_fat
|
||||
RET
|
||||
;
|
||||
.Fat32Data: DB #0F,#FF,#FF,#FF,#FF,#FF,#FF,#FF,#0F
|
||||
.Fat32Data.Size EQU $-.Fat32Data
|
||||
;.Fat32Data: DB #0F,#FF,#FF,#FF,#FF,#FF,#FF,#FF,#0F
|
||||
;.Fat32Data.Size EQU $-.Fat32Data
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
@ -548,7 +686,7 @@ MAKE_SYS_SECTORS:
|
||||
CALL WRITE_SECTOR_BUFFER
|
||||
;
|
||||
LD A,(VARIABLES.FAT_TYPE)
|
||||
CP TABLES.FAT32
|
||||
CP CONSTANTS.FAT32
|
||||
RET NZ
|
||||
;
|
||||
CALL CLEAN_SECTOR_BUFFER
|
||||
@ -638,6 +776,38 @@ WRITE_SECTOR_BUFFER:
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
; IN: HL:IX - rootdir's first sector
|
||||
MAKE_LABEL_IN_DIR:
|
||||
CALL CLEAN_SECTOR_BUFFER ;!FIXIT ᪮॥ ¢á¥£®, ¥ 㦮 ç¨áâ¨âì
|
||||
; make directory record
|
||||
LD HL,FAT_PARAMETERS.LABEL
|
||||
LD DE,SECTOR_BUFFER
|
||||
LD BC,FAT_PARAMETERS.LABEL.Size
|
||||
LDIR
|
||||
;
|
||||
EX DE,HL
|
||||
LD (HL),#08
|
||||
LD HL,#0233
|
||||
LD (SECTOR_BUFFER+22),HL
|
||||
LD HL,#5C85
|
||||
LD (SECTOR_BUFFER+24),HL
|
||||
; LD HL,.RootLabel
|
||||
; LD BC,.RootLabel.Size
|
||||
; LDIR
|
||||
; write sector
|
||||
LD HL,(VARIABLES.RootDirFirstSector_H)
|
||||
LD IX,(VARIABLES.RootDirFirstSector_L)
|
||||
JR WRITE_SECTOR_BUFFER
|
||||
;
|
||||
; root dir entry for label and 0 for "end of catalog" without label
|
||||
; .RootLabel: ;BYTE 'NO_LABEL '
|
||||
; BYTE #08,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
|
||||
; BYTE #33,#02,#85,#5C,#00,#00,#00,#00,#00,#00,#00
|
||||
; .RootLabel.Size EQU $-.RootLabel
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
include 'math.asm'
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Loading…
Reference in New Issue
Block a user