Saturday, March 2, 2024

An Apple district manager's Macintosh Portable in 1989-91 (featuring GEIS AppleLink and a look at System 7.0 alpha)

A few months ago I introduced you to one of the more notable Apple pre-production units in my collection, a late prototype Macintosh Portable. But it turns out it's not merely notable for what it is than what it has on it: a beta version of System 6.0.6 (the doomed release that Apple pulled due to bugs), Apple sales databases, two online services — the maligned Mac Prodigy client, along with classic AppleLink as used by Apple staff — and two presentations, one on Apple's current Macintosh line and one on the upcoming System 7. Now that I've got the infamous Conner hard drive it came with safely copied over, it's time to explore its contents some more.
We'll start with this Macintosh Portable itself and Apple's sales channel applications, moving from there to a brief presentation of Apple's Macintosh product line as Apple's own marketing staff would have presented it, at a distinct point in the company's history.
After that, we'll also look at the upcoming System 7.0 circa 1989-90 and a couple very different views of the operating system during its alpha phase.
Finally, after a brief glance at Mac Prodigy, we'll explore a little taste of AppleLink in its classic incarnation on General Electric's Mark III network — and spoof it enough to actually get it to log in.

Saturday, February 10, 2024

CAP-X and COMP-X: how the Tandy Pocket Computers got a sucky Japanese assembler

I grew up primarily with the Commodore 64, where if you wanted to do anything really cool and useful, you had to do it in 6502 assembly language. Today I still write 6502 assembly, plus some Power ISA and even a little TMS9900. I like assembly languages and how in control of the CPU you feel writing in one. But you know what would make me not like an assembly language? One that was contrived and not actually the CPU it was running on. And you know what would make me like it even less? If it were kneecapped, convoluted and limited without even proper I/O facilities.

But this particular odd little assembler dialect had the bureaucratic weight of the Japanese government behind it, because in 1969 what was then the Ministry of International Trade and Industry (MITI, 通商産業省) developed a completely artificial processor architecture to help ensure everyone taking the Information Technology Engineer Examination (情報処理技術者試験) would do so on an even keel. No one would have been an expert in this architecture or how to program it because we just made it up, reasoned the Ministry, so therefore no one will have an unfair advantage on the test.

Of course, that lasted only a few years before the specifications got out, and soon afterwards a handful of Japanese manufacturers had added it to their computers as a feature — including their pocket computer line. Through the magic of Tandy badge engineering, two of them made it to Radio Shack stores in the United States in the mid-1980s, perplexing a generation of larval nerds like me who couldn't understand what the heck it was doing there. While it was no secret the Tandy PC-5 and Tandy PC-6 Assembler feature was a fake, few people knew its history or ever did a detailed exploration. Let's dig into the dark and gloomy corners of this utterly bogus virtual CPU that a few real computers ran — sort of — and write our own cross-assembler and virtual machine so that future geeks can be just as befuddled.

Saturday, February 3, 2024

Thou shalt follow these Vintage Computing Commandments

