SAGE CP/M disk fun

Wow this was without a doubt one of the more confusing things I’ve ever done.

So here is the problem.  I want to delete some files from an IMD disk image, and then copy some new ones in.  Easy right? .. maybe.

Ok first up the easiest tool I’ve found to manipulate CP/M disk images is cpmtools.  Even better their pre-compiled binary is for Win32, so I’ll run it with Wine on OS X.  which works fine.  Although there is one slight problem, cpmtools doesn’t read the IMD disk format.  So you will have to download imd118.zip from a backup of the late author’s computer.

Now using IMD you need to convert the OS disk into a ‘raw’ or ‘binary’ file.  Naturally IMD is a MS-DOS program so firing up DOSBox, I ran:

Screen Shot 2013-12-05 at 8.35.58 PM
Uncompressing, so easy!

IMDU CPM68K12.IMD CPM.RAW /B

And a few seconds later I had my raw file.  Now the next thing was to manipulate the image in cpmtools.  cpmtools has a database of disk drive types, and naturally there is no definition for the SAGE2.  However thanks to a friend of mine (hi Lorenzo!) I took at look at 22disk, and found their demo version did in-fact have a definition for the SAGE:

BEGIN SAG2 Sage IV – DSDD 96 tpi 5.25″
DENSITY MFM,LOW
CYLINDERS 80
SIDES 2
SECTORS 8,512
SIDE1 0 1,2,3,4,5,6,7,8
SIDE2 1 1,2,3,4,5,6,7,8
ORDER SIDES
BSH 4 BLM 15 EXM 0 DSM 315 DRM 63 AL0 080H AL1 0 OFS 2
END

Which is great, however it took a bit of experimenting to work out how to format this information for cpmtools.  I compared a bunch of known formats, and then managed to work this out:

diskdef sage2
seclen 512
tracks 160
sectrk 8
blocksize 2048
maxdir 128
skew 1
boottrk 2
os 2.2
end

And now I can look at the image file!

$ wine cpmls -f sage2 CPM68K12.RAW
0:
ar68.68k
armath.sub
as.sub
as68.68k
as68symb.dat
asgo.sub
brwnies.txt
copy.68k
core.sub
cpm.sys
ddt.68k
ddt68000.68k
dump.68k
e.sub
find.68k
halt.68k
init.68k
linkcore.sub
lnk.sub
lo68.68k
m.sub
mcc.sub
mince.68k
mince.swp
mind.sub
orbit.sub
p.sub
pe.sub
pip.68k
print.68k
red.sub
redasm.sub
sage4utl.68k
sagebios.sys
screen.68k
setenv.68k
setprntr.68k
sig.txt
space.sub
spacem.sub
startup.sub
stat.68k
tlnk.sub

So I tidy up the image, and copy it back to the IMD program for compressing.  And this was, without a doubt the most difficult to figure out, until after a bunch of searching, and Lorenzo once more again pointed me in the direction of bin2imd

not intuitive!
not intuitive!

So yeah.

BIN2IMD X.RAW X.IMD DM=2 N=80 SS=512 SM=1-8 /2

And the best part is that it worked!  So now I was able to transfer over a binary version of com.68k, com2.68k, along with Zork, and fire it up!

8080 Zork on 68k CP/M
8080 Zork on 68k CP/M

Unfortunately the interpreter doesn’t work right.  It could be the disk transfers fault, maybe the SIMH SAGE emulator, or even the 8080 emulator.  But it worked this far.

SAGE CP/M 68k on SIMH

Somehow, I missed this as a ‘beta’ driver for the last public release of SIMH.

68k CP/M 1.2
68k CP/M 1.2

What makes the 68000 version of CP/M different from the i8080 version is that it was coded in C.  And of course 68k CP/M suffered the same problem every other processor incompatible ‘same os’ OS has ever suffered which is no applications.  But that is when I remembered the COM, which started out it’s life as an 8080 emulator for the 68000.  With a LOT of creative googlling, I managed to find the source, mysteriously labelled 8088M.ZIP.  I also found a binary here. But unfortunately that is as far as I got.  I haven’t managed to figure out a way to inject files into the SAGE CP/M IMD disk images.

