Atom-in-PC Hardware
images/terug.gif

Roland Leurs wrote this page realizing there is much more to say about the hardware but the most important things are mentioned. Take a look at the Dutch manual (220kB) if you have any questions.

Last update by R.Leurs: december 12, 1999.
Grace to Roland who alowed me to put these pages on my site. Haydn.

Contents:

images/atominpc.jpg

The Atom in PC board (± 34 x 10 cm)

Hardware description

The Atom-in-PC is a "simple" processor board with an 6502 or compatible microprocessor (e.g. R65C02 or 65802). There is 96 kB of RAM and 16 kB of ROM on board. 16 Kb of the RAM memory can be used as shadow ROM for the 16 KB Machine Operating System ROM, not for speed issues but you can write your own Machine Operating System. Furthermore, 40 KB of RAM is mapped in the address space #0000-#9FFF. For the utility ROM address space #A000-#AFFF are eight banks of 4 KB RAM each available. Together with appropriate software, the Atom runs with eigth utility ROMs simultaniously.

Talking about Machine Operating Systems: the original Atom MOSROM is modified for use with this 6502 board.

As in the original Atom, the address space #B000-#BFFF is reserved for I/O purposes. I used the address space #B000-#B97F for on-board I/O such as the 6522 VIA, a latch for controlling NMI (see video emulation), utility RAM select and Video Write Address Latches.

All user I/O (keyboard, display, printer, disk drives, mouse, joystick etc) is handled by the PC. So the Atom has to communicate with that PC. You can read all about the Atom-in-PC Terminal program in the software section. On the hardware side, the Atom-in-PC communicates by the 6522 VIA on the Atom side and an 8255 PPI on the PC ISA bus. This 8255 PPI is the only component which is directly attached to the PC ISA bus. So, if your PC can access this device, your PC is Atom compatible. No interrupts and no DMA channels are used. Only straigt I/O ports on one of these addresses: 0x300, 0x304, 0x308, 0x30C, 0x310, 0x314, 0x318 or 0x31C. No plug-and-play shit, just put a jumper on the board and it works. (BTW: the decoding of these addresses are implemented in a GAL. So if you need another address range, no problem: just modify your addressing algorithm!)

images/terug.gif

6847 Video Emulation

