Saturday, December 23, 2023

When the Power Macintosh ran NetWare (featuring Wormhole and Cyberpunk)

This entry and the software we'll demonstrate is in large part thanks to an anonymous Apple developer who was part of the NetWare team. Thank you!
Ah, Novell NetWare, the network operating system of the 1990s. Nothing was quite like it. Until Windows NT muscled in on its action near the end of the decade, if you were sharing lots of files between lots of PCs, NetWare was in there somewhere. My earliest memory of NetWare was stealing liberating a copy of Borland Turbo Pascal from a campus NetWare 3.x server around 1993-4, which, because God has a sense of humour, was later the University I ended up working for.

Why, the very mention of NetWare almost certainly caused those of you familiar with it to get an instant mental image of MONITOR.NLM, like this as shown in Bochs:

But Novell wanted NetWare servers to be more than just PCs (and the PC ecosystem to be more than just Microsoft), and in an attempt to gain footholds elsewhere the company accumulated some strange bedfellows. HP, Sun and Data General were on board, and IBM did so in grander form, but surely the most unexpected company Novell tried to court was ... Apple.
Yes, that screenshot is a real Power Macintosh 6100 (actually a Performa 6116CD) in the Floodgap lab running exactly what you think it's running. As a matter of fact, that Apple logo superimposed on the '90s Novell "teeth" I led off with was a real resource image that came from it.

No, I don't mean Macintoshes accessing NetWare servers as clients: we mean Macs as NetWare servers themselves. As proof, we'll take an entire tour of Power Macintosh NetWare on the 6116CD and try to boot it on the Apple Network Server, its actual intended target. NetWare on the Mac really existed as part of the same bizarro universe that ported the Macintosh Finder to Novell DR-DOS — meaning it's time for yet another weird Apple story during Apple's weirdest days.

Saturday, November 18, 2023

xa (xa65) 2.4.0 - finally

xa (xa65) 2.4.0 is the newest release of André Fachat's fast and portable two-pass 6502/65816 crossassembler; yours truly is the current maintainer and I just punched "live" on it tonight. It runs on Un*xy things and Windows (with Cygwin or msys2 or similar), and probably other operating systems as well. xa 2.3 has had a good run, but it's served 17 years as the minor release (no joke: 2.3.0 came out in 2006) and time marches on. There are new features to add and old cruft to sweep away. But it's still compatible with all the systems 2.3 was compatible with and adds several new features, including:

  • Listing mode, allowing side-by-side byte output with the lines in your source. You can even emit it in HTML.
  • A ca65 compatibility mode that allows many of the same pseudo-ops and "cheap local labels" support. Although this obviously doesn't accept every feature in ca65, it can ease translating your assembly source considerably — because once you switch to xa, you won't want to go back. :) This feature is also used for other compatibility options such as MASM and allowing some C-like expressions.
  • Assertions at the preprocessor level (#error) and assembly level (.assert), allowing controlled errors when static assertions are violated.
  • Linker enhancements for .o65, including deferred linking of undefined symbols.
  • You can now get the assembler major and minor version in the preprocessor with XA_MAJOR and XA_MINOR. Other predefined macros may appear in future versions.

Because this is a new minor release, there are incompatibilities. The escape character in quoted strings is now the standard backslash (\) instead of the carat (^), and recursive multi-line /* */ comments are no longer allowed, unless you ask for them with -XXA23. Obviously these features are deprecated, and they will be removed in a future version. Our expanded testsuite is designed to look for regressions and we are very conservative about that, but it's possible we've introduced other changes that may interfere with edge cases or undefined behaviour in your source, and such changes are unlikely to be reversed.

This release also deprecates printcbm(1), since it's not been touched in a long time, was never really a core part of an assembler suite, and VICE petcat does everything it did and more (even I don't use it; I have my own Perl detokenizer). It will be removed in a future version also. Of things that were already deprecated in 2.3.x, the old 16-bit argument syntax for 65816 mvn/mvp is now not accepted and the old -S and -x options are finally removed. If you need those, you must use 2.3.14.

Between 2.4.x and the next version (2.5 or 3.0, depending on my mood and the scope), we will be slowly embarking on cleaning up the source code's readability which has been an admitted issue for years. One big reason for not doing this earlier was because of regression risk and as André and I are xa's most important users, we definitely didn't want cleanup to impair our ability to build our own projects. Now that we have an extensive and growing regression testsuite, this can be done slowly in stages so that we have something more maintainable without introducing new bugs in the process or incompatibilities with the C compilers we already test against (our oldest in the test rotation is egcs-1.1.2 and it probably works on even earlier ones). As these changes are expressly intended not to change code functionality, they will incrementally roll out with future 2.4.x releases.

You can download it and read documentation in man(1) format (converted to HTML) from the main xa65 home page.

Saturday, November 11, 2023

The Apple Network Server's all-too-secret weapon (featuring PPC Toolbox)