So this is where I’m stuck, and this is my call for help.  If anyone knows how to get files in/out of these IMD files give me a shout.  For anyone interested in 68k CP/M this is your chance to get it running.

The one funny thing I found in a hex editor of the disk image was this:

Screen Shot 2013-12-05 at 12.20.20 AM
Cryptic message

Oh well.

 

***EDIT***

Never mind, me and a friend of mine (hi Lorenzo!) got the disk image thing figured out!

AMIX

AMIX Ad
AMIX Ad

Back in 1990 Commodore took the Amiga in a new direction with it’s new Amiga 3000, by commissioning a port of A&T SYSV Unix to the Amiga. Taking advantage of the 3000’s 68030 CPU and 68881 Math coprocessor, along with its integrated SCSI controller. It certainly was the hallmark of typical UNIX machines of the time.

When originally announced there was some big interest in the platform by SUN, as their original SUN-1, SUN-2 & SUN-3 lines of workstations were all 68000 based machines, and being able to rebrand a mass produced Commodore model would have been a good thing, however the deal ultimately fell through.  The machine would have been the Amiga 3500, which later became the Amiga 3000T.

Another thing to keep in mind is that SUN’s SYSV (Solaris) was targeted to the SPARC processor, and it is unlikely that they would benefit from selling a 68030 based machine in 1991.

Typical of the time, AMIX installs from a set of boot floppies, and then pulls the rest of the installation from a tape drive, such as the A3070.

AMIX was released at a time when the UNIX world was rapidly moving to RISC processors, SUN had their SPARC, SGI had their MIPS, IBM and their POWER, Motorola built UNIX machines around their 88000 RISC processor, NeXT was also going to move to the 88000 until they gave up making their own hardware and shifted to a software company.  So who would want a then dated 68030 based machine when the industry had made their first steps into the world of RISC computing.

So how does it measure up?  Well it is SYSV, and if you’ve seen one, well honestly you’ve seen them all.  What is kind of neat is that AMIX includes OpenLook and a C compiler, which is kind of a rarity for the period.

Another flaw was that when the 68040 processor was released it’s MMU was incompatible with the 68030, and the VM subsystem for any UNIX would have to be rewritten.  While NetBSD can run on both the 68030 and 68040, AMIX never was updated, and so it can only run on 68030 based machines.

AMIX never did get any critical traction, and slipped into oblivion with the death of Commodore.

Up until recently it was impossible to run AMIX in any emulator, but there has been a lot of work on the ARANYM and Pervious emulators which included doing 68030 MMU support for the possibility of running early versions of NeXTSTEP. Toni Wilen was able to adapt their work onto WinUAE and it is not possible to run AMIX.!

Reading through this thread,  I was able to put together the needed bits, and get it running under CrossOver, by using the pre-configured settings for WinUAE, and replacing the exe with the new beta exe, the supplied hard disk image from amigaunix.com and I was up and running in no time!  The only real change from the config was to change the SCSI ID of the hard disk from 0 to 6.

Screen Shot 2013-01-13 at 8.48.54 PM
AMIX starting up on WinUAE

The default password is wasp.  I thought it was kind of interesting that AMIX includes ‘dungeon’.  really cool!

Open Look on AMIX
Open Look on AMIX

I am unsure of how to enable the high resolution graphics, but sadly the Amiga known for its multimedia capabilities, AMIX with stock graphics runs in monochrome.  Such a major underwhelming thing.

Oh well, for anyone inclined you can now run AMIX, and enjoy another dead SYSV.

AmiDevCpp

Antoni sent me a link to this project, AmiDevCpp. It is a nice little wrapped up IDE for cross compiling applications for the following platforms:

  • AmigaOS (m68k)
  • AmigaOS4 (PPC)
  • MorphOS(PPC)
  • AROS (i386, ppc and x86_64).

Naturally it doesn’t work correctly on Wine.. .Oh well, but for you Windows users out there that haven’t installed Cygwin this is an easy way to cross build stuff for the ancient Amiga platform.

Apparently he was able to rebulid the infamous aclock using this cross compiler…

More fun with Janus!

Frontier Elite, on Janus
Frontier Elite, on Janus

