More from computers are bad
One of the downsides of having written here for six years now is that my messy, ever-growing text file of topics for future articles contains a bunch of ideas that have been there for about six years. Part of the problem is that I just have to scroll so far up to even see them now, part of it is that some of them are on topics where I do not feel equipped to write a good formal treatment. So let's consider this an easy, breezy episode of Computers Are Bad as I knock out one of those items. One of these O. G. topics, line three, is "avalanche technology." I will admit that I am a little fuzzy on what this originally meant, but I have a few good guesses. First, though, let's just take a step back and talk a little bit about the practicalities of the avalanche. For a lot of you, avalanches are probably a pretty abstract issue. For me, as well—I snowboard but I'm not that good at it, and the kind of mid-tier ski area where you will find me tumbling down the hill (Ski Santa Fe, towards Totemoff's) manages their slopes to avoid the potential for avalanche as much as possible. This requires some expertise in avalanche risks and it's never quite perfect, but it's pretty good. Snow that is regularly groomed by machines like PistenBullys will become coherently packed such that avalanches can't really propagate. The bigger risk on groomed ski slopes generally comes from up above, and here in New Mexico our mountains are of such a height that we're usually starting down from the very top anyway. Still, avalanches pose a real hazard. The Department of Homeland Security, when it can be distracted from terrorizing well-meaning migrants, tells us that avalanches claim about 28 lives each year in the United States. Globally, the number is much larger, and avalanche fatalities seem to be generally more common in Europe. I'm not sure if that reflects European weather, geography, or recreation habits more, but it's the way things pan out and means that Northern Europe tends to be the center of avalanche technology (as it is in alpine technology in general). We tend to associate avalanche hazard most of all with recreation, and that's definitely fair: the highest risk of avalanche probably comes about in cross-country skiing, where it's fairly common to traverse the lower part of slopes that have otherwise received very little disturbance. Most avalanches occur during storms, as the snow falls and piles up, which is of course not when recreationists are most likely to be present. You can't rely on this, though. One of the ways that an avalanche can initiate is when lots of snow is piled up on a slope on a nice sunny day—good recreation conditions! Various things like water following the ground or stratigraphic layers of different types of snow from different storms can create a condition of uneven melting. Snow that is under the surface might liquefy faster than snow that is closer to the surface. This "detaches" the upper level of snow from the ground, and when it happens over a wide area, that upper level of snow can let loose all at once. This type of avalanche is relatively rare, but they happen without warning in otherwise good weather, so it's much more likely that people will be caught. Further complicating the situation, the proximity of people can be a factor in initiating these avalanches. Here in the Mountain States, though, avalanche risk often manifests in another context: transportation. As Americans, cars and highways are among our most esteemed achievements, and decades of engineering accomplishment allows us to drive through, over, and even under much of the Rocky Mountains even during the winter. Landscape modifications, chemical measures, and the brute force of snowplows keep roadways clear—but not the slopes above them. Avalanches cascading down onto highways are a major concern in the Mountain States, especially Colorado which has the most impressive set of mountains and mountainous highways. Forecasting Some of the things, then, that we might call "avalanche technology" are the techniques used to prevent, mitigate, and warn of potential avalanche. Much of the work is institutional. On the recreational front, this falls mostly with the US Forest Service's National Avalanche Center and a loose confederation of regional organizations such as our own Taos Avalanche Center, here in New Mexico. One of the main functions of these organizations is education: posting warning signs, spreading awareness, offering training courses and materials, and so on. They also tend to employ avalanche specialists, who use a combination of meteorology and specialized snow observations to determine when avalanches are most likely. This can lead to posting warnings or closing areas entirely. Avalanche specialists in the recreational field are, in this area, joined by a substantial cadre of avalanche specialists employed by state Departments of Transportation. They apply the same techniques with an eye towards avalanches that could affect mountain pass highways. Those highways may be closed in extreme circumstances, but in transportation even more than in recreation it is common to use, shall we say, "active measures" to prevent avalanches. We will discuss this later, but first, let's briefly talk about how avalanche hazards are forecast. I am not going to go into much detail here, because I frankly do not know much about it, but I do want to touch on a couple of things that are solidly in my wheelhouse. One of these is SNOTEL. Forecasting avalanche risk requires a solid understanding of the general amount of snowpack in the mountains, which can be very tricky to acquire since when snow is heavy getting up there to take measurements becomes a very time-consuming and potentially hazardous venture. Avalanche forecasting is just one of many functions served by the SNOTEL or Snow Telemetry system, a 1960s-era network of hundreds of sensor sites throughout mountainous parts of the United States. SNOTEL was originally designed to help with forecasting spring meltwater flows, which is why it falls under the aegis of the Department of Agriculture, but as with any good sensor network there are now a lot of different stakeholders. The tricky thing about SNOTEL, and remember here that it dates back 60 years, is the snow. SNOTEL sites are way up there, inaccessible during winter, so they are designed to be installed and serviced during summer and to operate autonomously until the next summer. SNOTEL instruments are solar powered, but more interesting are the communications arrangements. The initiation of the SNOTEL project predates a robust set of earth observation satellites, to say nothing of cellular or other digital radio networks. But the whole purpose of SNOTEL is to provide snowpack data when the snow is still there, so real-time reporting is critical. SNOTEL was thus one of the first applications of meteor scatter, a fascinating form of radio communication that will probably get its whole own article one day. Here is the summary: SNOTEL data collection sites, in convenient locations like towns, transmit a VHF carrier or "pilot" signal up towards the sky. Occasionally, but more often than you would think, a meteor enters the Earth's atmosphere and burns up, leaving a trail of ionized gas behind it. This ionized gas is, if you remember previous discussion of troposcatter, reflective to RF energy. Some of the "pilot" signal is thus scattered back down towards earth. When a SNOTEL site receives the pilot signal, it knows that a meteor has just entered the atmosphere and this scattering is happening, so it quickly transmits a data packet towards the sky. Ideally, this data packet is reflected by the same meteor trail such that the data collection site can receive it. If this all sounds rather stochastic and chancey, it is, but enough meteors enter the atmosphere and data packets can be sent quickly enough (and tried multiple times) that it works pretty reliably for low-bandwidth telemetry data. Unfortunately, as interesting as meteor scatter is, it's mostly been obsoleted by general technological advances in radio communications. SNOTEL was probably the largest meteor scatter network in the world1, but is no longer: all SNOTEL sites now use other means of reporting data. The most common is probably the generic data collection capability of GOES, NOAA's main fleet of "weather satellites." GOES satellites actually serve many purposes related to earth observation, and one of them is telemetry collection from instruments on the ground. If you've ever come across a USGS stream gauging station or another mysterious hut in the middle of the woods with a cylindrical or conical antenna pointed at the sky, it's transmitting data upwards for reception by a GOES satellite. The GOES earth segment collects all of the little data packets the satellites receive into files which are distributed to the various organizations that report data this way. If you are so inclined, you can also receive this data yourself as the satellites rebroadcast it in batches, but most users don't bother since NOAA will do that part for you. Even that might be fading away: newer SNOTEL sites apparently use the cellular network for data reporting, unless it's not possible to get a signal, but that's becoming less common over time even in the Colorado mountains. The major benefit here is that the cellular network is low latency and very high bandwidth, which makes it feasible for example to view cameras installed at the SNOTEL sites. With the data part discussed, let's take a quick second look at the data collected. Temperature, humidity, pressure, wind, liquid precipitation are all measured as usual, but SNOTEL adds a couple of specialty features. Soil moisture and evapotranspiration (basically evaporation rate of water from soil) sensors provide more data on how saturated the ground is, an ultrasonic or optical instrument pointed down from atop a post measures how deep the snowpack is, and a funny looking contraption called a snow pillow takes perhaps the most important measurement. The snow pillow is basically a big rubber balloon that gets inflated on the ground, and then covered with snow. By measuring the air pressure from the snow pillow, the SNOTEL station effectively weighs the snowpack, which combined with its height gives the density or water content of the snow. This varies widely depending on the specific weather when the snow falls, and remember that stratigraphic differences in density are one of the factors that's important in the likelihood of a surprise avalanche, so collecting this water content information as snow falls allows forecasters to remotely estimate whether or not the snow conditions are hazardous. That is, of course, supplemented by good old fashioned techniques like sending out avalanche specialists with shovels and meter sticks to take a look at the snow themselves. DOTs often have technicians doing a regular tour of mountain pass sites, where they curate plastic tubs and boxes of snow from various storms so that they can get a hands-on impression of what the different layers under the snowpack are like. They also take samples to weigh, perform some tests to measure mechanical properties of the snow, there's basically a whole bag of tricks, but ultimately there is also a subjective element of how "good" or "bad" things look. This is born of experience and is one of many reasons to value our state employees. Mitigation Within the recreational context, one common approach to mitigation is simply to avoid the area. Especially for backcountry skiing areas, avalanche centers might post warnings or work with the operator to close the area entirely when forecasting shows that conditions are favorable for an avalanche. Warnings might be more useful than you think, since besides reducing the number of people in the area they should also prime people to recognize particularly risky slopes or signs of snow that is becoming unstable. Avalanches can occur without any surface signs of instability, but in practice there often are some signs, so of course keeping an eye out is better than nothing. Warnings also make people more likely to carry safety equipment, discussed later, which improves the chance of self-rescue if things really do go wrong. But there are also, shall we say, kinetic options. Many of the methods of modern alpinism evolved during the Second World War, and so did a good portion of the mitigation equipment. Once snow becomes unstable enough that an avalanche could occur, it is basically waiting for something to set it off. Popular media concepts that loud noises will trigger avalanches are, well, fictional, but the point stands that people moving around or especially operating vehicles can trigger avalanches, as can basically random happenstance. You can mitigate the risk of an avalanche by going to unstable areas and intentionally triggering them, or at least trying to, basically the same way that a bomb squad might handle an unstable explosive by exploding it. Better that it go off when you expect it than when you don't. A classic method, still in some use today, is repurposed artillery. State DOTs and ski area operators own a surprisingly large inventory of M101 Howitzers, a 105mm artillery gun that dates more or less to a 1910s German design but was widely fielded by the US during the Second World War. The avalanche application is simple: when you find a slope with unstable conditions that could pose a hazard, you shoot at it. The concussion from the impact, and often from an explosive round, puts a lot of pressure on the snow that will likely break it loose if it's possible to do so. You just have to make sure you set up outside of the resulting avalanche. The main problem with this method, which everyone agrees is a whole lot of fun, is that the M101 has not been manufactured since 1953 and, in general, the supply of cheap Army-surplus artillery has dried up. The Howitzers are aging out, and other methods are replacing them. Some of these are similarly dynamic: dropping small improvised bombs from helicopters, for example, which is a very common method in Colorado today. Even just hovering a helicopter over a slope can sometimes trigger an avalanche, although a bit of dynamite makes this a lot more reliable. If you have noticed the surfeit of high-explosives bunkers and unexploded ordnance warnings in some parts of the Colorado mountains, well, now you know why. It can feel a little bit like a very slow-running war. Even these methods are being replaced by more modern and cost-effective ones, though. A French alpine engineering company called MND manufactures a system called Gazex, which is a bit like an airport bird canon on steroids. Gazex units are pre-installed in avalanche risk areas (by helicopter, for example), and then, under remote control, they mix oxygen and a combustible gas and set it off in a big tube pointed at the ground. The force created is similar to an explosion, but the whole thing is easier to handle (since it uses gas cylinders rather than high explosives) and remote control makes everything cheaper for the operators. MND recently introduced a new version of the system called O'bellx (I assume this reads better in French), which is even more portable, albeit comically egg-shaped. This seems to be catching on with ski areas, and MND also emphasizes that the portable design and low-impact installation makes it suitable for areas like national parks with acute natural preservation concerns. Basically, you can remove them at the end of every winter, so that you aren't leaving equipment scattered around your beautiful mountains. There are also a number of other mitigation approaches that are less fun, so I will devote less attention to them, but you can find them done around here. Structures similar to snow fences, built high up on a slope, provide an "anchor" for the snow that prevents it coming loose enough for an avalanche. There are many variations on this idea, for example using steel cables supporting nets. Another approach is to permit the avalanches to start but prevent them from reaching areas where they cause harm, either by building wall or dam-like structures (I do not believe this is common in the US as I am not aware of any examples) or by putting corridors like highways inside of "snow sheds" that are sturdy enough to allow the avalanche to simply flow over. This latter method is much more common in Europe than here, but you can find some examples on US railroads, which are often in more difficult terrain than highways. Warning One of the more interesting developments in avalanche technology are warning systems. Avalanches wouldn't pose much hazard if people knew that they were coming; what makes melt-triggered avalanches so dangerous is that they can be very unexpected. One of the methods that avalanche safety courses teach is to recognize signs of snow masses that have already started to slide, shift, or collapse on themselves. This would indicate that conditions are favorable for an avalanche and that disturbing or going below the snow is quite dangerous. The usual surface signs are cracks, caused by the snow starting to slide apart, but these cracks can be tricky to see even when they are present. Another indication of avalanche potential is subsidence, or the snow surface starting to drop in level, or any motion of the snow surface downslope. These effects can start minutes or hours before the real avalanche occurs, but they are subtle and often slow, so humans are unlikely to notice them. Fortunately, machines are well adapted to this task. Several vendors offer radar systems that monitor snow slopes for any shifting, and can sound a siren or another alert if things start to move. Like earthquake warning, the actual lead time provided by these systems is not very well known and could be quite short, but something is better than nothing. Other technologies, like LIDAR and acoustics (e.g. geophones), can be applied to a similar task. I have even heard of older systems that used thin wires or brittle metal bars embedded in the snow, as part of an electrical circuit that would break if the snow started to move 2. Such systems can be quite sophisticated, and MND's sales materials suggest things like closing gates on highways when an avalanche is detected. The current state of the art in radar detection uses pulsed Doppler operation, which can be very sensitive to movement in all kinds of directions. All that said, these don't seem to be popular in the US. I couldn't readily find any installations in this country. As a final note on this topic, national alerting systems like NAWAS and the Emergency Alert System have defined message types for avalanche warnings. In practice, these are very rare, as it doesn't usually make sense from a time or area perspective to put out an avalanche warning through mass media channels. That said, they do happen, usually on the (fortunately rare) occasion that forecasters predict a high risk of avalanche in a town or other populated area. In that case, the procedure is to evacuate the town, and that's exactly the kind of situation that NAWAS/EAS/NWS All Hazards/etc. are intended for. Rescue And finally, we reach the topic that I believe led me to put "avalanche technology" on the list to begin with: technical aids to rescue. Avalanches are, in a certain sense, not that dangerous. They can move at formidable speeds (60+ miles per hour often reported), but snow is relatively soft and low-density. Injury from being crushed or striking against something is certainly a possibility, but the bigger hazard of avalanche is usually when you become buried. If you are buried in snow, and there are no rescuers or they cannot find you, it can be extremely difficult to work your way out and you are likely to succumb to some combination of exhaustion and hypothermia in the process. That might sound silly but keep in mind that you have just been buried by an avalanche, probably have a variety of minor injuries, have become disoriented, etc., and you try to dig yourself out of feet of snow in that situation. You really need someone on the surface to come help you out. That's why standard avalanche safety equipment includes a probe and a shovel—a probe for finding people (just a metal rod you use to poke under the snow, basically), and a shovel for getting to them. The problem is that probing a large area of snow is a very slow process, and even if you were right next to someone before an avalanche, you probably don't know where they ended up afterwards. This is an area where radio technology can be extremely helpful. The concept of avalanche beacons or avalanche transponders dates back to at least 1968. Dr. John Lawton was an engineer at an aerospace research lab now known as the Calspan Corporation, where he worked on a variety of interesting aviation problems ranging from weapons targeting to meteorological research. Lawton was quite an aviation enthusiast, making the news in 2013 for celebrating his 90th birthday by flying his Cessna Skyhawk over the US-Canada border 90 times. That's a bit of a peculiar way to entertain yourself, but anyone who is still flying themselves around at 90 has clearly found a way to stay vital. His lifelong investment in aviation is emphasized by the fact that he started his winding cross-border journey at the airport he owned. What is not so well documented is his interest in alpinism, but he must have had some affection for the mountains. He did some kind of research work in Europe related to triggering avalanches by dropping explosives from light aircraft, and whether that put the topic on his mind or something else, he also came up with the first commercial avalanche beacon. Commercialized by his company Lawtronics, the "Skadi" transmitted a tone at 2.275 kHz. Groups of people traveling in the mountains could each carry a Skadi unit, and if anyone was lost in an avalanche, any of the other units could be switched to a receive mode and the person located by simple amplitude search. That is, walking around the snow until you find the spot where the tone comes in the loudest, at which you point you start probing and digging. This same method is still used today, although the radio system has been standardized at 457 kHz. Modern avalanche rescue systems like the "Barryvox" from Mammut or the Black Diamond Recon X are direct descendants of Lawton's Skadi device, using 457 kHz and digital direction finding techniques (like the use of multiple perpendicular directional antennas to compute a likely heading to target) to speed things up and make radiolocation more user friendly. Because the 457 kHz system is an international standard, they ought to work about the same regardless of manufacturer. That's important in real-world scenarios where the people doing the rescuing might be from a whole different group than the one affected by the avalanche. Modern avalanche beacons are probably one of the closest real-world products to the way that "radio beacons" tend to work in movies and videogames. The reality is of course messier, especially if there are multiple victims, but in principle a digital avalanche beacon in receive mode can show an arrow on screen that you follow until you are standing on top of the buried person. You know if you're getting closer when they beep more. Neat. Technological development continues apace, and some newer avalanche beacons also support a second protocol called W-Link. W-Link is actually surprisingly poorly documented, presumably because it appears to be proprietary to Mammut (the only non-Mammut beacons that support it seem to have been joint venture projects with Mammut). W-Link is a digital protocol that operates in the ISM band, introducing the downside that ISM bands are not internationally standardized. This means that US and European-market beacons will always be compatible for conventional 457 kHz operation, but two beacons with W-Link support may not be able to use that protocol if they were sold for different regulatory markets. The upside of W-Link is that the digital protocol lets the beacon send significantly more information. This includes a unique serial number for the beacon, which allows the receiver to discriminate between pulses being received from two or more beacons at the same time—a radical improvement in the ease of locating multiple people, as conventional direction finding techniques really struggle when you cannot discriminate between multiple targets. You can end up with a "swinging needle," while the W-Link devices are capable of locking to a single target at a time. As this implies, you can also determine how many people are buried, and ignore beacons that turn out to be unimportant (because they are discarded on the surface, or carried by a rescuer, etc). Perhaps the most interesting feature of W-Link is that some W-Link beacons will use an accelerometer to detect motion, and report whether or not any motion is present. In theory, this allows rescuers to prioritize their efforts by focusing on beacons that report motion, meaning that they are carried by people who are still alive. These enhanced capabilities of W-Link seem to have led to enough controversy that the Wikipedia article devotes much of its length to ethics discussions, and manufacturers have put out position papers on their decisions to implement or not implement certain W-Link features. The concern is that W-Link may give rescuers more information on which to prioritize rescue in a discriminatory way, perhaps by searching for victims with (more expensive) W-Link beacons before less expensive conventional beacons, or by using knowledge of W-Link serial numbers to prioritize the search for specific people. In practice, I think these ethical concerns are more theoretical than actual, because penetration of W-Link technology doesn't seem all that high and most actual beacons only implement the very most basic features. The ability to display the serial numbers of individual beacons, for example, is pretty much limited to a USB dongle/software package that Mammut sells to organizations like ski patrols that loan out avalanche beacons and need to keep track of their inventory, check battery levels, etc. Avalanche beacons are not the only radio-based approach to avalanche rescue. Around a decade after Lawton developed Skadi, a Swiss engineer designed a system called RECCO. If you have read my articles on loss prevention, I can succinctly explain RECCO by saying that it is just RF electronic article surveillance applied to the outdoors. If you have not, let's get into a little bit more detail. I put a lot of time into writing this, and I hope that you enjoy reading it. If you can spare a few dollars, consider supporting me on ko-fi. You'll receive an occasional extra, subscribers-only post, and defray the costs of providing artisanal, hand-built world wide web directly from Albuquerque, New Mexico. If you make an antenna that is a small loop, and then put a nonlinear device like a p-n diode in it, you end up with an antenna that behaves asymmetrically with regards to the phase of the radio wave passing over it. Intuitively, we can say that energy freely flows one way around the antenna, but not the other. The energy going that way becomes trapped, and gets re-emitted at at a harmonic frequency to the one that excited the device. This general principle is known as non-linear junction detection, and it has all kinds of interesting applications in fields like technical security, but its most common application is as one of the common types of retail anti-theft tagging. RECCO is basically a retail loss prevention system aimed at the ground. RECCO tags, called "reflectors" in RECCO parlance, are a simple foil antenna and diode, which makes them cheap and durable. They are so cheap, and compact, that some brands of alpine gear (especially in Europe) build RECCO tags right into products like snow pants and ski boots. Dainese even offers a bicycle helmet with one. The RECCO detector emits a powerful and very directional RF field in an ISM band, and then monitors for the characteristic harmonics emitted by an excited tag. This technology is not RFID, although it is conceptually similar, and has some of the same downsides such as a tendency for tags to be undetectable if they fall in the wrong point in the phase of the exciting field. For that reason, RECCO recommends that you have two reflectors at different locations on your person. The other main downside of RECCO is that it shifts most of the complexity into the detector, so they are relatively large and expensive. That's not so bad when you consider that detectors only need to be carried by ski patrol and SAR organizations. Rescuers basically aim the detector around until it picks up a signal, and then walk that way until they are aiming the detector straight down. That's where they dig. RECCO has even designed a detector that can be underslung by a helicopter, although its 100 meter range will require some sporty flying. The RECCO system is generally much more popular in Europe than in the US, but penetration is increasing here, and RECCO publishes a list of SAR organizations with detectors that now includes a number of helicopters in the US and many major ski areas. I view RECCO as having a bit of a belt-and-suspenders relationship with traditional avalanche beacons. Avalanche beacons are more common, and all beacons also function as receivers, so "buddy rescue" by a bystander is far more likely with beacon technology. On the other hand, RECCO is usable over a longer range (although not radically longer) and the detectors are more directional and potentially faster to use. Most avalanche centers seem to recommend that you carry both, although the traditional avalanche beacon is more important. Finally, let's consider a couple of other pieces of avalanche safety equipment, which will lead us to consider efficacy. The core avalanche PPE consists of a probe and a shovel, and both are available in collapsible form for portability. Besides locating technologies, though, the major innovation in avalanche safety is the avalanche airbag. These are backpacks that you wear with a parachute-like ripcord. When you pull it, the bag inflates into a big airbag behind you. There are two ways this is helpful: first, the airbag will tend to float on moving snow, making it less likely that you are buried. Second, if you do become buried, you can deflate the airbag to leave you with a void in the snow. This gives you more air to breath, and room to move, making it more likely that you can dig yourself out. Avalanche airbags remind me a bit of the motorcycle airbags, as far as being very cutting-edge but also, you know, kind of questionable when it comes to efficacy. Manufacturers of airbags often advertise a 50% reduction in fatalities, but we have to take those numbers with a grain of salt. One of the problems with safety technology for extreme risks is that the actual risk event just doesn't happen very often. In less abstract terms, people are not caught in avalanches all that often, so the total number of people who have been caught in an avalanche while wearing an avalanche airbag just isn't that big. This limits the confidence we can have in efficacy findings. Well, I tracked down the paper that the 50% number comes from, and it's not actually that bad. They identified 424 people caught in severe avalanches, roughly half of which had avalanche airbags, and found that the airbags reduced mortality by 50% for people who successfully deployed them, and 41% overall given that there were various situations where they were not triggered or failed. The sample size is not huge, but it's bigger than I expected, and even at the bottom of the 95% confidence interval you still see a meaningful mortality reduction of around 10%. So, avalanche airbags seem to work, but they do cost around $1,500, so make of that what you will. Another interesting number from that paper is actually a bit of an aside: of the sample of people considered, 99% had avalanche beacons! A basic avalanche beacon can be had for about $250, which is pretty similar to cheap satellite messenger or very basic PLB 3. On the other hand, the passive nature of RECCO tags translates to a price advantage: a standalone reflector that you can clip to your pack only costs $30, which frankly still feels like a ripoff considering the simplicity of the design. I wonder if a RECCO detector would pick up enough RF EAS tags sewn into your clothing. Or shoplifted. One of the amusing things, though, is that despite being the cheap option (or perhaps beacuse of it), RECCO is relatively poorly backed by data. The number of actual rescues using RECCO remains small, although the development of the helicopter-based detector will probably lead to more successful uses. Or, you know, just stay out of the mountains. They may be calling, but you don't have to go. Researching SNOTEL's history starts getting you into military R&D reports and formerly classified documents pretty quickly, and it's clear that both the US and other militaries have used meteor scatter for communications in the past. Possibly they still do today. If I were to place a wager, I'd say that SNOTEL is likely smaller than or on par with the military network that its equipment seems to have been adapted from. Unfortunately there is very little information in public about this military application (one of the reasons to suspect that meteor scatter is still relevant in the military context), so I can only speculate.↩ This is at least vaguely similar to a common safety device employed on the towers of ski lifts, where a brittle metal bar is placed under the sheaves that support the rope. The lift's safety loop is passed through the bar. If the lift badly deropes at the tower (that is, the cable falls off of the sheaves), it falls on the bar, snapping it. That interrupts the loop of wire that runs from the drive end to the opposite end and back, which shuts off the motor and releases magnetic brakes.↩ PLBs, or Portable Locator Beacons, are beacons made specifically for detection by the COSPAS-SARSAT satellite constellation. They are probably the gold standard in general search and rescue technology, and since they rely on a system operated as an international joint venture there are no service fees or subscriptions involved. Oddly, though, PLBs are actually pretty expensive. Here's the reason: authorities that mandate PLBs in various situations (e.g. the Coast Guard) have also specified rather exacting standards for service life, waterproofing, shock resistance, etc. This has the counter-intuitive result that two-way satellite messengers like Spot X or Garmin InReach can actually be cheaper to buy, but you will have to pay a service fee, and they are unlikely to survive the kind of "plane crash/sinking boat/car wreck" physical abuse that PLBs are tested for. As successive generations of more sophisticated COSPAS-SARSAT satellite payloads have launched, the system has also become very reliable, and in most circumstances PLBs are more likely to work than other types of satellite communicators. What I'm saying is that if you recreate in the middle of nowhere, you should consider buying a PLB, even though a good one can cost $500. At a five year rated lifespan, that's cheaper than a Spot or InReach plan even without the hardware purchase.↩
During the heyday of AT&T, it was often said that the telephone system was the largest machine ever built. The "hello machine" certainly was vast, but whether or not you consider it to be a single machine raises challenging questions of definition. The Internet, I think we can all agree, is not a single machine but a system of interconnected ones. The telephone network, though, felt a lot more like one device. "One Policy, One System, Universal Service" was once the slogan of AT&T, a message that the telephone network is more than just a sum of parts. The third of these principles, "Universal Service," is a key point around which telecom policy pivots even today. As the telephone system was at its apex, Universal Service became its undoing. We know the Internet to be a network of independent devices in part because of the wide variety of ways that we access it. Computer networks, almost to their origin, have emphasized independent implementations of standardized interfaces. Computers, as network nodes, are interchangeable. As a result, much of the complexity must be pushed to the edge, where end-user systems are most able to adapt to the unique needs of, well, the end-user. The telephone system was much different: few types of telephone instrument existed, largely from a single manufacturer. Complexity was drawn into the center where telephone offices could house the huge machinery required by mid-century automation. All of it was, for a very long time, hard-wired: central office switches and customer telephones were designed and installed to suit each other. This core difference, between the flexibility of computer networks and the central caretakership of telephone networks, was a core issue in the series of changes that rocked the telephone business in the early 1980s. 1984 is the K/T line of telecommunications, the year the sea peoples came. It is difficult to overstate the extent to which telephone technology, the communications industry, and the basic concept of what a telephone is changed between the 1970s and the 1980s. This was not a single, well-planned, carefully executed reform the way some accounts of divestiture can make it out to be. In practice, it was chaotic, messy, and often drawn out. The deregulation, re-regulation, and fundamental reshaping of the American telecommunications industry is a complicated story. There are different actors, different agencies, different motives, and different outcomes. Nothing went quite as expected, and some of the consequences still remain to be seen. It is a hard story to tell. We can begin to understand it, though, by focusing in on just one part: the part in your house, the Customer Premises Equipment. Like the "Standard Oil" gas stations that you can still find here and there, the breakup of the Bell System left behind marks. More than anything else, it left behind telephones. From the genesis of the Bell System, telephones were considered just as much part of the telephone system as the central office equipment that supported them. Despite some early uncertainty, AT&T quickly settled on a pattern in which most telephone users paid a single monthly rate that included local calling, maintenance of the local loop to their premises (which we might call "access"), and the telephone itself. When you signed up for service, Ma Bell sent someone to install your phone. When you had trouble, they sent someone again to fix it. When you canceled, or fell delinquent on the bill, they sent someone by to take the phone away. From our modern perspective of the telephone as "consumer electronics," it's hard to picture paying rent on one. There were a number of reasons for leasing, which varied in prominence over time. Some of the uglier parts of the early 1980s involved disputes over which of these motives really mattered. Phones, we will see, were leased to consumers for many of the same reasons that early computers were mostly leased to businesses. This reflects a parallel shift in the computer industry, from "computer centers" to "personal computing," that happened around the same time and in a similar context. Before we get there, though, we need to understand how it came to be that telephones were "Bell System Property—Not For Sale." First, we need to understand the nature of telephones and telephone wiring when the practice of telephone leasing was established. Consider, for example, that the first phones in common use were not yet "common battery"—they had local batteries, a wooden box full of big dry cells that required regular changes. Telephones were much more maintenance-intensive, and those maintenance requirements produced a troubling question of responsibility. Most people, if they attempted a telephone call and couldn't understand the other party, would blame the phone company. They'd blame the phone company even if it was the fault of the caller or callee, for not changing their phone batteries. Consider these two facts: telephones required regular service, and if they didn't receive it, the result would reflect poorly on the reputation of the phone company. For both consumer convenience and the integrity of the telephone system, it made sense for the phone company to take responsibility for the end-user's equipment. Consider also the issue of compatibility. The type of telephone to be installed, the wiring conventions, and the configuration of the "network" of electronics in the phone could all depend on the type of exchange office it was connected to. Up until around 1970, party lines were very common (the majority of all telephones in the mid-century). They remained in use here and there into the 2000s. The problem was even more acute for party line customers: there were a half dozen fundamentally different selective ringing systems for party-line phones 1, and different basic wiring schemes to match. One of the dominant discussion topics in telephone collecting circles is how to wire and re-wire vintage phones to work with specific equipment. Bell System Practices told technicians which wires to connect to which terminals, and which terminals to strap to which other terminals, to get a standard phone model to work in a given situation. Some scenarios required add-on boards, external cabinets, or modifications. This could all be true even of simple single-line phones, but the moment a business or large residence wanted a more complex system (e.g. with intercom calling), the complexity multiplied. What was even worse, especially in the case of party lines, is that a single malfunctioning or incorrectly installed phone could impact service along the entire phone line. In the worst case, even a humble single-party line could sap the capacity of the exchange's switching equipment if it stuck off hook. I should also make sure to emphasize the way that telephones were connected. Today, all telephones use "modular connectors" that simply plug into a wall socket. We shouldn't take modular wiring for granted; telephones were usually hard-wired to screw terminals until the 1960s, and even once connectorized the connectors were not standardized until 1974. In 1980, as a dark storm rose over the horizon, many telephones were still hard-wired, some still to complicated wall ringers or terminal boxes. Considering all these factors, it makes sense that telephones were professionally installed: it would have been difficult to instruct most telephone users on correct installation, and if they did it wrong you might have to send someone to urgently fix it anyway. Since telephone wiring of the era could physically pass through multiple residences, and telephones could impact the function of other parts of the system, the telephone company viewed access to customer premises and their equipment as a necessity to ensure good service. When it came to third-party equipment, well, nothing made Ma Bell more nervous. Western Electric telephones were carefully manufactured, thoroughly tested, and precisely adjusted for reliable and compatible operation. At the first sign of trouble with a telephone, the company would swap it out for a good one. If consumers connected equipment that didn't belong to the phone company, they would lose the ability to maintain and repair a key part of their product. Besides, people liked it, or at least so the phone companies argued. Technology was quickly improving. If your local exchange went from pulse dialing to touch-tone, for example, it was convenient that the phone was leased and would be changed out for a new one at the telephone company's expense 2. When Western Electric introduced new, compact designs like the Princess and Trimline, customers had the option of upgrading their bulky phone to a slick modern one, for only a modest increase in their monthly rate (the Princess phone, introduced 1959, is also a late example of a phone that required a special wiring arrangement to power the lighted dial). When a customer redecorated, they could contact the phone company and ask that their phone be changed out for one of a different color—usually at no cost at all. Up until the 1970s, when telephone leasing started to show weakness, most of these services were accomplished by sending a technician straight to the customer's home. As you can imagine, this level of service wasn't exactly cheap. The cost of leasing the phone was incorporated into your phone bill. If you wanted more phones, called extensions, you paid more—even if they were on a single line. If you wanted a fancier phone, you paid more. By the 1960s, leasing had clear downsides. Telephones were manufactured by Western Electric, a subsidiary of AT&T just like the operating companies, so any need to send a technician to service a phone was a hit to the shared bottom line. Western Electric emphasized reliability above all else, leading to phones that were fairly expensive to manufacture but could easily last 25 years in service. Bell operating companies, looking to cut costs, shifted towards a retail model in the 1970s in which customers were highly encouraged to take their phone to a PhoneCenter for exchange, rather than waiting for a technician to visit their home. The adoption of modular connectors was motivated in good part by the development of PhoneCenters. If a telephone was something that you could pick up at a store, and then take home and plug in yourself, did it really make sense to lease? Did consumers have any reason to lease phones besides Ma Bell giving them no other option? AT&T was never a stranger to antitrust action. The Department of Justice filed a suit in 1949, alleging illegal monopolization under the Sherman act. It was generally acknowledged that telephone service was a "natural monopoly," meaning that the cost of installing and maintaining the outside plant made it inevitable (and, on grounds of economic efficiency, preferable) that a single company would dominate each market. The Sherman act and the Department of Justice did not necessarily object to this form of monopoly. The problem, what Justice considered anti-competitive behavior, was when the phone companies used their natural monopoly on phone service to force customer's hands in markets that might otherwise be competitive. One of the tricky problems, even in 1949, was interconnection of equipment. A vast and increasingly global electronics industry had come up with all kinds of new ways to use communications lines, but telephone customers could only use the equipment their phone company provided, and at rates set by the phone company. A fervent argument ended in the conclusion that AT&T had valid reasons to require customers to lease telephones, but that the anti-competitive impacts needed to be mitigated. This case, the first of a series of challenges to the Bell System, ended in a consent decree that shaped the future of both AT&T and, I do not think it is unfair to say, the entire American electronics and communications industry. AT&T would continue as a monopoly telephone carrier under state regulation (the principle of "common carrier"), but it would be prohibited from entering any industries in which it was not regulated. In other words: telephone service was a regulated industry, with rates and service terms set by state public utility commissions, and the system of regulation was felt to be sufficient to temper AT&T's desire for domination. On the other hand, if AT&T entered an unregulated industry, there would be no public commission to slow them down—and they would inevitably use their foothold as a regulated monopoly to promote, perhaps even mandate, use of their unregulated service. I have so far described the settlement in abstract terms, but even at the time it had an obvious practical implication: "computers," in the modern sense, had only just been conceived. But they were rapidly advancing, and AT&T's considerable leadership in electronics, massive R&D center (Bell Laboratories), and integrated manufacturing (Western Electric) made the telephone company an obvious contender for the nation's leading manufacturer of computers. Too bad: computers were an unregulated industry, so AT&T had to keep their hands off. The consent decree forbade AT&T selling general-purpose computers, broadly limiting their involvement in the electronics industry to telephone switching equipment and government contracts. AT&T mainframes never happened; instead we got IBM. The capability was still there, though, and complex needs of the telephone kept AT&T a leader in computer technology even with zero sales. Consider, for example, UNIX: perhaps the single most influential operating system ever developed, but a product of a company that was expressly prohibited from selling computers. In an era where software was virtually always bundled with hardware sales, that put AT&T in a very odd position, and forced the odd licensing terms of UNIX that allowed it to proliferate and organically grow. The 1949 consent decree held for decades, but it was always a bit uncomfortable. By the 1970s, AT&T's key regulator, the FCC, came to feel that it no longer made sense. The computer industry was much larger than before, interconnection of computers via telephone was becoming a common practice, and it was apparent that computers could both provide a communications service and be users of a communications service. AT&T built and used computers extensively, and one could argue that a telephone on an Electronic Switching System (ESS) was akin to a terminal on a mainframe computer. The first time-sharing services, such as BBN's introduced in 1962, might use the telephone network for communications but could also offer communications themselves in the form of electronic mail. Was the telephone system a computer service? Was time sharing a communications service? These were important questions that the existing regulatory and legal framework did not comfortably address, and they were only becoming more important as both AT&T and its competitors signaled a desire to try out the other side of the fence. Moreover, the FCC was concerned that the regulatory environment was holding the industry back. AT&T's complete control over the phone system had already started to crumble, first when an appeals court overruled the FCC to allow the use of non-electrical third-party telephone accessories in Hush-A-Phone v. United States in 1956, and then again when the FCC's own Carterfone decision extended the privilege to even electrical equipment in 1968. While the Carterfone itself was a special-purpose device, the decision set a precedent that was immediately leveraged by third-party telephone manufacturers. Given the dominance that AT&T has held in this discussion so far, and that it holds in telephone history in general, "third-party telephone manufacturers" might come as a surprise. Of course there were telephones made overseas, for example by Ericsson, and some were imported to the US. But the US had its own competitive telephone industry: Automatic Electric was the Western Electric of GTE, AT&T's main competitor, and manufactured the telephones they leased. GTE looked at the possibility of selling telephones to AT&T's much larger customer base and saw green. Railroads and independent telephone companies needed equipment, and while they did buy from Western Electric, they also supported other manufacturers like ITT. Enterprising retailers started selling telephones from these companies outright (it is hard to tell who was first, but new department store chain Target was early to the game). The Bell System, in response, introduced harsh rules: customers could use third-party equipment, but only by connecting it to a device called a Protective Connecting Arrangement (PCA) leased from AT&T. The PCA was about as expensive as a telephone and installed the same way, requiring a separate PCA for each extension and preventing customers (or their chosen contractors) doing any work on the inside wiring, which remained Bell System property. This in-between state technically opened the telephone set market to competition, but in practice the rules and fees around PCAs were so onerous that few consumers were better off owning their own equipment. Pressure from telephone manufacturers and consumer groups, and no doubt some fear of another appeals court loss after Carterfone's clear precedent, the FCC promulgated new rules for third-party telephones in 1975. These are basically the same rules we follow today: the customer owns inside wiring past the network interface device (often called a demarcation point for this reason), and can do whatever they want with it, subject to a requirement that interconnected electrical equipment be certified as compliant with Bell System technical rules and registered with the FCC. This was the true beginning of the customer-owned telephone era: many customers would sign up for telephone service, buy a phone, and then simply report the FCC registration number of their own telephone to the phone company. That was all that was required to have service connected. Yet it creates a strange situation. You would have two options: you could pay the rate advertised by the phone company and receive a phone on lease, or you could buy your own phone and pay a somewhat lower rate. The latter was almost certainly a better deal, especially as the sudden creation of a retail telephone market drove prices radically lower. The former could look like a better deal, though, since the phone was "free" and its cost partially concealed in the phone bill. It could easily become even more confusing: let's say that you leased a phone from the phone company for years, and then went to check out this newfangled Target and set your eyes on a slick new ITT telephone. You buy it, take it home, and if you are lucky enough to have modularized connectors, you plug it right in (post-1975 wiring conversion kits were also readily available). Now you have a phone that you own, but you're still paying for the one that you leased, perhaps without even knowing. Hopefully you kept it: when you notice the overpayment and call the phone company to cancel the lease, they will expect you to return the phone, or otherwise pay them back for it. And thus came the first blow to telephone leasing: state regulators increasingly required telephone companies to separately itemize the cost of a telephone lease on bills. At the same time that Carterfone and its consequences shook up the rules around third-party equipment, the FCC initiated a more radical rework of telephone regulation. The computer had raised many questions, and especially the rise of time-sharing services and the nascent field of "information services" seemed to create a second, shadow communications industry that was unregulated (and thus competitive) but incredibly vulnerable to the whims of the regulated (and thus monopolized) telephone industry that provided the actual wiring. In keeping with the political winds, the FCC strongly favored market competition. It feared that AT&T had become "too big to regulate" and would use its chokehold on the nation's primary communications infrastructure to stamp out computer-based competition before it could bloom. To consider this thorny problem, the Commission had opened a broad docket called the Computer inquiry in 1966. Among the conclusions of that multi-year series of working papers and hearings was a new regulatory framework that differentiated between "communications" and "data processing" as industries. "Communications" was a natural monopoly like the phone system, and would carry on under regulation. "Data processing" was an increasingly competitive industry with lower barriers to entry, so it would remain unregulated. The FCC's largest concern, as in the 1949 Sherman act case, was what would happen when one company drove in both lanes—as AT&T still wanted to do. Such a company could probably use its regulated monopoly services to subsidize its competitive service (even if regulators tried to stop it, since accounting for what investment went where would be very difficult), unfairly blocking the efforts of competitors and driving up prices for consumers that had no other choice. On the other hand, completely prohibiting regulated common carriers from participating in competitive markets was, by this time, clearly having a negative impact on the development of computer technology. AT&T was a major center of expertise in computers that had to keep most of that expertise to itself, and innovative computer companies like Tymshare were nervous about offering communications features (and sometimes prohibited or arbitrarily limited them) for fear of straying into common carrier territory and, ironically, being forced to abandon their original unregulated services. The FCC attempted to address this conundrum through a rule of separation. One company would be allowed to participate in both regulated and unregulated markets if, and only if, the two activities were strictly separated into two different entities (one presumably a subsidiary of the other) with accounting and policy firewalls between them. In practice, the Computer inquiry was a mess. The information services industry was still in its infancy in the 1960s, so the FCC was writing rules without knowing very much at all about the companies they would apply to. The negative FCC acknowledged that there remained a clear gray area between "communications" and "data processing" (with, once again, electronic mail as the clearest example) but still wrote the rules around "pure communications" and "pure data processing" as two separate domains. The existence of a "hybrid" category was acknowledged but little discussed. One of the key problems related to the actual technical implementation of computer networks: telephone networks all used circuit-switching of analog signals and so there was, at the very least, a logical fiction that all information passed through unmodified. Computer networks, on the other hand, were adopting more sophisticated architectures that often involved rewriting, modifying, or converting messages along the way. Indeed, the lack of standardization of computer communications prior to their domination by the Internet meant that some amount of protocol conversion was practically required for widely-available services. And yet, this type of manipulation of messages appeared to be data processing, not communications. In practice, almost everything turned out to be "hybrid." This is why the Computer inquiry is now widely known as Computer I: it was almost completely replaced by the second Computer inquiry, or Computer II, in in 1976. Computer II kept the same basic principles as Computer I except that it completely redefined the two categories in terms of functionality, rather than technology. The Computer II categories are "basic services" and "enhanced services." Enhanced services were those that involved manipulation or storage of data, but the FCC made that determination from the perspective of a user rather than an engineer. If the purpose of a service, or the activity in the FCC's words, was manipulation, storage, or retrieval of data, it was an enhanced service. If not, it was a basic service, even if the technical implementation involved some degree of manipulation, storage, and retrieval. This had the effect of making the telephone network a basic service, and computer networks an enhanced service 3. The separation rule remained the same: one company could offer both basic and enhanced services, but only under terms of strict separation. To the FCC, Computer II seemed a relatively elegant solution to one of their major problems. Under the definitions adopted, basic services were limited to the actual communications network. Just about everything else would be an enhanced service, firewalled away from any benefit from the regulated monopoly. Simultaneously with Computer II, the advent of retail telephone sales (remember, despite appearances, this is actually an article about telephone leasing) triggered several lawsuits and petitions to the FCC. The general theory was the telephone companies used their monopoly status to do everything possible to steer customers towards leasing phones, even requiring at least one leased phone in some cases. The FCC recognized that this issue was not totally unrelated to the Computer inquiries: Computer II in particular had led to consideration of very similar problems around modems and the ability of basic service providers to restrict enhanced services over their network (during this period, for example, you could either lease a modem from the telephone company or buy one from IBM—they were functionally identical, but it was not always clear which option was more legally appropriate). More than one court ruled that, to settle the antitrust problem, the telephone monopoly needed to get out of the leasing business. The FCC agreed in principle and, even better, in practice: it was a simple and obvious step to sweep "provision of terminal equipment" under the same rug as "enhanced services." Telephones, like enhanced services, were a competitive industry with lower barriers to entry. Therefore, like enhanced services, the FCC ruled that a regulated telephone company could only lease terminal equipment through a strictly separated subsidiary. Finally, the two threads of computer-related antitrust action and telephone leasing converge, in the curious form of the short-lived American Bell. Immediately following the conclusion of Computer II in 1980, AT&T disclosed to the FCC that it intended to take advantage of the new rules by forming a strictly separated subsidiary just as the FCC had contemplated (this was no surprise, as AT&T had been extensively involved in the inquiries). The mechanics were tricky, as AT&T had to come up with the capital to start a completely new subsidiary, with its own offices, support functions, equipment, etc., all without the appearance of subsidizing it with funds from their regulated business. Negotiations between the FCC and AT&T over these details delayed the incorporation of the subsidiary until 1982, when it emerged under the brand name American Bell. American Bell had two different divisions, in a way that seems quite incongruous without the lengthy regulatory context I have just unloaded on you: Advanced Information Systems, a computer and information services company widely expected to rival the likes of IBM, and Consumer Products, which manufactured and sold telephones. As a result of the strict separation rules, American Bell would have to replace the telephone leasing functions of the Bell Operating Companies (which were, in 1982, still part of AT&T). The storefronts the BOCs had opened to handle phones, the PhoneCenters, were quickly rebranded from the BOC logos to American Bell. AT&T also launched an expansion campaign that saw, for example, a PhoneCenter as a department in every Sears. They even sold phones wholesale to retailers, where erstwhile Western Electric products sat alongside those from ITT, AE, and the new bevy of imported Asian products 4. Most consumers, when they signed up for telephone service, would just go to a PhoneCenter or any other store and buy a phone. In fact, starting in 1982, leasing might not even be an option: the FCC had agreed to soften the blow to AT&T's balance sheet by allowing the BOCs to continue to sell or lease the telephones they already had in inventory. It was clear that this was a temporary accommodation only, though, as the FCC ordered that the BOCs could not purchase any additional inventory of customer premises equipment, and ordered state regulators to begin the process of removing telephone leases from the tariffs. Telephone company representatives told newspapers across the country that, starting in 1982, they would still "provide" a phone if they had one—but they might not, and customers couldn't be picky about the color. Some predicted their inventory would run out during 1983, and then customers would truly be on their own. Of course, customers didn't take this as hard as the phone companies did: retail phones were quite popular, and leasing numbers had been in decline since the late 1970s. We should finally talk about prices. From New York Telephone in 1983, as an example, you could lease a 500-style rotary dial phone for $3.03 a month. Purchasing the same phone at a PhoneCenter cost $45—so if you expected to have the phone for two years, you were better off buying. And we must keep in mind that Western Electric phones, while not totally immune to cost engineering, were still built to very high standards and came with a price tag to match. A more inexpensive phone, say one imported from Asia, was available at Radio Shack for $15. AT&T representatives discouraged the use of these cheap and ostensibly lower-quality phones, but struggled to say anything negative about a phone from, say, ITT, given that they were built to the same standards and sometimes to the exact same designs. The phone was no longer part of the telephone system. It was merely a consumer device, subject to the same forces as every other. But what of the many leased telephones already in service? The FCC referred to these as "embedded" phones, and had a very hard time deciding what to do about them. Because local telephone companies were prohibited from the leasing business, and the phones had always been handled under the auspices of Western Electric anyway, all of the leased phones They could simply require the telephone companies to stop leasing and take them back, but that would leave the telephone companies with a huge financial loss as they wrote off millions of phones they were no longer allowed to sell. They could require the telephone companies to offer customers a buy-out offer, but that created most of the same problems as having the companies lease them in the first place. Who would set the price? presumably the regulator, but how? Would they come with a warranty? For the time being, the FCC settled on a temporary solution: the embedded leased telephones would be left as-is. AT&T stridently objected. They were being told three things in the same breath: that they needed to come up with the money to fund a new independent subsidiary to sell telephones, that they had to keep servicing the existing fleet of leased phones, and that in no way could money from the latter be used for the former. AT&T suggested that the FCC should instead let them offer a buy-out on all leased phones, and then use the revenue to bankroll American Bell Consumer Products. The FCC brought back the question of how to set the price, especially given that some of these leased phones were very old. Would they need to be appraised? This stalemate lasted long enough for the ground to once again shake under the feet of the telephone industry. In 1974, as Computer II was just about to begin, the Department of Justice had decided to take action for the same reasons as the FCC. The monopoly questions around the telephone market, mitigated but not totally addressed by the consent decree in the 1949 case, had become clearer and more urgent. Here is where the story of telephone deregulation falls apart, and where I introduce the character we all know best: United States v. AT&T, the second one, a Sherman act antitrust case that ran in parallel to, but almost completely independent from, Computer II. Judge Harold Greene would have to answer the same questions as the FCC, and he did not answer them the same way. The breakup of the Bell System is a fairly well known topic, so I will keep my explanation brief. The main outcome of the later United States v. AT&T, set in a 1982 settlement called the Modified Final Judgment (MFJ), was a requirement that AT&T divest itself of the local operating companies. This was a very different outcome from Computer II, but the reasoning along the way was similar: the two inquiries were just looking at different aspects of the problem. Computer II was motivated mostly by the up-and-coming world of computerized information services, so the FCC focused on AT&T's use of the telephone network to bolster its information services business. The MFJ, on the other hand, was mostly motivated by the rise of competitive long-distance carriers like Sprint and MCI. That problem caused the court to draw a different distinction: local telephone service was deemed a natural monopoly, because of the massive outside plant required. On the other hand, the development of microwave and fiber optic technology had radically reduced the cost of long-distance connections. Through products like Execunet, AT&T's competitors were already proving the viability of competitive long-distance services that interconnected with the Bell System at the local exchange. While the story of United States v. AT&T is a complex one, it goes roughly like this: the court initially favored a solution that seems more similar to that of Computer II, by ordering AT&T to separate itself from its vertically integrated but non-regulated components. That would mean separating AT&T's local and long-distance telephone operations from Western Electric and likely Bell Laboratories, probably by spin-out into a completely independent company. Ironically, this was the ultimate (and perhaps foreseeable) outcome, but nonetheless AT&T fervently opposed the loss of the division that would lead it into the computer future. Instead, AT&T got a very different outcome: if local service was the real problem, the antitrust problem could be addressed by breaking out local service instead. AT&T seems to have preferred this route, but it was no less traumatic. The MFJ set a timeline of two years to implement the judgment: On January 1, 1984, the Bell Operating Companies became independent of their former corporate parent. AT&T was prohibited from local telephone service, but in exchange, was permitted to continue its long-distance business with few compromises—besides the big one, that it would now face competition. For the parallel story of leased telephones, this was a huge wrench in the gears. Leased telephones had always fallen under the purview of Western Electric (which operated the service centers, for example), and local telephone companies were now prohibited from leasing phones anyway, so embedded leased telephones had been moved under the American Bell Consumer Products brand. But American Bell would now be not just a separate subsidiary from the telephone company, but a separate subsidiary of another company that the telephone company just paid for long distance service. Closely following state regulator decisions about separating phone lease billing, they became even more separate: starting in 1984, consumers with leased telephones would receive two completely separate bills, one from the bell operating company and one from American Bell. But there was another problem: The "Bell System" as it was known was the AT&T monopoly, and the court made sure to take it from AT&T with the rest of the monopolized service. Among the terms of the 1982 MFJ was a prohibition on AT&T using the Bell trademark and name (except in limited circumstances), a rule that the still-new American Bell directly violated. Beginning in 1984, American Bell was rebranded once again to AT&T Technologies, with AT&T Information Systems as one subsidiary and AT&T Consumer Products as another. The signs of over a thousand PhoneCenters were swapped out yet again 5. Ironically, the local operating companies, prohibited from leasing telephones since 1982, actually regained that ability post-divestiture. Since they were completely separate companies from AT&T in 1984, they were free to form their own "strictly separated" subsidiaries to offer unregulated services. You will notice the overlapping timelines: the Computer II-era prohibition on leasing took effect in 1982, the same year that the MFJ was signed. When the BOCs were telling newspapers that they didn't know how long their phones would last, they already knew that they would be permitted to resume leasing operations in 1984, they just weren't sure if they would. This did little for consumer confidence in leasing telephones. In practice, as a business decision, most of the BOCs never leased telephones again. The market was already going downhill, and they would have to try to sign up customers against the competition of both cheap retail phones and existing lease arrangements with AT&T Consumer Products. Along the way, state regulators had slowly come up to speed with the FCC's rulings on leasing. The details here are very hard to tell, in part because they seem to have been different across both jurisdictions (different state regulators took different approaches) and markets (different Bell operating companies lobbied their regulators for different approaches). Further confusing things, some states seem to have adopted an approach to embedded leased telephones before 1984, and others after. These decisions were made in very different contexts and led to different outcomes. It shook out along these lines: starting in 1982, the FCC required AT&T to keep supporting leased phones for at least 18 months. AT&T offered to continue leasing services indefinitely, which was ultimately permitted. Still, the FCC was making (halting) efforts to implement Computer II, and pushed states to disposition the embedded leased phones. Most states did so by requiring, or perhaps more accurately allowing (since it had been their preference to begin with) AT&T to offer buy-outs to existing lease customers. Most of these buy-outs had to settle by 1984 as divestiture radically complicated the servicing of leased phones—sending a technician to repair or even retrieve one now required a complicated cost-sharing arrangement between the local operating company (which employed the technicians) and AT&T, all closely scrutinized by the FCC. Quite a few customers took the buy-out offers, but many did not, and by around 1985 the buy-out programs had faded away. For those customers who had leased telephones, and did not respond to mailings about the buy-out option, they simply remained lease customers of AT&T Consumer Products which issued a separate quarterly bill. And this is where the long twilight of the leased telephone begins. I put a lot of time into writing this, and I hope that you enjoy reading it. If you can spare a few dollars, consider supporting me on ko-fi. You'll receive an occasional extra, subscribers-only post, and defray the costs of providing artisanal, hand-built world wide web directly from Albuquerque, New Mexico. The 1982 Computer II restrictions and the 1984 United States v. AT&T restrictions came in rapid succession and, it was quickly observed, seemed to contradict each other in goals. You could be either a local telephone company or a long-distance telephone company but not both... or you could be a regulated company or an unregulated company but not both. The original goal of separating monopoly telephone service from "enhanced services" had effectively happened twice, by requiring AT&T to form a separate subsidiary for unregulated services and then two years later requiring them to divest most of the regulate services that had prompted the separate subsidiary to begin with. AT&T was mad, of course, but even the FCC came to agree that their attempts to promote free market competition had probably actually undermined it by taking away AT&T's ability to meaningfully compete. In 1986, a series of comparatively minor FCC decisions rolled back some of Computer II's implications, including the strict separation rule for AT&T. Free of the regulatory requirement for the business complexity (which had led to frustrations like the famous exclusion of AT&T Technologies employees from the Bell Laboratories library), AT&T reabsorbed its separate subsidiary. AT&T Consumer Products was once again just another division of the faltering giant. AT&T's computer ambitions were ill-fated. Despite the introduction of the 3B line of UNIX-powered minicomputers, and even a line of PCs, AT&T never achieved meaningful success as a computer company. AT&T entered a broad financial decline after the breakup, and the faltering computer business wasn't helping. Still, AT&T Technologies—the division made up mostly of the former Western Electric and Bell Laboratories business units—had potential, or at least they liked to think so. In 1996, AT&T Technologies once again spun out, this time into a completely independent company called Lucent Technologies. Lucent became the home of the manufacturing and research operations, but because of the circuitous history of AT&T Consumer Products, the embedded leased telephones came along for the ride. There were, as best I can find, approximately one million telephones still under lease when Lucent became the lessor. As an accommodation for billing and to reduce consumer confusion, AT&T granted Lucent a license to continue to use the name "AT&T Consumer Products" for leasing. Lucent didn't do all that much better than AT&T had, and it was more or less stripped for parts over the following decade, leading to a 2006 acquisition by French communications technology Alcatel—creating Alcatel-Lucent, later part of Nokia. The leased phones took a different path, though. The consumer telephone business was not profitable for Lucent, and the PhoneCenters closed in 1995. In 1996, the division took on the name Lucent Consumer Products and shifted its focus to wholesale, although it continued to use AT&T branding in connection to leasing. In 2000, it all had to go. Lucent eliminated almost the entirety of its manufacturing capability, mostly as Avaya which produced networking products and business telephone systems. The consumer products division mostly went to the well-established Hong Kong manufacturer VTech, which continued Lucent's consumer products under the name Advanced American Telephones. But there was an exception: the lease contracts. In the year 2000, there were still several hundred thousand. That is where the story becomes especially difficult to follow. Lucent sold the phone leasing business to what Wikipedia calls "Consumer Phone Services," although I am now quite confident this company was properly called North Street Consumer Phone Services LLC. I do not know the meaning of "North Street," and I have found conflicting information on whether the company was based in New York, Miami, or somewhere in New Jersey. It probably moved around a bit. North Street seems to have incorporated in 1999, suggesting it may have been formed for this purpose. Further confusing things, as late as 2004 the leasing program was still "managed by" Lucent. I am unclear on what "managed" meant, but newspaper articles about phone leases in the era often feature statements from Lucent spokespeople despite the sale. At the least, Lucent was allowing North Street Consumer Phone Services to continue to use the AT&T name under license. Around 2006, perhaps in connection to Lucent's sale to Alcatel, the "managed by" relationship apparently ended. In 2008, North Street Consumer Phone Services was replaced by QLT Consumer Lease Services. I know very little about this company, I am not even sure if it is a descendant of North Street Consumer Phone Services or a result of another sale of the lease contracts. There can't be very many lease contracts left. Considering that most marketing for phone leases ended in 1982, anyone still leasing a phone today has most likely been making payments for the last 45 years. Are leased telephones a scam? Perhaps, even probably. By the mid-1990s, the FCC and Federal Trade Commission realized that an inadvertent effect of the 1980s regulatory chaos was that consumers who had dutifully paid their phone bills but not otherwise paid much attention were likely still making lease payments. That probably described most telephone customers who had started service before '82, but by the mid-'90s leased telephones were already becoming a distant memory for most Americans. How many people had a leased phone that they had forgotten about? How many people had a leased phone that they had replaced with one they bought, but never returned? In theory the separate billing rules mitigated the problem, but it was clear that not everyone read their bills closely. The fact that the Bell Operating Companies and American Bell Consumer Products had switched to billing on separate days was intended to reduce confusion by making sure the bills arrived completely separately, but especially after phone leases switched to quarterly billing (due to their small amounts) it probably made it more likely that people would think both were the phone bill and simply not notice that they were getting two different sets. In 1996, the FCC and FTC issued a press release warning consumers to check their phone bills for forgotten lease payments. An accusation was made that Lucent Consumer Products was functionally exploiting the elderly, since older people were more likely to have had the same telephone service for decades and probably less likely to critically consider a $15 quarterly lease bill. When you did the math, it was easy to find customers who had had the same leased phone for the last 20 years and paid over one thousand dollars for it. As time passed, more and more of those customers didn't even have the phone any more, but they still got the bills, and they still paid. When asked, many thought the prominently AT&T-branded lease bill was for long-distance calling (it didn't help that Lucent seems to have used some very non-specific language on the bill like "equipment fee"). In 2002, lawsuits in several states were combined into a national class action case that alleged that AT&T and its various successors had scammed vulnerable Americans out of many millions of dollars by simply continuing to bill them. While no one involved admitted fault, they did settle by creating a fund of up to $300 million to reimburse customers who filed claims that they were paying a lease for a phone they did not use. The reimbursement program ultimately paid out less than $10 million due to lack of claims, which consumer advocates quickly criticized on the grounds that people who did not realize they were paying a lease bill probably weren't following developments closely enough to find out about a class action settlement they needed to apply to. Interestingly, even the composition of the settlement fund was complex. The billing at issue had happened under multiple companies, and many of the rounds of divestiture and acquisitions had come with contractual allocations of liability. AT&T (the original parent company) and Lucent (the spinoff) ended up bearing most of it, but amusingly, National Cash Register was hit for a few million dollars because of liability assignments during the brief period that it was part of AT&T Technologies (the spinoff of Lucent included NCR, and assigned part of AT&T Technologies' liability to NCR that conveyed with the company when Lucent spun it out again). NCR basically caught a stray for a business they were never involved in. And yet this is still going—in 2004, 2005, 2008, it's easy to find newspaper articles, cable news segments, and AARP columns recounting mostly elderly people who had paid thousands of dollars in lease fees for telephones they no longer had. AT&T, Lucent, and QLT have never had much to say in their defense. In the late '90s, Lucent pointed out that phone lessees got all kinds of fringe benefits, not only the ability to exchange their phone for a different color but a "lease rewards" discount program. QLT offers the same discount program today, the same type of pharmacy discount and coupon card that you can get dozens of other ways. It's very hard to find much information on QLT, although they're clearly still alive and issuing a charming thrice-yearly newsletter called Lease News & Views, presumably as a bill insert. Well, I say still alive, but the Spring 2026 issue is late and it seems like Summer 2026 ought to come out any day now. I have a lot of basic questions about QLT. For one, what does QLT mean? Well, I figured that one out: it doesn't mean anything, it's just supposed to sound like "quality" when said out loud. I can't find this clearly stated anywhere, but my assumption is that either AT&T revoked the license agreement to the AT&T brand or QLT independently decided that it was better to stop using it—either way, in response to the press coverage and lawsuits that attributed consumer confusion to the phone company branding on bills. I also wonder how many customers they have. In 2012, QLT responded to a CBS article on yet another elderly person paying for a leased phone for 30 years by noting that they have over 300,000 customers. How many of them are still paying, 14 years further on? QLT has "11-50 employees" per LinkedIn, several of which have been with the operation since divestiture. In response to a 2019 article on elderly people still paying phone leases, QLT "Our customer research data shows that approximately three quarters of our surveyed leasing customers also have at least one purchased phone in their home." To me, this seems to undermine QLT by suggesting that many of their customers are making lease payments for no reason, but they spin it by positing that these customers demand the reliability of a leased phone as a backup option. What I can tell you is this: If you want a Western Electric 500, or really a Cortelco 2500, they're only $5.95 a month from QLT in touch-tone. Or $45 to buy outright. Contrary to the impressions of many, selective ringing was common on party lines, especially in more urban areas. These systems allowed the central office to ring only a single telephone on the line, instead of all of them, making party lines a lot more convenient to the user. It was also technically quite complex: a common scheme involved sending different A/C ringing frequencies to carefully-tuned solenoids that would only travel far enough to strike the bells when made resonant.↩ Of course, this "feature" is much undermined if you remember that telephone companies of the era usually charged more for touch-tone service. This is one of many ways that the story of leased telephones is nuanced and full of conflict.↩ At least for most things you would consider a "computer network." It's sort of difficult to draw a clear line here even today, so we can sympathize with the FCC's difficulty in the 1970s.↩ A consequence of this shift was the separation of the telephone manufacturing business from Western Electric, one of many cuts that put America's greatest manufacturer into terminal decline. As with so many other parts of this story, though, the telephones themselves lived on. Many of the original Western Electric designs are still manufactured today by Cortelco, actually a descendant of Kellog via ITT, which had purchased manufacturing licenses for WE's designs going back to the 1950s.↩ I am not confident that I am describing the corporate structure entirely correctly, because in practice AT&T went through several rounds of reorganization. AT&T Technologies is sometimes described as a subsidiary of AT&T Information Systems, for example, the opposite of how I put it. I suspect that more than one version was correct over time.↩
In 1914 the Department of the Interior, through the Bureau of Reclamation, investigated the possibilities of developing the Columbia River. Thousands of arid but potentially fertile acres needed only water to become the Imperial Valley of the Northwest. Locked in the mountain ranges were valuable ores awaiting electricity to turn them into needed metals. Two years later the State engineer of Oregon urged the development of the Bonneville site as a national-defense measure: he saw in the proposed power project a source of fertilizer in time of peace and nitrates in time of war. The dam also would completely drown out the Cascade Rapids and extend slack-water navigation some 40 miles eastward to The Dalles. The Rivers and Harbors Act of 1925 directed the Secretary of War, through the Corps of Engineers, United States Army, to prepare and submit to the Congress an estimate of the cost of surveys, examinations, and investigations of all navigable streams and their tributaries where power development appeared feasible. (Q1) It is difficult to succinctly explain why, exactly, the United States Army has spent much of its history involved in the construction of dams. It is partly an accident of history, partly the result of interagency federal politics, and entirely a product of American culture. In his book "Cadillac Desert," Marc Reisner examines the history of the American West's water control projects as a religious project, one animated less by practical needs than by a sense that domination of the West's rivers was destiny. The Bureau of Reclamation, part of the Department of the Interior, was formed for that purpose. At the time, though, the Army had already been used to survey and improve rivers for nearly 100 years. They were not content to give it up. The result was a rivalry, one with several feints and blows before the two settled into their modern areas of control. For the Bureau of Reclamation, the Hoover Dam was their signature project. For the Corps of Engineers, the battle that would go down in history was the Columbia River Project. The motivations for damming the Columbia were various. The Columbia was prone to flooding, which had caused damage and limited use of land along it. There was a great deal of land surrounding the Columbia that could be farmed, if the Columbia could be tapped for irrigation. Electricity, too, was a reason, although initially a somewhat secondary one. Perhaps the greatest reason, though, was simply economic: by the time that the major parts of the Columbia River Project were truly underway, the nation was in the throes of the Great Depression. President Franklin D. Roosevelt was already a fan of hydroelectricity. As governor of New York, he was exposed to the pioneering Niagara Falls power plant and pushed for other similar projects in that state. As President, his "New Deal" naturally incorporated hydropower as well. By 1934, he had formed a Regional Planning Commission that sketched out a series of dams along the Columbia, two of which would become the Grand Coulee and the Bonneville. These dams would produce a tremendous amount of electricity, and unlike in other similar Corps of Engineers projects to date, that power would not all be consumed by irrigation pumping. There was power to spare. To distribute that power, the Regional Planning Commission suggested an independent government agency on the model of the Panama Canal or the recently chartered Tennessee Valley Authority. As an interim measure, the loosely defined Bonneville Project coordinated the civilian side of the Corps of Engineers project until 1938, when the Bonneville Dam was complete and the Grand Coulee was much of the way there. The Bonneville Dam captures little water in its reservoir, so while it does have flood control value, electrical production is its primary purpose. The dam's two powerhouses produce up to 1.2 GW, an impressive number for the 1930s but one that pales in comparison to the Grand Coulee's eventual (1970s) full capacity of nearly 7 GW. The Columbia River dams increased the electrical capacity of the Pacific Northwest by orders of magnitude; the numbers were significant even at a nationwide scale. The bumper crop of electricity triggered a predictable controversy: what to do with government power? One camp favored public control of the resource, with the government marketing the power on some sort of equitable basis. The other favored private control, arguing that the output of the dams should be contracted entirely to private utilities like Portland General Electric (itself the scion of an important early hydroelectric project at Willamette Falls). In the New Deal political climate, the first camp won: the Columbia did not quite get a TVA, but Congress did charter the Bonneville Power Administration (BPA), the first of what would come to be known as Power Marketing Agencies. Over the following decades, the BPA became part of the Department of Energy (DoE)—uncharacteristically, for the DoE, a part of it that actually generated and sold electricity. Well, technically, the Corps of Engineers generates it, and the BPA markets and distributes it. In any case, starting in the late 1930s, the BPA was tasked with the construction of a network that could distribute power from Columbia River dams throughout the region—on an equitable, equal-rate basis often called the "postage stamp rate" that allowed rural coops to buy government-generated power at the same rate as the big city private utilities. The sudden bevy of power along the Columbia and the fair rates at which it could be obtained in great quantity led to an industrial revolution for the region, one that saw it as the seat of the American aluminum industry (with the Columbia Gorge producing something like 1/3rd of the nation's aluminum through to the 1970s) and that boosted the fate of hundreds of related industries (aerospace and, specifically, Boeing not least among them). BPA power has enduring influence today, with many towns on the Gorge (The Dalles, Boardman, Umatilla) disproportionately prominent on a map of the nation's data centers. AWS's us-west-2, for example, is a beneficiary of Columbia River dams and located near many of them—not just Bonneville, but the Dalles (1.8 GW), John Day (2.2 GW), McNary (1.1 GW), and more. In marketing this power, the BPA faced a challenge: the dams are spread across a large area, as are the customers. Industrial customers, such as the Alcoa (Aluminum Company of America) smelter that opened in 1940 at Vancouver, Washington 1 were opening in rural areas where land was readily available, and an explicit goal of the Columbia River Project had been the extension of electricity to farmers and other rural industries. The concept of long-distance power transmission had been pioneered by an 1889 transmission line, the nation's first, between Willamette Falls at Oregon City and downtown Portland. Beginning in 1938, the BPA was tasked with expanding that concept across a region that would eventually span eight states. The Master Grid BPA's first administrator, J. D. Ross, presented a plan he called the BPA Master Grid. This ring-shaped network, made up of 230 kV long-distance transmission lines, would connect the dams not only to Portland and Seattle but to Pasco, Yakima, Spokane, Ellensburg, the Willamette Valley through to California, and the Oregon Coast. By 1945, the Master Grid covered three thousand "Circuit Miles" of transmission lines. It was the first integrated regional power grid in the United States, and would come to pioneer the market-based electricity pricing and distribution, independent system operators (ISOs), and pooling and wheeling agreements that form the modern US electrical infrastructure. The entire Western Interconnection, the unified power system that serves the US and Canada from the Rocky Mountains west, can be said to have crystallized outwards from the seed of the Bonneville Dam's switch yard. Getting there required that the BPA solve formidable technical problems and develop many new technologies in power distribution. BPA transmission lines operated at higher voltages than any before them and, in the 1960s, introduced high voltage DC transmission to the Americas, connecting the Columbia system to the major demand centers of Southern California at 800 kV DC. BPA was only slightly behind the TVA on the installation of a remarkable analog computer called a Network Analyzer, in 1939, which simulated the behavior of the transmission network like a scale model. The rural nature of the BPA network put substations in remote areas, where they were minimally staffed, and the long stretches of high-voltage transmission line meant there was ample potential for damage by wind, weather, and trees, phenomena that the BPA came to better understand through research laboratories and experimental field sites. This is not an article about the history of electrical distribution, or at least it wasn't supposed to be, so here we must exercise some discipline and narrow in on a topic. Telecommunications ought to do. By 1940, as the Master Grid entered operation, its numerous substations already caused administrators a headache. Each had a small staff of technicians, but communicating with them was difficult. Coordinating changes across large areas, or quickly responding to faults, involved a flurry of telephone and radio calls. When Portland General Electric built the transmission line from Willamette Falls to Portland, they encountered the same problem, and by the 1910s had implemented a very early form of its solution: telemetry and teleoperation. Through a set of control wires strung along the transmission line, operators in Portland could see certain measurements from the Oregon City powerhouse and remotely throw switches to bring turbines on and offline in response to load. As the BPA built the Master Grid, they invested in the same technology. Around 1939, the BPA commissioned a study of communications technology that could be used along the Master Grid. There were three main contenders: commercial telephone networks (which BPA called "land telephone" to differentiate it from the other two), "carrier current telephone" technology that superimposed telephone signals onto the electrical conductors of the transmission lines themselves, and radiotelephone equipment. A working agreement was reached with Pacific Telephone & Telegraph, the Bell System company that would later become US West, to share network information and analyze the cost tradeoffs between purchasing carrier current and radio equipment and leasing telephone lines. Ultimately, the diversity of the BPA network required some of all three. Each of the BPA's substations had a building, called the control house, that contained control and monitoring equipment along with office facilities for the substation's operators. A room of each control house was dedicated to carrier equipment, devices that modulated multiple telephone circuits using frequency division multiplexing, and to a set of carrier frequencies that could be coupled onto the transmission lines to be received at the next substation. This equipment is similar to carrier equipment used in the telephone network, although specialized to power distribution applications by the choices of carrier frequency. I cannot say for certain, but it is very likely that BPA purchased their system from Lenkurt, a San Francisco-based communications equipment manufacturer that specialized in carrier current systems at the time 2. The BPA's carrier system incorporated selective calling, meaning that users interacted with telephones that looked and felt much like conventional telephones, including a dial. An operator at one substation could dial the number for another and that phone would ring. The main difference from the telephones we use today is that these carrier current systems were interphones, more similar to intercoms or party lines than single-user telephone service. If you picked up a phone on a circuit, you would hear any conversations already underway. Of course, in industrial control applications, this built-in conferencing capability was generally considered a feature, and telephone circuits were assigned to shared use by departments or operating regions. Radio was installed as well, primarily so that construction and maintenance crews in the field could get messages back to the administrative offices. Some substations, in strategic locations for coverage, had a radio site about a half mile from the substation for isolation from the powerful electromagnetic interference created by the high-voltage transformers. These radio sites were wired to remote heads located in the substation control house office, where substation operators relayed messages between mobile radios in the field and the carrier current telephone system. Bear in mind that these were still early days for mobile radios, and the HF units used by the BPA were proudly described as using only 1.5 cubic feet of space in the trunk of the vehicle, plus the microphone, speaker, and control head in the cab. Finally, while not the main purpose, it was already noted in the 1940 Annual Report that the substations could use the radio stations to substitute for the carrier current system in an emergency. Complementing all of the above, the BPA leased telephone lines between major substations, agency headquarters in Portland, and the switch yard in Vancouver that was becoming the closest thing to a "main substation" in the network's distributed, ring-shaped design. Immediately after the BPA's first Annual Report discusses the selection of communications equipment, it moves on to Protection. Here I must introduce a topic in electrical engineering that I have only a loose understanding of, even having spent the last few weeks in part on YouTube engineering tutorials. It's important that we get comfortable with the field of "protective relaying" because, as we will see, it became the most widespread application of private telecommunications networks after the railroads. Protective Relaying In your home, you are protected against certain dangerous scenarios by the over-current protection device that we Americans call a circuit breaker. The electromechanical contraptions in your service panel use a combination of methods to monitor the current that passes through them, and if they detect excessive current they open the circuit. The electrical transmission system has similar protections on a larger scale: on the distribution wires strung on poles outside of your house, for example, there are various fuses and circuit-breaker-like devices known as reclosers. High-tension transmission lines 3, like the 230 kV system built by the BPA, need similar protection for similar reasons—except that it is much more complex. Electrical terminology can be complicated on a good day, and this situation is even more complex because of the historic bifurcation between terms and practices in building electrical wiring versus electrical distribution (which are governed, for example, by two separate electrical codes) and the fact that we are talking about a system that is nearly 100 years old. Relays were a newer technology in the 1930s, as was large-scale over-current protection, so transmission engineers viewed circuit breakers as just an application of the relay and over-current protection on power distribution is still referred to as "relaying" today. Since the whole broader field of supervising transmission lines for safety and reliability is called "protection," relays that open to protect generators, lines, or loads from dangerous conditions are called "protective relays." Some of the protective relays used in transmission are very much like the circuit breakers in your home. Directional over-current relays, for example, monitor the current passing through them in one direction ("towards" the load) and open if it is excessive. Ground fault relays open when they detect, via various current transformers, that an excessive amount of power is leaking to the ground—just like the GFCI outlets or breakers installed in wet areas of homes. Some of them, though, are much trickier. The first major problem is directionality. In your home electrical wiring, there is a clear sense of where power flows "from" (the service panel) and "to" (an outlet or fixture). Wiring thus only needs over-current protection in one direction. In a wide-area transmission network, this isn't true. The Master Grid was designed to incorporate a ring for much the same reason that SONET and other communications technologies favored rings: with a ring topology, you can lose the connection between two points and still be able to serve all points by sending power the "other direction." In general, it is common that electrical transmission lines can be "fed" from both ends, and have "load" on both ends. This flexibility to reach the same places by different routes makes the grid more reliable and responsive to changes. It also makes over-current protection more challenging. Say that you have a span of transmission line, and that somewhere along it a tree falls and pushes one conductor against another. You now have a short-circuit fault at 230 kV (or more in later lines), a dramatic and dangerous condition. You also have thousands, if not hundreds of thousands, of customers that are depending on the power provided by that line. Current transformers can measure the enormous fault current, and indeed it will be detected at many points along the line. But what do you do? Ideally, protective relays should open on both sides of the fault, and as close to the fault as possible. This cuts power to the dangerous situation while minimizing the number of customers who experience an outage. It's also difficult to achieve in practice: you cannot simply open a protective relay on over-current, or every relay on the line will open at the same time. Instead, analog circuits were used to measure the impedance to the fault as a proxy for its distance. This way protective relays could be carefully tuned to open only when a fault was near them. Now, consider that a transmission line may be "tapped" and connected to load centers or generation at multiple points along its length. There may also be multiple parallel routes that current can take, with varying capacities. Both of these situations mean that it is often necessary to measure the current (to detect faults) at locations remote from the actual protective relays, which are large devices that needed to be located at substations. Further, the complications of parallel routes and possible ground faults on long lines required the use of a "differential protective relay" or "balanced current relay" that took a much higher level approach to the problem. In a differential system, you measure the current at every connection point to a given protection zone and sum them. The sum should be zero: the same amount of current goes into the line as comes out. If it's not, something has gone wrong somewhere, likely current that is escaping to ground or traveling on a parallel route not engineered for such abuse. But the points where you measure current may be many miles apart, and you still need to make real-time comparisons between them. In 1940, the BPA was already planning the installation of "pilot relaying" over their carrier current telephone system. In an engineering context, a "pilot" is usually something small that controls something big. A pilot operated relief valve (PORV), for example, is an arrangement where dangerous pressure levels (of a liquid or gas) cause a small pilot valve to open which then triggers a pressure differential in a much bigger valve that causes it to open. There is a similar idea in protective relaying: a pilot-operated relay is a relay that disconnects a very big wire under the control of a smaller wire carrying a pilot signal. The simplest scheme works like this: a device, like a current transformer, monitors a safety parameter and produces a tone whenever it is acceptable. Elsewhere, a protective relay monitors that tone. If the tone ever goes away, the relay opens. The tone might go away because the pilot device detected an unsafe condition, but it might also go away because the line carrying the pilot signal was damaged, making it a fail-safe design. This is good for safety, but bad for reliability, and requires that the communications infrastructure used for protective relaying be very reliable. Unfortunately, it was not: the carrier current systems installed by BPA through the 1940s were typical of the technology used in the industry at the time, but it was ill-equipped for the scale of the Master Grid. In part to alleviate concern of federal competition wiping out private utilities, and to improve general efficiency, the BPA formed the Northwest Power Pool in 1941. Initially made of about a dozen electrical utilities in the Pacific Northwest, the Power Pool formalized a set of arrangements by which utilities would buy and sell power among themselves, carried over the BPA's transmission network for a small "wheeling" fee. The Northwestern Power Pool would eventually become the Western Power Pool and a template for much of the nation's electrical industry. It significantly increased reliability and efficiency in the region by allowing utilities to sell their overproduction to utilities with high demand, and vice versa. It also brought the carrier communications system to its knees: a practical requirement of the power pool arrangement with wheeling over the BPA's transmission lines was that those transmission lines had to carry protective relaying pilot signals for all of the utilities involved. A severe fault in a utility taking power off of a BPA line, for example, might require opening protective relays at a power plant operated by a different utility somewhere else on that line. New techniques for communications-aided protective relaying were under development, things like "permissive underreaching transfer trip" and "permissive overreaching transfer trip" that are difficult to explain briefly. These required that protective equipment at each substation have information about the state of protective equipment at all of the other substations, in order to make decisions that are not just based on local conditions but are globally optimal for the health of the whole line. For example, avoiding a dangerous "islanding" condition on a transmission line might require opening relays at three or more locations along the line, but opening any relays beyond those required would simply cause unnecessary outages. Further, reliability is key and some types of faults on high-voltage lines are self-clearing (this is sort of a euphemism for the fact that a tree branch bridging sufficiently high-tension conductors will often be knocked off of them, if not vaporized entirely, by the resulting arc). Some protective relays are "reclosing" (and are often referred to in brief as "reclosers"), meaning that they will automatically reset (close) after a brief wait period. Some of the time, the fault will be gone and service is restored. Reclosing is potentially dangerous, though, and especially in transmission networks reclosing is only desirable in certain circumstances. Further pilot signals can be used to enable and disable reclosers based on the nature of the fault or the other locations at which it was detected, so that for example a fault that has taken a power plant offline does not lead to a recloser elsewhere "flapping" and stressing the remaining production capacity. By the end of the 1940s, the BPA's carrier telephone system was overstressed to the point of failure. Power Pool utilities had connected their own carrier equipment, butting frequency bands so closely against each other that they began to interfere and degrade the quality of connections that could already be difficult to make out over hundreds of miles of high voltage infrastructure. The fact that a fault on a transmission line would generally prevent carrier current communications over that line working was a feature for simple fail-safe pilot relaying systems, but as protective relaying technology advanced it became the source of cascading failures. For example, by the early 1950s the BPA had found that lightning strikes on major transmission lines would cause enough interference to the carrier current system that protective relays all along the line would lose their pilot signals, open as fail-safe, and escalate what should have been a localized problem into a systemic one. Besides, many sections of the network had by that time become so congested by various carrier current circuits that there was simply no room in the spectrum for more—and so no capability to install protective equipment for new service lines. Microwave Meanwhile, the Second World War had had a profound impact in two ways: first, wartime demand for weapons, aircraft, and aluminum had driven Pacific Northwest industry to new heights. In 1949, power consumption in the Pacific Northwest had more than tripled, and population increased by 45%, compared to 1939. The Corps of Engineers built more dams, so the BPA's network carried more power. Engineers at the Administration's laboratory developed the techniques to operate transmission lines at record-setting voltages, 300 kV and beyond—making protection systems all the more critical. Second, wartime radar research had produced technological byproducts including high-bandwidth microwave transmitters and receivers. So, the electrical industry adopted microwave communications technology alongside the telephone industry, and for much the same reasons. The high bandwidth of microwave links allowed for multiplexing huge numbers of channels, and the lack of wireline infrastructure (especially shared with the actual transmission lines) promised increased reliability. In my previous article on passive repeaters, I noted that they were especially popular with electrical utilities. Now, we learn why: utilities throughout the country built microwave communication systems that carried a fraction of the traffic of the Bell System, but often carried it to more remote locations and with higher reliability requirements. The BPA's situation was different from that of more traditional utilities. Most private electrical utilities had started in a city and grown outwards, with a denser service network and fewer long-distance lines. They had mostly built private networks for communications, stringing their own open-wire telephone lines between stations. The BPA, with its far-flung network and huge distances, couldn't afford that kind of investment in stringing wires. In some ways, this proved an advantage: they could start from a clean slate. This network would be architected from the beginning for efficiency and performance, rather than to accommodate existing infrastructure. While the BPA had initially built substations for a larger staff, the control technology was rapidly evolving and some of the more intensive activity BPA had expected at substations proved unnecessary 4. Despite the generously sized control houses, by 1950 most substations had only a single operator on staff, who would often be "out in the field" tending to the transmission lines. This created a problem if some sort of sudden problem required reconfiguring the network to restore service—a system operator might be left ringing a substation phone with no one there to answer. That year, three substations had been equipped with "supervisory control" technology. This new system combined telemetering and teleoperation, so that a system operator in Portland could monitor voltage and current measurements at the substation and remotely operate the switchgear. The benefits of supervisory control were obvious, but the limitations of the carrier telephone system meant that those three substations were as far as the system could reach. Based on its promising experience with supervisory control of those three stations, and the clear need to continue expanding an already-stressed communications system, the BPA in 1949 committed to the construction of a completely new, completely modern control system for the Northwest Power Pool. I put a lot of time into writing this, and I hope that you enjoy reading it. If you can spare a few dollars, consider supporting me on ko-fi. You'll receive an occasional extra, subscribers-only post, and defray the costs of providing artisanal, hand-built world wide web directly from Albuquerque, New Mexico. The BPA's substation in Vancouver, already one of the largest, had a combination of ample space and proximity to Portland that made it a convenient location for support facilities. Construction yards, maintenance shops, and research laboratories had all been added onto the facility. The 1949 project launched with a symbolic gesture: the site was renamed, from simply the North Vancouver Substation to the J. D. Ross Complex in honor of the BPA's first administrator. A new building at the Ross Complex, the Control Center, became the nerve center of the system and the Rome to which all microwave routes led. Keeping with our communications theme, one of the main features of what was then called the Ross Control Center was a "three position turret" (yes, a turret!) by which operators could call any line on the microwave, carrier current, or leased line telephone networks. The plan was to obsolete the turret, though. In 1950, the BPA awarded a half-million-dollar contract to the Philco corporation (originally Philadelphia Battery and later part of Ford, then GTE, then Philips, amusingly providing another expansion of the name) for its new microwave network. Philco had done extensive military work on microwave radar during the war, and was at the time one of the leaders in microwave technology. Philco's expertise would be needed, because the microwave network ordered by the BPA would be the largest electrical utility communications network in the world. While more difficult to conclusively state, I think it is likely that it was either the second largest microwave network of any kind after AT&T's, or the third largest after those of AT&T and the Santa Fe Railroad (both of which were also Philco customers). At this point, the BPA's transmission network had extended to the Hungry Horse Dam in northwestern Montana, adding customers along the way. There were some 14,000 circuit miles of transmission lines and 400 substations in the system, and Philco's contract specified that they would build out the initial operating network in just 360 days. Work got underway: BPA signed the contract in February of 1950, in September testing and demonstrations were conducted, and in October the BPA officially activated the first leg: a 200 mile route from the Ross Complex to Snohomish, Washington. Snohomish This first route, built at a cost just under a million dollars, used repeaters at Mt. Rainier, Chehalis, Olympia, Squak Mountain. The longest single jump was Olympia to Squak Mountain, about 55 miles, an unusually long distance for microwave facilitated by Squak Mountain's prominence and a 150' tower at Olympia. With multiplexing equipment, this route carried 23 channels from the control center to the Puget Sound area. This first microwave link was quickly put to work for one of the most interesting new applications of utility telecommunications: fault locating. When a fault occurred on a long transmission line, the BPA's first step was to search the whole line for the problem. Many lines were in difficult terrain, so a helicopter or airplane was used to speed up the process. The faults were sometimes minor and not easy to see from the air (say, a broken insulator), so the survey aircraft would take photos for processing and analysis on the ground. This process was expensive and, moreover, it was time consuming. BPA engineers realized that sudden open circuits or shorts in transmission lines created electrical signals that propagated back through the line and could be observed on test equipment—so you could presumably locate a fault by calculating its time of flight to the substations at each end. The problem was obtaining a measurement of when the fault signal arrived at two different locations, in precise synchronization. Requiring high speed and, more importantly, consistent latency, this was exactly the kind of problem that microwave lines were well suited for. ITT 5 designed the system to BPA specifications, including devices that detected fault waves and reported them over a microwave channel, and a machine that compared the timing of the received reports and calculated a likely fault position (in miles) relative to each substation. FTL seems to have estimated that the system was accurate to 600', BPA to 1,000'. The Ross-Snohomish route carried other important traffic as well: as part of its inaugural celebration, Washington State Representative Henry M. Jackson used the new internal telephone at Snohomish to call Ross over the microwave link, congratulating BPA's administrator and chief engineer on the accomplishment. Although I am unclear on the exact criteria being used, newspaper reports consistently identify the link as the "first of its kind in the world" 6. 1950 was still early for microwave technology; AT&T's first commercial microwave link had only gone into service in 1948, and that was experimental. The transcontinental telephone "skyway" wouldn't be completed until a year later. As a result, microwave technology was unfamiliar to the public, and the appearance of parabolic antennas on BPA facilities—and at repeater stations on mountaintops and out in the woods—was conspicuous. One reporter called them the BPA's flying saucers, another explained the repeaters in terms of "pitcher" and "catcher." Every paper ran photos. Over the next two years, Philco completed a second microwave route up the Columbia Gorge connecting each of the dams through to Spokane, and a third that linked Beverly, on the route to Spokane, to Snohomish—forming a ring like the original Master Grid that provided redundancy and direct protection channels for transmission lines on that route. The 1952 microwave network included fourteen primary terminals and 21 repeaters; it connected the dispatch telephone system at Ross with dams and substations along the microwave routes as well as seven mountaintop HF stations to reach field crews. As was typical at the time, the microwave equipment at each repeater and terminal ran directly from battery power. The batteries were charged (normally floated) from two different power supplies, one from the utility and the other from an on-site propane generator with a two week fuel supply. BPA initially used prefabricated aluminum shelters for the equipment at repeaters, although many were originally built or later rebuilt as cinderblock. This was, in part, due to the weather: mountaintop repeater stations in Washington coped with severe winters, and BPA went through several rounds of modifications to their building and tower designs. Towers were reinforced against ice accumulation, and repeater stations in particularly snow-prone parts of the Gorge and the Snoqualmie Pass were made two story. These buildings had a "balcony" entrance on the second floor with a ladder to reach it, allowing access even when the first floor was completely buried in snow. Towers were rated for 100 MPH winds, and some for thousands of pounds of ice. BPA designed ice shields for the antennas, and a heated cover to keep ice from covering the reflector surface. BPA also took advantage of passive repeaters to relocate microwave sites to more accessible locations. At Rockdale, on the edge of the Cascade Mountains, a repeater was installed just next to the highway. Its antennas aimed more upwards than sideways, at reflectors at the top of the mountain ridge. Microflect passive repeaters were manufactured in Oregon, and the BPA was one of Microflect's first large customers, contributing design changes for mountainous service. By 1955, the BPA microwave network had reached Hungry Horse Dam in Montana and connected all of the major substations of the system. When a decision was made, in 1955, to relocate the power dispatch office from the Ross Complex to the new Portland headquarters, the capacity and expandability of the microwave system made the process much easier. The BPA's new HQ building looked more like a telephone exchange than a federal building: one of its most prominent features was a rooftop microwave tower. The 1957 annual report inventoried 61 microwave radio sites covering 1,300 miles of route, by then using a mix of Philco, ITT, and Motorola equipment. BPA's network had, by this time, achieved many feats of rural service. One of the most impressive was service to the southern Oregon Coast: this area was very remote and faced terrible weather throughout the winter. BPA's 115 kV South Coast line was the only electrical service into the region, and it was regularly disabled by ice storms and flooding. Because of the area's mountainous terrain, line crews working in the area were only infrequently able to reach a substation near Eugene on their mobile radios, and that was their only way of talking to dispatchers to coordinate repairs. In an effort to improve service reliability, the South Coast became the pilot for a new model of field communications. Relatively closed spaced microwave repeaters, each with a VHF radio, would bridge radio channels onto the microwave telephone system. To stand up to the Oregon Coast, each of these stations used an aluminum enclosure with heating, fire suppression, and a generator. Some of the enclosures were cabled to the ground, to better hold them down against the wind. During the 1960s, the value of the microwave system had been proven but it was once again facing the limits of its capacity. Microwave technology had improved tremendously in the post-war decade and BPA's 23 and 24-channel multiplexers were obsolete. A $1.6 million contract was let to Lenkurt to upgrade much of the microwave network to the modern Lenkurt 76C microwave radio and 46A or 34A multiplexers, capable of up to 600 channels at around 8 GHz (the previous system varied from site to site but operated at around 2 GHz). This was equipment designed and built under GTE ownership, and was also typical of the long-distance microwave links in the GTE telephone network. As part of the project, Lenkurt also installed VHF radio relays throughout the system. At some sites, Lenkurt installed dual-polarized antennas to allow simultaneous operation of the old and new multiplex systems and, later, increased capacity. Further contracts expanded the microwave network to Bellingham, Washington and to Corps of Engineers projects on the Snake River. In 1966, BPA dispatchers in Portland could monitor production at 21 dams, receive alarms from 250 substations, and completely remote control fifteen of the network's key switchyards. When the BPA built the Pacific Intertie, a combination of two 500 kv AC circuits and one 800 kV DC circuit stretching 900 miles from the Columbia River to near Los Angeles, it was the largest transmission line project in US history. Under construction from 1965 to 1970, the line's standard bearer came in microwave form. Collins Radio built microwave routes parallel to the Intertie transmission lines, a $2 million project with 22 new radio stations on the 600-channel Lenkurt system. Most of the work was finished by 1967, a prerequisite for some construction the transmission line itself, since the microwave channels were used for testing and commissioning. The Computer Age Microwave was not the only arena in which the mid-century had brought new technology. The BPA was not new to computers; various forms of electromechanical computation had been part of their engineering works since the 1930s. By the 1960s, though, projects like SAGE (a military air defense system) and SABRE (a commercial airline reservation system) demonstrated the potential of combining computers with telecommunications for real-time control. The BPA had a telecommunications network, and it had a real-time control system... and they decided to add a computer. In 1966, the BPA announced that its control center would once again move, from the Portland headquarters building back to the Ross Complex, where a new building would be designed from the ground up for centralized, computerized control of the power system. Named the Dittmer Control Center after a previous BPA power manager, the low-slung building had a prominent concrete microwave tower and was partially sunk below ground level for hardening against attack (it was, after all, the Cold War). Much of the Dittmer center's lower-level floorspace was devoted to equipment rooms, which would soon be the home of the computer system that BPA contracted to Rockwell. Among other equipment, Rockwell installed a PDP-10 computer that received, analyzed, and logged telemetering data from throughout the system for display to operators. From its commissioning in the early 1970s, BPA continued to enhance the computer center into an integrated power dispatching system that supported operators in monitoring the network, predicting future demand, switching transmission lines, and ordering changes in production at power plants throughout the Pacific Northwest. The ultimate manifestation of the PDP-10's software was called RODS, the Real-Time Operations, Dispatch, and Scheduling System. RODS was one of the first systems of its kind, initially contracted to Rockwell in part due to their experience with control computers for the Apollo program. Features of RODS included a time-synchronized data acquisition system to support differential current monitoring (ensuring that the computer compared current measurements taken at precisely the same time), which used an atomic time standard at the Dittmer Control Center to distribute high-precision timecode through the microwave network. As RODS matured, it established the 15-minute scheduling loop used by dispatchers to configure power plants and transmission lines for a constantly changing electrical load. DEC themselves, in an internal sales meeting whose minutes fortunately made it into the historic record, noted the Dittmer PDP-10 as a critical early sale in their efforts to break into the utility industry. Despite the technical firsts of the Dittmer Control Center and RODS, this chapter of BPA history is best known for its incidental brush with the Pacific Northwest's most famous chapter of computer history: as temporary employees of TRW, the aerospace contractor brought on for RODS software development, Bill Gates and Paul Allen both spent time at Dittmer. They were still in high school, it would be years before they moved to Albuquerque to found Microsoft. Many parts of the BPA's microwave network are still in use, although improving radio technology and the adoption of fiber optics (including fiber embedded into the neutral conductors of transmission lines) have allowed for elimination of some repeaters. As microwave technology continues to fall obsolete (in comparison to fiber, commercial terrestrial radio networks, and satellite), many of the remaining sites are likely to be demolished. Some of them—sites like Chehalis, Squak Mountain, and Rainier—have been in service for 76 years. The BPA microwave network is not unusual. It was the first of its type, but the transmission and power marketing concepts pioneered by the BPA are now used nationwide. Wherever power goes, protective relaying follows, and the telecommunications networks that shadow the electrical grid from coast to coast. Few enterprises outside of the communications industry itself have ever operated communications networks on the scale of electrical utilities. They find themselves in the company of railroads and oil pipelines, ventures that must span deserts, climb mountains, and cross rivers. Unlike many of those operations, though, the BPA is a federal agency, subject to the National Environmental Policy Act and National Historic Preservation Act. BPA's extensive Section 106 NRHP compliance program has produced extensive historic documentation of its transmission lines, communications infrastructure, and research facilities. While sometimes onerous, these federal policies have created the best-documented historic electrical utility communications system in the nation. An inventory of historic microwave stations still under BPA ownership turned up 28 in Washington, 22 in Oregon, one in Idaho, and two in Montana, and many are eligible for nomination to the Historic Register. From an aluminum shed at the Ross Complex to a squat concrete building and utility pole at Mary's Peak, they are monuments to American history—a singular, almost megalomaniacal vision of the Columbia River tamed; the rise of Pacific Northwest industry under wartime demands; a technical approach to environmental preservation and economic equality. Infrastructure for the public benefit: a great American achievement. We might, one day, find the will to do it again. This Vancouver is just across the Columbia from Portland, and should not be confused with the big one in British Columbia. Having grown up in Portland, I will probably not disciplined enough to put Washington after it each time, so just remember that we aren't talking about Canada. Yet.↩ Lenkurt would later merge with GTE, becoming something like the Western Electric to AT&T's principal competitor.↩ This is another example of the difficulty of electrical terminology. "High tension" in this context is a result of the historic use of "tension" (and enduring use in some languages) to refer to what we now usually call "voltage" or "potential." Specifically in electrical distribution, "high tension" is older language but still in use to refer to 100 kV and higher transmission lines.↩ BPA was navigating many firsts in the construction of the Master Grid, and the high-voltage transformers used to step up and down from the 230 kV lines were new technology. They were filled with a heavy oil for cooling and electrical insulation, and the BPA had at first expected that they would need to drain the oil and open the transformers on a regular basis. Early BPA substations featured a network of rails and low-slung metal carts that would be used to pick the transformers up off of their pads and move them to a specialized building called an "untanking tower," where they could be drained of oil and the covers lifted off by a gantry crane. In practice, transformers were virtually never opened, and the untanking towers and rails became vestigial.↩ This company changed names from Federal Telecommunication Laboratories to Federal Telephone and Radio and was then acquired by International Telephone and Telegraph (ITT), all during the time period covered by this article. I will refer to it simply as ITT for readability.↩ You know that I am a little bit obsessive about this kind of superlative, and since it seems to have originated with Chief Engineer Sol Schultz, I tend to think he had a good definition in mind. My best guess is that it was the first microwave link in the world (at least that they were aware of) to carry telemetering and teleoperation signals over such a long distance.↩
Through decades of consolidation, reorganization, and divestiture, AT&T left a famously complicated corporate history. One of the greatest enterprises in American history, arguably the greatest enterprise, AT&T has often rivaled the federal government in the size of its budget and workforce. One of the reasons, as we well know today, was monopolization and its close relative vertical integration. AT&T was the telephone system, or at least aspired to be, and for decades the meaning of "Universal Service" was that the service was designed, built, and operated by AT&T—universally. While AT&T's tangled origins are fertile ground for the historian, they also obscure many of the early stories of telephone history. Much of the work of the early independent telephone industry has been lost in the voluminous achievements of AT&T. Even very basic facts become obscure. For example, who invented the telephone? Well, we all know the answer: Alexander Graham Bell. We have mostly forgotten that, at the time, this was a hotly contested question. One of the most prominent alternate claimants to the title was a man named Elisha Gray, today immortalized as the "Gray" in electrical distributor "Graybar," but better known in his time as an inventor of telegraph and telephone equipment. Gray contracted prototyping of some of his inventions to an upstart manufacturer and de facto Western Union spinoff, founded by Enos M. Barton (the "bar" in Graybar) and George Shawk. Impressed by Barton's operation, and at odds with Shawk on its future direction, Gray put together the money to buy out Shawk and became half-owner of the company that would reincorporate, in 1872, as Western Electric (WE). It is ironic, of course, that a man who might fairly be called one of the top enemies of Bell helped to found the company that would become one of the most important parts of the Bell System. It's not a coincidence: Gray's involvement in WE included plans to manufacture his own telephone design, for which he had filed a provisional patent. Like many of the late 20th century's telephone inventors, Gray's greatest challenge in commercializing his invention was not technical but legal. His provisional patent on a telephone transmitter, substantially similar to the one invented by Bell and possibly older, led Western Union to take take part ownership in WE to advance their own plan to compete with AT&T as a telephone company. That set off a protracted legal battle, whose end result included the termination of Gray's patent claim and Western Union's abandonment of telephony. AT&T was not the kind of company to leave things to chance, though, and least of all when it came to competition. In 1881, AT&T acquired WE. From that point on, WE was no longer a competitor, it was a core part of the Bell System: the manufacturing and supply arm of AT&T. A few decades later, WE had become the primary maker, and often sole supplier, of every piece of equipment used in the Bell telephone network. Everything from telephones to cables to central office switches were made at WE's various works. What few components WE didn't make, it sourced, through an expansive purchasing arm that negotiated orders on the behalf of the entire AT&T family. In 1925, WE had become so dedicated to the Bell System that its remaining non-telephone business, mostly local distributorships, was spun out into a separate company (Graybar). From that point forward, the Bell System was not only WE's sole shareholder but its sole customer as well. As part of the 1925 reorganization, WE's research and development arm became a new organization, jointly owned by WE and its patron AT&T: Bell Laboratories. This new organization consolidated AT&T's expanding basic science efforts with WE's manufacturing expertise, setting the stage for decades of equipment that was conceived, designed, manufactured, and used within the AT&T empire. Bell operating companies got everything they needed, from tools to the telephones themselves, via requisition to their local WE supply warehouse. Such were the needs of the growing telephone system that WE started manufacturing telephone cable in 1925, quickly became the world's largest manufacturer of wire and cable, and likely held that title continuously until the turn-down of much of its manufacturing capacity in the late 1970s. AT&T was the nation's largest private employer for much of this period, and WE accounted for about 1/6th of that workforce. Until the Carterfone decision and, for the most part, until the divestiture of AT&T in 1984, telephones were born at Western Electric. All of the phones leased by Bell Operating Companies, ranging from the classic WE 500 to explosion-proof phones for coal mine applications, were made at WE facilities like the Indianapolis Works. There were nearly 10,000 employees there, making 35,000 phones a day—and Indianapolis was not remarkable. It was just one plant of many. AT&T built its empire through innovation, but also through domination. The acquisition of WE was one of its biggest steps towards complete integration, a goal that WE would pursue through the middle of the 20th century. For example, when the Morton Salt empire indirectly led to the Teletype Corporation and the development of commercial teletypewriter networks, they bought it. Teletype was a WE company from 1930 to its end. Telephones were not only born at WE; they went there to die. During the 1920s, telephones were expensive instruments that required regular maintenance. Besides the commercial advantage, which would become more significant in later years, this aspect of telephones encouraged a full service lease model. Customers leased their phones from their telephone company in part because (prior to Carterfone) they had to, in part because the arrangement made the telephone company responsible for the phone's care. At the same time, Bell Operating Companies carefully controlled their expenses by reusing equipment as much as possible. So, when a customer signed up for telephone service, they were issued a phone. When they canceled service, or had trouble with the phone, or quite simply wanted a phone that was a different color (or an upgrade to a Trimline or a Princess), the telephone company took the phone back. It would join hundreds of other phones on a trip to the nearest WE Service Center. The same truck would likely make the return journey loaded with phones ready for customers: the service center refurbished them. Millions of telephones come back to Bell System service centers each year, many with their housings, handsets, and other molded plastic components bruised and battered. Some can be put back in shape by buffing, solvent polishing, or painting. Others wind up in piles. (Q1) The scale of WE's phone refurbishing program was remarkable. Huge workshops of WE employees inspected, cleaned, repaired, and tested each phone. Refurbished units visited a test desk for a thorough electrical checkout before they received the service center's stamp or label that they had been remanufactured for use. In the Mountain States and west, WE service centers were found in Denver, Phoenix, Los Angeles, San Francisco, and Seattle. By the 1960s, Portland and Salt Lake City had joined. Of course, despite the best efforts of all of WE's horses and all of WE's men, not all telephones can be put back together again. Much of the equipment returned to WE could not be satisfactorily refurbished. Besides, it wasn't just phones that telephone companies returned to WE, it was everything. Upgrading a crossbar exchange to an ESS? The ESS came from Western Electric, and the crossbar exchange went back to them. WE supplied telephone poles to the operating companies, and at the end of their life it took them back. Western Electric has manufactured millions of telephones, millions of miles of wire and cable, tens of thousands of manual and dial switching units, and the thousand-and-one other kinds of apparatus that go into the plant of the Bell System. It has purchased from thousands of other manufacturers the great variety of supplies that are used by the Bell System. (Q2) The majority of that output—at least what wasn't still in service during WE's decline—went back to WE for disposal, as well. That included the wire: from simple drop wires to heavy multipair cables, old wiring was routinely cut into sections and shipped back to WE—specifically, to the WE Salvage Works on Staten Island. In 1883, as the component elements of a telephone industry were swirling around New York and accreting by gravity into the shape of the Bell System, Benjamin Lowenstein arrived from Germany. Settling in New York City, he took up a business that he must have learned back in Europe: metal refining. Within a year of his arrival, the B. Lowenstein & Bro. company was smelting scrap metal from a shop in Manhattan (the brother, Moses Lowenstein, was a constant second fiddle in Benjamin's ventures until he sold his share and retired to go his own way in 1900). Lowenstein had a way of maneuvering his metals businesses into the path of technological progress. His first such success was lead, or rather an alloy of lead with tin and antimony. This specialized alloy was eutectic, meaning that it melted and solidified at a single, well-defined temperature, and a low one at that. These were exactly the requirements for feeding the newly-invented Merganthaler hot-metal typesetting machines, later known as Linotype—much as the metal came to be known as Linotype alloy. By 1890, B. Lowenstein & Bro. was the major supplier of feedstock for hot-metal typesetting in the US. Linotype metal brought in a lot of money, enough that Lowenstein looked to expand. New York City was already dense enough that it was hard to find a site for a large industrial operation. Instead, Lowenstein found land in the southern end of Staten Island, near the town of Tottenville. There, he founded the Tottenville Copper Company, Tottenville Copper grew quickly, well positioned for the new demand for copper brought about by the electrical revolution. During the 1900s, Lowenstein rebranded B. Lowenstein & Bro. as the Nassau Smelting and Refining Company and moved to consolidate it with Tottenville Copper. In 1914, as the US entered the First World War, Nassau Smelting and Refining was noted as one of four companies responsible for 90% of the country's copper exports. It's said that war is good for business, and it certainly was for Lowenstein. The war brought a pressing need for copper, and the Tottenville plant was pressed into military service. This part of the company's history is, unfortunately, well-documented due to a scandal all too familiar to our present times: on March 27th, 1918, police officers seconded to Naval Intelligence raided the Tottenville copper plant and arrested sixteen laborers—Germans and Austrians, many of them crew members of German merchant ships who had become trapped in the United States by wartime turmoil. In finding productive employment, a way to support themselves, they had made the critical mistake of taking jobs that supported the war effort. The intelligence officers spent most of the day at the plant in Tottenville, which employs about 500 workers. Practically all of them were questioned, but most of them were found to be either native Americans or naturalized citizens. The sixteen who were unable to show either that they had registered or had obtained zone permits were placed under arrest at the plant. (Q3) Because of its role in supplying copper components of artillery shells, the Tottenville smelter was considered a munitions plant, and was thus off limits to any enemy aliens who did not possess a specific movement permit issued under police supervision. A few of the sixteen arrested had not registered as enemy aliens, but most had registered and had the wrong work permit. The newspapers do not suggest that these sixteen had committed any offense other than a lapse in paperwork, but they were nonetheless "turned over to Federal Authorities for internment." The authorities were also, reportedly, investigating an allegation that a manager at the plant had made "seditious remarks." These included criticism of the Liberty Bonds used to fund the war effort, and a suggestion that American forces in France would not prevail. Fortunately for the plant manager, he was able to produce paperwork proving his citizenship, and officers deemed the evidence of his "seditious" opinions to be insufficient for charges. If the war brought good fortune to Lowenstein, peace took it away. The end of steady military contracts complicated the finances of Nassau Smelting and Refining, requiring a retooling of the plant towards other products in the difficult context of the post-war recession. A major fire at the plant, in 1923, racked up a huge repair bill and cut into production. There were personal problems, too: in the mid-1920s, Lowenstein divorced, starting a bitter multi-year legal battle over custody of his children—a question ultimately resolved in his favor, but not without the involvement of the appellate courts and an axe-wielding deputy sheriff. The financial condition of his company continued to decline as the country slid into the Great Depression. Lowenstein must have been looking for an exit. By this time, Nassau Smelting and Refining was consolidated into a 45-acre property on Staten Island straddling Mill Creek, just south of State Route 440 and between Arthur Kill Road and Page Avenue. There were two primary operations: the "red metals" complex which processed copper, and the "white metals" complex for lead and tin. Both ran primarily on reclaimed scrap, refining it into ingots ready for reuse. Conveniently, these were two categories of metals in great demand to the Bell System: copper, for wiring, and lead and tin, extensively used to coat cables and splices and as key ingredients in solder. The post-war period brought not only general economic decline, but also an increase in metals prices, stressing AT&T's supply chain. Western Electric turned its mind towards consolidation. Given the Nassau plant's proximity to WE's headquarters in New York City and plants throughout the region, WE must have already done quite a bit of business with Lowenstein's company. In 1931, they bought it. Likely because Nassau Smelting and Refining was already a well-established business, WE left it to operate as an independent subsidiary, alongside the Teletype Corporation (which was acquired at nearly the same time) and, later, the Sandia Corporation in Albuquerque—the three independent subsidiaries of Western Electric through the 1980s. By the 1940s, Nassau Smelting and Refining was processing thousands of tons of scrap each year. Most of this was disused telephone equipment and cable that had been broken down at other WE plants and then delivered to Staten Island for smelting. WE reported that about 3/5 of the nonferrous metal content of this scrap was returned to WE as high quality metal stock for manufacturing use. In the mid-1950s, Nassau Smelting and Refining provided about 16% of the Bell System's copper supply and 20% of its lead. During the Second World War, when copper became exceptionally scarce, the Nassau works provided a critical in-house metal recycling capability that not only supplied the military as a contractor but also allowed AT&T a reliable source of metal for its wartime telephone projects. During several such periods of disruption in the metal market, Nassau Smelting and Refining provided most of AT&T's supply. For AT&T, vertically integrating metal smelting thus had two key advantages: cost savings from owning its own supplier, and a degree of protection from the whims of the market. "Nassau Smelting and Refining Company is a further extension of Western Electric's constant effort to do its Bell System job better and more economically" (Q2). A 1946 newspaper article, announcing an open house at the plant with tours open to the public, gives a sense of the scale of the operation. Each day, an average of five railroad cars of scrap arrived at the plant. Stripping machines separated lead sheathing from telephone cables "like a child would peel a banana" before the remains were fed into the furnaces—enough oil to heat a house for a year kept each furnace at 2,000 degrees for one day. Lead was transferred from furnaces to kettles, 30 tons at a time, and poured into ingot molds. Much of the lead then went to the plant's on-site solder mill. Each of the presses there formed enough rosin-core solder to reach "from Tottenville to St. George [at the far end of Staten Island] and back," each day. During the mid-century, WE expanded the Nassau company's remit beyond just nonferrous metals. Nassau Smelting and Refining became WE's general broker of scrap and secondary materials, brokering cinders from telephone company power plants as a soil amendment, and iridium recovered from telephone relay contact points as a precious metal. As a subsidiary, rather than a mere component of Western Electric, Nassau was somewhat more independent of AT&T than the rest of WE. The metal operation wasn't restricted to the telephone industry, and both purchased scrap on the open market and sold metals to any buyer. Nassau was one of two bidders, for example, on an enormous post-war Naval copper supply contract. Metal refining is not a clean operation. In 1947, Nassau faced charges of "smoke annoyance" and "noxious conditions" that might have led to a criminal prosecution, were the case not forestalled the company's agreement to install a $350,000 bag house to filter furnace emissions. By this time, Nassau was called one of the nation's largest "above-ground mines." Metal recycling, while economical nearly from the beginning of metallurgy, received a surge of interest in a post-war nation that keenly remembered the shortages of the previous decade. Unlike our modern association between recycling and environmental protection, in the 1940s it was styled mostly as a new form of extractive industry: "The Nassau Smelting and Refining Company... mines the vast Bell network for valuable metals.... in 1948,.. Nassau reclaimed more copper than was produced in six of the nation's 14 major-producing states. And of 22 major lead-producing states, only four produced more than was reclaimed by Nassau." The president of Nassau at the time, William Scheuch, described "American homes, factories, and cities" as the "mines upon which modern industry depends." He noted as well that, by that time, rubber, plastics, rope, and "scores of other materials" had fallen under Nassau's responsibility. "So thrifty are Nassau's experts that even floor sweepings are cooked by incandescent heat to reclaim the last drop of metal content" (Q4). Later that year, Nassau hosted a delegation of European metallurgists discussing techniques for recycling aluminum, then a major focus of Nassau's research department. //beg// In 1956, the Staten Island Advance ran a puff piece on Nassau's production (162 million pounds of scrap converted into 138 million pounds of saleable metal in 1955) immediately next to the headline "Smog Growing Problem." In 1958, the same newspaper carried an editorial by Nassau's new president, Arthur Fegel, under the headline "Nassau Battles Air Pollution." In some ways, the piece is a celebration of the company's 75th anniversary, but the headline betrays an underlying political struggle. "Just as good families are good neighbors,.. an industrial concern like Nassau devotes much attention to being a good citizen in its own neighborhood" (Q5). This was the preface to an announcement, at the end of the article, that Nassau was about to build a new furnace that would burn the insulation off of wire. The exhaust, he promised, would be "clean as a whistle." In the early 1960s, Nassau underwent a wave of expansion, including new office and warehouse facilities on the north side of the property. The plant had become one of the major employers of Staten Island, with a payroll including "12 fathers and their 14 sons." The Staten Island Railroad operated a train station for the plant's employees, called Nassau, and expanded it in the early 1970s. The plant was one of their largest freight customers as well, with an industrial siding just off of the station. In 1971, the Deputy Commissioner of the New York Department of Air Resources paid a visit, or rather a "sniff," in part to confirm that Nassau had complied with an order to stop burning lead away in furnaces. "In terms of other smelters in New York City, it is fairly clean; but that doesn't mean it is in compliance with all the standards" (Q6). The 1970s were, for the Bell System, the beginning of the end. An upstart subsidiary of the Southern Pacific Railroad waged an intense legal battle against AT&T's monopoly, won the right to compete on long-distance service, and renamed itself to Sprint before merging with principal AT&T competitor GTE. Corning demonstrated a new communications technology based on light trapped in glass fibers; by 1980 the manufacturing technique for these new cables had become refined enough that they presented a lower-cost option compared to AT&T's coaxial and microwave network (Bell Laboratory's alternate plan for the future of communications, long-distance microwave waveguide, was stillborn). At the same time, the American environmental movement hit its stride. The Clean Air Act, the Clean Water Act, the establishment of the Environmental Protection Agency; each of these steps imposed new requirements on an aging metal plant that had long been considered a major polluter. Wastewater from metal separation processes, a slurry of heavy metals and petrochemicals and God only knows what else, was redirected from Mill Creek to the site's first water treatment plant in 1973. That plant separated the contaminants into a dried sludge, which for years was simply piled up under the approach ramp of the Page Avenue bridge. Later, this sludge was processed to extract precious metals, but that modest revenue didn't make up for the capital investment. It wasn't a good time to be an expensive part of Western Electric: facing declining revenues, labor unrest, and the weakening state of its sole benefactor AT&T, WE entered the late 1970s as a company in decline. WE started backing away from its integrated salvage operation: sometime in the late 1970s, the remaining metal recycling operations at Nassau were contracted to a company called C&D Recycling, which assumed management of part of the Nassau plant. Copper smelting operations at Nassau ended in 1981, beginning a multi-year decommissioning and demolition process for the Red Metals complex. The main copper processing building was razed by 1985, but in the mean time, the entire Bell System had met a worse fate: divestiture. Antitrust lawsuits against AT&T, brewing throughout the 1970s, leading to a 1982 settlement agreement that required the dismantling of the Bell System over the following years. On the first day of 1984, the Bell Operating Companies became independent corporations, over 2/3rds of AT&T gone overnight. Western Electric went along with them: one of the key findings of the antitrust case was that AT&T had built and maintained a monopoly through vertical integration so extensive that it deprived their competition of equipment and supplies. AT&T was able to partially mitigate the unwinding of their vertical integration: by agreeing to completely divest the operating companies, it won terms on which Western Electric could remain an AT&T company, under a new name. AT&T had agreed to end use of the trademarks most associated with their nationwide monopoly, including not just "Bell System" itself but the Western Electric name and logo. WE was reorganized, with some divisions meeting other fates, but most of the company became AT&T Technologies. As part of the settlement, AT&T had gotten relief on various restrictions imposed on them by previous antitrust cases, including a key prohibition on Western Electric marketing general-purpose computers. While there was some initial optimism that that small victory would allow the new AT&T Technologies to take on the likes of IBM, it didn't work out that way. A series of poor decisions, several fundamental missteps, and no doubt some plain bad luck had Western Electric, and its close partner Bell Laboratories, on the downhill. Post-divestiture, Nassau Smelting and Refining took on a new identity: AT&T Nassau Metals. As part of the settlement agreement, Bell Operating Companies could no longer be required to purchase equipment and supplies from WE. The Bell telephone market was suddenly open to competitive manufacturers such as the Canadian company Northern Electric (later Nortel), itself a fragment of Western Electric that had broken away when a 1950s antitrust case led to a settlement agreement that WE would divest its foreign operations. On top of the Carterfone decision and divestiture making consumer telephones a competitive market, WE found its business seriously undermined. The 1980s saw closure of many of WE's largest plants, Nassau not excepted. The White Metals complex at Nassau continued longer, shutting down in 1991 with demolition starting in 1996. The last manufacturing operations at AT&T Nassau Metals, by then limited only to electroplating, ended in 2001. Nassau had actually outlived its parent, WE, which was renamed to Lucent Technologies and made independent in 1996. By that time, AT&T Nassau Metals had been renamed to simply the Nassau Metals Corporation, and existed primarily to manage the closure and remediation of the Tottenville site. All of the original, 1930s-era manufacturing buildings were found south of Mill Creek and had been demolished by 2000. The newer 1960s era buildings, an office building and a warehouse north of Mill Creek, were leased to a developer who found various commercial tenants. Most of the site remained abandoned in its post-demolition state for the next twenty years, though: a formidable environmental recovery was required before reuse. The Nassau Metals site was investigated by the EPA for inclusion on the National Priorities List as a superfund site during the 1990s, but was ultimately not nominated. The main reason was simple: the Potentially Responsible Party was the Nassau Metals Corporation, a subsidiary of AT&T, a company that was still very much alive. With some cajoling by environmental authorities, AT&T agreed to avoid the federal CERCLA process by entering the New York Department of Environmental Conservation's Voluntary Cleanup Program (VCP). Many environmental authorities offer something like the VCP: one of the reasons that contaminated industrial sites, often called brownfields, tend to stay that way is the uncertainty and liability involved in environmental contamination. Real estate developers are understandably hesitant to commit to a property that may require an enormously expensive remediation in the future. The VCP provides an alternative: when a company participates in the VCP, they develop a comprehensive plan for site remediation—at their expense—that is mutually agreed with and supervised by the Department of Environmental Conservation. In exchange for the land owner completing the approved remediation plan, the Department of Environmental Conservation makes a binding agreement not to impose further requirements in the future. In other words, it's a legal arrangement to settle on what level of cleanup is "good enough," so that future owners of the property are protected from expensive surprises. For remediation purposes, the Nassau site was divided into three Operable Units. The largest, OU1, includes the primary industrial area where both the Red Metals and White Metals facilities had been located. From a 1991 Site Investigation Report to the 2011 Final Engineering Report, remediation contractors identified extensive contamination of the soil throughout the site, and downstream on Mill Creek, with lead and other heavy metals. It was found, for example, that a substantial portion of OU1 was built on artificial infill of a former wetland. The fill material, in line with standard practice in the 1930s, is best described as "assorted trash." Everything from construction debris to domestic garbage to old telephones had been piled up and compacted, and then factory buildings put on top of it all. Every time there was a storm, Mill Creek surged against its south bank and washed some of it away, downstream, into Arthur Kill. Particulate contamination from these materials could be identified out into the ocean. During the 2000s, contractors dredged Mill Creek and parts of Arthur Kill, temporarily dammed Mill Creek to facilitate further excavation, stabilized the banks of Mill Creek by geotechnical methods, developed new wetland areas on other parts of Arthur Kill at a 3:1 ratio to the area permanently disturbed by the site, replanted vegetation, and cleaned out storm sewers that had been contaminated by runoff from Nassau. These were all secondary efforts, though, in comparison to the largest remediation activity. The majority of the site, on both sides of Mill Creek, were covered with an engineered barrier of soil, stone, geosynthetic clay liner, and asphalt, intended to ensure that the contaminated soil will remain on site. It is simply too large of a volume to practically be removed, and even if it was, the degree of the contamination is so severe that it would be difficult to find a facility licensed to dispose of it. We tend to think of nuclear waste in the most severe terms, a contaminant that we can never be rid of, pretending that this is somehow an unusual outcome. The reality is much worse: permanent on-site entombment is one of the most common fates of industrial contamination, and there are tens of thousands of sites across the United States in which it is forbidden to dig. Nassau is one of those. Nassau Metals no longer owns the land, it has all been sold to private developers. On the north side, where the office building and warehouse remain (now a restaurant and a complex of fitness facilities respectively), the parking lot and foundation slabs of two new fast food restaurants make up the permanent barrier. Whenever any paving or concrete work is required, a qualified environmental engineer must be on-site to supervise the work and ensure that the integrity of the barrier is maintained. On the south side of the property, which was unpaved, the clay barrier must remain in place under the new construction or a new barrier must be approved by the Department of Environmental Conservation. No digging can be done without arranging for disposal of the disturbed soil at a licensed facility. Covenants on the property require that these institutional controls be observed in perpetuity: the owner of the property shall prohibit the Property from ever being used for purposes other than for Commercial or Industrial use without the express written waiver of such prohibition from the Department Because of the particular standards to which the site was remediated, it is considered suitable only for limited occupation within the context of the institutional controls. Healthcare facilities, elder care homes, child care facilities, agriculture or gardening of any kind (even at hobby scale), and residential construction are all perpetually prohibited. The groundwater cannot be used without construction of a treatment facility approved by the state. The barrier system containing the contaminated soil must be inspected and recertified by engineers on a regular basis. This, then, is the story of Western Electric—it calls for many things and many activities, blended together, to create the miracle of telephonic communications. It takes people and equipment, inventiveness and technical skill. It takes experience, and, above all, the fundamental desire to be of service to the public and the nation. (Q2) For some 75 years, AT&T was the telephone company, and Western Electric made the telephones. It destroyed them, as well: every phone inspected, tested, and if found wanting, condemned to the furnaces of Nassau. Telephone wires stretched across the nation by 1915; and by 1984 that very same wire had likely been cut, stripped, melted, and refined on Staten Island; quite possibly, it had even been returned to Western Electric, just a few molecules in each of the 35,000 telephones rolling off the line of the Indianapolis Works. Likely also, a few molecules of the soil permanently interred under Premiere Pickleball of Staten Island, a few molecules on the banks of Mill Creek, a few molecules of the ocean. Metal is highly recyclable; it's sometimes estimated that the majority of the copper ever mined is still in use today. Much of that metal passed through Nassau at some point, there might be a bit of a Western Electric 500 in your smartphone today. There certainly is under the YoYo Chicken: a tombstone for the telephone era.
The submarine is a surprisingly ancient technology—at least in its early, primitive forms. The idea is quite simple, that a well-enough-sealed boat ought to be able to submerge and resurface. It's the practicalities that make the whole thing difficult. It is generally considered that the US Civil War was the first use of submarines in combat; these were primitive machines with very limited operating endurance and navigational capabilities. These submarines were more like torpedoes: you pointed them in the right direction and hoped they went straight. The First World War benefited from tremendous advances in submarine technology. A number of experimental designs during the 19th century had built practical experience, especially in Germany, and the Germans apt use of the first modern "U-boats" had a significant military impact. British and US designs made similar advances, and submarine warfare was born. The chief advantage of the submarine is its ability to submerge and maneuver while hidden. WW1 submarines were diesel-electric or gasoline, so their submerged endurance was limited by the power supply stored onboard. Still, these submarines could operate underwater longer than any before, long enough to establish the submarine sneak attack as a key part of naval warfare. It was also long enough to expose one of the trickiest challenges of underwater defense: communications. Water, especially seawater, is dense and conductive. This is very bad for radio wave propagation: by the first world war it had already been discovered that seawater effectively blocked radio communications. HF radio, the main form of communications at sea (and, in the WW1 era, in general) might only penetrate seawater for a few meters in real-world That meant that submarines had to surface in order to communicate, another de facto limitation on their endurance while submerged. The Navy had been evaluating electronic communication aboard ships since 1887, when they demonstrated a simple and "radio-adjacent" technology using conduction of waves through the seawater itself. This scheme never worked very well, but was saved by the development of modern wireless transmitters late in that century. Marconi himself demonstrated radio to the Navy in 1899, and in 1903 the Navy bought its first radio sets. Tactical reports from conflicts elsewhere on the globe, like the Russo-Japanese war, reinforced the idea that radio would serve a key role in naval combat. When C-class submarines Stingray and Tarpon, and D-class Narwhal, launched in 1909, they were immediately given duties including the evaluation of radio equipment. In a classic tale of early technology, the evaluations went poorly. Tarpon ran into mechanical trouble that prevented its planned trial voyage, so the radio set was never installed. Stingray received a cutting-edge quenched spark gap transmitter and receiver set, but the transmitter turned out to be DOA. Still, Stingray was able to demonstrate its receivers, copying a message from the nearby Boston Navy Yard while surfaced. Narwhal's mission was more ambitious: underwater communication. A test was made on the same direct conduction technology, using brass plates suspended below the ships, demonstrated in 1887. It similarly failed to perform. A repetition of those experiments, done the next year and with improved equipment aboard Narwhal's sister ship Grayling, produced better results. The system provided reliable communications with the "antenna" plates submerged as much as two feet below the water... and no deeper. Frustrated Navy engineers concluded that it was possible to get radio signals through seawater, but not practical. Through the First World War and following decades, engineers focused on ways to get the antenna to the surface without having to bring up the entire submarine. Around 1915, the Navy adopted a floating antenna buoy that a submarine could "winch up" towards the surface on a cable. Putting anything at the surface was less than ideal, but the anti-submarine technology of the era the small antenna buoy was still very difficult to detect at long range. Submarines just had to make sure it was retracted back to the submarine's deck before attempting anything where stealth was key. These floating buoys were not reliable during WW1, but they could work, and the technology has continued to develop to this day. Still, there were other ideas about underwater communications. The most important development came from two engineers of the National Bureau of Standards (NBS), or at least, that's what a court ruled after a patent dispute between two sets of supposed inventors. John Willoughby was employed by the NBS, which would later be known as the National Institute of Standards and Technology (NIST), to investigate new types of radio receivers. In the summer of 1917, he was arranging various types of coil antennas at a receiver test site on the Chesapeake Bay when he accidentally dropped one of the antennas into the water. Strangely enough, the radio receiver connected to the antenna continued to provide good reception even as it sank into the bay. NBS management was not especially enthusiastic about this accident, but Willoughby was. He knew that the Navy was investigating means of communication with submarines, and that seawater seemed to block radio waves, all of which suggested that he might have stumbled on an important discovery. Lacking NBS support for further research, he took the idea to gifted radio inventor and NBS colleague Percival Lowell 1. In a fine tradition of innovation, the two took to Willoughby's basement for a series of experiments that illuminated the underlying phenomenon: Willoughby had been experimenting with unusually low radio frequencies, below 30kHz where wavelengths become too long for most antenna designs and coils become the best receivers. These lower frequencies were significantly less affected by water than higher, more conventional frequencies, and Willoughby and Lowell built a successful prototype for what they called "long-wave" radio between two coils. The NBS remained surprisingly uninterested, but Willoughby had a contact in the Navy who felt quite differently. In 1918, Willoughby and Percival joined LtCmd H. P. LeClair, then running the Navy's experimental radio program, at submarine base New London (so named after New London, Connecticut, across the Thames River (Connecticut) from the base). They made a hurried and rough installation of their equipment on submarine D-1 and a surface support vessel. Not everything went perfectly, but they proved the idea: Willoughby, Lowell, and LeClair listened attentively to their radio sets as the D-1 submerged and continued to come in loud and clear. Within a matter of a few years, the Navy accepted long-wave radio as a standard technology for submarine communications. The various jury-rigged installations at New London showed that coil antennas could easily be integrated into a submarine's rigging, and even better, the Navy had found that long-wave radio propagated over the surface as well as under it. Long-wave communications would serve the entire Navy, and a transmitter site was already underway. Long-range communications had become a top concern throughout the military in the early 20th century, and a series of meetings between US military branches and between the US and UK lead to a scheme of "High Power" radio stations. The first of these, NAA, went up near Arlington, Virginia in 1913. Over the following years, similar stations were built in the US and Europe, facilitating the first direct communications between the two and the first transatlantic voice communication in 1915. The construction and operation of these stations also lead to considerable advances in radio technology generally, especially powerful transmitters. NAA was one of the early stations to be equipped with Poulson arc transmitters, almost two times more efficient than earlier designs and well-suited to long-wave operation. Around the same time as the Willoughby/Lowell experiments, Navy engineer LtCdr Albert Taylor found similar results with long-wire antennas shallowly under the water. These experiments offered another design for concealed submarine antennas (which could be stored onboard in reels and let out with floats that kept them just under the surface), and also demonstrated that long-wire antennas could be buried for transmit use. Five years later, in 1918, construction was underway on NSS—a new high power station in Annapolis, Maryland. Unlike those before, NSS was specifically designed for long-wave signals. Two 500 kW Poulson arc transmitters driving an antenna 400' square and suspended between four 500' tall towers 2. The long-wave capability at Annapolis was not originally intended for submarine communications, but it quickly fell into that niche. During the 1920s, NSS became a key station for submarine command and control of submarines. NSS itself remained in service until 1996, and it was joined by VLF transmitters at Cutler, Maine; Jim Creek, Washington; Lualualei, Hawaii; LaMoure, North Dakota; and Aguada, Puerto Rico; besides sites in Europe operated with allied militaries. Each of these stations is its own interesting story. The 1,205' VLF antenna tower at Aguada remains the tallest structure in the Caribbean. LaMoure was originally built in the 1960s for a long-wave navigation system called Omega, and was repurposed for submarine C2. Jim Creek went into service in 1952 as the most powerful radio transmitter in the world, using a fascinating antenna that draped from one ridge to another across a mountain valley. Let's focus, though, on Cutler. VLF Transmitter Cutler is the spiritual descendant of the Navy's original High Power program, symbolized in its inheritance of the callsign NAA. Cutler was part of a Cold War expansion of the VLF system, going into service in 1961. Many other VLF sites received upgrades around the same period, but Cutler was a completely new design. Cutler's two antennas, for redundancy, are each supported by 13 towers. The center tower is about 1,000' tall, and the other 12 make up two concentric rings of about 900' height. The complete antenna is over 6,000' across, or nearly 2 km. Between the tower tops stretches a web of tight horizontal wires, each 1" copper, that form an enormous capacitor. The capacitor's other plate is the ground, electrically reinforced by many miles of buried groundplane wires. The radiating elements are vertical wires, hanging down from the upper horizontal mesh. In Maine's harsh winters, the wires accumulate ice until their weight threatens the towers. Each antenna is alternately switched into a deicing mode in which it is turned into a 3 MW heating element... just for long enough that the ice melts off. Outer towers are supplemented by short, stout structures that allow the 220 ton tension weights to move up and down on tracks. "Helix houses" at the feedlines of the two antennas sheltered enormous inductors; walls lined with copper served as insulation and to ground the occasional arcs that made the helix houses and transmitter rooms unsafe to enter during operation. The two antennas were driven by a transmitter complex designed and built by Continental Electronics. The 11 MW on-site power plant supplied the AN/FRT-31 transmitter, custom to this installation, consisting of four parallel units of eight ML-6697 transmitter tubes. The transmitter's control room rivaled that of many power plants, as did its output: the military required at least 1 MW, Continental rated the transmitter for just over 2 MW, and it still operates today at powers as high as 1.8 MW. There are several reasons that the "most powerful radio station in the world" is now difficult to pin down, but NAA Cutler is certainly in the running. That is the end of the VLF story, in that it hasn't ended. The original 1910s and 1920s VLF sites are mostly decommissioned, but only because they have been replaced by more modern equipment, sometimes on the same site. Cutler, Jim Creek, Lualualei, and Aguada are all still in service. LaMoure may be in some kind of mothballs state but is definitely capable of operating, it has recently seen some use for propagation experiments. VLF is still a key technology in the Navy's C2 and nuclear reprisal plans. So, we can say that VLF has achieved one of the great feats of technical history: it has outlived its replacement. First, though, we should spend some more time on the theory. In modern parlance, "VLF" describes the band from 3-30 kHz. Most Naval VLF stations operate at around 24 kHz, but some stations support lower frequencies as well and other stations have operated as high as 40 kHz (still considered VLF by the Navy for practical purposes). These wavelengths pass through seawater well because of a basic trait of radio waves that was becoming experimentally apparent in the 1920s and received a thorough theoretical underpinning later. Radio waves attenuate as they pass through materials in proportion to the number of wavelengths in the material. In other words, as a rule of thumb, a radio wave with a 12 m wavelength (~24 MHz) will experience about 1,000 times the attenuation of a signal with a 12,000 m wavelength (~24 kHz). This is true of water or air or any other material, but the attenuation rate in saltwater is so high that the effect is extremely apparent in the sea. This brings us to our first property of VLF: because of the long wavelength of VLF signals, they pass through water with relatively little attenuation. Still, there is a limit. The details of submarine communications are mostly classified, but from open materials it is realistic for a submarine to receive a VLF transmission up to about 100' below the surface. This depth is already far better than what's achievable with HF, and far superior to deploying a floating buoy. Still, intuition dictates that even lower frequencies could be even better, and the Navy did not go without noticing that possibility. Second, we should revisit the antennas. One of the key insights of early experimenters like Willoughby and Lowell is that coil antennas create an asymmetry in radio communications. Antennas become more efficient as they reach the wavelength of the signal, or multiples thereof. That means that lower frequencies, and longer wavelengths, require larger antennas—thus the 6,000' wide cobwebs at Cutler and more than one regional height record set by VLF antenna towers. On the other hand, coil antennas, or more specifically magnetic loop antennas, can be very small compared to the wavelength they receive. Unfortunately, the physics trick that makes magnetic loop antennas work so well (magnetic coupling) is basically one-way. Magnetic loop antennas are relatively inefficient but usable for reception; they're completely useless for transmitting. VLF is effectively a one-way technology, and some of the traffic carried by the Navy's VLF network consists simply of orders for submarines to surface or deploy a buoy for more advanced communications. Finally, we should observe that the capacity of a radio channel to carry information is proportional to its bandwidth, and that the use of lower frequencies and longer wavelengths makes the usable bandwidth of given radio equipment much smaller (we can intuitively understand this by noting that larger antennas are, simply due to scaling, more precisely tuned to their intended wavelength than smaller antennas). VLF transmitters are only capable of very narrow transmissions, functionally limiting them to continuous wave (Morse code) operation or simple digital schemes at very low speeds. We probably all realize, as did the Navy, that pushing to yet lower frequencies and longer wavelengths would produce better penetration of the seawater, at the cost of basically every other property becoming worse: larger antennas, less efficient transmitters and receivers, narrower bandwidths. The possibility of going even further—from Very Low Frequency to Extremely* Low Frequency—was just a solution in wait of a problem. The military had a lot of those, and the Cold War was one huge problem. The idea of a nuclear-powered submarine is almost as old as the nuclear program, and a collaboration between the Navy, the Atomic Energy Commission, and famed admiral Hyman Rickover lead to the 1951 launch of nuclear-powered submarine Nautilus. The next decade gave the Electric Boat Company new meaning, as nuclear propulsion displaced diesel in the US submarine fleet and fundamentally changed the strategy of submarine warfare. Nuclear submarines, unlike those using diesel-electric or gasoline propulsion, can be set up to remain submerged almost indefinitely. The reactor does not require air, and provides plentiful power for life support equipment that mitigates the fresh air requirement for everything else. This created a generational change: by some definitions, all pre-nuclear submarines were merely submersibles, ships designed to submerge only temporarily. The nuclear submarine was a new kind of creature, one that not only visited the depths but could live there. Add in the development of submarine-launched ballistic missiles (SLBMs), which enabled a submarine to direct nuclear weapons at targets on shore with shorter travel time than any other means of delivery. Every submarine became a portable missile silo, one that could not only hide but actively evade detection. Their ideal mission was to lurk, undetected, for extended periods of time. Of course, this new potential for submarines further stressed communications infrastructure. A nuclear submarine might spend weeks submerged in water that is ostensibly controlled by another nation, making stealth critical. Such a submarine doesn't want to remain close to the surface, which makes detection by all means easier, and also doesn't want to deploy floating buoys or antennas that are easily detected by modern radar. On the other hand, for it to have any value as a nuclear deterrent, the Navy needs some way to deliver a launch order without having to wait for the next duty rotation. The military spent the early Cold War developing a dozen different systems for survivable delivery of nuclear war orders, things like the High Frequency Global Communications System (HFGCS) and TACAMO that solidified the concept of short, simple, one-way Emergency Action Messages to direct nuclear forces. The Navy needed a way to deliver EAMs to submerged submarines, and that provided the impetus to investigate lower frequencies than ever before. The lowest generally recognized radio band, ITU band 1, is Extremely Low Frequency or ELF. There is some historic complexity around the definition of ELF, and the modern range of 3-30 Hz does not exactly match the way the Navy has used the term. In general, though, we can consider ELF to refer to the very bottom end of the usable radio spectrum. The extreme lower edge could be said to fall around 7 Hz, where the wavelength of a radio signal matches the circumference of the earth. This leads not only to complex interference problems due to constructive and destructive interactions, it also produces a very high noise floor as global lightning storms trigger perturbances that resonate on and on. Balancing the desire for the lowest possible frequency against the practical challenges of ELF, the Navy settled on the range of 72-80 Hz as the most promising window for submerged submarines. The history of Naval ELF development is not simple to research. First, the Navy conducted much of its ELF research in secrecy, a result of typical Cold War paranoia and an awareness that the Soviet Union was pursuing a similar idea. Second, much like GWEN, ELF became the locus of fervent public opposition grounded in general anti-war sentiment, demands for nuclear disarmament, and the safety of electromagnetic radiation. Many of the readily available sources on ELF history today come from "electrosensitive" advocates or newsletters, a still-strong movement founded on the mostly unscientific premise that EM fields pose a danger to human health. While mostly factually accurate, these sources require some caution since they tend to mix their historical narrative with observations about EM and RF safety that are now broadly considered pseudoscientific. Still, this frustration leads to two positive outcomes: first, it helps to place the development of ELF radio within a broader cultural context of uncertainty about both war and new technology, emphasizes the unknowns involved in the push to ELF, and makes the ELF stations an interesting focus of the anti-war movement. Second, it leads to a personal connection that likely contributed a great deal to my interest in military communications. There are rumors, even scant evidence, that the Navy initiated classified experiments with ELF in the late 1950s. There is very little that I can say about this first part of ELF history, besides that the experiments must have had promising results. In 1968, the Navy adopted a full-scale ELF communications plan called Project Sanguine. The original Sanguine proposal was truly an artifact of the Cold War, remarkable in its scale and doomed to obsolescence before construction even began. The Sanguine ELF station would actually be over one hundred independent transmitting stations, operating in synchronization as a form of hardening. The loss of a subset of those stations, say due to nuclear attack, would only reduce power rather than disabling the entire facility. Of course, to maximize survivability of the individual transmitters, they would all be installed in hardened underground bunkers, each with a set of 2" antenna cables extending 40 or more miles in four directions. The overall layout of stations and antennas created a grid with antenna elements spaced every 3-5 miles, covering a total of some 6,500 square miles. That's larger than Connecticut, but smaller than New Jersey. Perhaps more apropos, it is about 1/10 the area of Wisconsin, the state where the Navy planned to install the system 3. This underscores a fundamental problem with ELF: antenna sizes. At 80 Hz, the wavelength of a radio wave is 2,300 miles, or about one quarter of the diameter of the earth. Take, for example, a half-wave dipole antenna—a very common antenna design in most bands. For ELF, the antenna would need to stretch from Albuquerque to Portland. Clearly, then, any practical ELF antenna needs to be "electrically short" or, in the relative sense of RF engineering, a small antenna. Small antennas are inefficient, and the smaller they get the less efficient they are. Complicating things further, practical ELF propagation over the surface of the earth requires vertically polarized waves. That means a vertically polarized antenna, and there is simply no way to construct a tower that is hundreds of miles tall. Sanguine proposed, and most later ELF projects adopted, a style of antenna called a ground dipole. A ground dipole is basically two different electrodes, or grounding rods, driven into the ground a great distance apart and connected by feedlines. The power from the transmitter goes through the electrodes into the ground, where it flows as ground current from one end of the antenna to the other. The ground dipole thus forms a loop, with the feedlines as one side and the ground as the other. The actual RF emission results from the magnetic field between the feedlines above ground and the current flowing beneath, somewhat like the VLF antenna at Annapolis if half of it was buried beneath the ground. Ground dipoles, like a typical dipole antenna, are directional. They emit RF most strongly in the same axis as the antenna, with strong lobes extending away from the ends of the two feedlines. By installing a second antenna on a perpendicular axis and shifting the phase between the two, you can create a steerable antenna with its strongest lobes pointed in the direction of your choice. That's why the Sanguine proposal, and most ELF transmitters after, have used two ground dipoles in a crosswise layout. I put a lot of time into writing this, and I hope that you enjoy reading it. If you can spare a few dollars, consider supporting me on ko-fi. You'll receive an occasional extra, subscribers-only post, and defray the costs of providing artisanal, hand-built world wide web directly from Albuquerque, New Mexico. During the 1960s, the Navy performed a series of poorly documented experiments to establish the feasibility of Sanguine. These included a Wyoming power transmission line that was temporarily disconnected for use as an ad-hoc 40 mile antenna, and a power-line-like 110 mile antenna built by RCA in North Carolina and Virginia. The details of this RCA experiment, part of Project Pangloss, have become obscure. It appears that RCA was contracted to evaluate a number of different communications options for the Navy, including the use of other planets in the solar system as passive repeaters, but most of them didn't work out. The VLF transmitter for the project was located at Ararat, North Carolina, and the two two electrodes at Algoma, Virginia and Lake Lookout, North Carolina. A 1963 test successfully got a message from the test antenna to a submarine submerged 150' deep and 520 miles from the transmitter. Like most of the military's ambitious plans in the late 1960s, Project Sanguine didn't happen. The reasons are complex, or at least several. Sanguine was unpopular with the public: besides specific concerns around safety, the late '60s saw a rising anti-nuclear campaign and a general lack of interest in enormously expensive military undertakings. The fact that Sanguine needed a massive amount of land meant that it was pretty much impossible to site it somewhere that wouldn't generate local opposition, so like ICBM fields, Sanguine was kicked around like a football. Originally planned for Wisconsin, it later shifted to Texas, and Texas didn't like it that much either (although by that point the antenna field had been downsized to just 1,600 to 3,200 square miles). And, of course, the technology was struggling to keep up with the threat landscape. The hardened design of Sanguine relied mostly on the idea that the Soviet Union couldn't possibly nuke most of the transmitters distributed over 6,500 square miles, a reassurance that the development of multiple independent reentry vehicles (MIRVs) seriously undermined. As public opposition formed, a health and safety review commissioned by the Navy resulted in a noncommittal report that did little to reassure the public (and lawmakers) that the plan was safe. Last of all, but certainly not least, the budget projections for Sanguine were formidable, and Congress did not have the appetite for the spending. Sanguine made it far enough that, during 1968, the Navy and RCA built a scaled down transmitter and antenna in the Chequamegon National Forest of Wisconsin. This came to be known as the Wisconsin Test Facility, and it was used as a transmitter for a series of jamming tests in the late '60s and early '70s. During this period, the Navy also considered the use of a BPA transmission line from The Dalles, Oregon to Los Angeles as an ELF transmitter—the plan being to actually modulate messages onto the 60 Hz AC power carried by the line, which was incidentally radiated due to the line's largely straight 850 mile span. This plan was called PISCES, and it is unclear if it ever went anywhere, although an interesting rumor holds that it was operational for a short period and used as the "jammer" transmitter for jamming susceptibility testing of the Wisconsin transmitter. The results of these tests were mostly positive, but that wasn't enough to save an unpopular plan. Sanguine faded away, perhaps replaced by a scaled-down system called Super Hard ELF or SHELF. There is very little information on SHELF today. The idea seems to have been to install an ELF antenna in deep underground shafts (potentially over a mile below the surface) using hard-rock mining techniques. Work on SHELF apparently continued through the 1970s, but it probably never got beyond the feasibility stage. Instead, the Navy shifted its focus to Project Seafarer. Seafarer was clearly a direct descendant of Sanguine, but addressed many of its biggest problems through a stripped down design. Seafarer transmitters, for example, would be located in surface buildings instead of underground. Still, the same basic antenna design remained, a grid on 3.5 mile spacing requiring about 4,700 square miles. The Nevada Test Site was considered as a location, as was White Sands Missile Range and forestland in the Upper Peninsula of Michigan. Michigan was ultimately selected, a result of favorable ground conditions and the lack of frequent large explosions. Seafarer construction was expected to begin in 1977, but instead it ended. The governor of Michigan shot the idea down, Congress didn't like it all that much, and President Carter signed the order ending work on not only Seafarer but ELF in general. In 1977, after roughly two decades of R&D work across multiple experimental sites, the ELF Program was in mothballs. The Navy was not so easily dissuaded. Later in 1977, they proposed "Austere ELF," a plan to throw together an ELF transmit site more or less from spare parts. A transmitter at Sawyer AFB in Michigan's Upper Peninsula would feed 32, 45, and 53-mile-long antenna elements, and via a leased telephone line the AFB would also control the inactive Wisconsin Test Facility transmitter. Even this basic, partially spare parts plan fell afoul of the public and congress. It failed to address most of the original health and environmental concerns, and still cost too much. Serious resumption of the ELF program would have to wait for President Ronald Reagan. Reagan was a fan of big, expensive, technically sophisticated solutions to Cold War programs, and ELF sure was one of those. Reagan approved "Project ELF," itself a scaled down version of Austere ELF. Project ELF used the existing Wisconsin Test Facility, supplemented by an identical 56-mile antenna in Michigan's Escanaba State Forest. Both would be operated by Sawyer AFB. The Wisconsin Test Facility from Project Sanguine, after 20 years, came to be known as Navy Radio Transmitter Clam Lake: the first operational ELF transmitter. The Michigan site, known as Navy Radio Transmitter Republic, quickly joined it. It's amusing that a temporary test facility ultimately became the final product, but the Navy had already invested a huge amount of effort in the Wisconsin transmitter. Everything from the strength of the EM field produced by the transmitter to its location in a National Forest had posed complications. Although Sanguine was intended as a hardened, underground system, burying antennas was a lot of work and the Wisconsin Test Facility had originally been temporary. Instead of buried cables, it used 1/2" aluminum wires strung above ground on utility poles for the two antennas. The voltages on the antenna wires required isolation from the surrounding environment, so as with power lines, trees were cleared to make a right of way for the antenna cables. The Forest Service, concerned about aesthetic impact on the forest's recreational areas, required that the antenna routes avoid some parts of the forest and take right-angle jogs near roads so that it was not possible to see a considerable distance down the antenna ROW when driving past (which would make the existence of the cleared ROW much more obvious). The transmitter site and antenna ROWs are still clearly visible today. At each of the four ends, about seven miles from the transmitter building, around 10,000 feet of buried copper wire make up the electrode. Trickier were the electrical problems. The ELF antennas could induce a significant potential in parallel electrical lines, and the use of ground return meant a lot of interference on telephone lines. When transmitting, which was ultimately the case 24/7, the 2.6 MW transmitter induced a current of about 300 A in the cables and ground. Understanding these impacts of ELF transmitters was actually one of the original purposes of the Wisconsin Test Facility, and the Navy had built model power and telephone lines parallel to the antenna elements. The ELF system was found to cause problems ranging from flickering light bulbs to phantom telephone ringing, and the Navy installed additional grounding and filtering on public utilities throughout the area at its own expense—even reimbursing the utilities for administrative costs related to customer complaints. Still, the interference problems were not fully solved during the test operations and no doubt contributed to the public's less than enthusiastic support. The former Wisconsin Test Facility, as Clam Lake, became operational in 1985. Its sister site, Republic in Michigan, went online in 1980. Republic was new construction, not an old experimental facility, but for cost and expediency reasons it was a virtually identical design to Clam Lake with above ground wires to buried electrode screens. Because of geographical constraints, the Republic antenna is not in a straightforward cross configuration. Instead, it's more of an "F" shape, electrically equivalent but with the feedlines placed differently. From 1989 on, the two sites operated in synchronization, with their total 2.6 MW operational transmitter power producing a radiated power of about eight watts. Yes, even at 14 miles in length, ELF ground dipoles are extremely inefficient. This remained a key problem with ELF. Early Navy ELF plans, like Project Sanguine, had assumed the use of extremely high transmit powers to produce a usable signal. ELF propagates very well, but at the paltry 8 W achieved by the Project ELF transmitters, practical reception still required extracting the transmitted signal from a noise floor that was just about as loud. That meant reducing the practical bandwidth of the system even further, and thus its speed. Project Sanguine would probably have been able to transmit EAMs directly to submarines; Project ELF was not. Even the compact format of EAMs was too long for a system with an effective symbol rate of about one letter per five minutes, or fifteen minutes to transmit the three-letter code groups used by the Navy. This reduced ELF capability was basically a very fancy pager network. The Navy has not disclosed the details of the scheme, but it's probably something like this: each submarine has a three-letter code group assigned to it. When its ELF receiver detects that specific code group, the submarine crew know that there is a message waiting for them, and they have to move at least close enough to the surface for VLF in order to find out what that message is. The Navy often referred to this as "bell ringing:" ELF messages were like the ringing of a telephone. As a means of supervision, so that submarines knew they were capable of receiving a message, "idle" code groups were transmitted 24/7. For how hard the Navy had fought to build it, Project ELF did not have a long life. The Navy's ELF submarine communications system was conceived around 1958, became operational over 30 years later in 1989, and shut down in 2004 after just 15 years of service. "The Nuclear Register," an anti-nuclear-weapons newsletter, put it like this: "A surprise Navy announcement signaled the end of 36 years of first local, then global, opposition to the Navy's giant transmitter system." ELF overcame formidable political odds. Besides Congress's lack of interest in the expense and federal policy concerns around health and the environment, a statewide ballot referendum in Michigan had attempted to prohibit construction and legislation prohibiting ELF transmitters was perennially introduced in the federal congress. Activist groups opposed to the transmitters staged regular demonstrations and, as Project ELF proceeded despite their objections, protests gave way to civil disobedience. Utility poles supporting the ELF cables were cut on numerous occasions, and the transmitter buildings vandalized. "The Nuclear Register" wrote: Nukewatch said the Navy's closure announcement, while welcome, raises more questions than it answers. The Navy said "improved technologies" and "changing requirements of today's Navy" made ELF obsolete. However, "very-low-frequency (ELF) [sic] alternatives to ELF have been around for 30 years and the 'changing requirements' refer to the end of the cold war that happened 14 years ago," LaForge said. Indeed, it is hard for me to see the undignified closure of the Navy's ELF program as anything other than an admission of failure. The basic technical concept of ELF appears sound, but the transmitters are large, disruptive, and costly to operate. It is not clear that the advantages of ELF, namely the greater depth at which it can be received, outweigh its downsides or compare well to VLF. VLF is still used by the US Navy today. ELF is not: the US has had no ELF capability since the 2004 closure of Clam Lake and Republic. China, India, and Russia are the only other nations to have constructed ELF transmitters. The Russian system, ZEVS, operates at 82 Hz from ground dipole antenna in place since at least the early 1990s. It is a candidate for the most powerful radio transmitter in the world, although the exact specifications have not been made public. India's INS Kattabomman gained an ELF transmitter in the 2010s, and while few details are known, China is believed to have constructed an enormous ELF transmitter in Huazhong during the 2010s. It is, of course, interesting that China and India have both built an ELF capability after the US abandoned the technology. One wonders what made an ELF capability so hard to sustain here, even after the Clam Lake and Republic sites were built. Well, there is an inertia to politics: the organized opposition to ELF, once energized, didn't go away. Area residents and politicians continued to organize for the closure of the Wisconsin and Michigan transmitters until their final days. Opponents of the ELF sites got plenty of help from both science and popular culture. Preliminary research linking ELF radiation to leukemia has not held up to modern scrutiny, but as with broader EM/RF cancer links this is an area of ongoing controversy. Extensive research by the Navy, mostly on the Clam Lake Site, hasn't found evidence of ecological disruption due to the ELF transmitter. Still, there is ongoing controversy, and one of the reasons for Project ELF's long and torturous construction process was a series of lawsuits and appeals under the National Environmental Policy Act, contesting the thoroughness of the environmental research. As usual, these possible connections to health and environmental impacts have given way to conspiracy theories. In the more shadowy corners of the internet, ELF is associated with everything from strange sensations to mind control. And that is where I first became involved. The X-Files episode "Drive" (S06E02) sees Fox Mulder cornered, practically carjacked, by a man who insists that if he does not drive West then his head will explode. The episode aired four years after the release of Speed and no doubt owes inspiration to that film (Mulder even makes a joke about it in the episode), but it attributes the bizarre scenario to a very different cause. The hapless victim, portrayed by Bryan Cranston, gained his head-exploding illness as a result of some sort of military experiment involving long antennas secretly buried beneath his house. Vince Gilligan wrote the episode, and while there were several influences, the final episode is a direct reference to Project ELF and the surrounding controversy. Years later, because of their collaboration on "Drive," Vince Gilligan cast Cranston as the lead in his show Breaking Bad. In the episode, Cranston doesn't make it to the West Coast. Mulder and Scully hatch a plan to puncture his inner ear and relieve the pressure building in his brain somewhere on the California coast, but Mulder just can't drive fast enough. Cranston's head explodes. Over the lifespan of the Project ELF facilities, police issued 636 trespass citations to demonstrators. Congressional representatives introduced legislation and amendments to end the ELF program multiple times. At least a half dozen ELF transmitter concepts were canceled, each one less ambitious than the ones before it. ELF is an interesting technology, but in a way, it's more interesting as a case study in military acquisition. Take a concept that is expensive, politically unpopular, and questionably superior to systems already in service—but if the military wants it, they tend to eventually get it. After thirty years, the military wears resistance down and gets something pushed through. Fifteen years later, the Navy shrugs, calls it obsolete, and shuts it down. What's left is a 14-mile-across "X" in the forests of Wisconsin, a legacy of controversy that still echoes, and a pretty good episode of The X-Files. Unrelated to astronomer Percival Lowell, although there are enough moments of intersection between the two that you wonder if they might have met.↩ Many of the fine details of the original NSS installation have become confused, probably because the Navy upgraded the equipment several times in its first decades and the specifications of different eras have become confused. Here are some notes: some sources give the transmitters as 350 kW, others as 500 kW. A Navy history explains that improvements to the antenna design allowed for raising the power after the site was originally designed, so 500 kW is indeed what was installed but we know where the 350 number came from. Some sources give the original towers as 500' tall and others (including Wikipedia) 600', I think the 500' number is more reliable as it agrees with the Navy history. I am not quite sure where the confusion comes from, though.↩ Some sources, such as Wikipedia, give a number of 22,500 square miles and 2/5 the area of Wisconsin. This was the very top end of a preliminary estimate that was revised down to 6,500 during planning. The 22,500 number still frequently appears, probably just because it's the more absurd figure, which is an example of the challenges of historical research when most information comes from activist groups opposed to the thing you're researching. Of course, we have to temper that criticism with the fact that some anti-Sanguine sources use the 6,500 figure, especially older ones. The shift towards the more attention-grabbing 22,500 might have happened later as Sanguine was discussed more by people without original knowledge of the program.↩
More in technology
Australians! They walk among us! Do not be deceived by those charming faces! precious bodily fluids, we must remove the scurrilous larrikin influence of Australia upon our American home computers, and I know exactly where to start! Why allow Dick Smith's name (even though he'd already sold Dick Smith Electronics' controlling interest to Woolies by then but stop ruining my intro) to corrupt this, um, rubber-keyed diminutive beige home computer when we can return it to its prior, pristine, plasticky state as it once rolled out from a glorious Asian factory? Then, to avoid wrecking it with a botched logic board repair, we'll bolt on a USB serial port using the very latest peripherals from down under, write cycle-counted Z80 assembly language to blast data to it at 57.6kbps, and hack a few games. Because only this will make the VZ200 great again! TI vs. Everybody"), was a seismic event in computing. Hong Kong entrepreneurs Allan Wong and Stephen Leung were two of many to realize that the microchip would trigger a revolution in consumer electronics, and over several years accumulated sufficient funding to establish Video Technology Ltd in 1976. Their first factory operated from the Freder Centre in Ma Tau Kok, a semi-industrial area on the west side of Kowloon Bay. Initially VTech, as it became known, concentrated on video games, primarily as an OEM for the more profitable North American and European markets. Their first products were Pong clones, released in the United Kingdom as the Grandstand Adman T.V. Game 2000 (black and white) and Adman T.V. Game 3000 (colour) in 1977, both based on the Texas Instruments TMS1965N, TI's clone of the well-known General Instrument AY-3-8500 Pong-on-a-chip (compare with the rather more complex MOS 7601). Grandstand was a brand name of Adam Imports, then a substantial toy and games importer to the UK and for a period of time New Zealand, and had other Asian contacts, notably Tomy. If the picture on VTech's history page is to be believed, and I point out there are some verifiable inaccuracies on that page, VTech continued to produce other consoles for Grandstand/Adam like the (deep breath) Grandstand Adman Colour TV Game 3600 Mk III, which used a regular AY-3-8500 and was produced until 1979. For the portable market, VTech produced a number of handheld LED, VFD, LCD games, sold under various brands and through retailers such as Radio Shack. VTech was hardly the only such Hong Kong tech company, of course; across the Bay in Kwun Tong was EACA, established in 1975 by Guangzhou escapee Eric Chung. EACA also produced consumer products such as radios and its own video games, notably the 1978 Colour TV Game, also based on the TMS1965N and variously sold under other brands such as the Sonesta Hide-Away TV Game. Creative Computing in August), but in fact ripped off from and largely compatible with the TRS-80, and advertised as such (well, the compatible part, anyway). While there were some internal differences and significant changes to the keyboard layout, EACA mostly copied the TRS-80 system ROMs for production with only minor changes, shipping it with a licensed version of Microsoft Level II BASIC. At Summer CES in Chicago it directly competed with the APF Imagination Machine and the Texas Instruments 99/4 (the original), and indirectly with the Atari 8-bits which earlier debuted at the Winter show. While it lacked the $599 model's monitor (a TV set or Tandy monitor was required), it had a better keyboard mechanism and a built-in cassette recorder, and was variously announced between $500 and $600 with 16K of RAM [$2200-$2760]. Electronics Australia, John Kennewell's National Semiconductor SC/MP-based MINI-SCAMP, running the CPU at roughly 500kHz (based on a typical 2μs cycle time) and 256 bytes of RAM expandable to 1K (64K addressable). DSE advertised the machine as "33% of the cost of the EDUC-8," an earlier Electronics Australia bit-serial TTL hobbyist system inspired by the DEC PDP-8 and designed by Jamieson Rowe — remember that name — who became an enthusiastic proponent of the new machine. Over in Silicon Valley, Palo Alto arcade game builder Exidy had developed their own Z80-based computer in 1978, the Exidy Sorcerer, a premium system featuring programmable character graphics, a faster 2.1MHz CPU and a built-in internal S-100 bus. Exidy saw the export market as a growth opportunity and aggressively inked deals with multiple foreign distributors, including DSE, who were taking ready advantage of the Whitlam government's 1973 import tariff reduction to bring more finished goods to DSE stores. The Sorcerer arguably found greater success in Europe than it ever did in the United States, particularly in the Netherlands where the licensed Compudata Sorcerer became the default government-supported educational system, and certainly in Australia due to Dick Smith's dogged promotion. Still, even in the US it was considered relatively expensive at $895 [$4580], and with tariff and import costs tacked on it didn't price itself well to the Aussie working class nerd. Conversely, the EACA Video Genie had meanwhile achieved some popularity of its own within Europe, notably West Germany, in no small part due to its lower cost. That alone made it a logical system to transition to, and better still, EACA had absolutely no objection to DSE outright rebadging it as a Dick Smith unit. Micro-80 disliked the altered keyboard (no CLEAR and TAB, no left and right arrows, up and down replaced by ESCAPE and CONTROL), complained about its changes to the character set and video circuitry, found the built-in cassette deck hideous, and noted the lack of board sockets and the missing-at-launch S-100 expansion box, but approved of the "brilliant" and "attractive" appearance, its overall functionality, and most of all its purchase price. "Even if you buy a decent tape deck from your local Big W and put it in the System 80," Hartley concluded, "you end up at least $150.00 [US$130 spot, US$520 in 2026 dollars] ahead — and that pays for your next 16K of RAM chips ... the machine has an identical computing capacity to the TRS-80, for a lot less dollars." At this point it was inevitable someone would poke the Tandy bear, and that someone was Recortec (they're still around), established in Sunnyvale, California in 1969 to specialize in magnetic tape recording technology. In 1980 Recortec, also attempting to expand their product base, opened Personal Micro Computers, Inc. (PMC) as a new venture in Mountain View, initially entering negotiations with Exidy to buy out the Sorcerer — until, through EACA's American subsidiary, they became aware of the Video Genie. To PMC/Recortec, the Genie was a remarkable opportunity, a less expensive TRS-80 compatible system already selling in Europe and entering the Australian market, and PMC now had the chance to corner it for American distribution. The company immediately backed out of the deal with Exidy, bought up Genie distribution rights in August for the entire Western Hemisphere, rebranded it as the PMC-80 and launched it in 1981 with 16K of RAM for $675 [$2330]. InfoWorld was more complimentary than Micro-80 had been, noting PMC's planned Fastload high-speed cassette scheme, a 50-40 adapter to connect Model I peripherals directly and a true lowercase conversion kit. "Tandy," said columnist Tracy Deliman, "is apparently curious now" — and in particular their attorneys, who promptly filed suit in federal court against both PMC and EACA of America, claiming, among other allegations, that the name PMC-80 infringed their trademark and that EACA and by extension PMC had committed copyright infringement as well by substantially copying the system ROMs. (Tandy didn't dispute the BASIC ROM, as that was licensed from Microsoft, but EACA and PMC dragged Microsoft into court with them anyway as a third-party defendant. Microsoft was a lot smaller then.) In their motion to dismiss, PMC and EACA did not deny that the code had been copied and that then-current copyright law covered computer programs, but argued that section 117 of the in-force 1976 Copyright Act required the infringement claim to be interpreted according to the law prior to January 1, 1978 ("this title does not afford to the owner of copyright in a work any greater or lesser rights with respect to the use of the work in conjunction with automatic systems capable of storing, processing, retrieving, or transferring information, ... than those afforded to works under the law, whether Title 17 or the common law or statutes of a State, in effect on December 31, 1977"). Robert Peckham, chief judge for the Northern District of California, disagreed in August 1981 and denied the motion, writing "that section 117, as it existed in the 1976 act, was aimed at the problem of copyrighted material inputted [sic] into a computer, such as books, magazines, and even computer programs. It was not intended to provide a loophole by which someone could duplicate a computer program fixed on a silicon chip." Moreover, even if it did, "[t]he plaintiff has suggested that the evidence may well show that the chip was duplicated by first taking a visual display or printout of the program in question ... If this method of unauthorized duplication in fact is proved, there can be no doubt that the unauthorized duplication of a visually displayed copy of the program would fall within the reach of the federal copyright laws." The case was quietly settled out of court, and although it obviously didn't enjoin EACA outside of the United States, domestically PMC replaced the line with the CP/M-based MicroMate in 1983. By then, and unknown to his backers, Eric Chung's failed investments in the Hong Kong real estate market had put him millions of dollars in debt. In October 1983 he abruptly fled to Taiwan reportedly with $10 million stuffed in a suitcase, leaving EACA to quickly fold. Simultaneously, Dick Smith sold a 60% stake in Dick Smith Electronics to Woolworths (the Australian version) later in 1980 and then the rest in 1982, leaving only his name and his bespectacled grin to remain at the company he founded. Although DSE sold the Video Genie's modestly upgraded direct successors also as System 80 variations, the System 80 family never included the Colour Genie, EACA's last system before its ignominious demise. PMC's former headquarters in Mountain View are now collectively Google Building E475. first step to computer literacy. The success of the ZX80 suggested other dirt-cheap home computers might also flourish. VTech accordingly began developing a low cost computer of their own in 1981 that could work like the TRS-80, planning to adopt its BASIC (and thus its Z80 CPU) much as crosstown rival EACA did and speed time to market, but by explicitly abandoning compatibility they were free to slash its production cost as much as practical. A substantial reduction in part count became possible immediately by using the inexpensive Motorola 6847 Video Display Generator, introduced in 1978, which replaced nearly the entire video system: with minimal support circuitry, the VDG chip could generate a 32x16 text display, comparable to the TRS-80 and Video Genie's 32-column mode for colour TV sets, 64x32 colour semigraphics reminscent of the same, and a variable high-resolution bitmap display depending on available memory. On top of that, the entire system could run from the VDG's standard 315/88 (3.58MHz) crystal, including the Z80, and part count could be reduced even more for a black-and-white low binned model by omitting the colour encoder completely. Everything else (cassette output, keyboard lines) could be supported with discrete components and a handful of TTL logic, price could be adjusted further on the basis of included RAM, edge connectors wired to the processor bus would suffice for peripherals and expansion, and any sort of keyboard would be a step up from a flat membrane. While the low-end computer was in development, VTech also hedged its bets with a higher-spec video game system, which typical for the era (see, for example, the Intellivision Keyboard Component) was convertible into a home computer of its own. This console was likewise built from off-the-shelf components, using a 2MHz Rockwell 6502 CPU and the Texas Instruments TMS9918A for graphics, 17K of RAM (1K for the 6502's zero page, stack and low memory, and the other 16K for the VDP), and controllers that doubled as a membrane keyboard when used with the optional BASIC cartridge. It shared no parts or significant engineering with the computer prototype and proceeded along a largely separate development track, released to select European test markets first as the VTech CreatiVision in 1982. Meanwhile, Sinclair Research and manufacturing partner Timex Corporation subsequently joined forces to launch the Timex Sinclair 1000 in the United States, a slightly reconfigured ZX81 with NTSC-compatible video output and 2K of RAM, but otherwise identical. It hit stores in the summer of 1982 at the same psychologically desirable price point, now US$100 [$345], though Timex Sinclair didn't get the bargain American home computer market to itself like the ZX80 mostly did in the UK: it now had to contend with Commodore, selling the VIC-20 as their well-supported low-end system, plus the ailing Atari and their Atari 400, Tandy's own TRS-80 Color Computer, and even Texas Instruments, then only months away from igniting a price war using the TI-99/4A. Nevertheless, industry observers generally believed the T/S 1000 would be a strong competitor, and its debut led to an accelerated scramble from VTech and others hoping to duplicate the ZX80/1's success. VTech identified two overall product positions, a super-low-cost black-and-white variation with Microsoft Level I BASIC for selected markets, and a colour model with full Microsoft Level II BASIC, each of which VTech intended to sell both under its own name and as an OEM. To prepare for the American launch of the nearly complete low-end computer and the CreatiVision, VTech opened a U.S. subsidiary that year in Elk Grove Village, Illinois outside Chicago (the picture above is from VTech's history page). Computer Gaming World issue 3.2), it took the Las Vegas Convention Center, the Hilton Convention Center, the Riviera Convention Center, the rest of the Riviera and the old Rotunda to contain it all. Mattel introduced the Aquarius for $199 [$670] licensed from Radofin, also in Kwun Tong (with a 3.58MHz Z80A and 4K of RAM, cassette storage, no bitmap graphics option and a rubber chiclet keyboard), Texas Instruments hawked the TI-99/2 for $99 [$330] (with a 2.7MHz TMS9995, 4K of RAM, cassette storage, no bitmap graphics option and no colour, and a plastic chiclet keyboard), Sanyo proffered the PHC-20 also for $99 as the midrange of the pocket computer PHC-10 and higher-end PHC-25 (with a 3.58MHz Z80 clone and 4K of RAM, cassette storage, no bitmap graphics option and no colour, and a rubber chiclet keyboard), and at the higher end came the Panasonic JR-200U for $349 [$1170] (with a 0.89MHz 6800 clone and 36K of RAM, cassette storage, no bitmap graphics option, and a rubber chiclet keyboard), the NEC PC-6001 also for $349 (with a 4MHz Z80 clone and 16K of RAM, cassette storage, but bitmap graphics and a rubber chiclet keyboard that was quickly replaced with a typewriter-style one), and the Spectravideo SV-318 for $299 [$1000] (with a 3.58MHz Z80 and 16K of RAM, also bitmap graphics, and a rubber chiclet keyboard). There were multiple conversion kits to turn the Atari 2600 VCS into a low-end computer of its own, several with rubber chiclet keyboards, and even a completely unlicensed ripoff of the T/S 1000, the Unisonic Futura 8300 (with a rubber chiclet keyboard) for $99. Not to be outdone, Timex Sinclair themselves announced the T/S 2000, a modified US version of the ZX Spectrum, with 16K or 48K of RAM, a 3.5MHz Z80, colour bitmap graphics and a rubber chiclet keyboard; the 16K version started at just $150 [$500]. The latecomers arrived at the Summer CES in Chicago, though by that point the rot was already setting in. Against the background of Commodore slashing prices even lower on the VIC-20 and C64 to Texas Instruments' profound discomfort, Mattel suddenly decided the Aquarius needed a sequel (i.e., the other system Radofin was developing; price point to be determined but without a rubber chiclet keyboard); Timex Sinclair replaced the T/S 2000 with the enhanced T/S 2024 and T/S 2048 with higher resolution graphics, more RAM and a plastic chiclet keyboard, plus an upgraded T/S 1500 which was a T/S 1000 with 16K of RAM and a rubber chiclet keyboard; Rabbit Computer (who? also from Hong Kong) introduced its own Z80-based Rabbit RX83 with 2K of RAM, BASIC, three-channel sound, cassette storage, bitmap graphics and a plastic chiclet keyboard for $99; and Tomy unveiled the Tomy Tutor for "under $150" [$500] with a 2.7MHz TMS9995 (from a 10.7MHz crystal), 16K of RAM, cassette storage, bitmap graphics and a rubber chiclet keyboard. In the fall Tandy, never one to be left out of a race to the bottom, delivered the MC-10 Micro Color Computer for $120 [$400] with an 0.89MHz 6803 and 4K of RAM, cassette storage and bitmap graphics, and a rubber chiclet keyboard. Even Commodore, failing to learn its lesson from the critically maligned Max Machine, was working on their own ultra-low-end family of computers to follow on to the C64 — one of which (the 116) would have a rubber chiclet keyboard. And, oh yeah, one other system made its debut at the Winter show. COMPUTE! in their March 1983 reporting called it "the first under-$100 [$330] color computer." Anticipated to hit American store shelves in April, the new VTech VZ200 featured 4K of RAM (expandable to 16K for $45 [$150] and 64K eventually), 12K of ROM (remember these numbers) with BASIC, and a simple push-pull piezo for sound. Two kilobytes of the 4K was allocated to the 6847, which used it to generate its default 32x16 text display, 64x32 semigraphics or 128x64 bitmap graphics. It had built-in jacks for cassette, TV and composite video, and shared its booth with the CreatiVision which VTech planned to sell States-side for $189 [$630], with the BASIC cartridge for $10 [$33] and an inevitable rubber chiclet keyboard for $30 [$100]. It isn't clear where the name VZ200 came from, possibly a riff on "ZX," but the computer's low cost even amongst a sea of low-cost computers still attracted positive attention. Creative Computing got a 4K VZ200 in for review in their May issue (accounting for publishing delays this would have to have arrived in February or early March), though they noted that they had no chance to try the peripherals or software. The article has some glaring technical errors — among others, they said the CPU was a 6502 — but reviewer David Ahl called the machine "a compact microcomputer with a great deal of capability and many unexpected features at a very attractive price." Although the review found the 4K of RAM "sparse" and was openly critical of the keyboard, particularly the absent space bar, single SHIFT key, nonstandard layout and the keys' inconvenient tendency to stutter, Ahl was nevertheless impressed by the full-screen editor ("a pleasure") and the 12K ROM implementation of BASIC (unbeknownst to him, secretly derived from the TRS-80 with added support for the on-board hardware), concluding the VZ200 to be "a great value for the suggested retail price of under $100." There are certain attributes of the machine shown in both the COMPUTE! and Creative Computing photos that don't match released units, but we'll address this later on. Creative Computing Winter CES cover showing the VZ200, the Timex Sinclair 2000 (in its original form), the Texas Instruments 99/2, the Mattel Aquarius and the Spectravideo SV-318. Personally, however, I lump these computers together as the "crap home computers." I use this term with only love, and this uniquely terrible subtype of the home computer was indeed greatly loved, because as the ZX80 had demonstrated, ordinary people could now finally afford them. Heck, my first computer — the Tomy Tutor, introduced at Summer CES — was one of these 1983 crap home computers because it's what we could afford. We couldn't afford a Commodore 64 right then, but we could afford that. Not for nothing did Jack Tramiel thunder, "computers for the masses, not the classes!" What these systems all had in common, other than crummy keyboards, a striking preference for the Z80 and an unabashedly low starting price, was aspirational and arguably fraudulent marketing, plus inadequate specifications requiring upgrades at additional cost to be practical — if there were any to begin with — alongside substandard quality control, a poor selection of software, and weak to non-existent customer support. Made cheap to sell cheap, most of these computers failed outright (e.g., the Mattel Aquarius) or were never even released (e.g., the TI 99/2). The glut that hit the U.S. market that year not only soured many American consumers on home computers generally, but their game-heavy libraries were also likely a contributing factor to the 1983 video game crash. Although managing to move over half a million units, Timex Sinclair was not immune to this effect, and the company became unprofitable as the sales crossfire between Commodore and Texas Instruments forced the T/S 1000's street price below $50 in mid-1983. The situation was compounded by Timex's ill-considered decision to make the more expensive T/S 2068 (the eventual sole member of the 2000 family) largely incompatible with the ZX Spectrum, robbing it of the extensive British Spectrum software library, and the joint enterprise that was once expected to dominate the American home computer market collapsed in early 1984. Even large players like Texas Instruments and Warner Communications-era Atari took hundreds of millions of dollars in losses, with only Tandy (due to their strong retail presence) and Commodore (due to the C64's prodigious installed base and their vertically integrated manufacturing) able to weather the maelstrom effectively. Family Computing's inaugural September 1983 issue the columnists mention the SV-318 and even the stillborne T/S 1500, but nothing on the Lasers, and Creative Computing around that time was only running ads for the 3000. A few VZ200s were rebadged by Texas door-to-door nuisance business Dynasty Computer Corporation as the Smart Alec Jr., though like their multi-level marketing attempt at rebadging the spent Exidy Sorcerer, they sold barely at all (the company folded in November). On the other hand, the (now) Laser 200 got off the ground in Europe under its own name and others, most notably through Sanyo, but also through Salora, Seltron and Texet. It launched there alongside the black-and-white model as an ultra-low-end system, originally dubbed the Laser 100, but after the ROM change becoming the Laser 110 with the same Level II BASIC of the colour version. However, there was one market where the VZ200 had particularly strong success, and that was of course Australia, though not exactly in its original form. History does not preserve the thought process of Dick Smith Electronics management, but DSE's probable aim was to nose past the Commodore VIC-20 on price and capability (DSE themselves even sold them for a time), which was colour and shipped with 5K RAM. That immediately excluded the black-and-white variation, since the ZX81 had since landed in Australia and the potential profit margin wasn't enough to bother, and it is instead more likely that during negotiations DSE prevailed upon VTech to strengthen the colour system and keep the price low. VTech's solution was a small 6K daughterboard retrofit that could replace the 2K system RAM chip, internally expanding the unit to a more appealing 8K (the other 2K video RAM chip was left unmolested) while still being able to use previously manufactured components. This modified VZ200, badged as a Dick Smith computer and subsequently sold elsewhere by VTech as the Laser 210, appeared in the 1983-84 catalogue as "new for 1983" at just A$199 [approximately US$220 spot and US$720 in 2026 dollars]. Australian Personal Computer April 1983 preview speciously characterised it as "to Dick Smith's specifications" (likely only the RAM complement was), he got quickly used to the keyboard, approved of the BASIC implementation (faster than the ZX Spectrum's) and full screen editor, noted the characters to be "rather like those produced by the TRS-80 Color Computer" (true!), and compared the memory loadout favourably to the VIC-20's. He was similarly pleased with the cassette tape performance and the included documentation, with about his only complaint being the weak sound. His editor Sean Howard was equally impressed, famously remarking that "I'm certainly going to buy one," which DSE promptly and repeatedly used in their advertising. many VTech rebadges DSE would eventually sell. Although nothing was going to catch the Commodore 64 by then, which had the same stratospheric sales there as it did most other places, the DSE VZ-200 had the added good fortune of ZX Spectrum manufacturing issues that eroded its availability, giving the DSE VZ-200 almost unrestrained run of the Aussie low-end market from which the VIC-20 was already fading and the ZX81 all but gone. In 1984 it remained a strong seller at its new lower price of A$169, dropping to A$99 by the end of the year. I think that suffices for a more detailed backstory; we'll talk a little more about its later history in Australia and VTech's overall as a postscript at the end. For now, we'll turn our attention to this orphaned American unit. A convention I'll establish from now on in this and future articles: although Dick Smith was not consistent on the hyphenation, variously rendering it VZ-200 and VZ200, in the few places it appears the American version was invariably written without one, so I'll write "VZ200" for the North American computer and "VZ-200" for the Australian computer. biblioteca. You can also see more clearly that the red blurb on top advertising "WITH 4K BYTES RAM" and "NTSC 4K" is in fact a sticker, so this box was almost certainly not exclusive to North America and may not have been exclusive even to 4K systems. increased to $149.95. Neither price matches its well-documented MSRP of $100. Unfortunately I can't make out the actual retailer, even with an extreme enlargement. markedly predominant French labeling might have prevented its sale in the Montréal outlet, that wouldn't have enjoined it elsewhere. As far as its provenance, however, the fact it wasn't labeled that way suggests Canadian sale was not initially contemplated, and it also has U.S. Federal Communications Commission clearance (I'll show you in a bit). COMPUTE! and Creative Computing pictures. Those earliest systems are labeled as a "VZ200 Personal Computer," not a "VZ200 Color Computer," and the colour labels over the number keys were absent. In fact, this same keyboard is used for the B&W Laser 110, though those early VZ200 systems must have been colour given that their colour capabilities were widely reported at the time. On the other hand, the VZ-200 that appeared in very early Dick Smith marketing like the flyer above was labeled a "VZ200 Color Computer" exactly like this one, including the American spelling. The keyboard consists of 45 keys, with a bottom right SPACE key in the corner, only one SHIFT on the bottom left, and no ESCape key. Necessarily, many have multiple functions accessible with the CTRL key or CTRL-ENTER key combo. Most of these alternative functions are one-touch BASIC keywords like the Sinclair machines, though unlike those computers, you are not obligated to use them and can spell keywords out if you want. Semigraphics characters are also selected by key combination, as well as moving the cursor, inserting and deleting characters, and interrupting a BASIC program. was removed, because the 16K RAM expander connects there. The cover is not in the box and I'll presume it was lost or destroyed by the previous owner. That's annoying from a preservation perspective, but no great loss functionally, because we'll have something plugged in there pretty much all the time later on. on the Wayback Machine, and is the only other NTSC VZ200 unit I have seen myself. Both his and mine have a "VZ200 Color Computer" bottom plate with a copyright date of 1982, and both have US FCC clearance tags and an RF switch to pick the channel (2 or 3). There are passive cooling vents on both sides, though given the fairly small amount of clearance its rubber feetsies afford from one's desk I hesitate to say they'd be effective. (At least they let you hear the piezo speaker.) There is also a small red sticker on the bottom which on mine is partially missing, but Bill's has a complete one, which reads "U NTSC 4K." I put a small piece of transparent tape over the sticker on mine to prevent further damage. Bill's unit also has both port covers. Although the serial number indicates his is a rather older unit, which we'll in fact confirm later, the label and keyboard are the same as mine and not those earliest CES models. Both units have FCC Part 15 clearance, specifically as a Class B computing device for home use; at the time Class B regulations were very strict and we'll see a consequence of that inside. The FCC ID is BNX84H80-0323, with an equipment authorization (EA) applied for February 10, 1983 and granted May 9, 1983. Accounting for publishing delays, this means Creative Computing must have had a pre-authorization prototype for their review. VTech later applied for a revised equipment authorization on July 11, 1983 and was granted BNX84H80-0323-1 on October 11, 1983; this change may have been for redesignation as the Laser 200. The listed address for VTech in Hong Kong appears on all entries for FCC grantee BNX and doesn't seem to have been their corporate address at the time, but the tester in both EAs is one Thomas Cokenias from Electro Service Corp., at 1116 Ninth Avenue in San Mateo, California, and Cokenias and Electro Service are seen in other EAs around that time for other Hong Kong manufacturers. However, the given address appears presently unoccupied, and the California Secretary of State indicates Electro Service is no longer in business. except its 16K RAM expansion (due to differing address mapping) would work on the older machine because many of them were effectively unchanged except for the labeling. (The address mapping difference is also why the VZ-200 16K RAM expander will work on the VZ-300, but only giving you an additional 8K.) Although there have been various other members spotted in the Laser 300 series, apparently differing only in RAM size or case type, none were reportedly sold widely if at all. The VZ-300/Laser 310 is otherwise nearly totally compatible with the VZ-200/Laser 210 except for its clock speed. As NTSC compatibility was no longer required, VTech switched to a single 17.734475MHz master crystal divided by four for the 4.43361875MHz PAL colourburst and five for the 3.546895MHz CPU clock. (The Motorola 6847 VDG in the VZ-300 and PAL systems generally is clocked with an altered signal which I'll talk about when we open the machines up.) Although that makes the VZ-300 slightly slower at 99.09% the speed of the VZ-200's 3.5795454MHz (315/88) oscillator, in practical terms the difference was imperceptible with most existing software — but of course it's going to be a problem for us later. VTech did no other upgrades, not even offering an alternate 6847 font ROM with lowercase, though we'll talk more about that when we get to the innards as well. a Christmas gift from my wife (I married well). The DSE pricetag on the back gives its price as A$9.50 but I don't know where or when it was originally purchased. While the TRM does not approach the sheer detail of, say, the Commodore 64 Programmer's Reference Guide, which even has an exhaustive memory map covering its 64K of RAM and 20K of ROM, it does include documentation on most of its important RAM locations and a full set of schematics, some of which we'll be using in this very article. A similar manual exists for the VZ-300 with its own set of schematics, which also discusses the VZ-200 and has some details not in the earlier text. (for Los Angeles residents, read "Vernon"). The North Ryde building was subsequently occupied by German truck and bus manufacturer MAN, whose old stripped logo can still be seen on the facade, and is now split between multiple tenants. Level I BASIC is quite, uh, basic, evolved by TRS-80 designer Steve Leininger from Li-Chen Wang's "copyleft" Palo Alto Tiny BASIC which Leininger substantially altered, reworking its structure and adding floating point math (because it couldn't accept Charles Tandy's salary when he typed it in), two string variables and a single array, and support for the TRS-80 hardware. VTech's version is similarly modified to support its own architecture but is otherwise the same. Level II BASIC is Microsoft BASIC, derived from Microsoft's own Extended BASIC on the Altair, and again VTech initially imported it nearly unchanged except for adding support for their hardware and graphics, which replaced some of the keywords (like TROFF with COLOR). Proof can be seen by comparing the order of keywords in their token tables, which would have no reason to match as precisely as they do unless they came from the same origin. Another persistent relic in the VZ BASIC ROM is the old Microsoft two-character error message table (e.g., ?SN ERROR instead of ?SYNTAX ERROR) even though the existing code never references it. Tandy's apparently successful legal action against EACA and PMC spooked VTech that they could be sued in the same way — but by Tandy and Microsoft. The company's solution was to dump Level I BASIC entirely, eliminating any objection from Tandy, and for Level II BASIC to secretly null out a large number of entries in the ROM BASIC keyword table potentially unusual enough to be used as evidence of copying. The tokens for those keywords still remained valid, however, and the ROM code for them also largely persisted. Disk-specific keywords were likewise omitted in the same fashion, at least until the VZ-300 disk drive debuted, but unlike the other gutted keywords were instead vectored through RAM for later expansion. These keywords (in token order) are CMD, RANDOM, DEFINT, DEFSNG, DEFDBL, RESUME, ON, OPEN, FIELD, GET, PUT, CLOSE, LOAD, NAME, KILL, LSET, RSET, SAVE, SYSTEM, DEF, DELETE, AUTO, FN, VARPTR, ERL, ERR, STRING$, INSTR, TIME$, MEM, FRE, POS, CVI, CVS, CVD, EOF, LOC, LOF, MKI$, MKS$, MKD$, CINT, CSNG, CDBL and FIX. Because their implementations often remained present, it was possible to resurrect many of them by hooking into the RAM vector for tokenizing "new" BASIC keywords, and some BASIC extensions did just that. The earliest versions of the Laser/VZ ROM use light green text on a dark green background. Without a colour encoder this would produce light text on a dark screen, which is indeed what you see on a black-and-white Laser 110. Bill's earlier NTSC VZ200 is the same way, using the same ROM 1.2. By ROM 2.0, as in this VZ-200, the display became dark green text on a light green background, like the Tandy Color Computer which uses the same MC6847 video chip. do have a 4K system, just a very late one. You may have noticed the oddly convoluted BASIC statement I entered to get that figure. That's because I had to avoid typing the number 5: the key didn't work. Normally the VZ200 will beep as you press keys, but there was no beep and no response when I did. In fact, an entire run of keys (5, T, G, B and N) was not working, and I was only able to enter the PRINT keyword by pressing SHIFT-P. We'll need to fix the keyboard now to do anything substantial with this machine. did appear to work. Still, it seemed like the most reasonable place to start, so let's crack the computer open. another VTech unit, the unrelated Laser 50) and a plastic cover sheet with slits for the top ports' card edges to reduce dirt getting inside. Also visible on the top right/northeast side is a sprawling heat sink screwed to the fin of a 7805 voltage regulator peeping out from the lower right/southeast corner. This heatsink sits under the ventilation slits in the top case. Much of the logic board is covered by a large sheet metal Faraday cage serving as an RF shield, festooned with soldered metal braids connecting everything to the ground plane, and then the whole assembly placed on an irregularly shaped metal plate on the bottom with the piezo. As mentioned, in those days the FCC was very strict about radio interference from computers and video games, particularly home units where a Class B device (as this is) had a 10dB lower maximum than a commercial Class A one. Some systems like the Atari 400 solved this problem by effectively encasing the entire system in a molded metal endoskeleton and placing as few holes in the case as possible from which radio signals could emanate. That made for a very sturdy computer but one more expensive to manufacture, so VTech went for this cheaper, hackier approach which was no doubt iterated upon until it just cleared the bar. One major component is not under the cage, however, and that is the Motorola 6847 VDG video chip, in a plastic carrier (MC6847P) with a date code of 24th week 1983. It's not precisely clear why that is, but it can be seen that the left board is connected to some of its lines. PAL synchronous demodulator, a surprising choice, since the MC6847 is usually paired with the MC1372 NTSC colour modulator. The 6847 emits YPbPr (as Y, B-Y and R-Y) video, which in the black and white Lasers only the Y (luma) signal is used. In other systems like the Tandy CoCo the MC1372 takes the YPbPr lines, encodes the colour, and emits a signal suitable for a television set and/or composite video depending on the specific components. The TBA520 can be made to do the same task, even generating NTSC colour with the right crystal, albeit with more supporting electronics. (I presume it was less expensive than an MC1372, plus there would be the advantage of not having a different chip for Euro and Aussie systems, since the TBA520 can obviously do PAL video too.) Reference B-Y and R-Y signals are generated to the TBA520 using the 3.58MHz (315/88) NTSC colourburst oscillator on the left board, while the B-Y and R-Y signals from the MC6847 are passed on different lines, with the MC6847 running on the same 3.58MHz clock. We then pulse the TBA520's line inputs at the necessary horizontal rate, approximately 15.7343kHz, causing the TBA520 to emit a single NTSC chroma signal (on its G-Y pin) from the 6847's PbPr signals. (This theoretically makes it possible to get proper S-video out of the VZ200, though we're not going to try that this time.) Discrete components then combine the luma and chroma into composite video for both the monitor connector and for feeding into the separate RF modulator. this problem), so I decided to just clip the tabs with angle cutters. One of those tabs is here over by the 7805 ... Scriptovision Super Micro Script, which has a 6802 CPU (a microcontroller version of the 6800) and a 6847 VDG, RAM, ROM and a simple keypad for entry. In that article I mentioned that those were enough to make it almost a home computer (replacing the ROM on the Super Micro Script to make it one) because home computers like the VZ-200 have a similar architecture. Now we'll prove the comparison is valid. In this view, the MC6847 is the large DIP on the far left/west side. The chips in the back, going from left to right, are a Hitachi HM6116P-2 2K static RAM used for video memory, the CPU, a clone SGS Z80 (the former state-owned SGS Microelettronica "Società Generale Semiconduttori" of Italy prior to merger into STMicroelectronics in 1987) with a date code of 19th week 1983, a Hitachi 74LS139 and 74LS32 used as part of the address decoding for the memory mapped I/O range, and lurking in the back right (east) corner a 74LS174 6-bit flip-flop serving as a latch register. In the front, also left to right, are a Hitachi 74LS245 octal bus transceiver which bridges the shared 2K video RAM between the CPU and VDG, a Hitachi 74LS04 hex inverter used for various tasks such as the CPU reset circuit, a Hitachi 74LS244 octal driver, another Hitachi 6116 2K SRAM (the system RAM this time), and the two 2364 8K system and BASIC ROMs with date codes of 27th week and 32nd week 1983 respectively. On the Dick Smith schematic using the same order, these chips are numbered U15 (the 6847), then U7, U4, U3, U2 and U1 (74LS174), then U14 (74LS245), U13, U12 (assumed), no designation for the single 2K SRAM, and U10 and U9 for the ROMs. The ROMs are unsurprisingly the newest chips in the system and mean the computer could not have been assembled earlier than then, likely making it part of the last production runs before VTech abandoned the line in North America. Obnoxiously, everything is soldered down; there are no sockets (cheap!). However, there are a number of unpopulated pads. Some extra pads near the ROMs were clearly intended to accommodate larger-capacity chips, and later machines indeed use a single 16K ROM with a change in board jumpers nearby. (Braver folks than I have extracted VZ-200 boards with 2364s and found bodge wires underneath. Apparently underpaid labour and smaller ROMs were less expensive at the time. Cheap!) There is also another set of pads near the VRAM chip between it and a big block of through-hole resistors. It's not clear what these pads were meant for, though the VZ-200 schematics show another resistor bank there serving as pull-ups. This bank is drawn on the schematic with dotted lines unlike the other set, so perhaps they were eliminated for cost reasons (cheap!). Now let's talk about what we don't see. One thing we don't see here is a 3.58MHz master crystal. That's because ... we already saw it. The entire system runs from the 3.58MHz crystal on the colour encoder, so everything is precisely synchronized to the same clock source, including the TBA520, the MC6847 and the Z80. It is therefore impossible to merely switch the colour encoder boards and turn an NTSC VZ200 into a PAL VZ-200 or vice versa because of the added line padding circuit in the PAL unit and the absence of a second system crystal in the NTSC unit (cheap!). What about the VZ-300, where there's no 3.58MHz crystal either? In that system, the VDG is entirely clocked by one of the gate array chips, providing the same line padding logic, but also using the same 3.54MHz clock as the CPU which is apparently "close enough." Another thing we don't see is something like a Motorola 6883 synchronous address multiplexer. Recall that the 6847 VDG has no externally exposed registers of its own (compare to, say, the VIC-II in a Commodore 64). Things like video modes and character attributes are twiddled by chip lines; for character attributes these lines are often wired to certain data bits from the video RAM, but to dynamically set a video mode under software control requires external hardware. Also, the VDG makes little attempt to cooperate with the CPU as to when it accesses video memory, other than indicating when it finishes a frame which is likewise asserted on one of its pins. In the Tandy Color Computers (prior to the CoCo 3, which uses a GIME), the MC6883 SAM sits between the 6809 CPU and the 6847 VDG and arbitrates all of this, managing the display mode and system timing, and servicing the VDG while the CPU is on the bus. On the other hand, this approach was judged too expensive for the cut-down Tandy MC-10, which instead uses a series of flip-flops to interleave bus access between its 6803 CPU and the 6847. A single 74LS245 bus transceiver allows the CPU unrestricted access to the video RAM when the processor is accessing memory. Neither approach is suitable in this case, however. An MC6883 would be too expensive for the VZ200 also (cheap!), and the Z80 sits on the bus longer during a CPU cycle than a 6502 or 6800-family chip would, so the MC-10's interleaved approach won't work either. As it happens, the VZ200 does nearly exactly what the Scriptovision Super Micro Script does: during CPU video RAM access, the VDG's memory fetch is immediately suppressed using its MS pin and the 74LS245 bus transceiver temporarily kicks it off the bus. The contention problem is solved in both cases with software (cheap!) by simply not doing anything with VRAM until the VDG indicates it's between frames and not reading screen memory. The only difference is how they find that out; the SMS busy-waits on the VDG's FS signal before doing a screen update, while the VZ200 just wires FS to its IRQ line — screen updates using ROM routines are batched and when the interrupt is triggered, the ROM then blits the deferred changes to the screen all at once. Of course, if you write directly to the video RAM when the VDG is accessing it you'll get intermittent artifacts, and I'll show you what that looks like, but you can just watch for the IRQ yourself if you really care about it (many programs didn't). Otherwise, the VDG's mode pins for bitmapped graphics and alternate colour selection are handled through bits in the 74LS174 latch within the memory-mapped range, which also handles the piezo and cassette output. Overall this is a good demonstration of how the SMS was almost a home computer, because here's a home computer whose video architecture was almost the same. A missed opportunity with the more upmarket VZ-300 was the potential for lowercase or at least an alternative character set, especially because it even got a word processing cartridge released for it later (we'll play with it, it works with the VZ-200 also). An external font ROM can be lashed to the 6847 with a bit of additional circuitry and the Super Micro Script has one to generate higher-quality character glyphs. It seems like VTech could have done something like that controllable by another latch bit, and with a six-bit latch there are a couple more data bits there that could be used, but I guess that was either judged too risky or not even thought about. On both systems the 6847 INT/EXT pin that would have controlled this is merely hardwired to ground. One note about the metal RF shield: if the cage is not pulled back down into position, it may distort and contact some of the pins on the 74LS174. This will cause weird graphical artifacts and knock out the piezo (no keybeep). It doesn't appear to harm the computer, but I was very careful to ensure it was bent back to as similar a position as before after this happened a couple times. Obviously this is no problem if you just completely take it off. that), which is why they could never complete a junction and be sensed. On the other hand, the 6, Y and H keys on that column are wired separately into the ribbon cable, so they were unaffected. I'm not sure how such a fault would have happened. The keys move, but they don't sweep or scour, and ordinarily they shouldn't be contacting the painted portions anyway. It also doesn't seem likely to have been a factory defect because that would have made the computer very difficult to use, and this computer was clearly used. I pondered the best way to fix it, since any repair would have to be flat or it would distort the key sheet on top (e.g., no solder blobs, no top bodge wires). I have a circuit pen I could use to draw a new trace, but it's temperamental, and I didn't want to do something I couldn't undo later in case it wasn't actually the problem. do work! Do not overtighten them or you will interfere with the conductive nubs being able to make contact. I had a couple dud keys initially after this which were returned to life by slightly loosening the screw nearest to them (to my great relief). COLOR ,1): #00ff00 and red is #ff0000 and so forth. That is definitely not the case; in fact, the default VDG palette is rather a bit muddy, with relatively poor saturation. For example, black (what the border is supposed to be) is often more like a very dark brown, buff is a dirty off-white, magenta becomes a flaccid purple where the red is a little too low, and what the documentation calls cyan comes out closer to seafoam green. Unfortunately, many simpler or older emulators provide an excessively rosy (no pun intended) simulation of what these typical home computer implementations usually generated. MAME uses the correct palette and the VDG's Wikipedia entry has a credible synthetic screenshot based on the YPbPr values in the datasheet, which you can compare with the real composite grabs above. absolutely capable of good output, but to do so it needs a quality encoder, and the VZ's ain't it. The best colour I have ever seen from a VDG is actually the Super Micro Script's, using a very high quality output stage as shown in the actual grab above, and comes out vibrant, beautifully saturated, and fabulous on a CRT. You would expect that, however — it's a $500 prosumer video titler from 1985, not a $99 crap home computer from 1983. The next order of business is software. I'd rather not use tape or audio files, and I don't have the disk drive. Fortunately, because the VZ series is so beloved in Australia, those wacky Aussies occasionally create their own modern peripherals in between prawns on the barbie. If you have a VZ-series computer, then you need the BennVenn VZ300 SD Loader. It is fairly inexpensive and provides you a way to load software into your VZ-series computer via SD card, along with topping off the RAM, even more memory with bank switching, and optional solder-yourself connectors for gamepads and I/O expansion. I figured it might be fun to build some hardware for it (and we're going to create a very simple expansion ourselves for the VZ200 in this article), so I ordered the full kit. It works well for my purposes and my wife has ordered another for the VZ-300 now at my in-laws' house in regional NSW. However, I am neither affiliated nor associated with Ben, merely an overall satisfied customer, so this is the part where I will also make three gentle constructive complaints about it. First, things like new firmware are largely delivered through a private Facebook group. This group appears to be very welcoming to new members, but it requires you to be on Facebook, and I don't want to be on Facebook. I managed to get the current firmware another way, and I will be putting it in the Github repo for this project so you don't need to join Facebook either. (If you do want to join, however, I'm sure the "VZ200 VZ300 Laser210 Laser310 fans" group would love to have you.) On the other hand, Ben was reasonably accommodating of my questions over E-mail which I did appreciate. looked like the right one until I got out the continuity tester and realized the actual fault was elsewhere. I'm not sure why some of them were routed around instead of in a straight line. Salora Fellow, a Finnish rebadge of the 4K PAL Laser 200 (by contrast, the Salora Manager is a Finnish rebadge of the CreatiVision-derived Laser 2001). This is determined by a simple memory map check in a snippet of its VHDL that Ben shared with me: x"B7FF" ) else '1'; --B800 or higher RAMarea200 <= '0' when (Address > x"8FFF" ) else '1'; --9000 or higher RAMareaSelora <= '0' when (Address > x"7FFF" ) else '1'; --8000 or higher put the reset button, nor was I particularly enthusiastic about drilling a hole in the case to make one, first due to the questionable quality of the plastic itself and second for purposes of historical preservation of an unusual machine. a Gremlin Blasto arcade board (where we had no reset circuit of any kind) that its 8080A CPU could be crudely reset by simply putting a pushbutton switch between its reset pin and ground. As the Z80 can serve as a drop-in upgrade for an 8080, it can be reset in the same way. .VZ format, which has a trivial 24-byte header indicating filename, starting address and type (BASIC or binary). The LOAD command will conveniently auto-execute binary files when the load completes. You can find many programs on Dave "Bushy" Maunder's exceptionally comprehensive site containing software, photographs, articles and documentation, and most software he offers can be copied directly to the card and used immediately. 2018AD. There's not much of a VZ200 demoscene, but there are a few out there, and this exceptional demo is unquestionably one of the best. It will not run correctly on this particular computer because the video timing is different — not because the clock speed is faster, like you'd see between an NTSC Commodore 64 which is faster than a PAL Commodore 64, but because the NTSC VDG draws the screen faster and thus fires the end-of-frame interrupt more often, messing up synchronization. For that, you'll just have to watch this YouTube recording on actual PAL hardware. It's set up like a trackmo, streaming cassette program data from one channel of a specially recorded CD audio track and using the other channel for music (admittedly a bit of a cheat but the music is excellent). If you didn't think rotozooms, raster splits and even FLD-type effects were possible on the 6847 VDG, then you're in for a treat. Another neat trick is the doubled vertical resolution while drawing the Kefrens bars. The source code is even available for your education. entirely done with semigraphics. It restores the old light-on-dark screen colours used in earlier ROMs with POKE 30744,1 (this works with twiddling the CSS pin with COLOR,1 also). Dubois and McNamara (i.e., Greg Dubois and Tricia McNamara, though Greg did all the programming), who created various titles for a number of DSE systems that were sold in stores. I should note that for many games, including this one, the more-or-less standard control keys are Q and A for up and down, M and comma for left and right, and where a fire button is used, typically SHIFT (SPACE for secondary). Note the "snow" in this shot — that's because the program was animating screen memory at the same time the VDG was trying to read it, so the VDG's memory access got briefly suppressed during that period. Because the display scan can't wait for the VDG to be enabled again, the result is a brief splat of garbage on that line until the VDG is allowed to proceed. Dubois could have simply waited for the VDG's next interframe interrupt, but there's also only so much time between frames before the VDG will start drawing again. As a result, for many programs where significant CPU time was required to do screen updates, outright ignoring the video artifacts turned out to be the least bad approach. that was) by Stephen Clarke. It shows loading from the SD card, the title and options screen (even the VZ200 had software pirates), and then playing the game, which worked fine on the keyboard. This and the other recordings I did for this entry were generated from the composite capture rig for video, but for audio using a microphone near the VZ200's piezo speaker to capture sound (since there's no audio out). You'll notice I'm pounding on the keys a bit, which the microphone faithfully picks up, though you do have to hit the keys with a bit of, shall we say, deliberateness to get them to register. Lemonade Stand: Meatpies, where you sell pies. Yes, the meaty kind, America. glasses pies you want to make, how many advertising signs you want to buy, and the price per item you want to request. Other than the pie business, Larry Taylor's port of the game seems to be heavily influenced by the well-known Apple II version and includes the same sort of simple graphics for weather reports and the like. It oozes professional quality with a slick title screen and menu, and is an extremely fun puzzler to boot. The aim is to create a factory from various primitive machines (paint, rotate, hole punch) that will generate a specific product. It is so well animated and so thoroughly polished that it deserves this short video to fully appreciate it. copious documentation for all its features, as it was a surprisingly credible word processor on par with at least, say, Color Scripsit on the Tandy Color Computer, though Color Scripsit is some years older. Although Wordpro came as a cartridge intended for the VZ-300, it would work on a VZ-200 with correspondingly less document memory available, since it occupied the slot where the RAM expander would go. On the other hand, the program seems to be calibrated for a VZ-300 keyboard since on this VZ200 the keys seem to frequently stutter. (I'll talk about how I got it to work on this 4K system later, though it would not have been possible without the BennVenn RAM expansion.) see this emulation — is also notable because the CoCo 1/2 and the VZ-200/300 all lack lowercase, so both programs solve it in the same way by displaying "capital letters" in reverse video. Wordpro's user interface is more sophisticated than Color Scripsit's, but it's also newer. The lack of a lowercase option on the VZ-300 was again a real missed opportunity, and with the number of machines DSE was buying you'd think they could have talked VTech into engineering a solution. Although Wordpro supports both disk and tape, the BennVenn cartridge currently doesn't emulate them sufficiently for Wordpro to use it. Perhaps this is a hack we can do some other time. a la Night Driver where you are apparently an alien with wings and feet ... It's only rendered at 90 degree angles, but it's fast and well-written, and deserved another video. Some games, though many were fine, would show a weird line pattern over certain sections of the screen like this port of Exidy Circus/Midway Clowns. The pattern was annoying, but in the first few games I played where it manifested, it appeared to be cosmetic (it does not restrain the jumping figures here) and I initially chalked it up to some other undiscovered difference in this NTSC unit. LDI that copies the contents of the address referenced by HL to the contents of the address referenced by DE; the instructions LDIR and LDDR expand upon it, running LDI repeatedly and decrementing the count in BC each time until it reaches zero, respectively incrementing or decrementing HL/DE on every step. The most obvious application for these instructions is copying a block of memory elsewhere, but a less obvious application is using them to fill memory. Consider this segment of actual code from Invaders (dumped with z80dismblr): Ignoring the instruction at $8ca1, you can see that this is setting the source to $7000 — i.e., the start of VRAM — and the destination to $7001 (?!), for a total of $0820 bytes (the zero test is post-decrement). Now, what would that accomplish? Just before the LDIR, we set the contents of $7000 (in HL) to zero. Let's step through the process LDIR takes manually. $7000 is first copied to $7001, which is now zero as well. HL is incremented to $7001, DE to $7002, BC decremented to $081e. Next, $7001 is copied to $7002, but $7001 had zero in it because it was copied from $7000, so all three locations are now zero. HL is incremented to $7002, DE to $7003, BC decremented to $081d. Then, $7002 is copied to $7003, so now all four locations are zero, and so on, filling all intervening locations with the immediate value before. At the end, when BC finally gets to zero, all locations from $7000 to $781f inclusive (i.e., the entirety of video memory and a little past it in system RAM) will have been zeroed out. This is how Invaders clears the hi-res screen and it is indeed faster than a naïve loop, especially for large tracts of memory. But our obnoxious little plastic beast here throws in a wrench by having a location where the RAM isn't working properly. When the "copy" gets to that point, because the copy is only between adjacent memory locations, for every subsequent location the stuck bit will be propagated forward and faithfully copied to each and every byte afterwards. That's also why the pattern doesn't cover the whole screen, because the problem doesn't actually manifest until the "copy" operation arrives there. In fact, in the process Invaders was unwittingly corrupting some of its own game variables with the same stuck bit when they should have been zero, possibly another reason why it wouldn't run correctly. The direct and most definitive solution would be to "simply" replace the VRAM chip, and I even have 6116 SRAMs in stock, but I warned you this is a very cheaply made PCB. Far better repairpersons than I have tried and failed to replace chips on these computers without requiring a lot of rework and bodges, and the prior portions of this article should have already convinced you it's only by the grace of God I haven't soldered my own fool face to the workbench yet. I did not want to try replacing that SRAM chip solely because of one stinking bad bit; I was only likely to make a bigger mess or render the computer completely inoperable. But again: we have an alternative. This fill trick was not universally used or even known by all programmers at the time. The games that do work clear the screen with a simple loop that doesn't propagate the bad bit forward, which works because the store doesn't depend on what memory contents are already "there." Likewise, VTech doesn't seem to use it in the ROMs, which is why the problem didn't manifest during the demonstration tape or with BASIC programs drawing to the screen with BASIC keywords. Most VZ programs are small enough and this code idiom distinctive enough (and usually only present once) that such code can be found and patched to use a slightly slower but functional loop. As such a loop would generally require more bytes, the patch could either direct execution to a tacked-on routine to do the clear, or we could patch it to point to a standard routine in memory. And how are we going to get a standard, always-present, stock routine into memory to do that? Easy: we're going to soft-alter the BennVenn SD loader's firmware. No, stop laughing, because we have a simple means to accomplish it. At the same time we'll combine that with a serial port loader so that we can test these programs live without having to constantly swap the SD card to and from the Talos II, so we'll also build it a bitbanged serial port (I said stop laughing). There were homebrew serial devices back in the day for these computers, so consider this one merely another entry from a venerable tradition. .VZ format. Here's a simple, complete example of "Hello World" showing how to construct that header and which can run directly from the card, demonstrated in the screenshot. This is one of several files you will find in this article's Github repo. As with all our assembler projects except for the 6502 and PowerPC, we crossbuild using the Macroassembler AS. The 24-byte header marks this as a machine language program that starts at $8000, the beginning of the extra memory furnished by the BennVenn device. Although the magic number VZF0 (for BASIC programs, which always start at $7ae9) or VZF1 would appear to be critical, the firmware doesn't seem to check it on loading or even generate it on saving, only that the byte just before the starting address word (everything is Z80 little-endian) is either $f0 or $f1. Upon execution our program then calls a "display null-terminated string" routine in the VZ ROM, the update for which is pushed to the screen during the next VDG interframe period, and returns to BASIC. The binary is assembled with AS like so, using a simple Makefile: >hello.vz (44 Bytes) % xd hello.vz 00000000 56 5a 46 31 48 45 4c 4c 4f 00 00 00 00 00 00 00 |VZF1HELLO.......| 00000010 00 00 00 00 00 f1 00 80 21 07 80 cd a7 28 c9 48 |........!....(.H| 00000020 45 4c 4c 4f 20 57 4f 52 4c 44 0d 00 |ELLO WORLD..| 0000002c LOAD"HELLO" will load and immediately execute it from the given entry address (which is both the load and execute address), as shown in the screenshot above. the Github repo I have a small program to cycle the LEDs on his proto board, which you can see in this brief video. It sets all GPIO pins to output and lights all 24 green LEDs connected to them (the red ones are check LEDs for 3.3V, 5V and 9V), then cycles a dark one through them from left to right until a key is pressed. This is done by hooking into the interrupt routine called when the VDG completes a frame, the only regular timesource on an unaltered VZ200, and used back in the day as a simple clock by various programs. Every third tick of the interrupt routine, this code runs: It rotates an in-memory image of the GPIO pin values, then emits that to the I/O locations. Because the rotation is to the left, we can see that the GPIO lines must also be oriented little-endian, i.e., the least significant bit of each GPIO output register is on the left. This then informs how we'll set up our bitbanger. A half-duplex system will suffice for downloading, since the sender will wait for us to indicate receipt between packets, and that will let us concentrate entirely on receiving until a full packet is obtained. The absolutely fastest speed we can receive at is generally limited by how quickly we can clock data bits into an accumulator from the receive line. If we connect the receive line to the least-significant input of one of the GPIO registers (we'll use the leftmost for convenience), we can do it in 23 cycles: The Z80's clock speed (in any of these systems) does not neatly divide into any standard bitrate, but theoretically 23 cycles per bit gives us a maximum possible transfer speed of ((315 000 000/88)/23) =~ 155632.4 bits per second. That suggests you might be able to get 115200bps with an unrolled loop, but at speeds this fast time required for other tasks starts to be a concern, such as storing to memory, checking how many bytes have been received, and branching back to get another, all of which together will certainly be more than 23 cycles. The other problem is the time required to sense the start bit, because this can occur at any moment, and hardware UARTs generally end up repeatedly snooping the line at some multiple of the bitrate to ensure they won't miss one. We, on the other hand, can't even check for a start bit at just twice 115200bps. In fact, the fastest we can check for a start bit (a zero) is which because of the unavoidable branch is actually longer than the time to clock in a data bit! However, these numbers do suggest that half that speed, i.e., 57600bps, is plausible. Flipping the equation around, that gives us a relatively generous ((315 000 000/88)/57600) =~ 62.1 cycles per bit, long enough to do our housekeeping tasks on each byte, and our tight startbit loop can poll the line at ((315 000 000/88)/25) =~ 143181.8 bits per second (a familiar number to some of you), which is at least twice the data rate and should be sufficient for the sort of continuous data transfer we'd experience receiving a data packet. We will target this speed. (Note from the future: an early draft used in a,(c) in the startbit loop, which is a 12-cycle instruction. This single extra cycle reduced the startbit poll rate to 137674.8bps, and at that speed multiple bytes got missed and/or corrupted. We are probably only just fast enough to make this work.) Parenthetically, VZ-300 owners in the audience will now have asked if this will work for them. If we substitute its lower clock speed at 57600bps, we get ((17734475/5)/57600) =~ 61.5 cycles per data bit and a maximum startbit poll rate of ((17734475/5)/25) == 141875.8 bits per second exactly. Because you can sample a little bit faster but never slower, we would need a separate version for the VZ-300; the same code will not work reliably on both. Sorry! That will be the subject of a future article. Note that by making receive fast, we made transmit slower: unless we occupy the least-significant bit of another GPIO register, which seems rather wasteful, the next fastest position is the second-to-least significant bit. This snippet needs no less than 31 cycles to send the next bit of a character stored in a register other than the accumulator (here we'll use B): If we had to completely guard that GPIO register from interfering with any other GPIO pins on the same register, it would be even longer because we would need to read the current state and then do the bitmasks. Mercifully we'll just refuse to support that, and as 31 cycles is still well within our 62 cycle maximum per bit, she'll be right. Texta Sharpie. If you don't have his board, you can still figure it out a little less conveniently with a voltmeter. Ensure all pins are set to output and turned off (something like FORI=68TO73:OUTI,0:NEXT will do from BASIC). The only live lines at that point should be ground, 3.3V, 5V and 9V. Find ground first, which you might do by checking for continuity with the ground test point Ben provides on the board, then use that as your common to find the voltage pins. Mark those; the rest are GPIO. Turn on pins one and two individually (OUT 71,1 or OUT 71,2) and look for voltage. don't connect the 3.3V line. Instead, for the programs below, ensure the HW-597 is already plugged into your host (such as with a USB extension cable) and showing bright status LEDs before powering on the VZ-200, or it may try to unsuccessfully power itself from the other lines and get a little daft. BITS) toggles the screen colour as it sees activity on the receive line. This is easiest to watch at a slow bit speed of around 150 baud or so. Here, I hooked it up to the Talos II, ran picocom -b150 /dev/ttyUSB0 (adjust for the path to your device), and just banged on the T2's keyboard. If you get alternating flashes of green and orange on the VZ while you do so, then your receive line at least has basic connectivity. ASCII), effectively one half of a very slow terminal program. We'll use the internal ROM routine to display a character, which will get us scrolling for free, and then force the update instead of waiting for the next IRQ — which is disabled anyway to make sure our timing remains precise. (Typing only upper case characters works; lower case shows as symbols.) This program runs at a sedate 300bps, and the reason is because the VZ ROMs are written for space efficiency, not time efficiency, at least to any extent they're efficient at all. 300 baud gives us an apparent surfeit of cycles using our formula — 11931 cycles per bit — but we may well need all of them since we've really got no idea how long it can take the ROM routines to do any arbitrary screen update. We won't be using the ROM much for our data blaster program, but a general purpose terminal emulator would have to consider a proper solution to achieve faster speeds. This is something else we might revisit in a future article. The other purpose of this ASCII test program is to mock up how we'll write the fast serial loader. Despite the fact we have over 10,000 cycles between bits at 300bps and could easily have written each bit we read as a subroutine call to save memory, I still inlined each clocked-in bit using a macro because we necessarily need to at 57.6kbps — among other things, each CALL is 17 cycles and the RET to return from it is 10, which would consume almost half our CPU budget by themselves. I'd also like to observe, again with my usual biases showing, that cycle counting isn't nearly as much fun on the Z80 as it is on the 6502. Most opcode tables will fortunately collapse the whole Z80 T-state and M-state business into a single unified cycle count, but unlike the 6502 where there are instructions with execution times of 2, 3, 4, 5, 6 or 7 cycles (so you can easily make a busywait from any combination), the Z80's cycle time options start at 4 and go as high as 23, skipping many numbers, and many of the smaller cycle times require specific conditions like not taking a branch. Having considered our little half-terminal program, here's what I settled on for 57.6kbps, written as AS macros: From our previous maximal case I turned the in b,NN instruction into a slightly slower in b,(c), which burns an additional cycle, but means we have 38 cycles left over of our 62 which we can split exactly between two ld (ix+N),b instructions of 19 cycles each. (This also lets us possibly alternate between multiple connected serial devices by changing C, but one catastrophe at a time, I always say.) The separate top and bottom waits are for situations where we have an odd number of cycles left over and need to have different wait times; consider this future expansion for the VZ-300. When the stop bit arrives, we need to dump the byte into a buffer and get ready for the next one in the same 62 cycles, since we expect the other end will be ready to fire the next start bit at us immediately. To make an interesting and vaguely useful display (as well as not requiring additional memory), the screen itself would seem like a good place, but this also imposes some constraints: we only have 512 bytes there (i.e., 32x16), some of which we also need for indicating status, meaning our received packets should really be no larger than 256 or 384 bytes to allow for a transmission log and other useful info. The protocol we select should have packets no larger than that, be easy to implement (because I'm lazy), and be something that pretty much everything can speak. While we've seen Xmodem-1K or Xmodem-CRC implemented other places (like The Newsroom's Wire Service variant), I just decided to go with good old O.G. Xmodem. That contains 132-byte packets and is easy to write and checksum, and any errors over USB between your host computer and the VZ200 would undoubtedly be from bad bit framing rather than line noise which the default checksum algorithm should detect. While it overruns memory a bit at the end, this is largely irrelevant for just loading something we intend to immediately execute. All that preamble yields us a stop bit stanza like this: Here we use the IX index register as a pointer into screen memory and the L register as the packet length countdown. A double-store of the same location onscreen once again soaks up 38 cycles, then the increment and decrement, then the branch. A nice thing about the JP instruction, which is absolute instead of relative, is that the conditional branch form requires 10 cycles regardless of whether it's taken or not, so this entire stanza always consumes precisely 62 cycles as well. We use that instruction a lot in the cycle-exact portions so that we always have predictable CPU time. Once we get a full packet, we know the sender won't do anything until we reply, so we can relax our timing and validate the packet at leisure, copy it into the correct place in memory and send the ACK for the next one. We send bytes using the same send-bit route I showed you before or a trivial variation, padded to 62 cycles per bit and also inlined. We accept .VZ-format files in this loader, so we have special handling for the first packet to make sure it has a generally correct format and note the type and memory address, which is where the rest of this packet and subsequent packets will be copied to. If it doesn't, then we send CAN and force the sender to abort. By contrast, the start bit is handled with the same 25-cycle code I showed you before, because this is the fastest way we can be sure we won't miss one. But this also means we have no way of checking the keyboard nor implementing a timeout: there is no spare time to count cycles or scan for keys, and the only free-running timer is the VDG end-of-frame IRQ which will totally mess up our timing if that runs, so during the entire transaction IRQs are disabled as well. The program therefore assumes your sender is up and ready to go the moment it starts executing. On startup it fires off the initial NAK and waits, possibly forever if the other end never gets the signal until you reset the VZ200. (We display a message to alert you that no transmission has yet been received, which is immediately overwritten on-screen by the .VZ metadata.) Let's see our loader in action. On the host side, to send the program to the VZ200 you can use any terminal program that speaks Xmodem (and just about everything does), just as long as it automatically starts the transfer as soon as the initial NAK arrives. With both my MacBook Air laptop and my Raptor Talos II workstation, I use lsx with the usb2ppp tool from BURLAP, which we earlier used to tunnel PPP over a serial line for the Brother GeoBook, but can be used to run pretty much any program over a serial port. Here's an example, substituting the path to the HW-597 that your machine uses (e.g., Fedora Linux on my Raptor Talos II uses /dev/ttyUSB0): We start the loader, which you can run as a separate program on its own and it will load anything that does not encroach on its default location at $e000. (We'll find an even better spot for it in just a minute.) Since our ASCII half-terminal program loads and executes from $8000, this is no problem; it takes up three blocks (there's apparently an off-by-one bug in lsx), so it's a good quick test of the machinery. The loader immediately sends NAK and we're off to the races. RUN you can just hit RETURN on to run a BASIC program. Ta-daaaaa! The Australian, paywalled link). Now we want to make it part of the system. To convert it to "firmware" takes advantage of a specific feature Ben built into the SD card reader for easier updates: the ability to load and run a new system "ROM" directly from the card. The default memory map for the VZ200 puts the system ROMs between $0000 and $3fff, reserving the space from $4000 to $67ff for ROM cartridges, though a cartridge could technically take over any address range above the TOM (that's how the RAM expanders worked, after all), and we'll come back to that point later. For the system to recognize code at $4000 or $6000 as part of a cartridge, a sequence $aa $55 $e7 $18 is required in that order, and execution then starts at $4004 or $6004. As shipped to you Ben's device not only fills in RAM above the TOM, it also fills RAM in from $4000 to $67ff and puts its own code there with that sequence, effectively "slushware" (a la the DECmate II, and we'll use the same term here since it's not really ROM). This code is run by the system ROM on startup like a "cartridge," because that's what it looks like to the system ROM, and this code is what does the RAM test and initializes SD card access. Once the system is up, it then does this: VZDOS.VZ it's loading from the card is "magic." If present, it will be used to temporarily replace the slushware at runtime; for a couple extra seconds spent loading it you don't have to mess around with burning it to the cartridge. But this binary is not signed or checksummed, nor does the load check if it's even a new copy of the slushware — any program will serve as long as the .VZ header loads it to $8000 but the code is written to execute from $4004 (as the onboard image would). The slushware then places a little trampoline copy routine at $a000 and runs that to copy the 8K from $8000 to $9fff to $4000, overwriting the old slushware, and jump into the new one. To make our replacement code useful, we should provide some quality-of-life features. We'll make it autostart into a transfer so that all you have to do is load up the program into your Xmodem sender and reset the VZ200, and after a polite delay it will pull down and run the program automatically. We'll also let you load multiple times if you want instead of immediately trying to execute the current file being transferred. We'll also finally put that routine in memory for the slower but more forgiving memory fill operation, and enable the VZ sticks by default in case we find something that really needs them. But more important than those, we should also let you drop back into BASIC and use the SD card loader normally without having to pop the card out. That requires us to include a copy of the actual VZDOS.VZ which we will embed in our replacement code. This adds an additional complication, because the 2.32 slushware (the most current as of this writing) is already 8068 bytes long minus the .VZ header, leaving us only a little over 2K for our own code. Moreover, if we're over 8192 bytes (and it's inevitable we will be), the loading process will overwrite at least 100 bytes of our code with the trampoline and fail to copy the rest. We'll solve this by immediately copying the remainder as the first step in our binary, and then post-processing the object to yield a new VZDOS.VZ with a 128 byte hole between the first 8K and the last 2K (remember it gets loaded to $8000, so we have plenty of space there). Part of this code will be used to make a jump table entry for our slower fill so the call will stay constant with future updates, if any. That looks like this: Since we are embedding VZDOS but we need to keep all its relative offsets intact, we skip the first 7 bytes and the .VZ header, and run those instructions later just before we jump back into it (if we do). We also do a couple patches so that VZDOS will reload (us) on a reset, but not when we execute the embedded copy, and still use an unmodified 2.32 so that you can see there's nothing up my sleeve. Time for our fill routine. 7001, etc. dec bc ld a,c or b ld a,(slobyte) ; flags kept jr nz,sloclrl ret not in VRAM, then do everything LDIR would and leave the routine with A, HL, DE and BC set as they would be at the end. (We do set the Z flag on exit, but most routines won't care about this.) Then our Invaders example, which was can be patched by overwriting the two instructions at $8caa with ld a,0:call 04008h. xor a and could just nop it.) (I couldn't cursorily find out more about this person), who also did Invaders and a number of other software releases for DSE under contract. except scrolling the attract-mode screen, because unavoidably we'll scroll up the stuck bit. I don't think there's a good general way around that. Fortunately it's purely cosmetic, and most games I converted in this fashion seemed to work fine without any glitches. WORDPRO.VZ can also be placed on the card and run from there as we did previously, though doing so doesn't enable file operations either.) You'll need copies of the actual ROMs, which do circulate. The entirety of the code — really a disguised linker script — looks like this: Remember that Wordpro was first and foremost written for the VZ-300, which has 16K of RAM, so its TOM is much higher ($b7ff). The cartridge, because it has full control of the bus, thus maps its much larger ROM in at $d000-$ffff, with 2K of $d000 also mapped to $6000 with the cartridge header sequence. This echo of the main cartridge ROM is what actually autostarts everything since the system ROM doesn't know to check anywhere else but $4000 and $6000. The same scheme works for the VZ-200, except there is no RAM between $9000 and $bfff. But with the BennVenn cartridge, we have RAM everywhere, so we load to $8000 and copy the Wordpro ROM dumps upon execution to their proper location(s), duplicating $d000-$d7ff to $6000-$67ff like a real one, and jump into the "cartridge" at $6004. This copy operation will destroy BFL-the-slushware, but we can just reset to reload it. Wordpro will get all the RAM it would expect to get on a VZ-300, even on this 4K VZ200. too efficient and constructed a general fill subroutine which lots of things called, the screen clear portion being only one of many. (Darn those efficient little assembly language programmers.) we are closed now!"), one of my favourite Intellivision titles, given a solid conversion as Hamburger Sam also by D&M. Z88 Development Kit. Arkaball by Jason Oakley, an obvious Arkanoid clone, but competently crafted and worth a video. VZ-DOOM, a Claude-written raycast Wolfenstein 3D-style game. It fortunately didn't need patching and "just worked." Your mileage may vary as to whether you think the AI usage is cheating, and this blog has a strict no-AI-article-text policy, but it performs as advertised on this NTSC machine and likewise merits a video. VZ-DOOM uses WASD for motion, comma and period to strafe, E to open and SPACE to shoot. VTech items continued to show up in Dick Smith stores, and VTech did make other Laser computers, these "later Lasers" were not closely related nor compatible with the VZ line, or each other, and most of them were much less successful — with the exception of their Apple II clones. The Laser 3000, fresh from its Summer CES 1983 debut, also made it down under to Dick Smith stores as the Dick Smith Cat. It required real Apple II ROMs in an external cartridge for compatibility, which also made it a target for Apple, fresh off their successful victory against Franklin Computer for using substantial portions of the Apple II ROM in the Franklin Ace 1000. Although VTech was still able to sell it elsewhere and the Apple II ROMs were never integrated into the base machine, Apple instead argued that the mere use of the ROMs was an infringement upon its intellectual property regardless, and successfully blocked further imports to the United States. VTech learned from this just like they learned from EACA, and developed new ROMs that were carefully clean-room reverse-engineered, additionally incorporating a licensed copy of Microsoft BASIC retrofitted to act like Applesoft BASIC. This process provided the legal assurance that not a nybble of Apple's code was even consulted, and VTech used these unencumbered ROMs to create what was introduced at Summer CES 1985 as a redesigned "90% compatible" (per Creative Computing) Laser 3000. In turn, that reworked Laser 3000 was transformed into the 1986 Laser 128, a semi-portable riff on the Apple IIe with an expansion slot and built-in 5.25" floppy (later 3.5"). VTech's work paid off handsomely: reviewers were impressed by its value for money, most software never noticed the difference, and Apple's repeated attempts to prevent its importation and sale all ended in failure. The Laser 128 family's low price and exceptional built-in functionality made them the most widely sold Apple II clones in the United States, finishing on the market as late as 1989 in an upgraded 3.6MHz version with a 3.5" disk drive and over 1MB of RAM. returned to journalism in 1987. Meanwhile, DSE was still selling enough VZ-300s to keep them in this 1987-88 catalogue, and according to Greg Dubois' contacts at Dick Smith even at that late date they continued moving over 100,000 units a year, but in the end it was actually VTech that wanted out: VTech wanted to redirect factory capacity to the Laser PC and wasn't willing to keep producing the older system, and even DSE's offer to double the order couldn't convince them otherwise. Although some software and accessories still appeared in the 1989-90 catalogue, the computer itself did not, and the line disappeared completely by 1991. For a time afterwards DSE sold IBM consumer PCs and even Commodore PC clones in the process of adopting its own DSX PC brand. In the 2000s the company failed to make a successful transition from its mail order origins to the new world of online sales, and despite several attempts to rework its retail presence Woolworths unloaded Dick Smith to Anchorage Capital Partners in 2012 in a controversial deal where much of the sale price was allegedly financed by Anchorage liquidating DSE's own assets. Anchorage took the company public in 2013, netting tens of millions, but the company did not recover and all 363 remaining stores were closed by May 2016. Today the Dick Smith brand lives on solely as a mark of online retailer Kogan, primarily selling consumer electronics. Australia's crap home computer, by golly. Much as Sinclair did in the UK and Commodore in the United States, the Aussie VZ-200 and its successor VZ-300 remain as beloved as they are because they introduced a entire generation of Australians to computers who could never buy one before. While a few importers tried to bring the also-rans to the South Pacific (DSE even had Radofin's undead zombie Aquarius in their 1985 catalogue!), the VZ was there first and in large numbers, over 20,000 VZ-200s alone, becoming the down-under standard against which all subsequent cheapo systems were measured. Indeed, when the desperately dire Tandy MC-10 got in front of Australian Personal Computer in December 1983, reviewer Surya commented that when considering it versus the VZ-200 "the MC-10 does not stand up well to this comparison." Legions of user groups and newsletters sprung up to support it, tinkerers designed all manner of expansions for it, and users wrote and sold their own software for it, ironically spawning exactly the sort of hobbyist-driven computer ecosystem post-Dick Smith that Dick Smith-era Dick Smith had previously tried to foster. Ultimately the little Hong Kong desk wedge became more of an Australian computer icon than even some truly homegrown ones. As for this NTSC VZ200, it should be very possible to clone it because the ROMs are the same as the better-known DSE flavour and it's otherwise all off-the-shelf hardware; moreover, it would be infinitely easier to maintain and repair than the ghastly PCB it's got now. The schematics for the PAL Dick Smiths are widely available and there are even fewer components needed to build an NTSC one. At least one person has already made an NTSC-compatible RC2014 workalike, though that project uses a GAL, and it seems like we could make a more straightforward knockoff just using what the original did — with the exception of the colour encoder, which would be improved and somewhat simplified by using a proper MC1372 instead of the TBA520. I know "Leaded Solder" Mike has his clone CreatiVision, so I look forward to him picking this up as a new challenge. ;) We'll be doing more with this system and particularly the VZ-300, now safely awaiting my next Southern Hemisphere trip, in future articles — along with a recently-acquired PAL CreatiVision of our own, the basis for the Dick Smith Wizzard, which we need to see if we can get up and running (I do like me a 6502 and a 9918). Meanwhile, David "Bushy" Maunder's VZ website can give you all the articles, technical information and software that you can stick on an SD card. are all on Github, including pre-built binaries and ready-to-go Bush Food Loader "slushware" you can use with your own SD card loader, all of which are under the BSD 2-clause license.
In short: from my experience, people like map and filter, but not reduce. I use functions like map and filter all the time. When I put that code up for review, my peers rarely complain. I get plenty of feedback about other decisions, but not about my use of map and filter. I cannot say the same for reduce. Often, when I’ve submitted a patch with reduce inside, I get a comment like, “this part is hard to read.” And I see reduce way less than map, filter, some, and so on. Anecdotally, I have come to believe that programmers don’t like reduce as much. I don’t know why, but I have a few theories: reduce is harder to read. reduce is less familiar. reduce can have worse performance compared to other options. reduce is less elegant in languages I use, like JavaScript, Python, and Swift. In my blissful stint as a Clojure developer, I did not get this feedback. I’m wrong, and I’m seeing a trend that’s not real. I usually just change reduce to something else and move on. Even though I prefer it, I don’t usually care much. But it’s a little social phenomenon I’ve observed, and I thought I’d document it. I’ve also noticed this less recently, possibly because code review is less thorough nowadays. Do you notice this? Do you like reduce? Please tell me.
In the 1970s, floating-point arithmetic was a mess. Computer manufacturers had a dozen incompatible arithmetic standards. Moreover, floating-point systems were designed around hardware simplicity rather than mathematical rigor, leading to problems with numerical stability. This changed when Intel introduced the 8087 floating-point coprocessor chip in 1980, designed to be as accurate as possible, even in the corner cases. The 8087 became popular because it could be installed in the IBM PC, making floating-point operations up to 100 times faster in applications ranging from spreadsheets to CAD. But more importantly, the 8087 became the floating-point standard used by most computers today. The 8087 implemented its instructions in complex low-level code called microcode. I'm part of a group, the Opcode Collective, that is reverse-engineering this microcode, and I've recently made some progress. In this post, I examine the microcode for one of the 8087's instructions—FSCALE—and describe how this microcode works. The FSCALE (Floating-point Scale) instruction provides a quick way to scale a number by a power of two, much faster than a multiplication. I figured that FSCALE was a simple, almost trivial instruction that would be straightforward to understand and explain. Spoiler: it is not simple. FSCALE uses over 140 micro-instructions and three levels of subroutine calls to handle many special cases. But the FSCALE microcode illustrates many interesting parts of the 8087, such as the shifter, the adder, and the exponent converter, and also reveals a hidden feature of the 8087, so hopefully you will find it interesting. To explore the microcode, I opened up an 8087 chip and created a high-resolution image with a microscope. The large microcode ROM is in the center, holding the 1648 micro-instructions that control the chip. The microcode engine on the left steps through the microcode, handling jumps and subroutine calls. The bottom half of the chip is the "datapath", the circuitry that performs floating-point calculations; it is split into a 16-bit datapath for the number's exponent and a 64-bit datapath for the number's significand (also known as the fractional part). Die of the Intel 8087 floating-point unit chip, with main functional blocks labeled. The die is 5mm×6mm. Click for a larger image. Zooming in on the bottom part of the chip shows the datapath circuitry; I've highlighted the relevant parts below.1 The exponent ROM holds various constants. The exponent converter is a specialized circuit that examines exponents, detects special values, and converts between exponent formats.2 The shifter is a large component; it allows a 64-bit3 value to be shifted left or right by arbitrary amounts. (I wrote about the 8087's shifter circuitry here.) The adder is the heart of the 8087's calculations; it is used in a loop for multiplication, division, and square roots. The B register holds one input to the adder, while multiple sources can provide the other input. The sum register holds the adder's output. The eight stack registers and the temporary registers hold floating-point numbers. A close-up of the 8087's datapath, showing functional blocks that are used by FSCALE. Details of the 8087 In this section, I'll explain some features of the 8087 that are important for the FSCALE microcode. To use the 8087, a programmer stores values in its eight internal registers, organized as a stack. Each register holds an 80-bit floating-point number. To optimize performance, each value in the register stack has an associated "tag" value, which is mostly invisible to the programmer.4 A tag labels a value as valid, special, zero, or empty. A "normal" floating-point value is tagged as valid. If the floating-point value is infinity, Not a Number (NaN), or a denormalized value, then it is tagged as special. A zero value is tagged as zero. Finally, if a register is empty (e.g., its value has been popped off the stack), the register is tagged as empty. The 8087 also has temporary registers that it uses internally: tmpA, tmpB, and tmpC. Like the stack registers, tmpA and tmpB are 80-bit registers, along with two tag bits. However, tmpC only holds a 64-bit significand. The 8087 supports a variety of data types: floating-point numbers of various sizes, integers, and binary-coded decimal. But internally, everything is stored as an 80-bit floating-point number called a "temporary real"; for the rest of this article, I'll only be considering temporary real values. A number has three parts: the sign bit, the 15-bit exponent, and the 64-bit significand (the fractional part), In most cases, a floating-point number is represented by sign × significand × 2exponent. The significand is a 64-bit binary number of the form 1.bbb...: a leading 1, followed by the binary point (the binary equivalent of the decimal point) and the rest of the bits.5 What makes floating-point numbers useful is that their scope covers the incredibly small to the astronomically large, thanks to the exponent, which ranges from -16382 to 16383. One important detail is that the exponent is stored with a "bias" of 16383 added to it. Thus, the stored exponent is always positive, even if the real exponent is negative.6 The 80-bit temporary real format. The triangle indicates the binary point, analogous to the decimal point. From the Intel Numerics Supplement. The 8087 supports several types of numbers that are represented as special cases with special exponents, as shown below. Zero and infinity have both positive and negative values. "Not a Number" (NaN) represents values that don't make sense, such as 0/0 or sqrt(-1); NaN has a large number of representations, not a single value. The 8087 also supports denormalized and unnormalized values, which are extremely small values where the significand doesn't have a leading 1. The encoding of special values. Based on Table S-31 in the Intel Numerics Supplement, but highly simplified. The "x" bits are arbitrary, as long as they don't conflict with another type. The 8087 has a complicated exception system with six types of exceptions to indicate if something went wrong with an arithmetic operation. The most serious is the "invalid operation", indicating that the operation does not make sense, such as 0/0 or ∞-∞. It also includes accesses to an empty register (stack overflow or underflow) or operations on a NaN value. The 8087 also has an overflow exception if a value is too large to store, an underflow exception if a value is too small, and a divide-by-zero exception (excluding 0/0). A denormalized operand exception indicates that the result is too small to store as a normal value, but can be stored as a denormalized value. Finally, a precision exception indicates that a value cannot be represented exactly and must be rounded. (Precision exceptions are very common; even 1/10 will yield one.) The 8087 provides fine-grain control over each exception type, specified by bits in the control register. If an exception is unmasked, the 8087 sends an interrupt to the 8086 processor, which handles the problem in software, for instance by terminating the program or logging an error. Alternatively, the exception can be masked and the 8087 will continue execution as best it can. For instance, an invalid result will be replaced by NaN, while an overflow or divide-by-zero will be replaced by infinity. A precision exception will result in rounding. The point of masked exceptions is that calculations continue, yielding an answer that is as accurate as possible; in most cases, this is what the programmer wants. These features make the 8087 flexible and provide accuracy, but they also make the microcode much more complicated, since the combinations of special cases need to be handled appropriately. The 8087's microcode Executing an 8087 instruction can require hundreds of internal steps to compute the result. These steps are implemented in microcode with micro-instructions that specify each step of the algorithm. (Keep in mind the two levels of instructions: the assembly language instructions used by a programmer and the undocumented low-level micro-instructions inside the chip.) The microcode ROM holds the 1648 micro-instructions that implement the 8087's instruction set. I'm working with the Opcode Collective to reverse-engineer the micro-instructions and fully understand the microcode (link). The 8087's micro-instructions are complicated, with many corner cases and ad hoc functions, but I'll provide a simplified overview. Each micro-instruction consists of 16 bits, as shown below. The first three bits specify the micro-instruction's type, which controls the meaning of the remaining bits. The first type is a transfer operation, which transfers data from one internal register to another. The two fields specify the source and destination. The three remaining bits are used for various special cases. Next is a shift operation, which uses the barrel shifter to shift a value left or right. The third type of micro-instruction controls the adder (which can also subtract). The miscellaneous instructions include stack pointer operations, tag modification, exceptions, and subroutine return. The far jump and far call micro-instructions perform a jump or subroutine call to a target micro-address in a fixed list. The condition field allows conditional jumps/calls/returns based on numerous conditions, while the last bit inverts the condition. A local jump is a relative jump to a nearby micro-instruction. Structure of an 8087 micro-instruction. The FSCALE microcode When the 8087 starts executing an instruction, the instruction decoder circuitry determines the starting address of the microcode corresponding to the instruction. This 11-bit address is loaded into the microcode engine, which starts executing the microcode.7 The microcode for FSCALE (shown below) starts at decimal address 748.8 The idea behind FSCALE is straightforward: if you want to scale a floating-point number by 2N (for an integer N), you add N to the number's exponent. This allows you to multiply or divide by a power of two much faster than using the full floating-point multiplication operation. However, the microcode for FSCALE is unexpectedly complicated and uses several microcode subroutines. In brief, the microcode first checks for arguments that are zero and then handles other special arguments. It converts the scale argument to an integer and adds it to the exponent. Finally, it handles any overflow or underflow. In more detail, the microcode routine starts by moving the first argument from the top of the stack (st(0)) to the tmpA temporary register. If the argument is zero, the routine immediately returns. (Thus, scaling 0 by anything—even NaN—will give a result of 0.) Next, the second value on the stack (the second argument) is moved to the tmpB temporary register. Likewise, the code returns if this value is 0, so scaling anything by 0 leaves the value unchanged.9 Next, a constant value is selected; selecting a constant and using it are two separate micro-instructions. (The 8087 has separate ROMs for 16-bit exponent constants and 67-bit significand constants; this one is an exponent constant.) In the normal case, execution jumps to address #0763, skipping the call to subroutine SPECIAL_TMPS. FSCALE: #0748 st(0) -> tmpA Input argument from top of stack #0749 jmp #0776 if tmpA:tag ZERO Bail if 0 #0750 stackPtr++ #0751 st(0) -> tmpB Scale argument from stack(1) #0752 stackPtr-- #0753 jmp #0776 if tmpB:tag ZERO Bail if 0 #0754 expconst 0x403e Const 403e: exp shift to convert to int #0755 jmp #0763 if not tmp empty/special/div #0756 call SPECIAL_TMPS Special handling #0757 jmp #0762 if flag #0758 jmp #0761 if not tmpB:tag SPECIAL #0759 except:invalid Invalid exception, use NaN #0760 NaN -> tmpA #0761 jmp #0776 if intr #0762 jmp #0775 if expConv[0] Return tmpA if expConv set, otherwise continue #0763 tmpB:exp -> Breg Normal path #0764 tmpB:sign,exp -> expConv ExpConv will test tmpB's sign #0765 expConst -> tmpC Const 403e #0766 adder: tmpC - Breg cin=1 403e-exp is amount to shift to convert tmpB to int #0767 sumreg:frac -> shiftcount Store in shifter control #0768 shift tmpB:frac R count byte bit Perform the shift #0769 shift R -> Breg Breg holds scale argument as an int #0770 jmp #0777 if neg Negative Breg needs separate handling #0771 adder: tmpA:exp + Breg cin=0 Add the scale to the exponent #0772 sumreg:frac -> expConv Put result in expConv to check #0773 sumreg:frac -> tmpA:exp Update exponent with sum #0774 call NONNORMAL_RESULT if not exp normal Handle overflow/underflow #0775 tmpA -> st(0) Save result back to stack #0776 RNI Done: Run Next Instruction #0777 adder: tmpA:exp - Breg cin=1 Subtract Breg #0778 jmp #0772 Continue processing Continuing at #0763, the second argument is converted from a float to an integer, which takes a few steps. For example, suppose the argument is 9, which in floating point is 1.001×23. The significand bits 1000 are "left justified", but for an integer, these bits need to be "right justified" by shifting them to the right. In general, if the exponent is n, the significand is shifted right by 63-n bits. But recall that the exponent is biased by 16383. Thus, the significand must be shifted right by 63-(exp-16383) bits, that is 0x403e-exp bits. (This explains the constant 0x403e earlier in the microcode.) Converting a float to an int by shifting. In the microcode, the subtraction takes several steps. At #0763, the exponent of the second argument is moved to the B register, one of the inputs to the adder (completely different from tmpB).10 Next, the sign and exponent are moved to the exponent converter, a circuit that, among other things, tests for overflow. Next, the constant 0x403e (selected back at #0754) is moved to the tmpC register. At #0766, the adder is activated, subtracting the exponent from the constant.11 The adder puts the result into the sum register, and this value is copied to the shift count register, which controls the shifter. This value indicates how many bits the second argument must be shifted to convert it to an integer. At #0768, the shifter is activated to shift by the desired amount, using both the bit shift part and the byte shift part. As with the adder, activating the shifter and reading the result are separate micro-instructions; the result is put into the B register. The core part of the FSCALE instruction is finally performed at #0771, adding the second argument to the first argument's exponent. The adder is activated to add the B register value (the scale) to the exponent, and the updated value is stored in tmpA's exponent. (Except if the scale factor is negative, it is subtracted via the #0777 path.)12 The value is also sent to the exponent converter circuit, which checks the exponent for overflow or underflow; if so, subroutine NONNORMAL_RESULT is called. But in the normal case, the updated value is copied from tmpA to the top-of-stack register st(0). Finally, RNI (Run Next Instruction) indicates that the microcode routine is done and the instruction is completed. Thus, even in the straightforward case, FSCALE takes about 22 micro-instructions. Handling empty or special arguments What happens if an argument accesses an empty stack location (i.e. stack underflow) or is a special value (infinity, denorm, NaN)? These cases are handled by a micro-subroutine that I'll call SPECIAL_TMPS15 because it processes special values in tmpA and/or tmpB. This subroutine is a general-purpose routine, used by basic arithmetic operations, FSCALE, FTST (test), and FPREM (partial remainder). The control flow through SPECIAL_TMPS is rather convoluted since the code must prioritize issues if, say, one argument is empty and the other is a denorm. I'll just give a brief summary; see the footnote13 for details. First, the subroutine converts any denorms to unnorms. Then it checks for access to empty stack locations, raising an exception or interrupt if so. Then it checks the two arguments again. If either is NaN, an exception or interrupt is triggered. Otherwise, it returns a status indicating the type of arguments. Unexpectedly, if both arguments are NaN, the code compares the two NaN values and returns the larger. This behavior may seem very weird, but it's a documented feature.14 You might think that NaN is a single value, but it's actually an enormous family of values. The idea was that the programmer could use different NaN values to signal where a problem occurs. For instance, you could put a different NaN in each location of an uninitialized array, so you could tell which position was accessed. For some reason, the designers of the 8087 decided that if you perform an operation with two different NaNs, the result is the larger one. Thus, the microcode needs code that detects if both operands are NaN and computes the larger, using a subtraction for the comparison (#1518). SPECIAL_TMPS (J5): #1484 call SPECIAL_VAL if tmpA:tag SPECIAL Handle special values in tmpA/tmpB #1485 xchg tmp #1486 call SPECIAL_VAL if tmpA:tag SPECIAL Handle tmpB special #1487 xchg tmp #1488 1 -> flag Flag=1 by default #1489 jmp #1500 if not tmp empty/special/div 0 -> expConv if tmps okay #1490 1 -> expConv #1491 jmp #1497 if not tmpA/B empty #1492 except:invalid Invalid if either empty #1493 jmp #1525 if compare instruction No NaN for comparison #1494 jmp #1511 if intr Return if interrupt not masked #1495 NaN -> tmpA NaN if interrupt masked #1496 return #1497 jmp #1502 if tmpA:tag SPECIAL Special cases #1498 jmp #1505 if tmpB:tag SPECIAL #1499 0 -> flag Div normal path: #1500 zero -> expConv Return flag 0, expConv 0 #1501 return #1502 call SPECIAL_VAL TmpA special #1503 jmp #1512 if not flag Jump if NaN, fallthrough if infinity #1504 jmp #1509 if not tmpB:tag SPECIAL #1505 xchg tmp TmpB special #1506 call SPECIAL_VAL #1507 xchg tmp #1508 jmp #1521 if not flag Jump if NaN, return if infinity #1509 0 -> flag Clear flag, return #1510 return #1511 RNI End instruction with interrupt #1512 jmp #1522 if not tmpB:tag SPECIAL TmpA NaN, now check tmpB #1513 xchg tmp #1514 call SPECIAL_VAL Check tmpB #1515 xchg tmp #1516 jmp #1522 if flag Jump if tmpB is not NaN #1517 except:invalid Invalid exception #1518 tmpB:frac -> Breg Both args are NaN, find larger #1519 adder: tmpA:frac - Breg cin=1 #1520 jmp #1522 if adder sign See if tmpA #1521 tmpB -> tmpA Take larger #1522 except:invalid Invalid exception #1523 jmp #1525 if compare instruction No interrupt for comparison instruction #1524 jmp #1511 if intr End instruction with interrupt #1525 1 -> flag Return with flag set #1526 return End of J5 This subroutine makes heavy use of a helper subroutine, SPECIAL_VAL,16 that processes one argument. The helper converts a denormalized argument to an unnormalized argument, raising an exception or interrupt as appropriate. It also flags an input of infinity. The hardware for the micro-instruction that exchanges tmpA and tmpB at #1485 is interesting. Instead of physically moving the values between the two registers, the micro-instruction toggles a flip-flop that exchanges the meaning of tmpA and tmpB. That is, if the flip-flop is set, a reference to tmpA goes to tmpB and vice versa. (This is a standard trick in microprocessors; the Intel 8080's XCHG instruction exchanges the DE and HL registers in a similar way. The Z80 uses the same trick for the EX and EXX instructions to exchange the regular register set with the secondary register set.) The Intel 8087 chip is packaged in a 40-pin DIP (dual in-line package), as are the 8080 and Z80. This photo is here as a break from all the microcode. Handling a non-normal result If you take a very large number and scale it larger, you can end up with overflow. If you take a very small number and scale it smaller, you can end up with a denormalized number or underflow. This will trigger an overflow, denorm, or underflow excaption, and an interrupt if unmasked. Moreover, the 8087 supports four rounding modes: round to nearest valid value, round down (toward -∞), round up (toward +∞), or round (chop) toward zero. Depending on the rounding mode, an overflow can result in either ∞ or the largest possible floating-point number. Similarly, an underflow can result in either zero or the smallest possible floating-point number. And depending on the infinity mode (affine or projective), infinity can be either signed or unsigned. Thus, the FSCALE microcode needs to handle many special cases for the result. The subroutine to handle a non-normal result in tmpA is below. One interesting micro-instruction is update overflow/underflow exceptions, which triggers an exception if appropriate. For most exceptions, a micro-instruction triggers the exception (for example, except:precision at #0346). But for the overflow and underflow exceptions, the microcode delegates the task to hardware. Specifically, the 8087's "exponent converter" circuit examines the exponent to see if an overflow or underflow exists, based on the selected floating-point precision. The micro-instruction sets the overflow and underflow flags based on these values. Thus, a complex task is performed by a single microcode instruction, thanks to the hardware support of the exponent converter. NONNORMAL_RESULT (J16): #0318 return if tmpA:tag ZERO Handle non-normal result #0319 update overflow/underflow exceptions Trigger exceptions if exp conv says to #0320 expconst 0x6000 The interrupt bias constant 0x6000 #0321 jmp #0329 if not intr #0322 expConst -> Breg Interrupt path #0323 jmp #0326 if neg #0324 adder: tmpA:exp + Breg cin=0 Add bias for underflow #0325 jmp #0327 #0326 adder: tmpA:exp - Breg cin=1 Subtract for bias overflow #0327 sumreg:frac -> tmpA:exp New exponent to tmpA #0328 return Interrupt, so done #0329 jmp #0344 if neg Masked exception #0330 tmpA:exp -> Breg Underflow #0331 adder: 1 - Breg cin=1 Amount to shift denormal #0332 call CREATE_DENORM Create a denormal #0333 adder: zero + Breg cin=0, roundmode Add zero to round #0334 call ADJUST_PRECISION Adjust to specified precision #0335 jmp #0340 if Sum register is zero If zero, return +/- zero as appropriate #0336 zero -> tmpA:exp Denorm: exponent is 0 #0337 sumreg:frac -> tmpA:frac Save denorm fraction #0338 special -> tmpA tag Tag denom as special #0339 return #0340 tmpA sign -> sign latch Return +/- zero #0341 zero -> tmpA #0342 sign latch -> tmpA sign #0343 return #0344 NaN/Inf -> tmpA:exp Overflow: maybe return infinity #0345 tmpA:frac -> tmpB:frac Save tmpA frac in tmpB #0346 except:precision Set precision exception #0347 Inf -> tmpA:frac Put infinity in frac #0348 special -> tmpA tag Mark infinity as special #0349 return if not round chop If rounding up, return infinity #0350 1 -> Breg Return max float: adjust down #0351 adder: tmpA:exp - Breg cin=1 #0352 sumreg:frac -> tmpA:exp Exp=7fff-1=7ffe #0353 adder: zero - Breg cin=1 #0354 sumreg:frac -> tmpA:frac Frac 0-1 = ff...ff #0355 norm -> tmpA tag Normal value #0356 return if tmpB:frac[63] Return max float unless unnorm #0357 tmpB:frac -> tmpA:frac Return original tmpA frac #0358 return The 8087 has interesting behavior if an overflow or underflow is unmasked and an interrupt occurs. The idea is to let the interrupt handler know what the exponent should have been. However, the proper value can't be used since it is too big or too small to fit in the exponent field (which is why the exception occurred). The solution is to add or subtract the constant 0x6000, resulting in an exponent that fits. The interrupt handler can subtract or add this constant to get the correct exponent. Lines #0322 to 0328 perform this addition or subtraction. For a masked underflow, a denorm value is created by the subroutine CREATE_DENORM. The value is rounded to the specified precision by ADJUST_PRECISION. Finally, if the value is too small for a denorm, the value +0 or -0 is returned as appropriate. For a masked overflow, the 8087 either returns Infinity or the largest-possible float, depending on the specified rounding mode. Infinity is represented by an exponent of all 1s, and a significand of 1000...; these values are loaded directly onto the bus by transistors. The maximum float, however, is computed: 1 is subtracted from the infinity exponent, and 1 is subtracted from a zero significand. Helper subroutine: creating a denormal One controversial feature of the 8087 is denormals, numbers that are smaller than "regular" floats. Recall that floating-point numbers have a significand with the first bit set to 1. But what happens if you hit the smallest possible exponent and want an even smaller number? The 8087 lets you break the rule that the significand starts with 1, producing smaller numbers known as denormalized numbers or denorms. Denorms significantly extend the range, providing numbers up to a factor of 263 smaller. However, denorms don't have as much precision since the upper bits are "wasted". Moreover, calculations with denorms can be substantially slower because special handling is required. Example of a normal number, reduced by a factor of 8, resulting in a denormal. The diagram above shows a normal number with the minimum possible exponent (-16382, which is 1 after biasing). Dividing the number by 8 (or scaling by -3) creates a denorm since the exponent can't be reduced any further. Instead, the significand is shifted 3 bits to the right. The exponent is replaced with the special value 0, indicating that the number is a denorm. In the 8087, denorms are created by a microcode subroutine that I'll call CREATE_DENORM; it is used by many arithmetic operations, not just FSCALE. This subroutine takes a normal number and a shift amount. By shifting the normal number (as in the example above), it creates a denormalized number. The microcode (below) uses the exponent converter to check if the shift is 64 or more. If so, there will be nothing left after the shift, so zero is returned. Otherwise, the value is shifted to the right and the denorm is stored in the B register. CREATE_DENORM (J20): #0522 sumreg:frac -> expConv Create denorm #0523 sumreg:frac -> shiftcount Number of bits to shift #0524 jmp #0528 if exponent[6:14] == 0 Jump if #0525 zero -> Breg No bits left, use zero #0526 shift tmpA:frac L 0 bytes, 0 bits Run through shifter? #0527 jmp #0532 #0528 shift tmpA:frac R count byte bit Shift right by the specified amount #0529 shift R -> Breg Result to Breg #0530 shift tmpA:frac L ~count byte bit Now shift back for sticky test #0531 NOP Wait for shifter #0532 rounding(h) -> Breg[grs] Store the three rounding bits in the Breg #0533 return But why is the value then shifted to the left (#0530)? The purpose of this is to get the rounding bits. One of the principles of the 8087 is to get rounding correct, which is a lot harder than it seems. In order to decide how to round up a number, you need to keep track of an impossibly large number of bits. For instance, if you calculate 1 + 0 and round up, you get 1. But if you calculate, say, 1 + 2-10000 and round up, you get a float a bit higher than 1. The problem is how do you distinguish the two sums before rounding, without storing thousands of bits? The trick is that the 8087 keeps three bits for use in rounding: the "guard" bit, the "round" bit, and the "sticky" bit. If you consider a "tail" of bits to the right of the significand, the guard bit is the most significant bit of the tail, followed by the round bit. The sticky bit is special: it is the OR of all the remaining bits in the tail, indicating if any of them are 1. Thus, 1 + 2-10000 has the sticky bit set, while 1 + 0 does not, so the two values can be rounded up differently. To generate the sticky bit, the 8087 uses a very large 64-bit NOR gate that tests the tail bits in parallel. A diagram showing how the guard, round, and sticky bits are computed from a right shift. The numbers in this example are different from the previous example. When a number is shifted to the right (e.g., when creating a denormal), bits are lost off the right. To generate the rounding bits, the value is shifted to the left, keeping all the tail bits that will eventually be discarded, and discarding the bits that will be in the final significand. The top two bits go into the guard and round bits, while the remaining bits are ORed together to generate the sticky bit from the rest.17 The diagram above is an example of this process. Suppose the value is being shifted to the right by 4 bits. The tail bits abcd (or at least d) will get lost in the shift. The rounding bits are computed by shifting the original significand to the right by 59 bits (the complement of 4). Bit 62 (a) becomes the new guard bit, bit 61 (b) becomes the new round bit, and the OR of the remaining 64 bits becomes the new sticky bit. (Note that the old guard, round, and sticky bits get ORed in too, so they aren't lost.) Merging the significand from the first shift with the rounding bits from the second shift produces the desired result. Helper subroutine: adjusting precision Although the 8087 supports three lengths of floats, it performs all calculations with 80-bit "temporary reals". At the end of an instruction, it converts the result to the desired length. (As a consequence, most instructions aren't any faster if you use a shorter float.) A microcode subroutine, which I call ADJUST_PRECISION, converts the result to the precision that is specified in the 8087's control word, using the specified rounding mode. This subroutine is used by most of the arithmetic instructions. The 8087 supports three types of real numbers. From the Intel Numerics Supplement. The first code path handles temporary reals (which have 64 bits of precision). The control word specifies one of four rounding modes. However, there are only two actions that can be taken for a particular significand: either round down (chop) or round up (chop and increment by 1). This decision is made by complicated logic circuits that examine the rounding bits, the rounding mode, and the sign to determine whether to round up or down. This simplifies the microcode but makes the hardware more complicated. The microcode performs a conditional return, returning if the significand doesn't need to be rounded up. Otherwise, the microcode increments the significand by adding 0 with a carry-in. It then checks for overflow, in which case it replaces the value with Infinity and sets a special flag.18 ADJUST_PRECISION (J11): #0299 jmp #0306 if not precision64 #0300 return if not round up, update CC1 Update condition code, maybe return #0301 adder: sumreg:frac + 0 cin=1 Add 1 to round up #0302 return if not sumreg[64] #0303 Inf -> sumreg:frac,sign Return infinity if overflow #0304 2count++ Set special flag #0305 return #0306 23/52 -> shiftcount Short or long real: get appropriate shift #0307 shift sumreg:frac,rnd L count byte bit sticky Shift to generate rounding bits #0308 NOP Wait for shifter to complete #0309 rounding(H) -> sumreg[grs] Store rounding bits #0310 shift sumreg:frac R ~count byte bit Shift right to drop excess bits #0311 shift R -> sumreg:frac #0312 jmp #0314 if not round up, update CC1 Update condition code #0313 adder: sumreg:frac + 0 cin=1 Round up if appropriate #0314 shift sumreg:frac L ~count byte bit Shift left to realign #0315 shift L -> sumreg:frac,sign #0316 return if not sumreg[64] Return if not overflow #0317 jmp #0303 Return infinity The code is more complicated when returning a smaller precision (short real or long real), since the significand must be shortened. First, the code at #0306 loads the shifter with either 23 or 52, depending on the precision specified in the control word, and then shifts the value left. This produces the rounding bits as in the previous section. Next, the value is shifted to the right, shortening it to the desired length. As before, the significand is incremented or not, depending on whether it should be rounded up or not. Finally, the value is shifted back to the left, so the most significant bit of the significand is on the left. As before, if rounding up caused an overflow, infinity is returned. One bizarre feature is that a jump with the "round up" conditional also has a side effect of updating the 8087's programmer-visible condition code register (CC1), indicating if the result was rounded up or down. That is, the 8087 has extra circuitry to detect this specific condition and load the value into the condition code latch. Strangely, the 8087 documentation doesn't describe this condition code action; Intel didn't document it until the 387SX floating-point chip in 1987.19 Conclusions Floating-point has a long history before the 8087. For instance, the IBM System/360 mainframes (1964) supported 32-bit and 64-bit floating-point numbers. In 1977, AMD introduced the Am9511 floating-point chip, supporting 16- and 32-bit floating-point numbers, along with transcendental functions. What made the 8087 revolutionary is that it was carefully designed to be as mathematically accurate as possible, largely thanks to numerical expert William Kahan. (The 8087 led to the IEEE 754 Standard, now used by almost every computer and ending the anarchy of incompatible floating-point standards.) The 8087 ended up extraordinarily complicated with three different sizes of floating-point numbers, four sizes of integers, four rounding modes, infinity modes, a collection of exceptions that could be masked or unmasked, denormalized and unnormalized numbers, signed and unsigned infinities, signed zeros, and a whole family of Not-a-Numbers. These features combine, yielding many corner cases. The 8087 deals with this complexity both through specialized circuits and through tangled microcode. How complicated is the 8087? For users who didn't have an 8087 chip, Intel sold an 8087 Support Library that exactly emulated the 8087's instructions (but much slower). The emulator took 16K bytes of 8086 code, which was a lot when a full BASIC interpreter could fit in 8K. Another way of looking at this is that the hardware of the 8087 drastically reduced the amount of software required: the 8087 itself used 3.3K of microcode, compared to the 16K for the emulator in 8086 code. I plan to continue reverse-engineering the 8087 microcode; for updates, follow me on Bluesky (@righto.com), Mastodon (@[email protected]), or RSS. I've been working on this with the members of the "Opcode Collective", especially Smartest Blob and Gloriouscow, who converted the ROM images to microcode data and extensively analyzed the contents. See the 8087 repository on GitHub for more. Notes and references The 8087 patents provide some details on the hardware, but unfortunately not the microcode. The patent diagram below shows the architecture of the 8087; I've highlighted the relevant parts. The fraction bus and exponent bus are shown in red. The adder and associated registers are in yellow. (For subtraction, the B register selector selects the complement.) The shifter is in green. The exponent constant ROM and the exponent converter are in orange. The temporary registers and stack registers are in blue. The architecture of the 8087. Based on the patent. Click this image (or any other) to magnify. ↩ The exponent converter is surprisingly complicated because the 8087 has three different formats for floating-point numbers with three different sizes of exponent fields (8 bits, 11 bits, and 15 bits). Moreover, the different sizes of exponents are stored with different biases. Thus, converting between different sizes of exponents is not trivial. The exponent converter also recognizes overflow and underflow for the different exponent sizes, as well as special values such as infinity and NaN. I plan to describe the exponent converter in more detail later. ↩ The significand in the 8087 is nominally 64 bits wide. However, the 8087 uses three extra low-order bits for rounding, called Guard, Round, and Sticky. These bits ensure that a value is always rounded in the right direction. Some parts of the datapath have additional bits for sign or overflow: the shifter is 68 bits wide, and the adder is 69 bits wide. For the most part, I'll ignore these extra bits and refer to the datapath as 64 bits wide. ↩ Tags are normally invisible to the programmer, but can be accessed through special operations. Specifically, a programmer can dump the 8087's state to memory; the tags are stored in a 16-bit "tag word". ↩ The external representations of floating-point numbers have an implied leading one, with only the bits after the binary point explicitly stored. This provides one additional bit of resolution "for free". The internal 80-bit representation, however, has an explicit leading one to simplify calculations. ↩ One reason that the exponents are biased is that to find the larger of two floating-point numbers, you can compare them lexicographically as signed integers, rather than needing to examine the exponents separately. ↩ Most of the 8087's instructions are implemented in microcode, but a few are hard-wired. For more details on instruction decoding, see Instruction decoding in the Intel 8087 floating-point chip. ↩ I use decimal addresses for the microcode because the Opcode Collective started using decimal addresses, and it would be confusing to change now. ↩ The microcode shows that scaling 0 by anything, or scaling anything by 0, leaves the value unchanged. My view is that the designers took a shortcut here, rather than returning the "right" value. Since the 8087 defines 0×∞ as NaN, it seems to me that 0×2∞ should also be NaN, so FSCALE(0, ∞) should be NaN, not 0. The designers probably made the valid decision that nobody really cared about corner cases on the obscure FSCALE instruction. For other instructions, the behavior with denormals, unnormals, and zeros is documented (tables S-24 to S-26 in the Numerics Supplement documentation), but FSCALE is omitted. ↩ The 8087 has separate buses for the exponent and the significand, and the adder is only connected to the significand bus, so how does the exponent get to the adder? The trick is that there is a 16-bit gateway between the exponent bus and the significand bus, so the exponent can be copied over. ↩ I described the 8087's adder here. In brief, subtraction is performed by inverting the B register's value when it is fed into the adder. The carry-in to the adder is set to 1, so this in effect performs a two's-complement subtraction. ↩ Why does the microcode have separate paths to add a positive scale and subtract a negative scale? The reason is that values are stored as a sign bit and an unsigned value, not two's complement like standard integers. As a result, the adder can't perform signed addition directly. Instead, the adder circuitry must be explicitly directed to complement the B register value and perform a subtraction. ↩ This flowchart shows the SPECIAL_TMPS subroutine. The structure of this routine is complicated because paths split off and rejoin. One tricky path is the code to determine if there are 0, 1, or 2 NaN values, and take the maximum NaN if there are two. Another complication is the exception exits, which raise an interrupt if the interrupt is not masked, but not for a comparison instruction. The two return values are returned through flag and expConv. A flowchart for the SPECIAL_TMPS subroutine. Click for a larger version. The actions of SPECIAL_TMPS are summarized below. It returns status through the flag flip-flop and the exponent converter register (expConv). Its actions are: table.status {border-collapse: collapse;} table.status tr:first-child {border-bottom: 1px solid #ccc;} table.status th,td {padding: 0 10px; text-align: center;} table.status th:first-child,td:first-child {border-right: 1px solid #ccc;} InputResultflagexpConv emptyNaN, exception11 NaN(larger) NaN, exception11 infinityinfinity01 denormunnorm10 div abnormalno change00 (The last row signals an abnormal value during division computation; I'm still investigating this.) ↩ Prof. William Kahan, who guided the development of the 8087, was disappointed that some floating-point features were unused because of a vicious circle: the features didn't receive good compiler support, so programmers didn't use the features, so compiler developers claimed a lack of demand for the features and didn't implement support. Using multiple values of NaN to record how and/or where an NaN came into existence was an example of a feature that lacked software support. See Lecture Notes on the Status of IEEE Standard 754 for Binary Floating-Point Arithmetic for a detailed discussion of NaN and other issues. ↩ The 8087 makes heavy use of micro-subroutines, with a 6-level stack for microcode subroutine calls. Microcode jumps and subroutine calls get the address from a jump table. The index from the jump table comes from 6 bits of the micro-instruction. We unimaginatively named the entries in the microcode jump table as J0, J1, and so forth based on the index, but I'm adding more meaningful names as I figure them out. As for the names for micro-instructions, we don't have any information on what names were used by Intel (unlike the 8086). I invented names, influenced by the names in Gloriouscow's disassembly. ↩ A subroutine that I call SPECIAL_VAL handles denormalized values, infinity, and NaN. (This subroutine is primarily used by SPECIAL_TMPS, but is also used by FRNDINT (round to integer) and FSQRT.) First, the subroutine looks at the exponent of tmpA; if the exponent is zero, the value is denormalized. (The value could also be zero, but that was handled earlier.) If so, the denorm exception is set. Comparison instructions such as FCOM handle denorms differently, but I'll ignore that for now. The code at #1576 tests if the denorm triggered an interrupt; if so, the instruction ends with the interrupt. If the interrupt was masked, the code converts the denorm to an unnorm by changing the tag to norm and changing the exponent to 1 (which corresponds to the very negative, smallest valid value because of the exponent bias). The result of the subroutine is returned through a special flag flip-flop. SPECIAL_VAL (J12): #1572 tmpA:exp -> sumreg:frac Handle special value #1573 jmp #1581 if not Sum register is zero Test exp for denorm #1574 except:denorm #1575 jmp #1577 if compare instruction No exception for comparison #1576 jmp #1571 if DE (denormalized) interrupt RNI if exception #1577 norm -> tmpA tag Handle denorm: tag empty? or valid? #1578 1 -> tmpA:exp Change to unnorm #1579 0 -> flag Clear flag #1580 return #1581 shift tmpA:frac L 0 bytes, 1 bits Shift to check if infinity vs NaN #1582 shift L -> sumreg:frac #1583 jmp #1579 if not Sum register is zero Clear flag for NaN #1584 1 -> flag Set flag for infinity #1585 return At #1581, the code checks if the value is infinity or NaN. Interestingly, this test isn't done directly, but by manipulating the value with the shifter. Recall that infinity has a significand of 10...00, while NaN has at least one additional 1 bit. The code shifts the significand one bit to the left; a zero result indicates infinity, while a nonzero result indicates NaN. As before, the result is returned in the flag flip-flop. ↩ The logic to compute the rounding bits is more complicated than described. There are two micro-instructions with slightly different behavior depending on the expConv value, but I won't get into that here. ↩ The ADJUST_PRECISION subroutine appears to return infinity if the significand overflows after rounding up, but I'm not entirely happy with this. For instance, 1.111... should round up to 2, not infinity; the significand overflows, but that's not an overflow of the float. Presumably, this gets fixed somewhere else. ↩ I don't know why Intel failed to document the feature that a condition code indicates whether a value was rounded up or down. The 8087 documentation is very thorough with corner cases; usually, when I find a strange circuit, I can find a line in the documentation that explains why it is there. Maybe the condition code feature was buggy, so it was easier to not document it? Maybe this feature was a hidden trap to catch competitors that copied the chip? (Intel had a secret instruction in the 8086 for this purpose, but NEC's version of the 8086 didn't have it, much to the disappointment of Intel's lawyers.) Maybe Intel wasn't sure if they wanted to support the feature in later versions? (This is why some of the 8085 processor's instructions weren't documented.) For now, it's a mystery. ↩
Most people, when asked why they do what they do, lie. This isn’t because they’re malicious but it’s because the honest justification for a career is rarely noble. It’s usually a combination of a decent paycheck, tolerable hours, and whatever neurosis you
A Niri workspace with 7 visible columns. After having used practically the same xmonad configuration for a decade and a half I’ve now modernized my setup with the scrollable-tiling Wayland compositor Niri. It’s been a bit of a struggle to unlearn my old workflow but I’m really growing to love Niri’s scrollable workflow, especially on my new super ultrawide display. Samsung Odyssey Neo G9 G95NC 57” My new 57” single monitor setup. What kicked off my Niri journey was the purchase of a new super ultrawide monitor. I bought the 57” Odyssey Neo G9 as it was the largest monitor I could find. (It’s marketed as a “gaming” display but it’s really an amazing productivity display.) It replaced my old 3-monitor setup: My old 3-monitor setup. The new display is wider so I had to move the speakers around 10–15cm further apart. I was debating whether to replace the center 31.5” monitor or replace all monitors with a single one but I think I made the right choice with the ultrawide. The curvature wasn’t an issue (I’ve come to prefer it) and the extra vertical space the portrait side monitors provided wasn’t as crucial as I thought. I think an ultrawide is worth it just to get rid of the annoying bezels. Small things can be a big thing sometimes. A more dynamic workflow xmonad and Niri are similar yet different. Both automatically lay out windows as you spawn them but xmonad (at least the way I used it) follows a layout algorithm that re-flows using a “master” window and combines the rest of the windows into one space, while Niri lays out windows in columns. The change is subtle but it implies that a new window won’t change the size of other windows. This is very nice if you spawn a lot of short-lived terminals or web browsers like I do and it reduces the amount of manual reshuffling I spend time on. My xmonad workflow was more static than my Niri one. In xmonad I made heavy use of workspaces, mapping ten workspaces mentally to different programs, such as 0 Firefox and 1 terminal logs on the left monitor; 3, 4 and 5 for different Neovim instances on the center monitor; 8 as chat and 9 for music or video on the right monitor. I had no rules to enforce this; it’s an emergent behaviour that served me well for years. With Niri it’s more dynamic. I still use workspaces but they no longer have direct shortcuts, I simply go up/down in the workspace list. Maybe I’ll add them in the future but with 3–4 workspaces that’s not as necessary. I spawn workspaces/windows when I need them and remove them when I’m done. Usually it’s one workspace per project (yes, I’m now one of those who have multiple up at once) with all the related things such as editor, terminals, and browser with docs. I don’t typically utilize the full screen width and I try to keep the things I’m working on in the center, often leaving 10–30% gaps on the sides. Even though I don’t normally use the “endless scrolling” feature of Niri I re-center selected windows all the time so I can look straight ahead as much as possible. Keyboard shortcuts As a fan of keyboard layouts of course I have to spend some time tinkering with good keyboard shortcuts (especially as Niri’s recommended keybinds don’t map well with my custom keyboard or custom layout). Navigation layer What I did was add a new navigation layer that’s enabled by holding Tab (ring + middle + index on the left-hand side) with all Niri related movement and layout keybinds. In the graphics above, all green-colored keys emit Gui (which gates all window manager commands) and you can see: Long press on Close Window to close a window. The long press requirement prevents accidentally closing windows. Arrows move through columns/windows. Long press resizes them. Workspace Up/Down focuses a different workspace. Center a column. Consume/Expel to combine windows into one column. (consume-or-expel-window-left/consume-or-expel-window-right) Expand Column makes a column take up all remaining space. (expand-column-to-available-width) Audio controls. To press them I release the index finger (keeping the ring and middle finger pressed to keep the layer active) and use the index to press the audio buttons. Mouse buttons. In Niri you can move floating windows with Gui + Left Mouse and Gui + Right Mouse to resize them. As my main mouse is a trackball integrated into the keyboard I had to add them to the left-hand side. I ended up using QMK’s customizable key repress feature that allows me to: Tab combo with my three fingers (layer is active) Release only the index (layer is still active, same as with the audio controls) Press the index again (now detects the press Gui + Left Mouse key down) Use the trackball to move the window And similarly for the right mouse button to resize with the middle finger. Works great! Because there are so many commands I want to send I placed Ctrl on the thumb that provides movement-related commands like so: For example: Arrows move columns/windows in the four directions. Move columns to the neighboring workspaces. Center visible columns. (center-visible-columns) Slightly different consume/expel semantics. (consume-window-into-column/expel-window-from-column) Regular keymaps These are triggered in the “normal” way by first pressing the Super combo and then another key on the base layer (I use autoshift so I shift with a long press). Window management Super + F toggle windowed fullscreen (keep column width) Super + Shift + F fullscreen window (over the entire display) Super + M maximize column (moves other columns) Run stuff Super + Enter terminal Super + E Noctalia’s launcher (also exists on the navigation layer as Launch) Super + S show Noctalia control center Super + Shift + S show Noctalia settings Super + Q power off monitors (they wake on input) Super + Shift + Q show Noctalia session menu (reboot etc) Super + Shift + L lock screen Misc Super + H show hotkey overlay Super + P interactive screenshot Super + Shift + P screenshot selected window Tweaks to the standard CachyOS setup In the process of moving from xmonad to Niri I also moved from Void Linux to CachyOS and I let the installer install Niri and give me a basic configuration together with Noctalia (that provides a statusbar, notifications, and a bunch of things you apparently need). Center the status bar and other Noctalia windows My centered Noctalia status bar. Feels absolutely required on this screen otherwise things end up in the corners. Firefox on XWayland Force Firefox onto XWayland as the Wayland popup manager is broken: environment { MOZ_ENABLE_WAYLAND "0" } Dead keys for Ghostty For some reason dead keys were broken in Ghostty. This is bad for me as the OS keyboard is set to Swedish and it uses them to type ~ (quite a crucial character for a programmer). The fix: environment { GTK_IM_MODULE "ibus" QT_IM_MODULE "ibus" XMODIFIERS "@im=ibus" } This needs ibus installed and running. Melange colorscheme Noctalia discovers custom color schemes under ~/.config/noctalia/colorschemes/<Name>/<Name>.json, so I dropped in my trusty Melange colorscheme there: { "dark": { "mPrimary": "#EBC06D", "mOnPrimary": "#292522", "mSecondary": "#A3A9CE", "mOnSecondary": "#292522", "mTertiary": "#85B695", "mOnTertiary": "#292522", "mError": "#D47766", "mOnError": "#292522", "mSurface": "#292522", "mOnSurface": "#ECE1D7", "mSurfaceVariant": "#34302C", "mOnSurfaceVariant": "#C1A78E", "mOutline": "#867462", "mShadow": "#1a1816", "mHover": "#E49B5D", "mOnHover": "#292522", "terminal": { "normal": { "black": "#867462", "red": "#D47766", "green": "#85B695", "yellow": "#EBC06D", "blue": "#A3A9CE", "magenta": "#CF9BC2", "cyan": "#89B3B6", "white": "#ECE1D7" }, "bright": { "black": "#34302C", "red": "#BD8183", "green": "#78997A", "yellow": "#E49B5D", "blue": "#7F91B2", "magenta": "#B380B0", "cyan": "#7B9695", "white": "#C1A78E" }, "foreground": "#ECE1D7", "background": "#292522", "selectionFg": "#C1A78E", "selectionBg": "#403A36", "cursorText": "#292522", "cursor": "#EBC06D" } } } Then pick the colorscheme: "colorSchemes": { "darkMode": true, "predefinedScheme": "Melange", "useWallpaperColors": false } Layout appearance The default appearance was pretty I admit but way too much blank space and weirdness. Some tweaks: layout { // Required for noctalia-shell to set wallpaper background-color "transparent" // Never auto-center focused columns (too much movement) center-focused-column "never" // But do center a single window always-center-single-column // No extra space around it all struts {} // No gaps between windows gaps 0 // The focus ring was annoying focus-ring { off } // Use a border with consistent width for all windows instead border { on width 2 active-color "#ebc06d" inactive-color "#403a36" } // Setting widths is important with such a large screen preset-column-widths { proportion 0.15 proportion 0.3 proportion 0.4 } default-column-width { proportion 0.15; } // Heights too, why not? preset-window-heights { proportion 0.15 proportion 0.5 proportion 1.0 } } // Prevent the mouse from opening the overview in the corners gestures { hot-corners { off } } Keep windows centered Niri has the always-center-single-column option, which is nice as I want to keep as much as possible in the center of the monitor when I’m working. But I very frequently use 2–3 smaller windows and with my frequent opening and closing I’d like them centered too. Luckily, Niri has an IPC you can use to make a small program that reacts to events and does this for you. I made a small rust project using the niri-ipc crate that does this for me: The autocenter implementation [dependencies] niri-ipc = "26.4.0" use std::collections::HashMap; use std::io; use niri_ipc::socket::Socket; use niri_ipc::{Action, Event, Request, Response, Window, Workspace}; #[derive(Clone, Copy, PartialEq, Eq, Hash)] struct WindowId(u64); #[derive(Clone, Copy, PartialEq, Eq)] struct WorkspaceId(u64); struct OutputName<'a>(&'a str); struct WindowState { workspace: Option<WorkspaceId>, width: f64, } fn main() -> io::Result<()> { let mut socket = Socket::connect()?; if !matches!(socket.send(Request::EventStream)?, Ok(Response::Handled)) { eprintln!("niri rejected event stream"); std::process::exit(1); } let mut known: HashMap<WindowId, WindowState> = HashMap::new(); let mut read_event = socket.read_events(); loop { let result = match read_event()? { // A full snapshot of the current state. Just refresh our state. Event::WindowsChanged { windows } => { known = windows .into_iter() .map(|w| { ( WindowId(w.id), WindowState { workspace: w.workspace_id.map(WorkspaceId), width: w.layout.tile_size.0, }, ) }) .collect(); Ok(()) } Event::WindowOpenedOrChanged { window } => { let workspace = window.workspace_id.map(WorkspaceId); let entry = WindowState { workspace, width: window.layout.tile_size.0, }; let prev = known.insert(WindowId(window.id), entry); match prev { // Don't center floats. _ if window.is_floating => Ok(()), // New window, try to re-center. None => maybe_center_new(&window), // Window changed workspace, try to re-center. Some(state) if state.workspace != workspace => center_focused_if_fits(), // Skip other things. Some(_) => Ok(()), } } Event::WindowClosed { id } => { if known.remove(&WindowId(id)).is_some() { center_focused_if_fits() } else { Ok(()) } } Event::WindowLayoutsChanged { changes } => { // Only re-center if the width was changed, otherwise our re-center will // loop back indefinitely. let mut resized = false; for (id, layout) in changes { if let Some(state) = known.get_mut(&WindowId(id)) { if (state.width - layout.tile_size.0).abs() > 0.5 { state.width = layout.tile_size.0; resized = true; } } } if resized { center_focused_if_fits() } else { Ok(()) } } _ => Ok(()), }; if let Err(e) = result { eprintln!("autocenter: {e}"); } } } /// Center a newly created window if the workspace is focused and if there's surrounding free space left. fn maybe_center_new(window: &Window) -> io::Result<()> { let Some(workspace_id) = window.workspace_id.map(WorkspaceId) else { return Ok(()); }; let Some(focused) = focused_workspace()? else { return Ok(()); }; if WorkspaceId(focused.id) == workspace_id { center_if_fits(&focused)?; } Ok(()) } /// Center windows in the focused workspace if there's surrounding free space left. fn center_focused_if_fits() -> io::Result<()> { if let Some(focused) = focused_workspace()? { center_if_fits(&focused)?; } Ok(()) } /// Center windows in the workspace if there's surrounding free space left. fn center_if_fits(workspace: &Workspace) -> io::Result<()> { let Some(output) = workspace.output.as_deref().map(OutputName) else { return Ok(()); }; let Some(width) = output_width(output)? else { return Ok(()); }; if workspace_width(WorkspaceId(workspace.id))? < f64::from(width) { center_visible_columns()?; } Ok(()) } /// Issue a one-shot query to Niri, wait, and return the response. fn query(request: Request) -> io::Result<Response> { match Socket::connect()?.send(request)? { Ok(response) => Ok(response), Err(msg) => Err(io::Error::other(msg)), } } /// Get the focused workspace. fn focused_workspace() -> io::Result<Option<Workspace>> { match query(Request::Workspaces)? { Response::Workspaces(ws) => Ok(ws.into_iter().find(|w| w.is_focused)), _ => Ok(None), } } /// Get the width of an output (monitor). fn output_width(name: OutputName<'_>) -> io::Result<Option<u32>> { match query(Request::Outputs)? { Response::Outputs(outputs) => Ok(outputs .get(name.0) .and_then(|o| o.logical.as_ref()) .map(|l| l.width)), _ => Ok(None), } } /// Calculates the width of all columns in the workspace. fn workspace_width(workspace_id: WorkspaceId) -> io::Result<f64> { let Response::Windows(windows) = query(Request::Windows)? else { return Ok(0.0); }; let mut columns: HashMap<usize, f64> = HashMap::new(); for w in windows { if w.workspace_id.map(WorkspaceId) != Some(workspace_id) { continue; } if let Some((col, _)) = w.layout.pos_in_scrolling_layout { let width = columns.entry(col).or_insert(0.0); *width = width.max(w.layout.tile_size.0); } } Ok(columns.values().sum()) } /// Send a command to center the visible columns. fn center_visible_columns() -> io::Result<()> { if let Err(msg) = Socket::connect()?.send(Request::Action(Action::CenterVisibleColumns {}))? { eprintln!("center-visible-columns rejected: {msg}"); } Ok(()) } One catch is that if a new window overflows the monitor width, the script won’t center the columns even if there would be free space left afterwards. This is a little weird but it’s consistent with Niri’s center-visible-columns command. I had a small itch to try to hack around it but in the end I left it alone… Is Niri worth it? Yes, absolutely. Niri has been a huge upgrade for me in combination with a single wide screen. My xmonad setup worked really well with three monitors—arguably a better fit in that context than Niri—but for the big-screen use-case Niri is superior. I’m curious how it holds up on my laptop, once I gather enough energy to install CachyOS on it… But that’s a side quest. The big-screen setup I spend most of my days in is the best I’ve ever had, and I have no desire to go back.