Most of my systems are microcomputers (and commensurately sized), though I do have some moderately larger beasts: you've met homer, my 1987 HP 9000/350 rack system, and Floodgap is powered by uppsala, a 2U-in-a-tower IBM POWER6 520 running AIX. But my first "large" machine, and indeed the first Unix server I ever personally owned, was this Apple Network Server 500. Its name is stockholm.
A mini-fridge-sized server with its famous translucent blinkenlight-friendly front sliding door and oodles of drive trays, this $11,000+ box (almost $22,000 in 2023 dollars) sat forlorn and unused at the University I was employed with as an IT working stiff in 1997. The bookstore had bought it at a substantial academic discount for their UniVerse-based (a Pick descendant, now Rocket U2) point-of-sale system, but the vendor wouldn't support the hardware anymore after then-CEO Gil Amelio cancelled the ANS line, so it got dumped off as surplus in the service bay where it lurked in a corner.
As it was just sitting around, I got to use it as my personal server, shown here circa 1998 in my old office on a bad scan from a bad Polaroid. In this picture it's acting as a terminal server for my Commodore SX-64 with a CMD SwiftLink 6551 ACIA serial cartridge (the SX-64 is sitting on a parallel port switchbox because its handle got busted).

About a year later the University said they'd throw it in with my consultant compensation because they wanted to get rid of it anyway, so it became officially mine, and I was delighted to have it. That machine, later upgraded to 200MHz and 512MB of parity FPM RAM, variously powered my E-mail and the Floodgap gopher and webservers from 2000 to 2012, and still does backup duty when the POWER6 has to be down for repairs.

That's because the POWER6 runs everything the ANS did — because the ANS also runs AIX. The ANS 500 and 700 were not Apple's first Unix-specific servers (that would be the Apple Workgroup Server 95, a Quadra 950 using a special PDS card that only worked with A/UX, Apple's own Unix with a bolted-on Mac compatibility layer), but they were Apple's first Mac derivatives that could not boot classic Mac OS at all and natively ran a non-Apple operating system. Indeed, most people treated it as exactly that, a big Unix server from Apple, and at the time I did too.

However, there was a secret weapon hidden in ANS AIX most of us at the time never knew about. Built-in to the operating system was a fully Unix-native AppleTalk stack and support for receiving and sending Apple Events, surfaced in the form of Apple's disk administration tools and AppleShare. But Apple had a much more expansive vision for this feature: full server-client "symbiotic" applications that could do their number-crunching on the ANS and present the results on a desktop Mac. Using the Program-to-Program Communication Toolbox ("PPCToolbox"), and because AIX's throughput far exceeded anything the classic Mac OS ever could ever handle, an ANS could augment a whole bunch of Macs at once that didn't have to stop to do the work themselves.

Well, today we're going to write one of those "symbiotic" applications doing something this little Mystic Color Classic could never efficiently do itself — accessing and processing a JSON API over TLS 1.3 — and demonstrate not only how such an client application looked on the Mac side, but also how the server component worked on the AIX side. If you're lucky enough to have an ANS running AIX too, you can even compile and run it yourself. But before we do that, it might be a little instructive to talk about how the Apple Network Server came to run AIX in the first place.

Saturday, October 28, 2023

What the KIM-1 really needs is an LCD screen

Giving the 1976 1K RAM, 1MHz 6502-based KIM-1 single-board computer bubble memory storage was all well and good, but the basic unit is still just six numeric LEDs for its display. Let's solve that problem.
Here's a sidecar screen for my KIM-1 that's large enough to be useful, small enough to be portable, and efficient enough to be powered by my unit's built-in power supply. Plus, it can be driven by the KIM-1's unallocated I/O lines so that its 20mA current loop terminal interface remains available, with bonus points for being self-lit so you can see it like the LEDs. And the output driver takes up just 64 bytes of RAM.

Saturday, October 14, 2023

Teaching Apple Cyberdog 1.0 new tricks (featuring OpenDoc)

In the distant nethermists of time, documents once briefly ruled the earth (or at least Mac OS), and to that end I managed to find a verrry interesting book recently, complete with an unopened CD-ROM. But seriously, though: what was Apple thinking with that name?
It's not this cyberdog (image credit).
Not that cyberdog, though this is one of my favourite weirdo pinball machines.
Definitely not that cyberdog.
But thanks to all those other cyberdogs, Apple's own Cyberdog — a seemingly ordinary web browser and Internet suite with some unusual capabilities — has since slid into search engine obscurity. Apple had some big plans for it, though, and even wanted to give developers a way to develop their own components they could run inside of it. Not just plugins, either: we're talking viewers, UI elements and even entire protocol handlers, implemented using Apple's version of OpenDoc embedding.

Cyberdog's initial release belied some wild changes afoot, for in the world it inhabited, the document told the system what it needed to display, and the parts within the document displayed it. The document ruled all. The document was king.

And all of this came together in a special Cyberdog software development kit, complete with example code and the very first 1.0 release of the browser. Now that we have our PowerBook Duo 2300 rehabilitated, guess what we're gonna look at?

Sunday, October 1, 2023

Finally, an MOS 7600/7601 Video Game Array data sheet

A quick one. Many of you are aware of my rather abnormal fascination with the MOS 7600/7601, MOS Technology's dedicated "Pong-on-a-chip" (from the company that brought you my favourite CPU, the MOS 6502) that's actually a rather sophisticated microcontroller for the era. I own several 7600 systems now, including the Coleco Telstar Arcade, Radofin SC8000 and Commodore TV Games series, the Coleco Telstar Gemini and the Allied Leisure Name of the Game II. Compared with the General Instruments AY-3-8500, which was entirely hard-coded logic circuits, the MOS part has a programmable mask ROM in multiple variants and even more transistors than the 6502 itself.

The 7600 is now fairly well understood thanks to Sean Riddle's die photo, which Ken Shirriff exhaustively explored, but no one had ever found a data sheet — until earlier this summer. This data sheet is dated "Preliminary April 1976/Revision 1 June 1976," consistent with the earliest 7600 I've seen from 42nd week 1976, and gives the 7600 an official name, the Video Game Array (an unfortunate acronym collision). It specifically covers the original 7600-001 variant, an NTSC TV-compatible part that plays Pong in tennis, hockey and handball/squash/racquetball variations as well as a target practice mode, and is the variation present in most Pong consoles that used the MOS VGA. The mask ROM is explicitly stated as 512 words in size, which is read and executed by the "frame processor," acting as a combination I/O chip and CPU. The FP reads the opcodes from ROM, acquires player input, maintains the score, and sets up the display and audio output for the chip's analogue output stages.

The part that's gratifying is that the pinout and circuitry Ken and Sean independently figured out is nicely confirmed by the documentation, including the external colour support circuitry generated independently for player 1's paddle ("bat"); player 2's; and the ball, background, walls and score numbers. For even lower-cost systems, it supports a rainbow sweep system that just generates a rainbow colour pattern instead and is generated internally on-chip, though I have yet to find one of these systems myself. Interestingly, this mode requires a 3.595314MHz crystal instead of the usual NTSC colourburst frequency 3.579545MHz oscillator, which is one "line frequency" greater than the standard subcarrier (and that may be why I haven't encountered one yet, since ~3.58MHz crystals are substantially more common). It doesn't appear that the 7600 supported any other clock rates.

