Found an old ad for 86-DOS

Seattle 86 Ad

GO 16-BIT NOW – WE HAVE MADE IT EASY
8086
8 Mhz. 2-card CPU Set
WITH 86-DOS®
ASSEMBLED,TESTED,GUARANTEED
With our 2-card 8086 CPU set you can upgrade your Z80 8-
bit S-100 system to run three times as fast by swapping the
CPUs. lf you use our 16-bit memory, it will run five times as
fast. Up to 64K of your static 8-bit memory may be used in the
8086’s 1-megabyte addressing range. A switch allows either 4
or 8 Mhz. operation. Memory access requirements at 4 Mhz.
exceed 500 nsec.
The EPROM monitor allows you to display, alter, and
search memory, do inputs and outputs, and boot your disk.
Debugging aids include register display and change, single
stepping, and execute with breakpoints.
The set includes a serial port with programmable baud rate,
four independent programmable 16-bit timers (two may be
combined for a time-of-day clock), a parallel in and parallel out
port, and an interrupt controller with 15 inputs. External power
may be applied to the timers to maintain the clock during
system power-off time. Total power: 2 amps at + 8V, less than
100 mao at + 16V and at -16V.
[email protected]>, our $195 8086 single user disk operating
system, is provided without additional charge. It allows
functions such as console 1/0 of characters and strings, and
random or sequencial reading and writing to named disk files .
While it has a different format from CPIM, it performs similar
calls plus some extensions (CP/M is a registered trademark of
Digital Research Corporation). Its construction allows relatively
easy configuration of 1/0 to different hardware. Directly
supported are the Tarbell and Cromemco disk controllers.
The [email protected]> package includes an 8086 resident assembler,
a Z80 to 8086 source code translator, a utility to read
files written in CPIM and convert them to the 86-DOS format, a
line editor, and disk maintenance utilities. Of significance to
Z80 users is the ability of the translator to accept Z80 source
code written for CPIM, translate this to 8086 source code,
assemble the source code, and then run the program on the
8086 processor under 86-D08. This allows the conversion of
any Z80 program, for which source code is available, to run on
the much higher performance 8086.
BASIC-86 by Microsoft is available for the 8086 at $350.
Several firms are working on application programs. Call for
current software status.
All software licensed for use on a single computer only.
Non-disclosure agreements required. Shipping from stock to
one week. Bank cards, personal checks, CODs okay. There is
a 10-day return privilege. All boards are guaranteed one year
– both parts and labor. Shipped prepaid by air in US and
Canada. Foreign purchases must be prepaid in US funds.
Also add $10 per board for overseas air shipment.
8/16 16-BIT MEMORY
This board was designed for the 1980s. It is configured as
16K by 8 bits when accessed by an 8-bit processor and
configured 8K by 16 bits when used with a 16-bit processor.
The configuration switching is automatic and is done by the
card sampling the “sixteen request” signal sent out by all S-
100 IEEE 16-bit CPU boards. The card has all the high noise
immunity features of our well known PLUS RAM cards as well
as “extended addressing”. Extended addressing is a replacement
for bank select. It makes use of a total of 24 address lines
to give a directly addressable range of over 16 megabytes.
(For older systems, a switch will cause the card to ignore the
top 8 address lines.) This card ensures that your memory
board purchase will not soon be obsolete. It is guaranteed to
run without wait states with our 8086 CPU set using an 8 Mhz.
clock. Shipped from stock. Prices: 1-4, $280; 5-9, $260; 10-up,
$240.

