Posted Sun Apr 3, 2011 3:49 PM
Posted Sun Apr 3, 2011 4:05 PM
drac030, on Sun Apr 3, 2011 3:49 PM, said:
// general MyDos format
numVTOC = 1 + (numsec + 80) / (seclen * 8);
if (seclen == e128BytesPerSector) {
if (numVTOC == 1) {
buf[0] = 2;
} else {
if (numVTOC & 1) {
// mydos allocates VTOC in pairs of 2 in SD
numVTOC++;
}
buf[0] = (numVTOC+1) / 2 + 2;
fUse16BitSectorLinks=true;
}
} else {
if (numsec < 1024) {
buf[0] = 2;
} else {
buf[0] = 2 + numVTOC;
fUse16BitSectorLinks=true;
}
}
buf[1] = buf[3] = (lastsec - 11 - numVTOC) & 0xff;
buf[2] = buf[4] = (lastsec - 11 - numVTOC) >> 8;
fImage->WriteSector(eVTOCSector, buf, seclen);
// clear additional VTOCs
memset(buf, 0, seclen);
for (s=1;s<numVTOC;s++) {
fImage->WriteSector(eVTOCSector - s, buf, seclen);
}
"numsec" is the total number of sectors on disk, seclen is either 128 or 256.Posted Sun Apr 3, 2011 9:25 PM
Posted Mon Apr 4, 2011 2:11 AM
Posted Mon Apr 4, 2011 11:56 AM
Posted Mon Apr 4, 2011 12:02 PM
Posted Mon Apr 4, 2011 3:12 PM
Posted Tue Apr 5, 2011 9:03 AM
drac030, on Mon Apr 4, 2011 2:11 AM, said:
Posted Tue Apr 5, 2011 3:37 PM
Quote
Posted Wed Apr 6, 2011 5:21 AM
Edited by drac030, Wed Apr 6, 2011 6:12 AM.
Posted Wed Apr 6, 2011 7:49 AM
1050, on Sun Apr 3, 2011 9:25 PM, said:
120D AD0809 010050 LDA MAPBUF 1210 38 010060 SEC 1211 E902 010070 SBC #2 ; GET # OF SECS 1213 2C1107 010080 BIT DLINK ; SD? 1216 3001 010090 BMI MPNSD ; IF NOT, M-3 1218 0A 010100 ASL A ; IF SO, M*2-5The comments about M are a little bit confusing, if I got it right M here means the number of additional VTOC sectors (excluding the main VTOC sector at $168). But it's better to look at the A register which contains (type-2) in case of DD or (type-2)*2 in case of SD. Very simple and neat :-)
command frame [ 32 50 68 01 ] OK [ put sector ] data block length = 256 bytes 03 94 05 94 05 00 00 00 00 00 0f ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff 00 7f ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff 80 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................"type" is 3, meaning MyDOS is using 16-bit sector links and the disk has 1 VTOC at sector $168.
command frame [ 32 50 68 01 ] OK [ put sector ] data block length = 128 bytes 04 31 0b 31 0b 00 00 00 00 00 0f ff ff ff ff ff .1.1............ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff f8 00 7f ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ command frame [ 32 50 67 01 ] OK [ put sector ] data block length = 128 bytes ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ command frame [ 32 50 66 01 ] OK [ put sector ] data block length = 128 bytes ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ ff ff 80 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ command frame [ 32 50 65 01 ] OK [ put sector ] data block length = 128 bytes 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................"type" is 4, which means 16bit links, and 4-2=2 pages (4 sectors) of VTOC. You also see the 4th VTOC sector (containing all zeroes) at $165 being written.
0 members, 1 guests, 0 anonymous users