Contents:
The Atom-in-PC is a "simple" processor board with an
R6502 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 R6502 board. But you can also run BBC Basic. The BBC Basic ROM is already modified but I'm still writing a good Machine Operating System ROM for the best BBC Basic compatibility. Be aware: this is not an BBC emulator! Read more about it in the software section.
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 and 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!)
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.
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.
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 on
the design: (click on it for a more detailed picture)
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. If you're having problems with printing the PCB design, please contact me. If I'm in a good mood I'll send you the original files and maybe a program to draw the design. But it's an copyrighted program so I won't publish it here. It seems you can import the smArtwork files in the Layo PCB design program. But I have no experience with Layo, so I can't help you with that.
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!
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 R6502 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.
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.
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
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 the AMD website. Maybe it's still available there. In the download section of the Atom-in-PC Resource Site there is a file named gals.zip with the sources en binary files available.
As I write this page I realize 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.
Last update: december 12, 1999