apple2js/test/js/formats/testdata/13sector.spec.ts
Ian Flanigan dc13b6a59a
DOS 13-sector tests and fixes (#53)
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.
2021-01-03 15:01:30 -08:00

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);
}
});
});