Oldskooler Ramblings

the unlikely child born of the home computer wars

Archive for the ‘Vintage Computing’ Category

The Care And Feeding of the M24/6300/6060/1600

Posted by Trixter on December 9, 2021

The Olivetti M24 was a fantastic PC compatible that was double the speed of the IBM PC, had built-in expansion ports, a smaller footprint, and special hi-res graphics, all at a price cheaper than the original PC. AT&T brought the M24 to the USA and sold it as the AT&T 6300, and it was very popular over here as an alternative to the PC. (Xerox also imported it to the USA and sold it as the Xerox 6060; in France, it was sold as the Logabax 1600.)

As the vintage computing hobby continues to grow, a lot of people have been coming across these and wondering if they should take the plunge. While the 6300 is among my most favorite systems ever made, I usually don’t recommend it for beginners because it uses a proprietary keyboard and monitor, and if you don’t have both, it can be extremely difficult to adapt a traditional keyboard and monitor for use with the system unit. But, if you see one for sale for cheap, and it has everything and works, I’d like to offer some modern tips on the care and feeding of these unique beasts. These hints can help get your system up to speed as a useable and practical member of your collection. (Note: When I write “6300”, I’m talking about all versions of the Olivetti M24, as they were identical hardware.)

Preparation

First and foremost: If you have a working system, IMMEDIATELY power it off, open it up, disassemble it, remove the motherboard from the bottom of the system, and carefully desolder and remove the barrel battery. It’s not needed to operate the system, and can only cause permanent failure if it corrodes the motherboard. (You can try to snip the battery off with snips, but I have broken a motherboard this way so I usually recommend the gentler option.)

If your system boots up with a ROM BIOS other than 1.43, flash the 1.43 ROM BIOS and install it. It fixes some bugs. There is an associated PAL that came with the ROM BIOS upgrade kit, but in my experience it wasn’t necessary to operate the machine (some of the hardware support introduced by 1.43 won’t work without the updated PAL, but the rest of the BIOS enhancements will work). One thing the upgrade gives you is the ability to run Microsoft Word for DOS 4.x and higher in graphical mode using the 6300’s high-res graphics.

If you don’t care about running GeoWorks Ensemble, replace the 8086 with an NEC V30 for a 20% speedup. Ensemble will no longer work for some reason, but everything else will feel zippier.

Storage

If you want to add an XT-IDE, you need to use any XUB BIOS made in the last 2 years or newer, because it has speed-optimized code that deals with the bus issues of the AT&T. The speedup is minimal, so if your XT-IDE card works as-is, it’s using the slow compatible mode and you may want to leave it that way so you can use it in any system.

Bus issues? Yes, unfortunately on the 6300, doing a word-sized read or write will accidentally transpose the values. This causes some software to break. A “bus correction kit” was available that fixed this, but they are rare. An effort on the VCF forums was made to reproduce them, but I don’t know where that project landed; sorry. If your XT-IDE card is using the wrong BIOS that tries to do word-sized reads, you may see it start up with endian-swapped lettering when it identifies the CF card: Instead of your transcend CF card showing up as “TRANSCEND”, you’ll see “RTNACSNE D” and then it will hang. Flashing a new XT-IDE XUB BIOS using the most compatible options will fix this.

You can put any 3.5″ drive in the system and get free 720K DSDD support by ensuring you have a DEVICE=DRIVER.SYS line in CONFIG.SYS with appropriate params for 720K. But that’s it; the built-in controller does not support high-density drives. You’ll have to get a replacement floppy controller and disable the onboard one if you want to do that, but IMO it’s not worth it when XT-IDE makes transferring files with modern systems easy.

Networking

Intel Etherexpress 8/16 network cards don’t work in an AT&T because of the bus issue mentioned above. Xircom parallel-port ethernet adapters work fine, albeit slowly. I’ve used other period-appropriate ethernet cards with success, although I prefer to use anything with an RJ-45 connector as I find 10 base-t ethernet transceiver dongles cumbersome.

Keyboard

The keyboard, and it’s plug and signaling, are proprietary. It is nearly impossible to use a different keyboard. There is someone on the VCF forums who came up with a hardware design to translate the signaling between the 6300 keyboard port and a PS/2 connector, but I also don’t know where that project landed, sorry.

Display

The display adapter is proprietary; it outputs a high-res 25 KHz horizontal signal, but that can only be used with select AT&T monitors. It also provides voltage (!) to power AT&T monochrome monitors. Trying to replace it with something like VGA is difficult and frustrating, especially if you don’t have the bus conversion kit mentioned earlier. My advice is to try to keep the original monitor running, as that is part of the system’s charm.

If you can’t find a working monitor, you can use an RGB2HDMI and a custom adapter to translate the signal to HDMI. It’s an RGB TTL signal that runs at 56Hz vertical and (if memory serves) 25KHz horizontal, and provides a 640×400 display.

Speaking of that display, it had more support than people realize. You can run Windows 3.0 in real mode, Geoworks Ensemble, and GEM in 640×400 if you like graphical environments.

Power

The power supply is very odd (24 V?) and is difficult to repair because it is built in two halves. It also houses voltages that can injure or even kill you if you open it up and try to repair it. Be careful, and refer to the Olivetti M24 technical reference or the 6300 Sams Computerfacts to know what you’re getting into.

Enhancement

The dimensions of the system are proprietary; they will not take replacement motherboards. In fact, the motherboard and the bus interface are two separate backplanes that interface through the display adapter (you read that right: The display adapter) so it’s impossible to adapt the case to house anything else.

I do not know which accelerator cards (ie. 286 or 386 speedup cards) work in a 6300. My guess is that most of them would not work because of the aforementioned bus issue and/or expecting an 8088 when the system uses an 8086. The only accelerator cards that are likely to work are those that didn’t use a ribbon cable to replace the CPU, such as Applied Reason’s “PC-elevATor” board.

