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.

MS-DOS Player…

You’ll probably need to run this through translate.google.com, this this site, by Takeda Toshiya, has this nifty utility that’ll run some MS-DOS programs at the command prompt from Windows x64!

It’s best geared towards command line utilities, but it seems to work fine for little (old) stuff.. nothing too fancy though the CPU core is taken from MAME’s i86 (which looks heavily influenced from pcemu).

Today is a slow internet day.

IBM 370 emulation on MS-DOS!

Where there is some flap going on in the Hercules mainframe emulation package, which caught my eye… I was wondering what other mainframe emulators are out there for the PC?

Sadly the answer is not a heck of a lot… There is sim390, which is geared to running the MUSIC/SP operating system, however the author died a few years ago, and it seems that there will not be any more releases, nor any source release.

There is also this old program, PC/370. And it provides an environment much like DOSBox, in that it traps and emulates MVS OS calls, and executes mainframe code on your PC!

PC/370 is old though, the last version was released around 1988! However it’ll run on dosbox just fine, and FAST too! I was clocking over 6million operations a second on one of the benchmarks!

While also looking around at PC/370, I came across this site, which includes a full PDF copy of the book “Mainframe Assembler Programming”. Special thanks goes to Bill Qualls for making this great resource available!

A special note, if you try to unzip the pc370.zip file, it’s so old that there is some encoding method not 100% supported by a bunch of modern unzip programs.. You may need to unzip with real pkzip.

A neat feature of PC/370 is that you can use the PC graphic modes… like the simple demo plot XY…

PC/370 plot XY

PC/370 plot XY

Anyways, that’s about it!

Some random updates…

I just got back from a trip, so here is a quick shot of the 8″ diskette of Zork 1 for CP/M… I put it against my keyboard for some sense of scale.. It’s MASSIVE.

Zork 1 on an 8" floppy disk

Zork 1 on an 8″ floppy disk

I also found this Infocom interpeter written in Turbo Pascal, written by Martin Korth. It was written for Turbo Pascal 4.0, but I’ve built it with 5.5 and 7.0 without issues.

A friend of mine pointed me towards this new emulator PCE that looks very promising.. It boots off real IBM ROMS! Right now it’s 8086/80186 capable, but it’s still VERY cool.

Word is the author is working on Sparc32, ARM & PPC emulation… It looks very cool.

Thats about it for me!

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.

Doom for UnixWare

Doom on UnixWare

Doom on UnixWare

I’d never actually built Doom from source before… It was more involved then Quake, or maybe I’ve done Quake too many times? Anyways one thing that stuck out to me, is that you HAD to define NORMALINUX, or it wouldn’t pick up wad files or much of anything…

I guess other then that, I didn’t even try for sound… As a matter of fact, I think I’m pretty much done with UnixWare, but at the same point it’s a little more ‘fun’ then I found it.

UnixWareDoom.tar.gz

Some notes on UnixWare

A long while back, I got this UnixWare 7 kit on ebay.. So I figured it was as good a time as any other to install it and give it a whirl…

Now one cool thing is that 7.1 will install on Virtual PC 2007, and runs quite nice.. The one trick is to not give it too much memory. I found that 1GB of ram made it run horribly, while 256MB had it running great.

Another weird thing is that if you suspend the VM for any reason, the network will stop working. The only fix is to reboot the VM. Also

Also the C compiler, while not the most feature rich one out there is amazingly fast.. It builds Quake in around 5 seconds, once all the source is ‘fixed’. Also if you want to build any X11 programs, be sure to install the linux compatibility, or have a handy source of X11 headers to grab, as for some reason my UW7 didn’t include them.. ?

So yes, with a bunch of tweaks from the SUN source version of QuakeWorld, here it is:

Quake-on-UnixWare

Quake 1 for UnixWare 7.

And naturally it’ll run Dungeon as well with some f2c magic. The only caveat is that you can’t build the libf2c with any optimizations or it’ll crash or give really strange results….