This data sheet confirms virtually all of our informed conjecture and fills in a few more gaps, but it appears to be missing at least two pages (between figures 4.1B and 4.6), does not have a complete pinout (only block diagrams), and since it comes from the beginning of the line naturally completely lacks a production history. We also don't know if there were pinout differences between the -001 and the later -002 through -004 variants, though this particular data sheet warns that "[f]uture games of the VGA series (MPS 7600-XXX) may make use of an expanded switch matrix ... Designers may wish to take account of this fact when producing printed circuit board layouts incorporating the VGA." The best understanding presently remains that there were only ever four game versions and Commodore, MOS' new owners that same year, discontinued production around 1978.

Friday, September 22, 2023

The W65C265SXB gets a SXY case

Don't worry — my favourite single-board computer remains the 6502-based classic MOS/Commodore KIM-1, and I've got some future projects in the works. But these were recently on sale on Amazon and I couldn't resist getting a little sort-of RPi-sized SBC that runs the 16-bit 65816, the W65C265SXB. With 32K of RAM and a flash option, plus lots of UARTs and I/O, it seemed more practical for projects than the WDC MyMENSCH even if the Mensch is a little smaller. Serial and power are provided over a single on-board USB connection and it has a built-in ROM monitor. Handy!

The big question was finding it a case, since it was inconvenient to be slapping the bare board down all the time. Here's the current solution.

Having messed with it for a couple weeks, I've decided I like a lot of things about this little bright red board, but not everything: in particular the form factor needs to keep up. Today's SBC world is all RPis and clones, and if Western Design Center reworked this to fit in RPi cases, they'd probably sell a boatload even though the product enclosure explicitly disclaims it as a consumer product. Instead its dimensions (82mm x 63mm, or a hair under 3.25" x 2.5") are just different enough to not fit well in any purpose-built SBC case I could easily find.

My first attempt was a QILIPSU (does anyone know where they come up with these brand names? Do they drop acid and play Scrabble?) junction box I found on Amazon that measured 5.1"x3.1"x2.8". The internal mounting plate is always smaller than the box, so the real measurement you care about is the distance between the mounting screws inside. This one was inexpensive and nearly a perfect fit for the SXB.

At 89mm x 68mm, the board sat almost exactly square on the plastic mounting plate and the screws could be ... coerced to go through the holes (don't tighten all the way down, you'll bend it). But I found that access to the board was highly limited: after all, this is for things sitting outside you don't want exposed to the elements. I couldn't see the LEDs and I couldn't access the pin headers without unscrewing everything and taking the top off, and the box was too deep to be comfortable working in. I sent it back.

The second attempt, and the one I'm using now, is a more expensive TICONN junction box at 5.9"x3.9"x2.8".

It has a clear lid so I could see what's going on and snap closures that were easier to get into, so I bought it. The fit of this one is not so precise; the screw holes in the mounting plate cause the board to be slightly off-centre. Although it's even deeper, it's also a little bigger, which turned out to not be a bad thing.
After deciding just to go with it, I got out a borer and drilled a hole for the USB cable to exit (and big enough for my fingers to put the cable back in if needed). This hole is dead on in the middle and the board is slightly off, though it looks fine from outside. Ideally you'd use cable glands for this but I'm not putting this unit on sprinkler or weather station duty ... yet.
Now I can see the LED(s), and if I want to hook it up to something, I just open the lid and attach jumpers. Because it's a bit wider than the other box, it turns out it's easier to work in. When I'm done, I close the lid and loop up the cable (or remove it). I'll have more to say about this fun little device later, but for now there's a nice unofficial 265SXB Guide you can read.

Saturday, September 16, 2023

The Fossil Wrist PDA becomes a tiny Gopher client (with Overbite Palm 0.3)

I don't always often wear watches. But when I do, I prefer Palm PDAs. Wired to my wrist.
Announced at COMDEX in 2001 but infamously stalled, cancelled and revived prior to release in January 2005, it's still not much bigger than my wife's Apple watch:
The opinion of reviewers at the time was something like "nice try anyway." Battery estimates were overoptimistic, some buttons were missing, and the CPU and operating system were already outdated. Nevertheless, it was a real Palm OS PDA that could sync to your desktop and run real Palm OS applications, complete with a tiny screen and a ludicrously tiny stylus.

But little was said at the time about connectivity and networking. It could IR-beam (consuming the battery) and sync, but other than muted complaints about missing Bluetooth (which would have consumed even more battery), no one said anything one way or the other about getting it on the Internet. And I'm all about Palm devices on the Internet.