Most, if not all, 8-bit sound cards work just fine in a 6300 as they didn’t require word-sized accesses. I recommend an 8-bit Sound Blaster clone, or a Sound Blaster Pro. DMA on those cards works fine and you can even play MOD songs on a 6300 at 24Khz or higher with one. You can also use an LPT sound dongle (ie. Covox) as there is nothing particularly odd about the 6300’s built-in parallel port.

You can put EMS cards in 6300s and they work. EMS boards are slow in the 6300 unless you get the AT&T-specific, AST-made, EEMS 3.2 board, which uses the proprietary 16-bit wacky interface unique to the AT&T, and then the EMS memory is the same speed as the main memory (and enables some other neat tricks, like expanding lower DOS RAM from 640K to 736K). Desqview also runs very well with this board installed, although a regular EMS board helps with that too.

Posted in Vintage Computing | 1 Comment »

My IBM PCjr Print Media Archival Project

Posted by Trixter on April 25, 2021

While I’m not the #1 PCjr fan in the world — that honor goes to Mike Brutman — I consider myself in the top five. I’ve owned, used, and programmed for the PCjr for decades. A flawed problem child, the PCjr was an underdog that never fully met IBM’s expectations, but it succeeded at something much greater: With its 16-color graphics, 3-voice sound, and early support from Sierra, it showed the world that PCs could be treated seriously as viable gaming machines. Because of this, I’ve evangelized the PCjr, given extended PCjr history presentations, and even set up comprehensive PCjr exhibits. So you could say I’m a PCjr superfan.

Along these lines, I’m happy to announce the results of a years-long scanning project: A gigantic cache of IBM PCjr resources: Books, magazines, newsletters, catalogs, adverts, and technical and repair information. So what does that mean?

Books

Let’s start with over 20 PCjr-specific books, covering topics from introductions to personal computing, all the way down into technical details about how the PCjr’s enhanced features work. You can pick these up here: http://ftp.oldskool.org/pub/drivers/IBM/PCjr/Books/

Newsletters

There’s also a complete run of the Eugene PCjr Club newsletter (over 135 issues), as well as a complete run of jr Newsletter out of Connecticut (75% of which are new 600 DPI scans). There were at least 32 (!) different PCjr clubs during PCjr’s lifetime, but only a few had long and comprehensive newsletters as these two. The Eugene PCjr Club was the longest-run active PCjr club in the world, starting in 1984 until disbanding in 2002, and from 1985 onward they had their own newsletter.

Reading these is not only a nostalgic trip back in time, but also chock full of surprisingly relevant information to vintage computer hobbyists today. They continued coverage where the magazines left off, reporting on which new hardware add-ons and modifications you could perform on a jr, iincluding a potential 286 upgrade, VGA upgrade, hard drives, and more; they also had many tips on getting software to run on the not-quite-compatible PCjr. You can pick up the entire Eugene PCjr Club and jr Newsletter runs, as well as other PCjr newsletters (check out The Orphan Peanut, prepared completely on a 768K PCjr!), here: http://ftp.oldskool.org/pub/drivers/IBM/PCjr/Newsletters/

Heck, there’s even 21 issues of The Junior Report, a newsletter from “The PCjr Club” which I never knew about during their heyday, which surprised me since they were held in Schaumburg, Illinois — practically in my back yard at that time.

Magazines

I’ve also managed to archive complete runs of most magazines that were dedicated only to the IBM PCjr, such as Peanut, PCjr Magazine, and even PCjr World, a special insert included in PC World magazine for a few issues. (These jr-specific magazines are rare, and I acquired them at considerable expense, so please give a moment of silence to thank them for their sacrifice.)

Additionally, I’ve managed to scan very many magazine excerpts from other magazines that covered PCjr. Some of these excerpts were quite good and comprehensive, from using PCjr as a cheap scientific data acquisition platform, to detailed accounts of what was happening with PCjr during its original time period. You can grab the magazines and excerpts completed thus far here: http://ftp.oldskool.org/pub/drivers/IBM/PCjr/Magazines/
(I’m still working on the complete run of “COMPUTE! For the PC and PCjr” as well as “jr”; if you can lend or donate issues for scanning, please let me know.)

Catalogs

Finally, I’ve archived some catalogs, which can serve as a collector’s checklist of all the PCjr-specific hardware and software it was possible to use with your PCjr. The PC Enterprises catalogs list some esoteric stuff that is nearly impossible to find, and IBM’s The Guide has some gorgeous product shots of PCjr and other hardware. There are also catalogs from Computer Reset, Paul Rau Consulting, and others. Pick up all the catalogs here: http://ftp.oldskool.org/pub/drivers/IBM/PCjr/Catalogs%20and%20Price%20Lists/

What’s in it for me?

All of these are high quality scans and fully text-searchable. Advanced techniques were used to ensure the highest quality possible at reasonable sizes. You will not find any JPEG “mosquito noise” compression artifacts, screened printing moire patterns, or unreadable text in these scans.

While I originally did this for new PCjr owners so that they could get up to speed quickly, there is a lot of nostalgic waxing and trivia for grizzled old collectors too. For example, there’s references to third-party hardware and modifications that I never knew existed until I started this project (a reset button, an SVGA sidecar, 286 upgrade, quad-cartridge-port adapter, EMS sidecar modification, etc.), esoteric program patches to get equally esoteric software working on PCjr, and even trivia like what the “L” port was originally meant to be used for.

Thanks

I’d like to thank Louie Levy for donating most of the Eugene PCjr Club newsletters to me for this project, and L. Teague for many jr Newsletters, PCE catalogs, and other materials.

FAQs:

Q: Can I ______ these files?
A: I don’t care what you do with these files, as long as you’re sharing and enjoying them and don’t utterly destroy my bandwidth. Please leech responsibly, preferably at 512KB/s or less.

