12

I remember being aware of the Altair 8800 when it made it's mark, but only vaguely. Lately I found myself wondering what hardware was required for the Altair to get BASIC up and running.

According to Wikipedia the original 4K BASIC was distributed on cassette and paper tape, so it seems reasonable to expect the user to have one of these mechanisms for loading the interpreter. But what interface options were available to the early computer enthusiast in 1975? Did MITS manufacture these cards directly or were there already 3rd party options available?

Also, wouldn't some kind of RS-232 serial or teletype interface be required? Wikipedia (somewhat cryptically) says

The finished interpreter, including its own I/O system and line editor,...

but I'm unclear what this really means. Was BASIC hard-coded to use a specific memory mapped IO card? If so, was there really any choice of card? If not, how did BASIC handle input/output?

7
  • 2
    Raffzahn gave a full answer below, but if you want to have a feeling for how slow this might've been, here's 4K BASIC loaded from a teletype's paper tape reader: youtube.com/watch?v=qv5b1Xowxdk
    – scruss
    May 5, 2020 at 1:14
  • 1
    Oh, that video was beyond cool. I must have one. :-)
    – Geo...
    May 5, 2020 at 1:47
  • 3
    Spend a few minutes with an ASR-33 and you might revise that. They are loud, slow, smelly, heavy, and did I say loud?
    – scruss
    May 5, 2020 at 2:26
  • @Geo... They are still fairly easy to get by ... of course, you may need to invest a few years in learning about mechanics as the only electric part is the motor. Much like with the I/O-Selectric I've sitting on my work bench, locked/jammed up and no idea were to start. Haven't had one open in 20 years :(
    – Raffzahn
    May 5, 2020 at 16:56
  • @scruss: I wonder why Altair programs were loaded from paper tapes formatted as Intel hex? If written as 32-byte records, every 32 bytes of loaded code will require 77 bytes on the tape. One wouldn't need a very big loader to use a format that uses three characters to represent two bytes of data, cutting the tape cost of each 32-byte record from 77 bytes to 50--cutting load times by 35%, while staying within the realm of the 64-character printable set.
    – supercat
    May 5, 2020 at 16:57

1 Answer 1

11

Lately I found myself wondering what hardware was required for the Altair to get BASIC up and running.

Basically

  • Cage
  • CPU-Card with 1 KiB RAM
  • 4 KiB RAM Card
  • Serial Interface

To have some space for any user program second 4 Ki card would come handy. And in fact, this is as well the configuration for which BASIC was offered at a lower price:

75 USD instead of 500 USD when purchased with an Altair computer, an interface board, and 8K of memory

Did MITS manufacture these cards directly or were there already 3rd party options available?

Since the (later) S100 bus was defined with the Altair, it would have needed a psychic to get compatible cards out right away :) So, no, it took some time until others were supplied.

Old Price lists offer some insight here - as long as one keeps in mind, that some of the early entries were pure vapour ware - or came only into existence quite in late 1975 or way into 1976.

MITS' initial offering contianed

  • 88-SIO-x, a COM2502 based serial interface card, available as RS232(-A), TTL(-B) or TTY(-C)
  • 88-4PIO, a M6820 based parallel port card, delivered with one PIO, prepared to hold 4.
  • 88-ACR, a (casette) tape interface (to be used with a 88-SIO-B board)
  • 88-4MCS, a 4 KiB static RAM board using 32 2102 (1 Kix1) RAMs
  • 88-4MCD, a 4 KiB dynamic RAM board using 8 TMS4030 or 2107A (1 Kix1) DRAMs (Oct 1975)
  • 88-VI, a Vector interrupt card

There was, AFAIK, as well offerings for 1 and 2 KiB RAM kits, but AFAIR they were simply the same as the 4 KiB static (88-4MCS), just with less RAM chips supplied.

Until mid 1976 this was expanded with - 16 KiB static RAM - Multiport serial card - Real time clock - PROM-Board - ADC card - Disk controller - Printer interface

But at that time many more and better cards were available from other manufacturers.

Also, wouldn't some kind of RS-232 serial or teletype interface be required?

Yes, some. For example with the 88-SIO-C a TTY could be used for loading from paper tape, as well as acting as terminal. To use the cassette version, another serial interface was needed (88-SIO-B) to drive the 88-ACR interface. Alst but not least, BASIC could of course be put into a set of PROMs to have it at power on.

Wikipedia (somewhat cryptically) says

The finished interpreter, including its own I/O system and line editor,...

but I'm unclear what this really means. Was BASIC hard-coded to use a specific memory mapped IO card? If so, was there really any choice of card? If not, how did BASIC handle input/output?

Back then, software was at the same time less hardware dependant and less complex. To run BASIC, one had to supply a set of in/output functions and patch certain locations with calls to these functions. Keep in mind, the Altair had no OS or BIOS or whatsoever at all. it was bare hardware, to be started by toggling in a loader.


How is it done:

Basic 4K BASIC had two routines for character based terminal I/O, OutChar (more exact WaitTermReady) to output a character and InputChar to read one. They were written for an interface with two I/O ports, one status and one data port. Status port bit 7 was checked to see if a character could be outputted, while status port bit 1 if there's an input ready. By default it was assembled with I/O Port 0 for status and 1 for data.

  1. This would indeed fit a 88-SIO card jumpered at I/O-Adress 00h, thus such a configuration would run 4K BASIC right from the tape.

  2. If the 88-SIO card was jumpered for a different address, the corresponding IN/OUT locations had to be patched (*1).

  3. If one used a UART with a different port structure and or status signalling, but still I/O space based and simple access, new I/O routines had to be added, and according jumps patched into the start for either I/O function.

Sounds complicated? Yes, but keep in mind, this is your first computer and your first real application software, spending 10-15 minutes active bringing it up is not only exiting, it also seams total normal.

Already early on Micro-Soft improved this by adding 'automatic' configuration. During initialisation the content of the switches was examined and some auto-patching happened.

  • All switches down - 88-SIO at address 00/01h was assumed
  • A14 up - Older Version of 88-SIO at address 00/01h
  • A13 up - 88-PIO at address 00/01h
  • A12 up - 88-4PIO at address 20..23h
  • A11 up - 88-2SIO at address 20/21h

Additionally flipping A8 up would make BASIC to take the base address for the card selected from a memory address (0FFFh for 4K, 1FFFh for 8K, 2FFFh for Extended). Of course, one had to toggle it in before executing BASIC :)

This configuration option relieved everyone using MITS hardware from patching (Above #1), only adding the minor step of setting a memory location if one used other than the default ports (above #2).

Basically the same settings were to be used for the checksum loader ... after manually correcting them when entering the first tage loader. Come on, it's easy.


*1 - Patching can happen in many ways and depended on the medium.

  • With paper tape, one could try to modify the original at these locations by overtyping (or rather punching the holes manually). This works fine with a 88-SIO card, as all higher bits are cleared, and bit 0 is always the same.

  • Or (more advisable) one duplicated the tape (and leave the original untouched), but changed either IN/OUT address. This became necessary if complete different addresses and/or different status bits were to be used.

  • Or do it in RAM: One loaded BASIC, patched the changes in memory and dumped it again to (paper/cassette) tape. After all, the 'file' was just a memory dump anyway. For cassette based BASIC this was the only way. Similar if the patch had to include more code like for a different terminal connection.

  • Of course, one could always just load the code and patch it prior to every use. That's just a few more switch flips, not really worth all the hassle of patching a paper tape or saving that stuff again :))

7
  • thanks for the fantastic answer. You mention "one had to supply a set of in/output functions and patch certain locations with calls to these functions". I realize there was no OS / BIOS, but can you elaborate on how this worked? Was it like typical memory mapped IO where you hookup the address/data lines to some IO device, and when the chip select goes active you're reading/writing to the device registers instead of RAM?
    – Geo...
    May 5, 2020 at 1:40
  • @Geo... Huh? I thought we were talking software? Those were functions to be called. Think of them like BIOS functions handling the hardware - depending on whatever hardware is used. fer all, hiding the way an interface is accessed, like what bits are to be checkt for ready, or if it's in I/O space or memory space, that is what such an abstraction layer is for, isn't it? I'll add a few details.
    – Raffzahn
    May 5, 2020 at 11:11
  • @Geo... I added more details after digging out the manuals and peeking into the code. Lucky the whole configuration an setup is less than ~80 instructions :)
    – Raffzahn
    May 5, 2020 at 12:31
  • 3
    @Geo... Isn't, this 'being on our own' the true part of adventure. At that time we were adventuring into an unknown strange world, standing infront of a massive forest with a machete in our hand. Hacking one branch at a time, not knowing that just a few hundred meter ahead four lane highways and automated (no, not flying) cars waiting to take us for hundreds of kilometer in a less time the first row of trees took. Except now, already diving in these luxury vehicles for years, we think back in nostalgia about that moment, when we took the first steps, hoping that excitement would come back.
    – Raffzahn
    May 5, 2020 at 14:44
  • 1
    @Raffzhan, I completely agree. I missed the Altair generation by just few years... But I can remember the fascination and joy of playing '23 matches' on a TRS-80, learning to program on an Apple ][ and devouring every issue of Compute! - Discovering hardware sprites on my C-64, pixel-poking my first custom font and yes - frying some hardware with ill-advised hardware projects! There was nobody to ask, nobody to mentor, nobody to explain anything. You just sort of had to figure it out. "Being on our own" was exciting, exasperating and immersive. Oh how I miss those days!
    – Geo...
    May 5, 2020 at 16:21

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .