I understand from the documentation that the disk contains a raw bitstream to be fed to a UART, using one low start bit and one high stop bit. The emulator source code makes it clear that the "bytes" in the
.ccvf file are incidental, and they should be interpreted as a sequence of bits.
However, if I do that (and in the same bit order as reverse-engineered from the
peekByte function linked above), the resulting 10-bit units don't seem to match the start/8-bit data/stop format that I expected. For example, track 1 of this disk image, when converted to a stream of bits, starts like this (grouped in 10s):
0,00010011,0, 1,01000111,0, 1,01010111,0, 0,10101111,0, 1,11101101,1, 1,11111111,1
I would expect the middle 8 bits to correspond to the actual data (as bytes), in the bit order prescribed by the UART; but we can see 0 stop bits (e.g. line 1) and 1 start bits (e.g. line 2), which don't make much sense.
My goal as a first step would be to get a list of 8-bit bytes from these disk images, corresponding to the data that ultimately appears on the TMS5501's port 0 ("read serial data"). Evidently, just taking the middle 8 bits of these 10-bit words is not enough. How can I achieve this?