Narc main
authorteamarchive2.fnf.archive.org root <root@teamarchive2.fnf.archive.org>
Tue, 6 Apr 2021 21:36:38 +0000 (21:36 +0000)
committerteamarchive2.fnf.archive.org root <root@teamarchive2.fnf.archive.org>
Tue, 6 Apr 2021 21:36:38 +0000 (21:36 +0000)
458 files changed:
DIAG/ALLDIAG.BAT [new file with mode: 0644]
DIAG/CHECK512.CMD [new file with mode: 0644]
DIAG/CHECK512.MAP [new file with mode: 0644]
DIAG/CHECK512.OUT [new file with mode: 0644]
DIAG/CMOSPAGE.ASM [new file with mode: 0644]
DIAG/CONTROLS.ASM [new file with mode: 0644]
DIAG/CPUBOARD.ASM [new file with mode: 0644]
DIAG/CTLCHECK.ASM [new file with mode: 0644]
DIAG/DMACHECK.ASM [new file with mode: 0644]
DIAG/DMAGSP.INC [new file with mode: 0644]
DIAG/DMAMACRO.HDR [new file with mode: 0644]
DIAG/DMASYS.INC [new file with mode: 0644]
DIAG/LAYOUT.MAC [new file with mode: 0644]
DIAG/MEMORY.MAC [new file with mode: 0644]
DIAG/MISCDATA.ASM [new file with mode: 0644]
DIAG/OGSP.INC [new file with mode: 0644]
DIAG/OSYS.INC [new file with mode: 0644]
DIAG/PATCH.TXT [new file with mode: 0644]
DIAG/RAMCHECK.ASM [new file with mode: 0644]
DIAG/RAMCHIPS.ASM [new file with mode: 0644]
DIAG/RAMCHIPS.MAC [new file with mode: 0644]
DIAG/REDIAG.BAT [new file with mode: 0644]
DIAG/ROMBOARD.ASM [new file with mode: 0644]
DIAG/ROMCHECK.ASM [new file with mode: 0644]
DIAG/ROMCHIPS.ASM [new file with mode: 0644]
DIAG/ROMCHIPS.MAC [new file with mode: 0644]
DIAG/SETUP.DAT [new file with mode: 0644]
DIAG/SYSALINK.CMD [new file with mode: 0644]
DIAG/SYSCHECK.ASM [new file with mode: 0644]
DIAG/SYSCHECK.CMD [new file with mode: 0644]
DIAG/SYSCHECK.GBL [new file with mode: 0644]
DIAG/SYSCHECK.MAK [new file with mode: 0644]
DIAG/SYSCHECK.MAP [new file with mode: 0644]
DIAG/SYSCHECK.OUT [new file with mode: 0644]
DIAG/SYSCHECK.REL [new file with mode: 0644]
DIAG/SYSCHECK.SET [new file with mode: 0644]
DIAG/SYSFONT.ASM [new file with mode: 0644]
DIAG/SYSRLINK.CMD [new file with mode: 0644]
DIAG/TVMCHECK.ASM [new file with mode: 0644]
DIAG/TVMONITR.ASM [new file with mode: 0644]
DIAG/UTILITIE.ASM [new file with mode: 0644]
DIAG/UTILITIE.MAC [new file with mode: 0644]
IMG/BACKNEW.IMG [new file with mode: 0644]
IMG/BONERS.IMG [new file with mode: 0644]
IMG/BONUS.BDB [new file with mode: 0644]
IMG/BONUS.BDD [new file with mode: 0644]
IMG/BRIDGE.IMG [new file with mode: 0644]
IMG/BUST.IMG [new file with mode: 0644]
IMG/CADILLAC.IMG [new file with mode: 0644]
IMG/CARS.IMG [new file with mode: 0644]
IMG/CHEMLAB.BDB [new file with mode: 0644]
IMG/CHEMLAB.BDD [new file with mode: 0644]
IMG/CHOPPER.IMG [new file with mode: 0644]
IMG/CINDY.IMG [new file with mode: 0644]
IMG/CONTROLS.IMG [new file with mode: 0644]
IMG/DECEMBER.IMG [new file with mode: 0644]
IMG/HALLWAY.BDB [new file with mode: 0644]
IMG/HALLWAY.BDD [new file with mode: 0644]
IMG/HBOMB.IMG [new file with mode: 0644]
IMG/IMGCKSUM.DOC [new file with mode: 0755]
IMG/IMGNOW.IMG [new file with mode: 0644]
IMG/INTRLACE/INARC1.LOD [new file with mode: 0644]
IMG/INTRLACE/NARC1.IMG [new file with mode: 0644]
IMG/INTRLACE/NARC2.IMG [new file with mode: 0644]
IMG/INTRLACE/NARC3.IMG [new file with mode: 0644]
IMG/INTRLACE/NARC4.IMG [new file with mode: 0644]
IMG/INTRLACE/NARCBON.IMG [new file with mode: 0644]
IMG/INTRLACE/NARCBRID.BDB [new file with mode: 0644]
IMG/INTRLACE/NARCBRID.BDD [new file with mode: 0644]
IMG/INTRLACE/NARCCHEM.BDB [new file with mode: 0644]
IMG/INTRLACE/NARCCHEM.BDD [new file with mode: 0644]
IMG/INTRLACE/NARCCHOP.IMG [new file with mode: 0644]
IMG/INTRLACE/NARCDEMO.BDB [new file with mode: 0644]
IMG/INTRLACE/NARCDEMO.BDD [new file with mode: 0644]
IMG/INTRLACE/NARCGHS.BDB [new file with mode: 0644]
IMG/INTRLACE/NARCGHS.BDD [new file with mode: 0644]
IMG/INTRLACE/NARCGHSI.BDB [new file with mode: 0644]
IMG/INTRLACE/NARCGHSI.BDD [new file with mode: 0644]
IMG/INTRLACE/NARCHDRM.BDB [new file with mode: 0644]
IMG/INTRLACE/NARCHDRM.BDD [new file with mode: 0644]
IMG/INTRLACE/NARCKAST.BDB [new file with mode: 0644]
IMG/INTRLACE/NARCKAST.BDD [new file with mode: 0644]
IMG/INTRLACE/NARCKRAK.IMG [new file with mode: 0644]
IMG/INTRLACE/NARCMSU.BDB [new file with mode: 0644]
IMG/INTRLACE/NARCMSU.BDD [new file with mode: 0644]
IMG/INTRLACE/NARCNBON.BDB [new file with mode: 0644]
IMG/INTRLACE/NARCNBON.BDD [new file with mode: 0644]
IMG/INTRLACE/NARCRISE.BDB [new file with mode: 0644]
IMG/INTRLACE/NARCRISE.BDD [new file with mode: 0644]
IMG/INTRLACE/NARCROOM.BDB [new file with mode: 0644]
IMG/INTRLACE/NARCROOM.BDD [new file with mode: 0644]
IMG/INTRLACE/NARCSKY.BDB [new file with mode: 0644]
IMG/INTRLACE/NARCSKY.BDD [new file with mode: 0644]
IMG/INTRLACE/NARCSKY1.BDB [new file with mode: 0644]
IMG/INTRLACE/NARCSKY1.BDD [new file with mode: 0644]
IMG/INTRLACE/NARCSTAT.BDB [new file with mode: 0644]
IMG/INTRLACE/NARCSTAT.BDD [new file with mode: 0644]
IMG/INTRLACE/NARCSUB.IMG [new file with mode: 0644]
IMG/INTRLACE/NARCTITL.BDB [new file with mode: 0644]
IMG/INTRLACE/NARCTITL.BDD [new file with mode: 0644]
IMG/INTRLACE/NARCTSCR.BDB [new file with mode: 0644]
IMG/INTRLACE/NARCTSCR.BDD [new file with mode: 0644]
IMG/INTRLACE/NARCWARE.BDB [new file with mode: 0644]
IMG/INTRLACE/NARCWARE.BDD [new file with mode: 0644]
IMG/IROM/NARC120.00 [new file with mode: 0644]
IMG/IROM/NARC120.01 [new file with mode: 0644]
IMG/IROM/NARC120.02 [new file with mode: 0644]
IMG/IROM/NARC120.03 [new file with mode: 0644]
IMG/IROM/NARC122.00 [new file with mode: 0644]
IMG/IROM/NARC122.01 [new file with mode: 0644]
IMG/IROM/NARC122.02 [new file with mode: 0644]
IMG/IROM/NARC122.03 [new file with mode: 0644]
IMG/IROM/NARC124.00 [new file with mode: 0644]
IMG/IROM/NARC124.01 [new file with mode: 0644]
IMG/IROM/NARC124.02 [new file with mode: 0644]
IMG/IROM/NARC124.03 [new file with mode: 0644]
IMG/IROM/NARC126.00 [new file with mode: 0644]
IMG/IROM/NARC126.01 [new file with mode: 0644]
IMG/IROM/NARC126.02 [new file with mode: 0644]
IMG/IROM/NARC126.03 [new file with mode: 0644]
IMG/IROM/NARC128.00 [new file with mode: 0644]
IMG/IROM/NARC128.01 [new file with mode: 0644]
IMG/IROM/NARC128.02 [new file with mode: 0644]
IMG/IROM/NARC128.03 [new file with mode: 0644]
IMG/IROM/NARC12A.00 [new file with mode: 0644]
IMG/IROM/NARC12A.01 [new file with mode: 0644]
IMG/IROM/NARC12A.02 [new file with mode: 0644]
IMG/IROM/NARC12A.03 [new file with mode: 0644]
IMG/IROM/NARC12C.00 [new file with mode: 0644]
IMG/IROM/NARC12C.01 [new file with mode: 0644]
IMG/IROM/NARC12C.02 [new file with mode: 0644]
IMG/IROM/NARC12C.03 [new file with mode: 0644]
IMG/IROM/NARC12E.00 [new file with mode: 0644]
IMG/IROM/NARC12E.01 [new file with mode: 0644]
IMG/IROM/NARC12E.02 [new file with mode: 0644]
IMG/IROM/NARC12E.03 [new file with mode: 0644]
IMG/IROM/NARC130.00 [new file with mode: 0644]
IMG/IROM/NARC130.01 [new file with mode: 0644]
IMG/IROM/NARC130.02 [new file with mode: 0644]
IMG/IROM/NARC130.03 [new file with mode: 0644]
IMG/IROM/NARC132.00 [new file with mode: 0644]
IMG/IROM/NARC132.01 [new file with mode: 0644]
IMG/IROM/NARC132.02 [new file with mode: 0644]
IMG/IROM/NARC132.03 [new file with mode: 0644]
IMG/IROM/NARC134.00 [new file with mode: 0644]
IMG/IROM/NARC134.01 [new file with mode: 0644]
IMG/IROM/NARC134.02 [new file with mode: 0644]
IMG/IROM/NARC134.03 [new file with mode: 0644]
IMG/IROM/NARC136.00 [new file with mode: 0644]
IMG/IROM/NARC136.01 [new file with mode: 0644]
IMG/IROM/NARC136.02 [new file with mode: 0644]
IMG/IROM/NARC136.03 [new file with mode: 0644]
IMG/IROM/NARC138.00 [new file with mode: 0644]
IMG/IROM/NARC138.01 [new file with mode: 0644]
IMG/IROM/NARC138.02 [new file with mode: 0644]
IMG/IROM/NARC138.03 [new file with mode: 0644]
IMG/IROM/NARC13A.00 [new file with mode: 0644]
IMG/IROM/NARC13A.01 [new file with mode: 0644]
IMG/IROM/NARC13A.02 [new file with mode: 0644]
IMG/IROM/NARC13A.03 [new file with mode: 0644]
IMG/IROM/NARC13C.00 [new file with mode: 0644]
IMG/IROM/NARC13C.01 [new file with mode: 0644]
IMG/IROM/NARC13C.02 [new file with mode: 0644]
IMG/IROM/NARC13C.03 [new file with mode: 0644]
IMG/JRPILOT.IMG [new file with mode: 0644]
IMG/KRAK.IMG [new file with mode: 0644]
IMG/LAB2.IMG [new file with mode: 0644]
IMG/LOAFDRV.IMG [new file with mode: 0644]
IMG/LOAFER.IMG [new file with mode: 0644]
IMG/MCITYPA.BDB [new file with mode: 0644]
IMG/MCITYPA.BDD [new file with mode: 0644]
IMG/NARC1.IMG [new file with mode: 0644]
IMG/NARC1.LOD [new file with mode: 0755]
IMG/NARC12_0.LOD [new file with mode: 0755]
IMG/NARC2.IMG [new file with mode: 0644]
IMG/NARC3.IMG [new file with mode: 0644]
IMG/NARC4.IMG [new file with mode: 0644]
IMG/NARCATT.IMG [new file with mode: 0644]
IMG/NARCBLIP.IMG [new file with mode: 0644]
IMG/NARCBLUE.IMG [new file with mode: 0644]
IMG/NARCBOMB.IMG [new file with mode: 0644]
IMG/NARCBON.IMG [new file with mode: 0644]
IMG/NARCBRID.BDB [new file with mode: 0644]
IMG/NARCBRID.BDD [new file with mode: 0644]
IMG/NARCBUG.IMG [new file with mode: 0644]
IMG/NARCCAD.IMG [new file with mode: 0644]
IMG/NARCCHEM.BDB [new file with mode: 0644]
IMG/NARCCHEM.BDD [new file with mode: 0644]
IMG/NARCCHOP.IMG [new file with mode: 0644]
IMG/NARCDEMO.BDB [new file with mode: 0644]
IMG/NARCDEMO.BDD [new file with mode: 0644]
IMG/NARCDOG.IMG [new file with mode: 0644]
IMG/NARCDUMP.IMG [new file with mode: 0644]
IMG/NARCF15.IMG [new file with mode: 0644]
IMG/NARCF7.IMG [new file with mode: 0644]
IMG/NARCFBI.IMG [new file with mode: 0644]
IMG/NARCFONT.IMG [new file with mode: 0644]
IMG/NARCGANG.IMG [new file with mode: 0644]
IMG/NARCGHS.BDB [new file with mode: 0644]
IMG/NARCGHS.BDD [new file with mode: 0644]
IMG/NARCGHSI.BDB [new file with mode: 0644]
IMG/NARCGHSI.BDD [new file with mode: 0644]
IMG/NARCHAND.IMG [new file with mode: 0644]
IMG/NARCHDRM.BDB [new file with mode: 0644]
IMG/NARCHDRM.BDD [new file with mode: 0644]
IMG/NARCHEAD.IMG [new file with mode: 0644]
IMG/NARCHOOK.IMG [new file with mode: 0644]
IMG/NARCHYPO.IMG [new file with mode: 0644]
IMG/NARCKAST.BDB [new file with mode: 0644]
IMG/NARCKAST.BDD [new file with mode: 0644]
IMG/NARCKRAK.IMG [new file with mode: 0644]
IMG/NARCLAB.IMG [new file with mode: 0644]
IMG/NARCLOAF.IMG [new file with mode: 0644]
IMG/NARCLOWN.IMG [new file with mode: 0644]
IMG/NARCM512.LOD [new file with mode: 0755]
IMG/NARCMBIG.IMG [new file with mode: 0644]
IMG/NARCMSU.BDB [new file with mode: 0644]
IMG/NARCMSU.BDD [new file with mode: 0644]
IMG/NARCMSU.IMG [new file with mode: 0644]
IMG/NARCMUGS.IMG [new file with mode: 0644]
IMG/NARCMUGS.LOD [new file with mode: 0755]
IMG/NARCNBON.BDB [new file with mode: 0644]
IMG/NARCNBON.BDD [new file with mode: 0644]
IMG/NARCOBJS.IMG [new file with mode: 0644]
IMG/NARCPIMP.IMG [new file with mode: 0644]
IMG/NARCPMP2.IMG [new file with mode: 0644]
IMG/NARCPORS.IMG [new file with mode: 0644]
IMG/NARCRAMB.IMG [new file with mode: 0644]
IMG/NARCRISE.BDB [new file with mode: 0644]
IMG/NARCRISE.BDD [new file with mode: 0644]
IMG/NARCROOM.BDB [new file with mode: 0644]
IMG/NARCROOM.BDD [new file with mode: 0644]
IMG/NARCSKY.BDB [new file with mode: 0644]
IMG/NARCSKY.BDD [new file with mode: 0644]
IMG/NARCSKY1.BDB [new file with mode: 0644]
IMG/NARCSKY1.BDD [new file with mode: 0644]
IMG/NARCSTAT.BDB [new file with mode: 0644]
IMG/NARCSTAT.BDD [new file with mode: 0644]
IMG/NARCSUB.IMG [new file with mode: 0644]
IMG/NARCTITL.BDB [new file with mode: 0644]
IMG/NARCTITL.BDD [new file with mode: 0644]
IMG/NARCTSCR.BDB [new file with mode: 0644]
IMG/NARCTSCR.BDD [new file with mode: 0644]
IMG/NARCWARE.BDB [new file with mode: 0644]
IMG/NARCWARE.BDD [new file with mode: 0644]
IMG/NBC2.IMG [new file with mode: 0644]
IMG/NBC7.IMG [new file with mode: 0644]
IMG/NBC8.IMG [new file with mode: 0644]
IMG/NEWLAB2.IMG [new file with mode: 0644]
IMG/POOF.IMG [new file with mode: 0644]
IMG/POW.IMG [new file with mode: 0644]
IMG/SCANPAL.IMG [new file with mode: 0644]
IMG/SCORAREA.IMG [new file with mode: 0644]
IMG/SKYLINE.IMG [new file with mode: 0644]
IMG/SKYTST.BDB [new file with mode: 0644]
IMG/SKYTST.BDD [new file with mode: 0644]
IMG/STAMOD.BDB [new file with mode: 0644]
IMG/STAMOD.BDD [new file with mode: 0644]
IMG/STATION.BDB [new file with mode: 0644]
IMG/STATION.BDD [new file with mode: 0644]
IMG/SUBWAY.IMG [new file with mode: 0644]
IMG/TAKEOFF.IMG [new file with mode: 0644]
IMG/TILES.IMG [new file with mode: 0644]
IMG/WAREHS.BDB [new file with mode: 0644]
IMG/WAREHS.BDD [new file with mode: 0644]
NARC/ALLNARC.BAT [new file with mode: 0644]
NARC/BACKALL.BAT [new file with mode: 0644]
NARC/BACKINC.BAT [new file with mode: 0644]
NARC/BGNDMODS.DOC [new file with mode: 0644]
NARC/BGNDPAL.ASM [new file with mode: 0644]
NARC/BGNDTBL.ASM [new file with mode: 0644]
NARC/BGNDTBL.GLO [new file with mode: 0644]
NARC/BURN1MEG.BAT [new file with mode: 0644]
NARC/CALLR.ERR [new file with mode: 0644]
NARC/CKCALLR.BAT [new file with mode: 0644]
NARC/DIFFVARS.ASM [new file with mode: 0644]
NARC/DUMP.DOC [new file with mode: 0644]
NARC/EGROUTIN.DOC [new file with mode: 0644]
NARC/FLOPPYPP.BAT [new file with mode: 0644]
NARC/FOO.BAT [new file with mode: 0644]
NARC/FOO1.BAT [new file with mode: 0644]
NARC/GMAKE [new file with mode: 0644]
NARC/IMGSRC.ASM [new file with mode: 0644]
NARC/IMGTBL.ASM [new file with mode: 0644]
NARC/IMGTBL.GLO [new file with mode: 0644]
NARC/JRUC.ERR [new file with mode: 0644]
NARC/LED1.BAT [new file with mode: 0644]
NARC/LED2.BAT [new file with mode: 0644]
NARC/MAKEFILE [new file with mode: 0644]
NARC/MAKER512.BAT [new file with mode: 0644]
NARC/MAKEROMS.BAT [new file with mode: 0644]
NARC/NARC.ASM [new file with mode: 0644]
NARC/NARC.CKS [new file with mode: 0644]
NARC/NARC.CMD [new file with mode: 0644]
NARC/NARC.DOC [new file with mode: 0644]
NARC/NARC.LRN [new file with mode: 0644]
NARC/NARC.MAP [new file with mode: 0644]
NARC/NARC.OUT [new file with mode: 0644]
NARC/NARC.SYM [new file with mode: 0644]
NARC/NARC.TVS [new file with mode: 0644]
NARC/NARC1.ASM [new file with mode: 0644]
NARC/NARC1A.ASM [new file with mode: 0644]
NARC/NARC1M.CKS [new file with mode: 0644]
NARC/NARC512.CMD [new file with mode: 0644]
NARC/NARC512.LRN [new file with mode: 0644]
NARC/NARC512.MAP [new file with mode: 0644]
NARC/NARC512.OUT [new file with mode: 0644]
NARC/NARC6.ASM [new file with mode: 0644]
NARC/NARCADJ.ASM [new file with mode: 0644]
NARC/NARCANIM.ASM [new file with mode: 0644]
NARC/NARCATT.ASM [new file with mode: 0644]
NARC/NARCATT.SYM [new file with mode: 0644]
NARC/NARCAUD.ASM [new file with mode: 0644]
NARC/NARCAUDN.ASM [new file with mode: 0644]
NARC/NARCBGND.ASM [new file with mode: 0644]
NARC/NARCBLIP.ASM [new file with mode: 0644]
NARC/NARCBON.TBL [new file with mode: 0644]
NARC/NARCBUG.ASM [new file with mode: 0644]
NARC/NARCBUG.TBL [new file with mode: 0644]
NARC/NARCBULL.ASM [new file with mode: 0644]
NARC/NARCCAD.ASM [new file with mode: 0644]
NARC/NARCCAD.TBL [new file with mode: 0644]
NARC/NARCCANS.ASM [new file with mode: 0644]
NARC/NARCCARS.ASM [new file with mode: 0644]
NARC/NARCCART.DOC [new file with mode: 0644]
NARC/NARCCHOP.ASM [new file with mode: 0644]
NARC/NARCCHOP.TBL [new file with mode: 0644]
NARC/NARCDATA.ASM [new file with mode: 0644]
NARC/NARCDATB.ASM [new file with mode: 0644]
NARC/NARCDOG.ASM [new file with mode: 0644]
NARC/NARCDOG.TBL [new file with mode: 0644]
NARC/NARCDOOR.ASM [new file with mode: 0644]
NARC/NARCDRIV.GLO [new file with mode: 0644]
NARC/NARCDUMP.ASM [new file with mode: 0644]
NARC/NARCDUMP.TBL [new file with mode: 0644]
NARC/NARCDYNA.ASM [new file with mode: 0644]
NARC/NARCE.CMD [new file with mode: 0644]
NARC/NARCE.MAP [new file with mode: 0644]
NARC/NARCENT.ASM [new file with mode: 0644]
NARC/NARCENT.TBL [new file with mode: 0644]
NARC/NARCEQU.ASM [new file with mode: 0644]
NARC/NARCFC.0 [new file with mode: 0644]
NARC/NARCFC.1 [new file with mode: 0644]
NARC/NARCFFE.BAT [new file with mode: 0644]
NARC/NARCFFE.LRN [new file with mode: 0644]
NARC/NARCFLAM.ASM [new file with mode: 0644]
NARC/NARCFRAG.GLO [new file with mode: 0644]
NARC/NARCG.CMD [new file with mode: 0644]
NARC/NARCGANG.ASM [new file with mode: 0644]
NARC/NARCGANG.TBL [new file with mode: 0644]
NARC/NARCHEAD.ASM [new file with mode: 0644]
NARC/NARCHEAD.TBL [new file with mode: 0644]
NARC/NARCHEDA.ASM [new file with mode: 0644]
NARC/NARCHELP.ASM [new file with mode: 0644]
NARC/NARCHELP.ERR [new file with mode: 0644]
NARC/NARCHELP.SYM [new file with mode: 0644]
NARC/NARCHOOK.ASM [new file with mode: 0644]
NARC/NARCHOOK.TBL [new file with mode: 0644]
NARC/NARCHSTD.ASM [new file with mode: 0644]
NARC/NARCHYPO.ASM [new file with mode: 0644]
NARC/NARCHYPO.GLO [new file with mode: 0644]
NARC/NARCHYPO.TBL [new file with mode: 0644]
NARC/NARCL.CMD [new file with mode: 0644]
NARC/NARCL.MAP [new file with mode: 0644]
NARC/NARCLAB.TBL [new file with mode: 0644]
NARC/NARCLEQU.ASM [new file with mode: 0644]
NARC/NARCLOAF.TBL [new file with mode: 0644]
NARC/NARCLOG.DOC [new file with mode: 0644]
NARC/NARCLOOT.ASM [new file with mode: 0644]
NARC/NARCLOWN.ASM [new file with mode: 0644]
NARC/NARCLOWN.TBL [new file with mode: 0644]
NARC/NARCMATH.ASM [new file with mode: 0644]
NARC/NARCMBIG.ASM [new file with mode: 0644]
NARC/NARCMBIG.SYM [new file with mode: 0644]
NARC/NARCMBIG.TBL [new file with mode: 0644]
NARC/NARCMENU.ASM [new file with mode: 0644]
NARC/NARCMEQU.ASM [new file with mode: 0644]
NARC/NARCMINE.ASM [new file with mode: 0644]
NARC/NARCMISC.ASM [new file with mode: 0644]
NARC/NARCMUGS.ASM [new file with mode: 0644]
NARC/NARCMUGS.TBL [new file with mode: 0644]
NARC/NARCNDLE.ASM [new file with mode: 0644]
NARC/NARCNET.BAT [new file with mode: 0644]
NARC/NARCOL.ASM [new file with mode: 0644]
NARC/NARCPAL.ASM [new file with mode: 0644]
NARC/NARCPALL.ASM [new file with mode: 0644]
NARC/NARCPEQU.ASM [new file with mode: 0644]
NARC/NARCPIMP.ASM [new file with mode: 0644]
NARC/NARCPIMP.TBL [new file with mode: 0644]
NARC/NARCPLAY.ASM [new file with mode: 0644]
NARC/NARCPLAY.TBL [new file with mode: 0644]
NARC/NARCPORS.ASM [new file with mode: 0644]
NARC/NARCPORS.OLD [new file with mode: 0644]
NARC/NARCPORS.TBL [new file with mode: 0644]
NARC/NARCR512.BAT [new file with mode: 0644]
NARC/NARCRAM.ASM [new file with mode: 0644]
NARC/NARCRAMB.ASM [new file with mode: 0644]
NARC/NARCRAMB.TBL [new file with mode: 0644]
NARC/NARCREVS.DOC [new file with mode: 0644]
NARC/NARCRFFE.BAT [new file with mode: 0644]
NARC/NARCRFFE.LRN [new file with mode: 0644]
NARC/NARCRIME.ASM [new file with mode: 0644]
NARC/NARCROMS.BAT [new file with mode: 0644]
NARC/NARCROMS.LRN [new file with mode: 0644]
NARC/NARCSCOR.ASM [new file with mode: 0644]
NARC/NARCSCRP.ASM [new file with mode: 0644]
NARC/NARCSND.ASM [new file with mode: 0644]
NARC/NARCSPR1.ASM [new file with mode: 0644]
NARC/NARCSPRY.ASM [new file with mode: 0644]
NARC/NARCSQT.ASM [new file with mode: 0644]
NARC/NARCSTUF.DOC [new file with mode: 0644]
NARC/NARCT.CMD [new file with mode: 0644]
NARC/NARCT.MAP [new file with mode: 0644]
NARC/NARCTEQU.ASM [new file with mode: 0644]
NARC/NARCTEST.ASM [new file with mode: 0644]
NARC/NARCTEXT.ASM [new file with mode: 0644]
NARC/NARCTEXT.TBL [new file with mode: 0644]
NARC/NARCUTIL.ASM [new file with mode: 0644]
NARC/NARCXTRA.GLO [new file with mode: 0644]
NARC/PATCH.TXT [new file with mode: 0644]
NARC/PRINTLST.BAT [new file with mode: 0644]
NARC/RENARC.BAT [new file with mode: 0644]
NARC/SETUP.DAT [new file with mode: 0644]
NARC/TOLARRY.BAT [new file with mode: 0644]
SOUND/NARC.MEL [new file with mode: 0644]
SOUND/NDIG0.PP [new file with mode: 0644]
SOUND/NDIG2.PP [new file with mode: 0644]
SOUND/NDIG4.PP [new file with mode: 0644]
SOUND/NDIG6.PP [new file with mode: 0644]
SOUND/NYAM4.PP [new file with mode: 0644]
SOUND/NYAM6.PP [new file with mode: 0644]
SOUND/SETUP.DAT [new file with mode: 0644]
SOUND/SOUND.DIG [new file with mode: 0644]
SOUND/SOUND.YAM [new file with mode: 0644]
SOUND/WAVMUSIC.DOC [new file with mode: 0644]
SYS/DISPEQU.ASM [new file with mode: 0644]
SYS/GSP.INC [new file with mode: 0644]
SYS/GSPSND.ASM [new file with mode: 0644]
SYS/MACROS.HDR [new file with mode: 0644]
SYS/MAKEFILE [new file with mode: 0644]
SYS/MPROC.ASM [new file with mode: 0644]
SYS/MPROC.SYM [new file with mode: 0644]
SYS/MPROCEQU.ASM [new file with mode: 0644]
SYS/NDSP1.ASM [new file with mode: 0644]
SYS/SYS.INC [new file with mode: 0644]
V6_00/NARC51F9.0 [new file with mode: 0644]
V6_00/NARC51F9.1 [new file with mode: 0644]
V6_00/NARC51FA.0 [new file with mode: 0644]
V6_00/NARC51FA.1 [new file with mode: 0644]
V6_00/NARC51FD.0 [new file with mode: 0644]
V6_00/NARC51FD.1 [new file with mode: 0644]
V6_00/NARC51FE.0 [new file with mode: 0644]
V6_00/NARC51FE.1 [new file with mode: 0644]
V7_00/NARCFC.0 [new file with mode: 0644]
V7_00/NARCFC.1 [new file with mode: 0644]
V7_00/NARCFE.0 [new file with mode: 0644]
V7_00/NARCFE.1 [new file with mode: 0644]
V7_00/SETUP.DAT [new file with mode: 0644]

