retrohimpi
Member
Damn! It was a corrupted boot disk image all along. After tracing BASIC execution through interpretation of the first statement without finding anything obviously amiss I tried booting from a different disk image and, bingo, I got a menu of games from its BEXEC* program. I could play Hangman and beat the computer 2 times out 3, so I don't think there's a lot wrong with my emulator.
Out of the 6 C1P-MF disk images I downloaded, only 2 will boot, so I suppose I'd have had to be pretty lucky to have picked a good one first time. If the corrupted bytes are in the binary executables I don't think there's much chance of finding or fixing them, as without a checksum there's nothing to distinguish them from good ones nor any way to know what they were originally.
I think the next step is to make a copy of one of the good disks and then try making my disk emulation write as well as read. I don't think this will require much extra code, as all the track/sector seeking code is in place and working, so all I should need to do is to respond to the write line when it goes high and copy the resulting stream of bytes on the serial line to the right place in the disk image. First, though, I must bone up on the OSI disk BASIC commands as I've no idea how to save a BASIC program to disk.
Out of the 6 C1P-MF disk images I downloaded, only 2 will boot, so I suppose I'd have had to be pretty lucky to have picked a good one first time. If the corrupted bytes are in the binary executables I don't think there's much chance of finding or fixing them, as without a checksum there's nothing to distinguish them from good ones nor any way to know what they were originally.
I think the next step is to make a copy of one of the good disks and then try making my disk emulation write as well as read. I don't think this will require much extra code, as all the track/sector seeking code is in place and working, so all I should need to do is to respond to the write line when it goes high and copy the resulting stream of bytes on the serial line to the right place in the disk image. First, though, I must bone up on the OSI disk BASIC commands as I've no idea how to save a BASIC program to disk.