If you want to upload these to The Internet Archive, go for it; just let me know what the collection links are so that I can edit this post and link to them. Someone has already done some of these files piecemeal, without acknowledging my efforts, but that goes with the territory; we (archivists) are used to it. If you want fame and fortune, being an archivist is a pretty terrible way to go about it.

Q: What is your scanning process?
A: Funny you should ask.

Q: The PDFs are great, but–
A: Don’t worry, OCD friends: The original physical pages are being stored off-site, and I also made a copy of the raw unprocessed 600 DPI scans if newer and better technology becomes available.

Posted in Technology, Vintage Computing | 2 Comments »

It’s been fun

Posted by Trixter on December 26, 2018

My vote for the most subtle-yet-cruel entry in the category of brain mis-wirings is Imposter’s Syndrome. (It is also a first-world problem; apologies if this offends you.) I have it fairly bad, and it’s gotten worse as I age. It has prevented me from starting projects, finishing projects, and having normal levels of self-confidence. I am, thankfully, able to praise and mentor other people as necessary, but I cannot provide that for myself. Combine this with yearly instances of FOMO and you end up with someone who goes through waves of trying to join the party, only to feel sheepish once they get there.

This must end. Not in the manner in which my friends and fans might have hoped, but it simply has to end if I’m going to be available for the people who matter (including, most importantly, myself). So, it ends today. It ends with a list of things I’ve achieved in my life by my own skill, intelligence, and volition. I’m granting myself permission to be proud of everything on this list.

And, most importantly:

  • Met my wife, became a better person for her, and started a family

That is truly my greatest accomplishment. It has directly touched hundreds of lives, contributed something positive to the world, and will outlive me by many decades, if not centuries.

But this person is going away, and this is the third-last post I will be writing on this blog.

Posted in Demoscene, Digital Video, Gaming, MindCandy, MobyGames, Programming, Vintage Computing | 3 Comments »

Vintage DOS MIDI Game Music Explained

Posted by Trixter on October 5, 2018

For people who are just getting started into vintage DOS gaming, MIDI music device support in games can be confusing:  What’s MIDI?  Why don’t MIDI devices play digital sound?  If all you have is MIDI, how do you hear sound effects?  This article will attempt to explain, as succinctly as possible, how MIDI devices became a part of DOS gaming music history, and how they were used for composing and playing back game music.  This article is not an extensive technical dive, but is meant to be an explanation for the novice DOS gamer who is new to the platform.

This information originally appeared as correspondence with Fabien Sanglard, who is working on the next book in his Game Engine Black Blook series.  His previous book, Game Engine Black Book: Wolfenstein 3D, is highly recommended.

What is MIDI?

MIDI is a synthesizer music control protocol, and stands for Musical Instrument Digital Interface. It was created in the 1980s as a way to connect keyboards, drum machines, other synthesizers, etc. together. Once connected, they could do things like have one instrument (like a keyboard) control another (like a drum machine), they could all refer to the same time sync signal, and also be connected to a computer using a computer MIDI interface. Once connected to a computer, the computer could record all of the notes passing along the MIDI protocol, effectively capturing the live performance.  Once captured, the computer allowed the user to edit the performance, make changes, and play it back out to all of the connected instruments.

MIDI instruments were connected to each other using cables employing a male 5-pin circular connector.

What was the Roland MT-32?
What was the Roland LAPC-I?

The Roland MT-32 was an external, standalone MIDI music synthesizer that you could connect with MIDI cables to a computer fitted with a MIDI adapter, such as the Roland MPU-401. This hardware allowed high-quality (for the time) music playback, better than the FM/OPL-based AdLib (and later Sound Blaster) cards. Sierra supported the MT-32 (and other sound and music devices) as early as 1987 and pushed for sound/music devices to be better-supported throughout the industry, leading with their own products first.  It is fair to credit Sierra with establishing higher-quality sound devices, and the MT-32 in particular, as a PC gaming “standard”.

The Roland LAPC-I combined the MPU-401 MIDI interface with an upgraded version of the MT-32 called the CM-32L into a single ISA card, so adding just that card would give you “MT-32” music playback, plus 33 additional sound effects.

The MT-32 was primarily a music synthesizer. Like any traditional musical keyboard synth, it had over 100 preset instruments, and some canned sound effects (gunshot, rain, explosion, wind, etc.). It also had the ability to change the parameters of those instruments and modify them to sound differently. Changing an instrument was done via SYSEX (SYStem EXclusive) MIDI commands. The MT-32 was not based on the Yamaha OPL series like the AdLib/Sound Blaster, but used a Roland-proprietary combination of prerecorded samples and subtractive synthesis.  You could not fundamentally create your own instrument or sound effect, but you could modify what already came with the MT-32.

The MT-32 only communicated via MIDI. MIDI does not have the ability to transmit PCM samples, so it had no ability to play custom digitized audio. The LAPC-I also lacked this capability:  While it was an add-in ISA card, it didn’t add digital sound playback to the existing CM-32L + MIDI interface combo it was designed to reproduce.  (A later card, the RAP-10, added this functionality.)

What was the Roland SC-55?
What was the Roland SCC-1?
Why were they a significant milestone of DOS gaming music?

The Roland SC-55 was the very first General MIDI standard device. The General MIDI standard was significant in that it defined 128 instruments that every device following the standard could adopt. Before General MIDI, there was no standardization: Instrument #4 could be “organ” or “flute” or “snare drum”, etc…  but in General MIDI, instrument #4 is always “Honky-Tonk Piano”. This standard was the real breakthrough for DOS gaming music, because it meant all MIDI music devices following the standard could reproduce the music nearly the same, as they would all be using the same instruments.  (That said, the SC-55 also had outstanding sound quality, which was also a breakthrough.)  Of the 128 instruments, 16 were sound effects.  An additional 46 percussive sounds (snare drum, hi-hat, etc.) were also available on a specific playback channel.

Like the MT-32, the SC-55 connected to the computer using MIDI cables and a MIDI interface installed in the computer. The Roland SCC-1 was like the LAPC-I: It combined an SC-55 and an MPU-401 onto a single ISA add-in card.

How was MIDI music for DOS games composed?

Standalone synthesizer modules like the MT-32 and the SC-55 can only be controlled via the MIDI protocol, sent over MIDI cables to the module. If you want to compose music to be played back on those modules, it is best practice to compose the music using the module itself. Because the module has no musical keyboard attached, it was common to use a synthesizer keyboard connected via MIDI to control the module. This was typically done by capturing a live performance on the keyboard into a MIDI note recording program called a MIDI sequencer, usually on a computer. Once captured on the computer, it could be edited like any media.

Why do I still need a Sound Blaster to hear sound in DOS games?

MIDI devices like the MT-32 and SC-55 were primarily designed as music synthesizer modules, and only contained a small number of sound effects.  The sound effects were so limited that most games didn’t bother trying to support them, so if one of those devices were all that you had, then you only heard music in a DOS game and no sound effects or speech. So, most DOS gamers also installed a card to play PCM sound, such as a Sound Blaster.  To hear both sound devices at the same time, users could run both to a mixer which output to a single set of speakers, but a cheaper option was to run the audio output of the MIDI module into the “line in” jack on a Sound Blaster, then connect the “line out” jack of the Sound Blaster to speakers.  Then the Sound Blaster internal mixer could be adjusted via software such that Line In was mixed into the output even while not recording.

While most games didn’t use MT-32 or SCC-1 canned sound effects, there were a few exceptions.  Sierra games using the SCI interpreter would occasionally use them (see Space Quest III for an example of MIDI sound effect use on the very first gameplay screen), and Another World (USA title “Out Of This World”) used the additional effects in the LAPC-I/CM-32L.

What music device should I pick when running a DOS game that has multiple options?

If you have an emulator configured for all possible DOS game sound standards — or, if you’re lucky and rich, a choice of sound hardware to put into a vintage DOS gaming system — then you should usually pick General MIDI with any sound extensions first, then General MIDI, then FM-based.  Here is a general list of sound options listed from best MIDI music quality to worst MIDI music quality; pick the highest option you have available:

  1. General MIDI (Yamaha XG or XG extensions)
  2. General MIDI (Roland SCC-1, Roland SC-55, Roland GS extensions)
  3. General MIDI
  4. Turtle Beach Multisound
  5. Roland LAPC-1 or CM-32L
  6. Roland MT-32
  7. Sound Blaster 16, Sound Blaster Pro 2 (Yamaha OPL-4 or OPL-3 FM compatible)
  8. Sound Blaster Pro (Yamaha OPL-2 stereo FM)
  9. AdLib or Sound Blaster (Yamaha OPL-2 FM)
  10. Creative Music System or Game Blaster
  11. Tandy/PCjr 3-voice audio
  12. PC speaker

Posted in Vintage Computing | 1 Comment »

Vintage DOS Memory Conventions Explained

Posted by Trixter on August 20, 2018

Confusing expanded (EMS) memory with extended (XMS) memory happens all the time in the vintage PC/DOS computing hobby for those new to those terms.  Which is which?  What does my hardware support?  Do I need them?  This article will attempt to explain, as succinctly as possible, what each “type” of PC memory is and how it is used.  This article is not an extensive technical dive, but is meant to be an explanation of DOS memory conventions for the novice DOS user who is new to using DOS.

Protected Mode memory (DPMI, VCPI, DOS extenders, etc.) are not mentioned in this article because they typically don’t require any user intervention to work (ie. DOOM comes with DOS4GW.EXE and it just loads and works automatically).

Terminology used in this article

PC: Any IBM PC  or compatible system from the 1980s and 1990s running DOS.
8088: Shorthand for the entire 8086 CPU class, which includes the 8086, the 8088, the NEC V20, and the NEC V30.
640KB: The typical limit of memory DOS can access.  (Exceptions for DOS to access higher than 640KB exist, but are not mentioned to keep this article understandable for the layman.)

Quick history of memory on the PC

The 8088 CPU in the first IBM PC could access up to 1MB of memory.
Later, PCs built with the 80286 CPU could access up to 16MB of memory.
Later still, PCs built with the 80386 CPU could access up to 4GB of memory.

All PCs can directly access the first 1MB of memory.  Accessing memory beyond the first 1MB requires functionality only 80286 and later CPUs have.  Memory that extends past the first 1MB is called Extended Memory.

Because 8088 CPUs can’t access Extended Memory, special memory boards were created for them that fit into their system expansion slots.  These boards contain extra memory visible somewhere in the first 1MB, where the 8088 can see it.  The memory provided by these special expansion boards is called Expanded Memory.

Memory types in detail

EMS, XMS, conventional memory, UMBs… what does it all mean?  Here are some definitions:

Conventional Memory

What is it?  The first 1MB of memory visible to all 8088 and higher CPUs.  DOS is loaded into the area from 0-640KB and manages it.  The area above that, from 640KB to 1024KB (1MB), is typically used by the system hardware and not generally available to DOS programs.
How do DOS programs use it?  DOS provides function calls for allocating, resizing, and deallocating memory blocks for program use.  (Alternately, programs can directly access any portion of the first 1MB of memory they want to, although doing so can be risky if the programmer is inexperienced.)

Extended Memory

What is it?  Memory visible beyond the first 1MB, usually physically located directly on the motherboard, but sometimes provided by adding memory cards.
How do DOS programs use it?  Via an API called the eXtended Memory Specification, also called XMS.
What provides XMS?  XMS is provided by a driver called HIMEM.SYS, loaded by CONFIG.SYS at boot time.
How does XMS work?  XMS provides function calls that DOS programs can use to copy data between conventional memory locations and extended memory locations.

Expanded Memory

What is it?  Memory provided by special expansion cards.
How do DOS programs use it?  Via an API called the Expanded Memory Specification, also called EMS.
How is EMS provided?  Via a driver provided by the expansion card manufacturer.  Each card has a different driver and you must use the correct one for your card.  The driver configures the card for use, and provides EMS function calls that DOS or programs can use to access the memory on the card.
How does EMS work?  EMS boards provide a small “window” into the memory they contain, and this window is located somewhere in the first 1MB of RAM where 8088 CPUs can access it.  To access more memory, programs issue EMS function calls that “move” the window to a different area on the card, changing what portion of the larger memory shows up in the small window.

A quick note about EMS:  If you want to run a program that uses EMS, but you don’t have an EMS board in your computer, don’t fret: You can emulate EMS on any 80386 or higher.  This is done by loading a memory manager such as EMM386 or QEMM.  One of the services provided by a memory manager is to section off a portion of Extended Memory and present it in response to EMS function calls, like a real EMS board would.

Upper Memory

What is it?  The upper portion of Conventional Memory located between 640KB and 1024KB (1MB).  There is typically no user-accessible memory in this area, but 80286 and higher systems can relocate portions of Extended Memory into this area for use by DOS programs.
What is it used for?  The total amount of upper memory available is typically very small, between 64KB to 128KB, but this amount can still be useful for loading small memory-resident programs or drivers outside of Conventional Memory.
How do DOS programs use it?
  XMS provides functions for allocating and deallocating memory in this area in units of “blocks”, called Upper Memory Blocks, or UMBs.
How are UMBs provided?  For 80386s and higher, DOS comes with HIMEM.SYS and EMM386 which, loaded together, provide UMB functionality.  For 80286s and lower, there are programs (such as QRAM or USEUMBS) that use “shadow ram” functionality provided by the 80286 system’s chipset to perform the mapping.
How does upper memory access work?  Once a program is provided an upper memory block via a UMB functional call, it can be accessed the same way conventional memory is accessed, ie. directly.

Guidelines to running DOS programs

  1. First off, simply try to run a DOS program.  Most run without needing any special memory configuration.
  2. If you have an 80286 or higher, always load HIMEM.SYS in your CONFIG.SYS file.  There’s no harm in installing it even if programs don’t use it.
  3. If you want to load a single program on a 386 or higher to manage all of this for you, install QEMM.  QEMM will manage all of your memory and provide your programs with either XMS or emulated EMS based on what each program asks for.
  4. Finally, if a program claims to support both EMS and XMS, choose EMS.  EMS is faster than XMS.

Posted in Vintage Computing | 4 Comments »

Using a Sound Blaster in a PC/XT-class system

Posted by Trixter on August 3, 2018

I’m asked this a few times every year: Can you put a Sound Blaster in an IBM PC, PC/XT, or otherwise 8088/8086-class system?  If you can, is there anything that can use it on that class of hardware?

The quick answer is yes and yes:  As long as there are no hardware conflicts, you can put any of these:

  • Sound Blaster 1.0
  • Sound Blaster 1.5
  • Sound Blaster 2.0
  • Sound Blaster Pro
  • Sound Blaster Pro 2.0
  • Pro Audio Spectrum 8
  • Pro Audio Spectrum 8+
  • Pro Audio Spectrum 16
  • Thunderboard

…into any system and it should work fine.  You’ll be able to use the onboard joystick port, and have Adlib/FM sound effects and music.

The longer answer has a caveat: There are less than a hundred sound-enhanced games that will run, and less than 20 of those will use the digital sound channel.  The Sound Blaster was commercially available to consumers in 1989, which was right as the 8088 era was coming to a close.  Only a handful of games were produced around that time period that supported the Sound Blaster and could still run on 8088-class hardware and supported the CGA graphics typical of 8088-class systems.

But, if you have a souped-up NEC V20/NEC V30 XT, you’re feeling adventurous, and you really want to hear some sampled (“digitized”) sound come out of your system, you can try running these:

Commercial games:

Legend:
1) Used the Activision OmniMusic driver. There might be more games compatible with 8088+CGA that use this driver.
2) Need the rare “16-color” version of this game which supports CGA 640×200 2-color mode

Shareware games:

Demos:

 

There might be more than the above, but this is all I can remember personally testing.

For possibly much more comprehensive information on this subject, you can do no better than to check out Great Hierophant’s Nerdly Pleasures blog, which performs deep technical dives into these and other subjects.

Posted in Demoscene, Gaming, Vintage Computing | 25 Comments »

Public Service Announcement: Do Not Use The eBay Global Shipping Program

Posted by Trixter on July 31, 2018

If you sell rare, unique, or otherwise irreplaceable items on ebay, do not use eBay’s Global Shipping Program.  Doing so grants eBay’s partners the right to effectively take your item and resell it without your knowledge.  What follows is an explanation of what the Global Shipping Program is, why it exists, and why you shouldn’t use it for items that are difficult or impossible to replace.

Shipping internationally is a hassle in the USA: It requires multiple forms, a declaration of value, and for anything over a certain size, interaction with a shipping service employee.  However, if you’re selling rare items with global interest, such as vintage computers or software, dealing with international shipping is a necessary evil.  You could always not ship internationally, but that cuts out a large section of your audience and potential profits.

To try to ease the pain of international shipping for USA sellers, ebay introduced the Global Shipping Program (“GSP”).  The GSP allows a USA seller to market to international buyers, but then ship to a central USA domestic address.  Once received, ebay then handles delivery of the item to the international buyer.  The benefit to both parties is straightforward: The buyer gets access to more sellers that will ship to their country, and the seller only has to pay for a domestic delivery and avoid international shipping hassle.

The central USA address facility is subcontracted out to Pitney Bowes  (“PB”).  PB is a business, and they need to make money too, so they collect many packages to a single destination country and then ship them all off at once in a single freight shipment.  (This is usually facilitated by repacking items into smaller boxes so that PB can fit more items per shipping container.)  Large freight shipments are much cheaper than shipping packages individually, so the difference between what the international buyer paid, and what the eventual shipping cost is, becomes PB’s profit.

What most people don’t realize is that eBay’s agreement with PB allows PB to steal your items and resell them.  Worse, they get caught doing it all the time.

The Global Shipping FAQ contains this language:

What happens to lost, damaged, or undeliverable items?

GSP items purchased by your buyer may be covered by an eBay Money Back Guarantee or PayPal Purchase Protection program. eBay and Pitney Bowes shall have no liability and shall have, in their discretion and in any manner that they prefer, the right to dispose of or liquidate parcels (and their contents) that eBay or Pitney Bowes conclude are undeliverable.

At first glance, this seems like protection for PB such that they won’t get in trouble for shipping things that are dangerous or prohibited by a certain country.  In those cases, the parcels are likely disposed of.  But this wording gives PB the right to “conclude” that any item is “undeliverable”.  Remember, PB is a business, and they need to make money, so what happens when they have only a few huge boxes (for example, vintage computers) to ship to an international destination, and/or the contents of those boxes are fragile and cannot be repacked and made smaller to fit into a shipping container?  PB would lose money passing them on to the buyer, and they’d also lose money returning them back to the seller.  So, rather than lose money in either case, they classify the item as “undeliverable” and it goes nowhere.  Their agreement with eBay (wording above) grants them the right to do this.

The reason this doesn’t turn into instant outrage on an hourly basis is that eBay compensates both the seller and buyer when this happens.  The seller gets to keep the money they received for the item, and since the item can’t be delivered, the buyer gets a refund for what they paid.  If the item is something common, then the buyer can just start their shopping again from a different seller or store.

But what happens to the original item if PB doesn’t want to deliver it?  The wording in the agreement grants PB the right to “liquidate” parcels.  While most people think liquidated means destroyed, it doesn’t:  In this context, it means apportioned, which is another way of saying reallocated and redistributed:

What happens to items that can’t be delivered to my buyer?

If eBay and/or Pitney Bowes determines that a GSP item is undeliverable eBay and/or Pitney Bowes may elect to dispose of, destroy or liquidate the undeliverable parcel, at which time title to the GSP item shall transfer automatically from you to eBay and/or any third party designated by either eBay or Pitney Bowes

In other words, the original item is given to a third party who can do whatever they want with it.  And what the third party does is resell it… back on eBay… using your original listing!

Need proof?  Here’s a listing from someone who sold an IBM PC to an international buyer:

https://www.ebay.com/itm/-/273283847165?nordt=true&orig_cvip=true&rt=nc&_trksid=p2047675.l10137

They then were informed by eBay that their package was undeliverable, and both parties were compensated.  Then, a few weeks later, this listing showed up on ebay:

https://www.ebay.com/itm/Working-IBM-Personal-Computer-Model-5150-PC-No-Monitor-/163169047795?epid=1900490613&hash=item25fda214f3%3Ag%3AVRAAAOSwgVlbWhO1&_nkw=ibm+5150&_sacat=0&_from=R40&LH_Complete=1&rt=nc&nma=true&si=xcoEA3o5aXAEajzy2eboTpHSO70%253D&orig_cvip=true&nordt=true&_trksid=p2047675.l2557

Not only is the original item for sale (with “No international shipping” predictably part of the shipping conditions), but the pictures were lifted wholesale from the original listing.

This is surely cause for outrage.  However, by merely using the GSP, you transfer all of your rights and have no recourse.  eBay’s official wording makes it clear that once the item is received by PB, not only do you lose all title to the item, you also lose any intellectual property rights your listing may have had:

Will content from my original listing be used if the item is liquidated?

Yes.In the event eBay or Pitney Bowes elects to dispose of or liquidate a GSP item, you grant to eBay, Pitney Bowes and/or any third party designated by either eBay or Pitney Bowes (as eBay and Pitney Bowes may elect) a royalty-free, perpetual, irrevocable, non-exclusive, transferable license to any intellectual property rights in the text or images presented in the original listing related to the GSP item, which exists or ever existed, including, but not limited to, the right to reproduce, prepare derivative works base on or display, any copyrightable elements, for the limited purpose of disposal or liquidation of the GSP item. You acknowledge that eBay or Pitney Bowes’s election to dispose of or liquidate the GSP item and allow you to retain your buyer’s payment for the GSP item is sufficient consideration for the transfer of title to eBay and/or any third party designated by either eBay or Pitney Bowes (as eBay or Pitney Bowes may elect in their sole discretion) and the grant of the license.

Always read the fine print.

Bottom Line

If you are selling something irreplaceable, such as a vintage computer or highly rare vintage software, do not, under any circumstances, use the GSP to sell internationally.  Doing so grants eBay the right to effectively destroy your item on a whim instead of delivering it.

Losing a vintage item is much more painful than simply being out the money you paid (or received) for it — the true cost is the loss of something that cannot be replaced.  Any seller of such items cannot, in good conscience, allow rare items to be put in this position.

I’d like to thank my colleagues at the VCF Forum for investigating and bringing this to light.

Posted in Vintage Computing | Leave a Comment »

The first 256-color game on the IBM PC

Posted by Trixter on October 1, 2017

In April of 1987, IBM announced the PS/2 line of systems. This was their advancement of the PC standard, but also an attempt come up with a new architecture that could not be cloned without paying a license fee. Of the new features announced, one of the most significant was the addition of MCGA, which created the 256-color mode 13h that we are so familiar with today. VGA was announced at the same time, which emulated all previous color standards including MCGA’s mode 13h.

This background is necessary to answer the following question: What was the first 256-color game on the PC? This was posed recently on a vintage gaming group on Facebook, but it’s a loaded question because it isn’t specific enough. It could mean any of the following:

  • What was the first PC game to use MCGA’s 256-color video mode (ie. mode 13h)?
  • What was the first PC game to use mode 13h to display more than 16 colors onscreen simultaneously? (Many early MCGA games physically used mode 13h only to reproduce the existing EGA/Tandy 16-color graphics the game shipped with, instead of taking full advantage of the extra colors mode 13h provided.)
  • What was the first PC game to fully take advantage of mode 13h to show (nearly) 256 colors onscreen simultaneously?

The aforementioned facebook group conversation devolved into relying on memories and friendly arguments. This is always dangerous, because our minds are not static records. To get an answer out of memories, you need a very large group of people coming to a consensus; even then, that’s not guaranteed to be the correct answer, just an agreed-upon answer. (Some historians would argue that collective memory is the only record that matters, but a discussion of archiving history is out of scope for this article.) In that facebook conversation, and previously reported in various places like Wikipedia, the answer was 688 Attack Sub. The latest executable file date in that game is 1989-03-04. (For reference, all dates in this article are of the format YYYY-MM-DD). That seemed a little late to me; tech adoption moved a little more slowly back then, but even still, it seemed odd that it would take two years for the first game to come out to take advantage of a new graphics standard. Was 688 Attack Sub really the first to support the 256-color mode provided by MCGA and VGA?

Research!

Thanks to MobyGames and various archives floating around the internet, we can perform actual research to answer these questions, instead of relying on memory and friendly arguments (which is what the facebook conversation eventually devolved into). I co-founded MobyGames for many reasons, but the biggest reason was to answer questions like this, so I immediately took up the task. Here was my methodology:

  1. I started at MobyGames by looking up all games that support VGA and MCGA in the years 1987, 1988, and 1989. Because MobyGames contributors are awesome, all of the search results provided screenshots, so it was easy to weed out any game that claimed VGA/MCGA support but was just displaying the same EGA 16-color graphics the game already had. In other words, for a game to be considered truly taking advantage of mode 13h, it had to display something other than the stock 16-color EGA/Tandy palette.
  2. I then analyzed screenshots to determine the number of unique colors in the screenshot. This was mostly used to determine if a game was actually displaying more than 16 colors, or just showing 16 and changing the palette via VGA color registers.
  3. Once I had a list of candidates, I then grabbed all revisions of the games in question and compared file dates of the executables, and used the latest file date as a “supported here first” date. (This is not the same as the game’s release date, ie. the date that the game was distributed by the publisher — those are much harder to verify due to lack of archived software publishing trade information, and besides that’s not the question I’m answering. I’m answering “who was first to support the tech”, not “who got their game into customer’s hands the quickest”.)
  4. Finally, I discarded everything after 1989-03-04, the executable file date of 688 Attack Sub, our known control point.

Here’s what I found, in chronological file date order:


1987-06-08: Thexder‘s earliest shipped revision shows a date of 1987-06-08 on a file named MAINPS, which is the executable overlay that provides “PS/2 graphics support” (ie. MCGA, ie mode 13h). This was surprising to learn, as I assumed Sierra’s AGI games would have supported it first, but the first AGI games to support mode 13h to display graphics of any sort have VG_GRAF.OVL file dates of 1987-11-16 or later. Thexder uses mode 13h to display graphics using 16 custom colors chosen to approximate how the game looks when running in its “best” mode, EGA 640×200.

Thexder-MCGA-mode


1987-12-16: Rockford: The Arcade Game displays 32 colors onscreen at once. (32 is significant; see Conclusions at the end of this article for an explanation.)

Rockford-title


1988-02-04: DeluxePaint added support for MCGA 256-color graphics in a version with an executable file date of 1988-02-04. While this isn’t a game, it played a large part in mode 13h support in games afterwards.

DeluxePaint-256


1988-10-05: Dream Zone uses digitized 16-gray-shade graphics as part of gameplay, then managed to eek out using one additional color when drawing the interface, for a total of 17 colors onscreen. This game is included here not because it is a serious contender in our research, but rather because it was the earliest PC game I could find that used digitized graphics that also used the MCGA palette registers to create a custom color palette — or, at the very least, used any of the default 256 colors that are created when mode 13h is initialized. (This beats out Moebius on the PC which has a later executable date.) Dream Zone is also notable in that it was created by the founders of Naughty Dog when they were 20 years old.

Dream-Zone-brother-room


1988-10-15: F-19 Stealth Fighter rasterizes the 3-D graphics using mostly the same 16 colors as as EGA during action gameplay, but when playing the game using MCGA, it uses the extra colors to draw the cockpit graphics using many color shades. This brings the number of colors up to 52 onscreen at once in typical gameplay.

f19-gameplay


1989-03-04: 688 Attack Sub starts off with a 210-color title screen and then uses many colors throughout gameplay: The Soviet control room (also pictured below) uses 73 colors; other screens produce a 16-color interface while an additional 16-element grayscale digitized picture is also shown; all elements of gameplay use a custom palette.

688-Attack-Sub-Title688-Attack-Sub-Soviet

Conclusions

Based on the above, let’s answer the questions we originally posed:

  • What was the first PC game to use MCGA’s 256-color video mode (ie. mode 13h)? Answer: Thexder.
  • What was the first PC game to use mode 13h to display more than 16 colors onscreen simultaneously? Answer: Rockford: The Arcade Game.
  • What was the first PC game to fully take advantage of mode 13h to show (nearly) 256 colors onscreen simultaneously? Answer: 688 Attack Sub.

Historical Context

Based on the above research, and my personal experience during this time period (if my own memory can be trusted), I can expand on these results with a little historical context. Consider this the “trivia” section of the article.