diff --git a/DIAG/ALLDIAG.BAT b/DIAG/ALLDIAG.BAT
new file mode 100644 (file)
index 0000000..24d22c2
--- /dev/null
@@ -0,0 +1,8 @@
+SYSTEM "GASML200 ROMCHIPS RAMCHIPS ROMBOARD CPUBOARD TVMONITR CONTROLS"\r
+SYSTEM "GASML200 MISCDATA SYSFONT"\r
+SYSTEM "GASML200 SYSCHECK ROMCHECK RAMCHECK TVMCHECK CTLCHECK DMACHECK"\r
+SYSTEM "GASML200 UTILITIE"\r
+SYSTEM "GLNK SYSCHECK"\r
+\r
+\r
+\1a
\ No newline at end of file
diff --git a/DIAG/CHECK512.CMD b/DIAG/CHECK512.CMD
new file mode 100644 (file)
index 0000000..bc78d81
--- /dev/null
@@ -0,0 +1,99 @@
+/* LINKER OPTIONS */\r
+\r
+-e POWERUP\r
+-f 0xFFFF                      /* fill unspecified memory with value   */\r
+-o CHECK512.out                        /* specify output file                  */\r
+-m CHECK512.map                        /* map file                             */\r
+-s\r
+\r
+/* INPUT FILES: DATA */\r
+\r
+ROMBOARD.OBJ\r
+CPUBOARD.OBJ\r
+ROMCHIPS.OBJ\r
+RAMCHIPS.OBJ\r
+TVMONITR.OBJ\r
+CONTROLS.OBJ\r
+/*EDITTABL.OBJ*/\r
+/*CMOSTABL.OBJ*/\r
+MISCDATA.OBJ\r
+SYSFONT.OBJ\r
+\r
+/* INPUT FILES: CODE */\r
+\r
+SYSCHECK.OBJ\r
+ROMCHECK.OBJ\r
+RAMCHECK.OBJ\r
+/*DMACHECK.OBJ*/\r
+TVMCHECK.OBJ\r
+CTLCHECK.OBJ\r
+/*CMOSEDIT.OBJ*/\r
+UTILITIE.OBJ\r
+/*CMOS.OBJ*/\r
+\r
+/* CONFIGURE MEMORY */\r
+\r
+MEMORY\r
+\r
+{\r
+\r
+  CRAM00 (RW): org = 0x01800000, len = 0x001000 /* COLOR PALETTE 00   */\r
+  CRAM01 (RW): org = 0x01801000, len = 0x001000 /* COLOR PALETTE 01   */\r
+  CRAM02 (RW): org = 0x01802000, len = 0x001000 /* COLOR PALETTE 02   */\r
+  CRAM03 (RW): org = 0x01803000, len = 0x001000 /* COLOR PALETTE 03   */\r
+  CRAM04 (RW): org = 0x01804000, len = 0x001000 /* COLOR PALETTE 04   */\r
+  CRAM05 (RW): org = 0x01805000, len = 0x001000 /* COLOR PALETTE 05   */\r
+  CRAM06 (RW): org = 0x01806000, len = 0x001000 /* COLOR PALETTE 06   */\r
+  CRAM07 (RW): org = 0x01807000, len = 0x001000 /* COLOR PALETTE 07   */\r
+  CRAM08 (RW): org = 0x01808000, len = 0x001000 /* COLOR PALETTE 08   */\r
+  CRAM09 (RW): org = 0x01809000, len = 0x001000 /* COLOR PALETTE 09   */\r
+  CRAM10 (RW): org = 0x0180A000, len = 0x001000 /* COLOR PALETTE 10   */\r
+  CRAM11 (RW): org = 0x0180B000, len = 0x001000 /* COLOR PALETTE 11   */\r
+  CRAM12 (RW): org = 0x0180C000, len = 0x001000 /* COLOR PALETTE 12   */\r
+  CRAM13 (RW): org = 0x0180D000, len = 0x001000 /* COLOR PALETTE 13   */\r
+  CRAM14 (RW): org = 0x0180E000, len = 0x001000 /* COLOR PALETTE 14   */\r
+  CRAM15 (RW): org = 0x0180F000, len = 0x001000 /* COLOR PALETTE 15   */\r
+\r
+  VRAM   (RW): org = 0x00000000, len = 0x200000 /* VIDEO RAM   */ \r
+  SRAM   (RW): org = 0x010D0000, len = 0x20000 /* SCRATCH RAM */\r
+\r
+  VROM   (RX): org = 0xFFEFFC00, len = 0x000400 /* SYSTEM VECTORS */\r
+  PROM   (RX): org = 0xFFE77000, len = 0x1C000  /* PROGRAM ROM */\r
+  IROM    (R): org = 0x02000000, len = 0x800000 /* IMAGE ROM   */\r
+\r
+}\r
+\r
+/* BUILD OUTPUT SECTIONS */\r
+\r
+SECTIONS\r
+\r
+{\r
+\r
+/* SCRATCH AREAS IN SCRATCHPAD */\r
+\r
+       GROUP: {\r
+       \r
+                .bss: {}\r
+               .BSS: {}\r
+\r
+               } > SRAM\r
+\r
+/* DIAGNOSTICS CODE */\r
+\r
+       GROUP: {\r
+               .text: {}\r
+               .TEXT: {}\r
+               LABELS: {}\r
+               RECTS: {}\r
+               VECTS: {}\r
+               POINTS: {}\r
+               CIRCLES: {}\r
+               CHIPS: {}\r
+               CMOSF: {}\r
+               EDITS: {}\r
+               MISC: {}\r
+               FONT: {}\r
+               } > PROM\r
+\r
+}\r
+\1a
\ No newline at end of file
diff --git a/DIAG/CHECK512.MAP b/DIAG/CHECK512.MAP
new file mode 100644 (file)
index 0000000..7533d2d
--- /dev/null
@@ -0,0 +1,290 @@
+*****************************************************\r
+GSP COFF Linker      , Version 3.00   \r
+*****************************************************\r
+Wed Apr 05 16:07:20 1989\r
+\r
+OUTPUT FILE NAME:   <CHECK512.out>\r
+ENTRY POINT SYMBOL: "POWERUP"  address: ffe77000\r
+\r
+\r
+MEMORY CONFIGURATION\r
+\r
+           name      origin     length     attributes\r
+         --------   --------   ---------   ----------\r
+         VRAM       00000000   000200000      RW\r
+         SRAM       010d0000   000020000      RW\r
+         CRAM00     01800000   000001000      RW\r
+         CRAM01     01801000   000001000      RW\r
+         CRAM02     01802000   000001000      RW\r
+         CRAM03     01803000   000001000      RW\r
+         CRAM04     01804000   000001000      RW\r
+         CRAM05     01805000   000001000      RW\r
+         CRAM06     01806000   000001000      RW\r
+         CRAM07     01807000   000001000      RW\r
+         CRAM08     01808000   000001000      RW\r
+         CRAM09     01809000   000001000      RW\r
+         CRAM10     0180a000   000001000      RW\r
+         CRAM11     0180b000   000001000      RW\r
+         CRAM12     0180c000   000001000      RW\r
+         CRAM13     0180d000   000001000      RW\r
+         CRAM14     0180e000   000001000      RW\r
+         CRAM15     0180f000   000001000      RW\r
+         IROM       02000000   000800000      R\r
+         PROM       ffe77000   00001c000      RX\r
+         VROM       ffeffc00   000000400      RX\r
+\r
+\r
+SECTION ALLOCATION MAP\r
+\r
+ output                                  attributes/\r
+section   page    origin      length       input sections\r
+--------  ----  ----------  ----------   ----------------\r
+.data      0    00000000    00000000     \r
+\r
+.bss       0    010d0000    00000220     UNINITIALIZED\r
+                  010d0000    00000200     MISCDATA.OBJ (.bss)\r
+                  010d0200    00000020     CTLCHECK.OBJ (.bss)\r
+\r
+.BSS       0    010d0220    00000000     UNINITIALIZED\r
+\r
+.text      0    ffe77000    00009c70     \r
+                  ffe77000    00003610     SYSCHECK.OBJ (.text)\r
+                  ffe7a610    00000e20     ROMCHECK.OBJ (.text)\r
+                  ffe7b430    00000bc0     RAMCHECK.OBJ (.text)\r
+                  ffe7bff0    00000980     TVMCHECK.OBJ (.text)\r
+                  ffe7c970    00002a80     CTLCHECK.OBJ (.text)\r
+                  ffe7f3f0    00001880     UTILITIE.OBJ (.text)\r
+\r
+.TEXT      0    ffe80c70    00000000     UNINITIALIZED\r
+\r
+LABELS     0    ffe80c70    00006c60     \r
+                  ffe80c70    000026b0     ROMBOARD.OBJ (LABELS)\r
+                  ffe83320    00001c20     CPUBOARD.OBJ (LABELS)\r
+                  ffe84f40    00001bb0     CONTROLS.OBJ (LABELS)\r
+                  ffe86af0    00000de0     MISCDATA.OBJ (LABELS)\r
+\r
+RECTS      0    ffe878d0    00002c10     \r
+                  ffe878d0    000017d0     ROMBOARD.OBJ (RECTS)\r
+                  ffe890a0    000010a0     CPUBOARD.OBJ (RECTS)\r
+                  ffe8a140    00000390     TVMONITR.OBJ (RECTS)\r
+                  ffe8a4d0    00000010     CONTROLS.OBJ (RECTS)\r
+\r
+VECTS      0    ffe8a4e0    00001020     \r
+                  ffe8a4e0    00000150     ROMBOARD.OBJ (VECTS)\r
+                  ffe8a630    00000150     CPUBOARD.OBJ (VECTS)\r
+                  ffe8a780    00000d80     TVMONITR.OBJ (VECTS)\r
+\r
+POINTS     0    ffe8b500    00000be0     \r
+                  ffe8b500    00000be0     TVMONITR.OBJ (POINTS)\r
+\r
+CIRCLES    0    ffe8c0e0    00000d30     \r
+                  ffe8c0e0    00000d30     CONTROLS.OBJ (CIRCLES)\r
+\r
+CHIPS      0    ffe8ce10    000039a0     \r
+                  ffe8ce10    00002d10     ROMCHIPS.OBJ (CHIPS)\r
+                  ffe8fb20    00000c90     RAMCHIPS.OBJ (CHIPS)\r
+\r
+CMOSF      0    ffe907b0    00000000     UNINITIALIZED\r
+\r
+EDITS      0    ffe907b0    00000000     UNINITIALIZED\r
+\r
+MISC       0    ffe907b0    000003e0     \r
+                  ffe907b0    000003e0     MISCDATA.OBJ (MISC)\r
+\r
+FONT       0    ffe90b90    00001af0     \r
+                  ffe90b90    00001af0     SYSFONT.OBJ (FONT)\r
+\r
+\r
+GLOBAL SYMBOLS\r
+\r
+address  name                             address  name\r
+-------- ----                             -------- ----\r
+010d0000 .bss                             00000000 edata\r
+00000000 .data                            00000000 .data\r
+ffe77000 .text                            010d0000 SRAM_STRING\r
+ffe8cb80 ADVANCE                          010d0000 .bss\r
+ffe808f0 ADVANCE_WAIT                     010d0100 SRAM_TIME\r
+ffe80690 ADV_BUTTON                       010d0220 end\r
+ffe876e0 BRAMERRL                         ffe77000 POWERUP\r
+ffe874f0 BROMERRL                         ffe77000 .text\r
+ffe7fb60 CIRCLE                           ffe7a610 ROMCHECK\r
+ffe7c3f0 CLRCHECK                         ffe7afa0 VIEWROMS\r
+ffe907a0 CMOSCHIPS                        ffe7b430 RAMCHECK\r
+ffe8c900 CNTR_CS                          ffe7b880 VIEWRAMS\r
+ffe7bff0 CNVCHECK                         ffe7bd10 RAMSTATE\r
+ffe8cae0 COINVAULT                        ffe7bff0 CNVCHECK\r
+ffe8a240 COLOR_BARS                       ffe7c3f0 CLRCHECK\r
+ffe90af0 COLOR_TABLE_END                  ffe7c970 CTLCHECK\r
+ffe90a50 COLOR_TABLE_START                ffe7f070 VIEWCNTL\r
+ffe8c0e0 CONTROL_CIRCS                    ffe7f3f0 INITCOLR\r
+ffe84f40 CONTROL_LABELS                   ffe7f5b0 POINT\r
+ffe8a4d0 CONTROL_RECTS                    ffe7f640 RECTANGLE\r
+ffe8b500 CONVERGENCE_POINTS               ffe7f700 HVLINE\r
+ffe8a780 CONVERGENCE_VECTS                ffe7f890 STRING\r
+ffe83320 CPUBOARD_LABELS                  ffe7fb60 CIRCLE\r
+ffe890a0 CPUBOARD_RECTS                   ffe80160 ERROR_LED\r
+ffe8a630 CPUBOARD_VECTS                   ffe80690 ADV_BUTTON\r
+ffe892d0 CPU_CHIP                         ffe808f0 ADVANCE_WAIT\r
+ffe8c270 CROUCH1_PRESS                    ffe80ae0 SCRCLR\r
+ffe8c5e0 CROUCH2_PRESS                    ffe80b80 YAMSND\r
+ffe7c970 CTLCHECK                         ffe80c70 ROMBOARD_LABELS\r
+ffe8ccc0 CUTFRENCH                        ffe80c70 etext\r
+ffe8cd60 CUTGERMAN                        ffe83320 CPUBOARD_LABELS\r
+ffe89280 DMA_CHIP                         ffe84f40 CONTROL_LABELS\r
+ffe80160 ERROR_LED                        ffe850c0 JOYSTICK1_DOWN\r
+ffe8c7c0 EXTRA_CS                         ffe85150 JOYSTICK1_UP\r
+ffe8c130 GUN1_PRESS                       ffe851d0 JOYSTICK1_LEFT\r
+ffe8c4a0 GUN2_PRESS                       ffe85260 JOYSTICK1_RIGHT\r
+ffe7f700 HVLINE                           ffe85800 JOYSTICK2_DOWN\r
+ffe8d310 IMAGE_ROMS                       ffe85890 JOYSTICK2_UP\r
+ffe7f3f0 INITCOLR                         ffe85910 JOYSTICK2_LEFT\r
+ffe90970 IOREG_TABLE_END                  ffe859a0 JOYSTICK2_RIGHT\r
+ffe907b0 IOREG_TABLE_START                ffe86af0 ROMCOMPL\r
+ffe850c0 JOYSTICK1_DOWN                   ffe86d80 ROMERRL\r
+ffe851d0 JOYSTICK1_LEFT                   ffe86ff0 RAMCOMPL\r
+ffe85260 JOYSTICK1_RIGHT                  ffe87280 RAMERRL\r
+ffe85150 JOYSTICK1_UP                     ffe874f0 BROMERRL\r
+ffe85800 JOYSTICK2_DOWN                   ffe876e0 BRAMERRL\r
+ffe85910 JOYSTICK2_LEFT                   ffe878d0 ROMBOARD_RECTS\r
+ffe859a0 JOYSTICK2_RIGHT                  ffe87a10 ROM23\r
+ffe85890 JOYSTICK2_UP                     ffe87a60 ROM24\r
+ffe8c1d0 JUMP1_PRESS                      ffe87ab0 ROM41\r
+ffe8c540 JUMP2_PRESS                      ffe87b00 ROM42\r
+ffe90b90 LED_TABLE_END                    ffe87b50 ROM59\r
+ffe90af0 LED_TABLE_START                  ffe87ba0 ROM60\r
+ffe8c860 LEFT_CS                          ffe87bf0 ROM77\r
+ffe8cc20 MEMPROT                          ffe87c40 ROM78\r
+ffe8c310 P1_START                         ffe87c90 ROM25\r
+ffe8c680 P2_START                         ffe87ce0 ROM26\r
+ffe90310 PALCHIPS                         ffe87d30 ROM27\r
+ffe7f5b0 POINT                            ffe87d80 ROM28\r
+ffe77000 POWERUP                          ffe87dd0 ROM29\r
+ffe8a140 PRIMARY_COLORS                   ffe87e20 ROM30\r
+ffe89870 RAM41                            ffe87e70 ROM31\r
+ffe895a0 RAM42                            ffe87ec0 ROM32\r
+ffe895f0 RAM43                            ffe87f10 ROM33\r
+ffe89640 RAM44                            ffe87f60 ROM34\r
+ffe89690 RAM45                            ffe87fb0 ROM35\r
+ffe896e0 RAM46                            ffe88000 ROM36\r
+ffe89730 RAM47                            ffe88050 ROM37\r
+ffe89780 RAM48                            ffe880a0 ROM38\r
+ffe897d0 RAM49                            ffe880f0 ROM39\r
+ffe89910 RAM60                            ffe88140 ROM40\r
+ffe89960 RAM61                            ffe88190 ROM43\r
+ffe899b0 RAM62                            ffe881e0 ROM44\r
+ffe89a00 RAM63                            ffe88230 ROM45\r
+ffe898c0 RAM65                            ffe88280 ROM46\r
+ffe89320 RAM68                            ffe882d0 ROM47\r
+ffe89370 RAM69                            ffe88320 ROM48\r
+ffe893c0 RAM70                            ffe88370 ROM49\r
+ffe89410 RAM71                            ffe883c0 ROM50\r
+ffe89460 RAM72                            ffe88410 ROM51\r
+ffe894b0 RAM73                            ffe88460 ROM52\r
+ffe89500 RAM74                            ffe884b0 ROM53\r
+ffe89820 RAM7                             ffe88500 ROM54\r
+ffe89550 RAM75                            ffe88550 ROM55\r
+ffe7b430 RAMCHECK                         ffe885a0 ROM56\r
+ffe8fb20 RAMCHIPS                         ffe885f0 ROM57\r
+ffe86ff0 RAMCOMPL                         ffe88640 ROM58\r
+ffe87280 RAMERRL                          ffe88690 ROM61\r
+ffe7bd10 RAMSTATE                         ffe886e0 ROM62\r
+ffe7f640 RECTANGLE                        ffe88730 ROM63\r
+ffe8c9a0 RIHT_CS                          ffe88780 ROM64\r
+ffe8c3b0 ROCKET1_PRESS                    ffe887d0 ROM65\r
+ffe8c720 ROCKET2_PRESS                    ffe88820 ROM66\r
+ffe87a10 ROM23                            ffe88870 ROM67\r
+ffe87a60 ROM24                            ffe888c0 ROM68\r
+ffe87c90 ROM25                            ffe88910 ROM69\r
+ffe87ce0 ROM26                            ffe88960 ROM70\r
+ffe87d30 ROM27                            ffe889b0 ROM71\r
+ffe87d80 ROM28                            ffe88a00 ROM72\r
+ffe87dd0 ROM29                            ffe88a50 ROM73\r
+ffe87e20 ROM30                            ffe88aa0 ROM74\r
+ffe87e70 ROM31                            ffe88af0 ROM75\r
+ffe87ec0 ROM32                            ffe88b40 ROM76\r
+ffe87f10 ROM33                            ffe88b90 ROM79\r
+ffe87f60 ROM34                            ffe88be0 ROM80\r
+ffe87fb0 ROM35                            ffe88c30 ROM81\r
+ffe88000 ROM36                            ffe88c80 ROM82\r
+ffe88050 ROM37                            ffe88cd0 ROM83\r
+ffe880a0 ROM38                            ffe88d20 ROM84\r
+ffe880f0 ROM39                            ffe88d70 ROM85\r
+ffe88140 ROM40                            ffe88dc0 ROM86\r
+ffe87ab0 ROM41                            ffe88e10 ROM87\r
+ffe87b00 ROM42                            ffe88e60 ROM88\r
+ffe88190 ROM43                            ffe88eb0 ROM89\r
+ffe881e0 ROM44                            ffe88f00 ROM90\r
+ffe88230 ROM45                            ffe88f50 ROM91\r
+ffe88280 ROM46                            ffe88fa0 ROM92\r
+ffe882d0 ROM47                            ffe88ff0 ROM93\r
+ffe88320 ROM48                            ffe89040 ROM94\r
+ffe88370 ROM49                            ffe890a0 CPUBOARD_RECTS\r
+ffe883c0 ROM50                            ffe89280 DMA_CHIP\r
+ffe88410 ROM51                            ffe892d0 CPU_CHIP\r
+ffe88460 ROM52                            ffe89320 RAM68\r
+ffe884b0 ROM53                            ffe89370 RAM69\r
+ffe88500 ROM54                            ffe893c0 RAM70\r
+ffe88550 ROM55                            ffe89410 RAM71\r
+ffe885a0 ROM56                            ffe89460 RAM72\r
+ffe885f0 ROM57                            ffe894b0 RAM73\r
+ffe88640 ROM58                            ffe89500 RAM74\r
+ffe87b50 ROM59                            ffe89550 RAM75\r
+ffe87ba0 ROM60                            ffe895a0 RAM42\r
+ffe88690 ROM61                            ffe895f0 RAM43\r
+ffe886e0 ROM62                            ffe89640 RAM44\r
+ffe88730 ROM63                            ffe89690 RAM45\r
+ffe88780 ROM64                            ffe896e0 RAM46\r
+ffe887d0 ROM65                            ffe89730 RAM47\r
+ffe88820 ROM66                            ffe89780 RAM48\r
+ffe88870 ROM67                            ffe897d0 RAM49\r
+ffe888c0 ROM68                            ffe89820 RAM7\r
+ffe88910 ROM69                            ffe89870 RAM41\r
+ffe88960 ROM70                            ffe898c0 RAM65\r
+ffe889b0 ROM71                            ffe89910 RAM60\r
+ffe88a00 ROM72                            ffe89960 RAM61\r
+ffe88a50 ROM73                            ffe899b0 RAM62\r
+ffe88aa0 ROM74                            ffe89a00 RAM63\r
+ffe88af0 ROM75                            ffe8a140 PRIMARY_COLORS\r
+ffe88b40 ROM76                            ffe8a240 COLOR_BARS\r
+ffe87bf0 ROM77                            ffe8a4d0 CONTROL_RECTS\r
+ffe87c40 ROM78                            ffe8a4e0 ROMBOARD_VECTS\r
+ffe88b90 ROM79                            ffe8a630 CPUBOARD_VECTS\r
+ffe88be0 ROM80                            ffe8a780 CONVERGENCE_VECTS\r
+ffe88c30 ROM81                            ffe8b500 CONVERGENCE_POINTS\r
+ffe88c80 ROM82                            ffe8c0e0 CONTROL_CIRCS\r
+ffe88cd0 ROM83                            ffe8c130 GUN1_PRESS\r
+ffe88d20 ROM84                            ffe8c1d0 JUMP1_PRESS\r
+ffe88d70 ROM85                            ffe8c270 CROUCH1_PRESS\r
+ffe88dc0 ROM86                            ffe8c310 P1_START\r
+ffe88e10 ROM87                            ffe8c3b0 ROCKET1_PRESS\r
+ffe88e60 ROM88                            ffe8c4a0 GUN2_PRESS\r
+ffe88eb0 ROM89                            ffe8c540 JUMP2_PRESS\r
+ffe88f00 ROM90                            ffe8c5e0 CROUCH2_PRESS\r
+ffe88f50 ROM91                            ffe8c680 P2_START\r
+ffe88fa0 ROM92                            ffe8c720 ROCKET2_PRESS\r
+ffe88ff0 ROM93                            ffe8c7c0 EXTRA_CS\r
+ffe89040 ROM94                            ffe8c860 LEFT_CS\r
+ffe80c70 ROMBOARD_LABELS                  ffe8c900 CNTR_CS\r
+ffe878d0 ROMBOARD_RECTS                   ffe8c9a0 RIHT_CS\r
+ffe8a4e0 ROMBOARD_VECTS                   ffe8ca40 SLAM_SW\r
+ffe7a610 ROMCHECK                         ffe8cae0 COINVAULT\r
+ffe8ce10 ROMCHIPS                         ffe8cb80 ADVANCE\r
+ffe86af0 ROMCOMPL                         ffe8cc20 MEMPROT\r
+ffe86d80 ROMERRL                          ffe8ccc0 CUTFRENCH\r
+ffe80ae0 SCRCLR                           ffe8cd60 CUTGERMAN\r
+ffe8ca40 SLAM_SW                          ffe8ce10 ROMCHIPS\r
+010d0000 SRAM_STRING                      ffe8d310 IMAGE_ROMS\r
+010d0100 SRAM_TIME                        ffe8fb20 RAMCHIPS\r
+ffe7f890 STRING                           ffe90310 PALCHIPS\r
+ffe91510 SYSFONT                          ffe907a0 CMOSCHIPS\r
+ffe90a50 TRADEMARK_COLORS_END             ffe907b0 IOREG_TABLE_START\r
+ffe90970 TRADEMARK_COLORS_START           ffe90970 IOREG_TABLE_END\r
+ffe7f070 VIEWCNTL                         ffe90970 TRADEMARK_COLORS_START\r
+ffe7b880 VIEWRAMS                         ffe90a50 TRADEMARK_COLORS_END\r
+ffe7afa0 VIEWROMS                         ffe90a50 COLOR_TABLE_START\r
+ffe80b80 YAMSND                           ffe90af0 COLOR_TABLE_END\r
+00000000 edata                            ffe90af0 LED_TABLE_START\r
+010d0220 end                              ffe90b90 LED_TABLE_END\r
+ffe80c70 etext                            ffe91510 SYSFONT\r
+\r
+[187 symbols]\r
diff --git a/DIAG/CHECK512.OUT b/DIAG/CHECK512.OUT
new file mode 100644 (file)
index 0000000..6c1f56e
Binary files /dev/null and b/DIAG/CHECK512.OUT differ
diff --git a/DIAG/CMOSPAGE.ASM b/DIAG/CMOSPAGE.ASM
new file mode 100644 (file)
index 0000000..73bdf2c
--- /dev/null
@@ -0,0 +1,157 @@
+\r
+;****************************************************************************\r
+;* CMOSPAGE.ASM: FILE DECLARES CMOS GAME PARAMETER LAYOUT.                  *\r
+;****************************************************************************\r
+\r
+        .TITLE 'CMOSPAGE'\r
+       .WIDTH  132\r
+       .OPTION B,D,L,T\r
+       .MNOLIST\r
+\r
+        .include \VIDEO\GSP.INC\r
+        .include \VIDEO\SYS.INC\r
+\r
+        .include SYSCHECK.SET\r
+        .include SYSCHECK.GBL\r
+\r
+        .include LAYOUT.MAC\r
+        \r
+;****************************************************************************\r
+;* SYMBOL CONVENTIONS: PxxLyy = PAGE xx LINE yy; FOR xx AND yy INTEGERS.    *\r
+;*                     T_     = TITLE                                       *\r
+;*                     V_     = VALUE                                       *\r
+;****************************************************************************\r
+\r
+T1X      .SET 32\r
+T1Y      .SET 50\r
+V1X      .SET 320\r
+V1Y      .SET 50\r
+D1Y      .SET 16\r
+\r
+T2X      .SET 32\r
+T2Y      .SET 50\r
+V2X      .SET 384\r
+V2Y      .SET 50\r
+D2Y      .SET 16\r
+\r
+;       CMOS PAGE 01 (AUDITS)\r
+\r
+        LABEL T_P01L01, GRAY, RIGHT, T1X, T1Y + (0*D1Y), "LEFT SLOT COINS"\r
+        LABEL V_P01L01, GRAY, RIGHT, V1X, V1Y + (0*D1Y)\r
+\r
+        LABEL T_P01L02, GRAY, RIGHT, T1X, T1Y + (1*D1Y), "CENTER SLOT COINS"\r
+        LABEL V_P01L02, GRAY, RIGHT, V1X, V1Y + (1*D1Y)\r
+\r
+        LABEL T_P01L03, GRAY, RIGHT, T1X, T1Y + (2*D1Y), "RIGHT SLOT COINS" \r
+        LABEL V_P01L03, GRAY, RIGHT, V1X, V1Y + (2*D1Y)\r
+\r
+        LABEL T_P01L04, GRAY, RIGHT, T1X, T1Y + (3*D1Y), "PAID CREDITS"   \r
+        LABEL V_P01L04, GRAY, RIGHT, V1X, V1Y + (3*D1Y)\r
+\r
+        LABEL T_P01L05, GRAY, RIGHT, T1X, T1Y + (4*D1Y), "EXTRA MEN EARNED" \r
+        LABEL V_P01L05, GRAY, RIGHT, V1X, V1Y + (4*D1Y)\r
\r
+        LABEL T_P01L06, GRAY, RIGHT, T1X, T1Y + (5*D1Y), "PLAY TIME"       \r
+        LABEL V_P01L06, GRAY, RIGHT, V1X, V1Y + (5*D1Y)\r
\r
+        LABEL T_P01L07, GRAY, RIGHT, T1X, T1Y + (6*D1Y), "MEN PLAYED"\r
+        LABEL V_P01L07, GRAY, RIGHT, V1X, V1Y + (6*D1Y)\r
\r
+        LABEL T_P01L08, GRAY, RIGHT, T1X, T1Y + (7*D1Y), "CREDITS PLAYED"\r
+        LABEL V_P01L08, GRAY, RIGHT, V1X, V1Y + (7*D1Y)\r
\r
+        LABEL T_P01L09, GRAY, RIGHT, T1X, T1Y + (8*D1Y), "AVG TIME PER CREDIT"\r
+        LABEL V_P01L09, GRAY, RIGHT, V1X, V1Y + (8*D1Y)\r
\r
+        LABEL T_P01L10, GRAY, RIGHT, T1X, T1Y + (9*D1Y), "AVG TURNS PER CREDIT"\r
+        LABEL V_P01L10, GRAY, RIGHT, V1X, V1Y + (9*D1Y)\r
+\r
+;       CMOS PAGE 02 (GAME ADJUSTMENTS)\r
+\r
+        LABEL T_P02L01, GRAY, RIGHT, T2X, T2Y + (0*D2Y), "ENERGY BONUS LEVEL"\r
+        LABEL V_P02L01, GRAY, RIGHT, V2X, V2Y + (0*D2Y)\r
+\r
+        LABEL T_P02L02, GRAY, RIGHT, T2X, T2Y + (1*D2Y), "ENERGY UNITS PER PLAYER"\r
+        LABEL V_P02L02, GRAY, RIGHT, V2X, V2Y + (1*D2Y)\r
+\r
+        LABEL T_P02L03, GRAY, RIGHT, T2X, T2Y + (2*D2Y), "PRICING SELECTION"\r
+        LABEL V_P02L03, GRAY, RIGHT, V2X, V2Y + (2*D2Y)\r
+\r
+        LABEL T_P02L04, GRAY, RIGHT, T2X+24, T2Y + (3*D2Y), "LEFT SLOT UNITS"\r
+        LABEL V_P02L04, GRAY, RIGHT, V2X   , V2Y + (3*D2Y)\r
+\r
+        LABEL T_P02L05, GRAY, RIGHT, T2X+24, T2Y + (4*D2Y), "CENTER SLOT UNITS"\r
+        LABEL V_P02L05, GRAY, RIGHT, V2X   , V2Y + (4*D2Y)\r
\r
+        LABEL T_P02L06, GRAY, RIGHT, T2X+24, T2Y + (5*D2Y), "RIGHT SLOT UNITS"\r
+        LABEL V_P02L06, GRAY, RIGHT, V2X   , V2Y + (5*D2Y)\r
\r
+        LABEL T_P02L07, GRAY, RIGHT, T2X+24, T2Y + (6*D2Y), "UNITS REQUIRED FOR CREDIT"\r
+        LABEL V_P02L07, GRAY, RIGHT, V2X,    V2Y + (6*D2Y)\r
\r
+        LABEL T_P02L08, GRAY, RIGHT, T2X+24, T2Y + (7*D2Y), "UNITS REQUIRED FOR BONUS"\r
+        LABEL V_P02L08, GRAY, RIGHT, V2X,    V2Y + (7*D2Y)\r
\r
+        LABEL T_P02L09, GRAY, RIGHT, T2X+24, T2Y + (8*D2Y), "MINIMUM UNITS FOR CREDIT"\r
+        LABEL V_P02L09, GRAY, RIGHT, V2X,    V2Y + (8*D2Y)\r
\r
+        LABEL T_P02L10, GRAY, RIGHT, T2X, T2Y + (9*D2Y), "DIFFICULTY OF PLAY"\r
+        LABEL V_P02L10, GRAY, RIGHT, V2X, V2Y + (9*D2Y)\r
\r
+        LABEL T_P02L11, GRAY, RIGHT, T2X, T2Y + (10*D2Y), "RESTORE FACTORY SETTINGS"\r
+        LABEL V_P02L11, GRAY, RIGHT, V2X, V2Y + (10*D2Y)\r
\r
+        LABEL T_P02L12, GRAY, RIGHT, T2X, T2Y + (11*D2Y), "CLEAR BOOKEEPING TOTALS"\r
+        LABEL V_P02L12, GRAY, RIGHT, V2X, V2Y + (11*D2Y)\r
\r
+        LABEL T_P02L13, GRAY, RIGHT, T2X, T2Y + (12*D2Y), "CLEAR HIGHSCORE"\r
+        LABEL V_P02L13, GRAY, RIGHT, V2X, V2Y + (12*D2Y)\r
\r
+        LABEL T_P02L14, GRAY, RIGHT, T2X, T2Y + (13*D2Y), "AUTOCYCLE"\r
+        LABEL V_P02L14, GRAY, RIGHT, V2X, V2Y + (13*D2Y)\r
\r
+        LABEL T_P02L15, GRAY, RIGHT, T2X, T2Y + (14*D2Y), "SET HIGHSCORE NAME"\r
+        LABEL V_P02L15, GRAY, RIGHT, V2X, V2Y + (14*D2Y)\r
\r
+;       EDIT TABLE FOR CMOS PAGE 01 (AUDITS)\r
+\r
+        BGN_EDIT\r
+\r
+        EDIT BGN_CMOS_PAGE_1, 2000000H, 0, 10,   T_P01L01, V_P01L01, CVT_BIN_TO_STR\r
+        EDIT                , 2000020H, 0, 10,   T_P01L02, V_P01L02, CVT_BIN_TO_STR\r
+        EDIT                , 2000040H, 0, 10,   T_P01L03, V_P01L03, CVT_BIN_TO_STR\r
+        EDIT                , 2000060H, 0, 10,   T_P01L04, V_P01L04, CVT_BIN_TO_STR\r
+        EDIT                , 2000080H, 0, 10,   T_P01L05, V_P01L05, CVT_BIN_TO_STR\r
+        EDIT                , 20000A0H, 0, 10,   T_P01L06, V_P01L06, CVT_BIN_TO_TIM\r
+        EDIT                , 20000C0H, 0, 10,   T_P01L07, V_P01L07, CVT_BIN_TO_STR\r
+        EDIT                , 20000E0H, 0, 10,   T_P01L08, V_P01L08, CVT_BIN_TO_STR\r
+        EDIT                , 2000100H, 0,  1,   T_P01L09, V_P01L09, CVT_BIN_TO_TIM\r
+        EDIT END_CMOS_PAGE_1, 20001C0H, 0,  1,   T_P01L10, V_P01L10, CVT_BIN_TO_STR\r
+\r
+        END_EDIT\r
+\r
+;       EDIT TABLE FOR CMOS PAGE 02 (GAME ADJUSTMENTS)\r
+\r
+        BGN_EDIT\r
+\r
+        EDIT BGN_CMOS_PAGE_2, 2000000H, 0, 10,   T_P02L01, V_P02L01, CVT_BIN_TO_STR\r
+        EDIT                , 2000020H, 0, 10,   T_P02L02, V_P02L02, CVT_BIN_TO_STR\r
+        EDIT                , 2000040H, 0, 10,   T_P02L03, V_P02L03, CVT_BIN_TO_STR\r
+        EDIT                , 2000060H, 0, 10,   T_P02L04, V_P02L04, CVT_BIN_TO_STR\r
+        EDIT                , 2000080H, 0, 10,   T_P02L05, V_P02L05, CVT_BIN_TO_STR\r
+        EDIT                , 20000A0H, 0, 10,   T_P02L06, V_P02L06, CVT_BIN_TO_STR\r
+        EDIT                , 20000C0H, 0, 10,   T_P02L07, V_P02L07, CVT_BIN_TO_STR\r
+        EDIT                , 20000E0H, 0, 10,   T_P02L08, V_P02L08, CVT_BIN_TO_STR\r
+        EDIT                , 2000100H, 0,  1,   T_P02L09, V_P02L09, CVT_BIN_TO_YN\r
+        EDIT                , 2000120H, 0,  8,   T_P02L10, V_P02L10, CVT_BIN_TO_PLAYLEVEL\r
+        EDIT                , 2000140H, 0,  1,   T_P02L11, V_P02L11, CVT_BIN_TO_YN\r
+        EDIT                , 2000160H, 0,  1,   T_P02L12, V_P02L12, CVT_BIN_TO_YN\r
+        EDIT                , 2000180H, 0,  1,   T_P02L13, V_P02L13, CVT_BIN_TO_YN\r
+        EDIT                , 20001A0H, 0,  1,   T_P02L14, V_P02L14, CVT_BIN_TO_YN\r
+        EDIT END_CMOS_PAGE_2, 20001C0H, 0,  1,   T_P02L15, V_P02L15, CVT_BIN_TO_YN\r
+\r
+        END_EDIT\r
+\r
+        .END\r
+\r
+\1a
\ No newline at end of file
diff --git a/DIAG/CONTROLS.ASM b/DIAG/CONTROLS.ASM
new file mode 100644 (file)
index 0000000..c24bde3
--- /dev/null
@@ -0,0 +1,304 @@
+\r
+       .WIDTH  132\r
+       .OPTION B,D,L,T\r
+       .MNOLIST\r
+;****************************************************************************\r
+;* CONTROLS.ASM: FILE DEFINES THE PLAYER CONTROL PANEL.                     *\r
+;****************************************************************************\r
+\r
+\r
+        .include \VIDEO\GSP.INC\r
+        .include \VIDEO\SYS.INC\r
+\r
+        .include SYSCHECK.SET\r
+        .include SYSCHECK.GBL\r
+\r
+        .include LAYOUT.MAC\r
+\r
+        .SECT "CIRCLES"\r
+CONTROL_CIRCS:\r
+        .SECT "LABELS"\r
+CONTROL_LABELS:\r
+        .SECT "RECTS"\r
+CONTROL_RECTS:\r
+\r
+;       PLAYER 1 ORIGINS\r
+\r
+JY1X    .SET 315\r
+JY1Y    .SET 220\r
+\r
+JY1R    .SET 28\r
+L1      .SET 16\r
+H1      .SET 40\r
+\r
+;       RIGHT (1) JOYSTICK\r
+\r
+        CIRCLE , RED, FILL, JY1X, JY1Y, JY1R\r
+\r
+        LABEL , BLACK, RIGHT, JY1X-11,  JY1Y-10, "JOY"\r
+        LABEL , BLACK, RIGHT, JY1X-17,     JY1Y, "STICK"\r
+        LABEL , BLACK, RIGHT,  JY1X-2,  JY1Y+10, "2"\r
+\r
+R1Y     .SET JY1Y + JY1R + 4\r
+R1X     .SET JY1X - ( L1 / 2 )\r
+\r
+        LABEL JOYSTICK1_DOWN,  BLACK, DOWN, R1X+3, R1Y+3, "DOWN"\r
+\r
+R2Y     .SET JY1Y - JY1R - H1 - 4\r
+R2X     .SET JY1X - ( L1 / 2 )\r
+\r
+        LABEL JOYSTICK1_UP,    BLACK, DOWN, R2X+5, R2Y+3, "UP"\r
+\r
+R3X     .SET JY1X - JY1R - H1 - 4 \r
+R3Y     .SET JY1Y - ( L1 / 2 )\r
+\r
+        LABEL JOYSTICK1_LEFT,  BLACK, RIGHT, R3X+3, R3Y+4, "LEFT"\r
+\r
+R4X     .SET JY1X + JY1R + 4\r
+R4Y     .SET JY1Y - ( L1 / 2 )\r
+\r
+        LABEL JOYSTICK1_RIGHT, BLACK, RIGHT, R4X+3, R4Y+4, "RIGHT"\r
+\r
+;       RIGHT BUTTON SET\r
+\r
+BTR     .SET 16\r
+\r
+BT1X    .SET JY1X + 95\r
+BT1Y    .SET JY1Y - 90\r
+\r
+        LABEL , WHITE, RIGHT, BT1X-22, BT1Y-31, "FIRE" \r
+\r
+        CIRCLE GUN1_PRESS, BLACK,   FILL, BT1X, BT1Y, BTR\r
+        CIRCLE           , WHITE, NOFILL, BT1X, BT1Y, BTR + 4\r
+\r
+BT2X    .SET JY1X + 125\r
+BT2Y    .SET JY1Y - 130\r
+\r
+        LABEL , WHITE, RIGHT, BT2X-17, BT2Y-31, "JUMP" \r
+\r
+        CIRCLE JUMP1_PRESS, BLACK,   FILL, BT2X, BT2Y, BTR\r
+        CIRCLE            , WHITE, NOFILL, BT2X, BT2Y, BTR + 4\r
+\r
+BT3X    .SET JY1X + 155\r
+BT3Y    .SET JY1Y - 90\r
+\r
+        LABEL , WHITE, RIGHT, BT3X-5, BT3Y-31, "CROUCH"\r
+\r
+        CIRCLE CROUCH1_PRESS, BLACK,   FILL, BT3X, BT3Y, BTR\r
+        CIRCLE              , WHITE, NOFILL, BT3X, BT3Y, BTR + 4\r
+\r
+BT8X    .SET JY1X + 40\r
+BT8Y    .SET JY1Y - 185\r
+\r
+        LABEL  , WHITE, RIGHT, BT8X-22, BT8Y-31, "START 2"\r
+\r
+        CIRCLE P1_START, BLACK,   FILL, BT8X, BT8Y, BTR\r
+        CIRCLE         , WHITE, NOFILL, BT8X, BT8Y, BTR + 4\r
+\r
+BT10X    .SET JY1X + 50\r
+BT10Y    .SET JY1Y - 35\r
+\r
+        LABEL , WHITE, RIGHT, BT10X-28, BT10Y-BTR-28, "ROCKET"\r
+        LABEL , WHITE, RIGHT, BT10X-21, BT10Y-BTR-18, "BOMB"\r
+\r
+        CIRCLE ROCKET1_PRESS, BLACK,   FILL, BT10X, BT10Y, BTR\r
+        CIRCLE              , WHITE, NOFILL, BT10X, BT10Y, BTR + 4\r
+\r
+;       PLAYER 2 ORIGINS\r
+\r
+JY2X    .SET 75\r
+JY2Y    .SET 220\r
+\r
+JY2R    .SET 28\r
+L2      .SET 16\r
+H2      .SET 40\r
+\r
+;       LEFT JOYSTICK\r
+\r
+        CIRCLE , RED, FILL, JY2X, JY2Y, JY2R\r
+\r
+        LABEL , BLACK, RIGHT, JY2X-11,  JY2Y-10, "JOY"\r
+        LABEL , BLACK, RIGHT, JY2X-17,     JY2Y, "STICK"\r
+        LABEL , BLACK, RIGHT,  JY2X-2,  JY2Y+10, "1"\r
+\r
+R5Y     .SET JY2Y + JY2R + 4\r
+R5X     .SET JY2X - ( L2 / 2 )\r
+\r
+        LABEL JOYSTICK2_DOWN,  BLACK, DOWN, R5X+3, R5Y+3, "DOWN"\r
+\r
+R6Y     .SET JY2Y - JY2R - H2 - 4\r
+R6X     .SET JY2X - ( L2 / 2 )\r
+\r
+        LABEL JOYSTICK2_UP,    BLACK, DOWN, R6X+5, R6Y+3, "UP"\r
+\r
+R7X     .SET JY2X - JY2R - H2 - 4 \r
+R7Y     .SET JY2Y - ( L2 / 2 )\r
+\r
+        LABEL JOYSTICK2_LEFT,  BLACK, RIGHT, R7X+3, R7Y+4, "LEFT"\r
+\r
+R8X     .SET JY2X + JY2R + 4\r
+R8Y     .SET JY2Y - ( L2 / 2 )\r
+\r
+        LABEL JOYSTICK2_RIGHT, BLACK, RIGHT, R8X+3, R8Y+4, "RIGHT"\r
+\r
+;       LEFT BUTTON SET\r
+\r
+BT4X    .SET JY2X + 95\r
+BT4Y    .SET JY2Y - 90\r
+\r
+        LABEL , WHITE, RIGHT, BT4X-22, BT4Y-31, "FIRE" \r
+\r
+        CIRCLE GUN2_PRESS, BLACK,   FILL, BT4X, BT4Y, BTR\r
+        CIRCLE           , WHITE, NOFILL, BT4X, BT4Y, BTR + 4 \r
+\r
+BT5X    .SET JY2X + 125\r
+BT5Y    .SET JY2Y - 130\r
+\r
+        LABEL , WHITE, RIGHT, BT5X-17, BT5Y-31, "JUMP" \r
+\r
+        CIRCLE JUMP2_PRESS, BLACK,   FILL, BT5X, BT5Y, BTR\r
+        CIRCLE            , WHITE, NOFILL, BT5X, BT5Y, BTR + 4\r
+\r
+BT6X    .SET JY2X + 155\r
+BT6Y    .SET JY2Y - 90\r
+\r
+        LABEL , WHITE, RIGHT, BT6X-5, BT6Y-31, "CROUCH"\r
+\r
+        CIRCLE CROUCH2_PRESS, BLACK,   FILL, BT6X, BT6Y, BTR\r
+        CIRCLE              , WHITE, NOFILL, BT6X, BT6Y, BTR + 4\r
+\r
+BT9X    .SET JY2X + 40\r
+BT9Y    .SET JY2Y - 185\r
+\r
+        LABEL  , WHITE, RIGHT, BT9X-22, BT9Y-31, "START 1"\r
+\r
+        CIRCLE P2_START, BLACK,   FILL, BT9X, BT9Y, BTR\r
+        CIRCLE         , WHITE, NOFILL, BT9X, BT9Y, BTR + 4\r
+\r
+BT7X    .SET JY2X + 50\r
+BT7Y    .SET JY2Y - 35\r
+\r
+        LABEL , WHITE, RIGHT, BT7X-28, BT7Y-BTR-28, "ROCKET"\r
+        LABEL , WHITE, RIGHT, BT7X-21, BT7Y-BTR-18, "BOMB"\r
+\r
+        CIRCLE ROCKET2_PRESS, BLACK,   FILL, BT7X, BT7Y, BTR\r
+        CIRCLE              , WHITE, NOFILL, BT7X, BT7Y, BTR + 4\r
+\r
+;       MISCELLANEOUS SWITCHES.\r
+\r
+SW1X    .SET 80\r
+SW1Y    .SET 350\r
+\r
+SW0X   .SET    SW1X - 2 * (BTR + 4) - 10\r
+SW0Y   .SET    SW1Y\r
+\r
+SW2X    .SET SW1X + 2 * (BTR + 4) + 10\r
+SW2Y    .SET SW1Y\r
+\r
+SW3X    .SET SW2X + 2 * (BTR + 4) + 10\r
+SW3Y    .SET SW1Y\r
+\r
+SW4X    .SET SW3X + 2 * (BTR + 4) + 10\r
+SW4Y    .SET SW1Y\r
+\r
+SW5X    .SET SW4X + 2 * (BTR + 4) + 10\r
+SW5Y    .SET SW1Y\r
+\r
+SW6X    .SET SW5X + 2 * (BTR + 4) + 10\r
+SW6Y    .SET SW1Y\r
+\r
+SW7X    .SET SW6X + 2 * (BTR + 4) + 10\r
+SW7Y    .SET SW1Y\r
+\r
+SW8X    .SET SW7X + 2 * (BTR + 4) + 10\r
+SW8Y    .SET SW1Y\r
+\r
+SW9X    .SET SW8X + 2 * (BTR + 4) + 10\r
+SW9Y    .SET SW1Y\r
+\r
+        LABEL , WHITE, RIGHT, SW0X-19, SW0Y+(BTR+4)+04, "EXTRA"\r
+        LABEL , WHITE, RIGHT, SW0X-14, SW0Y+(BTR+4)+14, "COIN"\r
+\r
+        CIRCLE EXTRA_CS, BLACK,   FILL, SW0X, SW0Y, BTR\r
+        CIRCLE        , WHITE, NOFILL, SW0X, SW0Y, BTR + 4\r
+\r
+        LABEL , WHITE, RIGHT, SW1X-14, SW1Y-(BTR+4)-24, "LEFT"\r
+        LABEL , WHITE, RIGHT, SW1X-14, SW1Y-(BTR+4)-14, "COIN"\r
+\r
+        CIRCLE LEFT_CS, BLACK,   FILL, SW1X, SW1Y, BTR\r
+        CIRCLE        , WHITE, NOFILL, SW1X, SW1Y, BTR + 4\r
+\r
+        LABEL , WHITE, RIGHT, SW2X-23, SW2Y+(BTR+4)+04, "CENTER"\r
+        LABEL , WHITE, RIGHT, SW2X-14, SW2Y+(BTR+4)+14, "COIN"\r
+\r
+        CIRCLE CNTR_CS, BLACK,   FILL, SW2X, SW2Y, BTR\r
+        CIRCLE        , WHITE, NOFILL, SW2X, SW2Y, BTR + 4\r
+\r
+        LABEL , WHITE, RIGHT, SW3X-16, SW3Y-(BTR+4)-24, "RIGHT"\r
+        LABEL , WHITE, RIGHT, SW3X-14, SW3Y-(BTR+4)-14, "COIN"\r
+\r
+        CIRCLE RIHT_CS, BLACK,   FILL, SW3X, SW3Y, BTR\r
+        CIRCLE        , WHITE, NOFILL, SW3X, SW3Y, BTR + 4\r
+\r
+        LABEL , WHITE, RIGHT, SW4X-16, SW4Y+(BTR+4)+04, "SLAM"\r
+        LABEL , WHITE, RIGHT, SW4X-22, SW4Y+(BTR+4)+14, "SWITCH"\r
+\r
+        CIRCLE SLAM_SW, BLACK,   FILL, SW4X, SW4Y, BTR\r
+        CIRCLE        , WHITE, NOFILL, SW4X, SW4Y, BTR + 4\r
+\r
+        LABEL , WHITE, RIGHT, SW5X-18, SW5Y-(BTR+4)-24, "VAULT"\r
+        LABEL , WHITE, RIGHT, SW5X-23, SW5Y-(BTR+4)-14, "SWITCH"\r
+\r
+        CIRCLE COINVAULT, BLACK,   FILL, SW5X, SW5Y, BTR\r
+        CIRCLE        , WHITE, NOFILL, SW5X, SW5Y, BTR + 4\r
+\r
+***        LABEL , WHITE, RIGHT, SW6X-24, SW6Y+(BTR+4)+04, "MANUAL"\r
+***        LABEL , WHITE, RIGHT, SW6X-19, SW6Y+(BTR+4)+14, "DOWN"\r
+\r
+***        CIRCLE AUTOCYC, BLACK,   FILL, SW6X, SW6Y, BTR\r
+***        CIRCLE        , WHITE, NOFILL, SW6X, SW6Y, BTR + 4\r
+\r
+        LABEL , WHITE, RIGHT, SW6X-26, SW6Y+(BTR+4)+04, "ADVANCE"\r
+\r
+        CIRCLE ADVANCE, BLACK,   FILL, SW6X, SW6Y, BTR\r
+        CIRCLE        , WHITE, NOFILL, SW6X, SW6Y, BTR + 4\r
+\r
+***        LABEL , WHITE, RIGHT, SW7X-25, SW7Y-(BTR+4)-14, "ADVANCE"\r
+\r
+***        CIRCLE ADVANCE, BLACK,   FILL, SW7X, SW7Y, BTR\r
+***        CIRCLE        , WHITE, NOFILL, SW7X, SW7Y, BTR + 4\r
+\r
+***        LABEL , WHITE, RIGHT, SW8X-24, SW8Y+(BTR+4)+04, "MEMORY"\r
+***        LABEL , WHITE, RIGHT, SW8X-24, SW8Y+(BTR+4)+14, "PROTECT"\r
+\r
+        LABEL , WHITE, RIGHT, SW7X-24, SW7Y-(BTR+4)-24, "MEMORY"\r
+        LABEL , WHITE, RIGHT, SW7X-24, SW7Y-(BTR+4)-14, "PROTECT"\r
+\r
+***        CIRCLE MEMPROT, BLACK,   FILL, SW8X, SW8Y, BTR\r
+***        CIRCLE        , WHITE, NOFILL, SW8X, SW8Y, BTR + 4\r
+\r
+        CIRCLE MEMPROT, BLACK,   FILL, SW7X, SW7Y, BTR\r
+        CIRCLE        , WHITE, NOFILL, SW7X, SW7Y, BTR + 4\r
+\r
+        LABEL , WHITE, RIGHT, SW8X-26, SW8Y+(BTR+4)+04, "CUT FOR"\r
+        LABEL , WHITE, RIGHT, SW8X-23, SW8Y+(BTR+4)+14, "FRENCH"\r
+\r
+        CIRCLE CUTFRENCH, BLACK,   FILL, SW8X, SW8Y, BTR\r
+        CIRCLE        , WHITE, NOFILL, SW8X, SW8Y, BTR + 4\r
+\r
+        LABEL , WHITE, RIGHT, SW9X-26, SW9Y-(BTR+4)-24, "CUT FOR"\r
+        LABEL , WHITE, RIGHT, SW9X-25, SW9Y-(BTR+4)-14, "GERMAN"\r
+\r
+        CIRCLE CUTGERMAN, BLACK,   FILL, SW9X, SW9Y, BTR\r
+        CIRCLE        , WHITE, NOFILL, SW9X, SW9Y, BTR + 4\r
+\r
+        LABEL , GREEN, RIGHT, 116, 256, "PRESS ADVANCE TO EXIT"\r
+        LABEL , GREEN, RIGHT, 153, 270, "SWITCH TEST"\r
+\r
+        END_LABL\r
+        END_RECT\r
+        END_CIRC\r
+\r
+        .END\r
+\r
+\1a
\ No newline at end of file
diff --git a/DIAG/CPUBOARD.ASM b/DIAG/CPUBOARD.ASM
new file mode 100644 (file)
index 0000000..ec4c607
--- /dev/null
@@ -0,0 +1,218 @@
+\r
+       .WIDTH  132\r
+       .OPTION B,D,L,T\r
+       .MNOLIST\r
+;****************************************************************************\r
+;* CPUBOARD.ASM: FILE DEFINES THE CPU BOARD SCHEMATIC.                     *\r
+;****************************************************************************\r
+\r
+       .include \VIDEO\GSP.INC\r
+       .include \VIDEO\SYS.INC\r
+\r
+       .include SYSCHECK.SET\r
+       .include SYSCHECK.GBL\r
+\r
+       .include LAYOUT.MAC\r
+\r
+        .SECT "LABELS"\r
+CPUBOARD_LABELS:\r
+        .SECT "RECTS"\r
+CPUBOARD_RECTS:\r
+        .SECT "VECTS"\r
+CPUBOARD_VECTS:\r
+\r
+RAMX   .SET  0                 ; ORIGIN: UPPER LEFT CORNER COORDINATES\r
+RAMY   .SET 60                 ; FOT THE CPU BOARD\r
+\r
+SCRX   .SET RAMX + 20          ; ORIGIN: SCRATCH RAMS\r
+SCRY   .SET RAMY + 200\r
+\r
+CLRX   .SET SCRX + 95          ; ORIGIN: COLOR RAMS AND CMOS\r
+CLRY   .SET SCRY - 122\r
+\r
+VIDX   .SET RAMX + 195         ; ORIGIN: VIDEO RAMS\r
+VIDY   .SET RAMY + 130\r
+\r
+DMAX   .SET RAMX + 440         ; ORIGIN: PRINCIPAL CHIPS\r
+DMAY   .SET RAMY + 200\r
+\r
+CPUX   .SET RAMX + 420\r
+CPUY   .SET RAMY + 40\r
+\r
+VLBLX  .SET 7                  ; OFFSETS: FROM UPPER LEFT CORNER OF CHIP\r
+VLBLY  .SET 8                  ; ICON TO START OF LABEL\r
+\r
+CLBLX  .SET 9\r
+CLBLY  .SET 8\r
+\r
+SLBLX  .SET 5\r
+SLBLY  .SET 4\r
+\r
+;      CPU BOARD PERIMETER\r
+\r
+       LABEL  , YELLOW, RIGHT, RAMX+20, RAMY+20, "5770-12204-00 REV B"\r
+\r
+       VECTOR , WHITE,   RAMX+0, RAMY+288, RAMX+510, RAMY+288\r
+       VECTOR , WHITE, RAMX+510, RAMY+288, RAMX+510,   RAMY+0\r
+       VECTOR , WHITE, RAMX+510,   RAMY+0,   RAMX+0,   RAMY+0\r
+       VECTOR , WHITE,   RAMX+0,   RAMY+0,   RAMX+0, RAMY+288\r
+\r
+;      CONNECTOR LABELS\r
+\r
+       LABEL , BLACK, RIGHT,  RAMX+40,  RAMY-22, "CONNECTOR J4"\r
+       LABEL , BLACK, RIGHT,  RAMX+40, RAMY+298, "CONNECTOR J10"\r
+       LABEL , BLACK, RIGHT, RAMX+310, RAMY+298, "CONNECTOR J9"\r
+\r
+;      CONNECTORS\r
+\r
+       RECTANGL , WHITE, 200,  8,  RAMX+20,  RAMY-32     ; P3\r
+       RECTANGL , WHITE, 180, 32,  RAMX+30,  RAMY-32\r
+\r
+       RECTANGL , WHITE, 200,  8,  RAMX+20, RAMY+312     ; J1\r
+       RECTANGL , WHITE, 180, 32,  RAMX+30, RAMY+288\r
+\r
+       RECTANGL , WHITE, 200,  8, RAMX+290, RAMY+312     ; J2\r
+       RECTANGL , WHITE, 180, 32, RAMX+300, RAMY+288\r
+\r
+;      PRINCIPAL CHIPS\r
+\r
+       LABEL , BLACK, RIGHT, DMAX+19, DMAY+15, "U77"\r
+       LABEL , BLACK, RIGHT, DMAX+3,  DMAY+30, "CUSTOM"\r
+       RECTANGL DMA_CHIP, GRAY, 56, 56, DMAX, DMAY               ; DMA\r
+\r
+       LABEL , BLACK, RIGHT, CPUX+8, CPUY+07, "U18"\r
+       LABEL , BLACK, RIGHT, CPUX+8, CPUY+25, "CPU"\r
+       RECTANGL CPU_CHIP, GRAY, 40, 40, CPUX, CPUY               ; CPU\r
+\r
+;      VIDEO RAM CHIP LABELS\r
+\r
+       LABEL , BLACK, DOWN,     VIDX+VLBLX, VIDY+VLBLY+44, "U68"\r
+       LABEL , BLACK, DOWN,  VIDX+VLBLX+24, VIDY+VLBLY+44, "U69"\r
+       LABEL , BLACK, DOWN,  VIDX+VLBLX+48, VIDY+VLBLY+44, "U70"\r
+       LABEL , BLACK, DOWN,  VIDX+VLBLX+72, VIDY+VLBLY+44, "U71"\r
+       LABEL , BLACK, DOWN,  VIDX+VLBLX+96, VIDY+VLBLY+44, "U72"\r
+       LABEL , BLACK, DOWN, VIDX+VLBLX+120, VIDY+VLBLY+44, "U73"\r
+       LABEL , BLACK, DOWN, VIDX+VLBLX+144, VIDY+VLBLY+44, "U74"\r
+       LABEL , BLACK, DOWN, VIDX+VLBLX+168, VIDY+VLBLY+44, "U75"\r
+\r
+       LABEL , BLACK, DOWN,     VIDX+VLBLX, VIDY+VLBLY, "U42"\r
+       LABEL , BLACK, DOWN,  VIDX+VLBLX+24, VIDY+VLBLY, "U43"\r
+       LABEL , BLACK, DOWN,  VIDX+VLBLX+48, VIDY+VLBLY, "U44"\r
+       LABEL , BLACK, DOWN,  VIDX+VLBLX+72, VIDY+VLBLY, "U45"\r
+       LABEL , BLACK, DOWN,  VIDX+VLBLX+96, VIDY+VLBLY, "U46"\r
+       LABEL , BLACK, DOWN, VIDX+VLBLX+120, VIDY+VLBLY, "U47"\r
+       LABEL , BLACK, DOWN, VIDX+VLBLX+144, VIDY+VLBLY, "U48"\r
+       LABEL , BLACK, DOWN, VIDX+VLBLX+168, VIDY+VLBLY, "U49"\r
+\r
+;      VIDEO RAMS\r
+\r
+       RECTANGL RAM68, GRAY, 20, 40,  VIDX,    VIDY+44\r
+       RECTANGL RAM69, GRAY, 20, 40,  VIDX+24, VIDY+44\r
+       RECTANGL RAM70, GRAY, 20, 40,  VIDX+48, VIDY+44\r
+       RECTANGL RAM71, GRAY, 20, 40,  VIDX+72, VIDY+44\r
+       RECTANGL RAM72, GRAY, 20, 40,  VIDX+96, VIDY+44\r
+       RECTANGL RAM73, GRAY, 20, 40, VIDX+120, VIDY+44\r
+       RECTANGL RAM74, GRAY, 20, 40, VIDX+144, VIDY+44\r
+       RECTANGL RAM75, GRAY, 20, 40, VIDX+168, VIDY+44\r
+\r
+       RECTANGL RAM42, GRAY, 20, 40,  VIDX,    VIDY\r
+       RECTANGL RAM43, GRAY, 20, 40,  VIDX+24, VIDY\r
+       RECTANGL RAM44, GRAY, 20, 40,  VIDX+48, VIDY\r
+       RECTANGL RAM45, GRAY, 20, 40,  VIDX+72, VIDY\r
+       RECTANGL RAM46, GRAY, 20, 40,  VIDX+96, VIDY\r
+       RECTANGL RAM47, GRAY, 20, 40, VIDX+120, VIDY\r
+       RECTANGL RAM48, GRAY, 20, 40, VIDX+144, VIDY\r
+       RECTANGL RAM49, GRAY, 20, 40, VIDX+168, VIDY\r
+\r
+;      COLOR AND CMOS RAM LABELS\r
+\r
+       LABEL , BLACK, DOWN, CLRX+CLBLX,     CLRY+CLBLY, "U7"\r
+       LABEL , BLACK, DOWN, CLRX+CLBLX,  CLRY+CLBLY+54, "U41"\r
+       LABEL , BLACK, DOWN, CLRX+CLBLX, CLRY+CLBLY+108, "U65"\r
+\r
+;      COLOR AND CMOS RAMS\r
+\r
+       RECTANGL RAM7, GRAY, 24, 50, CLRX,      CLRY\r
+       RECTANGL RAM41, GRAY, 24, 50, CLRX,  CLRY+54\r
+       RECTANGL RAM65, GRAY, 24, 50, CLRX, CLRY+108\r
+\r
+;      SCRATCH RAM LABELS\r
+\r
+       LABEL , BLACK, DOWN,    SCRX+SLBLX, SCRY+SLBLY, "U60"\r
+       LABEL , BLACK, DOWN, SCRX+SLBLX+20, SCRY+SLBLY, "U61"\r
+       LABEL , BLACK, DOWN, SCRX+SLBLX+40, SCRY+SLBLY, "U62"\r
+       LABEL , BLACK, DOWN, SCRX+SLBLX+60, SCRY+SLBLY, "U63"\r
+\r
+;      SCRATCH RAMS\r
+\r
+       RECTANGL RAM60, GRAY, 16, 36,    SCRX, SCRY\r
+       RECTANGL RAM61, GRAY, 16, 36, SCRX+20, SCRY\r
+       RECTANGL RAM62, GRAY, 16, 36, SCRX+40, SCRY\r
+       RECTANGL RAM63, GRAY, 16, 36, SCRX+60, SCRY\r
+\r
+;      ORIENTATION: SET OF 2 X 5 ABOVE VIDEO RAMS\r
+\r
+       LABEL , BLACK, DOWN,  VIDX+SLBLX+82, VIDY+SLBLY-88 , "U13"\r
+       LABEL , BLACK, DOWN, VIDX+SLBLX+112, VIDY+SLBLY-88 , "U14"\r
+       LABEL , BLACK, DOWN, VIDX+SLBLX+142, VIDY+SLBLY-88 , "U15"\r
+       LABEL , BLACK, DOWN, VIDX+SLBLX+172, VIDY+SLBLY-88 , "U16"\r
+\r
+       RECTANGL , GRAY, 16, 36,  VIDX+82, VIDY-88\r
+       RECTANGL , GRAY, 16, 36, VIDX+112, VIDY-88\r
+       RECTANGL , GRAY, 16, 36, VIDX+142, VIDY-88\r
+       RECTANGL , GRAY, 16, 36, VIDX+172, VIDY-88\r
+\r
+       LABEL , BLACK, DOWN,  VIDX+SLBLX+82, VIDY+SLBLY-48 , "U30"\r
+       LABEL , BLACK, DOWN, VIDX+SLBLX+112, VIDY+SLBLY-48 , "U31"\r
+       LABEL , BLACK, DOWN, VIDX+SLBLX+142, VIDY+SLBLY-48 , "U32"\r
+       LABEL , BLACK, DOWN, VIDX+SLBLX+172, VIDY+SLBLY-48 , "U33"\r
+\r
+       RECTANGL , GRAY, 16, 36,  VIDX+82, VIDY-48\r
+       RECTANGL , GRAY, 16, 36, VIDX+112, VIDY-48\r
+       RECTANGL , GRAY, 16, 36, VIDX+142, VIDY-48\r
+       RECTANGL , GRAY, 16, 36, VIDX+172, VIDY-48\r
+\r
+;      ORIENTATION: SET OF 1 X 6 BELOW VIDEO RAMS\r
+\r
+       LABEL , BLACK, DOWN,      VIDX+SLBLX, VIDY+SLBLY+96 , "U78"\r
+       LABEL , BLACK, DOWN,   VIDX+SLBLX+30, VIDY+SLBLY+96 , "U79"\r
+       LABEL , BLACK, DOWN,   VIDX+SLBLX+60, VIDY+SLBLY+96 , "U80"\r
+       LABEL , BLACK, DOWN,   VIDX+SLBLX+90, VIDY+SLBLY+96 , "U81"\r
+       LABEL , BLACK, DOWN,  VIDX+SLBLX+120, VIDY+SLBLY+96 , "U82"\r
+       LABEL , BLACK, RIGHT, VIDX+SLBLX+150, VIDY+SLBLY+96 , "U83"\r
+\r
+       RECTANGL , GRAY, 16, 36,     VIDX, VIDY+96\r
+       RECTANGL , GRAY, 16, 36,  VIDX+30, VIDY+96\r
+       RECTANGL , GRAY, 16, 36,  VIDX+60, VIDY+96\r
+       RECTANGL , GRAY, 16, 36,  VIDX+90, VIDY+96\r
+       RECTANGL , GRAY, 16, 36, VIDX+120, VIDY+96\r
+       RECTANGL , GRAY, 36, 16, VIDX+150, VIDY+96\r
+\r
+;      ORIENTATION: SET OF 4 X 2 BETWEEN COLOR AND VIDEO RAMS\r
+\r
+       LABEL , BLACK, DOWN, CLRX+SLBLX+32,     CLRY+SLBLY, "U8"\r
+       LABEL , BLACK, DOWN, CLRX+SLBLX+32,  CLRY+SLBLY+40, "U27"\r
+       LABEL , BLACK, DOWN, CLRX+SLBLX+32,  CLRY+SLBLY+80, "U56"\r
+       LABEL , BLACK, DOWN, CLRX+SLBLX+32, CLRY+SLBLY+120, "U66"\r
+\r
+       RECTANGL , GRAY, 16, 36, CLRX+32, CLRY\r
+       RECTANGL , GRAY, 16, 36, CLRX+32, CLRY+40\r
+       RECTANGL , GRAY, 16, 36, CLRX+32, CLRY+80\r
+       RECTANGL , GRAY, 16, 36, CLRX+32, CLRY+120\r
+\r
+       LABEL , BLACK, DOWN, CLRX+SLBLX+55,     CLRY+SLBLY, "U9"\r
+       LABEL , BLACK, DOWN, CLRX+SLBLX+55,  CLRY+SLBLY+40, "U28"\r
+       LABEL , BLACK, DOWN, CLRX+SLBLX+55,  CLRY+SLBLY+80, "U57"\r
+       LABEL , BLACK, DOWN, CLRX+SLBLX+55, CLRY+SLBLY+120, "U67"\r
+\r
+       RECTANGL , GRAY, 16, 32, CLRX+55, CLRY\r
+       RECTANGL , GRAY, 16, 36, CLRX+55, CLRY+40\r
+       RECTANGL , GRAY, 16, 36, CLRX+55, CLRY+80\r
+       RECTANGL , GRAY, 16, 36, CLRX+55, CLRY+120\r
+\r
+       END_LABL\r
+       END_RECT\r
+       END_VECT\r
+\r
+       .END\r
+\1a
\ No newline at end of file
diff --git a/DIAG/CTLCHECK.ASM b/DIAG/CTLCHECK.ASM
new file mode 100644 (file)
index 0000000..ef3572c
--- /dev/null
@@ -0,0 +1,691 @@
+\r
+;****************************************************************************\r
+;* CTLCHECK.ASM: CONTROL CHECK; FILE TESTS PLAYER CONTROL FUNCTIONS.        *\r
+;*             USES A10 & A13 FOR SURE!                                            *\r
+;****************************************************************************\r
+\r
+        .TITLE 'CTLCHECK'\r
+       .WIDTH  132\r
+       .OPTION B,D,L,T\r
+       .MNOLIST\r
+\r
+        .include \VIDEO\GSP.INC\r
+        .include \VIDEO\SYS.INC\r
+\r
+        .include SYSCHECK.SET\r
+        .include SYSCHECK.GBL\r
+\r
+        .include UTILITIE.MAC\r
+        .include LAYOUT.MAC\r
+\r
+       .BSS    PREVSW,32               ;PREVIOUS SWITCH STATE\r
+CTLCHECK:\r
+\r
+        SETF   16, 0, 0\r
+        SETF   32, 0, 1\r
+       CLR     A13\r
+        CLR    A14\r
+        MOVE   A14,@CONTROL\r
+       MOVE    A14,@PREVSW,L\r
+\r
+;       ===============================\r
+;       | READ CONTROL REGISTER       |\r
+;       ===============================\r
+\r
+READ1:   MOVE @SWITCH_REGISTER_1, A14,L\r
+       CLR     A10\r
+;       ===============================\r
+;       | BIT00: LEFT JOY STICK UP    |\r
+;       ===============================\r
+\r
+BIT1_00:\r
+\r
+        MOVI JOYSTICK2_UP, A9, L\r
+\r
+        L_TXADR A9, A0\r
+        L_XYADR A9, A1\r
+        L_DIREC A9, A2\r
+        L_COLOR A9, A3\r
+\r
+       SRL     1,A14\r
+        JRC    $100\r
+       ADDK    1,A10\r
+        MOVI (WHITE* 256) + WHITE, A3\r
+\r
+$100:   FCALL STRING, B6        \r
+       SLL     1,A10\r
+;       ===============================\r
+;       | BIT01: LEFT JOY STICK DOWN  |\r
+;       ===============================\r
+\r
+BIT1_01:\r
+\r
+        MOVI JOYSTICK2_DOWN, A9, L\r
+\r
+        L_TXADR A9, A0\r
+        L_XYADR A9, A1\r
+        L_DIREC A9, A2\r
+        L_COLOR A9, A3\r
+\r
+       SRL     1,A14\r
+       JRC     $110\r
+\r
+       ADDK    1,A10\r
+        MOVI (WHITE* 256) + WHITE, A3\r
+\r
+$110:   FCALL STRING, B6        \r
+       SLL     1,A10\r
+;       ===============================\r
+;       | BIT02: LEFT JOY STICK LEFT  |\r
+;       ===============================\r
+\r
+BIT1_02:\r
+\r
+        MOVI JOYSTICK2_LEFT, A9, L\r
+\r
+        L_TXADR A9, A0\r
+        L_XYADR A9, A1\r
+        L_DIREC A9, A2\r
+        L_COLOR A9, A3\r
+\r
+        SRL     1,A14\r
+        JRC     $120\r
+       ADDK    1,A10\r
+        MOVI (WHITE* 256) + WHITE, A3\r
+\r
+$120:   FCALL STRING, B6        \r
+       SLL     1,A10\r
+;       ===============================\r
+;       | BIT03: LEFT JOY STICK RIGHT |\r
+;       ===============================\r
+\r
+BIT1_03:\r
+\r
+        MOVI JOYSTICK2_RIGHT, A9, L\r
+\r
+        L_TXADR A9, A0\r
+        L_XYADR A9, A1\r
+        L_DIREC A9, A2\r
+        L_COLOR A9, A3\r
+\r
+       SRL     1,A14\r
+       JRC     $130\r
+\r
+       ADDK    1,A10\r
+        MOVI (WHITE* 256) + WHITE, A3\r
+\r
+$130:   FCALL STRING, B6        \r
+       SLL     1,A10\r
+;       ===============================\r
+;       | BIT04: LEFT CROUCH PRESS    |\r
+;       ===============================\r
+\r
+BIT1_04:\r
+\r
+        MOVI CROUCH2_PRESS, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+       SRL     1,A14\r
+       JRC     $140\r
+\r
+       ADDK    1,A10\r
+        MOVI (FILL* 10000H) + (GREEN* 256) + GREEN, A6\r
+\r
+$140:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+;       ===============================\r
+;       | BIT05: LEFT GUN PRESS       |\r
+;       ===============================\r
+\r
+BIT1_05:\r
+\r
+        MOVI GUN2_PRESS, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+        SRL    1,A14\r
+        JRC    $150\r
+\r
+       ADDK    1,A10\r
+        MOVI (FILL* 10000H) + (RED* 256) + RED, A6\r
+\r
+$150:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+;       ===============================\r
+;       | BIT06: LEFT JUMP PRESS      |\r
+;       ===============================\r
+\r
+BIT1_06:\r
+\r
+        MOVI JUMP2_PRESS, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+        SRL    1,A14\r
+        JRC    $160\r
+\r
+       ADDK    1,A10\r
+        MOVI (FILL* 10000H) + (BLUE* 256) + BLUE, A6\r
+\r
+$160:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+;       ===============================\r
+;       | BIT07: LEFT ROCKET PRESS    |\r
+;       ===============================\r
+\r
+        MOVI ROCKET2_PRESS, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+       SRL     1,A14\r
+       JRC     $165\r
+\r
+       ADDK    1,A10\r
+        MOVI (FILL* 10000H) + (YELLOW* 256) + YELLOW, A6\r
+\r
+$165:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+;       ===============================\r
+;       | BIT08: RIGHT JOY STICK UP   |\r
+;       ===============================\r
+        MOVI JOYSTICK1_UP, A9, L\r
+\r
+        L_TXADR A9, A0\r
+        L_XYADR A9, A1\r
+        L_DIREC A9, A2\r
+        L_COLOR A9, A3\r
+\r
+        SRL    1,A14\r
+        JRC    $170\r
+       \r
+       ADDK    1,A10\r
+        MOVI (WHITE* 256) + WHITE, A3\r
+\r
+$170:   FCALL STRING, B6        \r
+       SLL     1,A10\r
+;       ===============================\r
+;       | BIT09: RIGHT JOY STICK DOWN |\r
+;       ===============================\r
+\r
+        MOVI JOYSTICK1_DOWN, A9, L\r
+\r
+        L_TXADR A9, A0\r
+        L_XYADR A9, A1\r
+        L_DIREC A9, A2\r
+        L_COLOR A9, A3\r
+\r
+        SRL    1,A14\r
+        JRC    $180\r
+       \r
+       ADDK    1,A10\r
+        MOVI (WHITE* 256) + WHITE, A3\r
+\r
+$180:   FCALL STRING, B6        \r
+       SLL     1,A10\r
+;       ===============================\r
+;       | BIT10: RIGHT JOY STICK LEFT |\r
+;       ===============================\r
+\r
+        MOVI JOYSTICK1_LEFT, A9, L\r
+\r
+        L_TXADR A9, A0\r
+        L_XYADR A9, A1\r
+        L_DIREC A9, A2\r
+        L_COLOR A9, A3\r
+\r
+        SRL    1,A14\r
+        JRC    $190\r
+       \r
+       ADDK    1,A10\r
+        MOVI (WHITE* 256) + WHITE, A3\r
+\r
+$190:   FCALL STRING, B6        \r
+       SLL     1,A10\r
+;       ===============================\r
+;       | BIT11: RIGHT JOY STICK RIGHT|\r
+;       ===============================\r
+\r
+        MOVI JOYSTICK1_RIGHT, A9, L\r
+\r
+        L_TXADR A9, A0\r
+        L_XYADR A9, A1\r
+        L_DIREC A9, A2\r
+        L_COLOR A9, A3\r
+\r
+        SRL    1,A14\r
+        JRC    $200\r
+       \r
+       ADDK    1,A10\r
+        MOVI (WHITE* 256) + WHITE, A3\r
+\r
+$200:   FCALL STRING, B6        \r
+       SLL     1,A10\r
+;       ===============================\r
+;       | BIT12: RIGHT CROUCH PRESS   |\r
+;       ===============================\r
+\r
+        MOVI CROUCH1_PRESS, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+        SRL    1,A14\r
+        JRC    $210\r
+       \r
+       ADDK    1,A10\r
+        MOVI (FILL* 10000H) + (GREEN* 256) + GREEN, A6\r
+\r
+$210:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+;       ===============================\r
+;       | BIT13: RIGHT GUN PRESS      |\r
+;       ===============================\r
+\r
+        MOVI GUN1_PRESS, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+        SRL    1,A14\r
+        JRC    $220\r
+       \r
+       ADDK    1,A10\r
+        MOVI (FILL* 10000H) + (RED* 256) + RED, A6\r
+\r
+$220:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+;       ===============================\r
+;       | BIT14: RIGHT JUMP PRESS     |\r
+;       ===============================\r
+        MOVI JUMP1_PRESS, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+        SRL    1,A14\r
+        JRC    $230\r
+       \r
+       ADDK    1,A10\r
+        MOVI (FILL* 10000H) + (BLUE* 256) + BLUE, A6\r
+\r
+$230:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+;       ===============================\r
+;       | BIT15: RIGHT ROCKET PRESS   |\r
+;       ===============================\r
+\r
+        MOVI ROCKET1_PRESS, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+        SRL    1,A14\r
+        JRC    $235\r
+       \r
+       ADDK    1,A10\r
+        MOVI (FILL* 10000H) + (YELLOW* 256) + YELLOW, A6\r
+\r
+$235:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+**************************************************************************\r
+*                                                                        *\r
+* BIT16: LEFT COIN SLOT                                                         *\r
+*                                                                        *\r
+**************************************************************************\r
+        MOVI LEFT_CS, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+        SRL    1,A14\r
+        JRC    $260\r
+       \r
+       ADDK    1,A10\r
+        MOVI (FILL* 10000H) + (YELLOW* 256) + YELLOW, A6\r
+\r
+$260:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+**************************************************************************\r
+*                                                                        *\r
+* BIT17: RIGHT COIN SLOT                                                *\r
+*                                                                        *\r
+**************************************************************************\r
+        MOVI RIHT_CS, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+        SRL    1,A14\r
+        JRC    $270\r
+       \r
+       ADDK    1,A10\r
+        MOVI (FILL* 10000H) + (YELLOW* 256) + YELLOW, A6\r
+\r
+$270:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+**************************************************************************\r
+*                                                                        *\r
+* BIT18: CENTER COIN SLOT                                               *\r
+*                                                                        *\r
+**************************************************************************\r
+        MOVI CNTR_CS, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+        SRL    1,A14\r
+        JRC    $280\r
+       \r
+       ADDK    1,A10\r
+        MOVI (FILL* 10000H) + (GREEN* 256) + GREEN, A6\r
+\r
+$280:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+**************************************************************************\r
+*                                                                        *\r
+* BIT19: SLAM TILT                                                      *\r
+*                                                                        *\r
+**************************************************************************\r
+        MOVI SLAM_SW, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+        SRL    1,A14\r
+        JRC    $290\r
+       \r
+       ADDK    1,A10\r
+        MOVI (FILL* 10000H) + (RED* 256) + RED, A6\r
+\r
+$290:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+**************************************************************************\r
+*                                                                        *\r
+* BIT20: ADVANCE                                                        *\r
+*                                                                        *\r
+**************************************************************************\r
+        MOVI ADVANCE, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+        SRL    1,A14\r
+        JRC    $300\r
+\r
+       INC     A13                     ;INCREMENT TO EXIT\r
+       ADDK    1,A10\r
+\r
+        MOVI (FILL* 10000H) + (BLUE* 256) + BLUE, A6\r
+$300:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+*****************************************************************************\r
+****                                                                        *\r
+**** BIT21: AUTO-UP/MANUAL-DOWN                                                 *\r
+****                                                                        *\r
+*****************************************************************************\r
+***        MOVI AUTOCYC, A9, L\r
+***\r
+***        C_RDIUS A9, A0\r
+***        C_XYADR A9, A1\r
+***        C_COLOR A9, A6\r
+\r
+        SRL    1,A14           ;SKIP AUTO/MANUAL SWITCH\r
+***        JRC $310\r
+***    ADDK    1,A10\r
+***        MOVI (FILL* 10000H) + (RED* 256) + RED, A6\r
+\r
+***$310:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+**************************************************************************\r
+*                                                                        *\r
+* BIT22: HIGH SCORE RESET                                               *\r
+*                                                                        *\r
+**************************************************************************\r
+        MOVI COINVAULT, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+        SRL    1,A14\r
+        JRC    $320\r
+       \r
+       ADDK    1,A10\r
+        MOVI (FILL* 10000H) + (BLUE* 256) + BLUE, A6\r
+\r
+$320:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+* BIT23: EXTRA COIN SWITCH INPUT                                        *\r
+*                                                                        *\r
+**************************************************************************\r
+        MOVI EXTRA_CS, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+        SRL    1,A14\r
+        JRC    $330\r
+       \r
+       ADDK    1,A10\r
+        MOVI (FILL* 10000H) + (GREEN* 256) + GREEN, A6\r
+\r
+$330:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+* BIT24: PLAYER 1 START                                                         *\r
+*                                                                        *\r
+**************************************************************************\r
+        MOVI P2_START, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+        SRL    1,A14\r
+        JRC    $240\r
+\r
+       ADDK    1,A10\r
+       .IF     BLUEP1\r
+        MOVI (FILL* 10000H) + (BLUE* 256) + BLUE, A6\r
+       .ELSE\r
+        MOVI (FILL* 10000H) + (RED* 256) + RED, A6\r
+       .ENDIF\r
+\r
+$240:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+**************************************************************************\r
+*                                                                        *\r
+* BIT25: PLAYER 2 START                                                         *\r
+*                                                                        *\r
+**************************************************************************\r
+        MOVI P1_START, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+        SRL    1,A14\r
+        JRC    $250\r
+       ADDK    1,A10\r
+       .IF     BLUEP1\r
+        MOVI (FILL* 10000H) + (RED* 256) + RED, A6\r
+       .ELSE\r
+        MOVI (FILL* 10000H) + (BLUE* 256) + BLUE, A6\r
+       .ENDIF\r
+\r
+$250:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+\r
+       SRL     1,A14                   ;SKIP BIT26 (SOUND BOARD TALKBACK)\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+* BIT27: MEMORY PROTECT                                                         *\r
+*                                                                        *\r
+**************************************************************************\r
+        MOVI MEMPROT, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+        SRL    1,A14\r
+        JRC    $255\r
+       \r
+       ADDK    1,A10\r
+        MOVI (FILL* 10000H) + (GREEN* 256) + GREEN, A6\r
+\r
+$255:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+\r
+       SRL     1,A14           ;SKIP BIT 28\r
+       SRL     1,A14           ;SKIP BIT 29\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+* BIT30: "CUT FOR" FRENCH JUMPER                                        *\r
+*                                                                        *\r
+**************************************************************************\r
+        MOVI CUTFRENCH, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+        SRL    1,A14\r
+        JRC    $568\r
+       \r
+       ADDK    1,A10\r
+        MOVI (FILL* 10000H) + (YELLOW* 256) + YELLOW, A6\r
+\r
+$568:   FCALL CIRCLE, B6        \r
+       SLL     1,A10\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+* BIT30: "CUT FOR" GERMAN JUMPER                                        *\r
+*                                                                        *\r
+**************************************************************************\r
+        MOVI CUTGERMAN, A9, L\r
+\r
+        C_RDIUS A9, A0\r
+        C_XYADR A9, A1\r
+        C_COLOR A9, A6\r
+\r
+        SRL    1,A14\r
+        JRC    $569\r
+       \r
+       ADDK    1,A10\r
+        MOVI (FILL* 10000H) + (YELLOW* 256) + YELLOW, A6\r
+\r
+$569:   FCALL CIRCLE, B6        \r
+\r
+       MOVE    @PREVSW,A14,L\r
+       MOVE    A10,@PREVSW,L\r
+       ANDN    A14,A10\r
+       JRZ     ENDCHEK                 ;BR = NO CHANGE IN SWITCH STATE\r
+       MOVI    0FDA2H,A0\r
+       MOVE    A0,@SOUND,W\r
+       MOVI    0FFA2H,A0\r
+       MOVE    A0,@SOUND,W\r
+ENDCHEK\r
+       MOVE    A13,A13\r
+       JREQ    READ1\r
+CTLXXXX\r
+       PAUSE   100000H,B6\r
+        FRET B5\r
+\r
+        .PAGE\r
+\r
+;****************************************************************************\r
+;* VIEWCNTL.ASM: ROUTINE DRAWS THE PLAYER CONTROLS.                         *\r
+;****************************************************************************\r
+\r
+VIEWCNTL:\r
+\r
+        CLR  A0                         ; PPOP = REPLACE\r
+        MOVE A0, @CONTROL\r
+\r
+        CLEARSCR\r
+\r
+;       ==============================\r
+;       | DISPLAY CIRCLES            |\r
+;       ==============================\r
+\r
+        MOVI CONTROL_CIRCS, A14, L\r
+\r
+$500:   C_COLOR A14, A6                 ; LOAD CIRCLE PARAMETERS\r
+        C_XYADR A14, A1\r
+        C_RDIUS A14, A0\r
+\r
+        FCALL CIRCLE, B6\r
+\r
+        C_END A14, $500\r
+\r
+;       ==============================\r
+;       | DISPLAY RECTANGLES         |\r
+;       ==============================\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+*         MOVI CONTROL_RECTS, A14, L                                    *\r
+*                                                                       *\r
+* $600:   R_XYADR A14, A0                 ; LOAD RECTANGLE PARAMETERS   *\r
+*         R_DIMEN A14, A1                                               *\r
+*         R_COLOR A14, A2                                               *\r
+*                                                                       *\r
+*         FCALL RECTANGLE, B6                                           *\r
+*                                                                       *\r
+*         R_END A14, $600                                               *\r
+*                                                                        *\r
+**************************************************************************\r
+\r
+;       ==============================\r
+;       | DISPLAY LABELS.            |\r
+;       ==============================\r
+\r
+        MOVK T, A0                      ; PPOP = TRANSPARENCY\r
+        MOVE A0, @CONTROL\r
+\r
+        MOVI CONTROL_LABELS, A14, L\r
+\r
+$700:   L_TXADR A14, A0                 ; LOAD LABEL PARAMETERS\r
+        L_XYADR A14, A1\r
+        L_DIREC A14, A2\r
+        L_COLOR A14, A3\r
+\r
+        FCALL STRING, B6\r
+\r
+        L_END A14, $700\r
+\r
+        FRET B5\r
+\r
+        .END\r
+\r
+\r
+\r
+\1a
\ No newline at end of file
diff --git a/DIAG/DMACHECK.ASM b/DIAG/DMACHECK.ASM
new file mode 100644 (file)
index 0000000..325028a
--- /dev/null
@@ -0,0 +1,669 @@
+\r
+       .WIDTH  132\r
+       .OPTION B,D,L,T\r
+       .MNOLIST\r
+\r
+       .nolist\r
+\r
+       include dmagsp.inc\r
+       include dmasys.inc\r
+       include dmamacro.hdr\r
+\r
+        include syscheck.set\r
+        include syscheck.gbl\r
+\r
+        include utilitie.mac\r
+        include layout.mac\r
+\r
+       .list\r
+\r
+        .GLOBL  DMACHECK\r
+\r
+        .BSS    FRAMEPTR, 32\r
+       .BSS    EOSCRN,8    \r
+       \r
+       .text\r
+\r
+IMAGE_START      .SET 2000000H\r
+IMAGE_HEIGHT     .SET 10H            ; (IN PIXELS)\r
+IMAGE_WIDTH      .SET 10H            ; (IN PIXELS)  -> MOD (WIDTH, 4) = 0\r
+\r
+IMAGE_DIMENSIONS .SET [IMAGE_HEIGHT, IMAGE_WIDTH]\r
+IMAGE_SCREEN_POS .SET [410,240]                ;dma test off screen\r
+\r
+; =====================================================\r
+\r
+* BEGINNING OF PROGRAM\r
+\r
+DMACHECK:\r
+\r
+        MOVE SP, @FRAMEPTR, 1           ; BREAK ON ERROR\r
+\r
+;Set pixel size to equate value\r
+       movk    PXSIZE,A0\r
+       move    A0,@PSIZE\r
+\r
+;Set up OFFSET register\r
+       movi    OFFSETVAL,OFFSET\r
+\r
+;Set plane mask to equate value\r
+       movi    PLANEMSK,A0\r
+       move    A0,@PMASK\r
+\r
+;Set background color\r
+       CLR     COLOR0\r
+\r
+;Set CONVSP, CONVDP AND PITCH\r
+       movi    SCRN_PTCH,A0            ;Get Screen Pitch\r
+       move    a0,SPTCH\r
+       move    a0,DPTCH\r
+       lmo     A0,A0                   ;Convert in temporary register\r
+       move    A0,@CONVSP              ;Move to CONVSP io register\r
+       move    A0,@CONVDP              ;Move to CONVDP io register\r
+\r
+;Set up CONTROL register\r
+       movi    INI_CTRL,A0             ; T=0,V=0,H=0\r
+       move    A0,@CONTROL\r
+\r
+;Set Up Display Interrupt\r
+       movi            427,a0          ;1ST INT AT HALF SCREEN\r
+       move            a0,@dpyint\r
+       movi            DIE,a0\r
+       move            a0,@intenb      ;ENABLE THE DISPLAY INTERRUPTS\r
+       movi            0fffffea0h,a0   ;INTERRUPT VECTOR\r
+       movi            dirq,a1,L\r
+       move            a1,*a0,1        ;STORE THE ROUTINE LOCATION\r
+\r
+BEGIN:\r
+       CLR     A0\r
+       MOVB    A0,@CMAPSEL     ;RESET TO COLOR MAP 0\r
+       MOVB    A0,@EOSCRN\r
+       EINT\r
+\r
+*      NORMAL IMAGE\r
+\r
+       CLR     A1\r
+       MOVK    DMAWNZ,DMACTL\r
+\r
+       MOVI    IMAGE_START,      A14           ; LEFT CORNER\r
+       MOVI    IMAGE_DIMENSIONS, DMASIZ, L\r
+\r
+       MOVE    A14,DMASAD\r
+       CALLR   HORIZFIX\r
+       MOVI    IMAGE_SCREEN_POS, DMAXY \r
+\r
+       MOVI    40h,A6\r
+       CALLR   CLIPX                   ;CLIP FROM BOTH SIDES\r
+\r
+*      FLIP ABOUT Y\r
+\r
+       CALLR   SPLITSEC\r
+\r
+       CLR     A1\r
+\r
+        MOVI    PXSIZE*(IMAGE_WIDTH-1), A14     ; RIGHT CORNER\r
+        ADDI    IMAGE_START, A14\r
+       MOVE    A14,DMASAD      \r
+\r
+       MOVI    IMAGE_DIMENSIONS, DMASIZ, L\r
+       MOVI    IMAGE_SCREEN_POS, DMAXY, L\r
+\r
+       MOVK    12h,DMACTL\r
+       MOVI    ((2*IMAGE_WIDTH)-1), A0, L\r
+        SLL     16,A0\r
+       MOVY    A0,DMACTL\r
+       CALLR   MHSCOMP                 ;DO THE OPERATION\r
+\r
+       MOVI    40h,A6\r
+       CALLR   CLIPY                   ;CLIP FROM BOTH SIDES\r
+\r
+*      FLIP ABOUT X\r
+\r
+       CALLR   SPLITSEC\r
+\r
+        MOVI    PXSIZE*((IMAGE_HEIGHT-1)*IMAGE_WIDTH), A14, L   ; BOTTOM LEFT CORNER\r
+        ADDI    IMAGE_START, A14\r
+       MOVE    A14, DMASAD\r
+\r
+       MOVI    IMAGE_DIMENSIONS, DMASIZ, L\r
+\r
+;       =================================\r
+;       | ASSUMING MOD (WIDTH,4) = 0 SO |\r
+;       | HS = TS.                      |\r
+;       =================================\r
+\r
+       MOVI    22h,DMACTL\r
+       MOVI    (2*IMAGE_WIDTH), A0, L  ;CALCULATE THE OFFSET\r
+       NEG     A0                      ;OF = -(HS + TS)\r
+       SLL     16,A0\r
+       MOVY    A0,DMACTL\r
+       CALLR   MHSCOMP\r
+\r
+       MOVI    40h,A6\r
+       CALLR   CLIPX\r
+\r
+*      FLIP ABOUT X & Y\r
+\r
+       CALLR   SPLITSEC\r
+\r
+        MOVI    PXSIZE*((IMAGE_HEIGHT*IMAGE_WIDTH)-1), A14, L   ; BOTTOM RIGHT CORNER\r
+        ADDI    IMAGE_START, A14\r
+       MOVE    A14, DMASAD\r
+\r
+       MOVI    IMAGE_DIMENSIONS, DMASIZ, L\r
+\r
+;       =================================\r
+;       | ASSUMING MOD (WIDTH,4) = 0 SO |\r
+;       | HS = TS.                      |\r
+;       =================================\r
+\r
+       MOVI    32h,DMACTL\r
+       MOVI    -1,A0                   ;OF = (HS - TS) - 1\r
+       SLL     16,A0\r
+       MOVY    A0,DMACTL\r
+       CALLR   MHSCOMP\r
+\r
+       MOVI    40h,A6\r
+       CALLR   CLIPY\r
+\r
+BREAK:  DINT\r
+\r
+        MOVI P_MAX, A14\r
+        MOVE A14, @CONTROL\r
+\r
+        MOVI DMA_CHIP, A14, L\r
+        R_XYADR A14, A0\r
+        R_DIMEN A14, A1\r
+        MOVI (GREEN* 256) + GREEN, A2\r
+\r
+        FCALL RECTANGLE, B6\r
+        MOVI  100000H,   A14, L\r
+\r
+DISP_GREEN:\r
+\r
+        FCALL ADV_BUTTON, B6\r
+        JRC   HURRY1\r
+        DSJS  A14, DISP_GREEN\r
+\r
+HURRY1:\r
+\r
+        CLR  A14\r
+        MOVE A14, @CONTROL\r
+\r
+        MOVE @FRAMEPTR, SP, 1\r
+       RETS\r
+\r
+*      CLIP ON BOTH SIDES ON A FLIP ABOUT Y\r
+*      A6      --> ITERATION COUNT\r
+       \r
+CLIPY:\r
+       MOVE    A0,-*SP,1\r
+CLIPY1\r
+\r
+       CLR     A0\r
+       DEC     DMASIZ\r
+       CMPXY   A0,DMASIZ\r
+       JRXEQ   CLIPYX\r
+       SUBI    10000h,DMACTL\r
+       CALLR   MV4\r
+       DEC     DMASIZ\r
+       CMPXY   A0,DMASIZ\r
+       JRXEQ   CLIPYX\r
+       SUBI    10000h,DMACTL\r
+       SUBK    8,DMASAD\r
+       CALLR   MV4\r
+       DSJ     A6,CLIPY1\r
+CLIPYX\r
+       MOVE    *SP+,A0,1\r
+       RETS\r
+\r
+*      CLIP ON BOTH SIDES ON A FLIP ABOUT X\r
+*      A6      --> ITERATION COUNT\r
+\r
+CLIPX:\r
+       MOVE    A0,-*SP,1\r
+CLIPX1\r
+\r
+       CLR     A0\r
+       DEC     DMASIZ\r
+       CMPXY   A0,DMASIZ\r
+       JRXEQ   CLIPXX\r
+       ADDI    10000h,DMACTL\r
+       CALLR   MV4\r
+       DEC     DMASIZ\r
+       CMPXY   A0,DMASIZ\r
+       JRXEQ   CLIPXX\r
+       ADDI    10000h,DMACTL\r
+       ADDK    8,DMASAD\r
+       CALLR   MV4\r
+       DSJ     A6,CLIPX1\r
+CLIPXX\r
+       MOVE    *SP+,A0,1\r
+       RETS\r
+\r
+*      MOVE FOUR PIXELS IN THE X DIRECTION DISPLAYING IN EACH POSITION\r
+\r
+MV4    MOVE    A0,-*SP,1\r
+       MOVI    244,A0\r
+MVAN\r
+       CALLR   SPLITSEC\r
+       CALLR   DSCOMP\r
+       INC     DMAXY\r
+       CMPXY   A0,DMAXY\r
+       JRXLT   MVAN\r
+       MOVI    IMAGE_SCREEN_POS,DMAXY\r
+       MOVE    *SP+,A0,1\r
+       RETS\r
+\r
+*      DMA --> SIMULATE --> COMPARE\r
+\r
+DSCOMP CALLR   MANDMA\r
+       CALLR   DMASIM\r
+       JRUC    PIXCOMP\r
+\r
+*      MANUAL DMA --> HORIZ. FIX --> SIMULATE --> COMPARE\r
+\r
+MHSCOMP:\r
+       CALLR   MANDMA\r
+       JRUC    HSFIX\r
+\r
+*      DMA --> HORIZONTAL FIX -> SIMULATE --> COMPARE\r
+\r
+DHSCOMP:\r
+       CALLR   DTIME\r
+HSFIX  CALLR   HORIZFIX\r
+       CALLR   DMASIM\r
+       JRUC    PIXCOMP\r
+\r
+*      MAKE THE HORIZ. SIZE THE NEXT DIVISIBLE BY 4 NUMBER\r
+*      DMASIZ(A5) HAS THE HSIZE IN THE LOWER WORD.\r
+\r
+HORIZFIX:\r
+       ADDK    3,DMASIZ\r
+       SRL     2,DMASIZ\r
+       SLL     2,DMASIZ\r
+       RETS\r
+\r
+*      SIMULATE A DMA OPERATION.\r
+\r
+*      REGISTER        HIGH WORD       LOW WORD\r
+*      --------        ---------       --------\r
+*         A1           CNST. COL.      X-LATION\r
+*         A2           VERT. SIZE      HORZ. SIZE\r
+*         A3           VERT. ADDR      HORZ. ADDR\r
+*         A4           SAG UPPER       SAG LOWER\r
+*         A5           OFFSET          CONTROL\r
+\r
+DMASIM:\r
+       MOVE    DMASAD,SADDR            ;SET THE STARTING ADDRESS\r
+       CALLR   GETSPTCH                ;SET THE SOURCE PITCH, CLIPPING\r
+       CALLR   GETDADDR                ;SET THE SCREEN ADDRESS\r
+       CVXYL   DADDR,B10               ;MAKE IT LINEAR AND SAVE A COPY\r
+       MOVE    B10,DADDR\r
+       MOVI    1000h,DPTCH             ;SET THE SCREEN PITCH\r
+       MOVE    DMASIZ,DYDX             ;SET THE DIMENSIONS OF THE BLOCK\r
+       CALLR   DMAWT\r
+       MOVY    DYDX,B11\r
+       SRL     16,B11\r
+NLINE:\r
+       CLR     B12\r
+       MOVX    DYDX,B12\r
+NPIX:\r
+       MOVB    *SADDR,B13      \r
+       CALLR   PIXOP                   ;DO THE PIXEL OPERATION\r
+       JRC     WIPIX                   ;BR = WRITE INHIBIT\r
+       MOVB    B13,*DADDR              ;OTHERWISE CHANGE IT\r
+       \r
+WIPIX  BTST    4,DMACTL\r
+       JREQ    CFLIPX                  ;BR = EITHER FLIPPING X OR NOTHING\r
+       ADDK    8,DADDR\r
+       DEC     B12\r
+       JREQ    ADDOFF                  ;SPECIAL PREDECREMENT, IT DOESN'T\r
+       SUBK    8,SADDR                 ;OCCUR ON THE LAST PIXEL(DMA FUCK)\r
+       JRUC    NPIX\r
+\r
+CFLIPX BTST    5,DMACTL\r
+       JREQ    NORMDW\r
+       ADDK    8,DADDR\r
+       DEC     B12\r
+       JREQ    ADDOFF\r
+       ADDK    8,SADDR\r
+       JRUC    NPIX\r
+\r
+NORMDW ADDK    8,SADDR\r
+       ADDK    8,DADDR\r
+       DSJ     B12,NPIX\r
+\r
+ADDOFF BTST    5,DMACTL\r
+       JREQ    NORMAD\r
+       SUB     SPTCH,SADDR\r
+       JRUC    MVDAD\r
+NORMAD ADD     SPTCH,SADDR\r
+MVDAD  MOVE    B10,DADDR\r
+       ADD     DPTCH,DADDR\r
+       MOVE    DADDR,B10\r
+       DSJ     B11,NLINE\r
+       RETS\r
+\r
+*      GET THE DESTINATION ADDRESS\r
+\r
+GETDADDR:\r
+       MMTM    SP,A14\r
+       CALLR   GETTS\r
+       MOVE    DMAXY,A13\r
+       ADDK    5,A14\r
+       SUBXY   A14,A13\r
+       MOVE    A13,DADDR\r
+       MMFM    SP,A14\r
+       RETS\r
+\r
+*      GET THE SOURCE PITCH(THIS IS ACTUALLY THE OFFSET * 8)\r
+\r
+GETSPTCH:\r
+       MMTM    SP,A14\r
+       CLR     A14\r
+       MOVY    DMACTL,A14      ;GET THE OFFSET\r
+       BTST    5,DMACTL\r
+       JREQ    NOXF\r
+       NEG     A14             ;GET THE POSITIVE NUMBER BACK\r
+       SRL     16,A14          ;SLIDE IT DOWN\r
+       BTST    4,DMACTL\r
+       JRNE    ONLYX           ;DON'T WORRY ABOUT THE Y DIRECTION\r
+       DEC     A14             ;COMPENSATE FOR THE LOFFREDO "CARRY"\r
+ONLYX  SLL     3,A14           ;MULTIPLY BY 8\r
+       JRUC    MVSP\r
+\r
+NOXF   SRL     13,A14          ;SHIFT INTO THE LOW HALF, * 8\r
+MVSP   MOVE    A14,SPTCH       ;AND PUT IT IN THE SOURCE PITCH REG.\r
+       MMFM    SP,A14\r
+       RETS\r
+\r
+*      GET THE TOTAL SIZE;     RETURNS TS IN A14\r
+\r
+GETTS: MMTM    SP,A0,A13\r
+       CLR     A0\r
+       MOVE    DMASIZ,A13      ;A13 -> CURRENT HORIZ. SIZE\r
+       MOVE    DMACTL,A14      ;A14 -> OFFSET\r
+       MOVY    A0,A13\r
+       SRL     16,A14\r
+       BTST    4,DMACTL        ;FLIP ABOUT Y?\r
+       JREQ    XCHK            ;BR = NO\r
+       BTST    5,DMACTL        ;FLIP ABOUT BOTH\r
+       JRNE    DOXY            ;BR = YES\r
+\r
+       INC     A14             ;IN THIS CASE ->   TS = (OF + 1) - HS\r
+       SUB     A13,A14\r
+       JRUC    TSITIS\r
+\r
+XCHK   BTST    5,DMACTL        ;FLIP ABOUT X?\r
+       JREQ    NORMTS          ;BR = NO\r
+       NEG     A14             ;IN THIS CASE ->   TS = -OF + 1 - HS\r
+       MOVY    A0,A14\r
+       INC     A14\r
+       SUB     A13,A14\r
+       JRUC    TSITIS\r
+\r
+DOXY   NEG     A14             ;IN THIS CASE ->   TS = -OF - 1 + HS\r
+       MOVY    A0,A14\r
+       DEC     A14\r
+       ADD     A13,A14\r
+       JRUC    TSITIS\r
+       \r
+NORMTS ADD     A13,A14         ;OTHERWISE ->      TS = OF + HS\r
+TSITIS MMFM    SP,A0,A13\r
+       RETS\r
+\r
+*      DO THE PIXEL OPERATION\r
+*      BIT 0  - DRAW ZERO DATA\r
+*      BIT 1  - DRAW NON-ZERO DATA\r
+*      BIT 2  - DRAW CONSTANT ON ZERO DATA\r
+*      BIT 3  - DRAW CONSTANT ON NON-ZERO DATA\r
+\r
+PIXOP  CMPI    0,B13\r
+       JRNE    NZPIX           ;BR = NON-ZERO DATA\r
+       BTST    0,DMACTL\r
+       JRNE    PIXGO           ;BR = DRAW ZERO DATA\r
+       BTST    2,DMACTL\r
+       JRNE    SUBCON          ;BR = SUBSTITUE THE CONSTANT\r
+       JRUC    POPSET          ;OTHERWISE SET THE CARRY\r
+NZPIX  BTST    1,DMACTL\r
+       JRNE    PIXGO           ;BR = DRAW NON-ZERO DATA\r
+       BTST    3,DMACTL\r
+       JRNE    SUBCON          ;BR = SUBSTITUTE THE CONSTANT\r
+POPSET SETC\r
+       JRUC    PIXD            ;NO SANK YOU FOR DATA TODAY\r
+SUBCON MOVE    DMACON,B13      ;GET THE DMA CONSTANT\r
+       SRL     16,B13          ;SLIDE IT DOWN\r
+PIXGO  CLRC                    ;WRITE THAT DATA\r
+PIXD   RETS\r
+\r
+*      DO A COMPARISON BETWEEN THE DMA AND MY BLOCK CONVERSION.\r
+*      THIS THING WORKS ON MORSEL(4 BYTE) CHUNKS\r
+PIXCOMP:\r
+       MMTM    SP,A0,A6,A8,A9,A10,A11,A12,A13,A14\r
+       MOVE    DMASIZ,A11\r
+       CLR     A10\r
+       MOVX    A11,A10                 ;A10 -> HORIZ. SIZE\r
+****   SRL     2,A10                   ;DIVIDE BY FOUR\r
+       SRL     16,A11                  ;A11 -> VERT. SIZE\r
+       CLR     A0                      ;START AT THE FIRST LINE\r
+NEWLN  MOVE    A10,A6                  ;A6 IS THE HORIZ. COUNTER\r
+       CALLR   INCSCRAD\r
+NXTPIX MOVB    *A14,A9\r
+       MOVB    *A12,A8                 ;GET THE PIXEL DATA\r
+       CMP     A9,A8                   ;COMPARE THEM\r
+       JRNE    PIXFAIL                 ;BR = FAILURE\r
+       ADDK    8,A14\r
+       ADDK    8,A12\r
+       DSJ     A6,NXTPIX               ;DO A NEW PIX\r
+       INC     A0\r
+       CMP     A0,A11                  ;DONE WITH PICTURE?\r
+       JREQ    PIXDONE                 ;BR = YES\r
+       JRUC    NEWLN                   ;DO ANOTHER LINE\r
+\r
+PIXFAIL        DINT\r
+\r
+        MOVI P_MAX, A14\r
+        MOVE A14, @CONTROL\r
+\r
+        MOVI DMA_CHIP, A14, L\r
+        R_XYADR A14, A0\r
+        R_DIMEN A14, A1\r
+        MOVI (RED* 256) + RED, A2\r
+\r
+        FCALL RECTANGLE, B6\r
+        MOVI  100000H,   A14, L\r
+\r
+DISP_RED:\r
+\r
+        FCALL ADV_BUTTON, B6\r
+        JRC   HURRY2\r
+        DSJS  A14, DISP_RED\r
+\r
+HURRY2:\r
+\r
+        CLR  A14\r
+        MOVE A14, @CONTROL\r
+\r
+        MOVE @FRAMEPTR, SP, 1\r
+        RETS\r
+\r
+PIXDONE        MMFM    SP,A0,A6,A8,A9,A10,A11,A12,A13,A14\r
+       RETS                            ;AND RETURN\r
+\r
+*      GET THE SCREEN ADDRESSES OF THE DMA DATA(A14) AND THE\r
+*              TEST BLOCK DATA(A12)\r
+\r
+GETSCRAD:\r
+       CALLR   GETDADDR\r
+       CVXYL   DMAXY,A14               ;A14 -> DMA SCREEN ADDRESS\r
+       CVXYL   A13,A12                 ;A12 -> TEST BLOCK SCREEN ADDRESS\r
+       RETS\r
+\r
+*      SET THE SCREEN ADDRESS TO THE NEXT LINE, A0 -> CURRENT LINE.\r
+\r
+INCSCRAD:\r
+       MMTM    SP,A0\r
+       CALLR   GETSCRAD\r
+NXTLN  CMPI    0,A0\r
+       JREQ    NEWSAD\r
+       ADDI    1000h,A14\r
+       ADDI    1000h,A12               ;NEXT LINE\r
+       DEC     A0\r
+       JRUC    NXTLN\r
+NEWSAD MMFM    SP,A0\r
+       RETS\r
+\r
+*      END OF SCREEN INTERRUPT ROUTINE\r
+\r
+dirq:\r
+       MMTM    SP,A0\r
+\r
+       move            @intpend,A0\r
+       andni   DIE,A0\r
+       move            A0,@intpend\r
+\r
+       MOVB    @EOSCRN,A0\r
+       JREQ    EOI\r
+       DEC     A0\r
+       MOVB    A0,@EOSCRN\r
+EOI:\r
+       MMFM    SP,A0\r
+       reti\r
+\r
+*      WAIT ON THE INTERRUPT TO COUNT DOWN 1 SECOND\r
+\r
+ONEFRAME:\r
+       MMTM    SP,A0\r
+       MOVK    1,A0\r
+       JRUC    BTOEOS\r
+\r
+SPLITSEC:\r
+       MMTM    SP,A0\r
+       MOVK    3,A0\r
+       JRUC    BTOEOS\r
+\r
+ONESEC MMTM    SP,A0\r
+       MOVK    5,A0\r
+BTOEOS MOVB    A0,@EOSCRN\r
+\r
+MORSEC MOVB    @EOSCRN,A0\r
+       JREQ    NOSEC\r
+       JRUC    MORSEC\r
+\r
+NOSEC\r
+       CALLR   CLRINVIS                ;CLEAR BOTTOM PART OF SCREEN\r
+\r
+        FCALL   ADV_BUTTON, B6\r
+        JRC     BREAK\r
+\r
+       MMFM    SP,A0\r
+       RETS\r
+\r
+CLRINVIS\r
+;Clear screen\r
+        MOVI    [400,0], DADDR, L\r
+        MOVI    [100,512], DYDX,  L\r
+\r
+        MOVI    SCRN_PTCH, DPTCH\r
+        LMO     DPTCH, B10\r
+        MOVE    B10, @CONVDP\r
+\r
+        CLR     OFFSET\r
+        CLR     COLOR1\r
+        FILL    XY\r
+       RETS\r
+\r
+*      DTIME - USED TO DMA AN IMAGE\r
+*              A1  - MSW = CONSTANT COLOR;   LSW = ZERO(FOR NOW)\r
+*              A3  - MSW = VERTICAL ADDRESS; LSW = HORIZONTAL ADDRESS\r
+*              A5  - MSW = OFFSET REGISTER;  LSW = CONTROL BYTE\r
+*              A14 - ADDRESS OF IMAGE DATA\r
+\r
+DTIME:\r
+       MMTM    SP,A0,A13,A14\r
+       MOVI    01A800A0h,A13\r
+       CALLR   DMAWT\r
+       MOVE    *A14+,A2,1\r
+DTSNK: MOVE    A14,A4\r
+       MMTM    A13,A1,A2,A3,A4\r
+\r
+       MOVY    A5,A0\r
+       SRL     16,A0\r
+       MOVE    A0,@DMAOFFST,0\r
+       ORI     8000H,A5\r
+       MOVE    A5,@DMAGO\r
+\r
+       MMFM    SP,A0,A13,A14\r
+       RETS\r
+\r
+*      USE THIS ROUTINE IF YOU STUFF THE HSIZE AND VSIZE MANUALLY\r
+\r
+MANDMA:\r
+       MMTM    SP,A0,A13\r
+       MOVI    DMAREGS, A13, L\r
+       CALLR   DMAWT\r
+       MMTM    A13,A1,A2,A3,A4\r
+\r
+       MOVY    A5,A0\r
+       SRL     16,A0\r
+       MOVE    A0,@DMAOFFST\r
+       ORI     8000H, A5\r
+       MOVE    A5, @DMAGO\r
+\r
+       MMFM    SP,A0,A13\r
+       RETS\r
+\r
+*********************************************************\r
+******* WAIT ON THE DMA *********************************\r
+*********************************************************\r
+\r
+DMAWT: MMTM    SP,A0\r
+DMANR: MOVE    @DMAGO,A0\r
+       BTST    15,A0\r
+       JRNZ    DMANR\r
+\r
+       MMFM    SP,A0\r
+       RETS\r
+\r
+\r
+************  CLEAR SCREEN ROUTINE  *********************\r
+\r
+clr_scrn:\r
+       move            @convdp,b12\r
+       MOVE            @DPYCTL,b13,0           ;Copy display control reg.\r
+       mmtm            sp,b13,b12,offset,dptch,color1\r
+       move            b13,a13\r
+       movi            SCRN_PTCH*2,b12         ;Get Screen Pitch\r
+       move            b12,DPTCH\r
+       lmo             b12,b12                         ;Convert in temporary re\r
+       move            b12,@CONVDP             ;Move to CONVDP io register\r
+       clr             COLOR1               ;Set B9 = black\r
+* Clear portion of frame buffer corresponding to scan lines #0 and 1.\r
+        CLR            OFFSET               ;Origin at start of memory\r
+        CLR            DADDR                ;Set B2 = (0,0)\r
+        MOVI   (1024*X)+(1*Y),DYDX     ;Set B7 = (1024,1)\r
+        FILL   XY                              ;Set 1st line to colorval\r
+* Set SRT=1.  This converts pixel accesses to VRAM SR transfer cycles.\r
+        ANDNI    SRE+ENV,a13        ;Turn off screen refresh\r
+        ORI           SRT,a13               ;Enable SR transfers\r
+        MOVE     a13,@DPYCTL,0         ;Load new display control\r
+        MOVE     @DPYCTL,a13,0         ;Read back to be safe!\r
+* Load frame buffer for 1st line into VRAM shift registers.\r
+        CLR              DADDR                 ;Set B2 = (0,0) again\r
+        PIXT     *DADDR.XY,DADDR       ;Load VRAM shift registers\r
+* Transfer contents of VRAM shift registers to rest of frame buffer.\r
+        MOVI     (0*X)+(1*Y),DADDR          ;Set B2 = (0,1)\r
+        MOVI     (4*X)+(255*Y),DYDX    ;Set B7 = (4,255)\r
+        FILL     XY                       ;255 SR-to-memory transfers\r
+* Restore previous contents of registers.\r
+\r
+       mmfm            sp,b13,b12,offset,color1,dptch\r
+       move            b12,@convdp\r
+     MOVE              b13,@DPYCTL,0           ;Copy display control reg.\r
+       rets\r
+\r
+       .end\r
+\r
+\r
+\1a
\ No newline at end of file
diff --git a/DIAG/DMAGSP.INC b/DIAG/DMAGSP.INC
new file mode 100644 (file)
index 0000000..645d2bd
--- /dev/null
@@ -0,0 +1,188 @@
+\r
+*------- Register names for TMS34010 assembly language functions -------\r
+\r
+*-----------------------------------------------------------------------\r
+* Define special A- and B-file registers\r
+*-----------------------------------------------------------------------\r
+* Special A-file registers:\r
+fp     .set    A13             ;Frame, param. stack\r
+pstk   .set    A14             ;Parameter stack pointer\r
+frame_pntr     .set    A14     ;Used by C Compiler\r
+* Special B-file registers:\r
+*\r
+*      B FILE REGISTER GRAPHICS DEFINITIONS\r
+*\r
+saddr  .set    B0\r
+sptch  .set    B1\r
+daddr  .set    B2\r
+dptch  .set    B3\r
+offset .set    B4\r
+wstart .set    B5\r
+wend   .set    B6\r
+dydx   .set    B7\r
+color0 .set    B8\r
+color1 .set    B9\r
+count  .set    B10\r
+inc1   .set    B11\r
+inc2   .set    B12\r
+pattrn .set    B13\r
+*\r
+SADDR  .set    B0              ;Source address register\r
+SPTCH  .set    B1              ;Source pitch register\r
+DADDR  .set    B2              ;Dest. address register\r
+DPTCH  .set    B3              ;Dest. pitch register\r
+OFFSET .set    B4              ;XY offset register\r
+WSTART .set    B5              ;Window start register\r
+WEND   .set    B6              ;Window end register\r
+DYDX   .set    B7              ;Delta X/delta Y register\r
+COLOR0 .set    B8              ;Color 0 register\r
+COLOR1 .set    B9              ;Color 1 register\r
+COUNT  .set    B10\r
+INC1   .set    B11\r
+INC2   .set    B12\r
+PATTRN .set    B13\r
+\r
+*\r
+*INTERRUPT CONSTANTS\r
+HSINT  .SET    200             ;HALF SCREEN\r
+EOSINT .SET    01ABh           ;END OF SCREEN\r
+\r
+*-----------------------------------------------------------------------\r
+* Define names of I/O registers\r
+*-----------------------------------------------------------------------\r
+HESYNC .set    0C0000000h\r
+HEBLNK .set    0C0000010h\r
+HSBLNK .set    0C0000020h\r
+HTOTAL .set    0C0000030h\r
+VESYNC .set    0C0000040h\r
+VEBLNK .set    0C0000050h\r
+VSBLNK .set    0C0000060h\r
+VTOTAL .set    0C0000070h\r
+DPYCTL .set    0C0000080h\r
+DPTSTRT        .set    0C0000090h\r
+DPYINT .set    0C00000A0h\r
+CONTROL        .set    0C00000B0h\r
+HSTDATA        .set    0C00000C0h\r
+HSTADRL        .set    0C00000D0h\r
+HSTADRH        .set    0C00000E0h\r
+HSTCTLL        .set    0C00000F0h\r
+HSTCTLH        .set    0C0000100h\r
+INTENB .set    0C0000110h\r
+INTPEND        .set    0C0000120h\r
+CONVSP .set    0C0000130h\r
+CONVDP .set    0C0000140h\r
+PSIZE  .set    0C0000150h\r
+PMASK  .set    0C0000160h\r
+* I/O register locations 23-27 are reserved for future expansion\r
+HCOUNT .set    0C00001C0h\r
+VCOUNT .set    0C00001D0h\r
+DPYADR .set    0C00001E0h\r
+REFCNT .set    0C00001F0h\r
+*\r
+hesync .set    0C0000000h\r
+heblnk .set    0C0000010h\r
+hsblnk .set    0C0000020h\r
+htotal .set    0C0000030h\r
+vesync .set    0C0000040h\r
+veblnk .set    0C0000050h\r
+vsblnk .set    0C0000060h\r
+vtotal .set    0C0000070h\r
+*      Display and memory control registers\r
+dpyctl .set    0C0000080h\r
+dpystrt        .set    0C0000090h\r
+dpyint .set    0C00000A0h\r
+control        .set    0C00000B0h\r
+*      Host interface registers\r
+hstdata        .set    0C00000C0h\r
+hstadrl        .set    0C00000D0h\r
+hstadrh        .set    0C00000E0h\r
+hstctll        .set    0C00000F0h\r
+hstctlh        .set    0C0000100h\r
+*      Interrupt control registers\r
+intenb .set    0C0000110h\r
+intpend        .set    0C0000120h\r
+*      Graphics I/O registers\r
+convsp .set    0C0000130h\r
+convdp .set    0C0000140h\r
+psize  .set    0C0000150h\r
+pmask  .set    0C0000160h\r
+*\r
+hcount .set    0C00001C0h\r
+vcount .set    0C00001D0h\r
+dpyadr .set    0C00001E0h\r
+refcnt .set    0C00001F0h\r
+\r
+\r
+X      .set    1\r
+Y      .set    010000h\r
+W      .SET    0\r
+L      .set    1\r
+\r
+*-----------------------------------------------------------------------\r
+* Masks for I/O register fields:\r
+*-----------------------------------------------------------------------\r
+\r
+*      DISPLAY CONTROL REGISTER BIT DEFINITIONS\r
+HSD    .set    01h             ; Horizontal Sync Direction\r
+DUDATE .set    0000001111111100B       ; display update (2-9)\r
+ORG    .set    0400h           ; ORiGin (1 = lower left; 0 = upper left)\r
+SRT    .set    0800h           ; Shift Reg Transfer enable\r
+SRE    .set    01000h          ; Screen Refresh Enable\r
+DXV    .set    02000h          ; Disable eXternal Video\r
+NIL    .set    04000h          ; Non-InterLaced video enable\r
+ENV    .set    08000h          ; ENable Video\r
+\r
+*      BIT FIELDS WITHIN CONTROL REGISTER\r
+CD     .set    08000h          ;Mask for Cache Dis bit in CONTROL\r
+PPOP   .set    07C00h          ;Mask for Pix Proc OPer in CONTROL\r
+PBH    .set    0200h           ;Mask for PBH bit in CONTROL\r
+PBV    .set    0100h           ;Mask for PBV bit in CONTROL\r
+WIN    .set    0C0h            ;Mask for Window field in CONTROL\r
+T      .set    020h            ;Mask for Transparency field in CONTROL\r
+RR     .set    018h            ;Mask for dram Refresh Rate bit in CONTROL\r
+RM     .set    04h             ;Mask for dram Refresh Mode bit in CONTROL\r
+\r
+*      BITS WITHIN INTPEND AND INTENB\r
+WVP    .set    0800h           ;Mask for Window Violation in INTPEND\r
+DIE    .set    0400h           ;Mask for Disp Int in INTPEND\r
+HIE    .set    0200h           ;Mask for Host Int in INTPEND\r
+X2E    .set    04h             ;Mask for Ext Int 2 in INTPEND \r
+X1E    .set    02h             ;Mask for Ext Int 1 in INTPEND\r
+\r
+\r
+*      FIELDS WITHIN HSTCTLL\r
+MSGIN  .set    07h     ; Message from Host to GSP\r
+INTIN_MSK      .set    08h     ; GSP can write 0 to this bit (ANDNI)\r
+INTIN_BIT      .set    03h             ; GSP can write 0 to this bit (ANDNI)\r
+INTOUT_MSK .set        080h    ; GSP can write 1 to this bit (ORI)\r
+INTOUT_BIT .set        07h             ; GSP can write 1 to this bit (ORI)\r
+\r
+* OPTIONS FOR WINDOW FIELD IN CONTROL REG\r
+*W0    (ANDNI) No writes inhibited, no interrupt\r
+W3     .set 0C0h       ;inhibit writes outside window, no interrupt\r
+W2     .set    080h    ;Inhibit all writes, Int on attempt to write within window\r
+W1     .set    040h    ;Int on attempt to write outside window.\r
+\r
+*OPTIONS FOR PIXEL PROC OPERATIONS IN CONTROL REG \r
+* PPOP  (ANDNI)        replace\r
+P_AND  .set    0400h\r
+P_ANDNOT       .set    0800h\r
+P_ZERO .set    0C00h\r
+P_ORNOT        .set    01000h\r
+P_XNOR .set    01400h\r
+P_NEG  .set    01800h\r
+P_NOR  .set    01C00h\r
+P_OR   .set    02000h\r
+P_NOP  .set    02400h\r
+P_XOR  .set    02800h\r
+P_NOTAND       .set    02C00h\r
+P_ONES .set    03000h\r
+P_NOTOR        .set    03400h\r
+P_NAND .set    03800h\r
+P_NOT  .set    03C00h\r
+P_ADD  .set    04000h\r
+P_ADDS .set    04400h\r
+P_SUB  .set    04800h\r
+P_SUBS .set    04C00h\r
+P_MAX  .set    05000h\r
+P_MIN  .set    05400h\r
diff --git a/DIAG/DMAMACRO.HDR b/DIAG/DMAMACRO.HDR
new file mode 100644 (file)
index 0000000..161f1b8
--- /dev/null
@@ -0,0 +1,43 @@
+\r
+*------- Macros for TMS34010 assembly language programs ----------------\r
+\r
+* Swap contents of two registers that reside in same file\r
+\r
+SWAP   $MACRO R1,R2\r
+       XOR    :R1.S:,:R2.S:\r
+       XOR    :R2.S:,:R1.S:\r
+       XOR    :R1.S:,:R2.S:\r
+       $END\r
+\r
+* Test a register for zero\r
+TEST   $MACRO R1\r
+       MOVE    :R1.S:,:R1.S:\r
+       $END\r
+\r
+*EQUATES FOR XY COMPARES(MOTOLORA STYLE)\r
+JRXEQ  $MACRO  P1\r
+       JRXZ    P1.S\r
+       $END\r
+JRXNE  $MACRO  P1\r
+       JRXNZ   P1.S\r
+       $END\r
+JRXGE  $MACRO  P1\r
+       JRXNN   P1.S\r
+       $END\r
+JRXLT  $MACRO  P1\r
+       JRXN    P1.S\r
+       $END\r
+JRYEQ  $MACRO  P1\r
+       JRYZ    P1.S\r
+       $END\r
+JRYNE  $MACRO  P1\r
+       JRYNZ   P1.S\r
+       $END\r
+JRYGE  $MACRO  P1\r
+       JRYNN   P1.S\r
+       $END\r
+JRYLT  $MACRO  P1\r
+       JRYN    P1.S\r
+       $END\r
+\1a                                                                                                                                              \r
+\1a
\ No newline at end of file
diff --git a/DIAG/DMASYS.INC b/DIAG/DMASYS.INC
new file mode 100644 (file)
index 0000000..3ccd37d
--- /dev/null
@@ -0,0 +1,93 @@
+\r
+*\r
+*PIXBLT STUFF\r
+*\r
+PXSIZE    .set         8\r
+SCRN_PTCH .set         512*PXSIZE\r
+STACK_ST  .set         0FFFC0000h\r
+OFFSETVAL .set         0\r
+PLANEMSK  .set         0\r
+INI_CTRL  .set         0\r
+\r
+*\r
+*SYSTEM Z MEMORY MAP\r
+*\r
+SCRATCH        .SET    01000000h       ;START OF SCRATCH\r
+STCKST .SET    010FFFF0h       ;TOP OF STACK\r
+SCREEN .SET    00h     ;START OF SCREEN MEMORY\r
+SCRNE  .SET    0200000h        ;END OF SCREEN+1\r
+COLRAM .SET    01800000h       ;COLOR RAM B0-B4 BLU, B5-B9 GRN, B10-B14 RED\r
+ROM    .SET    0FFC00000h      ;PROGRAM ROM\r
+IROM   .SET    02000000h       ;IMAGE ROM\r
+CMAPSEL        .SET    01A80080h       ;COLOR MAP SELECT (0-15)\r
+SWITCH .SET    01C00000h       ;I/O WIDGET BOARD\r
+SOUND  .SET    01C00020h       ;SOUND I/O (B0-B7 = SOUND#), B8=0=RES,B9=0=IRQ\r
+\r
+*\r
+*DMA STUFF\r
+*\r
+DMAREGS:       .equ    01A000A0h       ;BOTTOM OF DMA REGISTERS FOR MMTM\r
+\r
+DMAGO  .SET    01A00000h       ;TRIGGER DMA 01A00000-01A7FFF0 \r
+                               ;1=START DMA (WRITE)\r
+                               ;0=STOP DMA  (WRITE)\r
+                       \r
+                               ;1=DMA BUSY (READ)\r
+                               ;0=DMA IDLE (READ)\r
+\r
+DMACTRL:       .equ    01A00000h       ;DMA CONTROL REGISTER\r
+DMAOFFST:      .equ    01A00010h       ;DMA OFFSET REGISTER\r
+DMASAGL:       .equ    01A00020h       ;DMA DATA STARTING ADDRESS LOW 16 BITS\r
+DMASAGH:       .equ    01A00030h       ;DMA DATA STARTING ADDRESS HIGH 16 BITS\r
+DMAHORIZ:      .equ    01A00040h       ;DMA DESTINATION, X COORDINATE\r
+DMAVERT:       .equ    01A00050h       ;DMA DESTINATION, Y COORDINATE\r
+DMAHSIZE:      .equ    01A00060h       ;DMA DESTINATION, X SIZE        \r
+DMAVSIZE:      .equ    01A00070h       ;DMA DESTINATION, Y SIZE\r
+DMACMAP:       .equ    01A00080h       ;DMA COLOR MAP SELECT\r
+DMACONST:      .equ    01A00090h       ;DMA CONSTANT COLOR SUBSTITUTE\r
+\r
+*BITS FOR THE DMA CONTROL WORD\r
+DMAWZ  .SET    1               ;WRITE ZERO DATA\r
+DMAWNZ .SET    2               ;WRITE NON-ZERO DATA\r
+DMACZ  .SET    4               ;WRITE CONSTANT ON ZERO DATA\r
+DMACNZ .SET    8               ;WRITE CONSTANT ON NON-ZERO DATA\r
+DMAWAL .SET    3               ;WRITE BOTH ZERO & NON-ZERO DATA\r
+DMACAL .SET    0Ch             ;WRITE CONSTANT ON BOTH ZERO & NON-ZERO DATA\r
+\r
+***    REGISTER EQUATES FOR MY DMA ROUTINE\r
+\r
+***                            MSW             LSW\r
+***                            ---             ---\r
+DMACTL .SET    A5  ;           OFFSET          CONTROL\r
+DMASAD .SET    A4  ;           SAG UPPER       SAG LOWER\r
+DMAXY  .SET    A3  ;           Y SCREEN ADDR   X SCREEN ADDR\r
+DMASIZ .SET    A2  ;           VERT. SIZE      HORIZ. SIZE\r
+DMACON .SET    A1  ;           CONSTANT        PALETTE SELECT\r
+\r
+ISIZE: .equ    0\r
+IANIOFF:       .equ    20h\r
+ISAG:  .equ    40h\r
+ICMAP: .equ    60H\r
+ICBOX: .equ    70H\r
+ICBOXSIZ:      .equ    90H\r
+\r
+ZM     .set    1               ;Z MINUS MULTIPLIER\r
+ZP     .set    010000h         ;Z PLUS MULTIPLIER\r
+\r
+\r
+*\r
+*BACKGROUND BOARD STUFF\r
+*\r
+BBHORZ .SET    01C00000h       ;HORIZONTAL SCROLL REGISTER.\r
+BBVERT .SET    01C00010h       ;VERTICAL SCROLL REGISTER.\r
+BBRMAP .SET    01C00020h       ;MAP RAM/ROM ADDRESS.\r
+BBBLOW .SET    01C00040h       ;BLOCK RAM/ROM ADDRESS LOW 16 BITS.\r
+BBBHIG .SET    01C00050h       ;BLOCK RAM/ROM ADDRESS HIGH TWO BITS,\r
+BBPROG .SET    01C00060h       ;WRITING ANYTHING HERE SETS THE BACKGROUND\r
+                               ;BOARD INTO PROGRAM MODE(WRITE TO LATCHES).\r
+BBGO   .SET    01C00070h       ;GO BOARD, GO!\r
+                               ;IT'S AN 18 BIT ADDRESS.\r
+BBMDAT .SET    01C000D0h       ;MAP RAM/ROM DATA.\r
+BBDATL .SET    01C000E0h       ;LOWER 2 PIXELS\r
+BBDATH .SET    01C000F0h       ;HIGH 2 PIXELS (ASSUMING 8 BITS PER)\r
+\1a
\ No newline at end of file
diff --git a/DIAG/LAYOUT.MAC b/DIAG/LAYOUT.MAC
new file mode 100644 (file)
index 0000000..b3783f7
--- /dev/null
@@ -0,0 +1,388 @@
+R_COLR .SET 000H                ; OFFSETS INTO RECTANGLE RECORD\r
+R_DYDX .SET 010H\r
+R_XYAD .SET 030H\r
+R_SIZE .SET 050H\r
+\r
+V_COLR .SET 000H                ; OFFSETS INTO VECTOR RECORD\r
+V_SPNT .SET 010H\r
+V_EPNT .SET 030H\r
+V_SIZE .SET 050H\r
+\r
+P_COLR .SET 000H                ; OFFSETS INTO POINT RECORD\r
+P_XYAD .SET 010H\r
+P_SIZE .SET 030H\r
+\r
+L_COLR .SET 000H                ; OFFSETS INTO LABEL RECORD\r
+L_PATH .SET 010H\r
+L_XYAD .SET 020H\r
+L_NEXT .SET 040H\r
+L_TEXT .SET 060H\r
+\r
+C_COLR .SET 000H                ; OFFSETS INTO CIRCLE RECORD\r
+C_XYAD .SET 020H\r
+C_RADI .SET 040H\r
+C_SIZE .SET 050H\r
+\r
+RIGHT  .SET 00000H              ; PREFEDINED PATH SETTINGS\r
+DOWN   .SET 0FFFFH\r
+\r
+NOFILL .SET 00000H              ; FLAGS FOR CIRCLE FILLS\r
+FILL   .SET 00001H\r
+\r
+;****************************************************************************\r
+;* RECTANGL: MACRO DEFINES A RECTANGLE RECORD.                              *\r
+;*                                                                          *\r
+;*           NAME   -- OPTIONAL RECORD NAME                                 *\r
+;*           COLOR  -- RECTANGLE COLOR (COLOR 0 RESERVED)                   *\r
+;*           LENGTH -- RECTANGLE HEIGHT (Y-DIMENSION)                       *\r
+;*           WIDTH  -- RECTANGLE BASE   (X-DIMENSION)                       *\r
+;*           X      -- SCREEN X COORDINATE                                  *\r
+;*           Y      -- SCREEN Y COORDINATE                                  *\r
+;****************************************************************************\r
+\r
+RECTANGL $MACRO NAME, COLOR, WIDTH, LENGTH, X, Y\r
+\r
+         .SECT  "RECTS"\r
+\r
+         $IF NAME.A & $PCALL\r
+               .GLOBL :NAME:\r
+:NAME::        .WORD (:COLOR: * 256) + :COLOR:\r
+         $ELSE\r
+               .WORD (:COLOR: * 256) + :COLOR:\r
+         $ENDIF\r
+\r
+         .WORD :WIDTH:\r
+         .WORD :LENGTH:\r
+         .WORD :X:\r
+         .WORD :Y:\r
+\r
+         $END\r
+\r
+END_RECT $MACRO \r
+         .SECT "RECTS"\r
+         .WORD 0\r
+         $END\r
+\r
+;****************************************************************************\r
+;* THE FOLLOWING MACROS EXTRACT INDIVIDUAL FIELDS FROM A RECTANGLE RECORD   *\r
+;* AND PLACE THEM IN A REGISTER. THE MACROS ACCEPT AS INPUT ANY REGISTER    *\r
+;* POINTING TO THE BEGINNING OF A RECTANGLE RECORD.                         *\r
+;****************************************************************************\r
+\r
+R_XYADR  $MACRO SRC, DST\r
+         MOVE *:SRC:(R_XYAD), :DST:, 1\r
+         $END\r
+\r
+R_DIMEN  $MACRO SRC, DST\r
+         MOVE *:SRC:(R_DYDX), :DST:, 1\r
+         $END\r
+\r
+R_COLOR  $MACRO SRC, DST\r
+         MOVE *:SRC:(R_COLR), :DST:\r
+         $END\r
+\r
+;****************************************************************************\r
+;* THE FOLLOWING MACRO JUMPS TO "LOCATION" IFF THE NEXT RECTANGLE RECORD IS *\r
+;* NOT EMPTY; OTHERWISE, THE CODE FOLLOWING THE MACRO CALL IS EXECUTED. THE *\r
+;* MACRO ACCEPTS AS INPUT ANY REGISTER POINTING TO THE BEGINNING OF A RECT- *\r
+;* ANGLE RECORD.                                                            *\r
+;*                                                                          *\r
+;* THE STACK IS USED AS A SCRATCH REGISTER AND THE INPUT REGISTER IS ALWAYS *\r
+;* INCREMENTED TO POINT TO THE BEGINNING OF THE NEXT RECORD.                *\r
+;****************************************************************************\r
+\r
+R_END    $MACRO SRC, LOCATION\r
+         ADDI R_SIZE, :SRC:\r
+         MOVE *:SRC:, SP\r
+         JRNZ :LOCATION:\r
+         $END\r
+\r
+        .PAGE\r
+\r
+;****************************************************************************\r
+;* VECTOR: MACRO DEFINES A VECTOR RECORD.                                   *\r
+;*                                                                          *\r
+;*           NAME   -- OPTIONAL RECORD NAME                                 *\r
+;*           COLOR  -- VECTOR COLOR (COLOR 0 RESERVED)                      *\r
+;*           STARTX -- FIRST ENDPOINT  (X-COORDINATE)                       *\r
+;*           STARTY -- FIRST ENDPOINT  (Y-COORDINATE)                       *\r
+;*           ENDX   -- SECOND ENDPOINT (X-COORDINATE)                       *\r
+;*           ENDY   -- SECOND ENDPOINT (Y-COORDINATE)                       *\r
+;****************************************************************************\r
+\r
+VECTOR   $MACRO NAME, COLOR, STARTX, STARTY, ENDX, ENDY\r
+\r
+         .SECT "VECTS"\r
+\r
+         $IF NAME.A & $PCALL\r
+               .GLOBL :NAME:\r
+:NAME::        .WORD (:COLOR: * 256) + :COLOR:\r
+         $ELSE\r
+               .WORD (:COLOR: * 256) + :COLOR:\r
+         $ENDIF\r
+\r
+         .WORD :STARTX:\r
+         .WORD :STARTY:\r
+         .WORD :ENDX:\r
+         .WORD :ENDY:\r
+\r
+         $END\r
+\r
+END_VECT $MACRO \r
+         .SECT "VECTS"\r
+         .WORD 0\r
+         $END\r
+\r
+;****************************************************************************\r
+;* THE FOLLOWING MACROS EXTRACT INDIVIDUAL FIELDS FROM A VECTOR RECORD      *\r
+;* AND PLACE THEM IN A REGISTER. THE MACROS ACCEPT AS INPUT ANY REGISTER    *\r
+;* POINTING TO THE BEGINNING OF A VECTOR RECORD.                            *\r
+;****************************************************************************\r
+\r
+V_SADDR  $MACRO SRC, DST\r
+         MOVE *:SRC:(V_SPNT), :DST:, 1\r
+         $END\r
+\r
+V_EADDR  $MACRO SRC, DST\r
+         MOVE *:SRC:(V_EPNT), :DST:, 1\r
+         $END\r
+\r
+V_COLOR  $MACRO SRC, DST\r
+         MOVE *:SRC:(V_COLR), :DST:\r
+         $END\r
+\r
+;****************************************************************************\r
+;* THE FOLLOWING MACRO JUMPS TO "LOCATION" IFF THE NEXT VECTOR RECORD IS    *\r
+;* NOT EMPTY; OTHERWISE, THE CODE FOLLOWING THE MACRO CALL IS EXECUTED. THE *\r
+;* MACRO ACCEPTS AS INPUT ANY REGISTER POINTING TO THE BEGINNING OF A VECT- *\r
+;* OR RECORD.                                                               *\r
+;*                                                                          *\r
+;* THE STACK IS USED AS A SCRATCH REGISTER AND THE INPUT REGISTER IS ALWAYS *\r
+;* INCREMENTED TO POINT TO THE BEGINNING OF THE NEXT RECORD.                *\r
+;****************************************************************************\r
+\r
+V_END    $MACRO SRC, LOCATION\r
+         ADDI V_SIZE, :SRC:\r
+         MOVE *:SRC:, SP\r
+         JRNZ :LOCATION:\r
+         $END\r
+\r
+        .PAGE\r
+\r
+;****************************************************************************\r
+;* POINT: MACRO DEFINES A POINT RECORD.                                     *\r
+;*                                                                          *\r
+;*           NAME   -- OPTIONAL RECORD NAME                                 *\r
+;*           COLOR  -- POINT COLOR (COLOR 0 RESERVED)                       *\r
+;*           X      -- FIRST ENDPOINT  (X-COORDINATE)                       *\r
+;*           Y      -- FIRST ENDPOINT  (Y-COORDINATE)                       *\r
+;****************************************************************************\r
+\r
+POINT    $MACRO NAME, COLOR, X, Y\r
+\r
+         .SECT "POINTS"\r
+\r
+         $IF NAME.A & $PCALL\r
+               .GLOBL :NAME:\r
+:NAME::        .WORD (:COLOR: * 256) + :COLOR:\r
+         $ELSE\r
+               .WORD (:COLOR: * 256) + :COLOR:\r
+         $ENDIF\r
+\r
+         .WORD :X:\r
+         .WORD :Y:\r
+\r
+         $END\r
+\r
+END_PNT  $MACRO \r
+         .SECT "POINTS"\r
+         .WORD 0\r
+         $END\r
+\r
+;****************************************************************************\r
+;* THE FOLLOWING MACROS EXTRACT INDIVIDUAL FIELDS FROM A POINT RECORD       *\r
+;* AND PLACE THEM IN A REGISTER. THE MACROS ACCEPT AS INPUT ANY REGISTER    *\r
+;* POINTING TO THE BEGINNING OF A POINT RECORD.                             *\r
+;****************************************************************************\r
+\r
+P_XYADR  $MACRO SRC, DST\r
+         MOVE *:SRC:(P_XYAD), :DST:, 1\r
+         $END\r
+\r
+P_COLOR  $MACRO SRC, DST\r
+         MOVE *:SRC:(P_COLR), :DST:\r
+         $END\r
+\r
+;****************************************************************************\r
+;* THE FOLLOWING MACRO JUMPS TO "LOCATION" IFF THE NEXT POINT RECORD IS NOT *\r
+;* EMPTY; OTHERWISE, THE CODE FOLLOWING THE MACRO CALL IS EXECUTED. THE     *\r
+;* MACRO ACCEPTS AS INPUT ANY REGISTER POINTING TO THE BEGINNING OF A POINT *\r
+;* RECORD.                                                                  *\r
+;*                                                                          *\r
+;* THE STACK IS USED AS A SCRATCH REGISTER AND THE INPUT REGISTER IS ALWAYS *\r
+;* INCREMENTED TO POINT TO THE BEGINNING OF THE NEXT RECORD.                *\r
+;****************************************************************************\r
+\r
+P_END    $MACRO SRC, LOCATION\r
+         ADDI P_SIZE, :SRC:\r
+         MOVE *:SRC:, SP\r
+         JRNZ :LOCATION:\r
+         $END\r
+\r
+         .PAGE\r
+\r
+;****************************************************************************\r
+;* LABEL: MACRO DEFINES A LABEL RECORD.                                     *\r
+;*                                                                          *\r
+;*        NAME  -- <<REQUIRED>> RECORD NAME.                                *\r
+;*        COLOR -- LABEL TEXT COLOR (COLOR 0 RESERVED)                      *\r
+;*        X     -- STARTING XY SCREEN ADDRESS (X COORDINATE)                *\r
+;*        Y     -- STARTING XY SCREEN ADDRESS (Y COORDINATE)                *\r
+;*        TEXT  -- QUOTE ENCLOSED LABEL TEXT (LETTERS/DIGITS/SPACES ONLY)   *\r
+;****************************************************************************\r
+\r
+LABEL    $MACRO NAME, COLOR, PATH, X, Y, TEXT\r
+\r
+         .SECT "LABELS"\r
+\r
+         $IF NAME.A & $PCALL\r
+               .GLOBL :NAME:\r
+:NAME::        .WORD (:COLOR: * 256) + :COLOR:\r
+         $ELSE\r
+               .WORD (:COLOR: * 256) + :COLOR:\r
+         $ENDIF\r
+\r
+         .WORD :PATH:\r
+         .WORD :X:\r
+         .WORD :Y:\r
+\r
+         .LONG END?\r
+\r
+         $IF TEXT.A & $PCALL\r
+               .STRING :TEXT:, 0\r
+         $ELSE\r
+               .BYTE 0\r
+         $ENDIF\r
+\r
+         .EVEN\r
+\r
+END?:\r
+\r
+         $END\r
+\r
+END_LABL $MACRO \r
+         .SECT "LABELS"\r
+         .WORD 0\r
+         $END\r
+\r
+;****************************************************************************\r
+;* THE FOLLOWING MACROS EXTRACT INDIVIDUAL FIELDS FROM A LABEL RECORD       *\r
+;* AND PLACE THEM IN A REGISTER. THE MACROS ACCEPT AS INPUT ANY REGISTER    *\r
+;* POINTING TO THE BEGINNING OF A LABEL RECORD.                             *\r
+;****************************************************************************\r
+\r
+L_XYADR $MACRO SRC, DST\r
+        MOVE *:SRC:(L_XYAD), :DST:, 1\r
+        $END\r
+\r
+L_COLOR $MACRO SRC, DST\r
+        MOVE *:SRC:(L_COLR), :DST:\r
+        $END\r
+\r
+L_DIREC $MACRO SRC, DST\r
+        MOVE *:SRC:(L_PATH), :DST:\r
+        $END\r
+\r
+L_TXADR $MACRO SRC, DST\r
+        MOVE  :SRC:, :DST:\r
+        ADDI L_TEXT, :DST:\r
+        $END\r
+\r
+;****************************************************************************\r
+;* THE FOLLOWING MACRO JUMPS TO "LOCATION" IFF THE NEXT LABEL RECORD IS NOT *\r
+;* EMPTY; OTHERWISE, THE CODE FOLLOWING THE MACRO CALL IS EXECUTED. THE     *\r
+;* MACRO ACCEPTS AS INPUT ANY REGISTER POINTING TO THE BEGINNING OF A LABEL *\r
+;* RECORD.                                                                  *\r
+;*                                                                          *\r
+;* THE STACK IS USED AS A SCRATCH REGISTER AND THE INPUT REGISTER IS ALWAYS *\r
+;* CHANGED TO POINT TO THE BEGINNING OF THE NEXT RECORD.                    *\r
+;****************************************************************************\r
+\r
+L_END   $MACRO SRC, LOCATION\r
+        MOVE *:SRC:(L_NEXT), :SRC:, 1\r
+        MOVE *:SRC:, SP\r
+        JRNZ :LOCATION:\r
+        $END\r
+\r
+        .PAGE\r
+\r
+;****************************************************************************\r
+;* CIRCLE: MACRO DEFINES A CIRCLE RECORD.                                   *\r
+;*                                                                          *\r
+;*           NAME   -- OPTIONAL RECORD NAME                                 *\r
+;*           COLOR  -- CIRCLE COLOR (COLOR 0 RESERVED)                      *\r
+;*           FILLV  -- FILL FLAG 0=OUTLINE 1=FILL                           *\r
+;*           X      -- SCREEN X COORDINATE                                  *\r
+;*           Y      -- SCREEN Y COORDINATE                                  *\r
+;*           R      -- CIRCLE RADIUS                                        *\r
+;****************************************************************************\r
+\r
+CIRCLE   $MACRO NAME, COLOR, FILLV, X, Y, R\r
+\r
+         .SECT  "CIRCLES"\r
+\r
+         $IF NAME.A & $PCALL\r
+               .GLOBL :NAME:\r
+:NAME::        .WORD ((:COLOR: * 256) + :COLOR:)\r
+               .WORD :FILLV:\r
+         $ELSE\r
+               .WORD ((:COLOR:* 256) + :COLOR:)\r
+               .WORD :FILLV:\r
+         $ENDIF\r
+\r
+         .WORD :X:\r
+         .WORD :Y:\r
+         .WORD :R:\r
+\r
+         $END\r
+\r
+END_CIRC $MACRO\r
+         .SECT "CIRCLES"\r
+         .WORD 0\r
+         $END\r
+\r
+;****************************************************************************\r
+;* THE FOLLOWING MACROS EXTRACT INDIVIDUAL FIELDS FROM A CIRCLE RECORD      *\r
+;* AND PLACE THEM IN A REGISTER. THE MACROS ACCEPT AS INPUT ANY REGISTER    *\r
+;* POINTING TO THE BEGINNING OF A CIRCLE RECORD.                            *\r
+;****************************************************************************\r
+\r
+C_COLOR $MACRO SRC, DST\r
+        MOVE *:SRC:(C_COLR), :DST:, 1\r
+        $END\r
+\r
+C_XYADR $MACRO SRC, DST\r
+        MOVE *:SRC:(C_XYAD), :DST:, 1\r
+        $END\r
+\r
+C_RDIUS $MACRO SRC, DST\r
+        MOVE *:SRC:(C_RADI), :DST:\r
+        $END\r
+\r
+;****************************************************************************\r
+;* THE FOLLOWING MACRO JUMPS TO "LOCATION" IFF THE NEXT CIRCLE RECORD IS NOT*\r
+;* EMPTY; OTHERWISE, THE CODE FOLLOWING THE MACRO CALL IS EXECUTED. THE     *\r
+;* MACRO ACCEPTS AS INPUT ANY REGISTER POINTING TO THE BEGINNING OF A CIRCLE*\r
+;* RECORD.                                                                  *\r
+;*                                                                          *\r
+;* THE STACK IS USED AS A SCRATCH REGISTER AND THE INPUT REGISTER IS ALWAYS *\r
+;* CHANGED TO POINT TO THE BEGINNING OF THE NEXT RECORD.                    *\r
+;****************************************************************************\r
+\r
+C_END   $MACRO SRC, LOCATION\r
+         ADDI C_SIZE, :SRC:\r
+         MOVE *:SRC:, SP\r
+         JRNZ :LOCATION:\r
+         $END\r
+\r
+\1a
\ No newline at end of file
diff --git a/DIAG/MEMORY.MAC b/DIAG/MEMORY.MAC
new file mode 100644 (file)
index 0000000..daad6c3
--- /dev/null
@@ -0,0 +1,96 @@
+C_WDTH .SET 000H                ; OFFSETS INTO CHIP RECORD\r
+C_ITLV .SET 010H\r
+C_NMBR .SET 020H\r
+C_CKSM .SET 030H\r
+C_SADR .SET 040H\r
+C_EADR .SET 060H\r
+C_LINK .SET 080H\r
+C_SIZE .SET 0A0H\r
+\r
+;****************************************************************************\r
+;* CHIP: MACRO DEFINES A CHIP RECORD.                                       *\r
+;*                                                                          *\r
+;*       CHIP_NO    -- CHIP NUMBER                                          *\r
+;*       WIDTH      -- CHIP CELL SIZE IN BITS (MUST BE > 0)                 *\r
+;*       INTERLEAVE -- DISTANCE BETWEEN ADJACENT CELLS ON CHIP (IN BITS)    *\r
+;*       START_ADDR -- ADDRESS OF FIRST CELL ON CHIP                        *\r
+;*       END_ADDR   -- ADDRESS OF LAST CELL ON CHIP                         *\r
+;*       CHECK_SUM  -- DATAIO CHECK SUM FOR CHIP                            *\r
+;****************************************************************************\r
+\r
+CHIP     $MACRO CHIP_NO, WIDTH, INTERLEAVE, START_ADDR, END_ADDR, CHECK_SUM\r
+\r
+         .SECT  'CHIPS'\r
+\r
+         .WORD  :WIDTH:\r
+         .WORD  :INTERLEAVE:\r
+         .WORD  :CHIP_NO:\r
+         .WORD  :CHECK_SUM:\r
+         .LONG  :START_ADDR:\r
+         .LONG  :END_ADDR:\r
+\r
+         .GLOBL U:CHIP_NO:              ; SYMBOL SHOULD LABEL A RECTANGLE\r
+         .LONG  U:CHIP_NO:              ; RECORD CORRESPONDING TO A CHIP\r
+                                        ; ICON\r
+         $END\r
+\r
+END_CHIP $MACRO\r
+\r
+         .SECT 'CHIPS'\r
+         .WORD  0\r
+\r
+         $END\r
+\r
+        .PAGE\r
+\r
+;****************************************************************************\r
+;* THE FOLLOWING MACROS EXTRACT INDIVIDUAL FIELDS FROM A CHIP RECORD AND    *\r
+;* PLACE THEM IN A REGISTER. THE MACROS ACCEPT AS INPUT ANY REGISTER POINT- *\r
+;* ING TO THE BEGINNING OF A CHIP RECORD.                                   *\r
+;****************************************************************************\r
+\r
+C_SADDR  $MACRO SRC, DST\r
+         MOVE *:SRC:(C_SADR), :DST:, 1\r
+         $END\r
+\r
+C_EADDR  $MACRO SRC, DST\r
+         MOVE *:SRC:(C_EADR), :DST:, 1\r
+         $END\r
+\r
+C_RLINK  $MACRO SRC, DST\r
+         MOVE *:SRC:(C_LINK), :DST:, 1\r
+         $END\r
+\r
+C_NUMBR  $MACRO SRC, DST\r
+         MOVE *:SRC:(C_NMBR), :DST:\r
+         $END\r
+\r
+C_INTLV  $MACRO SRC, DST\r
+         MOVE *:SRC:(C_ITLV), :DST:\r
+         $END\r
+\r
+C_WIDTH  $MACRO SRC, DST\r
+         MOVE *:SRC:(C_WDTH), :DST:\r
+         $END\r
+\r
+C_CHKSM  $MACRO SRC, DST\r
+         MOVE *:SRC:(C_CKSM), :DST:\r
+         $END\r
+\r
+;****************************************************************************\r
+;* THE FOLLOWING MACRO JUMPS TO "LOCATION" IFF THE NEXT CHIP RECORD IS NOT  *\r
+;* EMPTY; OTHERWISE, THE CODE FOLLOWING THE MACRO CALL IS EXECUTED. THE     *\r
+;* MACRO ACCEPTS AS INPUT ANY REGISTER POINTING TO THE BEGINNING OF A CHIP  *\r
+;* RECORD.                                                                  *\r
+;*                                                                          *\r
+;* THE STACK IS USED AS A SCRATCH REGISTER AND THE INPUT REGISTER IS ALWAYS *\r
+;* INCREMENTED TO POINT TO THE BEGINNING OF THE NEXT RECORD.                *\r
+;****************************************************************************\r
+\r
+C_END   $MACRO SRC, LOCATION\r
+        ADDI C_SIZE, :SRC:\r
+        MOVE *:SRC:, SP\r
+        JRNZ :LOCATION:\r
+        $END\r
+\r
+\1a
\ No newline at end of file
diff --git a/DIAG/MISCDATA.ASM b/DIAG/MISCDATA.ASM
new file mode 100644 (file)
index 0000000..ea3db08
--- /dev/null
@@ -0,0 +1,146 @@
+\r
+       .WIDTH  132\r
+       .OPTION B,D,L,T\r
+       .MNOLIST\r
+;****************************************************************************\r
+;* MISCDATA.ASM: MISCELLANEOUS DATA; FILE DEFINES ALL MISCELLANEOUS DATA    *\r
+;*               TABLES.                                                    *\r
+;****************************************************************************\r
+\r
+        .include \VIDEO\GSP.INC\r
+        .include \VIDEO\SYS.INC\r
+\r
+        .include SYSCHECK.SET\r
+        .include SYSCHECK.GBL\r
+\r
+       .INCLUDE LAYOUT.MAC\r
+\r
+        .BSS  SRAM_STRING, 32 * 8, 16\r
+        .BSS  SRAM_TIME,   32 * 8, 16\r
+\r
+        .SECT "MISC"\r
+        .EVEN\r
+\r
+IOREG_TABLE_START:\r
+\r
+         .WORD   001CH                 ; HESYNC\r
+          .WORD   003DH                        ; HEBLNK\r
+         .WORD   013DH                 ; HSBLNK\r
+         .WORD   0150H                 ; HTOTAL\r
+\r
+   .IF INTRLACE\r
+    .WORD   0003H                      ; VESYNC\r
+    .WORD   001BH                      ; VEBLNK\r
+    .WORD   00E3H                      ; VSBLNK\r
+    .WORD   0100H                      ; VTOTAL\r
+    .WORD   0B020H                     ; DPYCTL\r
+   .ELSE\r
+    .WORD   0003H                      ; VESYNC\r
+    .WORD   001BH                      ; VEBLNK\r
+    .WORD   01ABH                      ; VSBLNK\r
+    .WORD   01B0H                      ; VTOTAL\r
+    .WORD   0F010H                     ; DPYCTL\r
+   .ENDIF\r
+\r
+         .WORD   0FFFCH                ; DPYSTRT\r
+         .WORD   01AFH                 ; DPYINT\r
+         .WORD   0000H                 ; CONTROL\r
+         .WORD   0000H                 ; HSTDATA\r
+         .WORD   0000H                 ; HSTADRL\r
+         .WORD   0000H                 ; HSTADRH\r
+         .WORD   0000H                 ; HSTCTLL\r
+         .WORD   0000H                 ; HSTCTLH\r
+         .WORD   0000H                 ; INTENBL\r
+         .WORD   0000H                 ; INTPEND\r
+         .WORD   0000H                 ; CONVSP\r
+         .WORD   0013H                 ; CONVDP\r
+         .WORD   0008H                 ; PSIZE\r
+         .WORD   0000H                 ; PMASK\r
+         .WORD   0000H                 ; RESERVED\r
+         .WORD   0000H                 ; RESERVED\r
+         .WORD   0000H                 ; RESERVED\r
+         .WORD   0000H                 ; RESERVED\r
+         .WORD   0000H                 ; DPYTAP\r
+\r
+IOREG_TABLE_END:\r
+\r
+TRADEMARK_COLORS_START:\r
+\r
+      .word   (  0 *32*32)+(  0 *32)+( 0 )           ; color 0\r
+      .word   (  0 *32*32)+(  0 *32)+( 0 )           ; color 1\r
+      .word   ( 31 *32*32)+( 31 *32)+( 31 )          ; color 2\r
+      .word   (  3 *32*32)+(  2 *32)+( 3 )           ; color 3\r
+      .word   (  3 *32*32)+(  2 *32)+( 4 )           ; color 4\r
+      .word   ( 17 *32*32)+( 19 *32)+( 21 )          ; color 5\r
+      .word   (  8 *32*32)+(  1 *32)+( 1 )           ; color 6\r
+      .word   (  6 *32*32)+(  6 *32)+( 7 )           ; color 7\r
+      .word   ( 10 *32*32)+(  5 *32)+( 7 )           ; color 8\r
+      .word   (  9 *32*32)+( 10 *32)+( 10 )          ; color 9\r
+      .word   ( 13 *32*32)+(  9 *32)+( 10 )          ; color 10\r
+      .word   ( 14 *32*32)+( 14 *32)+( 12 )          ; color 11\r
+      .word   ( 16 *32*32)+( 13 *32)+( 16 )          ; color 12\r
+      .word   ( 25 *32*32)+( 25 *32)+( 25 )          ; color 13\r
+\r
+TRADEMARK_COLORS_END:\r
+\r
+COLOR_TABLE_START:\r
+\r
+          .WORD 0000H                   ; TRANSPARENT\r
+          .WORD 3DD0H                  ; CHIP GRAY\r
+         .WORD 03E0H                   ; GREEN\r
+         .WORD 7C00H                   ; RED\r
+         .WORD 001FH                   ; BLUE\r
+         .WORD 0000H                   ; BLACK\r
+         .WORD 7FFFH                   ; WHITE\r
+         .WORD 7FE0H                   ; YELLOW\r
+         .WORD 7C1FH                   ; PURPLE\r
+         .WORD 03FFH                   ; CYAN\r
+\r
+COLOR_TABLE_END:\r
+\r
+LED_TABLE_START:\r
+\r
+          .WORD 03FCH                   ; 0\r
+          .WORD 9FFCH                   ; 1\r
+          .WORD 25FCH                   ; 2\r
+          .WORD 0DFCH                   ; 3\r
+          .WORD 99FCH                   ; 4\r
+          .WORD 49FCH                   ; 5\r
+          .WORD 41FCH                   ; 6\r
+          .WORD 1FFCH                   ; 7\r
+          .WORD 01FCH                   ; 8\r
+          .WORD 09FCH                   ; 9\r
+\r
+LED_TABLE_END:\r
+\r
+       .SECT   "LABELS"\r
+ROMCOMPL\r
+        LABEL , GREEN, RIGHT, 170, 80, "NO ROM ERRORS DETECTED" \r
+       LABEL , WHITE, RIGHT, 135, 95, "PRESS ANY KEY TO RETURN TO MENU"\r
+        END_LABL\r
+ROMERRL\r
+        LABEL , RED, RIGHT, 180, 80, "ROM ERRORS DETECTED" \r
+       LABEL , WHITE, RIGHT, 135, 95, "PRESS ANY KEY TO RETURN TO MENU"\r
+        END_LABL\r
+RAMCOMPL\r
+        LABEL , GREEN, RIGHT, 265, 28, "NO RAM ERRORS DETECTED" \r
+       LABEL , WHITE, RIGHT, 235, 43, "PRESS ANY KEY TO RETURN TO MENU"\r
+        END_LABL\r
+RAMERRL\r
+        LABEL , RED, RIGHT, 280, 28, "RAM ERRORS DETECTED" \r
+       LABEL , WHITE, RIGHT, 235, 43, "PRESS ANY KEY TO RETURN TO MENU"\r
+        END_LABL\r
+\r
+BROMERRL\r
+        LABEL , RED, RIGHT, 175, 80, "ROM ERRORS DETECTED" \r
+       LABEL , RED, RIGHT, 200, 95, "BURN IN HALTED"\r
+        END_LABL\r
+\r
+BRAMERRL\r
+        LABEL , RED, RIGHT, 250, 28, "RAM ERRORS DETECTED" \r
+       LABEL , RED, RIGHT, 275, 43, "BURN IN HALTED"\r
+        END_LABL\r
+\r
+        .END\r
+\r
+\1a
\ No newline at end of file
diff --git a/DIAG/OGSP.INC b/DIAG/OGSP.INC
new file mode 100644 (file)
index 0000000..4ff3d46
--- /dev/null
@@ -0,0 +1,182 @@
+*------- Register names for TMS34010 assembly language functions -------\r
+\r
+*-----------------------------------------------------------------------\r
+* Define special A- and B-file registers\r
+*-----------------------------------------------------------------------\r
+* Special A-file registers:\r
+fp     .set    A13             ;Frame, param. stack\r
+pstk   .set    A14             ;Parameter stack pointer\r
+frame_pntr     .set    A14     ;Used by C Compiler\r
+*\r
+*      B FILE REGISTER GRAPHICS DEFINITIONS\r
+*\r
+saddr  .set    B0\r
+sptch  .set    B1\r
+daddr  .set    B2\r
+dptch  .set    B3\r
+offset .set    B4\r
+wstart .set    B5\r
+wend   .set    B6\r
+dydx   .set    B7\r
+color0 .set    B8\r
+color1 .set    B9\r
+count  .set    B10\r
+inc1           .set B11\r
+inc2           .set B12\r
+pattrn .set    B13\r
+*\r
+SADDR  .set    B0              ;Source address register\r
+SPTCH  .set    B1              ;Source pitch register\r
+DADDR  .set    B2              ;Dest. address register\r
+DPTCH  .set    B3              ;Dest. pitch register\r
+OFFSET .set    B4              ;XY offset register\r
+WSTART .set    B5              ;Window start register\r
+WEND   .set    B6              ;Window end register\r
+DYDX   .set    B7              ;Delta X/delta Y register\r
+COLOR0 .set    B8              ;Color 0 register\r
+COLOR1 .set    B9              ;Color 1 register\r
+COUNT  .set    B10\r
+INC1           .set B11\r
+INC2           .set B12\r
+PATTRN .set    B13\r
+\r
+*-----------------------------------------------------------------------\r
+* Define names of I/O registers\r
+*-----------------------------------------------------------------------\r
+HESYNC .set    0C0000000h\r
+HEBLNK .set    0C0000010h\r
+HSBLNK .set    0C0000020h\r
+HTOTAL .set    0C0000030h\r
+VESYNC .set    0C0000040h\r
+VEBLNK .set    0C0000050h\r
+VSBLNK .set    0C0000060h\r
+VTOTAL .set    0C0000070h\r
+DPYCTL .set    0C0000080h\r
+DPTSTRT        .set    0C0000090h\r
+DPYINT .set    0C00000A0h\r
+CONTROL        .set    0C00000B0h\r
+HSTDATA        .set    0C00000C0h\r
+HSTADRL        .set    0C00000D0h\r
+HSTADRH        .set    0C00000E0h\r
+HSTCTLL        .set    0C00000F0h\r
+HSTCTLH        .set    0C0000100h\r
+INTENB .set    0C0000110h\r
+INTPEND        .set    0C0000120h\r
+CONVSP .set    0C0000130h\r
+CONVDP .set    0C0000140h\r
+PSIZE  .set    0C0000150h\r
+PMASK  .set    0C0000160h\r
+* I/O register locations 23-27 are reserved for future expansion\r
+DPYTAP .set    0C00001B0h\r
+HCOUNT .set    0C00001C0h\r
+VCOUNT .set    0C00001D0h\r
+DPYADR .set    0C00001E0h\r
+REFCNT .set    0C00001F0h\r
+*\r
+hesync .set    0C0000000h\r
+heblnk .set    0C0000010h\r
+hsblnk .set    0C0000020h\r
+htotal .set    0C0000030h\r
+vesync .set    0C0000040h\r
+veblnk .set    0C0000050h\r
+vsblnk .set    0C0000060h\r
+vtotal .set    0C0000070h\r
+*      Display and memory control registers\r
+dpyctl .set    0C0000080h\r
+dpystrt        .set    0C0000090h\r
+dpyint .set    0C00000A0h\r
+control        .set    0C00000B0h\r
+*      Host interface registers\r
+hstdata        .set    0C00000C0h\r
+hstadrl        .set    0C00000D0h\r
+hstadrh        .set    0C00000E0h\r
+hstctll        .set    0C00000F0h\r
+hstctlh        .set    0C0000100h\r
+*      Interrupt control registers\r
+intenb .set    0C0000110h\r
+intpend        .set    0C0000120h\r
+*      Graphics I/O registers\r
+convsp .set    0C0000130h\r
+convdp .set    0C0000140h\r
+psize  .set    0C0000150h\r
+pmask  .set    0C0000160h\r
+*\r
+hcount .set    0C00001C0h\r
+vcount .set    0C00001D0h\r
+dpyadr .set    0C00001E0h\r
+refcnt .set    0C00001F0h\r
+\r
+\r
+\r
+*-----------------------------------------------------------------------\r
+* Masks for I/O register fields:\r
+*-----------------------------------------------------------------------\r
+\r
+*      DISPLAY CONTROL REGISTER BIT DEFINITIONS\r
+HSD    .set    01h             ; Horizontal Sync Direction\r
+DUDATE .set    0000001111111100B       ; display update (2-9)\r
+ORG    .set    0400h           ; ORiGin (1 = lower left; 0 = upper left)\r
+SRT    .set    0800h           ; Shift Reg Transfer enable\r
+SRE    .set    01000h          ; Screen Refresh Enable\r
+DXV    .set    02000h          ; Disable eXternal Video\r
+NIL    .set    04000h          ; Non-InterLaced video enable\r
+ENV    .set    08000h          ; ENable Video\r
+\r
+*      BIT FIELDS WITHIN CONTROL REGISTER\r
+CD     .set    08000h          ;Mask for Cache Dis bit in CONTROL\r
+PPOP   .set    07C00h          ;Mask for Pix Proc OPer in CONTROL\r
+PBH    .set    0200h           ;Mask for PBH bit in CONTROL\r
+PBV    .set    0100h           ;Mask for PBV bit in CONTROL\r
+WIN    .set    0C0h            ;Mask for Window field in CONTROL\r
+T      .set    020h            ;Mask for Transparency field in CONTROL\r
+RR     .set    018h            ;Mask for dram Refresh Rate bit in CONTROL\r
+RM     .set    04h             ;Mask for dram Refresh Mode bit in CONTROL\r
+\r
+*      BITS WITHIN INTPEND AND INTENB\r
+WVP    .set    0800h           ;Mask for Window Violation in INTPEND\r
+DIE    .set    0400h           ;Mask for Disp Int in INTPEND\r
+HIE    .set    0200h           ;Mask for Host Int in INTPEND\r
+X2E    .set    04h             ;Mask for Ext Int 2 in INTPEND \r
+X1E    .set    02h             ;Mask for Ext Int 1 in INTPEND\r
+B_X1E  .set    1               ; Bit value of ext int 1\r
+\r
+*      FIELDS WITHIN HSTCTLL\r
+MSGIN  .set    07h     ; Message from Host to GSP\r
+INTIN_MSK      .set    08h     ; GSP can write 0 to this bit (ANDNI)\r
+INTIN_BIT      .set    03h             ; GSP can write 0 to this bit (ANDNI)\r
+INTOUT_MSK .set        080h    ; GSP can write 1 to this bit (ORI)\r
+INTOUT_BIT .set        07h             ; GSP can write 1 to this bit (ORI)\r
+\r
+* OPTIONS FOR WINDOW FIELD IN CONTROL REG\r
+*W0    (ANDNI) No writes inhibited, no interrupt\r
+W3     .set 0C0h       ;inhibit writes outside window, no interrupt\r
+W2     .set    080h    ;Inhibit all writes, Int on attempt to write within window\r
+W1     .set    040h    ;Int on attempt to write outside window.\r
+\r
+*OPTIONS FOR PIXEL PROC OPERATIONS IN CONTROL REG \r
+* PPOP  (ANDNI)        replace\r
+P_AND  .set    0400h\r
+P_ANDNOT       .set    0800h\r
+P_ZERO .set    0C00h\r
+P_ORNOT        .set    01000h\r
+P_XNOR .set    01400h\r
+P_NEG  .set    01800h\r
+P_NOR  .set    01C00h\r
+P_OR   .set    02000h\r
+P_NOP  .set    02400h\r
+P_XOR  .set    02800h\r
+P_NOTAND       .set    02C00h\r
+P_ONES .set    03000h\r
+P_NOTOR        .set    03400h\r
+P_NAND .set    03800h\r
+P_NOT  .set    03C00h\r
+P_ADD  .set    04000h\r
+P_ADDS .set    04400h\r
+P_SUB  .set    04800h\r
+P_SUBS .set    04C00h\r
+P_MAX  .set    05000h\r
+P_MIN  .set    05400h\r
+\r
+L      .set    1\r
+W      .set    0\r
+\1a
\ No newline at end of file
diff --git a/DIAG/OSYS.INC b/DIAG/OSYS.INC
new file mode 100644 (file)
index 0000000..41d8221
--- /dev/null
@@ -0,0 +1,68 @@
+       .nolist\r
+\r
+       .globl  SYNC\r
+\r
+PXSIZE    .set         8\r
+SCRN_PTCH .set         512*PXSIZE\r
+SCRN_CONV      .set            13h\r
+STACK_ST  .set         10FFFF0h\r
+RAM_ST .set            1000000h\r
+RAM_LEN        .set            0100000h/32\r
+TAPVALUE       .set            0\r
+OFFSETVAL .set         0\r
+PLANEMSK  .set         0\r
+INI_CTRL  .set         0\r
+SCREEN .SET    00h     ;START OF SCREEN MEMORY\r
+SCRNE  .SET    0200000h        ;END OF SCREEN+1\r
+\r
+SOUND  .SET    01E00000h       ;SOUND I/O (B0-B7 = SOUND#)\r
+                               ;           B8 =  MUSIC STROBE (0 EN)\r
+                               ;           B9 =  SOUND STROBE (0 EN)\r
+                               ;           B10 = RESET (0 EN)\r
+\r
+\r
+CMAPSEL        .set            1a80080h                ; NEW (10/26/87) color map select (0 - F)\r
+COLRAM .set            1800000h\r
+DMAREGS        .set            1a800a0h\r
+\r
+DMACON  .SET            1A00090H\r
+DMAMAP  .SET            1A00080H\r
+DMACMAP:       .equ    01A80080h       ;DMA COLOR MAP SELECT\r
+DMASIZ  .SET            1A00060H\r
+DMADAD  .SET            1A00040H\r
+DMASAD  .SET            1A00020H\r
+DMAOFF  .SET            1A00010H\r
+DMACTL  .SET            1A80000H\r
+\r
+*BITS FOR THE DMA CONTROL WORD\r
+DMAWZ  .SET    1|8000h         ;WRITE ZERO DATA\r
+DMAWNZ .SET    2|8000h         ;WRITE NON-ZERO DATA\r
+DMACZ  .SET    4|8000h         ;WRITE CONSTANT ON ZERO DATA\r
+DMACNZ .SET    8|8000h         ;WRITE CONSTANT ON NON-ZERO DATA\r
+DMAWAL .SET    3|8000h         ;WRITE BOTH ZERO & NON-ZERO DATA\r
+DMACAL .SET    0Ch|8000h       ;WRITE CONSTANT ON BOTH ZERO & NON-ZERO DATA\r
+\r
+;--------------------------------------\r
+ISIZE   .set           0                       ; image table offsets\r
+IANIOFF         .set           20h                     ; animation tool only\r
+ISAG    .set           40h\r
+ICMAP   .set           60h\r
+ITOTSZ  .set           70h\r
+IOBLCK   .set           80h\r
+IHDRSZ   .set           0A0h\r
+;--------------------------------------\r
+\r
+IXCOLLOFF .set         80h\r
+IYCOLLOFF .set         90h\r
+IXBOXSIZ .set          0A0h\r
+IYBOXSIZ .set          0B0h\r
+\r
+EBLNK  .set            1Bh\r
+SBLNK  .set            EBLNK+400\r
+\r
+MIDSCRN        .set            190\r
+HALFINT        .set            EBLNK+MIDSCRN   ; line number for half screen interrupt\r
+BOTMINT        .set            SBLNK           ; line number for bottom of screen int\r
+\r
+\1a                                                                                                                                              \r
+\1a
\ No newline at end of file
diff --git a/DIAG/PATCH.TXT b/DIAG/PATCH.TXT
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/DIAG/RAMCHECK.ASM b/DIAG/RAMCHECK.ASM
new file mode 100644 (file)
index 0000000..b35b51f
--- /dev/null
@@ -0,0 +1,247 @@
+\r
+;****************************************************************************\r
+;* RAMCHECK: MODULE VERIFIES THAT SYSTEM RAMS FUNCTION. RAMCHECK SETS BITS  *\r
+;*           IN B0 THAT INDICATE WHICH CHIPS IN THE CURRENT CHIP TABLE ARE  *\r
+;*           NOT FUNCTIONING. BIT (k) SET INDICATES THAT THE kTH ENTRY IN   *\r
+;*           THE TABLE DID NOT PASS THE RAM TEST.                           *\r
+;*                                                                          *\r
+;* N.B:      ANY CHIP TABLE DEFINING SYSTEM RAM MUST CONTAIN =< 32 ENTRIES. *\r
+;*                                                                          *\r
+;*           ENTRY: A14 = POINTER TO BEGINNING OF RAM CHIP TABLE.           *\r
+;*           USES:  A4 - A14, B0, B1, B6                                    *\r
+;****************************************************************************\r
+\r
+        .TITLE 'RAMCHECK'\r
+       .WIDTH  132\r
+       .OPTION B,D,L,T\r
+       .MNOLIST\r
+\r
+        .include \VIDEO\SYS.INC\r
+        .include \VIDEO\GSP.INC\r
+\r
+        .include SYSCHECK.SET\r
+        .include SYSCHECK.GBL\r
+\r
+        .include UTILITIE.MAC\r
+       .include RAMCHIPS.MAC\r
+        .include LAYOUT.MAC\r
+\r
+        .TEXT                  \r
+        .EVEN\r
+\r
+RAMCHECK:\r
+\r
+        SETF 16, 0, 0\r
+        SETF 32, 0, 1\r
+\r
+        CLR B0                          ; INITIALIZE ERROR REGISTER\r
+        CLR B1                          ; INITIALIZE BITSET MASK\r
+        INC B1\r
+\r
+;       ===============================  \r
+;       | LOAD NEXT CHIP RECORD       |\r
+;       ===============================\r
+\r
+$010:   RAMSADDR A14, A12               ; CHIP STARTING ADDRESS\r
+        RAMEADDR A14, A13               ; CHIP ENDING ADDRESS\r
+        RAMINTLV A14, A11               ; CHIP INTERLEAVE\r
+        RAMWIDTH A14, A10               ; CHIP WIDTH\r
+\r
+;       ===============================  \r
+;       | COMPUTE CELL COUNT          |\r
+;       ===============================\r
+\r
+        SUB  A12, A13                   ; (END-START)/INTERLEAVE+1\r
+        DIVU A11, A13\r
+        INC  A13\r
+\r
+;       ===============================  \r
+;       | SET FIELD SIZES             |\r
+;       ===============================\r
+\r
+        MOVE A11, A9                    ; FS1 = INTERLEAVE\r
+        ANDI ZERO_EXTEND, A9\r
+        EXGF A9, 1\r
+\r
+        MOVE A10, A9                    ; FS0 = WIDTH\r
+        ANDI ZERO_EXTEND, A9\r
+        EXGF A9, 0\r
+\r
+;       ===============================  \r
+;       | FILL: ASCENDING ORDER       |\r
+;       ===============================\r
+\r
+        MOVE A13, A9                    ; XEROX COUNT\r
+        MOVE A12, A8                    ; XEROX START\r
+\r
+        MOVI RANDOM_SEED, A7, L\r
+        CLR  A5\r
+\r
+$020:   SLA  1, A7                      ; GENERATE A PSEUDO\r
+        JRV  $030                       ; RANDOM NUMBER\r
+        ORI  2, A7\r
+$030:   MOVE A7, A6\r
+        ADDC A5, A6\r
+\r
+        MOVE A6, *A8+, 1                ; WRITE\r
+\r
+        DSJS A9, $020\r
+\r
+;       ===============================  \r
+;       | READBACK: ASCENDING ORDER   |\r
+;       ===============================\r
+\r
+        MOVE A13, A9                    ; XEROX COUNT\r
+        MOVE A12, A8                    ; XEROX START\r
+\r
+        MOVI RANDOM_SEED, A7, L\r
+\r
+$040:   SLA  1, A7                      ; GENERATE A PSEUDO\r
+        JRV  $050                       ; RANDOM NUMBER\r
+        ORI  2, A7\r
+$050:   MOVE A7, A6\r
+        ADDC A5, A6\r
+\r
+        MOVE *A8+, A4, 1                ; READ\r
+\r
+        ZEXT  A6\r
+        ZEXT  A4\r
+\r
+        CMP A6, A4\r
+        JRZ $060\r
+\r
+        OR B1, B0                       ; FLAG ERROR\r
+        JRUC $070                       ; BREAK !!\r
+\r
+$060:   DSJS A9, $040\r
+\r
+$070:   SETF 16, 0, 0                   ; RESET FIELDS\r
+        SETF 32, 0, 1\r
+\r
+***        FCALL ADV_BUTTON, B6            ; SAMPLE ADVANCE BUTTON\r
+***        JRC   $071\r
+\r
+        SLL 1H, B1                      ; ADVANCE\r
+        RAMEND A14, $010\r
+\r
+$071    FRET B5\r
+\r
+        .PAGE\r
+\r
+;****************************************************************************\r
+;* VIEWRAMS: MODULE DRAWS THE RAM (CPU) BOARD.                              *\r
+;*                                                                          *\r
+;*           ENTRY: N/A                                                     *\r
+;*           USES:  A0, A1, A2, A3, A14, B6                                 *\r
+;****************************************************************************\r
+\r
+VIEWRAMS:\r
+\r
+        CLR  A0                         ; PPOP = REPLACE\r
+        MOVE A0, @CONTROL\r
+\r
+        CLEARSCR\r
+\r
+;       ==============================\r
+;       | DISPLAY VECTORS            |\r
+;       ==============================\r
+\r
+        MOVI CPUBOARD_VECTS, A14, L\r
+\r
+$100:   V_SADDR A14, A0                 ; LOAD VECTOR PARAMETERS\r
+        V_EADDR A14, A1\r
+        V_COLOR A14, A2\r
+\r
+        FCALL HVLINE, B6\r
+\r
+        V_END A14, $100\r
+\r
+;       ==============================\r
+;       | DISPLAY RECTANGLES         |\r
+;       ==============================\r
+\r
+        MOVI CPUBOARD_RECTS, A14, L\r
+\r
+$200:   R_XYADR A14, A0                 ; LOAD RECTANGLE PARAMETERS\r
+        R_DIMEN A14, A1\r
+        R_COLOR A14, A2\r
+\r
+        FCALL RECTANGLE, B6\r
+\r
+        R_END A14, $200\r
+\r
+;       ==============================\r
+;       | DISPLAY LABELS.            |\r
+;       ==============================\r
+\r
+        MOVK T, A0                      ; PPOP = TRANSPARENCY\r
+        MOVE A0, @CONTROL\r
+\r
+        MOVI CPUBOARD_LABELS, A14, L\r
+\r
+$300:   L_TXADR A14, A0                 ; LOAD LABEL PARAMETERS\r
+        L_XYADR A14, A1\r
+        L_DIREC A14, A2\r
+        L_COLOR A14, A3\r
+\r
+        FCALL STRING, B6\r
+\r
+        L_END A14, $300\r
+\r
+        FRET B5\r
+\r
+        .PAGE\r
+\r
+;****************************************************************************\r
+;* RAMSTATE: RAM STATE; ROUTINE USES THE REGISTER PRODUCED BY RAMCHECK TO   *\r
+;*           LIGHT RAM CHIP ICONS RED OR GREEN.                             *\r
+;*                                                                          *\r
+;*           ENTRY: B0  = "RAMCHECK" RESULT REGISTER                        *\r
+;*                  A14 = POINTER TO BEGINNING OF RAMCHIP TABLE             *\r
+;*           USES:  A0, A1, A2, A12, A13, A14, B1, B6                       *\r
+;****************************************************************************\r
+\r
+RAMSTATE:\r
+       CLR     B1\r
+\r
+        MOVI P_MAX, A0                     ; PIXEL PROCCESING = MAX\r
+        MOVE A0, @CONTROL\r
+\r
+$400:   RAMRLINK A14, A13                  ; LINK TO CHIP ICON\r
+        R_XYADR  A13, A0                   ; XY SCREEN ADDRESS\r
+        R_DIMEN  A13, A1                   ; XY DIMENSIONS\r
+\r
+        BTST 0, B0                         ; BIT(i)=1 -> iTH TABLE ENTRY\r
+        JRNZ $500                          ; FAILED RAM TEST\r
+\r
+        MOVI (GREEN * 256) + GREEN, A2\r
+        FCALL RECTANGLE, B6\r
+\r
+        JRUC $600\r
+\r
+$500:   MOVI (RED * 256) + RED, A2\r
+        FCALL RECTANGLE, B6\r
+\r
+       MOVE    B1,B1\r
+       JRNE    $600\r
+\r
+        RAMNUMBR A14, A0\r
+       INC     B1\r
+        FCALL ERROR_LED, B6\r
+***        JRC $610\r
+\r
+$600:   SRL 1, B0\r
+        RAMEND A14, $400\r
+\r
+$610:   CLR  A14\r
+        MOVE A14, @CONTROL\r
+\r
+        FRET B5\r
+\r
+        .END\r
+\r
+\r
+\r
+\r
+\r
+\1a
\ No newline at end of file
diff --git a/DIAG/RAMCHIPS.ASM b/DIAG/RAMCHIPS.ASM
new file mode 100644 (file)
index 0000000..bc0862a
--- /dev/null
@@ -0,0 +1,89 @@
+\r
+       .WIDTH  132\r
+       .OPTION B,D,L,T\r
+       .MNOLIST\r
+;****************************************************************************\r
+;* RAMCHIPS.ASM: SYSTEM RAMS; FILE DEFINES DEVELOPMENT, SCRATCH, VIDEO, AND *\r
+;*              COLOR RAMS.                                                *\r
+;****************************************************************************\r
+\r
+       .include \VIDEO\GSP.INC\r
+       .include \VIDEO\SYS.INC\r
+\r
+       .include SYSCHECK.SET\r
+       .include SYSCHECK.GBL\r
+\r
+       .include RAMCHIPS.MAC\r
+\r
+        .SECT "CHIPS"\r
+\r
+RAMCHIPS:\r
+\r
+;      COLOR RAMS\r
+\r
+       RAM_CHIP 41, 8, 16, 1800000H, 180FFF0H\r
+       RAM_CHIP 7, 8, 16, 1800008H, 180FFF8H\r
+\r
+;      VIDEO RAMS\r
+\r
+       RAM_CHIP 75, 4, 32, 0000000H, 01FFFE0H\r
+       RAM_CHIP 49, 4, 32, 0000004H, 01FFFE4H\r
+       RAM_CHIP 74, 4, 32, 0000008H, 01FFFE8H\r
+       RAM_CHIP 48, 4, 32, 000000CH, 01FFFECH\r
+\r
+       RAM_CHIP 73, 4, 32, 0000010H, 01FFFF0H\r
+       RAM_CHIP 47, 4, 32, 0000014H, 01FFFF4H\r
+       RAM_CHIP 72, 4, 32, 0000018H, 01FFFF8H\r
+       RAM_CHIP 46, 4, 32, 000001CH, 01FFFFCH\r
+\r
+;      SCRATCH RAMS\r
+\r
+       RAM_CHIP 63, 4, 16, 1000000H, 10FFFF0H\r
+       RAM_CHIP 62, 4, 16, 1000004H, 10FFFF4H\r
+       RAM_CHIP 61, 4, 16, 1000008H, 10FFFF8H\r
+       RAM_CHIP 60, 4, 16, 100000CH, 10FFFFCH\r
+\r
+       END_CHIP\r
+\r
+PALCHIPS:\r
+\r
+;      VIDEO PALETTE RAMS\r
+\r
+       RAM_CHIP 71, 4, 32, 0000000H, 01FFFE0H\r
+        RAM_CHIP 45, 4, 32, 0000004H, 01FFFE4H\r
+       RAM_CHIP 70, 4, 32, 0000008H, 01FFFE8H\r
+       RAM_CHIP 44, 4, 32, 000000CH, 01FFFECH\r
+\r
+       RAM_CHIP 69, 4, 32, 0000010H, 01FFFF0H\r
+       RAM_CHIP 43, 4, 32, 0000014H, 01FFFF4H\r
+       RAM_CHIP 68, 4, 32, 0000018H, 01FFFF8H\r
+       RAM_CHIP 42, 4, 32, 000001CH, 01FFFFCH\r
+\r
+       END_CHIP\r
+\r
+;      CMOS RAM\r
+\r
+CMOSCHIPS:\r
+\r
+;       RAM_CHIP 65, 8, 16, 1400000H, 1400018H  ; CHECKSUM STORED HERE\r
+;      RAM_CHIP 65, 8, 16, 1400020H, 1403FF8H  ; CMOS FIELD VALUES\r
+        END_CHIP\r
+\r
+       .END\r
+\r
+;      DEVELOPMENT RAMS\r
+\r
+        .SECT "CHIPS"\r
+\r
+IRAMS1:\r
+\r
+       END_CHIP\r
+\r
+        .SECT "RAM_CHIPS"\r
+\r
+IRAMS2:\r
+\r
+       END_CHIP\r
+\r
+       .END\r
+\1a
\ No newline at end of file
diff --git a/DIAG/RAMCHIPS.MAC b/DIAG/RAMCHIPS.MAC
new file mode 100644 (file)
index 0000000..ce12797
--- /dev/null
@@ -0,0 +1,95 @@
+RAM_WDTH .SET 000H                ; OFFSETS INTO RAM CHIP RECORD\r
+RAM_ITLV .SET 010H\r
+RAM_NMBR .SET 020H\r
+RAM_SADR .SET 030H\r
+RAM_EADR .SET 050H\r
+RAM_LINK .SET 070H\r
+RAM_SIZE .SET 090H\r
+\r
+;****************************************************************************\r
+;* RAM_CHIP: MACRO DEFINES A RAM CHIP RECORD.                               *\r
+;*                                                                          *\r
+;*       CHIP_NO    -- CHIP NUMBER                                          *\r
+;*       WIDTH      -- CHIP CELL SIZE IN BITS (MUST BE > 0)                 *\r
+;*       INTERLEAVE -- DISTANCE BETWEEN ADJACENT CELLS ON CHIP (IN BITS)    *\r
+;*       START_ADDR -- ADDRESS OF FIRST CELL ON CHIP                        *\r
+;*       END_ADDR   -- ADDRESS OF LAST CELL ON CHIP                         *\r
+;*       CHECK_SUM  -- DATAIO CHECK SUM FOR CHIP                            *\r
+;****************************************************************************\r
+\r
+RAM_CHIP $MACRO CHIP_NO, WIDTH, INTERLEAVE, START_ADDR, END_ADDR           \r
+\r
+         .SECT  "CHIPS"\r
+\r
+         .WORD  :WIDTH:\r
+         .WORD  :INTERLEAVE:\r
+         .WORD  :CHIP_NO:H                ; BCD CHIP NUMBER.\r
+         .LONG  :START_ADDR:\r
+         .LONG  :END_ADDR:\r
+\r
+         .GLOBL RAM:CHIP_NO:              ; SYMBOL SHOULD LABEL A RECTANGLE\r
+         .LONG  RAM:CHIP_NO:              ; RECORD CORRESPONDING TO A RAM\r
+                                          ; CHIP ICON\r
+\r
+         $END\r
+\r
+;****************************************************************************\r
+;* THE FOLLOWING MACRO MARKS THE END OF ANY RAM CHIP TABLE.                 *\r
+;****************************************************************************\r
+\r
+END_CHIP $MACRO\r
+\r
+         .SECT  "CHIPS"\r
+         .WORD  0\r
+\r
+         $END\r
+\r
+        .PAGE\r
+\r
+;****************************************************************************\r
+;* THE FOLLOWING MACROS EXTRACT INDIVIDUAL FIELDS FROM A CHIP RECORD AND    *\r
+;* PLACE THEM IN A REGISTER. THE MACROS ACCEPT AS INPUT ANY REGISTER POINT- *\r
+;* ING TO THE BEGINNING OF A CHIP RECORD.                                   *\r
+;****************************************************************************\r
+\r
+RAMSADDR $MACRO SRC, DST\r
+         MOVE *:SRC:(RAM_SADR), :DST:, 1\r
+         $END\r
+\r
+RAMEADDR $MACRO SRC, DST\r
+         MOVE *:SRC:(RAM_EADR), :DST:, 1\r
+         $END\r
+\r
+RAMRLINK $MACRO SRC, DST\r
+         MOVE *:SRC:(RAM_LINK), :DST:, 1\r
+         $END\r
+\r
+RAMNUMBR $MACRO SRC, DST\r
+         MOVE *:SRC:(RAM_NMBR), :DST:\r
+         $END\r
+\r
+RAMINTLV $MACRO SRC, DST\r
+         MOVE *:SRC:(RAM_ITLV), :DST:\r
+         $END\r
+\r
+RAMWIDTH $MACRO SRC, DST\r
+         MOVE *:SRC:(RAM_WDTH), :DST:\r
+         $END\r
+\r
+;****************************************************************************\r
+;* THE FOLLOWING MACRO JUMPS TO "LOCATION" IFF THE NEXT CHIP RECORD IS NOT  *\r
+;* EMPTY; OTHERWISE, THE CODE FOLLOWING THE MACRO CALL IS EXECUTED. THE     *\r
+;* MACRO ACCEPTS AS INPUT ANY REGISTER POINTING TO THE BEGINNING OF A CHIP  *\r
+;* RECORD.                                                                  *\r
+;*                                                                          *\r
+;* THE STACK IS USED AS A SCRATCH REGISTER AND THE INPUT REGISTER IS ALWAYS *\r
+;* INCREMENTED TO POINT TO THE BEGINNING OF THE NEXT RECORD.                *\r
+;****************************************************************************\r
+\r
+RAMEND  $MACRO SRC, LOCATION\r
+        ADDI RAM_SIZE, :SRC:\r
+        MOVE *:SRC:, SP\r
+        JRNZ :LOCATION:\r
+        $END\r
+\r
+\1a
\ No newline at end of file
diff --git a/DIAG/REDIAG.BAT b/DIAG/REDIAG.BAT
new file mode 100644 (file)
index 0000000..d4bd962
--- /dev/null
@@ -0,0 +1,5 @@
+SYSTEM "GASML200 ROMCHECK RAMCHECK TVMCHECK CTLCHECK DMACHECK"\r
+SYSTEM "GASML200 UTILITIE"\r
+SYSTEM "GLNK SYSCHECK"\r
+\r
+\1a
\ No newline at end of file
diff --git a/DIAG/ROMBOARD.ASM b/DIAG/ROMBOARD.ASM
new file mode 100644 (file)
index 0000000..da46c1a
--- /dev/null
@@ -0,0 +1,259 @@
+\r
+       .WIDTH  132\r
+       .OPTION B,D,L,T\r
+       .MNOLIST\r
+;****************************************************************************\r
+;* ROMBOARD.ASM: FILE DEFINES THE ROM BOARD SCHEMATIC.                      *\r
+;****************************************************************************\r
+\r
+        .include \VIDEO\GSP.INC\r
+        .include \VIDEO\SYS.INC\r
+\r
+        .include SYSCHECK.SET\r
+        .include SYSCHECK.GBL\r
+\r
+        .include LAYOUT.MAC\r
+\r
+        .SECT "RECTS"\r
+ROMBOARD_RECTS:\r
+        .SECT "VECTS"\r
+ROMBOARD_VECTS:\r
+        .SECT "LABELS"\r
+ROMBOARD_LABELS:\r
+\r
+PROMX   .SET 5\r
+PROMY   .SET 129\r
+\r
+PLBLX   .SET PROMX + 8\r
+PLBLY   .SET PROMY + 8\r
+\r
+IROMX   .SET 63\r
+IROMY   .SET 129\r
+\r
+ILBLX   .SET IROMX + 7\r
+ILBLY   .SET IROMY + 8\r
+\r
+;       PERIMETER FOR ROM BOARD\r
+\r
+        LABEL , YELLOW, RIGHT, 350, 110, "5771-12322-00 REV -" \r
+\r
+        VECTOR , WHITE,   0, 390, 510, 390\r
+        VECTOR , WHITE, 510, 390, 510,  70\r
+        VECTOR , WHITE, 510,  70,   0,  70\r
+        VECTOR , WHITE,   0,  70,   0, 390\r
+\r
+;       BOARD CONNECTORS\r
+\r
+        LABEL ,  BLACK, RIGHT, 310,  48, "CONNECTOR P2"\r
+\r
+        RECTANGL , WHITE, 200,  8, 290, 38\r
+        RECTANGL , WHITE, 180, 32, 300, 38\r
+\r
+        LABEL ,  BLACK, RIGHT,  40,  48, "CONNECTOR P1"\r
+\r
+        RECTANGL , WHITE, 200,  8,  20, 38\r
+        RECTANGL , WHITE, 180, 32,  30, 38\r
+\r
+;       PROGRAM ROMS\r
+\r
+        LABEL , BLACK, DOWN,    PLBLX, PLBLY, "U23"\r
+        LABEL , BLACK, DOWN, PLBLX+27, PLBLY, "U24"\r
+\r
+        RECTANGL ROM23, GRAY, 22, 56,    PROMX, PROMY\r
+        RECTANGL ROM24, GRAY, 22, 56, PROMX+28, PROMY\r
+\r
+        LABEL , BLACK, DOWN,    PLBLX, PLBLY+64, "U41"\r
+        LABEL , BLACK, DOWN, PLBLX+27, PLBLY+64, "U42"\r
+\r
+        RECTANGL ROM41, GRAY, 22, 56,    PROMX, PROMY+64\r
+        RECTANGL ROM42, GRAY, 22, 56, PROMX+28, PROMY+64\r
+\r
+        LABEL , BLACK, DOWN,    PLBLX, PLBLY+128, "U59"\r
+        LABEL , BLACK, DOWN, PLBLX+27, PLBLY+128, "U60"\r
+\r
+        RECTANGL ROM59, GRAY, 22, 56,    PROMX, PROMY+128\r
+        RECTANGL ROM60, GRAY, 22, 56, PROMX+28, PROMY+128\r
+\r
+        LABEL , BLACK, DOWN,    PLBLX, PLBLY+192, "U77"\r
+        LABEL , BLACK, DOWN, PLBLX+27, PLBLY+192, "U78"\r
+\r
+        RECTANGL ROM77, GRAY, 22, 56,    PROMX, PROMY+192\r
+        RECTANGL ROM78, GRAY, 22, 56, PROMX+28, PROMY+192\r
+\r
+;       IMAGE ROM CHIP NUMBERS.\r
+\r
+        LABEL , BLACK, DOWN,   ILBLX, ILBLY, "U25"\r
+        LABEL , BLACK, DOWN, ILBLX+28, ILBLY, "U26"\r
+        LABEL , BLACK, DOWN, ILBLX+56, ILBLY, "U27"\r
+        LABEL , BLACK, DOWN, ILBLX+84, ILBLY, "U28"\r
+\r
+        LABEL , BLACK, DOWN, ILBLX+112, ILBLY, "U29"\r
+        LABEL , BLACK, DOWN, ILBLX+140, ILBLY, "U30"\r
+        LABEL , BLACK, DOWN, ILBLX+168, ILBLY, "U31"\r
+        LABEL , BLACK, DOWN, ILBLX+196, ILBLY, "U32"\r
+\r
+        LABEL , BLACK, DOWN, ILBLX+224, ILBLY, "U33"\r
+        LABEL , BLACK, DOWN, ILBLX+252, ILBLY, "U34"\r
+        LABEL , BLACK, DOWN, ILBLX+280, ILBLY, "U35"\r
+        LABEL , BLACK, DOWN, ILBLX+308, ILBLY, "U36"\r
+\r
+        LABEL , BLACK, DOWN, ILBLX+336, ILBLY, "U37"\r
+        LABEL , BLACK, DOWN, ILBLX+364, ILBLY, "U38"\r
+        LABEL , BLACK, DOWN, ILBLX+392, ILBLY, "U39"\r
+        LABEL , BLACK, DOWN, ILBLX+420, ILBLY, "U40"\r
+\r
+\r
+        LABEL , BLACK, DOWN,   ILBLX, ILBLY+64, "U43"\r
+        LABEL , BLACK, DOWN, ILBLX+28, ILBLY+64, "U44"\r
+        LABEL , BLACK, DOWN, ILBLX+56, ILBLY+64, "U45"\r
+        LABEL , BLACK, DOWN, ILBLX+84, ILBLY+64, "U46"\r
+\r
+        LABEL , BLACK, DOWN, ILBLX+112,        ILBLY+64, "U47"\r
+        LABEL , BLACK, DOWN, ILBLX+140,        ILBLY+64, "U48"\r
+        LABEL , BLACK, DOWN, ILBLX+168,        ILBLY+64, "U49"\r
+        LABEL , BLACK, DOWN, ILBLX+196,        ILBLY+64, "U50"\r
+\r
+        LABEL , BLACK, DOWN, ILBLX+224, ILBLY+64, "U51"\r
+        LABEL , BLACK, DOWN, ILBLX+252, ILBLY+64, "U52"\r
+        LABEL , BLACK, DOWN, ILBLX+280, ILBLY+64, "U53"\r
+        LABEL , BLACK, DOWN, ILBLX+308, ILBLY+64, "U54"\r
+\r
+        LABEL , BLACK, DOWN, ILBLX+336, ILBLY+64, "U55"\r
+        LABEL , BLACK, DOWN, ILBLX+364, ILBLY+64, "U56"\r
+        LABEL , BLACK, DOWN, ILBLX+392, ILBLY+64, "U57"\r
+        LABEL , BLACK, DOWN, ILBLX+420, ILBLY+64, "U58"\r
+\r
+\r
+        LABEL , BLACK, DOWN,   ILBLX, ILBLY+128, "U61"\r
+        LABEL , BLACK, DOWN, ILBLX+28, ILBLY+128, "U62"\r
+        LABEL , BLACK, DOWN, ILBLX+56, ILBLY+128, "U63"\r
+        LABEL , BLACK, DOWN, ILBLX+84, ILBLY+128, "U64"\r
+\r
+        LABEL , BLACK, DOWN, ILBLX+112,        ILBLY+128, "U65"\r
+        LABEL , BLACK, DOWN, ILBLX+140,        ILBLY+128, "U66"\r
+        LABEL , BLACK, DOWN, ILBLX+168,        ILBLY+128, "U67"\r
+        LABEL , BLACK, DOWN, ILBLX+196,        ILBLY+128, "U68"\r
+\r
+        LABEL , BLACK, DOWN, ILBLX+224, ILBLY+128, "U69"\r
+        LABEL , BLACK, DOWN, ILBLX+252, ILBLY+128, "U70"\r
+        LABEL , BLACK, DOWN, ILBLX+280, ILBLY+128, "U71"\r
+        LABEL , BLACK, DOWN, ILBLX+308, ILBLY+128, "U72"\r
+\r
+        LABEL , BLACK, DOWN, ILBLX+336, ILBLY+128, "U73"\r
+        LABEL , BLACK, DOWN, ILBLX+364, ILBLY+128, "U74"\r
+        LABEL , BLACK, DOWN, ILBLX+392, ILBLY+128, "U75"\r
+        LABEL , BLACK, DOWN, ILBLX+420, ILBLY+128, "U76"\r
+\r
+\r
+        LABEL , BLACK, DOWN,   ILBLX, ILBLY+192, "U79"\r
+        LABEL , BLACK, DOWN, ILBLX+28, ILBLY+192, "U80"\r
+        LABEL , BLACK, DOWN, ILBLX+56, ILBLY+192, "U81"\r
+        LABEL , BLACK, DOWN, ILBLX+84, ILBLY+192, "U82"\r
+\r
+        LABEL , BLACK, DOWN, ILBLX+112, ILBLY+192, "U83"\r
+        LABEL , BLACK, DOWN, ILBLX+140, ILBLY+192, "U84"\r
+        LABEL , BLACK, DOWN, ILBLX+168, ILBLY+192, "U85"\r
+        LABEL , BLACK, DOWN, ILBLX+196, ILBLY+192, "U86"\r
+\r
+        LABEL , BLACK, DOWN, ILBLX+224, ILBLY+192, "U87"\r
+        LABEL , BLACK, DOWN, ILBLX+252, ILBLY+192, "U88"\r
+        LABEL , BLACK, DOWN, ILBLX+280, ILBLY+192, "U89"\r
+        LABEL , BLACK, DOWN, ILBLX+308, ILBLY+192, "U90"\r
+\r
+        LABEL , BLACK, DOWN, ILBLX+336, ILBLY+192, "U91"\r
+        LABEL , BLACK, DOWN, ILBLX+364, ILBLY+192, "U92"\r
+        LABEL , BLACK, DOWN, ILBLX+392, ILBLY+192, "U93"\r
+        LABEL , BLACK, DOWN, ILBLX+420, ILBLY+192, "U94"\r
+\r
+;       IMAGE ROMS\r
+\r
+        RECTANGL ROM25, GRAY, 22, 56,    IROMX, IROMY\r
+        RECTANGL ROM26, GRAY, 22, 56, IROMX+28, IROMY\r
+        RECTANGL ROM27, GRAY, 22, 56, IROMX+56, IROMY\r
+        RECTANGL ROM28, GRAY, 22, 56, IROMX+84, IROMY\r
+\r
+        RECTANGL ROM29, GRAY, 22, 56, IROMX+112, IROMY\r
+        RECTANGL ROM30, GRAY, 22, 56, IROMX+140, IROMY\r
+        RECTANGL ROM31, GRAY, 22, 56, IROMX+168, IROMY\r
+        RECTANGL ROM32, GRAY, 22, 56, IROMX+196, IROMY\r
+\r
+        RECTANGL ROM33, GRAY, 22, 56, IROMX+224, IROMY\r
+        RECTANGL ROM34, GRAY, 22, 56, IROMX+252, IROMY\r
+        RECTANGL ROM35, GRAY, 22, 56, IROMX+280, IROMY\r
+        RECTANGL ROM36, GRAY, 22, 56, IROMX+308, IROMY\r
+\r
+        RECTANGL ROM37, GRAY, 22, 56, IROMX+336, IROMY\r
+        RECTANGL ROM38, GRAY, 22, 56, IROMX+364, IROMY\r
+        RECTANGL ROM39, GRAY, 22, 56, IROMX+392, IROMY\r
+        RECTANGL ROM40, GRAY, 22, 56, IROMX+420, IROMY\r
+\r
+\r
+        RECTANGL ROM43, GRAY, 22, 56,    IROMX, IROMY+64\r
+        RECTANGL ROM44, GRAY, 22, 56, IROMX+28, IROMY+64\r
+        RECTANGL ROM45, GRAY, 22, 56, IROMX+56, IROMY+64\r
+        RECTANGL ROM46, GRAY, 22, 56, IROMX+84, IROMY+64\r
+\r
+        RECTANGL ROM47, GRAY, 22, 56, IROMX+112, IROMY+64\r
+        RECTANGL ROM48, GRAY, 22, 56, IROMX+140, IROMY+64\r
+        RECTANGL ROM49, GRAY, 22, 56, IROMX+168, IROMY+64\r
+        RECTANGL ROM50, GRAY, 22, 56, IROMX+196, IROMY+64\r
+\r
+        RECTANGL ROM51, GRAY, 22, 56, IROMX+224, IROMY+64\r
+        RECTANGL ROM52, GRAY, 22, 56, IROMX+252, IROMY+64\r
+        RECTANGL ROM53, GRAY, 22, 56, IROMX+280, IROMY+64\r
+        RECTANGL ROM54, GRAY, 22, 56, IROMX+308, IROMY+64\r
+\r
+        RECTANGL ROM55, GRAY, 22, 56, IROMX+336, IROMY+64\r
+        RECTANGL ROM56, GRAY, 22, 56, IROMX+364, IROMY+64\r
+        RECTANGL ROM57, GRAY, 22, 56, IROMX+392, IROMY+64\r
+        RECTANGL ROM58, GRAY, 22, 56, IROMX+420, IROMY+64\r
+\r
+\r
+        RECTANGL ROM61, GRAY, 22, 56,    IROMX, IROMY+128\r
+        RECTANGL ROM62, GRAY, 22, 56, IROMX+28, IROMY+128\r
+        RECTANGL ROM63, GRAY, 22, 56, IROMX+56, IROMY+128\r
+        RECTANGL ROM64, GRAY, 22, 56, IROMX+84, IROMY+128\r
+\r
+        RECTANGL ROM65, GRAY, 22, 56, IROMX+112, IROMY+128\r
+        RECTANGL ROM66, GRAY, 22, 56, IROMX+140, IROMY+128\r
+        RECTANGL ROM67, GRAY, 22, 56, IROMX+168, IROMY+128\r
+        RECTANGL ROM68, GRAY, 22, 56, IROMX+196, IROMY+128\r
+\r
+        RECTANGL ROM69, GRAY, 22, 56, IROMX+224, IROMY+128\r
+        RECTANGL ROM70, GRAY, 22, 56, IROMX+252, IROMY+128\r
+        RECTANGL ROM71, GRAY, 22, 56, IROMX+280, IROMY+128\r
+        RECTANGL ROM72, GRAY, 22, 56, IROMX+308, IROMY+128\r
+\r
+        RECTANGL ROM73, GRAY, 22, 56, IROMX+336, IROMY+128\r
+        RECTANGL ROM74, GRAY, 22, 56, IROMX+364, IROMY+128\r
+        RECTANGL ROM75, GRAY, 22, 56, IROMX+392, IROMY+128\r
+        RECTANGL ROM76, GRAY, 22, 56, IROMX+420, IROMY+128\r
+\r
+\r
+        RECTANGL ROM79, GRAY, 22, 56,    IROMX, IROMY+192\r
+        RECTANGL ROM80, GRAY, 22, 56, IROMX+28, IROMY+192\r
+        RECTANGL ROM81, GRAY, 22, 56, IROMX+56, IROMY+192\r
+        RECTANGL ROM82, GRAY, 22, 56, IROMX+84, IROMY+192\r
+\r
+        RECTANGL ROM83, GRAY, 22, 56, IROMX+112, IROMY+192\r
+        RECTANGL ROM84, GRAY, 22, 56, IROMX+140, IROMY+192\r
+        RECTANGL ROM85, GRAY, 22, 56, IROMX+168, IROMY+192\r
+        RECTANGL ROM86, GRAY, 22, 56, IROMX+196, IROMY+192\r
+\r
+        RECTANGL ROM87, GRAY, 22, 56, IROMX+224, IROMY+192\r
+        RECTANGL ROM88, GRAY, 22, 56, IROMX+252, IROMY+192\r
+        RECTANGL ROM89, GRAY, 22, 56, IROMX+280, IROMY+192\r
+        RECTANGL ROM90, GRAY, 22, 56, IROMX+308, IROMY+192\r
+\r
+        RECTANGL ROM91, GRAY, 22, 56, IROMX+336, IROMY+192\r
+        RECTANGL ROM92, GRAY, 22, 56, IROMX+364, IROMY+192\r
+        RECTANGL ROM93, GRAY, 22, 56, IROMX+392, IROMY+192\r
+        RECTANGL ROM94, GRAY, 22, 56, IROMX+420, IROMY+192\r
+\r
+        END_RECT\r
+        END_VECT\r
+        END_LABL\r
+\r
+        .END\r
+\r
+\1a
\ No newline at end of file
diff --git a/DIAG/ROMCHECK.ASM b/DIAG/ROMCHECK.ASM
new file mode 100644 (file)
index 0000000..eff455c
--- /dev/null
@@ -0,0 +1,318 @@
+\r
+;****************************************************************************\r
+;* ROMCHECK.ASM: ROM CHECK; MODULE VERIFIES THAT ALL SYSTEM ROMS FUNCTION.  *\r
+;****************************************************************************\r
+\r
+        .TITLE 'ROMCHECK'\r
+       .WIDTH  132\r
+       .OPTION B,D,L,T\r
+       .MNOLIST\r
+\r
+        .include \VIDEO\GSP.INC\r
+        .include \VIDEO\SYS.INC\r
+\r
+        .include SYSCHECK.SET\r
+        .include SYSCHECK.GBL\r
+\r
+        .include UTILITIE.MAC\r
+        .include ROMCHIPS.MAC\r
+        .include LAYOUT.MAC\r
+\r
+        .TEXT\r
+        .EVEN\r
+\r
+ONE_BIT_OK     EQU     0       ;THIS SAYS 1 BIT ERROR OK IN IMAGE ROMS!\r
+\r
+*\r
+*THESE EQUATES ASSUME THAT THE DESTINATION ADDRESS IS ALL THE WAY TO THE\r
+* LEFT.\r
+ROMSIZE        .EQU    (512*1024)*4\r
+**********************************************\r
+*NOTE: IF YOU CHANGE RAMWIDTH, YOU MUST CHANGE LOGWIDTH TO AGREE\r
+*      ALSO, KEEP RAMWIDTH A POWER OF 2, AND ONLY DECREASE IT VALUE BECAUSE\r
+*      THE DMA CAN ONLY DO 511 PIXELS WIDE.\r
+**********************************************\r
+RAMWIDTH .EQU  256*8\r
+LOGWIDTH .EQU  11      \r
+**********************************************\r
+RAMHEIGHT .EQU 64\r
+RAMAREA        .EQU    RAMWIDTH*RAMHEIGHT\r
+ROMBLOCKS .EQU ROMSIZE/RAMAREA \r
+RAMSTARTY .EQU 400\r
+RAMDMAY        .EQU    RAMSTARTY\r
+RAMDMAX        .EQU    0\r
+RAMMEM_PTR .EQU        RAMSTARTY*1000H\r
+RAMMEM_END .EQU        RAMMEM_PTR+(RAMHEIGHT*1000H)\r
+*\r
+*RETURNS B0 <> 0 IF AN ERROR WAS FOUND\r
+ROMCHECK:\r
+       CLR     B0\r
+        SETF 16, 0, 0\r
+        SETF 32, 0, 1\r
+\r
+        MOVI P_MAX, A0                     ; PIXEL PROCESSING = MAX \r
+        MOVE A0, @CONTROL\r
+\r
+;       ==================================\r
+;       | LOAD NEXT CHIP RECORD.         |\r
+;       ==================================\r
+\r
+$010:   ROMCHKSM A14, A13                  ; DATAIO CHECK SUM: ASSUME EMPTY\r
+        JRZ $040                           ; SOCKET IFF CHECKSUM = ZERO\r
+\r
+        ROMSADDR A14, A12                  ; CHIP STARTING ADDRESS\r
+        ROMEADDR A14, A11                  ; CHIP ENDING ADDRESS\r
+        ROMINTLV A14, A10                  ; CHIP INTERLEAVE\r
+        ROMWIDTH A14, A9                   ; CHIP WIDTH\r
\r
+       CMPI    32,A10\r
+       JRNE    PROG_ROM\r
+\r
+*      \r
+*HERE COMES THE BRANE DAMIJ\r
+       MOVE    A12,A11\r
+       SLL     27,A11\r
+       SRL     27,A11                  ;A11 = FLAVOR FOR DESTINATION\r
+\r
+       SRL     5,A12                   ;A12 = DMA SAG\r
+       SLL     5,A12                   ;STRIP THE FLAVOR FOR THE DMA SAG\r
+       \r
+       CLR     A8                      ;ZERO RUNNING CHECKSUM\r
+       MOVI    ROMBLOCKS,A9            ;ITERATION COUNT\r
+IMGROMLP\r
+       MOVE    A12,@DMASAD,L\r
+       MOVI    [RAMHEIGHT,RAMWIDTH/8],A7\r
+       MOVE    A7,@DMASIZ,L\r
+               MOVI    [RAMDMAY,RAMDMAX],A7\r
+       MOVE    A7,@DMADAD,L\r
+       CLR     A7\r
+       MOVE    A7,@DMAOFF,W\r
+       MOVE    A7,@DMACON,W\r
+       MOVE    A7,@DMAMAP,W\r
+;      MOVI    DMAWAL,A7,W                 ;***LED\r
+       MOVI    DMAWAL,A7                   ;***LED\r
+       MOVE    A7,@DMACTL,W\r
+DMAWAIT\r
+       MOVE    @DMACTL,A7,W\r
+       BTST    15,A7\r
+       JRNE    DMAWAIT\r
+*\r
+*NOW LET'S ADD THEM UP\r
+       \r
+       MOVI    RAMMEM_PTR,A10\r
+       ADD     A11,A10                 ;ADD FLAVOR\r
+IMGCKLP\r
+       MOVB    *A10,A7                 ;LARRY SAYS: "WE ONLY DO BYTES."\r
+       SLL     24,A7\r
+       SRL     24,A7\r
+       ADD     A7,A8\r
+       ADDK    32,A10\r
+       BTST    LOGWIDTH,A10\r
+       JRZ     IMGCKLP\r
+       ADDI    (512*8)-RAMWIDTH,A10\r
+       CMPI    RAMMEM_END,A10  \r
+       JRLO    IMGCKLP\r
+\r
+       ADDI    RAMAREA,A12\r
+       DSJ     A9,IMGROMLP\r
+       JRUC    CMPCKSUM                ;SEE WHAT WE'VE ACCOMPLISHED\r
+*\r
+*CHECK IT WITH THE CPU IT'S READABLE\r
+PROG_ROM\r
+;       =================================\r
+;       | SET FIELD WIDTHS.             |\r
+;       =================================\r
+\r
+        MOVE A10, A0                       ; FS1 = INTERLEAVE\r
+        ANDI ZERO_EXTEND, A0\r
+        EXGF A0, 1\r
+\r
+        MOVE A9, A0                        ; FS0 = WIDTH\r
+        ANDI ZERO_EXTEND, A0\r
+        EXGF A0, 0\r
+\r
+;       =================================\r
+;       | COMPUTE CELL COUNT FOR CHIP   |\r
+;       =================================\r
+\r
+        SUB  A12, A11                      ; (END - START) / INTERLEAVE + 1\r
+        DIVU A10, A11\r
+        INC  A11\r
+\r
+;      =================================\r
+;      | COMPUTE DATAIO CHECKSUM       |\r
+;      =================================\r
+\r
+        CLR  A8                           ; A8 = COMPUTED CHECKSUM\r
+\r
+$020:   MOVE *A12+, A7, 1\r
+        ZEXT  A7\r
+        ADD   A7, A8\r
+        DSJS  A11, $020\r
+\r
+CMPCKSUM\r
+        SETF 32, 0, 1                      ; DATAIO WIDTH = DEFAULT FS0\r
+        SETF 16, 0, 0                      ; WIDTH\r
+        ZEXT A8\r
+\r
+;       =================================\r
+;       | LOAD ICON PARAMETERS.         |\r
+;       =================================\r
+\r
+        ROMRLINK A14, A12                  ; LINK TO CHIP ICON\r
+        R_XYADR  A12, A0                   ; XY SCREEN ADDRESS\r
+        R_DIMEN  A12, A1                   ; XY DIMENSIONS\r
+\r
+        CMP  A13, A8\r
+        JRNZ $030\r
+\r
+PRETEND_CKSUMS_ARE_OK:                    ;**** LED\r
+        MOVK  GREEN, A2                    ; GREEN: CHIP PASSES TEST\r
+        SLL  PXSIZE, A2\r
+        ADDK  GREEN, A2\r
+\r
+        FCALL RECTANGLE, B6\r
+\r
+        JRUC $040\r
+*\r
+*      CONTROL COMES HERE WHEN ROM CHECKSUMS DON'T MATCH!\r
+*\r
+$030: \r
+*************************************************\r
+*************************************************\r
+******\r
+******    BEGIN CONDITIONAL CODE TO LET SINGLE BITS 0->1 CHANGE\r
+******     THROUGH!\r
+******\r
+*************************************************\r
+*************************************************\r
+*\r
+*      A8 = THE CALCULATION\r
+*      A13 = WHAT WE WANT TO GET\r
+*\r
+       .IF     ONE_BIT_OK\r
+       CMPI    IMAGE_ROMS,A14                  ;ARE WE INTO THE IMAGE AREA?\r
+       JRLO    STILL_IN_P_ROMS\r
+*\r
+*      WE'RE IN IMAGE ROMS!!! LETS LET A BIT GO BY HERE \r
+*      AND THERE!\r
+*\r
+       SUB     A13,A8                          ;OURS MUST BE LARGER\r
+       CMPI    255,A8                          ;SUM MUST BE 255 OR LESS LARGER\r
+       JRHI    GIVE_ROM_ERROR                  ;IT AINT 1 BIT!\r
+*\r
+*      NOW...WE HAVE A NON ZERO NUMBER 1-255 IN A8....IF ITS\r
+*      A SINGLE BIT, WE'LL LET IT GO.\r
+*\r
+KEEP_SHIFTING\r
+       SRL     1,A8                            ;SHIFT TILL CARRY IS SET\r
+       JRNC    KEEP_SHIFTING\r
+\r
+       JRNZ    GIVE_ROM_ERROR                  ;BIT IN CARRY AND REG...BYE     \r
+*\r
+*      NOW SEE IF SWITCH IS PRESSED TO OVERRIDE OUR GRACES!\r
+*\r
+       MOVE    @SWITCH_REGISTER_1,A8,1    ;DON'T WORRY..FIELDS ARE SET!\r
+       BTST    24,A8                      ;PLAYER ONE START PRESSED\r
+       JRNZ    PRETEND_CKSUMS_ARE_OK      ;NO....PRETEND ITS GOOD!     \r
+\r
+STILL_IN_P_ROMS\r
+GIVE_ROM_ERROR\r
+       .ENDIF\r
+\r
+*************************************************\r
+*************************************************\r
+******\r
+******    END CONDITIONAL CODE TO LET SINGLE BITS 0->1 CHANGE\r
+******     THROUGH!\r
+******\r
+*************************************************\r
+*************************************************\r
+\r
+*\r
+*      CONTROL COMES HERE WHEN THERE IS A ROM ERROR THAT\r
+*      WILL BE DISPLAYED\r
+*\r
+        MOVK    RED, A2                    ; RED: PANIC\r
+        SLL  PXSIZE, A2\r
+        ADDK    RED, A2\r
+\r
+        FCALL RECTANGLE, B6\r
+\r
+       MOVE    B0,B0\r
+       JRNE    $040\r
+       INC     B0\r
+        ROMNUMBR A14, A0\r
+        FCALL ERROR_LED, B6\r
+****        JRC $041\r
+\r
+$040:   ROMEND A14, $010\r
+\r
+$041:   CLR  A14                            ; RESET PPOP\r
+        MOVE A14, @CONTROL\r
+\r
+        FRET B5\r
+\r
+;****************************************************************************\r
+;* VIEWROMS: MODULE DRAWS THE ROM BOARD.                                    *\r
+;****************************************************************************\r
+\r
+VIEWROMS:\r
+\r
+        CLR  A0                         ; PPOP = REPLACE\r
+        MOVE A0, @CONTROL\r
+\r
+        CLEARSCR\r
+\r
+;       ==============================\r
+;       | DISPLAY VECTORS            |\r
+;       ==============================\r
+\r
+        MOVI ROMBOARD_VECTS, A14, L\r
+\r
+$100:   V_SADDR A14, A0                 ; LOAD VECTOR PARAMETERS\r
+        V_EADDR A14, A1\r
+        V_COLOR A14, A2\r
+\r
+        FCALL HVLINE, B6\r
+\r
+        V_END A14, $100\r
+\r
+;       ==============================\r
+;       | DISPLAY RECTANGLES         |\r
+;       ==============================\r
+\r
+        MOVI ROMBOARD_RECTS, A14, L\r
+\r
+$200:   R_XYADR A14, A0                 ; LOAD RECTANGLE PARAMETERS\r
+        R_DIMEN A14, A1\r
+        R_COLOR A14, A2\r
+\r
+        FCALL RECTANGLE, B6\r
+\r
+        R_END A14, $200\r
+\r
+;       ==============================\r
+;       | DISPLAY LABELS.            |\r
+;       ==============================\r
+\r
+        MOVK T, A0                      ; PPOP = TRANSPARENCY\r
+        MOVE A0, @CONTROL\r
+\r
+        MOVI ROMBOARD_LABELS, A14, L\r
+\r
+$300:   L_TXADR A14, A0                 ; LOAD LABEL PARAMETERS\r
+        L_XYADR A14, A1\r
+        L_DIREC A14, A2\r
+        L_COLOR A14, A3\r
+\r
+        FCALL STRING, B6\r
+\r
+        L_END A14, $300\r
+\r
+        FRET B5\r
+\r
+         .END\r
+\r
+\r
+\1a
\ No newline at end of file
diff --git a/DIAG/ROMCHIPS.ASM b/DIAG/ROMCHIPS.ASM
new file mode 100644 (file)
index 0000000..4fd9b68
--- /dev/null
@@ -0,0 +1,237 @@
+\r
+       .WIDTH  132\r
+       .OPTION B,D,L,T\r
+       .MNOLIST\r
+;****************************************************************************\r
+;* ROMCHIPS.ASM: SYSTEM ROMS; FILE DEFINES ALL PROGRAM AND IMAGE ROMS       *\r
+;****************************************************************************\r
+\r
+        .include \VIDEO\GSP.INC\r
+        .include \VIDEO\SYS.INC\r
+\r
+        .include SYSCHECK.SET\r
+        .include SYSCHECK.GBL\r
+\r
+        .include ROMCHIPS.MAC\r
+\r
+        .SECT "CHIPS"\r
+        .EVEN\r
+\r
+ROMCHIPS:\r
+\r
+;       PROGRAM ROMS\r
+\r
+      .IF ROM512\r
+\r
+*\r
+*THIS IS THE TABLE FOR 512K BIT PROMS\r
+*\r
+        ROM_CHIP 78, 8, 16, 0FF900000H, 0FF9FFFF0H, 0582CH\r
+        ROM_CHIP 60, 8, 16, 0FF900008H, 0FF9FFFF8H, 0B76DH\r
+\r
+        ROM_CHIP 77, 8, 16, 0FFA00000H, 0FFAFFFF0H, 0E448H\r
+        ROM_CHIP 59, 8, 16, 0FFA00008H, 0FFAFFFF8H, 070BCH\r
+\r
+        ROM_CHIP 42, 8, 16, 0FFD00000H, 0FFDFFFF0H, 0AD6FH\r
+        ROM_CHIP 24, 8, 16, 0FFD00008H, 0FFDFFFF8H, 0087BH\r
+\r
+        ROM_CHIP 41, 8, 16, 0FFE00000H, 0FFEFFFF0H, 0D396H\r
+        ROM_CHIP 23, 8, 16, 0FFE00008H, 0FFEFFFF8H, 079BCH\r
+\r
+      .ELSE    \r
+*\r
+*THIS IS THE TABLE FOR 1 MEGABIT PROMS\r
+*\r
+        ROM_CHIP 78, 8, 16, 0FF900000H, 0FF9FFFF0H, 00000H\r
+        ROM_CHIP 60, 8, 16, 0FF900008H, 0FF9FFFF8H, 00000H\r
+\r
+        ROM_CHIP 77, 8, 16, 0FFA00000H, 0FFAFFFF0H, 00000H\r
+        ROM_CHIP 59, 8, 16, 0FFA00008H, 0FFAFFFF8H, 00000H\r
+\r
+        ROM_CHIP 42, 8, 16, 0FFC00000H, 0FFDFFFF0H, 02675H\r
+        ROM_CHIP 24, 8, 16, 0FFC00008H, 0FFDFFFF8H, 051B9H\r
+\r
+        ROM_CHIP 41, 8, 16, 0FFE00000H, 0FFFFFFF0H, 06F71H\r
+        ROM_CHIP 23, 8, 16, 0FFE00008H, 0FFFFFFF8H, 09682H\r
+\r
+      .ENDIF   \r
+;       IMAGE ROMS\r
+\r
+       .IF INTRLACE\r
+\r
+IMAGE_ROMS:                     ;***** LED CHANGE\r
+        ROM_CHIP 94, 8, 32, 02000000H, 021FFFE0H, 04CFBH\r
+        ROM_CHIP 76, 8, 32, 02000008H, 021FFFE8H, 01FB3H\r
+        ROM_CHIP 58, 8, 32, 02000010H, 021FFFF0H, 0E817H\r
+        ROM_CHIP 40, 8, 32, 02000018H, 021FFFF8H, 0CAEDH\r
+\r
+        ROM_CHIP 93, 8, 32, 02200000H, 023FFFE0H, 092F7H ;***REAL ONE\r
+*        ROM_CHIP 93, 8, 32, 02200000H, 023FFFE0H, 0A1F8H  ;LED PHONEY ONE\r
+        ROM_CHIP 75, 8, 32, 02200008H, 023FFFE8H, 0293FH\r
+        ROM_CHIP 57, 8, 32, 02200010H, 023FFFF0H, 0D5F7H\r
+        ROM_CHIP 39, 8, 32, 02200018H, 023FFFF8H, 0E364H\r
+\r
+        ROM_CHIP 92, 8, 32, 02400000H, 025FFFE0H, 07F47H\r
+        ROM_CHIP 74, 8, 32, 02400008H, 025FFFE8H, 0465CH\r
+        ROM_CHIP 56, 8, 32, 02400010H, 025FFFF0H, 045B8H\r
+        ROM_CHIP 38, 8, 32, 02400018H, 025FFFF8H, 028F3H\r
+\r
+        ROM_CHIP 91, 8, 32, 02600000H, 027FFFE0H, 0B754H\r
+        ROM_CHIP 73, 8, 32, 02600008H, 027FFFE8H, 0F030H\r
+        ROM_CHIP 55, 8, 32, 02600010H, 027FFFF0H, 0FB1DH\r
+        ROM_CHIP 37, 8, 32, 02600018H, 027FFFF8H, 0CBEEH\r
+\r
+       ROM_CHIP 90, 8, 32, 02800000H, 029FFFE0H, 0A2E4H\r
+       ROM_CHIP 72, 8, 32, 02800008H, 029FFFE8H, 0ECF2H\r
+       ROM_CHIP 54, 8, 32, 02800010H, 029FFFF0H, 040BEH\r
+       ROM_CHIP 36, 8, 32, 02800018H, 029FFFF8H, 0B6C4H\r
+\r
+       ROM_CHIP 89, 8, 32, 02A00000H, 02BFFFE0H, 0D7F1H\r
+       ROM_CHIP 71, 8, 32, 02A00008H, 02BFFFE8H, 0C162H\r
+       ROM_CHIP 53, 8, 32, 02A00010H, 02BFFFF0H, 09B11H\r
+       ROM_CHIP 35, 8, 32, 02A00018H, 02BFFFF8H, 09677H\r
+\r
+       ROM_CHIP 88, 8, 32, 02C00000H, 02DFFFE0H, 06C5CH\r
+       ROM_CHIP 70, 8, 32, 02C00008H, 02DFFFE8H, 057BDH\r
+       ROM_CHIP 52, 8, 32, 02C00010H, 02DFFFF0H, 06D2EH\r
+       ROM_CHIP 34, 8, 32, 02C00018H, 02DFFFF8H, 039F6H\r
+\r
+       ROM_CHIP 87, 8, 32, 02E00000H, 02FFFFE0H, 0A110H\r
+       ROM_CHIP 69, 8, 32, 02E00008H, 02FFFFE8H, 0D0E6H\r
+       ROM_CHIP 51, 8, 32, 02E00010H, 02FFFFF0H, 0F077H\r
+       ROM_CHIP 33, 8, 32, 02E00018H, 02FFFFF8H, 0A152H\r
+\r
+       ROM_CHIP 86, 8, 32, 03000000H, 031FFFE0H, 03553H\r
+       ROM_CHIP 68, 8, 32, 03000008H, 031FFFE8H, 030A2H\r
+       ROM_CHIP 50, 8, 32, 03000010H, 031FFFF0H, 0EDF7H\r
+       ROM_CHIP 32, 8, 32, 03000018H, 031FFFF8H, 092DEH\r
+\r
+       ROM_CHIP 85, 8, 32, 03200000H, 033FFFE0H, 02F00H\r
+       ROM_CHIP 67, 8, 32, 03200008H, 033FFFE8H, 0BDCFH\r
+       ROM_CHIP 49, 8, 32, 03200010H, 033FFFF0H, 0C939H\r
+       ROM_CHIP 31, 8, 32, 03200018H, 033FFFF8H, 03D8CH\r
+\r
+       ROM_CHIP 84, 8, 32, 03400000H, 035FFFE0H, 05086H\r
+       ROM_CHIP 66, 8, 32, 03400008H, 035FFFE8H, 028B1H\r
+       ROM_CHIP 48, 8, 32, 03400010H, 035FFFF0H, 06741H\r
+       ROM_CHIP 30, 8, 32, 03400018H, 035FFFF8H, 06C06H\r
+\r
+       ROM_CHIP 83, 8, 32, 03600000H, 037FFFE0H, 021CDH\r
+       ROM_CHIP 65, 8, 32, 03600008H, 037FFFE8H, 01DBAH\r
+       ROM_CHIP 47, 8, 32, 03600010H, 037FFFF0H, 010B1H\r
+       ROM_CHIP 29, 8, 32, 03600018H, 037FFFF8H, 0E0A6H\r
+\r
+       ROM_CHIP 82, 8, 32, 03800000H, 039FFFE0H, 0BD5FH\r
+       ROM_CHIP 64, 8, 32, 03800008H, 039FFFE8H, 04D06H\r
+       ROM_CHIP 46, 8, 32, 03800010H, 039FFFF0H, 068DCH\r
+       ROM_CHIP 28, 8, 32, 03800018H, 039FFFF8H, 0113EH\r
+\r
+       ROM_CHIP 81, 8, 32, 03A00000H, 03BFFFE0H, 0DBE4H\r
+       ROM_CHIP 63, 8, 32, 03A00008H, 03BFFFE8H, 0D1FFH\r
+       ROM_CHIP 45, 8, 32, 03A00010H, 03BFFFF0H, 04F85H\r
+       ROM_CHIP 27, 8, 32, 03A00018H, 03BFFFF8H, 04081H\r
+\r
+       ROM_CHIP 80, 8, 32, 03C00000H, 03DFFFE0H, 02997H\r
+       ROM_CHIP 62, 8, 32, 03C00008H, 03DFFFE8H, 07B81H\r
+       ROM_CHIP 44, 8, 32, 03C00010H, 03DFFFF0H, 0149DH\r
+       ROM_CHIP 26, 8, 32, 03C00018H, 03DFFFF8H, 00E8BH\r
+\r
+       ROM_CHIP 79, 8, 32, 03E00000H, 03FFFFE0H, 00000H\r
+       ROM_CHIP 61, 8, 32, 03E00008H, 03FFFFE8H, 00000H\r
+       ROM_CHIP 43, 8, 32, 03E00010H, 03FFFFF0H, 00000H\r
+       ROM_CHIP 25, 8, 32, 03E00018H, 03FFFFF8H, 00000H\r
+\r
+\r
+       .ELSE\r
+IMAGE_ROMS:                     ;***** LED CHANGE\r
+        ROM_CHIP 94, 8, 32, 02000000H, 021FFFE0H, 0B0CCH\r
+        ROM_CHIP 76, 8, 32, 02000008H, 021FFFE8H, 07AEFH\r
+        ROM_CHIP 58, 8, 32, 02000010H, 021FFFF0H, 04549H\r
+        ROM_CHIP 40, 8, 32, 02000018H, 021FFFF8H, 02EA7H\r
+\r
+        ROM_CHIP 93, 8, 32, 02200000H, 023FFFE0H, 0A1FAH ;***REAL ONE\r
+*        ROM_CHIP 93, 8, 32, 02200000H, 023FFFE0H, 0A1F8H  ;LED PHONEY ONE\r
+        ROM_CHIP 75, 8, 32, 02200008H, 023FFFE8H, 039CEH\r
+        ROM_CHIP 57, 8, 32, 02200010H, 023FFFF0H, 0E47DH\r
+        ROM_CHIP 39, 8, 32, 02200018H, 023FFFF8H, 0EEF8H\r
+\r
+        ROM_CHIP 92, 8, 32, 02400000H, 025FFFE0H, 09C46H\r
+        ROM_CHIP 74, 8, 32, 02400008H, 025FFFE8H, 06374H\r
+        ROM_CHIP 56, 8, 32, 02400010H, 025FFFF0H, 062E5H\r
+        ROM_CHIP 38, 8, 32, 02400018H, 025FFFF8H, 047CAH\r
+\r
+        ROM_CHIP 91, 8, 32, 02600000H, 027FFFE0H, 0B754H\r
+        ROM_CHIP 73, 8, 32, 02600008H, 027FFFE8H, 0F030H\r
+        ROM_CHIP 55, 8, 32, 02600010H, 027FFFF0H, 0FB1DH\r
+        ROM_CHIP 37, 8, 32, 02600018H, 027FFFF8H, 0CBEEH\r
+\r
+       ROM_CHIP 90, 8, 32, 02800000H, 029FFFE0H, 0A2E4H\r
+       ROM_CHIP 72, 8, 32, 02800008H, 029FFFE8H, 0ECF2H\r
+       ROM_CHIP 54, 8, 32, 02800010H, 029FFFF0H, 040BEH\r
+       ROM_CHIP 36, 8, 32, 02800018H, 029FFFF8H, 0B6C4H\r
+\r
+       ROM_CHIP 89, 8, 32, 02A00000H, 02BFFFE0H, 0D7F1H\r
+       ROM_CHIP 71, 8, 32, 02A00008H, 02BFFFE8H, 0C162H\r
+       ROM_CHIP 53, 8, 32, 02A00010H, 02BFFFF0H, 09B11H\r
+       ROM_CHIP 35, 8, 32, 02A00018H, 02BFFFF8H, 09677H\r
+\r
+       ROM_CHIP 88, 8, 32, 02C00000H, 02DFFFE0H, 06C5CH\r
+       ROM_CHIP 70, 8, 32, 02C00008H, 02DFFFE8H, 057BDH\r
+       ROM_CHIP 52, 8, 32, 02C00010H, 02DFFFF0H, 06D2EH\r
+       ROM_CHIP 34, 8, 32, 02C00018H, 02DFFFF8H, 039F6H\r
+\r
+       ROM_CHIP 87, 8, 32, 02E00000H, 02FFFFE0H, 0A110H\r
+       ROM_CHIP 69, 8, 32, 02E00008H, 02FFFFE8H, 0D0E6H\r
+       ROM_CHIP 51, 8, 32, 02E00010H, 02FFFFF0H, 0F077H\r
+       ROM_CHIP 33, 8, 32, 02E00018H, 02FFFFF8H, 0A152H\r
+\r
+       ROM_CHIP 86, 8, 32, 03000000H, 031FFFE0H, 03590H\r
+       ROM_CHIP 68, 8, 32, 03000008H, 031FFFE8H, 030F3H\r
+       ROM_CHIP 50, 8, 32, 03000010H, 031FFFF0H, 0EE28H\r
+       ROM_CHIP 32, 8, 32, 03000018H, 031FFFF8H, 09326H\r
+\r
+       ROM_CHIP 85, 8, 32, 03200000H, 033FFFE0H, 02F00H\r
+       ROM_CHIP 67, 8, 32, 03200008H, 033FFFE8H, 0BDCFH\r
+       ROM_CHIP 49, 8, 32, 03200010H, 033FFFF0H, 0C939H\r
+       ROM_CHIP 31, 8, 32, 03200018H, 033FFFF8H, 03D8CH\r
+\r
+       ROM_CHIP 84, 8, 32, 03400000H, 035FFFE0H, 05086H\r
+       ROM_CHIP 66, 8, 32, 03400008H, 035FFFE8H, 028B1H\r
+       ROM_CHIP 48, 8, 32, 03400010H, 035FFFF0H, 06741H\r
+       ROM_CHIP 30, 8, 32, 03400018H, 035FFFF8H, 06C06H\r
+\r
+       ROM_CHIP 83, 8, 32, 03600000H, 037FFFE0H, 068A2H\r
+       ROM_CHIP 65, 8, 32, 03600008H, 037FFFE8H, 0D751H\r
+       ROM_CHIP 47, 8, 32, 03600010H, 037FFFF0H, 0D5BCH\r
+       ROM_CHIP 29, 8, 32, 03600018H, 037FFFF8H, 05EACH\r
+\r
+       ROM_CHIP 82, 8, 32, 03800000H, 039FFFE0H, 0D5D9H\r
+       ROM_CHIP 64, 8, 32, 03800008H, 039FFFE8H, 0AA0BH\r
+       ROM_CHIP 46, 8, 32, 03800010H, 039FFFF0H, 03C7CH\r
+       ROM_CHIP 28, 8, 32, 03800018H, 039FFFF8H, 0AEB5H\r
+\r
+       ROM_CHIP 81, 8, 32, 03A00000H, 03BFFFE0H, 0BB25H\r
+       ROM_CHIP 63, 8, 32, 03A00008H, 03BFFFE8H, 0A577H\r
+       ROM_CHIP 45, 8, 32, 03A00010H, 03BFFFF0H, 0669BH\r
+       ROM_CHIP 27, 8, 32, 03A00018H, 03BFFFF8H, 01034H\r
+\r
+       ROM_CHIP 80, 8, 32, 03C00000H, 03DFFFE0H, 013D2H\r
+       ROM_CHIP 62, 8, 32, 03C00008H, 03DFFFE8H, 00CD5H\r
+       ROM_CHIP 44, 8, 32, 03C00010H, 03DFFFF0H, 052DBH\r
+       ROM_CHIP 26, 8, 32, 03C00018H, 03DFFFF8H, 0A1EEH\r
+\r
+       ROM_CHIP 79, 8, 32, 03E00000H, 03FFFFE0H, 00000H\r
+       ROM_CHIP 61, 8, 32, 03E00008H, 03FFFFE8H, 00000H\r
+       ROM_CHIP 43, 8, 32, 03E00010H, 03FFFFF0H, 00000H\r
+       ROM_CHIP 25, 8, 32, 03E00018H, 03FFFFF8H, 00000H\r
+\r
+       .ENDIF  \r
+\r
+        END_CHIP\r
+\r
+        .END\r
+\r
+\r
+\r
+\r
+\1a
\ No newline at end of file
diff --git a/DIAG/ROMCHIPS.MAC b/DIAG/ROMCHIPS.MAC
new file mode 100644 (file)
index 0000000..8ae2560
--- /dev/null
@@ -0,0 +1,101 @@
+ROM_WDTH .SET 000H                ; OFFSETS INTO ROM CHIP RECORD\r
+ROM_ITLV .SET 010H\r
+ROM_NMBR .SET 020H\r
+ROM_CKSM .SET 030H\r
+ROM_SADR .SET 040H\r
+ROM_EADR .SET 060H\r
+ROM_LINK .SET 080H\r
+ROM_SIZE .SET 0A0H\r
+\r
+;****************************************************************************\r
+;* ROM_CHIP: MACRO DEFINES A ROM CHIP RECORD.                               *\r
+;*                                                                          *\r
+;*       CHIP_NO    -- CHIP NUMBER                                          *\r
+;*       WIDTH      -- CHIP CELL SIZE IN BITS (MUST BE > 0)                 *\r
+;*       INTERLEAVE -- DISTANCE BETWEEN ADJACENT CELLS ON CHIP (IN BITS)    *\r
+;*       START_ADDR -- ADDRESS OF FIRST CELL ON CHIP                        *\r
+;*       END_ADDR   -- ADDRESS OF LAST CELL ON CHIP                         *\r
+;*       CHECK_SUM  -- DATAIO CHECK SUM FOR CHIP                            *\r
+;****************************************************************************\r
+\r
+ROM_CHIP $MACRO CHIP_NO, WIDTH, INTERLEAVE, START_ADDR, END_ADDR, CHECK_SUM\r
+\r
+         .SECT  "CHIPS"\r
+\r
+         .WORD  :WIDTH:\r
+         .WORD  :INTERLEAVE:\r
+         .WORD  :CHIP_NO:H                ; BCD CHIP NUMBER\r
+         .WORD  :CHECK_SUM:\r
+         .LONG  :START_ADDR:\r
+         .LONG  :END_ADDR:\r
+\r
+         .GLOBL ROM:CHIP_NO:              ; SYMBOL SHOULD LABEL A RECTANGLE\r
+         .LONG  ROM:CHIP_NO:              ; RECORD CORRESPONDING TO A ROM\r
+                                          ; CHIP ICON\r
+\r
+         $END\r
+\r
+;****************************************************************************\r
+;* THE FOLLOWING MACRO MARKS THE END OF ANY ROM CHIP TABLE.                 *\r
+;****************************************************************************\r
+\r
+END_CHIP $MACRO\r
+\r
+         .SECT "CHIPS"\r
+         .WORD  0\r
+\r
+         $END\r
+\r
+        .PAGE\r
+\r
+;****************************************************************************\r
+;* THE FOLLOWING MACROS EXTRACT INDIVIDUAL FIELDS FROM A CHIP RECORD AND    *\r
+;* PLACE THEM IN A REGISTER. THE MACROS ACCEPT AS INPUT ANY REGISTER POINT- *\r
+;* ING TO THE BEGINNING OF A CHIP RECORD.                                   *\r
+;****************************************************************************\r
+\r
+ROMSADDR $MACRO SRC, DST\r
+         MOVE *:SRC:(ROM_SADR), :DST:, 1\r
+         $END\r
+\r
+ROMEADDR $MACRO SRC, DST\r
+         MOVE *:SRC:(ROM_EADR), :DST:, 1\r
+         $END\r
+\r
+ROMRLINK $MACRO SRC, DST\r
+         MOVE *:SRC:(ROM_LINK), :DST:, 1\r
+         $END\r
+\r
+ROMNUMBR $MACRO SRC, DST\r
+         MOVE *:SRC:(ROM_NMBR), :DST:\r
+         $END\r
+\r
+ROMINTLV $MACRO SRC, DST\r
+         MOVE *:SRC:(ROM_ITLV), :DST:\r
+         $END\r
+\r
+ROMWIDTH $MACRO SRC, DST\r
+         MOVE *:SRC:(ROM_WDTH), :DST:\r
+         $END\r
+\r
+ROMCHKSM $MACRO SRC, DST\r
+         MOVE *:SRC:(ROM_CKSM), :DST:\r
+         $END\r
+\r
+;****************************************************************************\r
+;* THE FOLLOWING MACRO JUMPS TO "LOCATION" IFF THE NEXT CHIP RECORD IS NOT  *\r
+;* EMPTY; OTHERWISE, THE CODE FOLLOWING THE MACRO CALL IS EXECUTED. THE     *\r
+;* MACRO ACCEPTS AS INPUT ANY REGISTER POINTING TO THE BEGINNING OF A CHIP  *\r
+;* RECORD.                                                                  *\r
+;*                                                                          *\r
+;* THE STACK IS USED AS A SCRATCH REGISTER AND THE INPUT REGISTER IS ALWAYS *\r
+;* INCREMENTED TO POINT TO THE BEGINNING OF THE NEXT RECORD.                *\r
+;****************************************************************************\r
+\r
+ROMEND  $MACRO SRC, LOCATION\r
+        ADDI ROM_SIZE, :SRC:\r
+        MOVE *:SRC:, SP\r
+        JRNZ :LOCATION:\r
+        $END\r
+\r
+\1a
\ No newline at end of file
diff --git a/DIAG/SETUP.DAT b/DIAG/SETUP.DAT
new file mode 100644 (file)
index 0000000..6a77421
--- /dev/null
@@ -0,0 +1 @@
+0300\r
diff --git a/DIAG/SYSALINK.CMD b/DIAG/SYSALINK.CMD
new file mode 100644 (file)
index 0000000..ef97abc
--- /dev/null
@@ -0,0 +1,130 @@
+/* LINKER OPTIONS */\r
+\r
+-e POWER_UP\r
+-f 0xFFFF                      /* fill unspecified memory with value   */\r
+-o SYSCHECK.out                        /* specify output file                  */\r
+-m SYSCHECK.map                        /* map file                             */\r
+-s\r
+\r
+/* INPUT FILES: DATA */\r
+\r
+ROMBOARD.OBJ\r
+CPUBOARD.OBJ\r
+ROMCHIPS.OBJ\r
+RAMCHIPS.OBJ\r
+TVMONITR.OBJ\r
+CONTROLS.OBJ\r
+EDITTABL.OBJ\r
+CMOSTABL.OBJ\r
+MISCDATA.OBJ\r
+SYSFONT.OBJ\r
+\r
+/* INPUT FILES: CODE */\r
+\r
+SYSCHECK.OBJ\r
+ROMCHECK.OBJ\r
+RAMCHECK.OBJ\r
+DMACHECK.OBJ\r
+TVMCHECK.OBJ\r
+CTLCHECK.OBJ\r
+CMOSEDIT.OBJ\r
+UTILITIE.OBJ\r
+CMOS.OBJ\r
+\r
+/* CONFIGURE MEMORY */\r
+\r
+MEMORY\r
+\r
+{\r
+\r
+  CRAM00 (RW): org = 0x01800000, len = 0x001000 /* COLOR PALETTE 00   */\r
+  CRAM01 (RW): org = 0x01801000, len = 0x001000 /* COLOR PALETTE 01   */\r
+  CRAM02 (RW): org = 0x01802000, len = 0x001000 /* COLOR PALETTE 02   */\r
+  CRAM03 (RW): org = 0x01803000, len = 0x001000 /* COLOR PALETTE 03   */\r
+  CRAM04 (RW): org = 0x01804000, len = 0x001000 /* COLOR PALETTE 04   */\r
+  CRAM05 (RW): org = 0x01805000, len = 0x001000 /* COLOR PALETTE 05   */\r
+  CRAM06 (RW): org = 0x01806000, len = 0x001000 /* COLOR PALETTE 06   */\r
+  CRAM07 (RW): org = 0x01807000, len = 0x001000 /* COLOR PALETTE 07   */\r
+  CRAM08 (RW): org = 0x01808000, len = 0x001000 /* COLOR PALETTE 08   */\r
+  CRAM09 (RW): org = 0x01809000, len = 0x001000 /* COLOR PALETTE 09   */\r
+  CRAM10 (RW): org = 0x0180A000, len = 0x001000 /* COLOR PALETTE 10   */\r
+  CRAM11 (RW): org = 0x0180B000, len = 0x001000 /* COLOR PALETTE 11   */\r
+  CRAM12 (RW): org = 0x0180C000, len = 0x001000 /* COLOR PALETTE 12   */\r
+  CRAM13 (RW): org = 0x0180D000, len = 0x001000 /* COLOR PALETTE 13   */\r
+  CRAM14 (RW): org = 0x0180E000, len = 0x001000 /* COLOR PALETTE 14   */\r
+  CRAM15 (RW): org = 0x0180F000, len = 0x001000 /* COLOR PALETTE 15   */\r
+\r
+  VRAM   (RW): org = 0x00000000, len = 0x200000 /* VIDEO RAM   */ \r
+  SRAM   (RW): org = 0x01000000, len = 0x100000 /* SCRATCH RAM */\r
+\r
+  VROM   (RX): org = 0xFFFFFC00, len = 0x000400 /* SYSTEM VECTORS */\r
+  PROM   (RX): org = 0xFFC00000, len = 0x100000 /* PROGRAM ROM */\r
+  IROM    (R): org = 0x02000000, len = 0x800000 /* IMAGE ROM   */\r
+\r
+}\r
+\r
+/* BUILD OUTPUT SECTIONS */\r
+\r
+SECTIONS\r
+\r
+{\r
+\r
+/* SCRATCH AREAS IN SCRATCHPAD */\r
+\r
+  SYSWORK: {\r
+\r
+                DMACHECK.OBJ(.bss)\r
+                MISCDATA.OBJ(.bss)\r
+\r
+           } > SRAM\r
+\r
+/* DIAGNOSTICS CODE */\r
+\r
+  SYSCODE: {\r
+\r
+               SYSCHECK.OBJ(.text)\r
+               ROMCHECK.OBJ(.text)\r
+               RAMCHECK.OBJ(.text)\r
+               DMACHECK.OBJ(.text)\r
+               TVMCHECK.OBJ(.text)\r
+               CTLCHECK.OBJ(.text)\r
+               CMOSEDIT.OBJ(.text)\r
+               UTILITIE.OBJ(.text)\r
+               CMOS.OBJ(.text)\r
+\r
+          } > PROM\r
+\r
+/* DATA TABLES ABOVE CODE */\r
+\r
+  SYSDATA: {\r
+\r
+               ROMBOARD.OBJ(LABELS)\r
+               ROMBOARD.OBJ(RECTS)\r
+               ROMBOARD.OBJ(VECTS)\r
+\r
+               CPUBOARD.OBJ(LABELS)\r
+               CPUBOARD.OBJ(RECTS)\r
+               CPUBOARD.OBJ(VECTS)\r
+\r
+               TVMONITR.OBJ(POINTS)\r
+               TVMONITR.OBJ(RECTS)\r
+               TVMONITR.OBJ(VECTS)\r
+\r
+               CONTROLS.OBJ(CIRCLES)\r
+               CONTROLS.OBJ(LABELS)\r
+               CONTROLS.OBJ(RECTS)\r
+\r
+               ROMCHIPS.OBJ(CHIPS)\r
+               RAMCHIPS.OBJ(CHIPS)\r
+               CMOSTABL.OBJ(CMOSF)\r
+\r
+               EDITTABL.OBJ(LABELS)\r
+               EDITTABL.OBJ(EDITS)\r
+\r
+               MISCDATA.OBJ(MISC)\r
+               SYSFONT.OBJ(FONT)\r
+\r
+          } > PROM\r
+\r
+}\r
+\1a
\ No newline at end of file
diff --git a/DIAG/SYSCHECK.ASM b/DIAG/SYSCHECK.ASM
new file mode 100644 (file)
index 0000000..8201873
--- /dev/null
@@ -0,0 +1,565 @@
+       .FILE   'SYSCHECK.ASM'\r
+;****************************************************************************\r
+;* SYSCHECK: SYSTEM CHECK; \r
+;****************************************************************************\r
+\r
+          .TITLE "SYSCHECK"\r
+       .WIDTH  132\r
+       .OPTION B,D,L,T\r
+       .MNOLIST\r
+\r
+          .INCLUDE \VIDEO\SYS.INC\r
+          .INCLUDE \VIDEO\GSP.INC\r
+\r
+          .INCLUDE "SYSCHECK.SET"\r
+          .INCLUDE "SYSCHECK.GBL"\r
+\r
+          .INCLUDE "UTILITIE.MAC"\r
+          .INCLUDE "LAYOUT.MAC"\r
+\r
+NON_STOP_BURN  EQU     1       ;IF P2 START PRESSED, DON'T STOP\r
+*                              ;BURN-IN ON ERRORS!\r
+\r
+*\r
+*NARC JUMP VECTOR EQUATES\r
+       .IF     ROM512\r
+NARCMAIN .EQU  0FF900000H      ;HARD NARC CODE ADDRESS\r
+       .ELSE\r
+NARCMAIN .EQU  0FFC00000H      ;HARD NARC CODE ADDRESS\r
+       .ENDIF\r
+ROMTRET        .EQU    NARCMAIN+0\r
+CPUTRET        .EQU    NARCMAIN+30H\r
+SWTRET .EQU    NARCMAIN+60H\r
+CBTRET .EQU    NARCMAIN+90H\r
+CHTRET .EQU    NARCMAIN+0C0H\r
+POWERRET .EQU  NARCMAIN+0F0H\r
+\r
+          .TEXT\r
+          .EVEN\r
+\r
+POWERUP:\r
+*\r
+*JUMP VECTOR TABLE TO INTERFACE WITH NARC\r
+*\r
+       JAUC    ROMTEST\r
+       JAUC    CPUTEST\r
+       JAUC    SWTEST\r
+       JAUC    COLORBR\r
+       JAUC    CROSSHCH\r
+       JAUC    TRADEMRK\r
+       JAUC    BURNIN\r
+       JAUC    POWERTST\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+* POWERTST - RUN THE POWER UP DIAGNOSTICS, THEN START THE SYSTEM        *\r
+*                                                                        *\r
+**************************************************************************\r
+POWERTST\r
+        DINT\r
+        SETF 16, 0, 0\r
+        SETF 32, 0, 1\r
+;       ===============================\r
+;       | HALT DMA AND ENABLE CACHE   |\r
+;       ===============================\r
+        CLR  A14\r
+        MOVE A14, @DMACTRL\r
+        MOVE A14, @CONTROL\r
+;       ===============================\r
+;       | RESET SOUND BOARD.          |\r
+;       ===============================\r
+        MOVI 0FB00H, A14\r
+        MOVE A14, @SOUND_BOARD\r
+        CLR  A14\r
+        NOT  A14\r
+        MOVE A14, @SOUND_BOARD\r
+;       ===============================\r
+;       | DISABLE VIDEO PALETTE RAMS, |\r
+;       | AUTOERASE, AND ERROR LED    |\r
+;       ===============================\r
+***        CLR  A13\r
+***        NOT  A13\r
+       MOVI 0FFFCH,A13\r
+        MOVE A13,@SYS_REGISTER_00,W\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+* WDOGDIS - WATCH DOG DISABLE                                           *\r
+*                                                                        *\r
+**************************************************************************\r
+        SETF 16,1,0                    ;SIGN EXTENSION ON FOR THIS\r
+\r
+       MOVI    WDISTAB,A1      \r
+       MOVK    1,A3\r
+       MOVI    0FFFCH,A2\r
+       MOVE    *A1+,A0,W               \r
+WDOGSL\r
+       OR      A2,A0   \r
+        MOVE   A0,@SYS_REGISTER_00,W\r
+       XOR     A3,A0\r
+        MOVE   A0,@SYS_REGISTER_00,W\r
+       MOVE    *A1+,A0,W\r
+       JRNN    WDOGSL\r
+\r
+        SETF 16,0,0                    ;BACK OFF FOR BEGLEMAN SHIT\r
+\r
+;       ===============================\r
+;       | INITIALIZE IO REGISTERS.    |\r
+;       ===============================\r
+        MOVI IOREG_TABLE_START, A14, L\r
+        MOVI IOREG_TABLE_END,   A13, L\r
+        SUB A14, A13\r
+        SRL  4H, A13\r
+        INC A13\r
+        MOVI HESYNC, A12, L\r
+$300:   MOVE *A14+, *A12+\r
+        DSJS A13, $300\r
+;       ===============================\r
+;       | RUN POWER UP DIAGNOSTICS.   |\r
+;       ===============================\r
+TEST_RAM:\r
+       FCALL   SCRCLR,B6\r
+        FCALL INITCOLR, B5              ; DISPLAY CPU BOARD\r
+        MOVI  RAMCHIPS, A14             ; VERIFY SYSTEM RAMS\r
+        FCALL RAMCHECK, B5\r
+        MOVE  B0, A0                    ; SAVE MUST BE TO A7\r
+;       ===============================\r
+;       | ENABLE VIDEO PALETTE MAP    |\r
+;       | ACCESS.                     |\r
+;       ===============================\r
+        MOVI  PAL_SELECT, A13\r
+        MOVE  A13,@SYS_REGISTER_00,W\r
+        MOVI  PALCHIPS, A14             ; VERIFY VIDEO PALETTE MAP RAMS\r
+        FCALL RAMCHECK, B5\r
+        MOVE  B0, A7\r
+       MOVE    A0,A8\r
+;       ===============================\r
+;       | DISABLE VIDEO PALETTE MAP   |\r
+;       | ACCESS.                     |\r
+;       ===============================\r
+***        CLR  A13\r
+***        NOT  A13\r
+       MOVI    0FFFCH,A13\r
+        MOVE A13,@SYS_REGISTER_00,W\r
+       FCALL   SCRCLR,B6\r
+        FCALL INITCOLR, B5              ; DISPLAY CPU BOARD\r
+        FCALL VIEWRAMS, B5\r
+        MOVI  RAMCHIPS, A14             ; DISPLAY VIDEO & SCRATCH ERRORS.\r
+        MOVE  A8, B0\r
+        FCALL RAMSTATE, B5\r
+        MOVI  PALCHIPS, A14\r
+        MOVE  A7, B0\r
+        FCALL RAMSTATE, B5              ; DISPLAY PALETTE ERRORS\r
+        PAUSE  100000H,A14              ; LET'EM SEE IT\r
+       MOVE    A8,A8\r
+       JRNZ    TEST_DMA                ;SKIP ROM TEST ON BIT MAP RAM ERROR\r
+TEST_ROM:\r
+       FCALL   SCRCLR,B6\r
+        FCALL INITCOLR, B5\r
+        FCALL VIEWROMS, B5              ; DISPLAY ROM BOARD\r
+        MOVI  ROMCHIPS, A14 \r
+        FCALL ROMCHECK, B5              ; VERIFY SYSTEM ROMS\r
+;       ===============================\r
+;       | STACK MAY BE USED AFTER     |\r
+;       | THIS POINT...               |\r
+;       ===============================\r
+TEST_DMA:\r
+        MOVI  STACK_ST, SP, L\r
+****        CALLA DMACHECK\r
+*STAMP THE CPU AS GOOD\r
+        MOVI P_MAX, A14\r
+        MOVE A14, @CONTROL\r
+        MOVI CPU_CHIP, A14, L\r
+        R_XYADR A14, A0\r
+        R_DIMEN A14, A1\r
+        MOVI (GREEN * 256) + GREEN, A2\r
+        FCALL RECTANGLE, B6\r
+        PAUSE  200000H, A14              ; LET'EM SEE IT\r
+       JAUC    POWERRET        ;HARD JUMP TO THE BEGINNING OF IT ALL\r
+\r
+*\r
+*WATCH DOG DISABLE TABLE\r
+WDISTAB\r
+       .WORD   0\r
+       .WORD   0\r
+       .WORD   0\r
+       .WORD   0\r
+\r
+       .WORD   2\r
+       .WORD   0\r
+       .WORD   2\r
+       .WORD   0\r
+       .WORD   0FFFFH\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+* ROMTEST - ROM BOARD TEST                                              *\r
+*                                                                        *\r
+**************************************************************************\r
+ROMTEST\r
+       FCALL   SCRCLR,B6\r
+        FCALL INITCOLR, B5              ; DISPLAY CPU BOARD\r
+        MOVI  RAMCHIPS, A14             ; VERIFY BITMAP AND SCRATCH RAMS\r
+        FCALL RAMCHECK, B5\r
+\r
+        MOVE  B0, A0                    ; SAVE MUST BE TO A7\r
+        MOVI  PAL_SELECT, A13\r
+        MOVE  A13,@SYS_REGISTER_00,W\r
+        MOVI  PALCHIPS, A14             ; VERIFY PALETTE RAMS\r
+        FCALL RAMCHECK, B5\r
+        MOVE  B0, A7\r
+       MOVI 0FFFCH,A13\r
+        MOVE A13,@SYS_REGISTER_00,W\r
+       MOVE    A0,A8\r
+       JRZ     ROMBRAM                 ;TEST ROM BECAUSE RAM IS GOOD\r
+\r
+        FCALL INITCOLR, B5              ; DISPLAY CPU BOARD\r
+        FCALL VIEWRAMS, B5\r
+        MOVI  RAMCHIPS, A14             ; DISPLAY VIDEO & SCRATCH ERRORS.\r
+        MOVE  A8, B0\r
+        FCALL RAMSTATE, B5\r
+        MOVI  PALCHIPS, A14\r
+        MOVE  A7, B0\r
+        FCALL RAMSTATE, B5              ; DISPLAY PALETTE ERRORS\r
+\r
+        MOVI   RAMERRL,A14,L\r
+ROMRAMMESS\r
+       L_TXADR A14, A0                 ; LOAD LABEL PARAMETERS\r
+        L_XYADR A14, A1\r
+        L_DIREC A14, A2\r
+        L_COLOR A14, A3\r
+        FCALL STRING, B6\r
+        L_END A14, ROMRAMMESS\r
+*CAN'T CHECK THE ROMS WHEN THERE'S BAD RAM\r
+       JAUC    ROMTRET\r
+ROMBRAM\r
+       FCALL   SCRCLR,B6\r
+        FCALL INITCOLR, B5\r
+        FCALL VIEWROMS, B5              ; DISPLAY ROM BOARD\r
+        MOVI  ROMCHIPS, A14 \r
+        FCALL ROMCHECK, B5              ; VERIFY SYSTEM ROMS\r
+\r
+       MOVE    B0,B0\r
+       JREQ    ROMGOOD\r
+        MOVI   ROMERRL,A14,L\r
+       JRUC    ROMMESS\r
+ROMGOOD\r
+        MOVI   ROMCOMPL,A14,L\r
+ROMMESS\r
+       L_TXADR A14, A0                 ; LOAD LABEL PARAMETERS\r
+        L_XYADR A14, A1\r
+        L_DIREC A14, A2\r
+        L_COLOR A14, A3\r
+        FCALL STRING, B6\r
+        L_END A14, ROMMESS\r
+\r
+       JAUC    ROMTRET\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+* CPUTEST - CPU BOARD TEST                                              *\r
+*                                                                        *\r
+**************************************************************************\r
+CPUTEST\r
+       FCALL   SCRCLR,B6\r
+        MOVI  RAMCHIPS, A14             ; VERIFY BITMAP AND SCRATCH RAMS\r
+        FCALL RAMCHECK, B5\r
+\r
+        MOVE  B0, A0                    ; SAVE MUST BE TO A7\r
+        MOVI  PAL_SELECT, A13\r
+        MOVE  A13,@SYS_REGISTER_00,W\r
+        MOVI  PALCHIPS, A14             ; VERIFY PALETTE RAMS\r
+        FCALL RAMCHECK, B5\r
+        MOVE  B0, A7\r
+       MOVE    A0,A8\r
+***        CLR  A13\r
+***        NOT  A13\r
+       MOVI    0FFFCH,A13\r
+        MOVE A13,@SYS_REGISTER_00,W\r
+\r
+        FCALL INITCOLR, B5              ; DISPLAY CPU BOARD\r
+        FCALL VIEWRAMS, B5\r
+        MOVI  RAMCHIPS, A14             ; DISPLAY VIDEO & SCRATCH ERRORS.\r
+        MOVE  A8, B0\r
+        FCALL RAMSTATE, B5\r
+        MOVI  PALCHIPS, A14\r
+        MOVE  A7, B0\r
+        FCALL RAMSTATE, B5              ; DISPLAY PALETTE ERRORS\r
+\r
+       OR      A7,A8\r
+       JREQ    RAMGOOD\r
+        MOVI   RAMERRL,A14,L\r
+       JRUC    RAMMESS\r
+RAMGOOD\r
+        MOVI   RAMCOMPL,A14,L\r
+RAMMESS\r
+       L_TXADR A14, A0                 ; LOAD LABEL PARAMETERS\r
+        L_XYADR A14, A1\r
+        L_DIREC A14, A2\r
+        L_COLOR A14, A3\r
+        FCALL STRING, B6\r
+        L_END A14, RAMMESS\r
+\r
+***        CALLA DMACHECK\r
+*STAMP THE CPU AS GOOD\r
+        MOVI P_MAX, A14\r
+        MOVE A14, @CONTROL\r
+        MOVI CPU_CHIP, A14, L\r
+        R_XYADR A14, A0\r
+        R_DIMEN A14, A1\r
+        MOVI (GREEN * 256) + GREEN, A2\r
+        FCALL RECTANGLE, B6\r
+       JAUC    CPUTRET\r
+\r
+**************************************************************************\r
+*                                                                        *\r
+* BURNIN - BURIN TEST                                                   *\r
+*                                                                        *\r
+**************************************************************************\r
+BURNIN\r
+        PAUSE  80000H,A14              ; LET'EM SEE IT\r
+*NOW RAMS\r
+       FCALL   SCRCLR,B6\r
+        FCALL INITCOLR, B5              ; DISPLAY CPU BOARD\r
+        MOVI  RAMCHIPS, A14             ; VERIFY BITMAP AND SCRATCH RAMS\r
+        FCALL RAMCHECK, B5\r
+\r
+        MOVE  B0, A0                    ; SAVE MUST BE TO A7\r