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?

In 1986 Berkeley Softworks (based, oddly, in Berkeley, because everything in Berkeley is odd, signed, master's degree from UC Berkeley) released GEOS 1.0 ("Graphic Environment Operating System") for the Commodore 64. It was hardly the first attempt at a GUI for the venerable home computer, but GEOS gave the most credible and comprehensive user experience, not least of which because it included a lot of functionality out of the box: it came standard with full paint and word processing applications, multiple desk accessories, fonts and printer support, all running from floppy disk on a 1MHz 8-bit computer with 64K of memory. Commodore was so impressed by this that they shipped a copy of it with every 64C they sold. Berkeley Softworks (BSW) subsequently made native ports of it to the Commodore 128 and Apple II, and unofficial ports also ran on the Commodore Plus/4 and the Atari 8-bit family.

Around 1988 it was clear the Commodore 64 had peaked and was in decline as a platform, while the MS-DOS PC was growing rapidly in numbers. Even in those days of OS/2 1.0 and Microsoft Windows 2.0, however, there was already a increasing functionality schism between the upper-end IBM AT/80286 and 80386 systems and the lower-end PS/2 and XT-class machines, most of which ran on an 8086, 8088 or clone. These older and slower machines had technical limitations such as pre-286s being limited to real mode, and the functional gulf was predicted to spread further to ATs with the anticipated release of Windows 3.0 and OS/2 2.0. (This proved true: after PC/GEOS' initial release, one developer observed in Computerworld in March 1991 that he "can't imagine anyone running [Windows] 3.0 with a serious application on a 286," and praised PC/GEOS as the new alternative, saying its speed "is just blinding compared to Windows.") Although some low-end specific GUI shells such as Tandy DeskMate were minor successes in their own niche markets, DeskMate's scope was still primarily around single-tasking applications on home PCs (Tandy 1000 machines in particular), and the included applications were kept bowdlerized enough so as not to compete with DeskMate licensees. This situation presented BSW with a new, similar opportunity on PCs that they'd had with home computers.

The development of BSW's new project, codenamed OS90, took roughly two years. A complete ground-up rewrite (6502 GEOS was written almost totally in cross-assembled machine language anyway), the only thing it shared with its ancestor was the philosophy that low-end computers could remain highly functional with good software. It was intended to support multiple user interfaces (primarily Motif, but also Windows-alike) and pre-emptively multitask, and do all that on nearly any IBM PC with at least CGA by using a simple scalable UI and keeping the kernel and operating system size in memory small (some sources said just 128K). As with Commodore GEOS, OS90 was also planned to have high-quality productivity applications built-in, and of course foster an environment for third parties to write their own.

Incredibly, the first retail version in October 1990 of what was called GeoWorks Ensemble hit nearly every goal, running on XT-class systems with just 512K of RAM, CGA and MS-DOS 2.0. Recognizing the new operating system's importance to the company, Berkeley Softworks renamed itself to GeoWorks as well with the release. In addition to serving as a graphical shell for DOS, which GeoWorks ran on top of, adjustable user levels presented a simplified or full user interface as appropriate to novices and advanced users alike. It included a word processor, file manager, draw program and telecommunications modules, all written in assembly language, C with non-standard object extensions, and an interpreted language called IZL.

InfoWorld's first look in October 1990 was highly positive and said it "has a lot to recommend it," complimenting its low system requirements and its better presentation than Tandy DeskMate. COMPUTE in their April 1991 issue was similarly impressed by its system requirements and found the paint program and word processor capable, though missing a few surprising features like spell check and search-and-replace. Their biggest complaint was that there was no spreadsheet or database, which GeoWorks promised to remedy (and did) with a free upgrade. COMPUTE gave it three stars for features, four for documentation, and a full five for ease of use and innovation. Compared to Microsoft Windows 3.0, which came out the same year 1990 for $149.95 [about $350 in 2023 dollars] or $79.95 for 2.0 users, GeoWorks Ensemble was also competitively priced for what it included, at $199.95 [~$460].

I should parenthetically add that GeoWorks Ensemble 1.0 was very hard to run in an emulator (Bochs, DOSBox and QEMU all installed it but hung up trying to run it, even with real MS-DOS and the Bochs BIOS), so this screenshot of the very first release of GeoWorks is from the COMPUTE article. Fortunately, 2.x and up run very well in DOSBox if you change the options in GEOS.INI after installation to continueSetup = false and fs = os2.geo (otherwise you'll get crashes or unexpected exits with files not found).

GeoWorks did several small updates during this period, including releasing version 1.2 in both Ensemble (consumer) and Professional flavours. It also became a pack-in runtime for a few standalone software packages, most notably America Online in 1991, where it served as the UI for the original DOS client.

Not all the attention GeoWorks attracted was benign. Microsoft, seeing the upstart as a potential threat to eventual Windows dominance, even unsuccessfully tried to buy the company but the offer was rebuffed by CEO Brian Dougherty and management.

In 1993 GeoWorks released Ensemble 2.0, which expanded hardware support, provided an upgraded kernel, and became more of a direct Windows competitor. IBM integrated GEOS into their SchoolView educational GUI product, compatible with Windows and OS/2. Nevertheless, despite total PC/GEOS sales of over 750,000 copies, Microsoft succeeded in strangling the product anyway by swooping up developers, leaving GEOS' third-party ecosystem all but non-existent (and GeoWorks' somewhat difficult development requirements and lack of a formal SDK surely didn't help).

But there were other, smaller x86-based devices that could benefit. In 1992, a small startup led by Jeff Hawkins named Palm Computing (yes, that Palm) started digging into the guts of PC/GEOS as the basis for a new handheld computer thanks to those minimal system requirements. Supported by Tandy, GeoWorks and Palm worked simultaneously to add mobility features and enhanced power management to the operating system, using a Casio hardware design with a custom x86-compatible SoC at just 7 MHz. This was the 1993 Tandy "Zoomer" Z-PDA, also sold by Tandy portables subsidiary GRiD and in an OEM variant directly by Casio.

However, owing to my long affection for the Hewlett-Packard LX series since my days with the HP 95LX, my favourite pen-based GEOS device is the 1995 HP OmniGo 100 (an LX in all but name), which has a keyboard, flippable hinge and PCMCIA slot, and did everything with two AA batteries and a 80186-compatible Vadem VG230 SoC (based on a 16MHz NEC V30HL) in 1MB of RAM and 3MB of flash. Under the hood, there's even some notable low-level similarities to the GeoBooks. We might talk about these devices in a future article.

GeoWorks found the PDA experience far more rewarding than PCs (even trying to acquire Palm outright, though Hawkins declined their offer), and management believed there was much more potential in this new market than trying to compete with Microsoft on their own turf. Again, this is a branch in the story I might tell later. But the upshot here is that GeoWorks exited the PC market entirely by 1994 after a last-ditch effort to integrate it with IBM PC-DOS 7.0 failed, concentrating entirely on handhelds and mobile in the form of PEN/GEOS. The remnants of PC/GEOS were later licensed to former employees as NewDeal in 1996 who sold it as NewDeal Office, but also to Japanese electronics manufacturer Brother, who intended to use it in their "electronic typewriters" such as the LW series (and did), but also for a family of new low-end laptops to complement those existing word processor and typewriter lines. And that brings us to the GeoBooks.

Brother developed the GeoBook series at their facility in Bartlett, Tennessee, just outside Memphis. There are in fact three models in the family, all released in 1997, but only two actually bear the GeoBook name. The lowest end was sold with no GeoBook branding at all as the most advanced of their Super PowerNote dedicated word processors, the Super PowerNote Graphic PN-9000GR, while the other two are the black-and-white GeoBook NB-60 and the colour GeoBook NB-80C (both called "Personal Digital Notebooks" as silkscreened on the lid; the PN just has the Brother logo). All three systems are based on the same CPU and logic board and differ primarily in their display capabilities and port options. This NB-60 was accompanied by its sales receipt and had been bought in 1998 from Office Depot at Brother's then-MSRP of $599.99, which today in 2023 would be about $1130.

The CPU in the GeoBooks is a 33MHz AMD Élan SC300-33KC SoC (a big leap for the PN-9000GR compared to its elder siblings which were Z80-based). The ÉlanSC300 contains an Am386SXLV core, the same type of AMD 80386 CPU we saw powering the DECtalk Express, as well as a memory controller, ISA and PCMCIA bus controller, serial (16450 UART) and parallel ports, a real-time clock, and either (depending on board configuration) local bus support or a CGA-compatible monochrome LCD display driver. All three have five megabytes of flash ROM (one megabyte of which is for a stripped version of Datalight ROM-DOS 6.22, and the other four containing PC/GEOS 2.0), one megabyte of flash RAM serving as built-in non-volatile storage, and 4MB of RAM (2MB on the PN-9000GR). They also came with a 3.5" DD/HD floppy drive standard which reads and writes ordinary FAT-formatted floppies.

But as far as other features, the hub of the line was clearly the NB-60 shown here from June 1997, which was also the most widely available unit: the rather rare NB-80C only adds a colour display (and takes away battery life), while the rather uncommon PN-9000GR is defined most strongly by what it lacks compared to its cousins. Instead of the 640x480 passive-matrix 9.4" greyscale or 10.4" colour LCDs of the bigger NB-series GeoBooks as shown here, the PN-9000GR has a 640x200 monochrome LCD and no grey at all, driven directly by the CGA support in the AMD Élan SoC. All three systems use the same keyboard, which is decent, and the same "GlidePad" trackpad, which is hideous. We're very lucky GEOS works extremely well with just the keyboard.

The slightly yellowed right mouse button and screen standoff pads appear to have become so with age on both my NB-60 and PN-9000GR, as they were originally about the same white shade as the rest of the unit. The latch at the top has two modes, tenacious (in which it won't unlock) and lazy (in which it won't lock). I don't even bother trying to lock it anymore.

Brother's marketing strongly emphasized cost, saying that for the price of an organizer you could have a full computer. Much as Commodore cornered the early home computer market by eschewing then-traditional computer retail and selling through mass market outlets like Toys'R'Us and Target, Brother sold the GeoBook through retail office supply chains and consumer electronics stores. They also put advertising in unusual locations that new computer buyers would be more likely to view instead of industry rags, like this page from SPIN magazine in November 1997.
Was $599.99 competitive? This ad from August 1997 shows typical pricing for Pentium laptops floating around $1500-$2500 depending on options. Even the closeout here, an IBM ThinkPad 365x, was sold for $1200. While you could find used and refurbished 486 and early Pentium laptops for around $800 to $1000, you were still paying more, and those sorts of refurb systems didn't always come with the warranty, technical support or pack-in software a home user would want. Compare also with the Philips Velo 1 Windows CE handheld advertised here for $740, or the contemporary PowerBook 1400 and 5300 systems, which started around $2000. It was yesterday's technology, true, but at less than yesterday's prices.
Let's take a tour of the NB-60. The floppy drive is on the right side of the unit, but only the NBs had a PCMCIA slot, which can only be used for linear flash cards (Brother sold 4MB and 10MB cards, though actually any old Compact Flash card in a PCMCIA adapter should be compatible, and I know of cards at least 512MB in size that work just dandy). These show up as a specific drive in the OS but can only be inserted and removed with the power off. No other devices such as network cards, CD-ROM interfaces, etc., are known to work in this slot.
Similarly, only the NBs have the telephone jack for the onboard 33.6/14.4kbps data/fax modem; the modem hardware is absent on the PN, and the PN also lacks VGA output. However, not only do none of the GeoBooks support dual displays, they also don't support mirroring — when the external VGA is in operation, the internal LCD is turned off — and if you want to use an external display, it must already have been connected when you turn the machine on. Also, since there's no provision for connecting an external keyboard (though you can connect a serial bus mouse to the DE-9 serial COM port), the external video out is even less useful than you think it is.

The other ports are the external DB-25 parallel and DE-9 serial ports, both provided by the SoC (the internal modem, when present, appears to be connected over a second serial port via the ISA bus). You can connect a faster modem to the serial port, and on the PN this is the only way to connect a modem at all, but this also means you can't use an external mouse at the same time. Did I mention the GlidePad sucks?

There is also no reset button, which is also annoying, and we'll talk about possible reasons why when we discuss its BIOS.
You might think that two battery connectors would be actually really nice, and I do admit it would be handy for swapping batteries in and out. But the batteries themselves (BA-4000) are nickel-cadmium and suffer from all the drawbacks of NiCd like memory effect, are only 1400mAh, take fifteen (!) hours to trickle-charge (you can "fast charge" them in "just" six hours, but the unit can't be used while you do that), and only give you about two and a half hours max if you have both battery packs — and just an hour and change if you've only got one (which is what it shipped with). Runtime is additionally decreased by activity on the internal modem, PCMCIA or floppy disk. The colour display in the NB-80C reduced it further to just two hours with both packs. On the other hand, the weaker screen and fewer onboard peripherals let the PN-9000GR get up to four hours and change on just one battery pack, and an impressive near nine hours on two!
For as bulky (about 12"x10", or 296x245mm), thick (2.5" or 61.5mm) or heavy (5 lbs or 2.26kg, plus batteries) as the NB-60 is — and the NB-80C is about half a pound heavier (2.47kg) — the interior isn't particularly stuffed full. We can see nearly all of the operative parts simply by removing the keyboard (three clips at the top), showing the ribbon cables for the display, the keyboard, the GlidePad (which is PS/2 internally despite requiring an external serial mouse) and the floppy drive. Most of the rest of the interior is air, the battery bay and the floppy drive, probably to simplify assembly.
The CPU and video chip are the large surface-mount ICs at the bottom of this picture. As noted, the CPU is a 33MHz AMD ÉlanSC300-33KC system-on-a-chip using an Am386SXLV core, roughly equivalent to an Intel 80386SX. On the PN, this is the only chip of the two that is present (the video chip on the right in this view is absent), relying solely on the CGA-compatible monochrome LCD display controller built-in to the Elan SoC. The Elan doesn't support video-out, so there's no VGA connector on the PN either.

On the NBs, however, the video chip is a Chips & Technologies F65540, a surprisingly decent choice for the time (and this unit). Even with the base 512K of video RAM the 65540 could display up to 800x600 in 256 colours (24-bit colour at 640x480 with a full 1MB), similar to the contemporary PowerBook 1400 which uses the 65525A. But while the 1400 drives its 800x600 internal display at up to 16-bit colour, the NB's software only runs it with 16 colours. Not 16 bits: 16 colours.

The other chips visible here are an LGS GM82C765B floppy disk controller and what appears to be a 1MB Macronix ROM (probably containing the BIOS and ROM-DOS).

Next to the C&T video chip is a Holtek HT6542B, a 4-bit microcontroller for the keyboard and glidepad serving functionally as an Intel 8042 clone, alongside a Rockwell RC336ACF/A (R6749-25) modem controller and its small 128K EPROM. The Rockwell controller runs off a 52.416MHz crystal and powers the 33.6/14.4kbps data/fax modem built-in to the NBs. Like most Rockwell modem chipsets of the time it embeds a high-speed Rockwell R65C02-variant core, meaning a 6502 still remained at least a small part of PC/GEOS on the Brotherbooks. All of the modem hardware, including the transformer, controller and EPROM, is entirely absent on the PN.
On the other side next to the CPU is the PCMCIA slot, driven entirely by the PCMCIA controller built-in to the Elan SoC. Again, on the PN there is no slot and no PCMCIA connector. There are spots for four flash ROMs but only two are fitted, both 2MB flash units (one AMD and one Macronix). These likely contain PC/GEOS.

Below the PCMCIA cage are the power and data connectors for the floppy drive. Not visible here is the CMOS battery, pushed way away in the back, requiring you to remove the top case to get to it.

The PN has one chip here that the NBs don't: the solder pads marked SRAM are populated with a 32K SRAM chip in the PN used as the Elan's video RAM (the maximum size supported, according to the datasheet). Also not visible in any of these pictures is the 1MB flash RAM used for internal storage, the 512K of video RAM for the C&T chip and the 4MB (PN 2MB) of system RAM, which are present on the underside in all three models.

I don't have the box but I have everything else that came in the package, including the big brick 35W wallwart power supply (model A41215, same for the PN-9000GR and NB-80C: 12V 1.5A, 7.4mm barrel jack tip negative), both manuals, three floppies containing additional software (the same disks are used for the NB-60 and NB-80C), various ancillary documents like a tip guide and quick-flip how-to, a fold-out accessories catalogue and order form, an advertisement for BrotherWorks '98 (more on that soon), product registration card and a Brother-specific manual for using EarthLink (Second Edition!), the official pack-in dial-up Internet service provider of GeoBooks, allegedly written by Sky Dayton himself.
Brother did try to have at least some sort of ecosystem around its laptops, though the charges could get stiff in the same way that a basic economy flight is cheap but all the add-ons will cost you. You could order extra batteries, though the claimed three hour runtime was of course only true of the non-GeoBook PN-9000GR, plus an external charger, flash cards, a serial mouse, the official carrying case and a smattering of software. The PN also had an official Brother modem option not shown here.

Two of these software packages struck me as the most interesting: PC synchronization software, letting you sync the scheduler, contacts and task list in the GeoBook with multiple compatible organizer software packages on Windows 3.11, 95 and NT, and a free copy of BrotherWorks 98 on CD-ROM if you wrote in with your unit's serial number and paid shipping and handling. In fact, BrotherWorks 98 was nothing less than the entire GeoBook PC/GEOS suite in a form that could be installed on a regular PC, although there were minor differences. BW98 runs very nicely in DOSBox too since it's just a modified Ensemble 2.0 under the hood. We'll use BW98 as a point of comparison when we start digging more into the operating system.

For most of the screenshots in this article I'm going to switch over to the VGA output because it's cleaner and colour (even on the NB-60), but here are a few shots of the screen in action booting up.
Oh yeah? You have a splash screen? Well, we have two.
The main menu, which can be lightly themed with a custom title, different background colours (here, shades of grey) and patterns. Attempting to ape the interface of its PowerNote ancestors, this screen serves as the launcher and is optimized strictly for single-tasking — though GEOS' excellent support for keyboard shortcuts makes using the menu a breeze. Everything on-screen here has an underlined hot key. In applications, most of the options and buttons do as well, and for those things that don't, nearly every gadget is accessible with the arrow keys, TAB and ENTER (and pulldown menus with the MENU key, which is what Brother renamed ALT).
Here's the main menu for comparison on my PN-9000GR. The PN's display is definitely sharper and smoother, though the mouse pointer is still very hard to see in motion, and of course it's smaller, bezelicious and not backlit.

The available applications on both systems, going left to right and top to bottom, are word processing, a spreadsheet, "Internet" (goes to a secondary screen for settings or launching the browser or E-mail client), file manager, address book, planner, drawing (graphics), scrapbook (a pastebox, similar to the classic Mac application of the same name), book reader (its own bespoke hypertext format), a to-do list, the calculator, and the preferences screen (also with its own subapplets). A few of these can be launched either standalone or as "desk accessories," and at least one built-in application isn't visible here. We'll look at each.

The optional browser, E-mail client, text editor, terminal program, Solitaire and Turnabout/Reversi were on floppy disks included with the computer, but only the browser and E-mail client could officially be installed to the on-board flash. It seems like space was the reason, as I found out personally when I exceeded the internal flash capacity trying to manually copy Solitaire. Alternatively you could put the other apps on the PCMCIA card, but only with the NB systems.

It is possible to change the launcher to something else and even re-enable multitasking by copying portions of a PC/GEOS install to the GeoBook, though at that point you might as well just get some other 386 laptop and run PC/GEOS for real.

The word processor, probably where most users spent most of their time, and the GeoBook's strongest built-in app because of the decent keyboard. Notice that the application title bar appears at the bottom of the screen with the close gadget at the left side, along with indicators for caps lock, num lock and insert, plus symbol and help buttons. (On the PN, which has no greyscale, the close gadget is a more typical "X" instead.) Brother called the GeoBook UI "Yago," basically a modification of the standard GeoWorks Motif UI but again optimized for single tasking. Although GeoWorks supported other UIs, the ability to select an alternative interface was removed from the GeoBook and no other user interface was provided.

Anyway, let's start over with the VGA connected this time.

Main screen turn on! Notice that the background is actually cyan.
Splash screen.
And, once again, the main menu — in colour. Obnoxiously the UI elements are in a dark dingy grey which has poor contrast against the black lettering. This is not a quirk of my VGA capture box; my regular flat panel monitor shows it too. Strangely, it's not a problem on the NB's internal display.
There's a "secret" option in the menu, though it's not really all that secret since Brother put the key combination all over the case stickers that the prior owner removed (but my PN still has its set): if you press CTRL-D, you'll start a demo.
The demo is a standard GEOS application, just a full-screen one. (Despite calling itself GEOS 3.0, it seems to have only minor changes from GEOS 2.0, and GeoBook PC/GEOS has nothing to do with the later NewDeal GEOS 3.0 kernel.) It cycles through various ad screens of which I've only shown the first two main ones; the PN has its own set peculiar to its own graphical limitations. If you press F3 to exit, just like any other application, the demo will terminate and return you to the main menu. So we do.
Starting the word processor. Let's take a little longer tour of the UI.
Besides using templates for new documents, you could also import from ASCII text, Microsoft Word 3.0-5.5, WordPerfect 5.0/5.1 (DOS or Windows), or WordStar through 7.0, and export to those formats. The word processor even supported advanced features like mail merge from a spreadsheet (on the clipboard) or the address book, a bibliography and table of contents, footnotes, clip art, graphics and style sheets. Also, anything you could print, you could fax. This was more than a basic word processor and certainly played to the GeoBook's strengths.
Still, for a quick spin, we'll just emit the great American novel. With two notable exceptions no built-in app supports multiple document windows, so if you tried to open or start a new document after starting on this one, you'd have to close this first document beforehand. And who can give prose up to the winds of oblivion that's as great as this?
Pull-down menus can be accessed with ALT (again, which the keyboard labels "MENU"). Like Motif, pull down menus can be pinned.
And when they are pinned, they remain so until closed (the close gadget is the weird triangle thing).
The SYM button at the lower right pops open a character palette. It is always available on text fields that allow it.
A limited number of applications could multitask as quasi-desk accessories via the function keys, including some that aren't even on the main menu. F9 brings up a tiny clock in the upper right, and F9 dismisses it again. (This works on the main menu, too.)
F10 brings up the calculator, the same one you'd get from the main menu, and also dismisses it. I'll have more to say about the calculator below. However, you can run multiple desk accessories at once, so we'll just keep on stacking those windows.
F11 brings up a world clock, also not offered from the main menu.
And finally F12 brings up the to-do list.
These "desk accessories" exist in a weird application limbo. Like regular applications, their windows are not resizeable, but they are clearly treated differently in that they always overdraw the host application even if the host is foregrounded. Within their own hierarchy they can also overlap and change their Z-order amongst themselves. Additionally, if you close the host application, then any running desk accessories keep running as if you had launched them separately; you don't return to the main menu until each one exits also. Only one of each desk accessory can run at a time.
Dialogue box example as we close out.
Next, the spreadsheet.
The spreadsheet is also pretty good, supporting a decent range of formulae, charts and graphics, and allowing basic data manipulation like sorting as if it were a table. It could also print and fax, though its compatibility formats were limited to Lotus 1-2-3, dBase IV and CSV (no Excel, no Wingz).
The address book, which really should have been a sidecar desk accessory instead of a full app, and wastes a lot of screen real estate.
The planner, which is also basic, but does demonstrate PC/GEOS doesn't seem to have a Y2K problem.
The drawing app, which is actually a vector rather than a paint (raster) app, although it had limited bitmap editing capabilities. With the GlidePad it is primarily an exercise in cussing but works halfway decently with an external mouse within the limits of its computational capacity. The 16 colour limitation precluded anything photorealistic but it was possible to make very high resolution images up to 2400dpi. Images could be printed or faxed, imported from BMP, GIF, PCX or TIF, and exported to BMP (Windows 2.x, 3.x or OS/2).
Since none of the larger apps were allowed to multitask, a way of passing information from app to app was by pasting content into the multi-page scrapbook, though the clipboard necessarily persisted between apps or otherwise this scheme wouldn't have been possible. The scrapbook could also directly import from most of the formats above, though oddly Lotus 1-2-3 and CSV were only imported as text and dBase IV wasn't supported at all. You could load and save multiple scrapbooks as a sort of personal clip library.
The Book Reader was particularly interesting. Two books were provided on floppy disk, one for NANP area codes and one for U.S. ZIP codes. Both of these are horrifically out of date by now, but the book format (which seems to have been derived from the help format) worked well.
Imagemaps were even supported.
As a hypertext interface it seemed very good, and you could cut and paste data for other applications. But there was no way provided to create any books of your own. A depth to plumb some other time.
The to-do list and calculator, here shown as standalones in the way the menu would launch them. However, their windows aren't resizeable here either, and they don't make any attempt to soak up the remaining screen space. They can multitask here with the other desk accessories, but you can't launch more than one instance of, say, the calculator with F10: instead, it simply closes the currently running instance.
The preferences app opens up to a page of sub-applets, namely battery charge plus settings for date and time, fax, "Lights Out" (screensaver), look & feel, modem (built-in or external), mouse (built-in or external), printer driver and sound (basically beep or no beep). We won't do all of them here, just the low/highlights.
You call that fast charging? At least with the fifteen-hour trickle charge you can use the machine and there's less risk of memory effect. Additionally, the manual warns that the extra heat generated in "special charge" mode could even temporarily make the LCD blurry if you did it with the lid closed.
Fax was still king, or at least a relatively well-regarded viceroy, in 1997, and as mentioned every app that could print could fax. The manual also took pains to remind you that, under the U.S. Telephone Consumer Protection Act of 1991, it was unlawful to use a computer or other electronic device such as a fax machine to send unsolicited faxes, or even solicited ones without clearly identifying the sender, their phone number, and the date and time it was sent (either in the margin of each page or the cover sheet) — though see the subsequent Junk Fax Protection Prevention Act of 2005 for a way around this when an alleged "existing business relationship" was present. It was also unlawful under the TCPA to use a 1-900 number or other charges-more-than-long-distance number as that phone number. So fill it out right or feel the fury of the United States government probably not!
The "Lights Out" preference pane lets you select a screensaver, though if you're running on battery power, Lights Out will simply (wisely) suspend the machine.
The Look & Feel pane is limited only to minor cosmetic and behavioural changes (and even those cosmetic changes are only relevant for the main menu screen), whereas regular GeoWorks Ensemble was capable of much more.
The Modem pane let you select between the internal modem (NBs only) or an external modem, which is the only option for the PN. We've selected "external" for a null modem connection to our simulated PPP provider.
Clicking Speed and Format Options brings up this dialogue where the communication parametres can be set. Note that the maximum bitrate for the external serial port is 38400bps, which may be due to the fact there's no FIFO buffer in the 16450-compatible UART provided by the ÉlanSC300 that drives it. Since that's the most we can do, that's what we'll be running our null-modem PPP connection at.
Finally, our last stop on this first leg of the tour is the file manager. The file manager has three noteworthy attributes.

The first is that it's absolutely capable of acting as the shell in place of the main menu. If you open a document from the file manager, then when that document's application exits, it will return to the file manager instead of the main menu.

The second is that it's one of the two apps with multiple document windows (you can select the display mode at the bottom left, but even in the "single window" mode there are still multiple windows you switch between with the Window menu). The windows are also resizeable, unlike the calculator and to-do list apps, for example.
The third is that it's a damned liar. Only drives A: (floppy), E: (PCMCIA storage) and F: (onboard flash) are displayed and no other drives are accessible. That goes not only for the File Manager but also any file requester in any application.

But soft(ware)! — what light in yonder window breaks? It is the shell, COMMAND dot COM! (The other files are also system-provided, except for Communication and Turnabout [Reversi] which I installed from the included floppies.)

Et voilà, we have DOS! Specifically Datalight ROM-DOS, version 6.22.
But not much DOS. Few commands seem implemented.
In fact, most external DOS commands aren't even present (though a full install of ROM-DOS would have them). But let's look at what is present: despite the lies told to us in the File Manager, there are in fact C: (called ROM-DISK) and D: (called RAM-DISK) drives in addition to A:, E: and F:, which we already knew about.

The RAM disk is far faster than the flash drive on F:, which is rather slow even by flash drive standards of the day. It would be ideal for temporary files, not only to access them quickly, but also for not burning useless write cycles on the internal flash — and as it happens, that appears to be exactly all the system uses it for. I imagine Brother hid the RAM disk from the interface so people wouldn't accidentally put anything there they meant to keep.

If we look at the very short C:\CONFIG.SYS, it has a LASTDRIVE of G:, so there can be no H: or onward, and in fact there's no G: either.
The ROM disk on C: is purely "just enough DOS" (compare with "just enough TOS") to start the machine and serve as the underpinnings of PC/GEOS.
And the C: drive is really ROM, not flash-as-ROM. You can't write to it. No boot sector viruses on this machine, by golly.
You may have noticed there was very little in C:\CONFIG.SYS, not even a memory manager, even though Datalight ROM-DOS does support EMM386. As a result there are no UMBs, so much of the first megabyte of the 4MB RAM is wasted, and the rest is XMS (and part of it backs the RAM disk in D:).

The COM port tester finds our serial bus mouse on COM1:, which is the external port, and the internal modem is on COM2:. The UARTs are different because the ElanSC300's onboard 16450 services the external port, but the internal modem is handled by a separate 16550 over the internal ISA bus. The serial bus mouse will work with free drivers like CuteMouse.

At this point I decided to install (on the PC Card) and fire up my favourite system information tool, NSSI, to see what else I could find out. But NSSI didn't like what it found, which I had to capture with a camera since the screen mode it uses isn't compatible with the VGA capture box:
What NSSI had detected was the stub of PC/GEOS to return back to the operating system (something analogous is in the Commodore 64 version when you tap RESTORE after "shelling out" to BASIC). We'll need to make a clean DOS boot now to get a closer look.
Datalight ROM-DOS, absent portions notwithstanding, is very compatible with regular MS-DOS up to and including the same bootup keys. When the text "Initializing ... Please Wait." appears and the system beeps, this is the same boot point as "Starting MS-DOS..." on a regular PC, and will respond to the same function keys. (Don't press them or hold them down before that: too many keys in the buffer will get a Stuck Key error and the system will halt.) I held down F8, and we can now step through the boot process.
We definitely won't run C:\AUTOEXEC.BAT, which will start the main menu, but we'll also step through the remainder. The only DEVICE= entry is DLFFS.EXE, which is the Datalight "CardTrick" flash file system driver. If you disable that, then F: will not appear. This is sometimes useful if you want to protect the on-board flash from inadvertent modification, but we'd like NSSI to make a full system report, so we'll reboot and say yes only to that before starting NSSI.EXE from the card again.
This time NSSI is happy and was able to generate a full system report. Here are some highlights from its report (edited).

  ███████████████████████████General Information████████████████████████████
  ║ Computer       PC-AT or compatible, ISA                                ║
  ║ Processor      AMD Am386SX, 33 MHz, Real mode, 2/3/13/9                ║
  ║ Co-Processor   None, 0/0/0/0                                           ║
  ║ BIOS           Unknown, Unknown, 08/15/97                              ║
  ║ Video          Chips&Tech VGA 256 KB or more, VESA VBE 1.2, Secondary  ║
  ║ Memory         4 MB, 635 KB, 3072 KB, no XMS, no EMS                   ║
  ║ Drives         HDD1: 30 MB, HDD2: None                                 ║
  ║ Oper. System   MS-DOS version 6.22                                     ║
  ║ Mouse          Not Detected                                            ║
  ║ Input Devices  XT Keyboard (83 or 84 key), ncsi, No Joystick(s)        ║
  ║ Ports          2 Serial, 1 Parallel, 0 Game                            ║
  ║ CMOS           FDD1: 1.44 MB 3½", FDD2: None                           ║
  ║ Network        Not Detected                                            ║
  ║ Multimedia     Not Detected                                            ║
  ║ Software       Not Detected                                            ║
  ║ Other          Modem, PCMCIA                                           ║
  ███████████████████████████████BIOS Details███████████████████████████████
  ║ BIOS Type              Unknown                                         ║
  ║ BIOS Manufacturer      Unknown                                         ║
  ║ BIOS Date              08/15/97                                        ║
  ║ BIOS Version           n/a                                             ║
  ███████████████████████████████BIOS Details███████████████████████████████
  ║─ ROM Modules ──────────────────────────────────────────────────────────║
  ║ Address Range  Size    Type                                        PnP ║
  ║ C000h - C9FFh   40 KB  VGA BIOS                                    PnP ║
  ║ CA00h - CA7Fh    2 KB  Unknown ROM                                     ║
  ║─ Plug and Play Devices ────────────────────────────────────────────────║
  ║ This is not Plug and Play System                                       ║
  ██████████████████████████████Video Details███████████████████████████████
  ║ Video Adapter            VGA                                           ║
  ║ Monitor Type             VGA Analog Color                              ║
  ║ Secondary Video Adapter  None                                          ║
  ║ Secondary Monitor Type   None                                          ║
  ║ Video Chipset            Chips & Technologies Unknown (13) (Method 1)  ║
  ║ Video Card               Unknown or Noname                             ║
  ║ Video Memory Size        512 KB of DRAM                                ║
  ║ Video Card Bus           ISA                                           ║
  ║ Video RAMDAC Type        Chips & Technologies Internal                 ║
  ║ Video BIOS Manufacturer  Chips & Technologies                          ║
  ║ Video BIOS Model         Unknown                                       ║
  ║ Video BIOS Version       Unknown                                       ║
  ║ Video BIOS Date          Unknown                                       ║
  ██████████████████████████████Video Details███████████████████████████████
  ║─ VESA Information ─────────────────────────────────────────────────────║
  ║ VESA Support           Present (VESA Memory Size 448 KB)               ║
  ║ VESA VBE Version       1.2                                             ║
  ║ VESA Manufacturer      CHIPS 65520/525/530 Flat Panel VGA              ║
  ║ VESA Power Management  Present, VBE/PM version 1.1                     ║
  ██████████████████████████████Memory Details██████████████████████████████
  ║─ General ──────────────────────────────────────────────────────────────║
  ║ Total Memory  4 MB, Memory over 1 MB 3072 KB                           ║
  ║ HMA Exists    No                                                       ║
  ║─ Conventional ─────────────────────────────────────────────────────────║
  ║ Total         635 KB, Used 284 KB (45%), Free 351 KB (55%)             ║
  ║ Used by DOS   56 KB (9%)                                               ║
  ║─ XMS ──────────────────────────────────────────────────────────────────║
  ║ Present       No                                                       ║
  ║ Manager       n/a                                                      ║
  ║ Total         n/a                                                      ║
  ║─ EMS ──────────────────────────────────────────────────────────────────║
  ║ Present       No                                                       ║
  ║ Manager       n/a                                                      ║
  ║ Total         n/a                                                      ║
  ║ Page Frame    n/a                                                      ║
  ██████████████████████████████Drives Details██████████████████████████████
  ║ L  Drive Type                Label        Total    Free     Used       ║
  ║ A: Floppy Drive 1.44 MB 3½"  n/a              n/a      n/a      n/a    ║
  ║ B: Phantom Floppy Drive      n/a              n/a      n/a      n/a    ║
  ║ C: RAM Disk                  ROM-DISK      217 KB      0 B   217 KB    ║
  ║ D: RAM Disk                  RAM-DISK      503 KB   503 KB      0 B    ║
  ║ E: Local Hard Disk           An           30.5 MB  23.5 MB     7 MB    ║
  ║ F: Stacker Drive             SINGER        898 KB   445 KB   453 KB    ║
  ██████████████████████████████Ports Details███████████████████████████████
  ║─ Serial ───────────────────────────────────────────────────────────────║
  ║ COM Port  UART    TimeOut Rate       Data Stop  Parity CD  RI  DSR CTS ║
  ║  1  03F8h 16450   1 s     Unknown    5 b  1 b   None   No  No  No  No  ║
  ║  2  02F8h 16550A  1 s     Unknown    5 b  1 b   None   No  No  Yes Yes ║
  ║─ Parallel ─────────────────────────────────────────────────────────────║
  ║ LPT Port  EPP  TimeOut TIM IOE SEL OOP ACK NBZ                         ║
  ║  1  0378h n/a  20 s    No  No  Yes Yes No  No                          ║
  ║─ Game ─────────────────────────────────────────────────────────────────║
  ║ JOY Position X Position Y Button 1 Button 2                            ║
  ║  1  0          0          Released Released                            ║
  ║  2  0          0          Released Released                            ║
  ██████████████████████████████Other Details███████████████████████████████
  ║─ Miscellaneous ────────────────────────────────────────────────────────║
  ║ Modem Status             Installed, COM2                               ║
  ║ Modem Type               n/a                                           ║
  ║ Scanner                  Not Found                                     ║
  ║─ PCMCIA Information ───────────────────────────────────────────────────║
  ║ Number of Adapters       48                                            ║
  ║ Socket Services Version  83.00                                         ║
  ║ Implementation Version   41.4E                                         ║
  ║ Implementor Description  n/a                                           ║
  ║─ PCMCIA Devices ───────────────────────────────────────────────────────║
  ║ Adapter Windows Sockets EDCs  Capabilities Interrupt       Attributes  ║
  ║ 000     65      78      21321 00000000b    n/a             00000000b   ║

The detection of the C&T F65540 as a 6552x/6553x isn't far off, since they're all closely related parts, and that string appears to have been pulled straight out of the video BIOS. But notice that it also calls the ROM disk a "RAM Disk" (it's not), and it isn't sure what to do with the flash volume which it calls a "Stacker Drive" (apparently misdetecting it as a compressed drive).

The manual says "portions of BIOS software" were provided by Phoenix, but NSSI didn't identify the BIOS as a regular Phoenix BIOS, and it isn't. In fact, it's so different that from this clean DOS session, pressing CTRL-ALT-DEL to reboot the machine only makes it beep and then freeze up (perhaps unsurprisingly, it seems to be completely suppressed when booted into GEOS). Ditto for calling FFFF:0000, F000:FFF0, and triggering the reset button. If I generate a triple fault with something like MOV BP,0100h:LIDT [BP+0x09]:INT 08h:.DF 00 00 00 00 00 00 (remember this is a 386), the machine gets further in startup but then shows a distorted GeoBook splash screen and halts. My theory is that the machine lacks a reset button because it wouldn't work even if one were there, so thus there would be no point to its presence. While INT 19h does work, that call isn't sufficient as a cold start reset.

Differences in the BIOS turn up in other weird places; most notoriously it's been observed by earlier looks at the hardware that some DOS programs won't work with the keyboard (notably games). The issue appears to be different scan codes for certain keys which the BIOS calls compensate for, but apps using raw keyscan codes may bug out. Naturally, it's possible to patch programs in place to grok the GeoBook's keyboard scan codes, and the Brother development team reportedly did just that for Wolfenstein 3D.

I had NSSI dump the BIOS for examination, but the BIOS seems larger than the 64K it emitted because of this in the first few bytes:

00000000  61 6c 69 7a 61 74 69 6f  6e 20 63 6f 6d 70 6c 65  |alization comple|
00000010  74 65 2e 0d 0a 00 05 00  00 d8 06 57 b8 00 00 8e  |te.........W....|
00000020  c0 bf 43 00 26 8a 05 5f  07 3c c0 74 04 b0 04 eb  |..C.&.._.<.t....|

which seems to be a truncated string starting earlier in memory than it knew to start looking. There are also other interesting strings in the BIOS:

.}#                      ******* SELF TEST MENU V1.22 *******  
                            SERIAL NUMBER: _________
                              1.   SERIAL NUMBER
                              2.   BUZZER
                              3.   KEYBOARD
                              4.   LCD
                              5.   CRT
                              6.   MEMORY(FULL)
                              7.   MEMORY(FAST)
                              8.   FDD
                              9.   RTC
                              A.   GLIDEPAD
                              B.   SERIAL PORT
                              C.   BATTERY (NiCd)
                              D.   INTERNAL MODEM
                              E.   PC CARD
                              F.   PARALLEL PORT
                       Select a number.  Press ESC to exit
                    Be sure to press ESC key to end SELF TEST. 
           Just turn the power off to connect any peripheral equipment. 
.}#                      ******* SELF TEST MENU V1.22 *******  
                            SERIAL NUMBER: _________
                              1.   SERIAL NUMBER
                              2.   BUZZER
                              3.   KEYBOARD
                              4.   LCD
                              5.   MEMORY(FULL)
                              6.   MEMORY(FAST)
                              7.   FDD
                              8.   RTC
                              9.   GLIDEPAD
                              A.   SERIAL PORT
                              B.   BATTERY (NiCd)
                              C.   PARALLEL PORT
                       Select a number.  Press ESC to exit
                    Be sure to press ESC key to end SELF TEST. 
           Just turn the power off to connect any peripheral equipment. 

The difference between these two self tests is that the second one is clearly intended for the PN-9000GR and the first for the NB-60 and NB-80C. Apparently the self-test was unfinished, though:

                     ***** INTERNAL FAX MODEM TEST *****
                      ( Will take 90-secs to complete)
                     Press Enter to exit or ESC to cancel  
                     ***** FAX TRANSMISSION LEVEL TEST *****
                     HAS NOT BEEN IMPLEMENTED !!!!!!!!
                     PRESS ESC TO CANCEL !!!!!!!!!!!!!

I tried a whole bunch of key combinations on startup and was unable to find a way to start this test, nor did a cursory disassembly point out something obvious (though again it's clear we don't have the entire contents), so that'll be something to dig around with in DEBUG.EXE some slow afternoon. Otherwise, the only other interesting strings were the identifier "IBM AT Compatible Phoenix NuBIOS" and its date, which NSSI correctly detected as 08/15/97.

The VGA BIOS was fairly pedestrian:

00IBM VGA Compatible BIOS. 4
Chips 65540/545 VGA 40KB BIOS.
Build Time: AUG/15/1997 13:52
Copyright (C) 1995 Chips and Technologies, Inc.  All Rights Reserved.
=CHIPS 65520/525/530 Flat Panel VGA

Finally, just for yuks, I had it benchmark the CPU.

My late father's first PC was a benighted Packard Bell with a 16MHz 80386SX but that's about the limit of my experience with them. (He fried it trying to install a Cyrix CPU upgrade.) Still, it's notable the 33MHz Elan is not quite twice as fast as the 16MHz Intel 80386SX, possibly due to irregularities with the Am386 core and/or the power-saving features of the SLXV, and benches nearly the same as a 25MHz Intel 80386DX. On the other hand, the Am386DX-40, which should have a similar microarchitecture and is only 7MHz faster, runs great gonzo rings around this core even considering its wider data bus.

I think that suffices for the hardware. Since we know we'll need to do some hacking on the software to get the browser more modern-web enabled, let's turn now to figuring out how PC/GEOS and Yago are stored. For that, we'll briefly look at BrotherWorks 98. Or BrotherWorks '98 with an apostrophe; their circulars are inconsistent.

You can download BrotherWorks 98 (along with the NB series floppies) from the Internet Archive and install it in DOSBox, although again it seems calling it GEOS 3.0 was largely cosmetic. For example, here's its GEOS.STR compared here with a regular install of GeoWorks Ensemble 2.0, which is bitwise identical (but did change in the later NewDeal versions):

/stuff/dosbox/BW98/% strings GEOS.STR | head -3
#       PC/GEOS Kernel strings file
#       For use with PC/GEOS release 2.0
#       $Id: geos.str,v 1.6 93/03/09 03:03:18 eric Exp $
/stuff/dosbox/BW98/% sha1sum GEOS.STR
10951ed4f4071af2575e5074da8e914ace77b22e  GEOS.STR
/stuff/dosbox/BW98/% cd ../GEOS20
/stuff/dosbox/GEOS20/% sha1sum GEOS.STR
10951ed4f4071af2575e5074da8e914ace77b22e  GEOS.STR
The main difference between BrotherWorks and the GeoBook is the replacement of the Internet button with a new Exit button for quitting to DOS, and the absence of the hidden demo and modem/dialup support. Also, the UI is much more legible, though this could just be DOSBox. (It's possible to install the browser and E-mail client anyway but the browser won't be able to do anything other than read offline pages.) Otherwise the applications are the same and we'll use it for our model.

Starting BrotherWorks from your desktop is easy; you just run it (BROWORKS.BAT). How does the GeoBook actually start PC/GEOS?

On the ROM drive, C:\AUTOEXEC.BAT first seems to check the format of F: and reset it if there's a problem. Either way, the next step is to run a mysterious XIPMOVE.EXE "YAGO/ZOOM E2ROM XIP Locator" utility on the file XIPCMD., then INITMEM.COM, and then execute a batch file that basically just calls LOADER.EXE. LOADER.EXE is the standard PC/GEOS booter for 2.x; it's in BW98 and Ensemble 2.0, too.

The parametres passed to XIPMOVE.EXE look like memory locations, likely source, destination and count:

% cat XIPCMD
f50000 80000 14000
f64000 e4000 c000
f50000 180000 20000
f70000 1a0000 48000

The addresses don't cleanly divide into segments and offsets, but the overall impression is it's copying items out of flash and/or ROM into RAM. If we skip this step, LOADER will hang, so it's clearly dependent on whatever it's doing, but running XIPMOVE manually doesn't seem to change anything in D: or F:. Looking at XIPMOVE.EXE's strings didn't reveal much either other than it was compiled with Borland C++.

INITMOVE.COM has some odd strings, though:


This looks like it's cleaning up and restoring critical files in F: from their ROM masters in C:. (I like the security aspects of this thing!) If you skip this step, GEOS will start anyway as long the files were already present and unmolested.

However, the GeoBook LOADER.EXE is very different from its peers:

% strings LOADER.EXE | head
Copyright GeoWorks 1991
System Error: $cannot load geos.geo (or cannot find geos.ini)$invalid /mNNN or /mrNNN argument$cannot load strings file (geos.str)$F:\GEOWORKS\GEOS.INI
% strings /stuff/dosbox/BW98/LOADER.EXE | head
Copyright GeoWorks 1991
GEOS Stub Signature
% strings /stuff/dosbox/BW98/LOADER.EXE | grep geos.geo
System Error: $cannot load geos.geo (or cannot find geos.ini)$invalid /mNNN or /mrNNN argument$cannot load strings file (geos.str)$geos.ini
% strings /stuff/dosbox/GEOS20/LOADER.EXE | head
Copyright GeoWorks 1991
% strings /stuff/dosbox/GEOS20/LOADER.EXE | grep geos.geo
System Error: $cannot load geos.geo (or cannot find geos.ini)$invalid /mNNN or /mrNNN argument$cannot load strings file (geos.str)$geos.ini

All three try to find a boot file GEOS.GEO, .GEO being is the invariant executable extension for a PC/GEOS binary component. Compared to BrotherWorks '98 and GeoWorks Ensemble 2.0's respective LOADERs, though, there is additional setup being done in the RAM disk (D:). Also, everything is hardcoded to F:\GEOWORKS, which looks like this:

Other than GEOSINI.BAK, which is my backup copy of GEOS.INI, there is a distinct absence of files. Compare with BW98 and Ensemble 2:

/stuff/dosbox/BW98/% ls
/stuff/dosbox/BW98/% ls ../GEOS20
/stuff/dosbox/BW98/% ls SYSTEM
/stuff/dosbox/BW98/% ls ../GEOS20/SYSTEM
CHART.GEO     FS           MOUSE         SAVERS      STREAM.GEO

But the only visible *.GEO files on the GeoBook's F: drive are the ones I or the former owner installed:

If the boot file GEOS.GEO exists on C: or F:, we should be able to see it, and we don't. Are the files simply hidden?
If they are, they're hidden well; ATTRIB.EXE (copied from my real MS-DOS 6.22 486) can't see anything system or hidden (for that matter, it doesn't see any system or hidden files in C: either, meaning that DOS is also booted some other way). It is likely that XIPMOVE.EXE is either copying or decompressing them directly from flash into RAM and LOADER.EXE just executes them in place. This would also prevent the user from inadvertently deleting files they didn't understand if they couldn't see them in the first place, so there seems to be a logical rationale for why Brother did it this way. If that's so, though, I don't know why the big rigmarole with the steps broken apart in C:\AUTOEXEC.BAT, but maybe that was to make development more straightforward.

Incidentally, SWAT.EXE is the debugger. It swats bugs. Get it?

In any case, what we can see are the components of the web browser, so that much we can hack, and that's what we're here for. (Wow, it takes up just 335K?? Keep those file sizes in the back of your head.) Let's go back into the menu and this time select the Internet option.

The Internet app has four sub-applications, "subscribe," the browser, the E-mail client "emailer" and a setup dialogue, which is separate from the other preferences. If the browser and E-mail client aren't installed, they still appear, but greyed-out and you can't select them.
"Subscribe" pops up an interface that apparently calls EarthLink and gets you wired in with an account. If you try to proceed with this, it attempts to dial an 800 number on the modem and starts the browser pointing to Naturally nothing answers and I don't think they're signing up these beasts anymore, so we'll just close the window.
The E-mail client, interestingly, is called "YAGO EMAIL" (the sole location the internal name Yago is displayed to the user within the standard interface). Yago Email only supports cleartext POP3 (inward) and SMTP (outward), but it can receive attachments as both MIME and UUcode.
Yago Email is also notable as being the other app to support resizeable document windows. This computer came with a message stuck in the outbox from 1998; I've blanked out the relevant addresses and the actual content, but you can see the basic appearance of a message. Only plain text was supported. Yago Email can also pull contacts from the address book.

PC/GEOS 2.0 came with only limited network support, but the dialer, PPP stack and POP3/SMTP code weren't Brother's either; they were written by British company STNC Ltd and licensed. More on that when we talk about the browser.

We'll stop in at the setup pane before we begin, which is where your "dial-up" PPP account is configured (I removed the previous owner's EarthLink credentials). I didn't write "empty" — the interface does that in certain fields if you don't fill them in.

I don't have a dialup account anywhere any more (in this house, I don't even have a landline telephone), but naturally we can simulate one! We first have to emulate a modem to make the GeoBook think it's sending a modem commands and getting a successful connection, and then tunnel PPP to my local test network over the null modem link.

I've collected the pieces we'll be using in a Github repo I call BURLAP, for the Brother Updated Remote Link Access Package. (Catchy, no?) To make the connection we'll use a modem simulator to give the responses to the AT commands the computer sends, and then (without hanging up) start a PPP daemon over the same connection. Most Linux distros, the *BSDs and Mac OS X/macOS provide pppd as part of the operating system, usually in /usr/sbin/pppd or sometimes /usr/bin/pppd. For the first part you'll need mosim.c (the modem simulator) and usb2ppp.c (the PPP-over-null-modem redirector). Compile those with gcc; they are single file executables and have no dependencies other than POSIX termios.

(Incidentally, the BURLAP tools will generally work for other PPP dialup clients, so read on for an example of their usage if you want to try this with some other computer.)

Now complete your GeoBook's setup. For this window we'll leave the IP address, gateway and netmask at (server-provided); supply your own DNS servers. Leave the PPP account name, password and phone number blank (the window will replace them with the string empty). Do not check the box to bring up a login window unless you want to do some goofing around with the modem simulator. Save those settings and fire up the browser.

The browser has some interesting history of its own. Brother calls it GlobeHopper, but Brother likewise didn't write it; it was also written by STNC Ltd and licensed to Brother, though it doesn't seem like GlobeHopper was ever used for any other devices under that name. The browser appears descended from STNC's WWW Technology Library, which in 1998 claimed to fully support HTTP 1.1, HTML 3.2 (including forms, frames and tables), GIF (87/89), JPEG and multiple content decoding methods. Other protocols like FTP and NNTP could be added, and STNC advertised it was sufficiently cross-platform to run on ARM, x86, SH3 and PowerPC with at least 150K of RAM and 100K of ROM. The GEOS version was written primarily in C, using GeoWorks' non-standard object extensions.

The WWW Technology Library was part of the same software family that included the dialup TCP/IP and PPP stack as well as the E-mail and messaging library that underlaid Yago Email. STNC listed both Brother and GeoWorks as technology partners, and both GeoBooks and the PN-9000GR were promoted as products that used their software (along with the Psion Series 5).

The overall appearance is very much like a reduced Netscape Navigator 2 with a similar style for buttons, status line and the throbber. However, due to the unusual constraints of the platform and its atypical provenance, GlobeHopper's behaviour is somewhat different from other browsers. We'll demonstrate these idiosyncrasies once we've fired it up.

Connect your GeoBook/PowerNote with a null modem serial cable to the system that will be its PPP server (you'll need to have root access to run pppd in most circumstances). Start the modem simulator with something like ./mosim /dev/ttyUSB0 38400, adjusting for the path to your serial port. In GlobeHopper, enter an unencrypted HTTP address (here I'm using Floodgap, since I know it will display — there's another unrelated deficiency in the browser we'll come to that's a problem on other sites as well). mosim will display a session like this, then terminates on any successfully received dialout command, leaving the connection open:

% ./mosim /dev/ttyUSB0 38400
opening /dev/ttyUSB0
setting up for serial access
setting flags on serial port fd=3
restoring terminal settings

(Notice how it faithfully tried to dial the number empty!) Now start up the PPP daemon. Fortunately, the browser has a relatively generous timeout before it will abandon the link. That command will look something like

sudo ./usb2ppp /dev/ttyUSB0 38400 \
/usr/sbin/pppd :█.█.█.█ local ms-dns █.█.█.█ netmask █.█.█.█ \
passive noauth proxyarp notty debug persist nodetach asyncmap 0 ktune

usb2ppp is actually a general purpose means of running any program over a serial port (I originally wrote it for PPP and never changed the name), but here we're running it for its original purpose, namely pppd. You supply the port path and speed, then the program to run and its arguments. The blacked-out places are where you should provide an IP address for the GeoBook, the local DNS server (though you've already done that) and the netmask. This string enables PPP, disables authentication, doesn't use a TTY (usb2ppp handles the port), and tunes the kernel to enable IP forwarding for the life of the PPP connection. This same set of options also works for Mac OS X (I use it on my Quad G5), though for this I'm using my POWER9 Raptor Talos II in Fedora Linux. If you did that right, you'll now see something like

[sudo] password for screwtape: 
opening /dev/ttyUSB0
setting up for serial access
setting flags on serial port fd=3
starting process pppd
subprocess pid= 3524115

The laptop should now be able to negotiate PPP through your workstation (press CTRL-C to cancel either the modem simulator or the PPP link, though you may need to start over with the modem simulator if the GeoBook abandons the connection entirely).

On the GeoBook, a new status "Polling" appears when the PPP link is successfully established. The green activity lights do not correspond to modem activity; they're just there to reassure you that the system hasn't crashed. Download progress is shown in the small progress bar on the bottom right along with a byte count, if available.
Even at 38400bps it's not very fast, but it does work: you can see the page title already having been processed. On the server log the user agent appears in its entirety as "Brother WWW browser" with no version and no weasel tokens. Remember those days?
After the document successfully loads, the status changes to "Formatting" while it paginates it. This can also be rather slow on lengthy pages and a few very big ones seem to overflow and get truncated. But hey, whaddya want out of a little 386SX?
And here we are. But there's a lot missing: while the font sizes are generally accurate, and lists and basic table structure do appear, despite what STNC advertised for their general product GlobeHopper does not support frames and critically doesn't seem to support images either. Although some contemporary reviewers said it could "download text and images in short order," it certainly won't display them and clicking on the image placeholders does nothing. Indeed, the manual makes no mention of image support, the pack-in hint sheet says it "is a non-graphical browser," and even STNC called it "text-only" in their news releases. It also appears to lack support for other typical HTML tags of the era like <center>, <xmp>, <isindex> and horror of horrors, does not implement <blink>. The humanity!
It's nice that it did attempt to display colour text and block elements, but the 16-colour palette makes this likely to be problematic on other sites that don't use basic shades, so we'll turn the colours off by selecting monochrome mode.
This sets the background to white and text to black. Fonts and link colours can be set from Options, Set Fonts, but we'll just stick with the default.
The image situation is worse than we thought: it won't display an image even if you enter the URL directly, only allowing you to save it to storage. What's especially surprising is that GlobeHopper clearly includes some form of GIF and JPEG support. Look back where we tried to find every .GEO file on the F: drive. In F:\GEOWORKS\SYSTEM\WWW\CONVERT, there are content handlers not only for HTML, but also JPEG and GIF, and a special one for Internet-delivered updates from Brother (using a unique vendor content type application/x-brother-1-setup).
To my great horror, this content type actually loads and appears to run an update even with junk data I passed it (fortunately it looks like nothing actually happened). To defeat this possible means of attack, since so many people are launching drive-by downloads at GeoBooks, rename F:\GEOWORKS\SYSTEM\WWW\CONVERT\ISETUP.GEO to something like ISETUP.NO or delete it entirely. But other than that content type and HTML, nothing else is accessible.

More surprising still is that GEOS.INI lists GlobeHopper as the means for viewing GIFs and JPEGs you've saved, but if you try to open them from the File Manager, GlobeHopper won't display them either (and will simply offer to download them — again). That means you can only download images to view with something else! So much for using something like the Web Rendering Proxy.

This inconsistency suggests that the original idea was to fully support images and that GlobeHopper was absolutely intended to do so initially, but support was probably hastily removed late in development, likely because it took up too much memory (hence the tip sheet and the confused reviewers). Indeed, STNC's original library claims to fully support them. As befits such a hurry-up job, the file association got overlooked, as did continuing to install libraries taking up precious flash space that the system never seems to access.

It is also not surprising that HTTPS URLs are completely unrecognized. FTP and Gopher URLs don't work either.
But HTTPS URLs aren't its only problem. Even for many sites that offer unencrypted HTTP, GlobeHopper won't recognize their MIME type, and will simply try to save the page to disk. The key here is that their advertised content type (as Google here demonstrates) is text/html; charset=..., which GlobeHopper doesn't understand (a simple text/html is needed). This deficiency is not uncommon in other browsers from this period, but another deficiency is: despite the browser being fully text-only, text/plain isn't supported either, even to display as HTML. That said, the workaround is to immediately load that HTML page you just saved as a file, and that works and will display, but it's inconvenient. (Text files could be read in the word processor or optional text editor, but that's even more inconvenient.)

Additionally, GlobeHopper also won't work with NPH-CGI scripts or other quick scripts that don't emit a Content-Length header; it will simply abandon the transmission. This is much rarer, but no less annoying because it won't even attempt to download the page and just snaps back to the previous URL without explanation.

Let's tackle the HTTPS problem first, though this machine isn't going to be fast enough to handle TLS reliably by itself. In testing with Crypto Ancienne, processors below 40MHz routinely encountered timeouts with remote sites, and the Élan core is only 33MHz.

Fortunately, one thing GlobeHopper does offer is proxy support, so we can use Crypto Ancienne's carl tool in proxy mode to convert HTTP requests to HTTPS. (Bizarrely, there are fields for an FTP proxy, even though GlobeHopper doesn't accept FTP URLs.)

Thus, the next step is to teach GlobeHopper what an HTTPS URL actually is. Under F:\GEOWORKS\SYSTEM\WWW\, we already saw CONVERT\. But there's another directory, SCHEMES\. Inside it we see two files, HTTP.GEO and HTFILE.GEO, which look very suspiciously like they could be protocol handlers. What if we copied over the HTTP handler to a new HTTPS handler, still fundamentally HTTP, but adjusted to recognize the new scheme?

The HTTP module is less than 11K in length. You can see the magic word (c7 45 c1 53), which is actually GEAS if you take off the high bit, followed by a null terminated string description and part of its home path. The 01 following that identifies it as an executable object. There are also some FourCC identifiers later in the file, and an embedded STNC copyright message (1996-7).

Altering the code would be practically shooting in the dark without a good understanding of the PC/GEOS API, but fortunately it turns out we can accomplish the desired effect by simply altering strings. There were many strings containing or referencing http or HTTP, so I started modifying them one by one in the new HTTPS.GEO to see what behaviour changed.

After a few false starts where the library was completely ignored, I determined that first the FourCC HTTP needs to be different to identify itself as a separate component to the operating system. I changed it to HTLS as nothing else seemed to use that on the machine (at offset 0x3a), and also in the string description (offset 0x0a).
In a subsequent space-padded block I changed the terminal space to an "s" character, making http into https (offset 0x0130).
Finally, there was another occurrence of http in a null-padded block, so I added an "s" to that too (offset 0x03f3). Make sure the file is still exactly 11,156 bytes!
Now, compile carl from Crypto Ancienne and connect it to inetd, xinetd or an analogous utility so it's listening on a TCP port. You can run it on the same system that's providing PPP to your GeoBook if you want, though doing so is not required; here I have it on a separate internal proxy server listening at port 8765. carl can be made to upgrade HTTP requests to HTTPS, which we'll need for this task, so the switches you'll pass in your inetd configuration are carl -ptu (proxy mode, disable timeouts, upgrade HTTP requests to HTTPS).

Copy your new HTTPS.GEO into F:\GEOWORKS\SYSTEM\WWW\SCHEMES and restart the browser (you may need to re-run mosim if the PPP connection was terminated). Let's try the web server on the gopher server because why not!

It recognized and loaded it! No frames, but that's okay.

However, going to other HTTPS sites didn't seem to work — that is, unless they had an HTTP version. I threw together a quick little test script to see where the request was actually going.

It wasn't going through the proxy; it was still going direct to port 80, even with an HTTPS scheme, but because it was HTTPS GlobeHopper didn't know it had to be forwarded. We need to make the browser use the HTTP proxy for HTTPS requests.
Initially I looked at the URL library HTURL.GEO (less than 15K!) in F:\GEOWORKS\SYSTEM and twiddled its occurrences of HTTP to HTTPS where I wouldn't mess up the length of the file, but didn't get anywhere and reverted my changes from a backup. The cache and FIFO libraries didn't look like the likely location of the proxy dispatch code either.
So that left one place to look: the actual browser executable itself, in F:\GEOWORKS\WORLD\GEOWEB.GEO. It's the biggest component of the browser at 141K, but when was the last time you saw a web browser that was just 141K?
The string http occurs in three places, but only one of them is by itself, suggesting this is the string the browser is checking. Next to it is the user agent string, and then an E-mail address. This not-very-common last name appears in that press release and on the current incarnation of STNC's web page, copyright 2021. I don't think that's a coincidence, so I conclude the author appears to be one Ran Mokady, but unfortunately I got no reply from that E-mail address or from using the contact form on the website. Are you this person? What can you tell us about the browser and its development?

Note that STNC was acquired by Microsoft in 1999 and the rights to their network libraries presumably remain with Microsoft, not with this resurrected STNC currently in operation.

Since the browser doesn't support FTP anyway, there's no harm in obliterating the "f" in ftp to make room for adding an "s" to http and advancing the null string terminator. Save a backup! Then overwrite GEOWEB.GEO with the modified executable and restart the browser with that change.
Now, when we recheck, the server reports the access successfully got to port 443, not 80, proving Crypto Ancienne was proxying the connection. Note that by doing it this way with a simple string swap, hope you didn't need to send any unencrypted HTTP URLs to the proxy, because you won't be able to anymore.
With that, let's access Hacker News. It specifies the character set, so GlobeHopper won't display it immediately, but it does offer to download it. I put it on the card in E: since we don't want to run the risk of using up all the space on F: (D: would have been great, though!).
Starting downloads and download progress.
With the download complete, it snaps back to the prior URL.
Now we'll load it with File, Open File.
GlobeHopper turns it into a FILE:// URL, the only other scheme it natively supports, and which you can also enter directly. "Polling" in this case just means it's accessing the storage card.
And there we are, viewing Hacker News on the GeoBook! If we want to keep doing that download-and-load cycle over and over, we might even be able to read some submissions!

But let's say we don't. Or, let's say we can't: it would be trickier to do this with a page we needed to submit a form from, like, I dunno, searching Google. So let's up the stakes and now get GlobeHopper able to search Google.

At this point we'd have to bite the bullet and edit what comes over the wire to massage the problematic header value. We could hack carl to do so, but another way is to layer a filtering proxy on top of the HTTP-to-HTTPS proxy. This concept is charno, a Perl script also in the BURLAP repository. charno now becomes the proxy that GlobeHopper talks to, passes its request to carl over TCP (you could now just have carl listen on localhost, if you like), examines the HTTP headers that come back and adjusts the content type as required. Put charno on another port, adjust it to talk to where you have carl (newly?) installed (either by changing charno, or passing the host and port as command line options), and then put that host and/or port number into the proxy server fields.

This is enough to get How's My SSL working (and proof we're fully TLS 1.3 through the proxy), so let's try Google next.
Lots of inline script crap comes up (perhaps something we can filter later), but we do get a search form from Google. Let's be meta.
And, after paging down a bit, we find some good references on our little machine here. Let's try the first link.
Sadly, this demonstrates one other problem in this browser: pages can apparently overflow its maximum page length. In this case, that length got entirely soaked up by the inline stylesheet crap, which it faithfully tried to render just like the inline script crap, so we can't actually read any of the page itself. (Interestingly, this seems to occur before the browser's maximum input buffer is exhausted, which gives you an opaque "General network error (11).") But it did get some of it!

Also note that the redirect failed to update the location, even though the browser correctly handled it. A minor XSS, if you can call it that in a browser this primitive.

Hacker News no longer needs to be downloaded.
And neither does ... whoops, out of memory.
And (after a restart of the browser) neither does, though I don't know why the numbers showed up in red despite us being in monochrome mode. I tried OSNews too, but it just gave me JavaScript and no articles. Something to investigate later.

An exercise left to the reader, or me if I get bored and do it anyway, would be to add a content (not just header) filter stage to charno and remove <script> and <style> blocks instead of merely emitting the entire payload unedited. While we're at it, let's also fix some of those HTML entities and/or convert UTF-8 sequences to Latin-1 that it doesn't recognize. And, since we know the browser will object to web server replies without a content length, we could have that same section buffer the content up to some maximum size and synthesize a content length header for it where one doesn't exist. If you feel up to this and I haven't done it yet, then send me a pull request.

As we close, I'll make one confession: while this entry was mostly about the NB-60, you saw I also have a PN-9000GR, and ... I kind of like it a little better. The NB-60 does have greyscale and a somewhat bigger backlit screen, and certainly more memory and options. But the PN-9000GR runs a bit cooler (the NB-60 got a little hot on my lap) and for an incredible amount of time on two batteries, and has the same nice keyboard and that wonderfully sharp monochrome display. The lack of a PCMCIA slot is a big minus but at least you can get things on and off it with the floppy drive, and these days it's no longer a strike against it to not have an internal modem. If I were just running the built-in software, the PowerNote might actually be the system I'd choose, especially on the road. But for as clunky as these things are, they're definitely unique, and you come to appreciate the things it can do well as you work around the things it doesn't.