So, I came across this great page, Frontierverse, which has download links for all the versions of Frontier Elite which were released out as shareware.  So what is cool, is that using the AROS Kickstart replacement ROM, it’ll boot up and work!

Just be sure to increase the default amount of chip memory, as it seems the AROS Kickstart ROM consumes more RAM than the Commodore ROM.  But heck the AROS ROM is opensource, and free!

Pretty cool, and more interesting than say the normal, yippie a view of the AROS cat..

 

AROS Kickstart ROM
AROS Kickstart ROM

Again very cool stuff!

And lastly, I slapped together a disk that’ll boot up aclock, although it works only with a Kickstart 2 or higher ROM.. 1.3 kinda freaks out, and I didn’t feel the need to go all over the top on this one.  Booting the aclock disk with the Aros ROM though loads up, but the clock doesn’t tick..

On OS X, I’ve been using the FS-UAE emulator to some degree of success, I’ve found it a tad cumbersome for swapping floppy disks, and I’ve had a major issue where making updates on an ADF that while they all look like the changes are reflected, going to the filesystem proved otherwise.  So I wound up having to make DMS disk images, and running some ancient MS-DOS program to convert DMS to ADF‘s.  Naturally the compression programs were in turn.. compressed.  So with enough fooling around with various archivers I found here, I was finally able to get where I needed to be.

At the same time, looking at how the AROS kickstart replacement ROM is quite capable, it may be time to revisit AROS, and I would imagine it has become far more capable than that last time I had looked at it.

25 years of GCC!

In 1987 the first announcement went out that Stallman had introduced perhaps the most important piece of GNU software ever:  GCC.

I haven’t been able to locate the 1.0 release or even the 0.9 beta (*Edit as an update, yes I’ve found it, and installed it!), as close as I could find was 1.21 from May 1st, 1988. Even at this time, GCC supported the following CPUs:

  • m68k
  • ns23k
  • spur
  • vax
Amazingly GCC at this point is pretty snappy, and very ANSI compliant unlike PCC.  At this point it still relies on native assemblers, linkers, librarians it still was pretty versatile. Back then there was no auto configuration tools you have to link configuration scripts by hand but even on VAX BSD it builds somewhat straightforward (providing you read the documentation)..
GCC 1.21 on 4.2 BSD

I don’t know if it serves any practical value but I went ahead and built a source package for GCC 1.21, along with a 4.2 BSD binary package.. I suspect it’d only be an interest to a select few.. Although if anyone has 1.0 or 0.9 I’d be interested!

By 1991 GCC 1.40 supported not only the i386, but Linux kernel.. And as they say the rest is history.

And finally a video summation of all the changes to GCC…

 

Dungeon for the SHARP x68000 (on NetBSD)

Dungeon on the x68000

Its been a while since I’ve added a new port of Dungeon (zork!) so here we go!

Building f2c was a snap on the x68000, it just took a while..

Getting data into the VM was easy, just make an ISO image, and mount it.. Getting data out was.. a challenge, as the floppy doesn’t work under NetBSD, and it didn’t seem to want to see my other hard disks, just my root.  Well thankfully it’s virtual so I just did a:

tar -cvf /dev/sd0c dungeon.tar.gz

NEVER do that on a real machine kids!!!

Anyways here you go, for anyone who loves zork & the m68k!

XM6i

While checking out the NetBSD emulation page, I came across this interesting emulator, XM6i, which can run the x68000 NetBSD port.

Wasting no time, I downloaded it, and quickly found out it is all in Japanese… But hell that is what Google translate is for!  Just be forwarned that it’ll translate things like:

# memswitch -w boot.device=ROM; memswitch -w boot.romaddr=0xeac000

into

# Boot.Device Memswitch-w = ROM; Memswitch-w = 0Xeac000 Boot.Romaddr

I was able to get all the system bits, and get it to boot up the ROM!

Sharp boot logo

As you can see, I’m emulating a 68030 with MMU, running at a blazing 25Mhz with 12MB of ram! No doubt this is top of the line!  So I generated the boot floppies as described on the XM6i page, and booted NetBSD.  The boot loader on the x68000 looks kinda cool:

Boot with the daemon!

And after waiting for an eternity, like a real machine I booted up, swapped disks, read some more and then watched the kernel initalize:

NetBSD 5.1 68000