Dungeon 2.5.6 on UnixWare

Dungeon 2.5.6 on UnixWare

Dungeon 2.5.6 on UnixWare.

Other then that, UnixWare is just another SYSV wrapped up in CDE. But I do recall it being used in the call center world, in conjunction with some seriously old unix machines (think NCR 386!), mostly doing voicemail and other stuff. I think it was the UnixWare 2.x stuff that all included that PC emulation software that could run Windows with the Netware client.. OH the horrors of someone loading up that and lotus notes to check mail on the VM server.. people did notice!!!!!!

I’m not sure if people still use UnixWare with Avaya G3’s anymore.. I know the G3’s were busy moving to linux, but I don’t know about all the support stuff, so for all I know CMS & friends still run on Solaris/UnixWare.

It’s a shame UnixWare got a bad rep from the SCO lawsuits, as it’s a pretty fast & responsive Unix, and too bad they never did get it ported to the Itanium & x64. I mean it’s still not too late, but I suspect the required investment to make it happen is just too great.

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.

Bywater basic

bwbasic and life.bas

bwbasic and life.bas

Well I forget what it was I was looking for, but I came across this great site, all about Vintage BASIC, and some various GAMES!

Now back in the 1970’s and early 1980’s BASIC was quite different then it is in it’s current Microsoft incarnation as Visual Basic .NET. But not all that surprising is that Microsoft was a popular BASIC distributor to the microcomputers of the time, supplying BASIC for Commodore, among others, wikipedia has a great list of all the variants of their 8 bit rommable basic.

Back in college a friend was just a little obsessed with basic (he probably still is) and he was all happy as hell to have found this little interpreter written in C, that we could run on the RS/6000 called Bywater BASIC.

Now while vintage-basic has this basic interpreter written in Haskell to run the programs, I thought I’d see if I could get some to run on Bywater.

First was picking a version, and building it. I found that version of 2.5 was the easiest to build on my NeXT, and with a minor amount of hacking, even windows.. bwbasic needs a BIG stack… so 16bit stuff is out, but I guess it doesn’t matter as they had Quick Basic, and the old MS basic so this would be redundant.

Anyways out of the examples I chose the life program, and with a few changes it’ll run on QuickBASIC as a test, and bwbasic 2.5

