Datum Daterm
Following is an attempt to implement the DATUM terminal (serial port) monitor. Monitor resides in $7000-$7FFF memory range with $0000-$0100 ram as scratchpad for various variables. ACIA is located @$4000-4001 and digital to analog converter (DtoA) in memory range from $3F00-3FFF... (which is not in this design). To make all this work on 6802 max board .. we can set:
RAM area from $0000-$3EFF,
ACIA @$4000-47FF,
PIA @ $4800-4FFF
Term Mon ROM $7000-7FFF
Extra RAM $8000- EFFF and
Reset vector roms top of $F000-FFFF
So appropriate pld file would be something like this:
Datum Daterm Monitor pld file
Name 6802 max board, datum term;
Partno 0001;
Revision Ver 1;
Date 24/12/17;
Designer mc;
Company mcoz;
Location oz;
Assembly manual;
Device g22v10;
/** Inputs **/
pin [3..11] = [a7..15] ;
pin [13..17] = [a2..6] ;
pin 18 = vma;
pin 2 = eout;
pin 1 = rnw;
/** Outputs **/
pin 22 = !rd;
pin 23 = !wr;
pin 19 = !piaCS;
pin 21 = !acaCS;
pin 20 = !memCS;
/** Declarations and Intermediate Variable Definitions **/
field ioaddr= [a15..2];
acaCS_eqn = ioaddr:[4000..47FF];
piaCS_eqn = ioaddr:[4800..4FFF];
memCS_eqn = (ioaddr:[0000..3EFF])#((ioaddr:[7000..7FFF])& rnw & vma)#(ioaddr:[8000..EFFF]) # ((ioaddr:[F000..FFFF])& rnw & vma);
/** Logic Equations **/
rd = rnw & vma ;
wr = !rnw & vma;
piaCS = piaCS_eqn ;
acaCS = acaCS_eqn;
memCS = memCS_eqn;
And here is successful screen showing monitor running via comm port @115K baud!
Following is extra information about Daterm and monitor commands ..
For saving and loading code into memory you can use the "W" write and "L" load commands via the terminal send and capture modes. Original monitor puts out extra characters at the start of "W" command UUUUU characters .. which can be delited from the monitor code if needed by NOP commands... Also it is suggested to set delay to about 5ms when receiving characters from PC to the monitor.
See original Datum document re Daterm and Basic - download.