Sunday, June 21, 2015

Retrochallenge?

Right now, the oldest computer in my collection is a (alas, non-functioning) Atari 800, at least in terms of when the model was introduced, not necessarily when the machine I have is made - although even by this measure it's still likely the oldest.  The Atari 400 and 800 were both introduced in 1979.  But most of the computers I've been playing with have come from the 80's - the CoCo launched in 1980, the VIC-20 in 1981, and everything else later than that.  And everything I've played with so far has been a personal microcomputer.  So it's been a bit of a change of pace for me over the past few days to really spend some time playing around with the PDP-8 and PDP-11.  Not real machines, of course, but using the simh emulator.

I've wanted to play around with the DEC PDP series for some time.  These minicomputers figure prominently in computer history, most notably perhaps with the development of both Unix and C on the PDP-7 and PDP-11, respectively.  And then with the 50th anniversary of the PDP-8, it's also gained some renewed interest in the vintage computing community.  Case in point, this very interesting PDP-8 emulator running on a Raspberry Pi with a front panel almost exactly like the original PDP-8's front panel.  I've been on the mailing list for this kit since I first saw it months ago, and I'm very anxious to get it towards the end of July when he's announced it will be ready.  By the way, this is from the same guy who supplied me the KIM Uno kit that I had some fun with some months back.

