mirror of
https://github.com/whscullin/apple2js.git
synced 2024-01-12 14:14:38 +00:00
dc13b6a59a
Like the DOS 3.3 and ProDOS sector order issues, this change fixes the physical order of the sectors on 13-sector disks when nibblized. This change also adds tests for the 13-sector format to verify the sector order. One of the crazy things is that _Beneath Apple DOS_ failed me in this instance because it doesn't discuss what happens to the last byte in "5 and 3" encoding anywhere (AFAICT). I went back to the DOS 3.1 source released by the Computer History Museum here: https://computerhistory.org/blog/apple-ii-dos-source-code/ The code is in `appdos31.lst` in the `POSTNIB` routine on line 4777.
88 lines
2.6 KiB
TypeScript
88 lines
2.6 KiB
TypeScript
import { BYTES_BY_SECTOR, BYTES_BY_TRACK, BYTES_IN_ORDER } from './13sector';
|
|
|
|
describe('BYTES_IN_ORDER', () => {
|
|
it('has the correct bytes in track 0, sector 0, byte 0 and byte 1', () => {
|
|
const disk = BYTES_IN_ORDER;
|
|
expect(disk[0][0][0]).toBe(0);
|
|
expect(disk[0][0][1]).toBe(1);
|
|
});
|
|
|
|
it('has the correct bytes in track 0, sector 0', () => {
|
|
const disk = BYTES_IN_ORDER;
|
|
for (let i = 0; i < 256; i++) {
|
|
expect(disk[0][0][i]).toBe(i);
|
|
}
|
|
});
|
|
|
|
it('has the correct bytes in track 1, sector 0', () => {
|
|
const disk = BYTES_IN_ORDER;
|
|
for (let i = 0; i < 256; i++) {
|
|
expect(disk[1][0][i]).toBe(i);
|
|
}
|
|
});
|
|
|
|
it('has the correct bytes in track 30, sector 11', () => {
|
|
const disk = BYTES_IN_ORDER;
|
|
for (let i = 0; i < 256; i++) {
|
|
expect(disk[30][11][i]).toBe(i);
|
|
}
|
|
});
|
|
});
|
|
|
|
describe('BYTES_BY_SECTOR', () => {
|
|
it('has the correct bytes in track 0, sector 0, byte 0 and byte 1', () => {
|
|
const disk = BYTES_BY_SECTOR;
|
|
expect(disk[0][0][0]).toBe(0);
|
|
expect(disk[0][0][1]).toBe(0);
|
|
});
|
|
|
|
it('has the correct bytes in track 0, sector 0', () => {
|
|
const disk = BYTES_BY_SECTOR;
|
|
for (let i = 0; i < 256; i++) {
|
|
expect(disk[0][0][i]).toBe(0);
|
|
}
|
|
});
|
|
|
|
it('has the correct bytes in track 1, sector 0', () => {
|
|
const disk = BYTES_BY_SECTOR;
|
|
for (let i = 0; i < 256; i++) {
|
|
expect(disk[1][0][i]).toBe(0);
|
|
}
|
|
});
|
|
|
|
it('has the correct bytes in track 30, sector 11', () => {
|
|
const disk = BYTES_BY_SECTOR;
|
|
for (let i = 0; i < 256; i++) {
|
|
expect(disk[30][11][i]).toBe(11);
|
|
}
|
|
});
|
|
});
|
|
|
|
describe('BYTES_BY_TRACK', () => {
|
|
it('has the correct bytes in track 0, sector 0, byte 0 and byte 1', () => {
|
|
const disk = BYTES_BY_TRACK;
|
|
expect(disk[0][0][0]).toBe(0);
|
|
expect(disk[0][0][1]).toBe(0);
|
|
});
|
|
|
|
it('has the correct bytes in track 0, sector 0', () => {
|
|
const disk = BYTES_BY_TRACK;
|
|
for (let i = 0; i < 256; i++) {
|
|
expect(disk[0][0][i]).toBe(0);
|
|
}
|
|
});
|
|
|
|
it('has the correct bytes in track 1, sector 0', () => {
|
|
const disk = BYTES_BY_TRACK;
|
|
for (let i = 0; i < 256; i++) {
|
|
expect(disk[1][0][i]).toBe(1);
|
|
}
|
|
});
|
|
|
|
it('has the correct bytes in track 30, sector 11', () => {
|
|
const disk = BYTES_BY_TRACK;
|
|
for (let i = 0; i < 256; i++) {
|
|
expect(disk[30][11][i]).toBe(30);
|
|
}
|
|
});
|
|
}); |