bhtooefr
Experienced Member
So, I've been thinking about how someone could bootstrap an early IBM PC with a 5.25" drive (so, 5150, 5160, 5155, 4860, and 5170) without using a tweener machine (to install the drive into), without installing a 3.5" drive, and with only blank media. A machine that comes with a 3.5" drive (of the machines relevant to this subforum, 5140, 8525, 8530, 8550, and 8560) won't need this, as a USB 3.5" drive is readily available and can be used to bootstrap them using a modern machine easily.
I'm inspired by the ADTPro project for Apple machines, which can bring an Apple II up from nothing using either audio (it loads ProDOS and the ADTPro client over the cassette interface) or serial (using the Apple II's console redirection, and ADTPro "types" ProDOS and the ADTPro client into the ROM monitor). It also supports entering a short assembly snippet into the Apple III ROM monitor (which doesn't support console redirection), to bootstrap that machine over serial as well.
All of these machines have Cassette BASIC in ROM, and will boot to it if there's no device available. Unfortunately, Cassette BASIC doesn't have any form of serial support - OPEN "COM... is only available in Disk and Advanced BASIC. And, console redirection wasn't a thing in the IBM ROM either. This provides two approaches to getting these machines bootstrapped.
The first approach is valid for the 5150 and 4860 - they have cassette interfaces, so audio bootstrapping is available as an option. Load the bootstrap program over cassette, run it, and it can load anything else (including disk images) over the cassette interface. RAM is a concern on an early (32k-64k on 16-64 board) or low-end late (64k on 64-256 board) 5150, or a low-end (64k) 4860, but as BASIC doesn't need to be running after the bootstrap program is running, it's not that big of a deal.
The second approach is more complicated due to the lack of console redirection or serial loading support in Cassette BASIC, and therefore requires a short stub loader to be typed in (ala ADTPro on an Apple III), but it's valid on all of the models as long as they've got an Async. Communications Adapter (or the Parallel/Serial adapter in a 5170). INT 14h is at least available, though, which would likely help shorten the stub loader code. Essentially, this will involve a typed stub loader, which then either directly loads everything else, or loads a more robust loader to load everything else.
Has anyone already done this (I haven't seen it if it has been done), and if not, is there interest in this?
I'm inspired by the ADTPro project for Apple machines, which can bring an Apple II up from nothing using either audio (it loads ProDOS and the ADTPro client over the cassette interface) or serial (using the Apple II's console redirection, and ADTPro "types" ProDOS and the ADTPro client into the ROM monitor). It also supports entering a short assembly snippet into the Apple III ROM monitor (which doesn't support console redirection), to bootstrap that machine over serial as well.
All of these machines have Cassette BASIC in ROM, and will boot to it if there's no device available. Unfortunately, Cassette BASIC doesn't have any form of serial support - OPEN "COM... is only available in Disk and Advanced BASIC. And, console redirection wasn't a thing in the IBM ROM either. This provides two approaches to getting these machines bootstrapped.
The first approach is valid for the 5150 and 4860 - they have cassette interfaces, so audio bootstrapping is available as an option. Load the bootstrap program over cassette, run it, and it can load anything else (including disk images) over the cassette interface. RAM is a concern on an early (32k-64k on 16-64 board) or low-end late (64k on 64-256 board) 5150, or a low-end (64k) 4860, but as BASIC doesn't need to be running after the bootstrap program is running, it's not that big of a deal.
The second approach is more complicated due to the lack of console redirection or serial loading support in Cassette BASIC, and therefore requires a short stub loader to be typed in (ala ADTPro on an Apple III), but it's valid on all of the models as long as they've got an Async. Communications Adapter (or the Parallel/Serial adapter in a 5170). INT 14h is at least available, though, which would likely help shorten the stub loader code. Essentially, this will involve a typed stub loader, which then either directly loads everything else, or loads a more robust loader to load everything else.
Has anyone already done this (I haven't seen it if it has been done), and if not, is there interest in this?