Paul Novitski |
|
|---|---|
| Then | Now |
![]() |
![]() |
Short BioI never worked for Wang -- I was a freelance programmer in Seattle specializing in OIS software. |
|
Stories and AnecdotesIt was with pleasure that I stumbled across Harold's 928 People pages last week. Although I've met only a couple of you, I know many of you as though in legend: as a self-taught programmer in the 1980s I became familiar with the names Paul Anagnostopoulos, Harold Koplow, Dan Corwin, Bob Filene, Karen Glatt, John Golini, Wai Hom, and others strewn throughout the pages of the TM, OS-6, and other tech notes and source code that were my programming incubator.In 1979 I was working as a secretary (two-finger typing at 78 wpm with no mistakes, a real idiot savant of the temp worker pool) at a Seattle ad agency, as I wasn't earning enough writing science fiction. At Cole & Weber I created beautiful humdrum documents with IBM Selectrics, white-out, rubber cement, and xerography. The agency's biggest client, Western International Hotels (now Westin), told the agency in no uncertain terms that they MUST get with the program and move to word processing. Not knowing anything about word processors, I volunteered to figure out which one to buy. After two or three weeks of research & legwork I had narrowed it down to two, Wang and Lanier. Wang won out for two reasons: its software came on discs and was customer-installable, while Lanier had to send out a tech to install new ROM whenever they upgraded their software, which I figured would discourage them from making a lot of improvements; and while both word processors were nominally programmable, Wang's Glossary with Decision Processing was definitely superior: it wasn't simply a keystroke recording system, it had math and if-tests and could therefore Think, not just parrot. Cole & Weber took my recommendation and shortly installed a $5,000 stand- alone System 5 word processing system (driven off an 8-inch floppy system disk) and a daisy-wheel printer in a spare closet. I became the primary inhabitant of that closet, mastering Wang WP and staying up late playing with glossaries. I pushed the software to its limits and beyond, discovering that it could do a lot of things that you, its creators, may not have foreseen. Decision Processing was the creme, but Wang Word Processing was the pie! True, it was my first word processor so I was imprinted like a duck, but it's been the model against which I've compared every WP since, and not usually favorably. WP technology has evolved considerably over the years, but good old Wang WP rocked. And you wrote it to run in a teaspoonful of RAM! Amazing. In 1981 I quit my job and went freelance as a glossary programmer in the Seattle area. There was a small community of us around the country who were happily being overly-clever with Wang glossaries. I used them to create dynamic spreadsheets, bar and line graphs, time & billing systems, and other complicated and groovy toys. Borrowing an idea from my friend Bill Sell in Milwaukee, I started implementing "reader glossaries." One of the features I missed in Wang Decision Processing was that, while you could test for any character at the cursor position, and store in a variable the value of a numerical string that began at the cursor, there wasn't a way to similarly store alphanumeric characters on the fly for later recall. A glossary, being a WP document, could modify itself, but the process of recompiling ('verifying') itself or another glossary stopped execution cold and required a human to start it up again. My solution was the reader glossary, a set of nested IF-tests that scanned a string of characters, then went someplace else, began some other process, and spit out what it had read (or spit out something else based on what it had read). As I recall its limit before crashing was 49 characters, since glossaries were limited to a recall stack 50 deep. Although optimised with binary if-testing, reader glossaries weren't lightning-quick -- they could take as long as a second to read each character -- but they added a facility to glossary that proved invaluable. I used them to copy text between a document to its own summary page, to read the Id of a newly created document, to read document Ids from an index and go edit those docs, to drive a multiple-document processing system from a central index, to read a set of instruction tokens and execute a series of steps, and so on. Somewhere along the line, a friendly Wang tech showed me how to run SZap, System Zap, the memory editor in WPS. Initially I used it to reverse- engineer document structure so I could fix damaged documents, but mostly I liked to just poke around in the microcode and see what I could find. I remember reverse-engineering compiled glossary tokens for the sheer joy of it. One night (as a freelance programmer I was often a night-dweller in office buildings) browsing through the memory of a System 30, I stumbled across what just had to be an 8080 compiler: ASCII assembly language commands embedded in microcode. I bought a book on 8080/Z80 assemby language, then taught myself OIS Basic in order to write a disassembler. Applications as large as Wang WP were too huge to make much sense of from an assembly language perspective, but CALLIBs were the perfect size. As you'll recall, the CALLIB (call library) was the portal to Office Basic's extensibility. A CALLIB was basically a machine-language DLL that a Basic program could open & run to perform tasks that were went beyond the abilities of Basic itself. Wang supplied two or three dozen CALLIBs. A Basic program could open as many as nine at a time, but only one could run in memory at any one time because all CALLIBs occupied the same space, limited as I recall to 4K. Disassembling Wang's CALLIBs, I figured out how to write my own, at first painstakingly in binary with FZAP but soon with Wang's Z-80 assembler and PL/M compiler. I really loved writing CALLIBs, and was perhaps proudest of my WP document CALLIBs that I used in place of Wang's Basic document access routines. One of the first CALLIBs I ever wrote dumped workstation memory to a disc file, so that I could compare memory before and after certain operations and see the changes a running application had made. Reverse-engineering bits of Basic was fun and led to other innovations, such as a routine that would patch the encrypted signature of a Wang system into a Basic application to prevent a program from being installed on more than one machine. I also tried to break the 4K limit on CALLIB size: I would split a CALLIB into two parts, the base that was hard-coded to run in the usual CALLIB memory slot, and one or more overlays that could run (using relative Z-80 jumps) in any other part of workstation memory. Allocating that extra memory was the hard part. At that point I still didn't have access to the Basic language source code and had no idea how to constain Basic's memory usage, so I would dimension large string arrays, look them up in memory in Basic's variable index, and use that space. Ultimately that plan failed, as I didn't have a handle on Basic's overall memory management and that from time to time Basic would shift the location of variables for no reason I could predict, but at least I tried! From the early 80s to the mid 90s I made my living writing OIS applications in glossary, Basic, Z-80 assembly language, and PL/M. I think my best work was the List Processing Editor, a Basic application with Z-80 CALLIBs that let people edit LP databases with word processing editing functions and run enhanced decision processing glossaries. (And yes, I did add string variables to glossary's vocabulary!) Trying to get OIS internals from Wang was worse than pulling teeth; I managed to scrounge documentation under the table, but it was hard to learn enough to be able to write really robust OIS applications. As the 80s progressed, I slowly gained more recognition and empowerment from Wang as a third-party OIS programmer even while Wang was phasing out the system. Predictably, the less Wang valued the OIS, the more internal secrets they were willing to release. Eventually there were so few OIS workers still within Wang that source code was actually being handed to me and to Angus Robertson in England to maintain. I remember upgrading Multiple File Copy to handle the local archive drive. I was also given the source to Office Basic, but the budget to pay me was withdrawn before I made any changes. The last project I tried to interest Wang in was the OIS Emulator, a PC program that would run OIS software. My friend Jan Paul von Wendt and I even got to talk to a very big wig in Lowell about the idea, but it was never approved -- perhaps because it might have succeeded. Wang wanted to migrate all those pesky OIS customers to the VS, not find ways to "enable" them. Well, they migrated them, all right -- right out the door. To those of you who actually wrote the original 928/WPS/OIS operating systems and applications, it may seem parasitic that I spent over a decade programming in the envronment you created, but I have to say that for all my problems with Wang corporate policies over the years I never ceased to be pleased working with the software you provided. You did a bloody great job. If Wang Labs had not been trying so hard to beat IBM at its own game, and had the foresight to really run with the 928/OIS, it might blazed upward in history and not taken the dark plunge. The story I've heard is that when Fred Wang was put in charge of R&D he aborted any project that had been going on for more than six months. Harold Koplow was nearly finished with a new machine (the 42X?), a next-gen workstation based on the Xerox Star GUI model. If Fred hadn't killed the project, Wang could have come out with the first GUI system BEFORE THE APPLE LISA. How differently history might have run! The OIS was great. It was a robust plug & play network that could be administered by a secretary; you could add more peripherals to a system and more nodes to a network simply by connecting the cables. How unbelievable that Wang Labs was brilliant enough technically to create it but too stupid corporately to know what a treasure they really had. There was a half-hearted attempt to upgrade the OIS in the late 80s -- a third party developed the Turbo OIS, an OIS 140 motherboard with a faster Motorola (?) processor and lots more RAM and an enhanced OS-6 operating system that included file caching. But by then it was too late, Wang Labs had chosen to run off the same cliff as the mainframe shops. In my alternate reality dream, Wang realized the value of the OIS, helped it evolve to 16- and 32-bit bit chips and tons of RAM, and sailed into the 90s with the world's easiest network of PCs running some of the best software. *Sigh!* Anyway, I want to thank all of you for helping develop the systems that gave me such a pleasurably and fascinating decade and a half of work and play. If I could change just one more detail of history, it would be that I could have been part of the development team at Wang instead merely part of the user pool Out There. Warm regards,
Paul Novitski
|
|