Regardless, no GeoBook sold well even at their low introductory price and reviews were decidedly mixed. For every review that was kind or positive, there was another that openly disliked it. Additionally, the pricepoint likely hurt their market perception, causing them to be viewed more as upmarket dedicated word processors than as downmarket general purpose computers, and thus less appealing to people who simply wanted a cheap laptop. (In that sense, the PN-9000GR was doubly screwed as it was explicitly sold as the upper end of their dedicated word processor line despite being the low end of their "true" laptop series.) By mid-1998, some retailers were already selling GeoBooks below $500. The GeoBooks were a minor success in schools as an inexpensive student laptop but all but disappeared from commercial sale by 2000.

GeoWorks didn't do much better. Although the mobile fork got a design win in the 1996 Nokia 9000 Communicator, relatively few devices ended up adopting it. In 1997 GeoWorks branched out from their core x86 platform with GEOS-SC, a smartphone specific version that could run on SuperH, MIPS or ARM, using technologies they acquired by buying out UK mobile systems company Eden (the same one in our Magic Cap deep dive). These later incarnations of GEOS ran on a few unusual mobile devices in Japan but gained no significant market share, and the company was dissolved in 2003.

But Ensemble still lives on, and today it's free and open source. NewDeal Office went through several revisions, including two major version updates (to PC/GEOS 4.0) and support for the 486-based set-top box MyTurn GlobalPC, until the company went out of business in 2000 and GeoWorks took back the license. Breadbox Computer Company acquired the rights in 2003 as part of GeoWorks' unwinding and continued modest development. A long-gestating project to bring GEOS to Android devices came to a sudden halt when company founder Frank Fischer died unexpectedly of a heart attack and the company ceased operations. Fortunately, former Breadbox employee Falk Rehwagen negotiated with his family to bring GEOS into a freely available modern platform buildable with Watcom and with a full SDK, and that's the package you can download today which still works great in DOSBox. We'll call that a happy ending.