Installation is pretty straight forward, it is like any other NetBSD platform.  Although it is *SLOW*, even after I discovered the ‘turbo mode’ … As shown below:

Turbo mode!

Even in this mode, I’m running 220% faster than the real machine… I’m sure there are more tweaks to do, but my not being able to read Japanese isn’t helping any.

I figured for future’s sake, I’d just 7zip up what I have so far, maybe it’ll save some time for me later if I try this again.. Getting & generating the ROMS was kind of involved.

After an hour I had a base machine installed!

Of course it runs NetBSD!

All my work is here, and my NetBSD 5.1 install (to save yourself an hour+) is here.  Both files will blow out a 2GB disk image… FWIW.

Also if you’ve never used a Japanese keyboard before, they aren’t quite QWERTY with symbol layouts… This cheat sheet will help!

If you don't know where the colon is, vi can be impossible to use.

The Commodore Amiga

I was enjoying that great site, stumbleupon when I came across a commented listing of the Amiga 1.2 ROM. Then it hat hit me, I’ve never really written about some of the great emulators for the Commodore Amiga.

Back when I was in highschool I wanted a Commodore Amiga, as at the time I was stuck with a Commodore 64. However the world was starting to accept the IBM PC swing of things. Windows 3.0 was out, suddenly the protected mode of the 80286 could be exploited for only a few hundred dollars, vs the thousands for a UNIX port, or what OS/2 cost. And of course the big appeal at the time was that you could build your own PC in a kit fashion (well it still is!). So I was toying with the idea of buying this 286 8Mhz board for $30 CDN when I saw this program that a kid had brought in… It needed VGA, but it could apparently emulate a Commodore Amiga!

You can still download it here.

Running it just simply threw up a picture of the Amiga’s insert a workbench diskette, and clicked the drive madly.. Passing it through a hex editor showed a copy of an Amiga ROM tacked on the end, but it didn’t actually emulate anything.

But I didn’t realize it at the time, and it cemented my decision to buy the 286.

Years later and the topic of m68k emulation came up, as there were simple cross assemblers and simulators, and I can remember in college searching to see if anyone had started an Amiga emulator… And there was one project!

UAE

Originally it stood for “Unusable Amiga Emulator” and well it was unusable. But then with enough people starting to flock to the project it suddenly could boot AmigaDOS. I used to use this on MS-DOS back in the day for ‘maximum’ speed. I was able to find one ancient version of this 0.65 that still has an MS-DOS exe. And it runs great under DOSBOX. You can find it here.

And for the heck of it, here is a screen shot with a 1.3 ROM.

UAE 0.65 under DOSBOX
UAE 0.65 under DOSBOX

Naturally transferring disks was a major pain in the butt… I luckily had a friend with a working Amiga and cross dos for AmigaDOS all configured so I could transfer some terminal emulator to my poor Amiga 500 I had picked up at a used hardware store in college. Then I used what I could of ramdisks, compression programs and whatnot to upload via some 50 foot nullmodem cable I had to transfer ADF’s of my workbench disks and an old favorite game of mine, Captain Blood. Even back at the time, Commodore was bankrupt their future was bleak. Getting spare parts then was becoming hard for my Amiga 500. And my 486SX-20 could almost run at an acceptable speed in emulation..

But time marches on.

UAE was then ported to Linux & X11, and the SVGA lib. I had some old RS232 terminal so I could keep on using my machine to ‘work’ and still play console vga stuff like doom for SVGAlib and of course UAE. Now with CPUs in the GHz++ speed range, emulation of a 8Mhz machine with 3 custom chips is more in software then raw cpu speed. The UAE project kind of died off, there hasn’t been any big updates in years, but the CPU core work lives on in all kinds of m68k derived work.

There is no doubt that there is still a few closeted Amiga users out there, but I suspect that we don’t kick up UAE all that much these days.. But it’s still cool to watch it in action.

And of course the demos! One of my favorites was the fairlight 242 demo. Which UAE with a Kickstart 1.3 ROM will run. Even the MS-DOS version!

fairlight 242 UAE for DOS on DOSBOX
fairlight 242 UAE for DOS on DOSBOX

I should add you can find more demos here, and a Win32 version of UAE here.