MITS 2SIO serial chip?

From: Allison <ajp166_at_bellatlantic.net>
Date: Wed Dec 19 12:10:58 2001

From: Ben Franchuk <bfranchuk_at_jetnet.ab.ca>
>True. The only real trick I used was on reset. This would clear
>the instruction register and state counter to zero. I would then


Reset for the approach I took was simple...clear the ucode latchs.
the reset(restart) addres in ucode was 000h.

>use that to fetch the first instruction. All instructions would
>start from state 2. IRQ was jam on the bus the IRQ instruction.
>This has changed slightly as of today since I did add a irq input
>and made reset now load a octal bootstrap.

IRQ was simple too.. the first microinstruction for the normal
machine cycle was opcode fetch... unless the IRQ FF was set then
the microaddress loaded was interrupt action address rather than the
mapped opcode. That meant the interrupt system was synchronized
to instruction fetch and also the actions taken were what ever ucode
dictated. IRQ and CALL were the same basic ucode obviously.

Other things I played with is a JSR (pdp-8 style) and CALL(stack
style like z80 and others). Both had advantages but the JSR style
was easier to make fast in ucode{fewer microwords}.

>I have looked a microcode but not having a PROM burner kept me from
>doing anything with it. I found I spent more time writing software
>and emulators than thinking about hardware in great detail.
>Most of the fixing of bent opcodes have been done before I did the
>hardware but I did make a few changes in the exact opcode order.


At the time I did it (1981ish) the emulator would have to run on either CP/M
z80, RT-11(PDP-11) or my fingers. Part of the opcode thing was design,
test, then play what if. At that time I used 350ns 2732s as I had them
and could easily burn them, not fast but, easy to use. Also all the ucode
for lack of a compiler was hand written.

The approach was modular, simple and as much of the circuits repetitive
to make wiring (wire wrap) easy to do and troubleshoot. For example the
microstate machine was tested with one 2732, one LS273, one 74153 and
a debounced pushbutton. That allowed me to investigate things like micro
jumps, looping and startup. From there it was pretty easy to add more bits
to control other logic like RAM, ALU and bus traffic latches.

Using 2901s with that microcontroller was a fairly simple, expandable and
managable machine of moderate speed by 1981 standards. Still it was
fairly large and ate power!

One for the experimental machines tried with that hardware was a 1802 like
register based cpu with 16 registers like 1802 but the ALU and data paths
were also 16bits. Even simple changes like that have interesting effects
on in instruction sets and addressing modes. For example the 1802 does
not have instructions for loading or storing the 16bit register content, you
have to move bytes through the Accumulator due to 8bit busses (even
internal).
Once you have a 16bit path other things make more sense(or less!).

Allison
Received on Wed Dec 19 2001 - 12:10:58 GMT

This archive was generated by hypermail 2.3.0 : Fri Oct 10 2014 - 23:33:40 BST