2 PRINT TAB(34);"LIFE"
4 PRINT TAB(15);"CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY"
6 PRINT: PRINT: PRINT
8 PRINT "ENTER YOUR PATTERN:"
9 X1=1: Y1=1: X2=24: Y2=70
10 DIM A(24,70),B$(24)
20 C=1
30 INPUT B$(C)
40 IF B$(C)="DONE" THEN B$(C)="": GOTO 80
50 IF LEFT$(B$(C),1)="." THEN
B$(C)=" "+RIGHT$(B$(C),LEN(B$(C))-1)
END IF
60 C=C+1
70 GOTO 30
80 C=C-1: L=0
90 FOR X=1 TO C-1
100 IF LEN(B$(X))>L THEN L=LEN(B$(X))
110 NEXT X
120 X1=11-C/2
130 Y1=33-L/2
140 FOR X=1 TO C
150 FOR Y=1 TO LEN(B$(X))
160 IF MID$(B$(X),Y,1)<>" " THEN A(X1+X,Y1+Y)=1:P=P+1
170 NEXT Y
180 NEXT X
200 PRINT: PRINT: PRINT
210 PRINT "GENERATION:";G,"POPULATION:";P;:
IF I9 THEN
PRINT "INVALID!";
END IF
215 X3=24:Y3=70:X4=1: Y4=1: P=0
220 G=G+1
225 FOR X=1 TO X1-1:
PRINT:
NEXT X
230 FOR X=X1 TO X2
240 PRINT
250 FOR Y=Y1 TO Y2
253 IF A(X,Y)=2 THEN A(X,Y)=0:GOTO 270
256 IF A(X,Y)=3 THEN A(X,Y)=1:GOTO 261
260 IF A(X,Y)<>1 THEN 270
261 PRINT TAB(Y);"*";
262 IF X<X3 THEN X3=X
264 IF X>X4 THEN X4=X
266 IF Y<Y3 THEN Y3=Y
268 IF Y>Y4 THEN Y4=Y
270 NEXT Y
290 NEXT X
295 FOR X=X2+1 TO 24:
PRINT:
NEXT X
299 X1=X3: X2=X4: Y1=Y3: Y2=Y4
301 IF X1<3 THEN X1=3:I9=-1
303 IF X2>22 THEN X2=22:I9=-1
305 IF Y1<3 THEN Y1=3:I9=-1
307 IF Y2>68 THEN Y2=68:I9=-1
309 P=0
500 FOR X=X1-1 TO X2+1
510 FOR Y=Y1-1 TO Y2+1
520 C=0
530 FOR I=X-1 TO X+1
540 FOR J=Y-1 TO Y+1
550 IF A(I,J)=1 OR A(I,J)=2 THEN C=C+1
560 NEXT J
570 NEXT I
580 IF A(X,Y)=0 THEN 610
590 IF C<3 OR C>4 THEN A(X,Y)=2: GOTO 600
595 P=P+1
600 GOTO 620
610 IF C=3 THEN A(X,Y)=3:P=P+1
620 NEXT Y
630 NEXT X
635 X1=X1-1:Y1=Y1-1:X2=X2+1:Y2=Y2+1
640 GOTO 210
650 END

You just type in some stuff as a starting pattern, then type in “DONE” on it’s own on a single line, and it’ll animate the sequence…

I should also add that the history of Bywater basic is kind of interesting it was started by Verda Spell, the grandmother of Ted Campbell who released it into the public domain.

From the original documentation:

Her (Verda’s) programming efforts were cut
tragically short when she was thrown from a Beaumont to Port
Arthur commuter train in the summer of 1986. I found the source
code to bwBASIC on a single-density Osborne diskette in her knitting
bag and eventually managed to have it all copied over to a PC
diskette. I have revised it slightly prior to this release.

pcap and IPX/SPX

I found this link where someone had implemented a virtual NE2000 for DosBOX, allowing you to run among other things DOOM!

This reminded me of my own work to add pcap into Qemu back in the 0.9.0 days… SO I figured I’d try to build the thing out and see how they interact!

So the first thing to do was build DosBOX, and add the patch. I found that 0.73 worked pretty well for this!

So after some hammering around, I got it to build, and launched it on two separate machines (one over terminal server) on my lan, and launched the oldest network doom version I could find to get things going.

Doom multiplayer IPX-SPX

Doom multiplayer IPX-SPX

And there we go. Now in the dosbox.conf you have to make sure that they have unique MAC addresses, and of course, that they are bound to the correct physical nic. in the config file, there is a list option that will print out the possible choices then you can just put the number, or the full name into the right spot on the ini file. I’ve build a prebuilt win32 version of this with all the DLL’s and the gravis ultrasound enabled… You can download it here.

The next thing I did was search high & lo for my patches to Qemu, and thankfully I’d emailed them to myself as it seems all the other places are dead… So with a little playing with Qemu 0.90 to enable the adlib, and remove some logging messages, I’d built a client machine again with Doom. Naturally I had the DosBOX & Qemu face each-other off.. Sadly this is a little SLOW.

DOSBox and qemu IPXSPX Doom

DOSBox and qemu IPXSPX Doom

For those that wish to download, you can find the Qemu client & server files.

Now for Qemu, you’ll need to get that full NIC name… Dosbox provides a great way to see what it is, just paste it into the batch files, and you’ll be good to go.

And remember you’ll need WinPcap installed!!!!!!