Nothing

I’m not sure why but I seem to be getting pulled into the ZX spectrum. Maybe it’s because I’ve yet to have seen one, and find it interesting about this massive parallel space I knew nothing of.

I’d found this review of the game, by sinc LAIR, which goes over a bit of history behind this port of the game. Very cool stuff, but for non русский speakers like me, be sure to turn on the auto translated subtitles!

The game is for sale for a mere €3 zxonline.net. One thing I had issues with, is because it’s Russian, normal Pay Pal blocks the transaction of account to account, so you have to use incognito mode, and tell Pay Pal to process it as credit card and it’ll work fine. Keeping in mind since Pay Pal does the CC charge, your # never goes to Russia. And it’s a damned shame, it’s not like ever Russian hacker is all about online crimes, some just want to make cool games.

Game play is challenging as hell! It’s very much a ‘one touch and you are dead’ game. I cheated and uses save states from the EmuZWin emulator.

ABSOLUTELY GET A JOYSTICK!

I don’t know why I was playing with the keyboard, holy crap don’t do that, don’t waste your time!

Would I recommend nothing for the ZX Spectrum 128k? Absolutely. It’s totally worth the €3, you can feel the love in this game!

sinc LAIR is going to have a live stream of it in a few hours, so I can see how to get past the spinning monster thing on level 2. Maybe I’ll post some video of me constantly dying.

PETSCII Robots released for the ZX Spectrum

PETSCII Robots title

So yeah on the surface, it’s an 8 bit game on another platform. Not that exciting but this isn’t a 6502, the Spectrum is a Z80! So yes it’s been manually ported by mr287cc with music from Shiru.

faux petscii mode

So this is pretty cool watching the game break out of the 6502 that spawned it. So overall yeah, it’s the same game, but new platform. And the first image is the traditional game, which works fine, but where would be the fun in that? Instead you get a whopping 4 versions of the game, along with a program that plays all the sountracks, a full 184kb worth of fun. I suspect it’s a full tapes worth.

Gripes on strange and foreign platforms…

The biggest and weirdest thing to me is loading the tape files into an emulator. I have to admit I never even heard of a Spectrum until college, and it was largely that it’d been emulated better before anything Commodore, and that it too had an extensive (although 100% tape based) library, which really restricted things like RGP’s and Adventure games, having to run from the incredibly limited 8bit ram.

Anyways to load from tape the command is:

LOAD "".

But the spectrum doesn’t have a Microsoft Basic, rather you type in J for the load command. Yes. J.

Spectrum Keyboard matrix

I had to google around a fair bit to find this, butt here is a keyboard matrix.

The P key

Yes seriously. And because it’s the most pressed key, many of them are impossible to tell from images that they have the double quote. Also it’s a “symbol shift” key so in emulators it maybe a control or alt key, so it’s J CTRL+P CTRL+P, then play on your virtual tape deck and listen to the screeching data (just like a modem). The game loads in a minute or so, and off you go!

The Microbots image

Adding to the keyboard fun, this is the game keyboard layout:

So it’s not too bad.

Colour Micro Robots banner

Is it worth it?

Absolutely! You do get several versions for your $10, and the ZX-Microbots version is the best by far, with music, and of course a high resolution screen letting you see far more of the action!

I’ve tried it in a bunch of emulators, and it works fine, so compatibility seems to be very good, but I don’t have any hardware to run it native. You do get WAV & TAP files in the sizeable download, along with PDF’s of the manuals. I haven’t seen anything about mastering tapes, so I don’t think there will be a physical release.

You can pick it up on David’s site for $10 USD. It’s totally worth it in my opinion.

My disclosure is that I’ve bought it for the Pet/c64 twice (once by accident), ZX and Amiga, 100% on my own money.

68000/Amiga

As a bonus non 6502, there is also an Amiga version, which sounds great, plays fine, but compared to the Spectrum version, it just feels cramped.

Quick and dirty i8080 emulator in BASH!

Based on the Toledo 8080 processor emulator, it’s Peter Naszvadi’s i8080.sh!

You will need bash version 4 for this to run. So for those of you in the 1990’s you are out of luck.

And to make this fun, the 2kb basic ‘ROM’ is bootstrapped into RAM for immediate execution!

$ ./8080.sh
Quick and dirty i8080 emulator by NASZVADI Peter, 2019.
Press Ctrl+C to quit anytime!
Initializing upper memory to NOPs
Initializing register values
Starting CPU emulation


OK
>10 PRINT "HIHI"
>RUN
HIHI

OK
>

So we’ve seen emulation in javascript of all things, but now you can run 8080 instructions from bash of all things!

And for anyone even more crazy there is always BDS C: which was opened up back in 2002, a K&R for the 8080 on CP/M!

Running CP/M on the Commodore 64!

 

CP/M cartridge retail box

Back in 1983 there was this great idea of expanding the Commodore 64 with the then popular (but declining) base of serious business software from the CP/M side of the world by creating a cartridge with a z80 processor inside, and a special port of the CP/M operating system that would take over the C64 letting you run real programs like Fortran, Cobol and the far better (and updated) Microsoft Basic v5!

However as always the major failing of CP/M was the massively different and incompatible diskettes of every platform.  The Commodore 64, lacking in RS-232 ports, and it’s incredibly incompatible 1541 drive rendered it nearly impossible for the average home user to transfer any programs in the specially formatted CP/M diskettes for the cartridge.  Not being able to read a standard 1541 diskette would prove to be it’s undoing.

