.cr dp2200 To load this cross overlay
During the late 60's of the previous century a company named Computer Terminal Corporation wanted to create a universal terminal.
A CPU for this terminal was needed, so they asked Texas Instruments and Intel to make one.
Both companies failed to create the CPU (in time) and therefore Computer Terminal Corporation decided to create the CPU with discrete TTL ICs.
Two years later Intel did manage to finish the 8008 CPU.
It is no surprise that the original 1972 instruction set of this processor was very similar to the instruction set of the Datapoint 2200.
Computer Terminal Corporation succeeded in creating a universal terminal, which was called the Datapoint 2200.
Later the company was renamed to Datapoint Corporation too.
Without knowing it Datapoint created the first personal computer because users started to write their own programs for the machine.
So the Datapoint 2200 is not really a microprocessor, it is more a micro computer with a discrete CPU. I was so amused by the story behind this machine that I decided to write a cross overlay for it. Not that I ever saw a Datapoint 2200 myself, or will ever own one. I just felt that my cross overlay library would not be complete without an overlay for the Datapoint 2200.
A few years later the Datapoint 2200 Mark II was released, which had a few enhancements to the original Datapoint 2200.
The programming model in the picture below shows the most important registers of the Datapoint 2200. Please note that the Datapoint 2200 II had two identical sets of register (including the 4 status flip-flops). Two instructions ALPHA and BETA are used to switch between the two sets.
The Accumulator is the most important register for 8 bit arithmetic operations.
There is no real Program Status Word on the Datapoint 2200. The 4 system flags (C, Z, S, P) can be tested by the different conditional jump, call and return instructions.
Apart from the Accumulator Datapoint 2200 is equipped with 6 additional general purpose 8-bit registers.
The HL pair is used as a data pointer to transfer data to and from memory.
This is the only time that two registers are concatenated to form one 16-bit register.
The H and L register must be loaded with two 8-bit values separately to form the address of the required memory location.
On the first model there was a 15 level deep circular stack, while the Mark II had a 16 level deep 16-bit stack. The stack pointer could not be manipulated and would wrap around when incremented or decremented beyond its boundaries.
The program counter PC is normally incremented after fetching each instruction or operand byte during program execution.
The only way you can change this behaviour is with the jump, call and return instructions.
Also interrupts can change the program counter's value.
The program counter on the original Datapoint 2200 was only 13-bits wide, enabling it to address up to 8k of memory (which was expensive enough in those days).
The Mark II had a 14-bit wide program counter, which could address up to 16k of memory.
Only the Mark II model was equipped with a very primitive interrupt system.
When interrupts are enabled the CPU is interrupted every millisecond.
During an interrupt the program counter is saved on the stack and is reloaded with 0, effectively performing a software Reset.
There is no real Return from interrupt sequence.
A normal RETURN instruction will do the trick.
I have no information about the instruction timings of this computer. Therefore you won't get any timing information in Version 3, even when you switch the timing list option on.
No reserved words exist for this cross overlay.
Two things are set while initializing the Datapoint 2200 overlay every time it is loaded by the .CR directive.
There are some things to note about the SB-Assembler for the Datapoint 2200 processor.