Very cool video! I've always wondered how these things worked. People like to joke that nobody knew what to do with these monitor-less boxes back in the day, but now I see it's a computer like any other. You just need to know binary to get results out of it.
An unexpanded Altair couldn't do much more than enter programs on the front panel, and watch the lights. People would typically add at least a serial port (for a printer or teletype, or if you had money, a video terminal), more RAM, and other I/O devices like a cassette or disk drive. A parallel port was also often used to connect an ASCII keyboard.
Jonathan Pressman It can do anything you program it to do, but its basically entering and reading data directly on the bus of a microprocessor. Which was new to the public. Its a learning curve. You can learn to program assemby, mnemonics. The computer, like this, is just good at logical decisions, like the and, or, xor operands. Yes it is better if the output would somehow be more tangible, and that came soon after.
Jonathan Pressman Although shown here in bone stock configuration ,hardware for a tty terminal (or video terminal) and mass storage, It can (and was used for whatever any later 8 bit computer was used for. Early on a BASIC interpreter was available (That software that started Microsoft) Eventually CP/M was ported to it!
There is probably an obvious reason but can someone explain to me why the Altair groups the bits the way it does? That is... instead of 0000 0000 0000 0000 it's 0 000 000 000 000 000. edit: Okay.. it's because it works in octal. Great, years of programming and I've used binary, hex, and decimal. Now add octal representation to that ;-)
LanIost, because many computer folks at that time were accustomed to how earlier mini-computers and mainframe computers did things, and those were often programmed in octal, which meant that the binary bits would be grouped in 3's. These days the custom is to use hexadecimal instead of octal, so we view the binary bits in groups of 4.
What happens when you use deposit or examine in the middle of an instruction e.g. single stepping the jump opcode then examine some address. Since the examine and deposit functionality is implemented by "injecting" opcodes on the bus the machine should go bananas or do i miss something?
If you perform an examine when not stopped at an M1 cycle (e.g., as you mention, when stopped part way into a multi-byte instruction), the examine operation fails. For example, an examine does a JMP xxxx where xxxx is the value on the front panel switches. If, however, a LDA 01234h instruction was stopped just after fetching the LDA opcode, the CPU processes the next byte fetched as the LSB of the address to load from. If an examine is performed at this point, the CPU gets the JMP opcode (0C3h) instead of the LSB of the address (34h). This means the LDA instruction will load from the wrong location and also means the JMP opcode will not be treated as a JMP instruction, but instead just an address byte for the LDA instruction. Depending on the address bytes on the front panel and the instruction being executed, the CPU will resync to an M1 cycle within two or three examine attempts.
You can hook it up to a terminal, printer, modem interface. Do word processing, programming, run games (text adventures, dungeon crawlers, deep space exploration, chess..). It could even run a BBS server for other people to connect to, share news, discuss and trade files. Shown here is the basic bare-bones setup. Think modern PC tower without monitor/keyboard/mouse. All you can do it turn it on and off. With this, you can actually program some simple stuff right out of the box, even play a simple game (like kill-the-bit) without any peripherals.
Each instruction is just a number sitting in a memory location. If you store the number for a particular instruction at memory location 0100, then get the processor to execute JMP 0100, it will start to execute the instruction you stored there.
I’ve been watching there videos and trying to replicate all inputs... but I don’t really understand how to read the outputs (how do I read the lights ?) Can anyone help?
Each LED can represent the digit 0 (off) or 1 (on). When you take several LEDs as a group of bits, you tend to regard the rightmost LED as the 'least significant bit'. Going to the left, each bit represents twice as much as the last one. So going from the right of the panel to the left, each LED represents the 1s column, then the 2s column, then 4s, 8s, 16s, 32s, 64s, 128s then 256s, 512s, 1024s, 2048s, 4096s, 8192s, 16384s, 32768s. It's just like decimal numbers, except instead of each column to the left increasing in value by 10s, then you're increasing in value by 2. If you take 3 LEDs together, you can represent the numbers 0 to 7 as the patterns: 0 = 000: 0 x 4 + 0 x 2 + 0 x 1 1 = 001: 0 x 4 + 0 x 2 + 1 x 1 2 = 010: 0 x 4 + 1 x 2 + 0 x 1 3 = 011: 0 x 4 + 1 x 2 + 1 x 1 4 = 100: 1 x 4 + 0 x 2 + 0 x 1 5 = 101: 1 x 4 + 0 x 2 + 1 x 1 6 = 110: 1 x 4 + 1 x 2 + 0 x 1 7 = 111: 1 x 4 + 1 x 2 + 1 x 1 This is known as the Octal numbering system. When you write octal numbers down, then each column to the left is worth 8 times as much as the column to the right. So decimal 65 is octal 101. As the Altair is an 8-bit computer, its data display is made up of 8 LEDs, laid out as three octal digits in the pattern 2, 3, 3. This can represent decimal values 0 to 255 as octal values 000 to 377. It's important to remember that this is just a convention which makes it easier to load values into the front panel of the Altair - if you tried to work out the equivalent switch settings for decimal numbers, it would be far more difficult. Most modern computers and software engineers tend to use the Hexadecimal numbering system to display the value of an 8-bit number (a byte). Hexadecimal groups 4 bits together and represents them as the digits 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E and F. Each column to the left is worth 16 times as much as the column to the right. The decimal numbers 0 to 255 can be represented as Hex numbers 00 to FF. If the Altair LEDs had been laid out in groups of 4, then the user manual would have used the Hexadecimal system for number entry. Maybe they felt that Hex would have been a bit more confusing than Octal for hobbyists in the 1970s! It's worth noting that Digital Equipment Corporation (DEC) used an Octal numbering system on their computers, too.
How come, when you program the jump to 20, the only switch you light up is the 5th one? 2^4 is 16, so for 20 i'd assume you'd want to light up the 5th and the 3rd switch, no? Confusio mucho!
Looked up octal, and in the context of the altair i guess using that system actually makes perfect sense! Instead of having to remember 8 powers of 2, you just remember the first 3 and forget the numbers 8 and 9 exist! Pretty awesome!
I don't understand how was this considered the first pc all did was flash lights? I get it later when you could add peripherals. This is a honest question please explain.
There's a bit of truth in that. Complexity in software not only exists for functionality but also to keep up a market of imaginary software components, all built on top of the same old logic , and the whole thing tied together with patents and copyrights on constructs that happen on next level, beyond the machine.
ohhhh man I know what I'm doing tonight: watching alllll these altair videos!
that mizerable bass is a bangerr
Very cool video! I've always wondered how these things worked. People like to joke that nobody knew what to do with these monitor-less boxes back in the day, but now I see it's a computer like any other. You just need to know binary to get results out of it.
UltraMuffin Not just binary, mnemonics and assembly.
Me too!
Очень интересное видео.Посмотрел все на одном дыхании. Спасибо Вам огромное.
It's probably worth noting that if you say numbers like "303" and "20" you mean octals. ("303"=195, "20"=16)
That had me scratching my head. "And we jump to address 20". I'm thinking, "wait, isn't that 0x10?"
An unexpanded Altair couldn't do much more than enter programs on the front panel, and watch the lights. People would typically add at least a serial port (for a printer or teletype, or if you had money, a video terminal), more RAM, and other I/O devices like a cassette or disk drive. A parallel port was also often used to connect an ASCII keyboard.
Opcode three zero three, Address twenty... everything in octal :D yeah
Nice video. What was practical application for this device? I can't figure out what it did. Complex math? And was the only output the lights? Thanks.
Jonathan Pressman It can do anything you program it to do, but its basically entering and reading data directly on the bus of a microprocessor. Which was new to the public. Its a learning curve. You can learn to program assemby, mnemonics. The computer, like this, is just good at logical decisions, like the and, or, xor operands. Yes it is better if the output would somehow be more tangible, and that came soon after.
Jonathan Pressman Although shown here in bone stock configuration ,hardware for a tty terminal (or video terminal) and mass storage, It can (and was used for whatever any later 8 bit computer was used for. Early on a BASIC interpreter was available (That software that started Microsoft) Eventually CP/M was ported to it!
I dont understand a damn thing>.< i FREAKING LOVE IT!!!!@
There is probably an obvious reason but can someone explain to me why the Altair groups the bits the way it does? That is... instead of 0000 0000 0000 0000 it's 0 000 000 000 000 000.
edit: Okay.. it's because it works in octal. Great, years of programming and I've used binary, hex, and decimal. Now add octal representation to that ;-)
LanIost, because many computer folks at that time were accustomed to how earlier mini-computers and mainframe computers did things, and those were often programmed in octal, which meant that the binary bits would be grouped in 3's. These days the custom is to use hexadecimal instead of octal, so we view the binary bits in groups of 4.
What happens when you use deposit or examine in the middle of an instruction e.g. single stepping the jump opcode then examine some address. Since the examine and deposit functionality is implemented by "injecting" opcodes on the bus the machine should go bananas or do i miss something?
If you perform an examine when not stopped at an M1 cycle (e.g., as you mention, when stopped part way into a multi-byte instruction), the examine operation fails. For example, an examine does a JMP xxxx where xxxx is the value on the front panel switches. If, however, a LDA 01234h instruction was stopped just after fetching the LDA opcode, the CPU processes the next byte fetched as the LSB of the address to load from. If an examine is performed at this point, the CPU gets the JMP opcode (0C3h) instead of the LSB of the address (34h). This means the LDA instruction will load from the wrong location and also means the JMP opcode will not be treated as a JMP instruction, but instead just an address byte for the LDA instruction. Depending on the address bytes on the front panel and the instruction being executed, the CPU will resync to an M1 cycle within two or three examine attempts.
Thank You...whenever I see people using it it looks really confusing
how create a program with jump? show a light to position 4 from A15?
hey, since this is a replica, isnt it lighter than the original? if I made the kit, would I have to weight it somehow?
No, it's heavy enough on its own to use the front panel normally.
tnx
I recalled the jump opcode, though in hex, not octal. 1:00 This is worrying me.
I'm just confused, what do you use this computer for? Like what was it used for/how would you use it to do work?
You can hook it up to a terminal, printer, modem interface. Do word processing, programming, run games (text adventures, dungeon crawlers, deep space exploration, chess..). It could even run a BBS server for other people to connect to, share news, discuss and trade files. Shown here is the basic bare-bones setup. Think modern PC tower without monitor/keyboard/mouse. All you can do it turn it on and off. With this, you can actually program some simple stuff right out of the box, even play a simple game (like kill-the-bit) without any peripherals.
But how do you write a program that changes its own instructions while running?
Each instruction is just a number sitting in a memory location. If you store the number for a particular instruction at memory location 0100, then get the processor to execute JMP 0100, it will start to execute the instruction you stored there.
I’ve been watching there videos and trying to replicate all inputs... but I don’t really understand how to read the outputs (how do I read the lights ?)
Can anyone help?
Each LED can represent the digit 0 (off) or 1 (on). When you take several LEDs as a group of bits, you tend to regard the rightmost LED as the 'least significant bit'. Going to the left, each bit represents twice as much as the last one. So going from the right of the panel to the left, each LED represents the 1s column, then the 2s column, then 4s, 8s, 16s, 32s, 64s, 128s then 256s, 512s, 1024s, 2048s, 4096s, 8192s, 16384s, 32768s. It's just like decimal numbers, except instead of each column to the left increasing in value by 10s, then you're increasing in value by 2.
If you take 3 LEDs together, you can represent the numbers 0 to 7 as the patterns:
0 = 000: 0 x 4 + 0 x 2 + 0 x 1
1 = 001: 0 x 4 + 0 x 2 + 1 x 1
2 = 010: 0 x 4 + 1 x 2 + 0 x 1
3 = 011: 0 x 4 + 1 x 2 + 1 x 1
4 = 100: 1 x 4 + 0 x 2 + 0 x 1
5 = 101: 1 x 4 + 0 x 2 + 1 x 1
6 = 110: 1 x 4 + 1 x 2 + 0 x 1
7 = 111: 1 x 4 + 1 x 2 + 1 x 1
This is known as the Octal numbering system. When you write octal numbers down, then each column to the left is worth 8 times as much as the column to the right. So decimal 65 is octal 101. As the Altair is an 8-bit computer, its data display is made up of 8 LEDs, laid out as three octal digits in the pattern 2, 3, 3. This can represent decimal values 0 to 255 as octal values 000 to 377.
It's important to remember that this is just a convention which makes it easier to load values into the front panel of the Altair - if you tried to work out the equivalent switch settings for decimal numbers, it would be far more difficult.
Most modern computers and software engineers tend to use the Hexadecimal numbering system to display the value of an 8-bit number (a byte). Hexadecimal groups 4 bits together and represents them as the digits 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E and F. Each column to the left is worth 16 times as much as the column to the right. The decimal numbers 0 to 255 can be represented as Hex numbers 00 to FF. If the Altair LEDs had been laid out in groups of 4, then the user manual would have used the Hexadecimal system for number entry. Maybe they felt that Hex would have been a bit more confusing than Octal for hobbyists in the 1970s!
It's worth noting that Digital Equipment Corporation (DEC) used an Octal numbering system on their computers, too.
I would sooo want to have one to play with it
what`s the clock speed?
Ginotitant Cubing He mentioned the jump instruction would execute 200000 times per second.
+telocho coolio
Ginotitant Cubing 2 Mhz (Intel 8080 CPU).
Depends on what CPU you use. Every CPU comes on an S100 card, so there were upgrades available for many years. The 8080 runs @ 2MHz though.
I played a lot of those Altari games as kid, with that joystick that had a big red button.
I do not understand Address 20 to me is 16
Octal, not Hex. 020 = 0x10, i.e. 20 base 8 is two eights = 16 = 10 base 16.
How come, when you program the jump to 20, the only switch you light up is the 5th one? 2^4 is 16, so for 20 i'd assume you'd want to light up the 5th and the 3rd switch, no? Confusio mucho!
MrPlasterbrick I'm speaking in octal - the octal digit 2 followed by the octal digit 0. It gets confusing!
Looked up octal, and in the context of the altair i guess using that system actually makes perfect sense! Instead of having to remember 8 powers of 2, you just remember the first 3 and forget the numbers 8 and 9 exist! Pretty awesome!
Hahaha just watched this for history
I don't understand how was this considered the first pc all did was flash lights? I get it later when you could add peripherals. This is a honest question please explain.
from this to writing everything in javascript.. this civilization took some wrong turns and now is going to never-never-land.
There's a bit of truth in that. Complexity in software not only exists for functionality but also to keep up a market of imaginary software components, all built on top of the same old logic , and the whole thing tied together with patents and copyrights on constructs that happen on next level, beyond the machine.
The screen
Ничего не понятно.
i think, i got it :D
The world got so much worse after covid...