Yes, I know I'm ranting about 1980s OSes, but to be quite frank, modern OSes on a variety of hardware still have a similar problem.
Wait, what do I mean you ask? Surely you will always have ethernet/wifi/USB available? I almost started writing a bit on that here given I end up working behind the scenes on modern hardware and a LOT has to be working before you can talk over the network or, heck, even boot your device. But I'll leave that for another day.
This is a similar thing to what I found in a previous blog post about boot-strapping an old PC/AT before I had useful media (read: disks and other working machines.) It's doubly tricky for the Amiga because of it's non-standard floppy disk format that can't be easily read on PCs, let alone written to. You need to have another Amiga, or some modern multi-format disk interface like the Catweasel. I lucked out and at least got working Workbench 1.3 Main and Extra disks with the Amiga 1000 I picked up - but no working Kickstart disk, hence why I'm working with the Amiga 500 right now.
Anyway, the goal of this is to get the following to work:
- Figure out how to transfer a simple program to get a single binary over in a useful way;
- Transfer a small enough program over to do xmodem/ymodem/zmodem;
- Use that to bootstrap the tools to write disk image files to an Amiga 880K disk; and
- Also write out a working Kickstart 1.3 disk for my Amiga 1000.
- Set the speed - I used 9600, it's somewhat reliable here;
- 8/N/1, which is already setup;
- Buffer size 1024 bytes, not 512 bytes;
- Hardware flow control!
Except the block size thing. Apparently with the way AmigaBasic speaks to the serial driver the transfers have to be in block sized blocks, not just the file size. So you need to pad the file you're sending. The receive.bas program will write out the correct length for you.
- dd if=file bs=1024 conv=sync > /dev/ttyUSB0
- Some tiny xmodem program that can be transferred over serial relatively quickly, and can receive exact file sizes (ie it'll truncate the last block if needs be)
- A program to actually truncate a file at a given offset so you can use amigaterm as-is to transfer files slowly but reliably, and then just manually truncate it to where it needs to be in order to use it.
- ... and then some less tiny but working zmodem program that'll work with Workbench 1.3 to get files on and off the thing.