PorkyPiggy
Member
- Joined
- Jan 11, 2024
- Messages
- 46
I managed to get in touch with Rich and Lucas and now we are working on a disassembly of 86-DOS 0.11's kernel; will post updates once we make progress.
Meanwhile, I have updated the 86-DOS 0.11 port and ported 86-DOS 0.34 to the IBM PC. Again, I didn't put too much effort into speed enhancements, so they are still very slow. The biggest difference between the updated ports and the original port lies in the disk layout. According to Lucas's research, early pre-releases of PC-DOS from the same era stored the BIOS and kernel in a 'reserved system area' similar to that of CP/M. I feel like it is more appropriate to use the same disk layout IBM used in late 1980/early 1981, so I have modified the boot sector and BIOS accordingly.
86-DOS 0.11 IBM PC Port - v2
I have cleaned the BIOS and boot sector code up, and switched to the period-correct disk layout. Please download "86-dos_0.11_ibm_pc.zip" to test the newest port.
86-DOS 0.11 allows multiple files to use the same name. Not sure if this is a bug or the intended behavior, but it is kind of annoying. Once you have multiple files named the same thing, deleting one of them will delete all of them. You can use the undocumented internal command "CREATE <filename>" test this. I have not tested this under 0.34 yet, because its command interpreter does not have the CREATE command.
86-DOS 0.34 IBM PC Port
Here is my first attempt at porting 0.34 to the IBM PC. Just like the 0.11 port, it uses the early PC-DOS disk layout and runs like sh*t. All utilities should work too, including RDCPM, INIT and SYS. Please download "86-dos_0.34_ibm_pc.zip" to test the newest port.
There is an interesting bug in DEBUG . When you enter in an invalid command, the text becomes garbled like this:
This is caused by the improper printing of MSB-terminated strings. The code looks roughly like this:
String termination is checked for after the character is sent to the console. This makes it output the wrong thing for the last character, and in this case, LF gets printed as 0x8A instead of 0x0A. According to Rich, this issue happened to him before and he had to set HyperTerm to strip the high bit. It works fine under SIMH, however:
We suspect that this bug only started to show up when 86-DOS was officially ported to the IBM PC by IBM in late 1980/early 1981, as according to Rich, only a handful of video cards existed for the S-100. It also matches with the fact that 86-DOS 1.00's DEBUG does not have this issue.
Tests
@retrogear Thanks for testing! And yes, I would like you to test my newest ports (see attachments). In addition, if possible, could you please also test RDCPM by copying the 4 text files from the sample CP/M-86 disk ("test_cpm86_disk.zip") onto an 86-DOS disk? I also want to make sure that RDCPM works. Once again, thank you for testing my port .
Sincerely,
Pig
Meanwhile, I have updated the 86-DOS 0.11 port and ported 86-DOS 0.34 to the IBM PC. Again, I didn't put too much effort into speed enhancements, so they are still very slow. The biggest difference between the updated ports and the original port lies in the disk layout. According to Lucas's research, early pre-releases of PC-DOS from the same era stored the BIOS and kernel in a 'reserved system area' similar to that of CP/M. I feel like it is more appropriate to use the same disk layout IBM used in late 1980/early 1981, so I have modified the boot sector and BIOS accordingly.
86-DOS 0.11 IBM PC Port - v2
I have cleaned the BIOS and boot sector code up, and switched to the period-correct disk layout. Please download "86-dos_0.11_ibm_pc.zip" to test the newest port.
86-DOS 0.11 allows multiple files to use the same name. Not sure if this is a bug or the intended behavior, but it is kind of annoying. Once you have multiple files named the same thing, deleting one of them will delete all of them. You can use the undocumented internal command "CREATE <filename>" test this. I have not tested this under 0.34 yet, because its command interpreter does not have the CREATE command.
86-DOS 0.34 IBM PC Port
Here is my first attempt at porting 0.34 to the IBM PC. Just like the 0.11 port, it uses the early PC-DOS disk layout and runs like sh*t. All utilities should work too, including RDCPM, INIT and SYS. Please download "86-dos_0.34_ibm_pc.zip" to test the newest port.
There is an interesting bug in DEBUG . When you enter in an invalid command, the text becomes garbled like this:
This is caused by the improper printing of MSB-terminated strings. The code looks roughly like this:
Code:
CS:0198:
LODS BYTE PTR CS:[SI]
CALL CS:021C ;Output char
SHL AL,1
JNC CS:0198
RET
We suspect that this bug only started to show up when 86-DOS was officially ported to the IBM PC by IBM in late 1980/early 1981, as according to Rich, only a handful of video cards existed for the S-100. It also matches with the fact that 86-DOS 1.00's DEBUG does not have this issue.
Tests
@retrogear Thanks for testing! And yes, I would like you to test my newest ports (see attachments). In addition, if possible, could you please also test RDCPM by copying the 4 text files from the sample CP/M-86 disk ("test_cpm86_disk.zip") onto an 86-DOS disk? I also want to make sure that RDCPM works. Once again, thank you for testing my port .
Sincerely,
Pig