With the Retrochallenge Competition coming up, I had thought about doing a minimal Forth implementation on my VIC-20, but then Earl Evans decided to do a Forth implementation on the C128 (something I'm very interested in seeing, given my interest in the C128), so my VIC-20 project seemed too similar.  It's not really.  Despite using essentially the same processor, the C128 and VIC-20 (especially unexpanded) are very different machines, and their Forth implementations would be very, very different.  But still, I didn't want to do something so close to what someone else was doing.

Enter the PDP.  I have it in mind to do a multi-user game running on a PDP that can be connected to via telnet.  My requirements: I want multiple users to be able to connect and play the game at the same time.  I'm uncertain yet whether the game will require all users to be logged in, or if it will just support having multiple users logged in to complete their turns.  I specifically want to do this in some language I am not familiar with, one with history that may - or may not - still be in use.  COBOL was my first thought, but finding a COBOL for any PDP has so far proved challenging.  I am consider DIBOL, though; that is DEC's competitor to COBOL for the PDP-8.

So my first thing is just to get a PDP environment up and running.  I've got a PDP-8 running with both OS/8 (not multi-user) and TSS/8 (multi-user).  My only issue with these is finding the language I'd like to use.  I do like the idea of using a PDP-8, though, so I haven't ruled out either of these.

For the PDP-11, I've got both Unix v6 and v7 running.  Unix appeals to me just because of my history with Linux, and it would be interesting to play around with a considerably older version, but I've got issues here as well.  I've v6 running in a multi-user environment, but trying to find any software for it has been challenging.  It's got a C compiler and an assembler installed, of course, but no other language.  And the only editor is Ed, a line editor (think MS-DOS's old EDLIN).  That would be very painful to develop in.  Of course, I could write a full-screen editor, but that would keep me from writing the game.

I've got v7 running as well, but only in single-user mode.  I would like to enable multi-user, but I'm running into a problem.  I'm using a tape image to boot up Unix, and then using a disk image once it's booted.  During the process of configuring the system, I copied a bunch of stuff from the tape image to the disk image to be mounted as /usr.  This includes, among other things, the source for the system, which is important because I'll need to rebuild the system to enable multi-user support.  While I'm setting up the system, all the data on the /usr is present, but once I boot up, it's all gone.  I don't know whether it's an issue with my disk image, with my Unix install, or with my simh configuration.

Right now, I'm probably slightly leaning in favor of the PDP-8 with OS/8.  That means (unless I can figure out MULT-8 or MULTOS or one of the other multi-user systems that use OS/8) that I'll only have one person logging in at a time.  Also I'm uncertain at the moment of whether OS/8 supports user accounts.  Right now, as far as I can tell, it just supports terminals with no differentiation between users.  But OS/8 has several advantages.  There's a lot of software out there for it, and there's a lot of documentation.  It seems to have been the standard operating system for the PDP-8, so support for it is pretty extensive, relatively speaking.

If I can find software for Unix v6 or I can get my multi-user issues worked out with v7, then I'd probably use one of those instead.  I could even live without multi-user on v7, but the issue I'm having with the /usr mount really hampers the effectiveness of the system.

This will be the first Retrochallenge I've entered, and my obstacles are not insignificant.  First, I've never worked on a PDP-8 or 11 and know almost nothing about them.  Fortunately, I'm not looking to become a PDP expert, but obviously some familiarity with the machine will be required.  Second, while I might use C (given the age of the systems, it would be a noticeably different dialect than I'm used to), I'd prefer to use a language I don't already know - COBOL, Algol, Fortran, something like that.  And, third, I've got to come up with a game that I'll find interesting enough to play, i.e., not TIC-TAC-TOE or something simple, and it has to be something that can be played with other people.  And it's got to be interesting enough as a text-based game.

The Retrochallenge starts July 1st, so I really have some decisions to make.  I have to decide on my computer and operating system, I have to decide on my language, and I have to decide what game I'm going to write.

Sunday, June 14, 2015

And then there was...the VIC-20!

I haven't had much to post in the past few weeks, as I've been pretty busy, but that doesn't mean I haven't done anything with vintage computers.  My biggest accomplishment has been to purchase a VIC-20 off of eBay.  While I haven't been actively trying to acquire a VIC-20, my favorite brand of vintage computers is Commodore, and the VIC-20 was the first computer I ever owned.  I bought it at a HamFest in the early 80's, and it came with a 24k expansion module but no storage device.  And because only the C2N Datasette was usable, but not particularly cheap at the time, I couldn't afford to buy one.  I ended up not doing much with it and actually sold it not long after at another HamFest.  But this one on eBay was cheap (<$50 including shipping), and I've got an unused SD2IEC (1541 emulator that uses SD cards for storage) that should work with it.

I haven't actually gotten the computer yet though, even though I purchased it on May 27th.  After about a week of nothing, the seller actually emailed me and apologized for the delay and said they would include a C2N Datasette with it, which is pretty cool both that they did so and also that I'll finally have a Datasette after 30+ years.  Checking the auction, I noticed that a shipping number had finally been assigned to my order, but when I checked the progress, it never went anywhere.  It said that the shipping hadn't actually dropped off the package yet.  It stayed like that for over a week again, and I was about to send a message to the seller again, but then finally it's moved.  As of Friday, it finally departed a USPS facility in Federal Way, WA.  So I've probably still got a while before it gets here.  The auction said it had been tested, so I'm hopeful that it will work and looking forward to playing with it.

Toward that end, I've been doing some reading on the VIC-20.  If you're a Commodore afficionado, then you've undoubtedly been to DLH's Commodore Archive.  This is a great site because it has a huge archive of books in PDF form relating to all of Commodore's computers.  That's where I got my library of PDF's for both my C128 and C64, and the site didn't disappoint for the VIC-20 either.  I'm currently working my way through "VIC-20 Machine Language Guide" by Roy Wainwright and Arnie Lee.  I like the book because it seems to focus less on actually teaching 6502 machine language and more of how to use it with the VIC-20.  This is good for me because while I'm not 6502 assembler expert, I do know enough to be beyond a beginner's book.  But a book that discusses how to interface with the VIC-20 from machine language is useful.

All this is for my new project (which will probably end up like most of my other projects, unfinished) which is a Forth implementation for the VIC-20.  Now there's already VIC-Forth, but it came out in cartridge form, which means that it had access to most of RAM.  But I was curious if I could write a usable Forth implementation, even a limited one, on an unexpanded VIC-20 that would be loaded from disk.  This means that, instead of residing in ROM as a cartridge would do, the Forth environment would have to reside in RAM along with the program that the user is building.  In a 5k machine (really 3.5k once you factor in screen/color RAM), this will be tough.