~Seattle (amputer Products, Inc. ~ 1114 Industry Drive, Seattle, WA. 98188
(206) 575-1830

 

The ad is from December of 1980, and of course the PC was released in August of 1981… Its interesting to see even back then there was some clear partnering with Microsoft!

Transferring data into CP/M with SIMH

This has been an exersize in insnaity..

So for some strange reason I wanted to load up Zork into SIMH‘s less featured (and much simpler) altair 8080 emulator.  The catch is the disk format which for the life of me I couldn’t get to work in any of the CP/M disk access tools.

The Altair z80 emulator as part of the same SIMH package includes a far more complicated setup, but out of the box it CANNOT read the disk image from the 8080 emulator.  After digging around it seems that one of the ‘approved’ methods of getting stuff into CP/M was to load it into memory, and just save the block (provided it fits in the 64k, more on that later).  The syntax really is quite simple:

load zork1.com 100

And that’ll load it up at the normal program entry point (just like an MS-DOS COM file!)..

Except it doesn’t want to work.

What?

but of course it works on the z80.

No problems here!

Which is great but the z80 can’t read the 8080’s disks..!  So after digging through the source code, I find this small gem that the z8080 has been changed to use a much larger disk size!

#define MAX_TRACKS 254 /* number of tracks,
original Altair has 77 tracks only */

So yes, by changing that to 77 I can now boot off the 8080’s boot disk on the z80!  Of course it also means that I’m unable to ‘see’ the hardisk in the z80, or any of the other great peripherals as no doubt the altair CP/M disk hasn’t been configured for all of these fine things.  I also tried only altering one of the disks on the z80 for 77 tracks, but once more again it seems that CP/M has an everything/nothing type idea for a disk controller.

But the load command works on the monitor, and the Altair CP/M can handle two disks, so its enough for me to format the B: drive ( a copy of the CP/M disks) and work with that.

Once you’ve loaded a program into memory, you toggle back to CP/M and run the ‘save’ command which then dumps how many pages back to disk.

For example, the program STAT is 5,248 bytes in size. 5248/256 = 20.5. Thus, the save command would be:

A>SAVE 21 STAT.COM

Pretty simple, right?  But what happens if you have a file greater than memory?  Well first I thought I could compress it, and I’d forgotten just how many old compression programs there were for CP/M, crunch, arc, zoo, zip … Finding MS-DOS equivalents wasn’t too bad (thanks for dosbox!) but I couldn’t get the 84kb data file into the memory limit, so I figure’d I’d just split the file into something on  a 256 byte boundary.  Loading them into RAM wasn’t too hard, as saving them out.. but how do you join them together on CP/M?  I found PLENTY of utils to split files, but nothing on putting them back together!

On MS-DOS you can just do a copy /B file1+file2 bigfile

But I couldn’t find out how to do this on CP/M until I looked further into the PIP command, CP/M’s answer to copy.

To join a binary file it goes something like this:

>PIP sd.com=sd.001[OV],sd.002[OV],sd.003[OV]

So with all that work, I was now able to create a zork1.dsk that the 8080 emulator is capable of playing!

Zork1 finally loaded on the SIMH Altair 8080

And for the curious, here is Zork1, in the old Altair 77 track format.

 

 

Island 8080 Emulator

Island 8080 running CP/M on MinivMac

I’ve never heard of this before, but a friend pointed me towards this this page, that has a CP/M version that’ll run on a Macintosh.  But as they list out it ONLY works on super ancient Mac’s namely the 128k & 512k varities.  Plus owners & everyone beyond them is out of luck.

So what is there to say?  Well it does in fact run CP/M, and the demo disk includes WordStar but without a clear way of getting data on & off the diskettes it is kind of .. pointless?  I’m sure back in the day this would have been an awesome programme for Macintosh users as you could run ‘all that CP/M’ stuff out there on these giant 400kb diskettes.  Needless to say the rise of the IBM PC killed that and everyone went to MS-DOS but for some people I’m sure this was the tipping point of why to go Mac.  In this day & age emulators to run emulators may seem silly but I figured it was at least worth mentioning that this did in fact exist…

I suppose I could rig something to transfer the 8080 version of Zork1 to it, but is it worth the effort?

CP/M & Zork in Java Script!!!

Yes, it’s finally happened!!!!

This morning, I got an email from Stefan Tramm, informing me of his work.. Basically he’s combined ShellInABox’s vt100 commands, js8080’s Intel 8080 emulator, along with z80pack’s disk format, and CP/M port to provide a CP/M emulator that works in Java Script!!!

YES.

It is that cool.

Now the emulator is one of these new fancy HTML5 applications, which means you’ll need either Google Chrome 5, or Safari 5.. I would imagine Internet Explorer 9 and a later Firefox ought to work….

One thing that you’ll want to do is configure your popup blocker to allow the domain tramm.li to open up popup windows, as that is how you mount disk images into the VM..

To get going though it’s real simple. Just click http://www.tramm.li/i8080/ and hit the “Start Emu8080” link, and you’ll get to the console.

Next you’ll have to download a copy of CP/M 2.2 from the server into your local browser datastore by type in:

 

CPM-1

r 0 cpma

Then load in the bootsector…

CPM2

 

b

Then start executing at 0

CPM3

 

g 0

 

Then you’ll be in CP/M

All running in a browser!

So taking it one step further, I downloaded and built the Cpmtools 2.13 on OS X, used the cpma.cpm disk image as a template, deleted it’s contents and then inserted the ZORK 1 data & program into the disk image… Giving you a zork1.cpm.

So if you’ve turned off the popup blocker on Chrome, you can type in the ‘dsk’ command before you boot up CP/M. This way you can load it into the disk 1 position (B:) then boot up CP/M and play….

CP-M Zork1 on Javascript

 

All and all, I have to say this is really impressive for something like javascript to actually be somewhat usable… Naturally a 3Ghz+ CPU makes it all possible…. lol GWBasic users back on the 4Mhz machines ought to cringe every time thinking about the level of speed required to pull this off…!!!!

And thanks to Stefan for emailing me about this!

— edit

Stefan has added the zork1 disk image onto his server, so you can now simply load it via:

r 1 zork1

And that’ll place Zork 1 into the ‘B:’ drive.

Toledo 8080 emulator!

While googling around on various i8080 CPU emulators, I came across this post, from the 19th IOCCC. Best of Show winner, Óscar Toledo.

Simply put, it’s amazing, 3.5kb of source that emulates not only an 8080 CPU, but a basic environment capable of running CP/M.

That’s right. 3.5k!!

I’ve found it runs great with either the SUA/SFU environment for Windows, and Linux x86.

Toledo2 running on Vista's SUA Unix emulation.

Toledo2 running on Vista’s SUA Unix emulation.

Anyways it doesn’t work on the Sparc QEMU thing, nor my m68k NeXT cube… But hell it’s amazing to watch this thing in action. If you have the right setup you should check it out!

Also today, a copy of Zork 1 for CP/M on 8″ diskette arrived! I’ll have to take some photos of it later.

CPM/86

I’ve never messed with CPM/86, as by the time it was free’d it was a dead end 8086 OS. Like all CP/M OS’s it doesn’t support directories, or have that large of a base of applications, as CP/M was primarily a 8080/Z80 OS… (I can only imagine how many CP/M 86 apps there are…!).

Anyways some strange googling led me to this 8080 emulator for CP/M 86 written by David Evans.

Well that’s certainly interesting, all I remembered about 8080 CP/M emulation back in the days is that most of them required a NEC V20 CPU, as the V20 had some hooks for emulating a Z80. I guess in many ways, the same was true of the 8086/8088. So I figured this would be a great time to give this thing a shot.

The first thing you’ll need is a copy of CP/M 86, and for this I’d recommend this version, as it’s been setup for IBM AT’s, and also it has a definition for a program, 22disk to copy files onto the CP/M disk, as CP/M doesn’t use FAT, and is incompatible with MS-DOS.

To build and use the whole thing, I’m using Virtual PC, although I’ve tested the end product under Qemu.

Unzipping 144cpm86.zip into a directory, you can simply run ‘makedisk’ and it’ll fireup the disk copy program, and ask you how many copies to make, and it’ll then write out your CP/M 86 diskette. You can boot it up once it’s done to make sure it works….

CP/M 86

CP/M 86

Ok now boot back to MS-DOS, and now we’ll want to get a CP/M 8080 program to run, and I’ll just choose zork1 from this archive. (They also have zork for the 8086 version of CP/M, but mine locks up, and the CP/M 86 seems to lack something like ansi.sys..?)

Now extract 22DSK139.ZIP, and delete the file cpmdisks.def . Next copy in the file 144cpm86.def from the CP/M 86 archive. Now we simply run:

GENINDEX 144CPM86.DEF CPMDISKS.DEF

Now we can run ‘cmenu’ as an interface to the CP/M 86 diskette. The first time you run it, you must go through steps 1&2. Since we deleted the existing definitions there is only the 1.44MB format, so you can’t choose wrong, hit enter a few times and it’ll set it up. Next under option #2, just answer ‘a’ (without quotes!) and that’ll have the a drive setup to read/write the CP/M diskette. Test this by choosing option six, and hitting enter. Verify that you can see the directory.

Now extract the file 8080.cmd from 86emulat.zip. Next extract all the zork files from zork123_80.zip. Now launch cmenu again from 22disk, and then choose option four. simply type in 8080.cmd , then hit enter to accept it using the same MS-DOS name. Now run option four again, and now you can use wildcards, enter zork*.* .

Ok, now we have transfered our emulator, and the test programs, you can reboot your VM with the floppy in the drive. Qemu users will have to specify “-no-fd-bootchk” to bypass the signature check as CP/M 86 (and MS-DOS 1.x) don’t have this ‘feature’.

Now with CP/M 86 booted up, type in “8080”.

This will launch the 8080 emulator, and print it’s banner. Now we just type in ‘zork1.com’ to start the zork1 game.

After a minor pause, Zork 1 should now be running!

8080 Zork1 on CP/M 86

8080 Zork1 on CP/M 86

And for anyone who doesn’t want to jump through so many hoops.. here is my CP/M 86 boot diskette with the files already transfered.

The oldest CP/M ‘simulator’ out there.

I was surprised to come across this little simulator simply called ‘com‘ tonight. This program started out as a 8080 instruction simulator for a mc68000 machine running CP/M, back in 1984, and was written by one Jim Cathey.

‘Com’ was then later written up, and published in Dr. Dobb’s Journal.

From there it’s evolved it’s assembly core to some other 68000 cpu families and platforms, then the MIPS and PowerPC. Then in 2006 the CPU core was re-written in C.

For a while it’s primary platform was a 68000 based Unix, and it still has a lot of unix’isims buried in the source. I’m sure it’d build in MinGW though.

But in the meantime I figured it was yet another reason to fire up the old gcc 1.37.1 for Xenix to give this thing a go.

The biggest, and dumbest thing I fought was without realizing there was both a ‘Makefile’, and a ‘makefile’, and gmake kept running the lowercase one, while I was editing the Makefile in vain… But with that out of the way, and a few includes to fix, it was VERY straight forward to build. Not to mention running Xenix on Virtual PC 2007 on my new intel core i7 cpu, it compiles the C version just about as quickly as I can hit the enter key.

Because it’s on Virtual PC the last few lines of the console are garbled.. Oh well, at least the floppy controller works (as long as you hard code /dev/fd0 to 2,60).

So, here is a picture:

Xenix 2.3.4 with ccom zork1

Xenix 2.3.4 with ccom zork1

And a disk image. All I’ve really done is tweaked a few things, and built this with gcc so it includes a binary for Xenix systems. Also the ‘com.tar.gz’ package did include quite a few sample programs… mandog.com is fun, along with zork 1,2 &3!

On a final note, I thought the Xenix thing was a good road to head down because in the 1990’s there was this BIG push for ibcs2 compatibility across all these Unix platforms on the i386 cpu. Well it’s been largely abandoned work, and the best I got was OpenBSD complaining that its always out of memory, and NetBSD kernel panics!.. Open Solaris has *NO* ibcs2 compatibility even left.

I suspect it doesn’t matter, esp now that you can run some real ibcs2 OS’s in a VM, who needs 3rd party emulation?

I guess I’m just too late to the party.

86-DOS

While I was looking around at fleshing some stuff out on gunkies I came across this little nugget of MS-DOS history.

You can actually download 86-DOS the precursor to MS-DOS!  And it even includes a bunch of SOURCE CODE!  The best part is the awesome emulation suite SIMH can run 86-DOS!

Ok, for the first part of this, I thought I’d try my MS-DOS build of SIMH 3.81 which can be found on the sourceforge pages here.  Because I’m using a 64bit OS there is no 16bit environment to kick start DPMI stuff, so I’m using the most excellent DOSBox emulator.

Thanks to the hard work of Peter Schorn, you can download the run able image for 86-dos right here, then simply point the Altair z80 emulator from SIMH to it, and you’ll be running in no time.

To run it, simply point the z80 emulator to the boostrap file 86dos.  Then just follow the onscreen prompts.

 

Then you’ll be up & running!  Notice how the prompt is different from MS-DOS, and yet how familiar it ‘feels’.  Also check out the commands!

 

Rumor has it that edlin has largely remained the same, up to TODAY on 32 bit versions of Vista!  I haven’t even verified it, but it would prove interesting.

I should also point out that Peter has amassed quite the collection of CP/M images, programming languages and other interesting stuff here.

Zork lives on the Altair!

Ok, I can’t sleep so I thought I’d rummage through the dungeon of Zork…

And what better platform to do so than the Altair?

First get your altairz80.exe, out of simh, or just build it yourself…

Then you’ll need a copy of CP/M! (http://www.schorn.ch/cpm/zip/cpm2.zip)

Finally a copy of Zork (http://www.retroarchive.org/cpm/games/zork123_80.zip)

unzip everything into a directory, then run the following

C:\altair>altairz80.exe cpm2

And with any luck you’ll be greeted with the following:

Altair 8800 (Z80) simulator V3.7-1
64K CP/M Version 2.2 (SIMH ALTAIR 8800, BIOS V1.25, 2 HD, 15-Jan-07)
A>

Just like MS-DOS right?. … Not quite. Anyways there is time to tour later, but for now there is dungeons to explore.

The Altair has two floppies (out of eight) and a 8mb hard disk!… So let’s go to the hard disk on I:

I:

changing drives is just like MS-DOS, letter, colon then hit enter. Ok now lets copy in the zork game from the native PC into the emulator. Hat’s off to Peter Schorn for this!

b:read zork1.com
b:read zork1.dat

If all goes well it’ll look like this:

A>I:
I>B:READ ZORK1.COM
READ V-2.21 (03-Dec-06) SIMH Interface V003

Read from “ZORK1.COM” and write to “ZORK1.COM”.
PTR: unit is read only8.5kB written.

I>B:READ ZORK1.DAT
READ V-2.21 (03-Dec-06) SIMH Interface V003

Read from “ZORK1.DAT” and write to “ZORK1.DAT”.
PTR: unit is read only83kB written.

Ok, now with that out of the way, lets enter the Dungeon!

I>zork1
ZORK I: The Great Underground Empire
Copyright (c) 1981, 1982, 1983 Infocom, Inc. All rightsreserved.
ZORK is a registered trademark of Infocom, Inc.
Revision 88 / Serial number 840726
West of House

You are standing in an open field west of a white house, with
a boarded front door.
There is a small mailbox here.

>open mailbox
Opening the small mailbox reveals a leaflet.

>take leaflet
Taken.

>read leaflet

“WELCOME TO ZORK!
ZORK is a game of adventure, danger, and low cunning. In it

you will explore some of the most amazing territory ever seen
by mortals. No computer should be without one!”

>

Ok, now we are playing one of the greatest games ever. Wikipedia has an awesome article on Zork ( http://en.wikipedia.org/wiki/Zork ) And along with ( http://infocom.elsewhere.org/gallery/zork1/zork1.html ) You can party like its 1982.