In order to emulate the Motorola 6847 Video Graphic chip I use two latches which catch the address on the address bus when a program writes to the video address space (#8000-#9FFF). The Chip Select signal for the video RAM chip is also used for generating an NMI. You can disable this NMI by writing a "0" bit to a latch. This latch controls write protect, Operating RAM/ROM select, NMI enable and bank select for the utility RAM on #Axxx. Read more about it in the Dutch manual.
So, if a program writes to the video memory, a NMI is generated. The NMI service routine reads the address from two latches (high and low order byte) and sends it to the terminal program which runs on the PC. Because the NMI service routine knows the address, it reads the data written from the video memory and sends it to the terminal program. The address and data are the only input needed to display it on a CGA screen. It's not the fastest way of emulating the Atom graphics but it works for all modes and it's fast enough to play Snapper.


images/terug.gif

Circuit Diagram

These are the schematic diagrams for the Atom-in-PC board. They are build as four seperate sheets. Each sheet is about 200 kB in size.

Printed Circuit Board

This is the most critical part if you start building your own Atom-in-PC board. You have to download the design, make a good hardcopy of it and make a printed circuit board. Let's take a look at the design: (click on it for a more detailed picture)

images/atpc.print.gif
Print layout (there is a 'silk screen' picture in the zip file)

pictures/sold_s.gif
Soldering side

pictures/comp_s.gif
Components side

images/terug.gif

You can download the PCB design in AutoCAD 2.0 DXF format or Epson 132 column PRN format. In the latter, just put a new ribbon in your printer and type copy .prn lpt1 where is one of the files in the zipfile.
The original design was made with smArtwork. It might be possible to import the smArtwork files in the Layo PCB design program.

GAL Logics

On the Atom-in-PC board there are three Gate Array Logic devices:

The PC Address decoder GAL is used for selecting the 8255 PPI on the Atom-in-PC board. In this design it decodes eight address spaces of 4 bytes each in the address range 0x300-0x31F. Of cource, you are free to change the algorithm if you need to use another address. You can start the terminal program with an address parameter, so the software is ready for your change!


images/terug.gif
PC ADRES DECODER-DESIGN GAL16V8A
DATE 08/03/93
BY: R.LEURS
CHIP DECODERP GAL16V8A
NC A2 A3 A4 A5 A6 A7 A8 A9 GND 
AEN CS300 CS304 CS308 CS30C CS310 CS314 CS318 CS31C VCC
EQUATIONS
/CS300 = /AEN*A9*A8*/A7*/A6*/A5*/A4*/A3*/A2
/CS304 = /AEN*A9*A8*/A7*/A6*/A5*/A4*/A3*A2
/CS308 = /AEN*A9*A8*/A7*/A6*/A5*/A4*A3*/A2
/CS30C = /AEN*A9*A8*/A7*/A6*/A5*/A4*A3*A2
/CS310 = /AEN*A9*A8*/A7*/A6*/A5*A4*/A3*/A2
/CS314 = /AEN*A9*A8*/A7*/A6*/A5*A4*/A3*A2
/CS318 = /AEN*A9*A8*/A7*/A6*/A5*A4*A3*/A2
/CS31C = /AEN*A9*A8*/A7*/A6*/A5*A4*A3*A2

The second GAL takes care of most of the address decoding within the 6502 memory space. Nice feature (not a bug!): if you pull down pin 9 to 0 volt all on-board memory and I/O devices are disabled. So you can replace all memory and I/O by external circuits without modification of the Atom-in-PC board.


images/terug.gif
ATOM ADRES DECODER - DESIGN 16V8A
DATE 09/03/93
BY: R.LEURS
CHIP DECODERA_V2 GAL16V8A
A15 A14 A13 A12 RW FI2 WP OSRAM ENABLE GND NC1 CS_IO FI2OUT RWOUT
NWDS CS_PROG CS_UTIL CS_VIDEO CS_ROM VCC
@UES RL09034a
EQUATIONS
 FI2OUT = FI2
/RWOUT = /RW
/NWDS = FI2*/RW
/CS_IO = A15*/A14*A13*A12*ENABLE
/CS_UTIL = A15*/A14*A13*/A12*RW*ENABLE
 + A15*/A14*A13*/A12*/RW*/WP*ENABLE
 CS_PROG = A15+/A15*/A14*/A13*A12*WP*/RW+/ENABLE
/CS_VIDEO = A15*/A14*/A13*ENABLE
 + A15*A14*OSRAM*RW*ENABLE
 + A15*A14*/WP*/RW*ENABLE
/CS_ROM = A15*A14*/OSRAM*RW*ENABLE

The last GAL device takes care of selecting an internal I/O device and generating a NMI signal to the processor if there is a video memory write-cycle going on.



images/terug.gif
ATOM VIDEOKAART-DESIGN GAL16V8A
DATE 14/1/1995
BY: R.LEURS
CHIP VIDEO GAL16V8A
CS NMI_EN RW O2 A0 A1 A13 A14 A15 GND
IOSEL VIASEL LATSEL DIR NC NRDS LATCH CS_ADL CS_ADH VCC
; IOSEL = SELECTIE I/O GEBIED (DECODER GAL PIN 12)
; VIASEL = SELECTIE VIA (74HCT138 PIN 15)
; LATSEL = SELECTIE LATCH (74HCT138 PIN 14)
; CS = SELECTIE VIDEOGAL (74HCT138 PIN 13)
; DIR = RICHTING DATATRANSPORT (74HCT245 PIN 1)
EQUATIONS
/LATCH = A15 * /A14 * /A13 * /RW * O2 * NMI_EN * IOSEL *
 VIASEL * LATSEL
/CS_ADL = RW * /A1 * /A0 * /CS
/CS_ADH = RW * /A1 * A0 * /CS
/NRDS = RW * O2
 DIR = /RW
images/terug.gif

If you have your own GAL assembler software you can modify these designs as you like. There is no need to modify the Atom address decoder GAL and the Video & I/O controller GAL. A long time ago, I downloaded PALASM from "http://www.amd.com/support/software.html" AMD website = Maybe it's still available there. Otherwise, if you have no software to assemble the GALs, or the hardware to program the GALs, please send me an e-mail. In the download section of the On this site is a file named gals.zip with the sources en binary files available.

Roland Leurs wrote this page realizing there is much more to say about the hardware but the most important things are mentioned. Take a look at the Dutch manual if you have any questions. If reading Dutch is a problem for you then send me an e-mail

Last update by R.Leurs: december 12, 1999. Grace to Roland who alowed me to put these pages on my site. Haydn.
images/home.gif