BURLAP, the Brother Updated Remote Link Access Package, including the modem simulator, usb2ppp and content type filter tool, is on Github.


  1. Great article. Both Newdeal Office (NDO) 3.x and BrotherWorks 98 are definitely both based on PC/GEOS 3.0, you can drop in NDO 3.2a Kernel (geos.geo) into a BortherWorks PC install and it will still work. The major change between PC/GEOS 2 and 3 was the inclusion of a TCP/IP stack.

    Where NDO 3.x differs significantly appears to be focussed on changes to the UI to support the NewUi/Windows 95 look and desktop, more drivers and import tools for Word 97 etc., and more programs and games. NDO's Skipper browser is a earlier version of Webmagick included with Breadbox Ensemble.

    The development of PC/GEOS 4.x seems to be tied up a fair bit with the Myturn GlobalPC, one of those cheap "internet ready" PCs sold in the early 2000s. It included things like 256 colour icons, gradient title bars, improved network stability etc. The last version of the Webmagick based browsers for the GlobalPC includes JavaScript support, sadly not available in Breadbox Ensemble's version.

    1. BW98 has NET.GEO and NETUTILS.GEO, which I assume is what you're referring to? If that's the only major difference between 2 and 3 then I'll concede the point for BW98.

      For the GeoBook, however, there's no way to know if the GeoBook has this (short of dumping the flash). Even if it's there, though, it does not seem to use it: the TCP/IP stack seems to be entirely controlled by the STNC tools.

      I'll adjust the wording for the last paragraph. Thanks for the history.

    2. BTW thanks for all of your work on Classilla and TenFourFox.

      The TCP/IP stuff is placed inside the SYSTEM\SOCKET folder - I haven't checked if it is in the standalone BrotherWorks PC install though.

      Another factoid is that the Windows 95 NewUI for NDO 3 appears to be derived from the OS/2 2.x specific UI designed for a version of IBMs SchoolView client based on PC/GEOS 2.x. The OS/2 specific UI (pm.geo) works fine on Ensemble 2.0 and NDO 98 v2.8. On BrotherWorks it does weird things like making the windows dragable and leaves a placeholder for the Express menu, on NDO 3.2a it flat out refuses to load.

    3. There's no SYSTEM\SOCKET folder, at least in my BW98 install. There is a NET.GEO in my Ensemble 2.0 folder but no NETUTILS.GEO and no SOCKET.

      Seems to occupy a weird inter-version twilight.

    4. Is it the same for the GeoBook install too? Yes it's all in a weird place, with all of the OEM variants. I've found using the older SDKs fun too, with the common one being the Nokia 9000 SDK, which could be used to build binaries for NewDeal 3 too. Once you get to version 4 (also codenamed GEOS 2000), they seem to be pushing the limit with what you can do with real mode. Your GeoBook should be able to run NewDeal 3x/2000 and Breadbox Ensemble too - with enough storage space!

    5. Oh and it looks like NDO 3 Beta 3 (from 1998) included GlobeHopper (called GeoBrowser) as well as a timebombed version of Breadbox's WebMagic 2/Skipper:

    6. Can I get a look at that binary to look at the strings in it?

      The GeoBook does indeed have a SYSTEM\SOCKET folder on F:. There's nothing in it, of course, but it's present and there's nothing in any of the others either.

    7. I've sent you an email with the Browser file. I would imagine all of the OEMs that licensed PC/GEOS has full access to the source code and could tailor the installs and file locations in any way they liked. The NDO 3.2a Kernel is slightly bigger than the BW '98 kernel too, though it is a later release.

  2. This is an epic dive into the GeoBook! I dug mine out to compare, and it's also an NB-60, although it's also labelled as "Pre-production sample. Not for resale" and the BIOS message says "For development test only. Not for distribution" (I've posted a couple of photos at )

    I'm not Ran Mokady, but I did work for him at STNC :-)

    There'll only be the tiniest bit, if any, of my code on the GeoBook: I worked on it for the first month or so I was at STNC, but then got moved onto the Series 5 browser project. That uses the same design of the software, but was a ground-up rewrite to be in EPOC32 C++. IIRC, Ran wrote most of the IP stack and parts of the Web Technology Libraries, but it was at the time when the company was growing too big for him to be able to write much of the code any more, so other staff did most of the work on it.

    The C version, as used in the GeoBook, could trace its lineage through to Microsoft Mobile Explorer (after MS acquired STNC in 1999), which was the browser/email-client on the Sony Z5/J5/Z7/J7 and Benefon Q mobile phones, and the Amstrad e-Mailer.

    The Web Technology Libraries did support GIF and JPEG, converting them to the platform's native bitmap format, but then it'll be down to the rest of the browser to display them (ditto for the frame tag support). I don't remember if we wrote all of the browser or not on the GeoBook; around that time we were more focused on the protocols and parsing side of things, and didn't usually write the UI side of it (the was definitely the case on the Series 5 browser)

    The mobile version of GEOS was also due to ship on the Ericsson "Penelope" smartphone, the one James Bond uses to control his 7-series BMW from the back seat in Tomorrow Never Dies, but there was some sort of falling out and Ericsson canned the project. (We were doing the email client for that)

    1. Very interesting! I'm particularly intrigued by the string "PhoenixPICO BIOS" - that appears in AMD documentation as one of the supported BIOSes for the Elan. Obviously it was modified afterwards but it looks like this indeed started as a Phoenix BIOS and then Brother or a contractor did additional changes.

      Does the Series 5 browser have the same limitations? It really seems like GlobeHopper was meant to do more but then got its legs shortened somewhere late in development.

      Is there a difference with the system software version on your unit? Does it do more, or differently? I notice you tried the file:// protocol in one of the photographs and it didn't work; what's in F:\GEOWORKS\SYSTEM\WWW\SCHEMES ?

    2. The Series 5 browser did do images, as did Microsoft Mobile Explorer when that shipped (that actually did all of the WAP protocol stack too, and could swap layers of the protocol stack - so you could load a WML file over HTTP for example, not that anyone did that beyond us testing things :-)

      F:\GEOWORKS\SYSTEM\WWW\SCHEMES has three files in it: HTFILE.GEO (3938 bytes); HTTP.GEO (11808 bytes); and HTFILE.GOC (11066 bytes). The file:// protocol is working, and will generate directory listings - it was just that the file set as the homepage doesn't exist on disk.

      I did try a GIF and a JPEG file from disk, and just got the "save this" dialog box.

      However, I did spot a couple of log files on there: PARSER.LOG (which shows some testing against the STNC website, by the looks of it); PPP.LOG (with some PPP traffic in it); and - most interestingly - JPEGMEM.LOG. There isn't anything useful in that, but maybe points to confirm your thoughts about memory limitations being why image support was dropped.

    3. Would it be possible to get copies of those? Particularly HTFILE.GOC: that sounds like a source file! The logs could be fascinating as well. My E-mail is ckaiser at floodgap dawt com.


Comments are subject to moderation. Be nice.

See more of my general vintage computing projects,
mostly microcomputers, 6502, PalmOS, 68K/Power Mac
and Unix workstations, but that's not all. Be kind, REWIND and PLAY.

Buy Me a Coffee at

Old VCR is advertisement- and donation-funded, and what I get
goes to maintaining the hardware here at Floodgap.
I don't drink coffee, but the Mr Pibb doesn't buy itself. :-)
Thanks for reading. -- Cameron Kaiser