@@ -177,30 +177,30 @@ void read_block(uint32_t block_no, uint8_t *data) {
177
177
memset (data , 0 , 512 );
178
178
uint32_t sectionIdx = block_no ;
179
179
180
- if (block_no == 0 ) {
180
+ if (block_no == 0 ) { // Requested boot block
181
181
memcpy (data , & BootBlock , sizeof (BootBlock ));
182
182
data [510 ] = 0x55 ;
183
183
data [511 ] = 0xaa ;
184
184
// logval("data[0]", data[0]);
185
- } else if (block_no < START_ROOTDIR ) {
185
+ } else if (block_no < START_ROOTDIR ) { // Requested FAT table sector
186
186
sectionIdx -= START_FAT0 ;
187
187
// logval("sidx", sectionIdx);
188
188
if (sectionIdx >= SECTORS_PER_FAT )
189
- sectionIdx -= SECTORS_PER_FAT ;
189
+ sectionIdx -= SECTORS_PER_FAT ; // second FAT is same as the first...
190
190
if (sectionIdx == 0 ) {
191
- data [0 ] = 0xf8 ;
191
+ data [0 ] = 0xf8 ; // first FAT entry must match BPB MediaDescriptor
192
192
for (int i = 1 ; i < NUM_INFO * 2 + 4 ; ++ i ) {
193
193
data [i ] = 0xff ;
194
194
}
195
195
}
196
- for (int i = 0 ; i < 256 ; ++ i ) {
196
+ for (int i = 0 ; i < 256 ; ++ i ) { // Generate the FAT chain for the firmware "file"
197
197
uint32_t v = sectionIdx * 256 + i ;
198
198
if (UF2_FIRST_SECTOR <= v && v <= UF2_LAST_SECTOR )
199
199
((uint16_t * )(void * )data )[i ] = v == UF2_LAST_SECTOR ? 0xffff : v + 1 ;
200
200
}
201
- } else if (block_no < START_CLUSTERS ) {
201
+ } else if (block_no < START_CLUSTERS ) { // Requested root directory sector
202
202
sectionIdx -= START_ROOTDIR ;
203
- if (sectionIdx == 0 ) {
203
+ if (sectionIdx == 0 ) { // only one sector of directory entries generated
204
204
DirEntry * d = (void * )data ;
205
205
padded_memcpy (d -> name , (char const * ) BootBlock .VolumeLabel , 11 );
206
206
d -> attrs = 0x28 ;
@@ -212,7 +212,7 @@ void read_block(uint32_t block_no, uint8_t *data) {
212
212
padded_memcpy (d -> name , inf -> name , 11 );
213
213
}
214
214
}
215
- } else {
215
+ } else { // else Generate the UF2 file data on-the-fly
216
216
sectionIdx -= START_CLUSTERS ;
217
217
if (sectionIdx < NUM_INFO - 1 ) {
218
218
memcpy (data , info [sectionIdx ].content , strlen (info [sectionIdx ].content ));
0 commit comments