While messing around in Vice, I saw that this cartridge is emulated now!  A quick search led me to zimmers.net where I was able to then locate the needed cpm.d64.gz, and I was booted up into CP/M and of course that hit the first snag which is of course, where is the software?

Well another search brought me to the package ‘ctools‘ which I quickly built on the Linux subsystem for Windows (I had to add -fpermissive to get it compile..), and now I could take that CP/M diskette delete the contents, and for the heck of it insert in Zork.. Of course where to find Zork along with other CP/M software?  The zip zork123_80.zip can be located on retroarchive.org, even fun things like Microsoft BASIC v5.21 (Interpreter), along with the manual.

CP/M only recognized a single drive, so you have to swap diskettes (Such a typical Commodore 64 experience), and here we go!

via Vice

Naturally the Commodore 64’s 40 column mode is… terrible.

However even back in 1984, a fine program aptly called soft80.com sets up the Commodore 64 in high resolution graphics mode, and emulates an 80 column mode.  Even better, the magic for the most part happens on the 6502 side, meaning it doesn’t take away from the precious memory on the CP/M side.

Zork 1 under CP/M / Soft80

Its worth noting that although Infocom games are dreadfully slow on the Commodore 64, playing under CP/M is also dreadfully slow, taking some 10-15 seconds to complete a command.

At least under emulation there is the warp mode.  And what took an hour to put together would have been months no doubt in the 1980’s ending in the CP/M cartridge going into a drawer to never be seen again.

A Z80 on a cart is pretty interesting.  It would have been interesting if other CPUs had made their way, a 68000 would have been interesting to have bridge the 8 bit world out, or even if Commodore had tried to put an 8088 onto that card, as early PC’s were nowhere near the 640kb hard disk wielding monsters they would become much later.  Naturally one could only dream of the power of an 80386 or the once vaunted NS32016

CP/M Exchange and the CP/M Player

Exchange & CP/M Player

Exchange & CP/M Player

While on the road, I stumbled onto a link that referred to this program called Exchange, which is a decapitated ‘port’ of CP/M that simply allows you to read and write CP/M disk images.  While on the surface it may not seem much, but the fact it actually uses the 68000 kernel from CP/M seemed really interesting to me.  With minor fighting I had it running on MinGW!

http://anachronda.homeunix.com:8000/~rivie/exchange/

And what fun would that be if we left it there? Oh sure you can get files in and out of standard 8″ images, but can you run them?

Over at the Takeda Toshiya’s page, not only does he make the MS-DOS player, and a whole host of other Japanese machine emulators, but he also has a CP/M player that works in the same style!

http://takeda-toshiya.my.coocan.jp/

So, combine the two, and now you too can trivially export and import files for emulators like SIMH, or just run files naively at the Win32/Win64 command line!

SIMH on demand!

Ok starting with my shellinabox post, I’ve expanded to include SIMH’s Altair emulator!

CP/M 2.2 in a box!

CP/M 2.2 in a box!

Executing this is really simple!  A small shell script will take care of the whole thing.

#!/bin/sh
set -m
PID=$$
mkdir /tmp/$PID
cd /tmp/$PID
cp /usr/local/altair/1.ini .
cp /usr/local/altair/cpm22.dsk .
/usr/local/altair/altair 1.ini
cd /tmp
rm -rf /tmp/$PID

Of course I’m assuming dead processes get reaped.  But check it out!

I’ve put BASIC-80 rev 5.21 and ZORK I in there!

Some advice on SIMH thought, you can execute a shell with the ! command (hitting Control-E will interrupt SIMH) so to prevent that alter the line in scp.c to make sure it’s a noop_cmd instead of spawn_cmd.  Not that anyone was doing anything sneaky as the nobody user, but to prevent it.

{ “!”, &noop_cmd, 0, HLP_SPAWN },

Also an ini file of:

attach dsk0 cpm22.dsk
set throttle 2%
go 177400
exit

Keeps SIMH pretty tame.

Additionally I guess I should do a 12 hour cronjob to kill displaced altairs.

telnettable Altair 8080 clone!

complete with Zork!

Trying 192.222.136.174
Connected to micronick.com.
Escape character is ‘^]’.

Welcome to my Altair 8800 Clone !
Press ENTER…

A>dir
A: ZORK1 COM : ZORK1 DAT : ZORK2 DAT : ZORK3 DAT
A: ZORK2 COM : ZORK3 COM
A>zork1
ZORK I: The Great Underground Empire
Copyright (c) 1981, 1982, 1983 Infocom, Inc. All rights
reserved.
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.

>

As seen on reddit!

Be sure to check out the web page for a live picture of the machine in action!

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.

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.

Some Java & Javascript

Well I found this program, Dioscuri quite interesting… It’s a PC emulator written in JAVA!

It’s very interesting in how it’s trying to be accurate hardware wise, although holding down keys tends to cause it to crash…. 😐

Maybe a later version will work, but for what it’s worth, here is the title screen from Battle Tech.

battletech

The best game of 1988!

Naturally, any machine with a good JVM ought to be able to run this… But I’ve always found Java to be such a moving target….

Another thing I came across was this fantastic i8080 emulator coded in javascript. And it’s setup to play space invaders!

On Chrome, or Firefox it should perform at a reasonable rate. Internet explorer users are in the cold, as IE doesn’t have a javascript canvas. Sorry. But here is what you are missing out on.

javascript space invaders

Complete with i8080 emulator in Javascirpt!

 

This is some really neat stuff (to me) anyways.