home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   alt.os.development      Operating system development chatter      4,255 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 4,141 of 4,255   
   wolfgang kern to Mike Gonta   
   Re: shortest FAT32   
   18 Mar 24 15:26:16   
   
   From: nowhere@never.at   
      
   On 18/03/2024 15:04, Mike Gonta wrote:   
   > On 2024-03-18 3:57 a.m., I wrote:   
   >> I'm still busy with manual creation of UEFI-GPT conform environment.   
   >> my idea is to make the first partition FAT32, but as small as possible.   
   >> because M$-FAT are defined by number of clusters rather then else my   
   >> only choice will be to set cluster-size to one sector   
   >> [65525 sectors] I need only 512 MB for my OS boot section, what a waste.   
   >> are there other ways to shorten a FAT32 w/o breaking too many rules ?   
   >> perhaps by write the first 8 bytes of the FAT ?   
      
   > This is a skeleton of my Fat32 Floppy Disk, (543 sector FAT32 file   
   > system) for 1.44 MB floppy disk.   
   > The trick I used was to mark the minimum FAT32 volume of 66602 outside   
   > the 1.44 Mb as lost (0x0FFFFFF7) in the file allocation table.   
   >   
   > [code]   
   > VOLUME_LENGTH = 66602 ; minimum FAT32 volume = 32.5 MB   
   > RESERVED_SECTORS = 21   
   > BYTES_PER_SECTOR = 512   
   > SECTORS_PER_CLUSTER = 1   
   > PARTITION_OFFSET = 0   
   > LABEL equ "           " ; 11 characters maximum   
   > BYTES_PER_CLUSTER = BYTES_PER_SECTOR*SECTORS_PER_CLUSTER   
   > SECTORS_PER_FAT=((VOLUME_LENGTH-RESERVED_SECTORS)+(128*SECTORS   
   PER_CLUSTER-1))/(128*SECTORS_PER_CLUSTER)   
   > START_OF_DATA = RESERVED_SECTORS+SECTORS_PER_FAT   
   >   
   > org 0x7C00   
   > boot_sector:   
   >    times 510-($-boot_sector) db 0   
   >    dw 0xAA55   
   >   
   > fsi:   
   >    db "RRaA"   
   >    times 480 db 0   
   >    db "rrAa"   
   > ; number of free clusters   
   >    dd VOLUME_LENGTH-RESERVED_SECTORS-SECTORS_PER_FAT   
   >    dd 4 ; number of the next free cluster   
   >    times 12 db 0   
   >    dd 0xAA550000   
   >   
   >    times 7*512 db 0   
   >   
   > upcase_table:   
   >    times 12*512 db 0   
   >   
   > file_allocation_table:   
   >    dd 0xFFFFFFF8, 0xFFFFFFFF, 0x0FFFFFFF   
   >    times 2880-RESERVED_SECTORS-SECTORS_PER_FAT-1 dd 0   
   > ; mark sectors outside 1.44MB as lost   
   >    times VOLUME_LENGTH-2880 dd 0x0FFFFFF7   
   >    times SECTORS_PER_FAT*BYTES_PER_SECTOR-($-file_allocation_table) db 0   
   >   
   > root: ; start of data   
   >    db LABEL   
   >    db 8 ; volume label   
   >    db 0   
   >    db HUNDREDTHS   
   >    dw (HOURS SHL 11) + (MINUTES SHL 5 )+ SECONDS SHR 2   
   >    dw ((YEARS - 1980) SHL 9) + (MONTHS SHL 5) + DAYS   
   >    times 14 db 0   
   >    times 512-($-root) db 0 ; pre-allocate 1 root directory sector   
   > ; extend to fill 1.44 Mb image   
   >    times (2880-RESERVED_SECTORS-SECTORS_PER_FAT-1)*512 db 0xF6   
   > [/code]   
   >   
   thanks a lot, this is exactly what I searched for!   
   __   
   wolfgang   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca