Home
| 32KOmnibus
| 4sale
| 8L
| 8a
| 8e
| 8i
| 8s
| C
| FPGA8i
| blog
| cables
| cad
| computerlab
| decmateI
| decmateII
| decmateIII
| df32emul
| documents
| dsd410
| flipchip
| frontpanel
| kc8a
| la36
| lab
| omnibus
| papertape
| pc04
| repair
| rk05
| rl02
| rx02
| rx08
| sbc6120
| software
| tc01
| tools
| tty33
| tty38
| tty43
| ttycards
| tu10
| tu55
| tu56
| typeset
| vt78
|
EDU25 Basic
If you've been following along the story from the SBC6120
and IOB6120 pages, we've got a really impressive PDP-8 system:
The trick is to make it do something interesting, showing the capabilities of
the system in the process.
One unfortunate fact that has always disappointed me is that the H6120 chip
used in the Decmates and in the SBC6120 does memory management, but does not include
the time-sharing option. So it isn't immediately clear how to get all five of those
terminals (VT52, original console, plus 3 more) to do something.
I want to credit Ethan Dicks with the idea of using EDU25 BASIC to show off
the SBC6120 and IOB6120. In February of 2010, Ethan Dicks and Mike Roach had a
conversation about using EDU25 BASIC this way in the Spare Time Gizmos
Yahoo discussion group.
Mike pointed out that the known copies of EDU25 BASIC were corrupted.
In late May of 2011, Ethan was looking in the
classic computer mailing list
for a valid copy of EDU25, and Dave Gesswein mentioned that the EDU20 binaries work. That got
me thinking about using the EDU20 binary to reconstruct EDU25. In principle, if EDU20 and
EDU25 are sufficiently similar, one need only locate the analogous code in EDU20, dis-assemble
it, and use that to reconstruct the EDU25 code.
A bit of background: Among DEC's time-sharing systems, the Edusystems were nice
multi-user BASIC systems, at a variety of price points. One of these, EDU25 BASIC, is the
largest time-sharing (as opposed to batch processing) BASIC that does not require the hardware
time-sharing assist. Conveniently, EDU25 BASIC supports 5 users.
(The manual mentions 8 users -- was there ever a patch for that?).
The problem: EDU25 BASIC has been lost for decades. At least sort of.
Someone long ago archived the
source code
for EDU25 basic, which was great, but somehow along the line, one disk block of the file
containing the source code was over-written with zero bytes. This resulted in a file which
decidedly did not compile.
Trying to move code from EDU20 BASIC didn't work out all that well, as I wasn't
able to figure out a lot of information about EDU20 (available only in binary form) that I
could use in EDU25. However, I did do a bunch of searching around, and found many pieces
of source code around with similarities to the EDU25 code.
The missing code in EDU25 is mostly part of the floating point output routine.
Floating point output routines are common in many larger PDP-8 software projects, and
many of them follow similar logic. The remainder of the missing code are: a look-up table
for the 'modify' command, part of the linked list of commands pertaining to 'stop', the
floating point constant 10, and about half of a helper routine used by the corrupted floating
point output routine.
In early June 2011, I was able to publish a "restored" EDU25 BASIC, which I called
'edu25r'. It is unlikely that my 'restored' version is identical to the original EDU25.
There just isn't enough information available to verify it. Moreover, my version outputs
all six digits, even for small integer values, where the original almost surely printed
something without all the zeroes after the decimal point.
EDU25 is quite flexible about the terminal arrangement, allowing one to specify the
type of terminal controller and the I/O addresses of the terminals. In addition, there is
a dialog which allows you to assign variable amounts of memory to particular users (but that
is only useful on machines without enough memory to give everyone a whole 4K memory field).
The thing that isn't very flexible is that EDU25 is designed to run stand-alone, and uses
it's own TC08 driver to save and load the users' BASIC programs. Moreover, the system
runs with interrupts enabled, so disabling interrupts to call the OS/8 drivers is not
really an option.
What I did about this (after some study), was to replace the DECTape driver,
starting at DTAPE, with a simple driver for the ram-disk, which has the same block size
(128 words) as the DECTape. I also patched some locations to contain the correct default
values for the addresses of the SBC6120/IOB6120 serial ports.
This patched version I called 'edu25s'.
The correct sequence of answers to the initial dialog questions is illustrated here:
You still get the warning about the "ILLEGAL OS/8 DEVICE" because I
haven't bothered to write any code to reboot OS/8 (just press reset). You
should get the "READY" prompt on each active terminal.
To create programs in the system catalog, create text files (the ^Z is important!)
on VMA0: with the extension ".E8". Extensions ".E0" to ".E4" can also be used to create
or retrieve files in the individual (to each terminal) catalogs.
I also spent some time later in June 2011 porting many of the "101
Computer Games".
All this material can be downloaded here:
Last updated on 02/25/23 02:21 |