mirror of
https://github.com/Tolik-Trek/FORMAT.git
synced 2026-06-15 09:21:40 +03:00
129 lines
4.7 KiB
Z80 Assembly
129 lines
4.7 KiB
Z80 Assembly
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ DATA ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
|
|
;-----------------------------------------------------------------------
|
|
MACRO FAT_TYPES_LINE vol_size, clu_size, fat_type
|
|
WORD vol_size, clu_size
|
|
BYTE fat_type
|
|
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
|
|
FAT_TYPES_LINE #0200, 8192, FAT32 ; 8192..16384 Mb
|
|
FAT_TYPES_LINE #0100, 4096, FAT32 ; 4096..8192 Mb
|
|
FAT_TYPES_LINE #0080, 32768, FAT16 ; 2048..4096 Mb
|
|
FAT_TYPES_LINE #0040, 16384, FAT16 ; 1023..2048 Mb
|
|
FAT_TYPES_LINE #0020, 8192, FAT16 ; 511..1023 Mb
|
|
FAT_TYPES_LINE #0010, 4096, FAT16 ; 256..511 Mb
|
|
FAT_TYPES_LINE #0008, 2048, FAT16 ; 128..256 Mb
|
|
FAT_TYPES_LINE #0004, 1024, FAT16 ; 64..128 Mb
|
|
FAT_TYPES_LINE #0002, 512, FAT16 ; 32..64 Mb
|
|
; ¥á«¨ ¬¥ìè¥, â® FAT12
|
|
.LineSize EQU 5
|
|
.Records EQU ($ - FAT_TYPES)/.LineSize
|
|
ENDMODULE
|
|
;-----------------------------------------------------------------------
|
|
|
|
|
|
;-----------------------------------------------------------------------
|
|
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
|
|
.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
|
|
;-----------------------------------------------------------------------
|
|
|
|
|
|
;-----------------------------------------------------------------------
|
|
; Š«îç ¢ëáâ ¢«¥ : „¥ä®«â®¥ § 票¥
|
|
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 ; ¤«ï ¤¨áª¥â
|
|
;-----------------------------------------------------------------------
|
|
|
|
|
|
;-----------------------------------------------------------------------
|
|
; root_dir_sectors = ((root_dir_entries * 32) + (bytes_per_sector - 1)) / bytes_per_sector
|
|
FAT_PARAMETERS:
|
|
.PART1 EQU $
|
|
;
|
|
.JMP: BYTE #EB,#FE,#00 ; [x] opcode jmp $
|
|
.ID_NAME BYTE "DDF " ; DSS Drive Formatter
|
|
.ID_NAME_VER BYTE "0."
|
|
.ID_NAME_MOD BYTE "00"
|
|
.BytesPerSector: WORD #200 ; predefined ; [x]
|
|
.SectorsPerCluster: BYTE 0 ; [x]
|
|
.RESERVED_SECTORS: WORD 0 ; [x]
|
|
.Number_of_FATs: BYTE 2 ; predefined ; [x]
|
|
.FilesInRootDIR: WORD 0 ; FAT32 constant ; [ ] FAT ; [x] FAT32
|
|
.SectorsPerDrive: WORD 0 ; FAT32 constant ; [x] +-
|
|
.DRIVE_TYPE: BYTE 0 ; ; [x] +-
|
|
.SectorsPerFAT16: WORD 0 ; FAT32 constant ; [x]
|
|
.SectorsPerTrack WORD 9 ; BPB_SecPerTrk ; [x]
|
|
.HEADS WORD 2 ; [x]
|
|
.HIDDEN DWORD 0 ; ®â ç « MBR, extMBR ; [x]
|
|
.BPB_BIG_TOTAL_SECTORS_L WORD 0 ; [x] +-
|
|
.BPB_BIG_TOTAL_SECTORS_H WORD 0 ; [x] +-
|
|
.PART1_SIZE EQU $ - .PART1
|
|
; FAT 12, FAT 16
|
|
.PART2_FAT12_16 EQU $
|
|
;
|
|
.BPB_PHISICAL_DRIVE_NUMBER BYTE #80 ; [x]
|
|
.reserved_1 BYTE 0 ; predefined ;
|
|
; .FAT.EXT_BOOT_REC_SIGNATURE BYTE #29 ; constant ;
|
|
; .FAT.SERIAL_NUMBER DWORD 0 ;
|
|
; .FAT.LABEL DB 'NO_LABEL ' ;
|
|
; .ID_FAT DB 'FAT16 ' ;
|
|
.PART2_FAT12_16_END EQU $
|
|
|
|
; FAT32
|
|
.PART2_FAT32 EQU $
|
|
;
|
|
.SectorsPerFAT32 DWORD 0 ; [x] ;!TODO error ¥á«¨ áâ à訩 ¡ ©â !=0
|
|
.MainFATnumber WORD 0 ; BPB_ExtFlags ;
|
|
.Version WORD 0 ; constant ;
|
|
.RootDirStartCluster DWORD 2 ; FIXED! ¨á¯®«ì§ã¥âáï ¢ ä®à¬ã«¥
|
|
.FSINFO_Sector WORD 1 ; constant ;
|
|
.CopyBootSector WORD 6 ; constant ;
|
|
.reserved_block: BLOCK 12 ; constant ;
|
|
.FDD_Number BYTE 0 ; [x]
|
|
.reserved_2: BYTE 0 ; constant ;
|
|
; .FAT32.EXT_BOOT_REC_SIGNATURE BYTE #29 ; constant ;
|
|
; .FAT32.SERIAL_NUMBER DWORD 0 ;
|
|
; .FAT32.LABEL DB 'NO_LABEL ' ;
|
|
; .ID_FAT32 DB 'FAT32 ' ;
|
|
.PART2_FAT32_SIZE EQU $ - .PART2_FAT32
|
|
; 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 ' ;
|
|
.PART3_SHARED_SIZE EQU $ - .PART3_SHARED
|
|
;-----------------------------------------------------------------------
|
|
|
|
|
|
;-----------------------------------------------------------------------
|
|
;----------------------------------------------------------------------- |