Hacker News new | past | comments | ask | show | jobs | submit login
Bootstrapping an Amiga without a bootable floppy (rvalles.net)
110 points by rvalles 7 days ago | hide | past | favorite | 21 comments





Author here. I am amazed it made frontpage.

openbsd's httpd seems to be handling the load well.

I will read your comments if any :)


Great work!

I had thought about trying this myself but gave up after realising I'd not have access to Trackdisk.device from Romwack - Didn't know about Coolcapture/Warmcapture. I guess I need to read up some more!


Did re-read your comment, and thought I'd point you to some code so you can quickly see how it works.

Regarding trackdisk.device, you might want to take a look at:

https://github.com/rvalles/pyamigadebug/blob/master/ExecLibr...

And the function calling mechanism for RomWack backend:

https://github.com/rvalles/pyamigadebug/blob/master/RomWack....

Ultimately, TrackdiskDevice ends up being a thin wrapper around ExecLibrary:

https://github.com/rvalles/pyamigadebug/blob/master/Trackdis...

For performance purposes, the Floppy tool does instead use this small server written in asm:

https://github.com/rvalles/pyamigadebug/blob/master/asm/flop...

And the python boilerplate client to talk with it:

https://github.com/rvalles/pyamigadebug/blob/master/FloppyXf...

For the BERR case, without the initial reboot, Amiga will just crash again when calls are made from the exception handler. Recovering control after a reboot is a nice and clean way to get the Amiga into a known state. It is definitely also doable without rebooting, but somewhat more involved.

Else, when entering the debugger via e.g. the extra debug menu present in workbench when loaded via "loadwb -debug", the context RomWack works with is a user context, so I just take over the user task. As long as I don't corrupt the stack (or anything else), I can even return cleanly.


Hey, you're not doing so bad yourself with your Amiga OSHW either!

There's much work to be done with the Amiga in the OSHW front, thus this is very welcome.

I intend to read your mem68k-like board's Verilog at some point in the near future. I might want to build one of these, but even if I don't, I wish to learn how it works.


This is amazing. Great work! And I love how active the Amiga scene still is :)

Apparently IBM XT also had a way of being bootstrapped with no drives attached

https://hackaday.com/2011/10/03/resurrecting-an-xt/

    ;————————————————————————
    ; LOAD A BLOCK OF TEST CODE THROUGH THE KEYBOARD PORT :
    ; FOR MANUFACTURING TEST. :
    ; THIS ROUTINE WILL LOAD A TEST (MAX LENGTH=FAFFH) THROUGH :
    ; THE KEYBOARD PORT. CODE WILL BE LOADED AT LOCATION :
    ; 0000:0500. AFTER LOADING, CONTROL WILL BE TRANSFERRED :
    ; TO LOCATION 0000:0500. STACK WILL BE LOCATED JUST BELOW :
    ; THE TEST CODE. THIS ROUTINE ASSUMES THAT THE FIRST 2 :
    ; BYTES TRANSFERRED CONTAIN THE COUNT OF BYTES TO BE LOADED :
    ; (BYTE 1=COUNT LOW, BYTE 2=COUNT HI.) :
    ;————————————————————————

Interesting. I had a 5155 (XT luggable) with drives but no disks. I debated writing a machine code bootstrapping program (POKE’d in through the ROM basic) to boot over the serial port.

I sold it before I got the chance. It’s a neat machine, but not my particular niche in the retro realm.


I had never heard about this one. Neat.

re: Amiga, it is sad that, with 256KB of ROM, they couldn't fit a key combination to call exec's Debug() in the strap module.

I understand that, somehow, nobody thought about it.


Another cool thing happening in the Amiga world is PiStorm - a Raspberry Pi based replacement for the CPU. And the resulting speed up in performance and RAM.

https://www.youtube.com/watch?v=-CwVofNogDI


if speed is what you want why not just run winuae and emulate at >1000x the speed of 68000? Even pi4 runs winuae at >400mips. You know whats funny? Workbench still stutters while filling drawers one icon at a time.

While fast, PiStorm is still similar to a 030, and not anywhere near fast enough for 060 demoscene.

Workbench is what it is.


Tiny question: what is LSB?

> At this point, we have control again and AmigaOS is almost fully initialized, with the notable exception of dos.library (not required for doing block level I/O), which is skipped as the LSB of its RomTag structure's rt_Flags field is clear.


Least Significant Bit, there.

Tiny question, tiniest bit answer :-D

To add some context, these RomTag structures reside in ROM, so they can't be edited.

The table of residents is, however, in RAM. It should be possible to add RomTags to it, or copy the ROM ones to RAM and modify them there. Conveniently, I did not need to do so.


Least significant bit. At least that’s my interpretation from context.

least significant bit

This is awesome! I always enjoy reading about projects like this, even though I'm nowhere near a situation where I actually need to bootstrap an Amiga. :D

I guess it's the combination of computer history/nostalgia and the impressive level of knowledge that motivates me the most.


I have to have show dead on to see your comment, maybe you're shadow banned?

I can confirm something's wrong by using an incognito windows.

It might have something to do with my user being new. Who knows what secret rules are in place for that.

I'm hopeful this will change soon, but who knows.


I just vouched one of your comments.

I suspect you just got hit by the spam filter. (But I’m not a mod I’m just a nobody so that’s just a guess on my part.)


This is neat. In the 80's, I remember hooking another computer to my Amiga's serial port and entering the debugger ("RomWack".) I had no idea what to do with it though.

Me neither, until relatively recently I found documentation for romwack. It lives in the "Amiga ROM Kernel Reference Manual: Exec"[0] book.

My pyamigadebug[1] is backed by this debugger and the newer SAD that replaces it in AmigaOS 3.x.

Making function calls and uploading code to the Amiga and running it is made trivial by pyamigadebug. My AmigaXfer[2] is built on this.

[0]: https://archive.org/details/amiga-rom-kernel-reference-manua...

[1]: https://github.com/rvalles/pyamigadebug/

[2]: http://aminet.net/package/comm/misc/amigaXfer_win32 [2]: https://github.com/rvalles/pyamigadebug/releases




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: