Vintage Computers


A18 Assembler for COSMAC

Introduction to the A18 Assembler for COSMAC The A18 Assembler for COSMAC will convert your COSMAC assembly programs to object code. After that, you can send the file to your processor. I’m using Debian 11 for this example, but the A18 package also comes with a .exe file if you Read More »

Introduction to the A18 Assembler for COSMAC

COSMAC 1802 Register Layout

Introduction to the COSMAC 1802 Register Layout The COSMAC 1802 Register Layout is a bit different from other processors. If you are used to the 6502, for example, you will find the addressing is much more indirect. For example, the P register is not the program counter. It simply points Read More »

COSMAC 1802 Memory Layout

Geoff Graham’s VT100 Terminal

Introduction to Geoff Graham’s VT100 Terminal Geoff Graham’s VT100 Terminal is a hardware emulator. This is a simple board that you can build yourself for a very reasonable price. I purchased a pre-built module on Ebay. There are several versions of this board. For instance, you can use a configuration Read More »

Geoff Graham's VT100 Terminal

Kim-1 Scan Based Timer

Introduction to the Kim-1 Scan Based Timer In this post, I’ll cover some code I wrote for a Kim-1 Scan Based Timer. I’ll be using the Kim UNO for this post. You may have to modify the program for your own use. You can calibrate this timer by changing the Read More »

Kim-1 (UNO) Scan Timer

Imsai 8080 Replica Build

Introduction to the Imsai 8080 Replica Build The Imsai 8080 Replica Build went very smoothly. I’ve always wanted one of these units. The quality of the parts were very good, and I have to say the pictures you see do not do it justice. It’s best to see one in Read More »

IMSAI 8080 Replica Build

Kenbak-1 Relative Jumps

Introduction to Kenbak-1 Relative Jumps Kenbak-1 Relative Jumps will jump to a location relative to the program counter. Really, there is no relative jump instruction. Therefore, if we require a relative jump we will do this with the JPI (Indirect Jump) instruction. The advantage of relative jumps is that we Read More »

Kenbak-1 Relative Jumps

Kenbak-1 Two Byte Addition

Introduction to Kenbak-1 Two Byte Addition With the Kenbak-1 Two Byte Addition, we can add larger numbers. Keep in mind that with 8 bit addition, we can only have numbers up to 377 octal (255 decimal). That’s if we don’t even used signed values. This is very limiting. When we Read More »

Kenbak-1 Two Byte Addition

Programming Loops on the Kenbak-1

Introduction to Programming Loops on the Kenbak-1 When Programming Loops on the Kenbak-1, we will use the JPD instruction. Basically, we set a register to a specific value. For this example, we’ll use the X register. Every time our loop executes, we decrement the X register. When the X register Read More »

Kenbak-1 building loops

Kenbak-1 Division

Introduction to Kenbak-1 Division We’ll need to come up with a creative way to do Kenbak-1 Division. The Kenbak-1 does not have a way to divide directly by using instructions. We’ll simply need to do the division manually. Basically, the method I’ll use for this is to simply keep extracting Read More »

Kenbak-1 Division

Kenbak-1 Multiplication

Introduction to Kenbak-1 Multiplication Kenbak-1 Multiplication involves creating loops. Being designed in 1971, the Kenbak-1 has a limited instruction set. That limited instruction set presents some good challenges. These challenges force us not only to understand the Kenbak-1 itself, but also understand more about mathematics. There is no direct instruction Read More »

Multiplication on the Kenbak-1