It turns out there's a reason for that, and we're going to patch the operating system so we can make the Fossil Wrist PDA into what may be the smallest (and first wrist-mounted) Gopher client. That also required an update to the Overbite Palm Gopher client (which you'll want for your 68K Palm anyway), and then there's the matter of the battery refusing to charge as well. And finally, we want to make all of this portable!

But let's start with the history first ...

Monday, September 11, 2023

The spawn of AtariLab and the Universal Lab Interface

We were a Commodore 64/128 household growing up, and Apple IIe systems at school, but that doesn't mean I was unaware of Atari 8-bits. There was a family at church who had an 800XL and later a 130XE — and a stack of COMPUTE!'s I used to read through for hours — and it was interesting to compare the two worlds, especially the relatively luxurious Atari BASIC and DOS against Commodore's spartan accoutrements. On the other hand, there was a lot more software and peripherals for the C64 by then, and you ended up becoming a lot more proficient with the guts of the hardware because you had to. Plus, Jack Tramiel's Atari was a lot like Jack Tramiel's Commodore and not always in a good way. I have an XEGS (functionally a 65XE when you add the keyboard) and a 1050 disk drive I should set up somewhere and mess around with a little.

But that doesn't mean Atari didn't try. Prior to all that, Atari in the Warner Communications days put forth substantial effort to make it competitive in all kinds of settings, notably education. Ataris had some unique hardware in that niche; an Atari was the first non-Control Data microcomputer to access the PLATO network, for example. And then there was the AtariLab.

With a very simple interface box, your Atari 8-bit could read the temperature and sense brightness. You could run experiments on it at school, including polarized and coloured light, or testing how quickly things cool and heat. You could use it at home with your own programs thanks to its comprehensive documentation.

But the surprising part is that even though these were the only such devices released under the AtariLab name, they weren't the end of the line: besides its stealthy revival for other home computers like the Commodore 128 running it here, its creator also turns up in one of the more interesting scientific data acquisition devices I've run across in its price range. We'll test-drive the software, hack on the platforms a little, and try some even more outlandish sensors. Let's go down the rabbit hole with AtariLab — and its full-fledged descendants.

Saturday, September 2, 2023

Refurb weekend: PowerBook Duo 2300c

Ah, the last and mightiest of Apple trying to have it both ways: the 1995 PowerBook Duo 2300c, and the only PowerPC laptop in the entire series before Apple canned the line in 1997. It had the Duos' biggest screen, the most memory and disk space, and the fastest CPU of all, yet crammed everything into a 9.5" 640x480 display and an 88% keyboard that feels like typing on a bouncy castle.

But being Apple's smallest laptop — even today the Duos are still the fourth smallest, width-height-wise — wasn't the (main) point of the Duos. Arguably, the main point was the Dock. Even Jerry Seinfeld had one.

With the Dock, your little, relatively underpowered laptop was hoovered up into a beige plastic maw to make it into an average-sized, somewhat less underpowered desktop. But you got slots and ports and the ability to use it like a desktop computer — two computers in one! — and that was crucial because without any Dock, even the smaller Mini and MicroDocks, you had hardly any ports at all (MacBook Air has entered the chat). Docking was so important that Apple even intentionally gimped the 2300 by keeping the 100MHz 603e on a 32-bit bus to maintain Dock compatibility. Yet because Duos were irrepressibly cute, they turned up in many other TV shows and even movies, most notoriously Hackers:
(People hate on Kate Libby's offhand comment that it has the new "P6 chip" especially when the trackball gives it away as a 68K Duo, but allegedly the unit in the film had a 2300 logic board, Apple did call the 60x series "P6" in some marketing material, and the "28.8 bps" [sic] modem did at least exist as a prototype. The greater technical sin is Dade Murphy saying it has a PCI bus even though no Duo ever did; the first PowerBook to be PCI was the 3400.)
Unfortunately, one of my two 2300c systems is showing evidence of the same problem that ruined the front of my favourite PowerBook 1400: the metal hinges are starting to tear out of their attachment points in the plastic back of the display, and naturally it's the one with all the upgrades in it. The most common symptom, besides bulging or split hinges when the display is closed at the point where the back and front come together, is the bottom front bezel cracking from the strain as you open it. If you learn one thing from this blog post, when opening pre-G3 PowerBooks, place your thumbs on each side of the bottom bezel of the display as you open them to support the hinge attachments. It's time for a Refurb Weekend.

Friday, September 1, 2023

Adding a cooling fan to the Commodore 128DCR

Call it a "refurb weekend sequel" to our previous work on my beloved Commodore 128DCR. It's been a hot, horrid summer in Floodgap Very Sub-Orbital Headquarters and I was somewhat concerned about the heat in the house computer lab even with the A/C cranked up to "Vegas weekend for Southern California Edison's Board of Directors" levels. But it's even worse for cooling when your one and only rear vent looks like this:
(No, I don't know what spilled there either.) The European plastic-case 128D (not this metal-cased "D Cost Reduced") has a cooling fan — and I recently landed an Australian one, more on that later — but as part of becoming CR the fan was eliminated, relying entirely on that vent and whatever warm air comes out of the rear ports to save the 8502 from being "well done." Fortunately Commodore determined it was also too much C to remove the mounting holes, so let's put in a fan instead of hoping the convection cooling is good enough.

Saturday, August 26, 2023

Scenes from the Solbourne Computer corporate video, March 1992

I've previously mentioned Solbourne Computer, which for a number of years was probably Sun's most significant early competitor in SPARC-based systems. Solbourne was the first to market in 1989 with multiprocessing SPARC servers based on their custom circuit-switched 108MB/s KBus interconnect, running a bespoke but highly compatible licensed SunOS 4.x clone named OS/MP; later, they even developed their own SPARC CPU, the benighted MN10501 "KAP" Kick-Ass Processor (yes, really). At least one Solbourne system even went on the Space Shuttle. Sun didn't have multiprocessor SPARCs until 1991 with the competing MBus-based Sun-4m systems.

My own affinity for them started when I had an account on a Series6 for a few months as an undergraduate college student and a few years later ended up with my own pizzabox S4000DX. I still have that machine, but my usual Sol is an S3000 portable workstation with that lovely garish gas plasma screen simply because it's so incredibly unique. In 1990, when this presentation slide was made, the sky seemed bright and the foundation seemed solid.

But by March 1992, cracks were showing, and now we have a view into that process then — a rare inside glimpse at the hardware development and executive management of a 1990s tech company. In a shipment of various Solbourne paraphernalia, a former employee from late in the company's dying days sent me a couple VHS tapes of corporate meetings. One of them will need some cleaning and rehabilitation, but the other was in good condition and absolutely playable, and I was able to digitize it on the Power Mac G5 Quad with my trusty Canopus ADVC-300. These are second-generation copies and the quality is worse than usual, but they tell the story adequately and serve as a fascinating time capsule of the company's later doom and nineties-era enterprise computing generally.

Sunday, August 20, 2023

MacLynx beta 5: UTF-8, pull-down menus and more dialogue boxes, oh my!

I've been working off and on doing further Mac-ification to my updated fork of MacLynx, the System 7-compatible port of the venerable text browser Lynx for classic 68K Macintoshes (and Power Macs) running A/UX 3.x or System 7.x and later. There's still more to do, but a lot has been worked in since I last dropped beta 4, so it's time for another save point. Meet MacLynx "beta 5."

Saturday, August 12, 2023

Cracking DesignWare's The Grammar Examiner on the C64

It's been awhile since I've stripped the copy protection off a Commodore 64 software package. This weekend I had a reason to.
I should point out a couple things as preamble. First, my parents insisted I would not rot my brain with games (much), so we had a lot of educational titles for our C64, and second, my wife is a high-school English teacher. I kept a number of packages from back then and one of them was a secondarily acquired copy of DesignWare's The Grammar Examiner from 1984, something like a mashup between a board game and Strunk and White's Elements of Style, where you get to edit a fictional newspaper and fix all the typos and bad punctuation in your quest to become editor-in-chief.

I rather liked it back in the day. Don't judge. My wife — who used Commodores as a girl in the Australian school system but not this particular title — enjoyed it even more than I thought she would, enough so that she occupied VICE on the Talos II playing it all afternoon and prevented me from writing this.

The Grammar Examiner plays well enough on my real Commodore 128DCR, though it's a very slow loader, and I only have an original disk which I'd like to preserve. (My original original copy disappeared a while back, though I've had this particular one at least a couple decades.) A quick sector-by-sector D64 image using a ZoomFloppy yielded a number of apparently intentionally bad sectors typical of early 1980s copy protection, but even with the error information the program's loader just plain hung up in VICE trying to boot the copy. Yes, a nibbled raw copy of the GCR would work and I imagine people have made one of this title, but we'd also like to speed up the process instead of burdening the emulator further (and it would be nicer on the real system too).

So in this post we'll explore the loader routine, decrypt and extract it, figure out how the copy protection is implemented and work around it, and then pull out the payload it reads for a faster start. While we're at it, let's look briefly at the program itself, an interesting example of Forth programming "in the large" on 1980's home computers.

Sunday, August 6, 2023

Inflation in 1983 must have been horrible

File this under fun things you never noticed before in your magazine collection.
"Elephant Never Forgets" was the exceptionally entertaining slogan of Elephant Memory Systems, one of computer manufacturer Leading Edge's brands, and their line of floppy disks and magnetic media. Originally intended in 1980 for the mass market with its bright, eye-catching pachyderm logo and stark yellow-orange colour scheme, Elephant disks developed an excellent reputation and eventually became a premium product. We had some of those back in the day, though being a bit of a 5.25" connoisseur, I always favoured old-school Memorex in the brown paper sleeves myself.

In October 1983, Creative Computing ran the ad I've got on top on their back cover. Elephant sold what they called "The Book" as a marketing gimmick for a cool "earth dollar" to tell you, in eighty pages of purple prose, all those obvious things like don't touch the disk, do keep it in its sleeve, don't feed it to alligators, parrots or small pets, and do make backups (on Elephant disks, of course). Today in 2023 that $1 would be a little over $3. In more pedestrian terms this would have been like sending in a nominal fee for their catalogue and marketing material. I never got that book myself but I bet it was epic.

In November 1983, the very next month, Creative Computing ran almost exactly the same ad in the same place on the back cover — except now, "The Book" cost you a cool Earth dollar and four bits. That's right: in just one month, the cost of EMS' flagship promotional item increased by a whopping 50%. When you have to pay fifty percent more to just get the same advertisements, that's some inflation, pal.

Leading Edge hit hard times in the mid-1980s as the PC market got cutthroat and sold off Elephant to Avery Dennison, the office supply manufacturers, who gradually phased out the brand prior to exiting the floppy disk manufacturing market entirely in the early 2000s. Unfortunately, those and other divestments weren't enough to save the company; Leading Edge went bankrupt anyway in 1989 and was subsequently acquired by Daewoo.

Friday, July 21, 2023

Apple's Interactive Television Box: hacking the Set Top Box System 7.1 in ROM

This article has been revised with recollections and corrections from former Apple employee Al Kossow, some good folks on Hacker News and the Vintage Computer Festival forums, and an anonymous individual with high-level knowledge of the project.
One of the coolest things to come along in the 68K Mac homebrew community is the ROM Boot Disk concept. Classic Macs have an unusually large ROM that contains a fair bit of the Mac OS, which was true even in the G3 New World Mac era (it was just on disk), so it's somewhat surprising that only one Mac officially could boot the Mac OS entirely from ROM, namely the Macintosh Classic (hold down Cmd-Option-X-O to boot from a hidden HFS volume with System 6.0.3). For many Macs that can take a ROM SIMM, you can embed a ROM volume in the Mac ROM that can even be mirrored to a RAM disk. You can even buy them pre-populated. How's that for immutability?

Well, it turns out Apple themselves were the first ones to implement a flashable Mac OS ROM volume in 1994, but hardly anyone noticed — because it was only ever used publicly in a minority subset of one of the most unusual of the Macintosh-derived systems, the Apple Interactive Television Box (a/k/a AITB or the Apple Set Top Box/STB). And that's what we're going to dig into — and reprogram! — today.

Friday, July 7, 2023

Refurb weekend(s): Commodore/MOS KIM-1

Actually, it was more like a whole stinking Refurb Two Months. The KIM-1 is one of the earliest MOS 6502 computers, a single-board system with 1K of RAM (actually 1152 bytes total) and a one-megahertz CPU developed by Chuck Peddle in 1975 as a way to introduce engineers to the new 8-bit microprocessor. However, its low cost meant it ended up taking on a life of its own as it was one of the cheapest ways to assemble an entire working hobbyist system, and Commodore continued to sell them for several years after they bought MOS. You could hand-key in programs with the hexadecimal keypad and the six LEDs as a display or wire up a TTY. It also supported saving and loading from cassette and paper tape, all built-in to the standard ROMs.

I have a couple KIM-1s and they are the oldest machines in my personal collection, including a Revision A pre-Commodore MOS unit with ceramic processor and RRIOTs, but the one that's the most special to me is the briefcase Revision D system you've seen here in other entries. The Revision D is notable historically as the first Commodore-branded KIM after their 1976 buyout, but it's important to me because this unit was my first KIM, and the one we got in high school from our high school math teacher and learned to program it over the weekend (we'd grown up with the Commodore 64, so we already knew all the machine language opcodes). It conveniently sits in a briefcase with a power supply and has one of Bob Applegate (RIP)'s I/O boards to provide the RS-232 connection.

While working on our most recent KIM-1 project, I noticed that the RAM from $0280 to $02bf wasn't working right. The serial uploads from KIMup would succeed, but the data it stored in that range was wrong, and when I checked with the monitor it would only store values 0-3. I got around the problem by assembling the code to a different address, but on a system with a single kilobyte of memory, you can't ignore a whole 32-byte failure. It was time for a Refurb Weekend.

Monday, July 3, 2023

RIP, Don Lancaster

Heard earlier this week that Don Lancaster, best known to us retrocomputing denizens as the man who developed the TV Typewriter, died at the age of 83 on June 7. That's my copy of one of his classic books (after the TV Typewriter Cookbook) for building a TVT 6 5/8 on anything with a 6800 bus like the 6502 and, yes, the 6800. This was a CPU-driven display that uses lines on the address bus to control the image: you lost 36K out of your addressing range as any address stored to or read there would be passed to the display interface, but gained an entire viewing screen in exchange. Even a barebones 1K KIM-1 could display a 32x16 text screen at $0200 to $03ff and it could be built out of just a handful of chips:
Haven't gotten around to building one of my own but I really should; it would be a fitting bit of fun. Cheap video was hardly enough to keep him occupied; he had an almost intimidating number of links up on his home page which fortunately seems well preserved for posterity. Godspeed and rest in peace.

Saturday, July 1, 2023

Making a potato livecam with the Commodore 128 VDC and ComputerEyes

If we're going to make the little old 8-bit MOS 6502 into Skynet — because we already know what the Terminator T-800 CPU is — then it's gonna need to see. How can it exterminate the last remnants of humanity without vision?

And we'll use something period-correct, too. While our favourite Cyberdyne Systems Model 101 was busy stalking Sarah Connor in 1984, the product it might have (slowly) viewed the world with was already on the market: the Digital Vision ComputerEyes. Check out the little beige camera perched on a stack of disk boxes, attentively surveilling the room at just a few, uh, seconds per frame as displayed on the monitor. Plug in a composite video source, connect it up to your Apple II, Commodore 64 or (in 1985) Atari 8-bit, and wait about six or seven seconds to identify targets — or almost fifty for the highest quality. If Skynet had chosen this option we might never have had Judgment Day.

The slow capture speed meant it was never intended as something to view live, and on the Commodore and Atari versions, DMA interference meant you could only capture with the screen off which would seem to make any live-ish feed impossible. But the Commodore 128 has a second video chip that doesn't interfere. Let's turn the Commodore 128 into a really slow potato-quality live camera you can interactively watch and freeze-frame — and then, in exchange for 11% of the screen, make it capture almost 25% faster! Time-lapse video proof at the end!

Friday, June 23, 2023

O Brother GeoBook, Let's Get Thou back on the Internet?

Last weekend was sad, so let's do something fun. I've mentioned I collect non-x86 laptops and portables (and not just PowerBooks: see my previous entries on the "MIPS ThinkPad" IBM WorkPad z50, the PA-RISC SAIC Galaxy 1100 and these Sun Ray laptops, among others) because they're always — and sometimes wildly — different than your average Best Buy special.

Every rule's got an exception, though:

I will try to pick up x86-based systems with "personality" (as I see fit). The PCjr, for example, had personality: love it or loathe it, it was definitely different. And the Brother GeoBook series of laptops were certainly different too, late 1990s appliance-style laptops sold at low-end prices intended for basic home tasks. Besides their chunky form factor, flash memory instead of a hard disk and an entire operating system in ROM, that operating system they ran was also different: PC/GEOS, the bigger spiritual sequel to the GEOS operating system for the Apple II and Commodore 64/128. Out of the box and built-in, you got a capable word processor, spreadsheet, drawing program, file manager, and basic personal information management, plus pervasive fax support for the included fax/modem. If you wanted, you could even install a basic web browser and E-mail client included on floppy disk.

And by golly, I do mean basic. But it was notable that a browser option existed at all, so we should make it live again. Let's take a tour around the unit's built-in applications and explore its guts, then get its PPP connection working again over null modem, hack the browser to understand what an HTTPS URL is and forward it to a Crypto Ancienne proxy, and get the GeoBook back on the Web and accessing current sites. Slowly — but it works! No Betteridge's law around here! (Teaser: see it load Hacker News and at the end.)

But first, how on earth did GEOS get into the ROM of a chonktastic plastic laptop?

Sunday, June 18, 2023

RIP, Bob Applegate

It's hard to do two memorial posts in one weekend. If you use a KIM-1 or related 6502 single-board computers, Bob Applegate's hardware (sold as Corsham Tech, though I remember when it was was the best, including his virtually essential I/O card. I had made an order from him about a month ago. By then he told me the leukemia was bad and he was no longer assembling items, just selling what he already had in stock, so I bought a couple remaining boards from him to assemble myself. His family posted word this weekend that he died in his sleep on June 13 at the age of 60. It's another loss for the vintage tech community, especially for those of us who loved the great stuff he was doing with those venerable machines. His family has posted a memorial. Godspeed and rest well.

Saturday, June 17, 2023

Goodbye, computer cat

I had Iris from when she was four months old — that's a grab from a video on my Palm Zire 72 from January 2006 — to yesterday, when she died peacefully resting in her box on her window ledge, two months shy of her 18th birthday. It was hard to take that on Father's Day weekend after Dad passed away from COVID in October 2021. I'll have something brighter to post here in a few days, but not today.

She always loved computers. They were warm.

Tuesday, June 13, 2023

New RAM card, prototype Mac Portable, demo System 7

I guess this is a review of sorts, so here's the review part: you should buy Tech by Androda's new 7MB Macintosh Portable RAM card. On my DVT prototype O.G. (non-backlit) Macintosh Portable, I get a total of 8MB of RAM as expected from 1MB on board and 7MB on the card, and System 6 works great. The card is compatible with both backlit and non-backlit machines, though on the backlit system you'll only get 5MB total without tapping one of the PDS slot addressing lines. When they're back in stock, get one, because finding RAM cards of any size (let alone maxxed out) for the Portable is difficult, and the older MacEffects 8MB upgrade — pricier but giving you up to 9MB — is no longer being made due to a lack of chip supply.
Wait, you say you want pictures of this prototype Macintosh Portable? Including its beta OS version and System 7 pre-release presentation? Oh, well, then! No, you can't escape! Sit down and watch my slide show!

Tuesday, May 30, 2023

Refurb weekend: Commodore 128DCR

No question: the Commodore 128D is the finest Commodore 8-bit ever made. On this I tolerate no dissent, and that's not just because I sometimes hang out with Bil Herd. It's a 128, so it's got VDC graphics, 128K and 2MHz operation, but because it's a 128 it's also a 64. It's also an upgraded 128 with the fixed ROMs, (in this North American 128DCR) 8568 VDC and 64K of VDC memory, it's got a built-in 1571 (Commodore's finest 5.25" disk drive), and it doesn't have an external power brick. Plus, even though it has the desktop footprint of a 128, the detachable keyboard means you can just put a monitor on top of it (and the steel-cased North American 128DCR handles that very well) just like you can't with a flat 128, and you either get an actual cooling fan with the plastic 128D or the solder points to put one in a steel 128DCR. My only complaint is that the consolidated DCR motherboard is nearly devoid of socketed ICs, making it a little tough to do component level repair on. I like spares, so I have four DCRs, all of which completely or mostly work (and two spare keyboards, one rather yellow but fully functional and one even more yellow and useful just for parts).

This particular 128DCR has been a constant presence on my desk since the mid-1990s when I first got it as an upgrade from my ailing flat 128. But it has one flaw: it doesn't have a working CIA Time-of-Day clock, which isn't used much by software, so I never bothered to do anything about it. This was tricky when developing TOTP-C64, since the 30 second timer between emitting TOTP codes uses the TOD clock for maximum interval accuracy (the 50/60Hz Timer A interrupt that drives the TI/TI$ jiffy clock can be stalled and lose time, whereas the TOD clock is based on the AC mains frequency and thus is as accurate as your plugged-in wall clock); one of my portable SX-64 systems, my second favourite Commodore 8-bit, handled that portion of testing instead.

Well, now that I've got a new Ultimate II+L cartridge in fire-engine red with its own real-time clock (among other great features), I'd like to update TOTP-C64 to support it and I'd rather do it on the 128DCR. That means we should fix the TOD clock. And that means ... a Refurb Weekend!