Trying to support the Xerox 820 with appmake
Posted: Wed May 18, 2022 3:23 pm
Some time ago I submitted a patch to the MAME project fixing the disk controllers on the basic Xerox820 model (SA400->SA400l drive models).
The RAW format is not accepted yet, but IMD works fine.
Now it is possible to work on the disk images with CPMTOOLS and, with a bit of work, run CP/M programs on MAME.
The TRM has detailed technical specs, so I thought it was easy to include the disk format in appmake, but something is wrong.
Got from the TRM (SSSD, 5"1/4, 40 Tracks, 18 Sectors, 128 byte sector size):
Sectors Per Track (SPT) 18
Block Shift Factor (BSH) 3
Max. Rec. # in blk (BLM) 7
Extent Mask (EXM) 0
Total Storage capacity (DSM) 82
Total # of directory entries (DRM) 31
Allocation mask (ALO) 80H
Allocation mask (AL 1) 0
Size of dir check vector (CKS) 8
Reserved tracks (OFF) 3
Skew table: 1 ,6, 11, 16, 3, 8, 13, 18, 5, 1 0, 15, 2, 7, 12, 17, 4, 9, 14
Cpmtools (works):
# XER2 Xerox 820 - SSSD 48 tpi 5.25" - 128 x 18
diskdef xer2
seclen 128
tracks 40
sectrk 18
blocksize 1024
maxdir 32
skew 5
boottrk 3
os 2.2
end
My conclusions (close, but does not work):
static disc_spec x820_spec = {
.name = "Xerox820",
.sectors_per_track = 18,
.tracks = 40,
.sides = 1,
.sector_size = 128,
.gap3_length = 0x17,
.filler_byte = 0xe5,
.boottracks = 3,
.directory_entries = 32,
.extent_size = 1024,
.byte_size_extents = 0,
.first_sector_offset = 0,
.has_skew = 1,
.skew_track_start = 0,
.skew_tab = { 0,5,10,15,2,7,12,17,4,9,14,1,6,11,16,3,8,13 }
};
I can see a correct directory on CPMTOOLS but MAME fails. The image is accepted by MAME but CP/M says "disk error".
Suggestions ?
The RAW format is not accepted yet, but IMD works fine.
Now it is possible to work on the disk images with CPMTOOLS and, with a bit of work, run CP/M programs on MAME.
The TRM has detailed technical specs, so I thought it was easy to include the disk format in appmake, but something is wrong.
Got from the TRM (SSSD, 5"1/4, 40 Tracks, 18 Sectors, 128 byte sector size):
Sectors Per Track (SPT) 18
Block Shift Factor (BSH) 3
Max. Rec. # in blk (BLM) 7
Extent Mask (EXM) 0
Total Storage capacity (DSM) 82
Total # of directory entries (DRM) 31
Allocation mask (ALO) 80H
Allocation mask (AL 1) 0
Size of dir check vector (CKS) 8
Reserved tracks (OFF) 3
Skew table: 1 ,6, 11, 16, 3, 8, 13, 18, 5, 1 0, 15, 2, 7, 12, 17, 4, 9, 14
Cpmtools (works):
# XER2 Xerox 820 - SSSD 48 tpi 5.25" - 128 x 18
diskdef xer2
seclen 128
tracks 40
sectrk 18
blocksize 1024
maxdir 32
skew 5
boottrk 3
os 2.2
end
My conclusions (close, but does not work):
static disc_spec x820_spec = {
.name = "Xerox820",
.sectors_per_track = 18,
.tracks = 40,
.sides = 1,
.sector_size = 128,
.gap3_length = 0x17,
.filler_byte = 0xe5,
.boottracks = 3,
.directory_entries = 32,
.extent_size = 1024,
.byte_size_extents = 0,
.first_sector_offset = 0,
.has_skew = 1,
.skew_track_start = 0,
.skew_tab = { 0,5,10,15,2,7,12,17,4,9,14,1,6,11,16,3,8,13 }
};
I can see a correct directory on CPMTOOLS but MAME fails. The image is accepted by MAME but CP/M says "disk error".
Suggestions ?