Elf99 - rebirth of a classic

From: Allison J Parent <allisonp_at_world.std.com>
Date: Wed Nov 11 07:41:20 1998

< > < > for a intersil 6100 (12 bit pdp-8) based system.
< > <
<
< Do tell.

A small potload of them for the Intersil sampler, there was an article
in Microcomputing December 1979 (P54), also the intersil data books and
schematics for some of the board level porducts and app notes.
Also several megabytes of PDP-8 software and a DECMATEIII to run it on.

< That wasn't memory mapping. The 1861 DMA'ed the video data out.

No, that was how it transfered the data to the CRT (it would read memory
with DMA and serialize it add sync and all). the User would write data
to the memory map that was display memory to change the pattern on the
screen. That makes it memory mapped. the fact that it used DMA was a
simplification of the hardware.

< I saw one at the Computer Museum of America, but I don't think it is
< available.

There are still a bunch around. They only made maybe 20-30,000 of the
8E/8A series.

< Well... they _were_ nice and bright. Ah, the countless hours I spent
< staring at those ember-bright dots, counting toggle pulses in my head
< to fix a one-byte bug.

First thing I added was four more to latch the address.

< Ob1802Trivia - don't execute the one "missing" instruction, 0x68. ISTR
< that the CPU went berserk and whomped memory randomly.

Well, all of the 6Xh instructions manipulate the X register directly or
indirectly.

 60 inc X R(X)+1->R(X) ! memory pointer pointed to by R(X) is
                              ! incremented

What's significant is the operation is a dummy output but since having
the N lines with 000 on them was a nop all it does is increment the
pointer.

 61->67 out M(R(X)) ->BUS; R(X)+1 -> R(X)

Effectively output a byte pointed to by R(X) to the device and increment
R(X). The N lines will have a value of 1->7 depending on opcode.

 69->6F input BUS -> M(R(X)); BUS -> D

Now... the cosmac uses the high bit of the N register to signal internall
that the instruction is a input so....

 68 inpGarbage BUS -> M(R(X)); BUS -> D

In this case bus content is undefined so you just trashed the accumulator
(D) and the memory pointed to by R(X).

On my system due to the pullups on the bus and all that meant a FFh was
loaded every time. Handy way to stuff a -1.

The COSMAC is a real simple machine and it's behavour is very predictable
with one general exception... The CMOS process in the late 70s had
horrendous propagation delays and the timing of the chip was very variable
with voltage. So at very fast clocks the timing on some signals could
have a negative setup at one voltage and a positive setup if the voltage
was higher. I know of few people that ever ran successfully at the rated
maximum. At moderate speeds it was easy to use.

Allison
Received on Wed Nov 11 1998 - 07:41:20 GMT

This archive was generated by hypermail 2.3.0 : Fri Oct 10 2014 - 23:31:18 BST