Sigurbjörn Lárusson's blog

Musings of a network engineer

Convert

As you know I've lately been having some fun with the very early (pre-initial-release) Kickstart disks for the Commodore Amiga series of computers. As a long time Amiga fan I've had more fun nerding around with these than many other more modern gadgets. The original developer tools found hidden on the disks include a tool called Download which was used to Download a binary over the serial port (from a machine that was able to generate a Amiga based binary, a Sun based workstation). On the sun end you would use a tool called tip (an ancient UNIX serial program for transferring files).

Obviously I wanted to try this download tool (on an emulated Amiga running the 27.X kickstart image). Making a tool that would convert a file to the format that the tip tool used was trivial and it's available on my GitHub page as convert.c. It should be easy to compile on any *nix system with gcc -o convert convert.c

Object Examiner

As part of my ongoing fun with the Amiga developer pre-release tools hidden on the 27.X kickstart disks I was curious to run some of the binaries through a hex dumper that was able to decode the Amiga binary, mainly in search of "interesting" (it's only really interesting if you're an Amiga fan or a nerd to a high degree) information.

As some of you might know an Amiga binary file has multiple hunks, of different types, which contain the executable binary code as well as all sorts of optional information (including debug information). There is a good document Over on Wikipedia that describes the Amiga Hunk format to a good degree. This tool is designed to run through a binary file, decoding those hunks and giving you information about each one of them.

The program takes one required argument (which is the filename of the binary to decode) and two optional ones

  • -o to specify and output file to write the output of the program to (instead of standard output which is default)
  • -d to get additional (debug) output about each and every hunk. If you enable debug it will also dump any string it finds (the term string is used very loosely, it basically finds any 3 character ascii combination (in a row) and dumps it out). It will also rot13 decode all data to see if there's a hidden rot13 encoded string in the binary somewhere.

The tool is available on my GitHub page as objectexaminer.c. It should be easy to compile on any *nix system with gcc -o objectexaminer objectexaminer.c

Extract-ADF (modified)

my altered version of Michael Steil's (who has a blog over at Pagetable) program to extract files from an ADF (Amiga disk file). My altered version restores the full file path (not just the filename itself), allows you to set the start and end sector (useful for HD floppies or damaged adf files) and made the debug output a compilation option instead of the default As part of my ongoing fun with the Amiga developer pre-release tools hidden on the 27.X kickstart disks I was curious to run some of the binaries through a hex dumper that was able to decode the Amiga binary, mainly in search of "interesting" (it's only really interesting if you're an Amiga fan or a nerd to a high degree) information.

As some of you might know an Amiga binary file has multiple hunks, of different types, which contain the executable binary code as well as all sorts of optional information (including debug information). There is a good document Over on Wikipedia that describes the Amiga Hunk format to a good degree. This tool is designed to run through a binary file, decoding those hunks and giving you information about each one of them.

The program takes one required argument (which is the filename of the binary to decode) and two optional ones

  • -o to specify and output file to write the output of the program to (instead of standard output which is default)
  • -d to get additional (debug) output about each and every hunk. If you enable debug it will also dump any string it finds (the term string is used very loosely, it basically finds any 3 character ascii combination (in a row) and dumps it out). It will also rot13 decode all data to see if there's a hidden rot13 encoded string in the binary somewhere.

The tool is available on my GitHub page as objectexaminer.c. It should be easy to compile on any *nix system with gcc -o objectexaminer objectexaminer.c

Pagetable Amiga

Read a very interesting article over on Pagetable about pre-1.0 beta versions of the Amiga Kickstart disks. Apparently the disk that the original Amiga Kickstart came on was a re-used Amiga pre-release developer disk. Since the Kickstart only takes 256k (and the floppy is over 800) there is a bunch of files that can be retrieved from the disk and examined further.

As an old Amiga user and a nerd I found this very intriguing so I dug up the old Kickstart ADF files and fired up WinUAE to do some testing of my own. I also discovered that this does not apply only to the Kickstart 1.0 disk but also to (at least) the 1.1 disk which contains a slightly newer developer disk. It's quite fun to compare the different versions on each disk, including some of the original AmigaDOS commands and see how they changed between their pre-release revisions and the final release (1.0) revision. I've put some work into comparing each fun to try to find the differences between the different revisions.

I've had a ton of fun doing this, and I've altered the extract-adf tool which Michael Steil graciously supplied on that page I linked before and even created some new ones to look into the hunks in the executable binary files and send files over the serial. I'll make these available to the public when I've cleaned them up a little, perhaps next month

cidr6

cidr6 is a tool I wrote for IPv6 subnet calculations. For many years I (along with countless others probably) have used CIDR by Robert L. Lineberger as a tool for IPv4 subnet calculation. As the years have passed I've mostly memorized every conceivable combination but when shifting to IPv6 calculations I find that my binary math is sometimes lacking. I wrote a simple tool called cidr6 which aims to do the same thing that cidr does so well for IPv6 prefixes. It has some limitations, including:

  • It does not support prefixes which are smaller than /64, if you're going to use /126 or /127 prefixes, you really should allocate a /64 but use it as a /126 or /127 anyway!
  • It does not support prefixes which are larger than /16. If you have something larger than a /16, you can split it up into individual /16s and use the tool for those prefixes.
It's available in source code form from my github page as cidr6.c.and should compile on mostly any *nix platform using gcc -o cidr6 cidr6.c

Learning to play the guitar

As some of you might know I had a nasty accident on the 1st of February. To make a long story short and fell and broke my wrist pretty badly (so badly in fact that I needed to have surgery on it)

As a consequence of this I've decided to take the plunge and finally learn to play the guitar, I played the keyboard for a long time (never really officially learned anything but I had a lot of fun) and I've wanted to learn to play the guitar for a while now. Learning to play will force me to use my wrist as I try to rehabilitate my hand and force me to do so with something that I actually enjoy doing (can't say that the wrist exercises are particularly fun) so I'm looking forward to having something productive to do with my left hand. Purchased a white Stagg Steel-String acoustic from a local store called Gítarinn. It didn't cost very much so if I end up not liking to play or not having the patience to apply myself to it I won't be out too much money.