The “VGA” support in Thexder is truly MCGA support; this is reflected in the name of the graphics overlay, MAINPS, the PS part referring to mode 13h support as “PS/2 graphics” before the rest of the industry just started calling mode 13h “VGA graphics”. But if VGA also supports mode 13h, why don’t you see MCGA graphics when running Thexder on VGA systems? This is because the game is programmed to prefer EGA graphics over other display standards. Thexder’s native graphics are 640×200 in 8 colors as ported over from the original NEC PC-8801 version, which the developer emulated by running the game in EGA 640x200x16 mode. The developer felt the game looked best in its original graphics, so it shows the game that way on any system that can support EGA — and early PS/2 systems didn’t support VGA, only MCGA. So, the only way you can see the MCGA code/colors kick in is if you run it on an IBM PS/2 Model 25 or Model 30-8086, the only systems with MCGA graphics. If you don’t have one of these systems, you can force MCGA graphics to kick in by making a copy of your disk and then copying MAINPS to MAINEG, which will replace the EGA graphics code with the MCGA graphics code.

Rockford: The Arcade Game uses exactly 32 colors. Why is this interesting? Because it shows that the graphics were composed on an Amiga (most Amiga games were 32 colors), and instead of downconverting them to 16 colors like most PC ports did in the 1980s (see Airball for a typical example), the developer decided to support mode 13h so that all 32 colors could be displayed exactly. (Interestingly, the Amiga version of Rockford was released after the PC version.)

F-19 only barely supported mode 13h. It was a nice touch to draw the instrument panel using 32 shades of gray, but this is the only place in the game where additional colors are used. It serves the letter of the law, but not the spirit of the law.

688 Attack Sub makes use of DeluxePaint fonts on all versions of its title screen, which means it used DeluxePaint during development. Also, an earlier demo of the game while it was still being developed (date is 1988) shows that it originally did not fully support 256-color graphics (in the linked screenshot, the background uses multiple colors, but the foreground elements were definitely drawn to the default 16-color palette). Was support of mode 13h in 688 Attack Sub considered only after a paint program existed they could use to create such graphics? Hopefully John Ratcliff, Michael Kosaka, or Wilfredo Aguilar can clarify the development timeline.

Disclaimers

I referred to 256-color mode as “mode 13h” because that’s the exact MCGA video mode in use for all games listed above. Later games used VGA’s flexibility to create 256-color modes in higher resolutions, or with multiple video pages, or split-screen, etc. but these were truly limited to VGA, and didn’t show up until 1990 or later. So I chose the exact technical term because it defined a consistent scope to use for comparisons. (If you want to do your own research down the rabbit hole of “What was the first game to tweak VGA into new video modes?” then you can use MobyGames to start that journey.

All of these answers are to the letter of the law, but not necessarily to the spirit of the law. In my completely subjective and unscientific opinion, the first PC game to truly show off MCGA with 200+ colors on every single screen is Mean Streets (because most of the screens were digitized in some way). Coupled with crude video sequences, and the ability to run at a decent speed on an IBM PS/2 Model 25, it’s a great early game to show off what MCGA was capable of.

MobyGames information may not be complete for the time periods researched. Given the nature of recording history, it may never be complete. If you feel I missed something, please contribute the missing game(s) to MobyGames so that future research can be more accurate.

Posted in Gaming, MobyGames, Vintage Computing | 17 Comments »

How to explain programming to the total beginner

Posted by Trixter on June 6, 2017

Explaining what programming is in 2017 is likely best done by introducing the student to Scratch:  All logic is graphical, visual, and onscreen, which matches the most common output medium they’ll develop for.  But how do you explain programming like it’s 1979?

This topic came up recently in a vintage computer forum, where a long-time-listener-first-time-caller to the hobby decided they were going to do what they didn’t do in their youth:  Learn to program on their early home computers (which is one of the things they were originally marketed for anyway).  What struck me about this request is that the OP was truly coming from zero knowledge; they couldn’t comprehend how “ones and zeros” eventually turn into pac-man, or a drop-down menu, or a spreadsheet.

To help explain what programming itself is to the total layman, I came up with a metaphor that I thought was simple enough that I’d reproduce it here:  Programming is like cooking.

How is programming like cooking?  Well, how do you cook food?  To cook food, you need raw ingredients, cooking utensils, and recipes.  You read the recipe, which tells you which utensils to use on which ingredients and in which order.  The end result is a meal.  How does this relate to programming?  Like this:

  • Cooking utensils = CPU instructions
  • Raw ingredients = data
  • Recipe = A computer program

A program is a list of steps (recipe) that use different CPU instructions (utensils) to process data (ingredients) into a new format (a meal).  That’s all programming is.

Okay, but how do you make anything of any complexity, like a game or a drop-down menu?  Let’s extend our cooking metaphor:  Say you had to provide a ton of different, complex meals for a large catered event.  To do this, you have several recipes, each producing a different result.  For such a large event, it’s possible that some recipes exist only to create portions of food that themselves are used in larger recipes for a more complex meal.  The process is no different than making a single meal — you’re just doing it a lot more, with more recipes, for a bigger and more complex result.  How does this relate to programming? Like this:

  • Catered event = A complex thing the user sees on the screen
  • Many recipes = Many different programs
  • Smaller recipes that produce food to be fed into the larger recipes = Subroutines, library calls, API calls

I admit, I was eating lunch when I came up with this metaphor.  But maybe it can help you explain programming to your grandparents.

Posted in Programming, Vintage Computing | Leave a Comment »

Come to Vintage Computer Festival Midwest

Posted by Trixter on May 20, 2017

If you like vintage computers, and you like vintage people operating vintage computers, then come to the Vintage Computer Festival Midwest on September 9th and 10th this year.  I will be there, if you have always wanted the chance to laugh and point at me in Real Life(tm).

What makes VCFMW such a great show, in my totally biased opinion, is that it is 100% free to attend or have a table.  You use your table(s) to exhibit your collection, hold a competition or workshop, or even sell stuff — all are welcome as long as it relates to vintage computing.  There are things to see, things to operate, presentations to watch, and there’s a heck of a lot of Commodore stuff too.

Posted in Vintage Computing | Leave a Comment »