Since vintage computing is supposed to be a spiritual experience, I point out that today, February 3, 2024, the Torah reading for this week is the Ten Commandments. Regardless of your religious tradition or lack thereof, I think we can all agree on these.

  1. Thou shalt check voltage and polarity on new-to-thee power supplies, or thy machines shall be smote and release smoke. This is sometimes very hard to judge without a load, but they should be somewhere in the ballpark, verily, and you should get in the habit of checking any new power supply before using it with your irreplaceable collection. I've been collecting some of the wallwart specifications for early consoles, including the listed values on the casing and the actual nominal values I got with my multimeter.

  2. Thou shalt remove batteries when placing items in storage, or thou will surely go to hell with them. For example, the person who improperly stored this particular Apple prototype is certainly going to hell for ruining an irreplaceable artifact. And not just lithium batteries: any battery. AAs leak too. On my pinball machines the battery holders to maintain the high scores have been relocated to the bottom of the board instead of the top so that gravity won't drag the batteries' corrosive contents all over it.

  3. Thou shalt support the lower half of laptop screens and other hinged computers when opening them, lest they break like an MD5 hash. This is becoming a bigger and bigger problem as plastics age, especially because on some designs the plastic display backs were either load-bearing and/or had metal screw races embedded in them which can tear out. The typical symptom is that the bottom of the bezel cracks when you open it and by then it's too late. Mid-1990s Apple PowerBooks are notorious for this (see our restorations of the PowerBook 1400 and PowerBook Duo 2300c) but it's also a significant problem for many PC laptops of around the same age. Depending on your skill and the location of the attachments it may be possible to reinforce the back of the top display, potentially using some sort of compatible high strength epoxy (JBWeld solves a lot of problems), but this will necessarily fuse some portions of the display together and may cause failures at other points which are now comparatively weaker. In the meantime, I've found the best way to open them is to put your palms on the bottom half of the display back near the hinges as you swing the laptop open, supporting where the attachment sites to the hinges are, so that you prevent the action of opening the hinges from putting further strain on those attachments.

    A similar phenomenon occurs with clamshell pocket computers such as the Casio FX-780P/790P and their American rebadges as the Tandy PC-5 and PC-6. These machines often put substantial strain on the plastic cover directly over the hinge pin, and when this cover breaks, the hinge pin will pop out and potentially damage the wide ribbon cable between the two halves. Once this hinge cover fractures, I haven't seen a good way to repair them because the hinge pin must be able to rotate freely — you can't just fuse the whole thing together. As a result, eBay is littered with used examples where the hinges are now totally shot. You may be able to prevent it from happening if you directly place pressure on both hinge covers with your fingers as you open the case, or put a strong strip of tape between the halves and over the hinges to reinforce the cover and shift the points of strain.

  4. Thou shalt use a head protector or dud 5.25" floppy disk when moving floppy drives, so that they might not clatter, crash or misalign. Yeah, remember those white cardboard head protectors you threw away thinking you'd never use them again? Good times, huh? While a piece of smooth paperboard or cardboard cut to size with a central hole can often suffice, you could potentially damage or warp the spindle if you cut it wrong and force the drive door closed over it, so the safest approach if you don't have a properly made head protector anymore is just to use a physically intact floppy disk that you know doesn't work. (Careful of labels, though.) You don't need to do this for 3.5" drives.

  5. Thou shalt not wrap the power cord around any plastic case, lest the stigmata they cause be grievous. I've mourned otherwise pristine machines with ugly gouges in their cases that neatly fit where the power cord had been. This is due to the plasticizers in the cord which will also plasticize the hard plastic shell of the computer itself — and you don't want that plasticized. Store the cord either completely separately from the main unit or, if it cannot be detached, let it dangle in the box or put a bag over it so it doesn't contact the computer's case.

  6. Thou shalt keep the box and paperwork if thou can, so that future generations may appreciate the context. Besides obviously making the collection more complete, we're all nerds here and computing is a cultural experience. Price tags are great comparison pieces, sales receipts and business cards are themselves historical artifacts, often referencing people and places long since departed, and who'll remember the warranty cards if nobody saves them? Sometimes unexpected letters and correspondence can be clues about what a particular computer or peripheral was used for, and those pack-in product circulars are often useful ways of finding out about what other bits you should have on your list. Plus, if nothing else, the device's original packaging is usually a safe place to store it.

  7. Thou shalt not say "recap!" every time someone else says their computer is broken. In general, this is lazy diagnosis. It's by no means limited to classic computers; classic pinball has the same kind of kneejerk repair response, but it's no less obnoxious. There are definitely systems that are infamously prone to bad capacitors — virtually every 68030 Macintosh and Macs of the same era, such as the Macintosh Portable, will require recapping if they're still on their original set — and some that are at higher risk, such as those from the capacitor plague in the early 2000s. On the other hand, many other machines are just as likely to have problems in other components instead, if not more so. Electrolytic capacitors don't have an infinite service lifetime, but virtually all of my 1970s and 1980s systems are still running fine on their original caps, and those that did crap out invariably experienced a failure in something else. Trying to fix what turns out not to be broke just runs the risk of you ruining something else. Test things first before unthinkingly replacing them.

  8. Thou shalt figure out what thou willst do with thine collection upon thy passing, or all thy hard work will be lost in an estate sale or something. It is possible, and for some folks even probable, that a well-maintained collection will outlive you. Don't let your hard work be lost. We've all had pipe dreams at some time in our collector lives about opening up our own computer museums. For most of us, this dream will never come true, and even the people foolish or bloodyminded enough to qualify for a 501(c)(3) will discover the hard way that museums don't run themselves. Instead, consider donating particularly notable items to those reputable museums that do exist, and making arrangements in either your estate or when you downsize for the next generation of collectors to let your legacy live on with them. Instead of charging money to sell your pieces, have interested parties write you an essay or something about why they'll be a good home — and then make sure they keep a printout with it (as it is written in the Sixth Commandment). Consignment tables at vintage festivals are also good options, or just post a "come and get it" somewhere like the VCF Forums: you're guaranteed to get interest from somebody, because the glory days of finding Atari 800s at swap meets have long gone the way of the Canaanites.

  9. Thou shalt keep thy wife, or thy husband, or thy partner, or anyone else thou cohabits with, we judgeth not, happy and limit the number of rooms thou occupyest. I made a rule I would keep my systems to two rooms and I've (mostly) followed it. The overflow goes in storage units, not into other rooms (mostly). Additionally, it was helpful that my wife knew beforehand what she was getting into (mostly).

  10. Thou shalt not make vintage computing your G-d.

Thursday, January 18, 2024

Reversing the Web-@nywhere Watch: browse fragments of the Web on your wrist

In the halcyon days of analogue modems and POTS dialup Internet, when the only wireless connection in your house was between the cordless phone and the wall, anything having to do with the Web was best consumed in small bites (pun intended). If you wanted to take data with you, you downloaded it first.

Which brings us to this.

Smartwatches at the turn of the century were a more motley assortment than today's, with an even wilder range of functionality. If you had a few hundred dollars or so, there were some interesting options, even back then. But if all you had was $85 (in 2024 dollars about $150), you still weren't left out, because in 2001 you could get the Web-@nywhere (the "Worldwide Web Watch"). Load up the software on your PC and slap it in its little docking station, and you could slurp down about 93K of precious Web data to scroll on the 59x16 screen — 10 characters by 2 characters — to read any time you wanted!

That is, of course, if the remote host the watch's Windows 9x-based client accessed were still up, on which it depended for virtually anything to download and install. Well, I want 95,488 bytes of old smartwatch tiny screen Web on my wrist, darn it. We're going to reverse-engineer this sucker and write our own system using real live modern Web data. So there!

Thursday, January 4, 2024

Niklaus Wirth dies

Reported yesterday. The first computer program I remember in school was Apple Presents Apple, which was written in UCSD Pascal; the first actual compiler I ever used was Turbo Pascal 5.5 (purloined from a campus NetWare server), and the first actual compiler I ever used on the Mac was MacMETH, which is Modula-2. I owe a lot of my computing experiences to Niklaus Wirth. Godspeed.

program wirth(input, output);
begin
end.

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.