├── atari_tools ├── e6 │ ├── E6. │ ├── MAC65.SAV │ ├── MAC68.SAV │ ├── MAC69.SAV │ ├── MACRO.SAV │ ├── PASLIB.GSS │ ├── PASLIB.SGS │ ├── SNDOUT.BAK │ ├── SNDOUT.MAC │ ├── SNDINT.BAK │ ├── SNDINT.PAS │ ├── FXCHAR.MAC │ ├── GSSSND.MAC │ └── LPTST. ├── f8 │ ├── F8. │ ├── 3M.SYS │ ├── BA.SYS │ ├── LP.SYS │ ├── PIP.SAV │ ├── PP.SYS │ ├── PR.SYS │ ├── ROM.SAV │ ├── TT.SYS │ ├── BATCH.SAV │ ├── CREF.SAV │ ├── EDIT.SAV │ ├── LDTPA.SAV │ ├── LIBR.SAV │ ├── LINK.SAV │ ├── LINKM.SAV │ ├── MAC65.SAV │ ├── MAC68.SAV │ ├── MACRO.SAV │ ├── CHKSUM.SAV │ ├── MONITR.SYS │ ├── RBNLST.SAV │ ├── ROMRDR.SAV │ ├── SKETCH.SAV │ ├── DIRLST.BAT │ └── DIRLST.CTL ├── e2_tools │ ├── BA.SYS │ ├── ODT.OBJ │ ├── LINK0.OBJ │ ├── LNKV2B.OBJ │ ├── OPC65.OBJ │ ├── OPC68.OBJ │ ├── LNKLNK.BAT │ ├── LNKLNK.CTL │ ├── LOGCHK.MAC │ ├── BATVAR.MAC │ ├── DVCCHK.MAC │ ├── DVCNAM.MAC │ ├── OPC68.MAC │ ├── OPC65.MAC │ └── PIP1.MAC ├── e3_tools │ ├── PIP1.OBJ │ ├── LNKOV1.OBJ │ ├── LNKOV2.OBJ │ ├── LNKOV3.OBJ │ ├── LNKOV4.OBJ │ ├── PST65.OBJ │ ├── PST68.OBJ │ ├── PST69.OBJ │ ├── LITST0.LNK │ ├── RTEXE5.MAC │ ├── RTEXE8.MAC │ ├── RTEXE9.MAC │ ├── MAC69.MAC │ ├── BATTST.BAT │ ├── BATTST.CTL │ ├── M6TA.M69 │ ├── MALMSG.M65 │ ├── PST65.MAC │ ├── M69TST.MAC │ ├── PST68.MAC │ ├── PST69.MAC │ └── FX.MAC ├── e4_tools │ ├── A3MC.OBJ │ ├── M65T.OBJ │ ├── MBU.OBJ │ ├── PIP.OBJ │ ├── PIP.SAV │ ├── PST.OBJ │ ├── M65TB.OBJ │ ├── MAC65.OBJ │ ├── MAC65.OLD │ ├── MAC69.OBJ │ ├── MACRO.OBJ │ ├── MBUCOD.OBJ │ ├── OPC69.OBJ │ ├── RTEXE8.OBJ │ ├── RTEXE9.OBJ │ ├── M65TB.M65 │ ├── MAC65.MAC │ ├── MAC68.MAC │ ├── MACRO.MAC │ ├── RTPAR.MAC │ ├── RTPAR5.MAC │ ├── RTPAR8.MAC │ ├── RTPAR9.MAC │ ├── M65TA.M65 │ ├── M65T.M65 │ ├── MACRO5.MAC │ ├── RCIOCH.MAC │ ├── OPC11.MAC │ ├── RPARAM.MAC │ └── PST.MAC ├── e5_tools │ ├── MAC68.OBJ │ ├── RTEXE5.OBJ │ ├── RTEXEC.OBJ │ ├── RUNOFF.MAC │ └── RUNOFF.OBJ └── README.md ├── coin-op ├── rk1.rk05 ├── rk2.rk05 ├── sy.rk05 ├── linkm.rx01 ├── centipede-v4.rx01 ├── atari-coinop-tools.rx01 ├── coinop.ini └── README.md ├── centipede ├── 136001.101 ├── 136001.102 ├── 136001.103 ├── 136001.104 ├── 136001.105 ├── 136001.106 ├── 136001.113 ├── revision.v2 │ ├── 136001.201 │ ├── 136001.202 │ ├── 136001.203 │ ├── 136001.204 │ ├── 136001.205 │ ├── 136001.206 │ ├── 136001.213 │ ├── CENTI2.COM │ ├── SYNC2.MAC │ └── CENTI2.MAP ├── revision.v3 │ ├── 136001.303 │ ├── 136001.304 │ ├── 136001.305 │ ├── 136001.306 │ ├── CENTI3.COM │ └── CENTI3.MAP ├── revision.v4 │ ├── 136001.407 │ ├── 136001.408 │ ├── 136001.409 │ ├── 136001.410 │ ├── CENTI4.COM │ └── CENTI4.MAP ├── CENTI.COM ├── README.md ├── SYNC.MAC ├── CENTI.MAP └── CENTI.DOC ├── org-talk ├── centipede-screen.png └── demonstration.org ├── centipede-reassembled ├── 136001-201 ├── 136001-202 ├── 136001-203 ├── 136001-204 ├── 136001-205 ├── 136001-206 ├── cenpic.sav ├── centi2.sav ├── sync2.sav ├── centiped2.png ├── 136001-213 ├── cenpic.xx ├── sync2.xx ├── centi2.xx └── README.md └── README.md /atari_tools/e6/E6.: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /atari_tools/f8/F8.: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coin-op/rk1.rk05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/coin-op/rk1.rk05 -------------------------------------------------------------------------------- /coin-op/rk2.rk05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/coin-op/rk2.rk05 -------------------------------------------------------------------------------- /coin-op/sy.rk05: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/coin-op/sy.rk05 -------------------------------------------------------------------------------- /coin-op/linkm.rx01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/coin-op/linkm.rx01 -------------------------------------------------------------------------------- /atari_tools/f8/3M.SYS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/3M.SYS -------------------------------------------------------------------------------- /atari_tools/f8/BA.SYS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/BA.SYS -------------------------------------------------------------------------------- /atari_tools/f8/LP.SYS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/LP.SYS -------------------------------------------------------------------------------- /atari_tools/f8/PIP.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/PIP.SAV -------------------------------------------------------------------------------- /atari_tools/f8/PP.SYS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/PP.SYS -------------------------------------------------------------------------------- /atari_tools/f8/PR.SYS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/PR.SYS -------------------------------------------------------------------------------- /atari_tools/f8/ROM.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/ROM.SAV -------------------------------------------------------------------------------- /atari_tools/f8/TT.SYS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/TT.SYS -------------------------------------------------------------------------------- /centipede/136001.101: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/136001.101 -------------------------------------------------------------------------------- /centipede/136001.102: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/136001.102 -------------------------------------------------------------------------------- /centipede/136001.103: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/136001.103 -------------------------------------------------------------------------------- /centipede/136001.104: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/136001.104 -------------------------------------------------------------------------------- /centipede/136001.105: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/136001.105 -------------------------------------------------------------------------------- /centipede/136001.106: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/136001.106 -------------------------------------------------------------------------------- /centipede/136001.113: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/136001.113 -------------------------------------------------------------------------------- /atari_tools/e6/MAC65.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e6/MAC65.SAV -------------------------------------------------------------------------------- /atari_tools/e6/MAC68.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e6/MAC68.SAV -------------------------------------------------------------------------------- /atari_tools/e6/MAC69.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e6/MAC69.SAV -------------------------------------------------------------------------------- /atari_tools/e6/MACRO.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e6/MACRO.SAV -------------------------------------------------------------------------------- /atari_tools/f8/BATCH.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/BATCH.SAV -------------------------------------------------------------------------------- /atari_tools/f8/CREF.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/CREF.SAV -------------------------------------------------------------------------------- /atari_tools/f8/EDIT.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/EDIT.SAV -------------------------------------------------------------------------------- /atari_tools/f8/LDTPA.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/LDTPA.SAV -------------------------------------------------------------------------------- /atari_tools/f8/LIBR.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/LIBR.SAV -------------------------------------------------------------------------------- /atari_tools/f8/LINK.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/LINK.SAV -------------------------------------------------------------------------------- /atari_tools/f8/LINKM.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/LINKM.SAV -------------------------------------------------------------------------------- /atari_tools/f8/MAC65.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/MAC65.SAV -------------------------------------------------------------------------------- /atari_tools/f8/MAC68.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/MAC68.SAV -------------------------------------------------------------------------------- /atari_tools/f8/MACRO.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/MACRO.SAV -------------------------------------------------------------------------------- /atari_tools/e2_tools/BA.SYS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e2_tools/BA.SYS -------------------------------------------------------------------------------- /atari_tools/e6/PASLIB.GSS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e6/PASLIB.GSS -------------------------------------------------------------------------------- /atari_tools/e6/PASLIB.SGS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e6/PASLIB.SGS -------------------------------------------------------------------------------- /atari_tools/f8/CHKSUM.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/CHKSUM.SAV -------------------------------------------------------------------------------- /atari_tools/f8/MONITR.SYS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/MONITR.SYS -------------------------------------------------------------------------------- /atari_tools/f8/RBNLST.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/RBNLST.SAV -------------------------------------------------------------------------------- /atari_tools/f8/ROMRDR.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/ROMRDR.SAV -------------------------------------------------------------------------------- /atari_tools/f8/SKETCH.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/f8/SKETCH.SAV -------------------------------------------------------------------------------- /coin-op/centipede-v4.rx01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/coin-op/centipede-v4.rx01 -------------------------------------------------------------------------------- /atari_tools/e2_tools/ODT.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e2_tools/ODT.OBJ -------------------------------------------------------------------------------- /atari_tools/e3_tools/PIP1.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e3_tools/PIP1.OBJ -------------------------------------------------------------------------------- /atari_tools/e4_tools/A3MC.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e4_tools/A3MC.OBJ -------------------------------------------------------------------------------- /atari_tools/e4_tools/M65T.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e4_tools/M65T.OBJ -------------------------------------------------------------------------------- /atari_tools/e4_tools/MBU.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e4_tools/MBU.OBJ -------------------------------------------------------------------------------- /atari_tools/e4_tools/PIP.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e4_tools/PIP.OBJ -------------------------------------------------------------------------------- /atari_tools/e4_tools/PIP.SAV: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e4_tools/PIP.SAV -------------------------------------------------------------------------------- /atari_tools/e4_tools/PST.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e4_tools/PST.OBJ -------------------------------------------------------------------------------- /org-talk/centipede-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/org-talk/centipede-screen.png -------------------------------------------------------------------------------- /atari_tools/e2_tools/LINK0.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e2_tools/LINK0.OBJ -------------------------------------------------------------------------------- /atari_tools/e2_tools/LNKV2B.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e2_tools/LNKV2B.OBJ -------------------------------------------------------------------------------- /atari_tools/e2_tools/OPC65.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e2_tools/OPC65.OBJ -------------------------------------------------------------------------------- /atari_tools/e2_tools/OPC68.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e2_tools/OPC68.OBJ -------------------------------------------------------------------------------- /atari_tools/e3_tools/LNKOV1.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e3_tools/LNKOV1.OBJ -------------------------------------------------------------------------------- /atari_tools/e3_tools/LNKOV2.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e3_tools/LNKOV2.OBJ -------------------------------------------------------------------------------- /atari_tools/e3_tools/LNKOV3.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e3_tools/LNKOV3.OBJ -------------------------------------------------------------------------------- /atari_tools/e3_tools/LNKOV4.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e3_tools/LNKOV4.OBJ -------------------------------------------------------------------------------- /atari_tools/e3_tools/PST65.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e3_tools/PST65.OBJ -------------------------------------------------------------------------------- /atari_tools/e3_tools/PST68.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e3_tools/PST68.OBJ -------------------------------------------------------------------------------- /atari_tools/e3_tools/PST69.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e3_tools/PST69.OBJ -------------------------------------------------------------------------------- /atari_tools/e4_tools/M65TB.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e4_tools/M65TB.OBJ -------------------------------------------------------------------------------- /atari_tools/e4_tools/MAC65.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e4_tools/MAC65.OBJ -------------------------------------------------------------------------------- /atari_tools/e4_tools/MAC65.OLD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e4_tools/MAC65.OLD -------------------------------------------------------------------------------- /atari_tools/e4_tools/MAC69.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e4_tools/MAC69.OBJ -------------------------------------------------------------------------------- /atari_tools/e4_tools/MACRO.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e4_tools/MACRO.OBJ -------------------------------------------------------------------------------- /atari_tools/e4_tools/MBUCOD.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e4_tools/MBUCOD.OBJ -------------------------------------------------------------------------------- /atari_tools/e4_tools/OPC69.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e4_tools/OPC69.OBJ -------------------------------------------------------------------------------- /atari_tools/e4_tools/RTEXE8.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e4_tools/RTEXE8.OBJ -------------------------------------------------------------------------------- /atari_tools/e4_tools/RTEXE9.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e4_tools/RTEXE9.OBJ -------------------------------------------------------------------------------- /atari_tools/e5_tools/MAC68.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e5_tools/MAC68.OBJ -------------------------------------------------------------------------------- /atari_tools/e5_tools/RTEXE5.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e5_tools/RTEXE5.OBJ -------------------------------------------------------------------------------- /atari_tools/e5_tools/RTEXEC.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e5_tools/RTEXEC.OBJ -------------------------------------------------------------------------------- /atari_tools/e5_tools/RUNOFF.MAC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e5_tools/RUNOFF.MAC -------------------------------------------------------------------------------- /atari_tools/e5_tools/RUNOFF.OBJ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/atari_tools/e5_tools/RUNOFF.OBJ -------------------------------------------------------------------------------- /centipede-reassembled/136001-201: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede-reassembled/136001-201 -------------------------------------------------------------------------------- /centipede-reassembled/136001-202: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede-reassembled/136001-202 -------------------------------------------------------------------------------- /centipede-reassembled/136001-203: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede-reassembled/136001-203 -------------------------------------------------------------------------------- /centipede-reassembled/136001-204: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede-reassembled/136001-204 -------------------------------------------------------------------------------- /centipede-reassembled/136001-205: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede-reassembled/136001-205 -------------------------------------------------------------------------------- /centipede-reassembled/136001-206: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede-reassembled/136001-206 -------------------------------------------------------------------------------- /centipede-reassembled/cenpic.sav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede-reassembled/cenpic.sav -------------------------------------------------------------------------------- /centipede-reassembled/centi2.sav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede-reassembled/centi2.sav -------------------------------------------------------------------------------- /centipede-reassembled/sync2.sav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede-reassembled/sync2.sav -------------------------------------------------------------------------------- /centipede/revision.v2/136001.201: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/revision.v2/136001.201 -------------------------------------------------------------------------------- /centipede/revision.v2/136001.202: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/revision.v2/136001.202 -------------------------------------------------------------------------------- /centipede/revision.v2/136001.203: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/revision.v2/136001.203 -------------------------------------------------------------------------------- /centipede/revision.v2/136001.204: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/revision.v2/136001.204 -------------------------------------------------------------------------------- /centipede/revision.v2/136001.205: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/revision.v2/136001.205 -------------------------------------------------------------------------------- /centipede/revision.v2/136001.206: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/revision.v2/136001.206 -------------------------------------------------------------------------------- /centipede/revision.v2/136001.213: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/revision.v2/136001.213 -------------------------------------------------------------------------------- /centipede/revision.v3/136001.303: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/revision.v3/136001.303 -------------------------------------------------------------------------------- /centipede/revision.v3/136001.304: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/revision.v3/136001.304 -------------------------------------------------------------------------------- /centipede/revision.v3/136001.305: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/revision.v3/136001.305 -------------------------------------------------------------------------------- /centipede/revision.v3/136001.306: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/revision.v3/136001.306 -------------------------------------------------------------------------------- /centipede/revision.v4/136001.407: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/revision.v4/136001.407 -------------------------------------------------------------------------------- /centipede/revision.v4/136001.408: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/revision.v4/136001.408 -------------------------------------------------------------------------------- /centipede/revision.v4/136001.409: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/revision.v4/136001.409 -------------------------------------------------------------------------------- /centipede/revision.v4/136001.410: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede/revision.v4/136001.410 -------------------------------------------------------------------------------- /coin-op/atari-coinop-tools.rx01: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/coin-op/atari-coinop-tools.rx01 -------------------------------------------------------------------------------- /centipede-reassembled/centiped2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tschak909/atari-coin-op-assembler/HEAD/centipede-reassembled/centiped2.png -------------------------------------------------------------------------------- /coin-op/coinop.ini: -------------------------------------------------------------------------------- 1 | set cpu 11/20 32K 2 | att rk0 sy.rk05 3 | att rk1 rk1.rk05 4 | att rk2 rk2.rk05 5 | set rk0 writeenabled 6 | set rk1 writeenabled 7 | set rk2 writeenabled 8 | boot rk0 9 | -------------------------------------------------------------------------------- /centipede-reassembled/136001-213: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /atari_tools/e4_tools/M65TB.M65: -------------------------------------------------------------------------------- 1 | .BYTE 1,2,3,4,5,6,7 2 | .END 3 | -------------------------------------------------------------------------------- /atari_tools/e3_tools/LITST0.LNK: -------------------------------------------------------------------------------- 1 | DK1:C/L,D.LST=LTST0/C 2 | LTST0/C 3 | LTST0/C 4 | LTST0 5 | -------------------------------------------------------------------------------- /atari_tools/e3_tools/RTEXE5.MAC: -------------------------------------------------------------------------------- 1 | .TITLE RTEXE5 6502 ASSEMBLER I/O 2 | .INCLUDE RTPAR5 3 | $$INCLU =0 4 | .INCLUDE RTEXEC 5 | .END START 6 | -------------------------------------------------------------------------------- /atari_tools/e3_tools/RTEXE8.MAC: -------------------------------------------------------------------------------- 1 | .TITLE RTEXE8 6800 ASSEMBLER I/O 2 | .INCLUDE RTPAR8 3 | $$INCLU =0 4 | .INCLUDE RTEXEC 5 | .END START 6 | -------------------------------------------------------------------------------- /atari_tools/e3_tools/RTEXE9.MAC: -------------------------------------------------------------------------------- 1 | .TITLE RTEXE9 6809 ASSEMBLER I/O 2 | .INCLUDE RTPAR9 3 | $$INCLU =0 4 | .INCLUDE RTEXEC 5 | .END START 6 | -------------------------------------------------------------------------------- /atari_tools/e3_tools/MAC69.MAC: -------------------------------------------------------------------------------- 1 | .TITLE MAC69 6809 ASSEMBER 2 | .INCLUDE RTPAR9 3 | .INCLUDE MACXX 4 | $$INCL =0 5 | .INCLUDE MACRO5 6 | .END 7 | -------------------------------------------------------------------------------- /atari_tools/e4_tools/MAC65.MAC: -------------------------------------------------------------------------------- 1 | .TITLE MAC65 6502 ASSEMBER 2 | .INCLUDE RTPAR5 3 | .INCLUDE MACXX 4 | $$INCL =0 5 | .INCLUDE MACRO5 6 | .END 7 | -------------------------------------------------------------------------------- /atari_tools/e4_tools/MAC68.MAC: -------------------------------------------------------------------------------- 1 | .TITLE MAC68 6800 ASSEMBER 2 | .INCLUDE RTPAR8 3 | .INCLUDE MACXX 4 | $$INCL =0 5 | .INCLUDE MACRO5 6 | .END 7 | -------------------------------------------------------------------------------- /atari_tools/f8/DIRLST.BAT: -------------------------------------------------------------------------------- 1 | $JOB/RT11 2 | BEGIN: 3 | $MESSAGE/WAIT NEXT DISK PLEASE 4 | .R PIP 5 | *LST:=DK1:/E 6 | GOTO -BEGIN 7 | $EOJ 8 | -------------------------------------------------------------------------------- /atari_tools/e2_tools/LNKLNK.BAT: -------------------------------------------------------------------------------- 1 | $JOB/RT11 2 | .R LINK 3 | *DK1:LINKM,LNKLNK.LST=DK1:LINK0/C 4 | *DK1:LNKOV1/O:1/C 5 | *DK1:LNKOV2,LNKV2B/O:1/C 6 | *DK1:LNKOV3/O:1/C 7 | *DK1:LNKOV4/O:1 8 | $EOJ 9 | -------------------------------------------------------------------------------- /atari_tools/e3_tools/BATTST.BAT: -------------------------------------------------------------------------------- 1 | $JOB/RT11 2 | TTYIO 3 | .R MACRO 4 | *DK1:BA 5 | .R BATVAR 6 | *'"TYPE SOME STUFF "''CTY' 7 | $MESSAGE IT WORKED 8 | $EOJ 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # atari-coin-op-assembler 2 | 3 | This repository contains: 4 | 5 | * centipede/ A copy of the Centipede source code from the HistoricalSource repo. 6 | * centipede-reassembled/ a copy of the reassembled centipede revision.v2 with this assembler 7 | * atari_tools/ The Atari coin-op tools for a PDP-11 system running RT-11 8 | * coin-op/ disk images, and a SIMH configuration file to boot and run the tools 9 | * org-talk/ contains the org-mode notes used in the demo video 10 | 11 | I have placed the read-me for each piece inside each directory. 12 | 13 | -------------------------------------------------------------------------------- /atari_tools/f8/DIRLST.CTL: -------------------------------------------------------------------------------- 1 | \C 2 | $JOB/RT11 3 | \LBEGIN \CBEGIN: 4 | 5 | $MESSAGE/WAIT NEXT DISK PLEASE 6 | \@ NEXT DISK PLEASE 7 | ?\G\ER PIP 8 | \DLST:=DK1:/E 9 | \C GOTO -BEGIN 10 | \JBEGIN 0\C 11 | $EOJ 12 | \L$$$$$$\F\ER BATCH 13 | \D/R 14 | \E\F 15 | -------------------------------------------------------------------------------- /atari_tools/e2_tools/LNKLNK.CTL: -------------------------------------------------------------------------------- 1 | \C 2 | $JOB/RT11 3 | \ER LINK 4 | \DDK1:LINKM,LNKLNK.LST=DK1:LINK0/C 5 | DK1:LNKOV1/O:1/C 6 | DK1:LNKOV2,LNKV2B/O:1/C 7 | DK1:LNKOV3/O:1/C 8 | DK1:LNKOV4/O:1 9 | \C 10 | $EOJ 11 | \L$$$$$$\F\ER BATCH 12 | \D/R 13 | \E\F 14 | -------------------------------------------------------------------------------- /atari_tools/e3_tools/BATTST.CTL: -------------------------------------------------------------------------------- 1 | \C 2 | $JOB/RT11 3 | TTYIO 4 | \H1\ER MACRO 5 | \DDK1:BA 6 | \ER BATVAR 7 | \D\@TYPE SOME STUFF \C\D\@?\G 8 | \C 9 | $MESSAGE IT WORKED 10 | \@ IT WORKED 11 | \C 12 | $EOJ 13 | \L$$$$$$\F\ER BATCH 14 | \D/R 15 | \E\F 16 | -------------------------------------------------------------------------------- /atari_tools/e4_tools/MACRO.MAC: -------------------------------------------------------------------------------- 1 | .TITLE MACRO RT-11 SYSTEM ASSEMBLER 2 | 3 | .MACRO GTVNUM 4 | .ASCIZ /02A.13 / ;MACRO VM02A.13 5 | .ENDM 6 | 7 | ; MACRO ASSEMBLER. 8 | ; 9 | $$INCL=0 ;DEFINE FOR INCLUSIONS 10 | 11 | .INCLUDE RTPAR 12 | .INCLUDE RPARAM 13 | .INCLUDE RCIOCH 14 | .INCLUDE MACXX 15 | .INCLUDE MACRO5 16 | .END 17 | -------------------------------------------------------------------------------- /centipede-reassembled/cenpic.xx: -------------------------------------------------------------------------------- 1 | 2 | ATARI LINKM V04-06 LOAD MAP 3 | CENPIC.SAV 4 | 5 | DK2:CENPIC,CENPIC.XX=CENPIC 6 | (DK:CENPIC) 7 | 8 | 9 | SECTION ADDR SIZE ENTRY ADDR ENTRY ADDR ENTRY ADDR 10 | 11 | . ABS. 0000 1000 12 | 13 | TRANSFER ADDRESS = 0001 14 | HIGH LIMIT = 1000 15 | 16 | -------------------------------------------------------------------------------- /centipede-reassembled/sync2.xx: -------------------------------------------------------------------------------- 1 | 2 | ATARI LINKM V04-06 LOAD MAP 3 | SYNC2.SAV 4 | 5 | DK2:SYNC2,SYNC2.XX=SYNC2 6 | (DK:SYNC2) 7 | 8 | 9 | SECTION ADDR SIZE ENTRY ADDR ENTRY ADDR ENTRY ADDR 10 | 11 | . ABS. 0000 0200 12 | 0200 0100 13 | 14 | TRANSFER ADDRESS = 0001 15 | HIGH LIMIT = 0300 16 | 17 | -------------------------------------------------------------------------------- /atari_tools/e4_tools/RTPAR.MAC: -------------------------------------------------------------------------------- 1 | .NLIST TTM,CND 2 | .SBTTL ********* 3 | .SBTTL * RTPAR * 4 | .SBTTL ********* 5 | 6 | RT11= 0 7 | XBAW= 0 8 | XEDPIC= 0 9 | 10 | .GLOBL PCRCNT,CRFDFL,BYTMOD,ERRBTS,STCODE 11 | .GLOBL SETIMM,ROLBAS,SAVREG,EXPFLG,GETSYM,SETSYM 12 | .GLOBL TSTARG,GLBEXP,ABSEXP,VALUE,RELEXP,MODE 13 | .GLOBL RELLVL,SECTOR,CLCLOC,CLCSEC 14 | .GLOBL GETNB,CHAN,WRNCNT,SMLSW 15 | 16 | MACXX=0 ;DEFINE ASSEMBLER TO BE MACRO 17 | 18 | .MACRO GTVNUM 19 | .ASCIZ /02A.13 / 20 | .ENDM 21 | -------------------------------------------------------------------------------- /atari_tools/e4_tools/RTPAR5.MAC: -------------------------------------------------------------------------------- 1 | .NLIST TTM,CND 2 | 3 | .MACRO GTVNUM 4 | .ASCIZ /03.09/ ;MAC65 VM03.09 5 | .ENDM 6 | 7 | ; MAC69 MACRO ASSEMBLER. 8 | ; 9 | 10 | 11 | RT11= 0 12 | XBAW= 0 13 | XEDPIC= 0 14 | .GLOBL PCRCNT,CRFDFL,BYTMOD,ERRBTS,STCODE,CPOPJ 15 | .GLOBL SETIMM,ROLBAS,SAVREG,EXPFLG,GETSYM,SETSYM 16 | .GLOBL TSTARG,GLBEXP,ABSEXP,VALUE,RELEXP,MODE 17 | .GLOBL RELLVL,SECTOR,CLCLOC,CLCSEC,OPCODE 18 | .GLOBL GETNB,CHAN,WRNCNT,SMLSW 19 | 20 | MACXX=65. ;DEFINE ASSEMBLER TO BE MAC65 21 | 22 | -------------------------------------------------------------------------------- /atari_tools/e4_tools/RTPAR8.MAC: -------------------------------------------------------------------------------- 1 | .NLIST TTM,CND 2 | 3 | .MACRO GTVNUM 4 | .ASCIZ /03.08/ ;MAC68 VM03.08 5 | .ENDM 6 | 7 | ; MAC68 MACRO ASSEMBLER. 8 | ; 9 | 10 | 11 | RT11= 0 12 | XBAW= 0 13 | XEDPIC= 0 14 | .GLOBL PCRCNT,CRFDFL,BYTMOD,ERRBTS,STCODE,CPOPJ 15 | .GLOBL SETIMM,ROLBAS,SAVREG,EXPFLG,GETSYM,SETSYM 16 | .GLOBL TSTARG,GLBEXP,ABSEXP,VALUE,RELEXP,MODE 17 | .GLOBL RELLVL,SECTOR,CLCLOC,CLCSEC,OPCODE 18 | .GLOBL GETNB,CHAN,WRNCNT,SMLSW 19 | 20 | MACXX=68. ;DEFINE ASSEMBLER TO BE MAC68 21 | 22 | -------------------------------------------------------------------------------- /atari_tools/e4_tools/RTPAR9.MAC: -------------------------------------------------------------------------------- 1 | .NLIST TTM,CND 2 | 3 | .MACRO GTVNUM 4 | .ASCIZ /03.01/ ;MAC69 VM03.01 5 | .ENDM 6 | 7 | ; MAC69 MACRO ASSEMBLER. 8 | ; 9 | 10 | 11 | RT11= 0 12 | XBAW= 0 13 | XEDPIC= 0 14 | .GLOBL PCRCNT,CRFDFL,BYTMOD,ERRBTS,STCODE,CPOPJ 15 | .GLOBL SETIMM,ROLBAS,SAVREG,EXPFLG,GETSYM,SETSYM 16 | .GLOBL TSTARG,GLBEXP,ABSEXP,VALUE,RELEXP,MODE 17 | .GLOBL RELLVL,SECTOR,CLCLOC,CLCSEC,OPCODE 18 | .GLOBL GETNB,CHAN,WRNCNT,SMLSW 19 | 20 | MACXX=69. ;DEFINE ASSEMBLER TO BE MAC69 21 | 22 | -------------------------------------------------------------------------------- /atari_tools/e4_tools/M65TA.M65: -------------------------------------------------------------------------------- 1 | .RADIX 16 2 | .LIST MEB 3 | .NLIST BYT 4 | .BYTE 1,2,4,8,10,20,40,80 5 | 6 | .MACRO TEST A B C D E F G H I J 7 | .IRP X, 8 | .IF NB,X 9 | .BYTE X 10 | .ENDC 11 | .ENDR 12 | .BYTE A,B,C,D 13 | .BYTE E,F,G,H 14 | .PRINT (/) 15 | .PRINT 1234(15,4) 16 | .ENDM 17 | 18 | TEST 1 19 | TEST 2 20 | TEST 1,2,3,4 21 | TEST 1,2,4,8,10,20,30 22 | 23 | .END 24 | -------------------------------------------------------------------------------- /coin-op/README.md: -------------------------------------------------------------------------------- 1 | # coin-op 2 | 3 | Contained here are disk images that expose an RT-11 v4 environment as a set of RK05 disks. 4 | 5 | * atari-coinop-tools.rx01 - RX01 disk containing the macro assemblers and LINKM 6 | * centipede-v4.rx01 - Centipede revision 4 on an RX01 disk image. 7 | * coinop.ini - SimH configuration file 8 | * rk1.rk05 - RK1 disk containing source code for Centipede revision 2 9 | * rk2.rk05 - RK2 disk for binaries 10 | * sy.rk05 - System disk containing RT-11SJ V4, and all the tools. 11 | * centipede-v4.rx01 - A copy of Centipede revision 4 on an RX01 floppy 12 | * linkm.rx01 - a fixed LINKM V04-06 on RX01 floppy 13 | 14 | -------------------------------------------------------------------------------- /centipede/revision.v4/CENTI4.COM: -------------------------------------------------------------------------------- 1 | !CENTI4.COM 2 | ASS RK1 OBJ 3 | ASS RK1 BIN 4 | ASS RK1 IMG 5 | !THE FOLLOWING FILES MAY BE .INCLUDE`D 6 | !IN SOME ASSEMBLIES: 7 | !CENDE4,COIN65 8 | 9 | R MAC65 10 | OBJ:CENTI4=CENTI4 11 | OBJ:CENIR4=CENIR4 12 | OBJ:CENTS4=CENTS4 13 | ^C 14 | 15 | 16 | R LINKM 17 | BIN:CENTI4,CENTI4.XX=OBJ:CENTI4,CENIR4,CENTS4 18 | ^C 19 | 20 | R IMGFIL 21 | BIN:CENTI4 22 | 2048 23 | IMG:136001.407 24 | 2000 25 | IMG:136001.408 26 | 2800 27 | IMG:136001.409 28 | 3000 29 | IMG:136001.410 30 | 3800 31 | ^C 32 | -------------------------------------------------------------------------------- /centipede/revision.v3/CENTI3.COM: -------------------------------------------------------------------------------- 1 | 2 | 3 | !CENTI3.COM 4 | ASS RK1 OBJ 5 | ASS RK1 BIN 6 | ASS RK1 IMG 7 | !THE FOLLOWING FILES MAY BE .INCLUDE'D 8 | !IN SOME ASSEMBLIES: 9 | !CENDEF 10 | 11 | 12 | R MAC65 13 | OBJ:CENTI3=CENTI3 14 | OBJ:CENIR3=CENIR3 15 | OBJ:CENTS3=CENTS3 16 | ^C 17 | 18 | 19 | R LINKM 20 | BIN:CENTI3,CENTI3.XX=OBJ:CENTI3,CENIR3,CENTS3 21 | ^C 22 | 23 | 24 | R IMGFIL 25 | BIN:CENTI3 26 | 2048 27 | IMG:136001.303 28 | 2000 29 | IMG:136001.304 30 | 2800 31 | IMG:136001.305 32 | 3000 33 | IMG:136001.306 34 | 3800 35 | ^C 36 | -------------------------------------------------------------------------------- /centipede/CENTI.COM: -------------------------------------------------------------------------------- 1 | !CENTI.COM 2 | ASS RK1 OBJ 3 | ASS RK1 BIN 4 | ASS RK1 IMG 5 | !THE FOLLOWING FLES MAY BE .INCLUDE'D 6 | !IN SOME ASSEMBLIES: 7 | !CENDEF 8 | 9 | R MAC65 10 | OBJ:CENTI=CENTI 11 | OBJ:CENIRQ=CENIRQ 12 | OBJ:CENTST=CENTST 13 | OBJ:CENPIC=CENPIC 14 | ^C 15 | 16 | R LINKM 17 | BIN:CENTI,CENTI.XX=OBJ:CENTI,CENIRQ,CENTST 18 | BIN:CENPIC,CENPIC.XX=OBJ:CENPIC 19 | ^C 20 | 21 | R IMGFIL 22 | BIN:CENTI 23 | 2048 24 | IMG:136001.103 25 | 2000 26 | IMG:136001.104 27 | 2800 28 | IMG:136001.105 29 | 3000 30 | IMG:136001.106 31 | 3800 32 | ^C 33 | R IMGFIL 34 | BIN:CENPIC 35 | 2048 36 | IMG:136001.101 37 | 0 38 | IMG:136001.102 39 | 800 40 | ^C 41 | -------------------------------------------------------------------------------- /centipede/revision.v2/CENTI2.COM: -------------------------------------------------------------------------------- 1 | !CENTI2.COM 2 | ASS RK1 OBJ 3 | ASS RK1 BIN 4 | ASS RK1 IMG 5 | !THE FOLLOWING FLES MAY BE .INCLUDE'D 6 | !IN SOME ASSEMBLIES: 7 | !CENDEF 8 | 9 | R MAC65 10 | OBJ:CENTI2=CENTI2 11 | OBJ:CENIR2=CENIR2 12 | OBJ:CENTS2=CENTS2 13 | OBJ:CENPIC=CENPIC 14 | ^C 15 | 16 | R LINKM 17 | BIN:CENTI2,CENTI2.XX=OBJ:CENTI2,CENIR2,CENTS2 18 | BIN:CENPIC,CENPIC.XX=OBJ:CENPIC 19 | ^C 20 | 21 | R IMGFIL 22 | BIN:CENTI2 23 | 2048 24 | IMG:136001.203 25 | 2000 26 | IMG:136001.204 27 | 2800 28 | IMG:136001.205 29 | 3000 30 | IMG:136001.206 31 | 3800 32 | ^C 33 | R IMGFIL 34 | BIN:CENPIC 35 | 2048 36 | IMG:136001.201 37 | 0 38 | IMG:136001.202 39 | 800 40 | ^C 41 | -------------------------------------------------------------------------------- /centipede/README.md: -------------------------------------------------------------------------------- 1 | # centipede 2 | 3 | In here, is the coin-op code originally pulled from: 4 | https://github.com/historicalsource/centipede 5 | 6 | The root contains revision 1 of centipede, which corresponds to MAME's 'centiped1' driver. 7 | 8 | The revision.v2/ folder contains revision 2, corresponding to MAME's 'centiped2' driver. 9 | 10 | The revision.v3/ folder contains revision 3, corresponding to MAME's 'centiped3' driver. 11 | 12 | Revisions 3 and 4 use the CENPIC, and SYNC code from revision.v2, and can be copied over as part of the build process. 13 | 14 | Each revision has a set of ROMs built which run in MAME. 15 | 16 | For each, there is also a .COM file, containing the build script, as well as .DOC containing testing documentation. 17 | 18 | The main CENTI.DOC contains build information, as well as ROM and EPROM mapping, which is important to read if you're trying to either burn new EPROMs or use the ROMs with MAME. 19 | 20 | -------------------------------------------------------------------------------- /atari_tools/e2_tools/LOGCHK.MAC: -------------------------------------------------------------------------------- 1 | ; 2-OCT-78 2 | ; 14:10:00 3 | .TITLE LOGCHK BATCH LOG CONTROL 4 | .MCALL .TTYIN,.DSTAT,.REGDEF,..V2..,.EXIT 5 | ..V2.. 6 | .REGDEF 7 | 8 | START: .DSTAT #DSA,#LOG ;FIND OUT ABOUT LOG 9 | BCC 1$ ;ITS THERE 10 | 2$: CLR R0 ;ITS NOT ASSIGNED 11 | .EXIT 12 | 1$: TST DSA ;DIRECT ACCESS DEVICE? 13 | BPL 2$ ;NOPE. LEAVE IT THEN 14 | .DSTAT #DSA,#BA ;FIND OIUT ABOUT BA 15 | BCS 2$ ;NOT THERE 16 | MOV DSA+4,R1 ;GET LOAD ADDRESS 17 | BEQ 2$ ;NOT LOADED 18 | BIC #100,6(R1) ;CHANGE BATCH OUTPUT TO CTY 19 | BR 2$ ;DONE 20 | 21 | LOG: .RAD50 /LOG/ 22 | BA: .RAD50 /BA / 23 | DSA: .BLKW 5 24 | .END START 25 | -------------------------------------------------------------------------------- /centipede-reassembled/centi2.xx: -------------------------------------------------------------------------------- 1 | 2 | ATARI LINKM V04-06 LOAD MAP 3 | CENTI2.SAV 4 | 5 | DK2:CENTI2,CENTI2.XX=CENTI2,CENIR2,CENTS2 6 | (DK:CENTI2,DK:CENIR2,DK:CENTS2) 7 | 8 | 9 | SECTION ADDR SIZE ENTRY ADDR ENTRY ADDR ENTRY ADDR 10 | 11 | . ABS. 0000 3366 $LMBIT 0010 $CCTIM 00C5 $$CRDT 00C8 12 | $CNCT 00C9 $BCCNT 00CA $BC 00CB 13 | $PSTSL 00CC $CNSTT 00CF $LMTIM 00D2 14 | $CMODE 00D3 $INTCT 00D4 $COINA 0C01 15 | $LAM 0C01 CPYRHT 2003 MAIN 200E 16 | CKSUM0 2058 CLRCH 2656 INIT 2873 17 | SCORES 2D5D CKSUM1 2DAE CKSUM2 3365 18 | CENIRQ 3366 06AB MOOLAH 3366 MESS 37DD MESSAG 382D 19 | ABS 3833 COMP 3835 INITAL 383B 20 | CHAR 383E DIGIT2 3857 DIGITZ 3864 21 | IRQ 3879 22 | CENTST 3A11 05EF CKSUM 3A11 WRITEA 3AC9 RESET 3B0D 23 | CKSUM3 3FF9 24 | 25 | TRANSFER ADDRESS = 0001 26 | HIGH LIMIT = 4000 27 | 28 | -------------------------------------------------------------------------------- /atari_tools/e6/SNDOUT.BAK: -------------------------------------------------------------------------------- 1 | .TITLE SNDOUT GSS PASCAL SOUND PLAY ROUTINE 2 | .GLOBL SNDOUT 3 | ;*********************************************************************** 4 | ;DEFINED IN PASCAL PROGRAM BY: 5 | ; PROCEDURE SNDOUT(SNUM:INTEGER);EXTERNAL; 6 | ;/*IF SNUM=128. THEN A SOUND IN PROGRESS CAN BE CUT SHORT 7 | ; A SOUND MAY BE STARTED AT ANY TIME WHICH WILL STOP ANY CURRENT SOUND*/ 8 | ;*********************************************************************** 9 | ;LOCAL TOS SNUM +4 10 | ; RET ADDR +2 11 | ;SP> %0 +0 12 | ;********************************************************************* 13 | GMAR=167760 14 | SMEM=167744 15 | DMEM=400 16 | 17 | SNDOUT: MOV %0,-(6) ;SAVE R0 18 | CLR %0 ;GET "RP" ADDR 19 | MOV %0,@#DMEM 20 | MOV %0,@#GMAR 21 | MOVB @#SMEM,%0 22 | INC %0 ;PRINDX ADDR TO R0, ASSUME "RP"+1 23 | MOV %0,@#DMEM 24 | MOV %0,@#GMAR 25 | MOVB 4(6),@#SMEM ;SNUM TO PRINDX 26 | DEC %0 ;SET ADDR TO RP 27 | MOV %0,@#DMEM 28 | MOV %0,@#GMAR 29 | MOVB #200,@#SMEM ;SET ACTIVE FLAG IN RP 30 | MOV (6)+,%0 ;RESTORE R0 31 | MOV (6)+,(6) ;MOVE RET ADDR & CLEAN STACK 32 | RTS %7 33 | .END 34 | -------------------------------------------------------------------------------- /atari_tools/e6/SNDOUT.MAC: -------------------------------------------------------------------------------- 1 | .TITLE SNDOUT GSS PASCAL SOUND PLAY ROUTINE 2 | .GLOBL SNDOUT 3 | ;*********************************************************************** 4 | ;DEFINED IN PASCAL PROGRAM BY: 5 | ; PROCEDURE SNDOUT(SNUM:INTEGER);EXTERNAL; 6 | ;/*IF SNUM=128. THEN A SOUND IN PROGRESS CAN BE CUT SHORT 7 | ; A SOUND MAY BE STARTED AT ANY TIME WHICH WILL STOP ANY CURRENT SOUND*/ 8 | ;*********************************************************************** 9 | ;LOCAL TOS SNUM +4 10 | ; RET ADDR +2 11 | ;SP> %0 +0 12 | ;********************************************************************* 13 | GMAR=167760 14 | SMEM=167750 15 | DMEM=400 16 | 17 | SNDOUT: MOV %0,-(6) ;SAVE R0 18 | CLR %0 ;GET "RP" ADDR 19 | MOV %0,@#DMEM 20 | MOV %0,@#GMAR 21 | MOVB @#SMEM,%0 22 | INC %0 ;PRINDX ADDR TO R0, ASSUME "RP"+1 23 | MOV %0,@#DMEM 24 | MOV %0,@#GMAR 25 | MOVB 4(6),@#SMEM ;SNUM TO PRINDX 26 | DEC %0 ;SET ADDR TO RP 27 | MOV %0,@#DMEM 28 | MOV %0,@#GMAR 29 | MOVB #200,@#SMEM ;SET ACTIVE FLAG IN RP 30 | MOV (6)+,%0 ;RESTORE R0 31 | MOV (6)+,(6) ;MOVE RET ADDR & CLEAN STACK 32 | RTS %7 33 | .END 34 | -------------------------------------------------------------------------------- /atari_tools/e6/SNDINT.BAK: -------------------------------------------------------------------------------- 1 | /*$C 2 | .TITLE SNDINT; 3 | */ 4 | /*$E+*/ 5 | /*$A-*/ 6 | 7 | PROCEDURE SNDINT; 8 | 9 | TYPE 10 | MINT=0..65535; 11 | 12 | VAR 13 | GMAR ORIGIN 167760B:MINT; 14 | SMEM ORIGIN 167744B:MINT; 15 | SPCON ORIGIN 167742B:MINT; 16 | DMEM ORIGIN 400B:MINT; 17 | I,J,K:MINT; 18 | PROG:FILE OF MINT; 19 | 20 | BEGIN 21 | SPCON:=3; /*HALT 6502*/ 22 | RESET(PROG,'DK1:ZOUNDZ.SAV'); /*OPEN NEW 6502 PROGRAM*/ 23 | /*SKIP TO RESET ADDR*/ 24 | FOR I:=0 TO 9 DO 25 | BEGIN 26 | J:=PROG^; 27 | GET(PROG); 28 | END; 29 | K:=20; /*RESET ADDR*/ 30 | FOR I:=1 TO 88 DO 31 | BEGIN 32 | J:=PROG^; 33 | GET(PROG); 34 | DMEM:=K; 35 | GMAR:=K; 36 | SMEM:=J; 37 | K:=K+1; 38 | J:=J DIV 256; 39 | DMEM:=K; 40 | GMAR:=K; 41 | SMEM:=J; 42 | K:=K+1; 43 | END; 44 | DMEM:=5; /*RP ADDR*/ 45 | GMAR:=5; 46 | SMEM:=0; 47 | DMEM:=6; /*PRINDX ADDR*/ 48 | GMAR:=6; 49 | SMEM:=0; 50 | SPCON:=3; /*START 6502 PROGRAM*/ 51 | CLOSE(PROG); 52 | END; 53 | /*SNDINT*/ 54 | -------------------------------------------------------------------------------- /atari_tools/e6/SNDINT.PAS: -------------------------------------------------------------------------------- 1 | /*$C 2 | .TITLE SNDINT; 3 | */ 4 | /*$E+*/ 5 | /*$A-*/ 6 | 7 | PROCEDURE SNDINT; 8 | 9 | TYPE 10 | MINT=0..65535; 11 | 12 | VAR 13 | GMAR ORIGIN 167760B:MINT; 14 | SMEM ORIGIN 167750B:MINT; 15 | SPCON ORIGIN 167746B:MINT; 16 | DMEM ORIGIN 400B:MINT; 17 | I,J,K:MINT; 18 | PROG:FILE OF MINT; 19 | 20 | BEGIN 21 | SPCON:=3; /*HALT 6502*/ 22 | RESET(PROG,'DK1:ZOUNDZ.SAV'); /*OPEN NEW 6502 PROGRAM*/ 23 | /*SKIP TO RESET ADDR*/ 24 | FOR I:=0 TO 9 DO 25 | BEGIN 26 | J:=PROG^; 27 | GET(PROG); 28 | END; 29 | K:=20; /*RESET ADDR*/ 30 | FOR I:=1 TO 88 DO 31 | BEGIN 32 | J:=PROG^; 33 | GET(PROG); 34 | DMEM:=K; 35 | GMAR:=K; 36 | SMEM:=J; 37 | K:=K+1; 38 | J:=J DIV 256; 39 | DMEM:=K; 40 | GMAR:=K; 41 | SMEM:=J; 42 | K:=K+1; 43 | END; 44 | DMEM:=5; /*RP ADDR*/ 45 | GMAR:=5; 46 | SMEM:=0; 47 | DMEM:=6; /*PRINDX ADDR*/ 48 | GMAR:=6; 49 | SMEM:=0; 50 | SPCON:=3; /*START 6502 PROGRAM*/ 51 | CLOSE(PROG); 52 | END; 53 | /*SNDINT*/ 54 | -------------------------------------------------------------------------------- /atari_tools/e4_tools/M65T.M65: -------------------------------------------------------------------------------- 1 | .TITLE M65T MAC65 TEST 2 | START: LDA 10 3 | .ENABL AMA 4 | .LIST MEB 5 | .NLIST BYT 6 | .LIST SEQ,BIN,BEX ;TURN THESE BACK ON 7 | 8 | LDA 100 9 | .RADIX 16 10 | LDA 100 11 | 12 | .BYTE 1 13 | .BYTE 1,2 14 | .BYTE 1,2,4 15 | .BYTE 1,2,4,8 16 | .BYTE 1,2,4,8,10 17 | .BYTE 1,2,4,8,10,20 18 | .BYTE 1,2,4,8,10,20,40 19 | .BYTE 1,2,4,8,10,20,40,80, 20 | .BYTE 1,2,4,8,10,20,40,80,00,1 21 | 22 | .MACRO BEGIN 23 | ...SRC =...SRC+2 24 | .LIST SRC(...SRC,1) 25 | .ENDM 26 | 27 | .MACRO END 28 | ...SRC =...SRC-2 29 | .LIST SRC(...SRC) 30 | LDA 7 31 | .ENDM 32 | 33 | ...SRC =42. ;BEGIN HERE 34 | BEGIN ;ALL COMMENTS SHOULD LINE UP 35 | BEGIN ;SEE 36 | BEGIN ;HOW THEY RUN 37 | BEGIN ;TA-DA 38 | LDA 5 ;SET SOME STUFF 39 | STA 6 40 | END 41 | END 42 | END 43 | END 44 | 45 | .LIST COM(80.) 46 | 47 | BEGIN ;ALL COMMENTS SHOULD LINE UP 48 | BEGIN ;SEE 49 | BEGIN ;HOW THEY RUN 50 | BEGIN ;TA-DA 51 | LDA 5 ;SET SOME STUFF 52 | STA 6 53 | END 54 | END 55 | END 56 | END 57 | 58 | .PRINT ...SRC ;TRY THIS 59 | .PRINT 0FFF0(42.-6,6,8.,1,1) ;TRY ALL THESE TOO 60 | .MACRO TEST A,B,C,D 61 | .PRINT A(42.-6-1'[',43.']',42.-6,6,8) ;WHO KNOWS? 62 | .BYTE B,C,D 63 | .ENDM 64 | 65 | TEST 100,2,4,8 66 | 67 | .END START 68 | -------------------------------------------------------------------------------- /centipede/SYNC.MAC: -------------------------------------------------------------------------------- 1 | ;ROM/PROM FILE CREATED BY ROMRDR 26-MAY-81 00:00:00 2 | 3 | ; DX0:SYNC/A 4 | 5 | .RADIX 16 6 | .MACRO BYTE A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,AA,AB,AC,AD,AE,AF 7 | .BYTE A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,AA,AB,AC,AD,AE,AF 8 | .ENDM 9 | 10 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 11 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 12 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 13 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 14 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 15 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 16 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F2,0F2,0F2,0F2,0F2,0F2,0F2,0F2 17 | BYTE 0F2,0F2,0F2,0F2,0F2,0F2,0F2,0F2,0F2,0F2,0F2,0F2,0F2,0F2,0F2,0FA 18 | BYTE 0F0,0FA,0FA,0FA,0FA,0FE,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 19 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 20 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 21 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 22 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 23 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 24 | BYTE 0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA 25 | BYTE 0FA,0FA,0FB,0FB,0FB,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA 26 | .END 27 | 28 | -------------------------------------------------------------------------------- /centipede/CENTI.MAP: -------------------------------------------------------------------------------- 1 | ATARI LINKM V05.00 LOAD MAP 20-MAY-81 14:22:49 2 | BIN:CENTI.SAV 3 | 4 | BIN:CENTI,CENTI.XX=OBJ:CENTI,CENIRQ,CENTST 5 | 6 | File Summary: 7 | Name Module Ident Creation Date/Time 8 | OBJ:CENTI CENDEF 9 | OBJ:CENIRQ CENDEF 10 | OBJ:CENTST CENDEF 11 | 12 | Section Summary: 13 | Name Addr Size Attributes References (Files): 14 | . ABS. 0000 335F 15 | CENIRQ 335F 06AB 16 | CENTST 3A0A 05F6 17 | 18 | Global Symbol Summary: 19 | Name Value Name Value Name Value Name Value Name Value 20 | ABS 382C CLRCH 2656 IRQ 3872 WRITEA 3AC2 $COINA 0C01 21 | CHAR 3837 COMP 382E MAIN 200E $BC 00CB $INTCT 00D4 22 | CKSUM 3A0A CPYRHT 2003 MESS 37D6 $BCCNT 00CA $LAM 0C01 23 | CKSUM0 2058 DIGITZ 385D MESSAG 3826 $CCTIM 00C5 $LMBIT 0010 24 | CKSUM1 2DAE DIGIT2 3850 MOOLAH 335F $CMODE 00D3 $LMTIM 00D2 25 | CKSUM2 335E INIT 2873 RESET 3B06 $CNCT 00C9 $PSTSL 00CC 26 | CKSUM3 3FF9 INITAL 3834 SCORES 2D5D $CNSTT 00CF $$CRDT 00C8 27 | 28 | High limit = 4000 29 | 30 | -------------------------------------------------------------------------------- /centipede/revision.v2/SYNC2.MAC: -------------------------------------------------------------------------------- 1 | ;ROM/PROM FILE CREATED BY ROMRDR 22-JUL-81 00:00:00 2 | 3 | ; TST/A 4 | 5 | .RADIX 16 6 | 7 | .MACRO BYTE A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,AA,AB,AC,AD,AE,AF 8 | .BYTE A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,AA,AB,AC,AD,AE,AF 9 | .ENDM 10 | 11 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 12 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 13 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 14 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 15 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 16 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 17 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F2,0F2,0F2,0F2,0F2,0F2,0F2,0F2 18 | BYTE 0F2,0F2,0F2,0F2,0F2,0F2,0F2,0F2,0F2,0F2,0F2,0F2,0F2,0F2,0F2,0FA 19 | BYTE 0FA,0FA,0FA,0FA,0FA,0FE,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 20 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 21 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 22 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 23 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 24 | BYTE 0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F0 25 | BYTE 0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA 26 | BYTE 0FA,0FA,0FB,0FB,0FB,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA,0FA 27 | 28 | .END 29 | -------------------------------------------------------------------------------- /centipede/revision.v3/CENTI3.MAP: -------------------------------------------------------------------------------- 1 | ATARI LINKM V05.00 LOAD MAP 17-JUL-81 08:16:06 2 | BIN:CENTI3.SAV 3 | 4 | BIN:CENTI3,CENTI3.XX=OBJ:CENTI3,CENIR3,CENTS3 5 | 6 | File Summary: 7 | Name Module Ident Creation Date/Time 8 | OBJ:CENTI3 CENDEF 9 | OBJ:CENIR3 CENDEF 10 | OBJ:CENTS3 CENDEF 11 | 12 | Section Summary: 13 | Name Addr Size Attributes References (Files): 14 | . ABS. 0000 335E ABS,OVR CENTI3 CENIR3 CENTS3 15 | CENIRQ 335E 06AA REL,OVR CENIR3 16 | CENTST 3A08 05F8 REL,OVR CENTS3 17 | 18 | Global Symbol Summary: 19 | Name Value Name Value Name Value Name Value Name Value 20 | ABS 382B CLRCH 2656 IRQ 3871 WRITEA 3AC0 $COINA 0C01 21 | CHAR 3836 COMP 382D MAIN 200E $BC 00CB $INTCT 00D4 22 | CKSUM 3A08 CPYRHT 2003 MESS 37D5 $BCCNT 00CA $LAM 0C01 23 | CKSUM0 2058 DIGITZ 385C MESSAG 3825 $CCTIM 00C5 $LMBIT 0010 24 | CKSUM1 2DAD DIGIT2 384F MOOLAH 335E $CMODE 00D3 $LMTIM 00D2 25 | CKSUM2 335D INIT 2872 RESET 3B04 $CNCT 00C9 $PSTSL 00CC 26 | CKSUM3 3FF9 INITAL 3833 SCORES 2D5C $CNSTT 00CF $$CRDT 00C8 27 | 28 | Low limit = 2000 High limit = 4000 29 | -------------------------------------------------------------------------------- /centipede/revision.v4/CENTI4.MAP: -------------------------------------------------------------------------------- 1 | ATARI LINKM V05.00 LOAD MAP 23-SEP-81 15:33:49 2 | BIN:CENTI4.SAV 3 | 4 | BIN:CENTI4,CENTI4.XX=OBJ:CENTI4,CENIR4,CENTS4 5 | 6 | File Summary: 7 | Name Module Ident Creation Date/Time 8 | OBJ:CENTI4 CENDE4 23-SEP-81 15:31:43 9 | OBJ:CENIR4 CENDE4 23-SEP-81 15:32:45 10 | OBJ:CENTS4 CENDE4 23-SEP-81 15:33:24 11 | 12 | Section Summary: 13 | Name Addr Size Attributes References (Files): 14 | . ABS. 0000 33AD ABS,OVR CENTI4 CENIR4 CENTS4 15 | CENIRQ 33AD 06A2 REL,OVR CENIR4 16 | CENTST 3A4F 05B1 REL,OVR CENTS4 17 | 18 | Global Symbol Summary: 19 | Name Value Name Value Name Value Name Value Name Value 20 | ABS 387A CLRCH 265A IRQ 38C0 WRITEA 3B07 $COINA 0C01 21 | CHAR 3885 COMP 387C MAIN 200E $BC 00CB $INTCT 00D4 22 | CKSUM 3A4F CPYRHT 2003 MESS 3824 $BCCNT 00CA $LAM 0C01 23 | CKSUM0 2058 DIGITZ 38AB MESSAG 3874 $CCTIM 00C5 $LMBIT 0010 24 | CKSUM1 2DB1 DIGIT2 389E MOOLAH 33AD $CMODE 00D3 $LMTIM 00D2 25 | CKSUM2 33AC INIT 2876 RESET 3B4B $CNCT 00C9 $PSTSL 00CC 26 | CKSUM3 3FF9 INITAL 3882 SCORES 2D60 $CNSTT 00CF $$CRDT 00C8 27 | 28 | Low limit = 2000 High limit = 4000 29 | -------------------------------------------------------------------------------- /centipede/revision.v2/CENTI2.MAP: -------------------------------------------------------------------------------- 1 | ATARI LINKM V05.00 LOAD MAP 28-MAY-81 14:19:41 2 | BIN:CENTI2.SAV 3 | 4 | BIN:CENTI2,CENTI2.XX=OBJ:CENTI2,CENIR2,CENTS2 5 | 6 | File Summary: 7 | Name Module Ident Creation Date/Time 8 | OBJ:CENTI2 CENDEF 9 | OBJ:CENIR2 CENDEF 10 | OBJ:CENTS2 CENDEF 11 | 12 | Section Summary: 13 | Name Addr Size Attributes References (Files): 14 | . ABS. 0000 3366 15 | CENIRQ 3366 06AB 16 | CENTST 3A11 05EF 17 | 18 | Global Symbol Summary: 19 | Name Value Name Value Name Value Name Value Name Value 20 | ABS 3833 CLRCH 2656 IRQ 3879 WRITEA 3AC9 $COINA 0C01 21 | CHAR 383E COMP 3835 MAIN 200E $BC 00CB $INTCT 00D4 22 | CKSUM 3A11 CPYRHT 2003 MESS 37DD $BCCNT 00CA $LAM 0C01 23 | CKSUM0 2058 DIGITZ 3864 MESSAG 382D $CCTIM 00C5 $LMBIT 0010 24 | CKSUM1 2DAE DIGIT2 3857 MOOLAH 3366 $CMODE 00D3 $LMTIM 00D2 25 | CKSUM2 3365 INIT 2873 RESET 3B0D $CNCT 00C9 $PSTSL 00CC 26 | CKSUM3 3FF9 INITAL 383B SCORES 2D5D $CNSTT 00CF $$CRDT 00C8 27 | 28 | High limit = 4000 29 | 30 | -------------------------------------------------------------------------------- /atari_tools/e2_tools/BATVAR.MAC: -------------------------------------------------------------------------------- 1 | ; 5-OCT-78 2 | ; 19:00:00 3 | .NLIST TTM,CND 4 | .TITLE BATVAR BATCH VARIABLE SETTER 5 | .MCALL .TTYIN,..V2..,.REGDEF,.DSTAT,.READW,.LOOKUP,.CLOSE 6 | .MCALL .SRESET,.EXIT,.LOCK,.UNLOCK,MSG,MSGW,.PRINT 7 | ..V2.. 8 | .REGDEF 9 | 10 | START: MOV PGM,SP ;SET THE STACK 11 | MOV PGM+2,R5 ;FREE SPACE POINTER 12 | .LOCK 13 | .DSTAT #WA,#BA ;FIND OUT ABOUT 'BA' 14 | BCC S0 ;IT BETTER BRANCH 15 | SE: MSG 16 | .UNLOCK 17 | .EXIT 18 | S0: MOV WA+4,R4 ;GET ADDRESS OF BACQE 19 | BEQ SE ;BATCH NOT LOADED 20 | .LOOKUP #WA,#0,#BA ;OPEN A CHANNEL TO BA: 21 | BCS SE ;BETTER NOT BRANCH 22 | .READW #WA,#0,R5 ;DO A READ TO GET SOME ADDRESSES 23 | BCS SE ;IT NOT BRANCH 24 | .UNLOCK 25 | ADD R4,(R5) ;FIND ADDRESS OF BATSW1 26 | BIT #4,@0(R5) ;IS BATCH IN CONTROL? 27 | BNE S1 ;YEP 28 | MSG 29 | .EXIT 30 | S1: MOV 22.(R5),R0 ;GET OFFSET TO BATREG 31 | CMP #152777,R0 ;OLD BA.SYS? 32 | BNE S2 ;NOPE 33 | MSG 34 | .EXIT 35 | S2: BIC #100000,R0 ;DROP MINUS FLAG 36 | ADD R0,R4 ;COMPUTE OFFSET TO BATREG 37 | 1$: .TTYIN ;GET TTY DATA 38 | SUB #'A,R0 ;TOO LITTLE? 39 | BLT 1$ ;YES. IGNORE IT 40 | CMPB #'Z-'A,R0 ;TOO BIG? 41 | BLT 1$ ;YEP. IGNORE IT 42 | ADD R4,R0 ;COMPUTE ABSOLUTE ADDRESS OF REG 43 | INCB (R0) ;BUMP VARIABLE 44 | BR 1$ 45 | 46 | WA: .BLKW 5 47 | BA: .RAD50 /BA / 48 | .WORD 0,0,0,0 49 | PGM: .LIMIT 50 | .END START 51 | -------------------------------------------------------------------------------- /atari_tools/e6/FXCHAR.MAC: -------------------------------------------------------------------------------- 1 | .TITLE FXCHAR DISPLAY CHAR ON FIXED ALPHA-NUMERICS DISPLAY 2 | .GLOBL FXCHAR 3 | 4 | ;*********************************************************************** 5 | ;CALLED AS A PASCAL PROCEDURE: 6 | ; PROCEDURE FXCHAR(ROW,COL:INTEGER; DIR,KAR:CHAR);EXTERNAL; 7 | ;ROW,COL= ROW AND COL OF CRT DISPLAY FOR FIXED ALPHA-NUMERICS 8 | ; ROW: 0..29; COL: 0..31 9 | ;KAR= THE CHARACTER TO BE DISPLAYED 10 | ;DIR= THE ROTATION(DIRECTION) CONTROL CHARACTER: 11 | ; 'U'- READ SCREEN FROM BOTTOM SIDE(OR VERTICAL DISPLAY) 12 | ; 'D'- READ SCREEN FROM TOP SIDE 13 | ; 'L'- READ SCREEN FROM LEFT SIDE 14 | ; 'R'- READ SCREEN FROM RIGHT SIDE 15 | ;*********************************************************************** 16 | ;LOCAL TOS: ROW +14 17 | ; COL +12 18 | ; DIR +10 19 | ; KAR +6 20 | ; RET. ADDR +4 21 | ; %0 +2 22 | ;SP> %1 +0 23 | ;*********************************************************************** 24 | 25 | FXCHAR: MOV %0,-(6) ;SAVE R0,R1 26 | MOV %1,-(6) 27 | MOVB 6(6),%0 ;GET KAR 28 | BIC #177700,%0 29 | MOVB 10(6),%1 ;GET DIR 30 | CMPB #'D,%1 ;?'D' 31 | BNE 1$ ;NO 32 | BIS #200,%0 ;SET BIT FOR 'D' 33 | 1$: CMP #'L,%1 ;?'L' 34 | BNE 2$ ;NO 35 | BIS #100,%0 ;SET BIT FOR 'L' 36 | 2$: CMPB #'R,%1 ;?'R' 37 | BNE 3$ ;NO 38 | BIS #300,%0 ;SET BITS FOR 'R' 39 | 3$: MOV 14(6),%1 ;GET ROW 40 | ASL %1 ;MUL BY 32 41 | ASL %1 42 | ASL %1 43 | ASL %1 44 | ASL %1 45 | ADD 12(6),%1 ;ADD COL 46 | ADD #164000,%1 ;ADD START ADDRESS OF DISPLAY MEMORY 47 | CMP #165677,%1 ;UPPER LIMIT CHECK 48 | BLO 4$ ;OUT OF BOUNDS 49 | MOVB %0,(1) ;DISPLAY KAR 50 | ;CLEAN-UP 51 | 4$: MOV 4(6),14(6) ;MOVE RET. ADDR 52 | MOV (6)+,%1 ;RESTORE R1,R0 53 | MOV (6)+,%0 54 | ADD #10,%6 ;POP STACK 55 | RTS %7 56 | .END 57 | -------------------------------------------------------------------------------- /atari_tools/e4_tools/MACRO5.MAC: -------------------------------------------------------------------------------- 1 | .SBTTL ////////FILE #5//////// 2 | ; MACRO5.MAC V02-11 3 | 4 | .IF DF OVLAY 5 | 6 | .GLOBL OVRTBL, OVRXCT 7 | 8 | ENTSEC MACOVR ;OVERLAY SECTOR 9 | ;THE FOLLOWING DUMMY ENTRY POINTS MUST BE GROUPED! 10 | 11 | ;******* 12 | OVRNAM: .RAD50 /MACRO / ;OVERLAY NAME 13 | CALOVR: MOV @(SP)+,-(SP) ;IN-LINE OVERLAY ENTRIES 14 | CALOVF: RETURN ;OVERLAY ENTRIES TO (SP) 15 | BLDOVR: RETURN ;OVERLAY BUILDER 16 | RLSOVR: RETURN ;RELEASE OVERLAY 17 | ;******* 18 | 19 | 20 | 21 | ENTSEC MIXED 22 | 23 | OVRLEN= 0 24 | 25 | OVRTBL: 26 | XXX= 0 27 | .RADIX 10 28 | .REPT NUMOVR 29 | XXX= XXX+1 30 | .IRP N,<\XXX> 31 | ENTSEC OVR'N 32 | .IIF GT .-OVR'N'B-OVRLEN, OVRLEN=.-OVR'N'B 33 | ENTSEC MIXED 34 | .WORD OVR'N'B 35 | .ENDM 36 | .ENDR 37 | .RADIX 8 38 | 39 | ENTSEC OVRSEP 40 | OVRXCT= .-OVRLEN ;START OF EXECUTION AREA 41 | .GLOBL OVRXCT 42 | 43 | ENTSEC MIXED 44 | 45 | .WORD OVRSEP 46 | 47 | XITSEC 48 | 49 | .ENDC 50 | .SBTTL FIN 51 | 52 | .IF EQ,MACXX-68. 53 | GENEDT M68 ;FOR 6800 DEFUALT TO ENABL M68 54 | .IFF 55 | .IF EQ,MACXX-69. 56 | GENEDT M68 ;FOR 6809 DEFAULT TO ENABL M68 57 | .IFF 58 | .IF EQ,MACXX-65. 59 | GENEDT M68,,1 ;FOR 6502 & 8080 DEFAULT TO .DSABL M68 60 | .ENDC 61 | .ENDC 62 | .ENDC 63 | .IF NE,MACXX 64 | GENEDT AMA,,1 ;ALTERNATE MODE ADDRESSING 65 | .ENDC 66 | 67 | ENTSEC IMPURE ;CLOSE OUT IMPURE SECTORS 68 | IMPURT: 69 | ENTSEC IMPPAS 70 | IMPPAT: 71 | ENTSEC IMPLIN 72 | IMPLIT: 73 | 74 | ENTSEC XCTPRG 75 | JMP XCTPAS 76 | ENTSEC XCTPAS 77 | JMP XCTLIN 78 | ENTSEC XCTLIN 79 | RETURN ;RETURN FROM ANY OF THE ABOVE 80 | 81 | ENTSEC SWTSEC 82 | SWTTOP: 83 | ENTSEC EDTSEC 84 | EDTTOP: 85 | 86 | ENTSEC CNDSEC 87 | CNDTOP: ;TOP OF CONDITIONAL ROLL 88 | 89 | XITSEC ;BE NEAT 90 | 91 | 92 | .IIF NDF,$$INCL,$$STOP: .END 93 | -------------------------------------------------------------------------------- /atari_tools/e4_tools/RCIOCH.MAC: -------------------------------------------------------------------------------- 1 | .SBTTL ********** 2 | .SBTTL * RCIOCH * 3 | .SBTTL ********** 4 | ; RCIOCH.MAC V02-11 5 | .NLIST 6 | ; COPYRIGHT (C) 1974,1975 7 | ; 8 | ; DIGITAL EQUIPMENT CORPORATION 9 | ; MAYNARD, MASSACHUSETTS 01754 10 | ; 11 | ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY 12 | ; ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH 13 | ; THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, 14 | ; OR ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE MADE 15 | ; AVAILABLE TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO 16 | ; ONE WHO AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE 17 | ; SOFTWARE SHALL AT ALL TIMES REMAIN IN DIGITAL. 18 | ; 19 | ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO 20 | ; CHANGE WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED 21 | ; AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. 22 | ; 23 | ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE 24 | ; OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT 25 | ; WHICH IS NOT SUPPLIED BY DIGITAL. 26 | ; 27 | .LIST 28 | .SBTTL MCIOCH - I/O CHANNEL ASSIGNMENTS 29 | 30 | .MACRO GENCHN ZCHAN,ZBUF,ZBLK,ZRTCHN,ZTYPE 31 | SETCHN SRC, SRC, , 3, 0 32 | SETCHN LST, LST, , 1, 0 33 | SETCHN BIN, OBJ, , 0, 1 34 | .IF NDF XREL 35 | SETCHN REL, RLD, , 0, 1 36 | .ENDC 37 | .IF NDF XSML 38 | SETCHN SML, SML, SML, 16, 0 39 | .ENDC 40 | .IF NDF XCREF 41 | SETCHN CRF, CRF, , 2, 0 42 | .ENDC 43 | .IF NDF RT11 44 | SETCHN CMI, CMI, CMI, 14, 0 45 | SETCHN CMO, LST, CMO, 15, 0 46 | .ENDC 47 | .ENDM 48 | 49 | TMPCNT= 0 50 | .MACRO SETCHN ZCHAN,ZBUF,ZBLK,ZRTCHN,ZTYPE 51 | .LIST 52 | ZCHAN'CHN= TMPCNT 53 | .NLIST 54 | TMPCNT= TMPCNT+2 55 | .ENDM 56 | 57 | GENCHN 58 | 59 | MAXCHN= TMPCNT ;JUST TO PRESERVE THE COUNT 60 | 61 | .IRP X, 62 | .GLOBL $'X 63 | .MACRO $'X CHAN 64 | MOV #CHAN'CHN,R0 65 | CALL $'X 66 | .ENDM $'X 67 | .ENDM 68 | -------------------------------------------------------------------------------- /atari_tools/e2_tools/DVCCHK.MAC: -------------------------------------------------------------------------------- 1 | ; 2-OCT-78 2 | ; 16:00:00 3 | .NLIST TTM,CND 4 | .TITLE DVCCHK DEVICE ON-LINE TESTER 5 | .MCALL .TTYIN,.REGDEF,..V2..,.EXIT,.CSISPC,.SERR,.LOOKUP,.FETCH 6 | .MCALL .SRESET,.DSTAT,.ENTER,MSG,.PRINT,.READW,.WRITW,.ENTER 7 | ..V2.. 8 | .REGDEF 9 | 10 | START: .SERR 11 | .DSTAT #DSA,#BA 12 | BCC S0 13 | S1: MSG <*CAN ONLY BE RUN FROM BATCH*> 14 | CLR R0 15 | .EXIT 16 | S0: MOV DSA+4,R1 ;BA RESIDENT? 17 | BEQ S1 ;NOPE 18 | MOV PGM+2,R5 ;FREE SPACE POINTER 19 | .LOOKUP #WA,#1,#BA ;OPEN A CHANNEL TO BA: 20 | .READW #WA,#1,R5 ;(CAN'T FAIL) READ SOME ADDRESSES 21 | ADD R1,(R5) ;COMPUTE ADDRESS OF BATSW1 22 | BIT #4,@0(R5) ;BATCH IN CONTROL? 23 | BEQ S1 ;NO 24 | .SRESET 25 | BEGIN: .CSISPC #CSI,#DEX 26 | MOV #CSI+30.,R1 27 | MOV @#54,R2 28 | ADD #356,R2 ;OFFSET TO COM BYTE 29 | CLRB (R2) ;START WITH NO ERRORS 30 | 5$: TST (R1) ;ANY DEVICE? 31 | BNE 1$ ;YEP 32 | 3$: CLR R0 33 | 10$: .TTYIN ;SWITCH TO DATA MODE 34 | BR 10$ 35 | 1$: .FETCH PGM+2,R1 ;GET HANDLER 36 | BCC 2$ ;IT WORKED 37 | 4$: BISB #200,(R2) ;PASS ERROR 38 | BR 3$ ;EXIT 39 | 2$: .DSTAT #DSA,R1 ;FIND OUT ABOUT DEVICE 40 | BCS 4$ 41 | TST 2(R1) ;FILE NAME SUPPLIED 42 | BNE 7$ ;YEP 43 | COM 2(R1) ;NOPE. SUPPLY ONE 44 | 7$: .LOOKUP #WA,#0,R1 ;LOOKUP FILE 45 | BCC 6$ ;ITS OK 46 | TSTB @#52 ;ERROR? 47 | BMI 4$ ;BAD 48 | COM 2(R1) ;NAME REQUESTED? 49 | BNE 4$ ;YES. ERROR 50 | COM 2(R1) ;SET A NAME FOR ENTER 51 | 6$: TST (SP) ;ANY SWITCHES? 52 | BEQ 8$ ;NOPE 53 | .ENTER #WA,#1,R1,#1 ;TRY AN ENTER 54 | BCS 4$ ;MUST BE WRITE PROTECTED 55 | TST DSA ;DISK? 56 | BMI 8$ ;YEP 57 | .WRITW #WA,#0,#ZERO,#ZCNT/2,#0 58 | BCS 4$ ;ERROR 59 | 8$: .SRESET ;START AGAIN 60 | ADD #8.,R1 ;UP TO NEXT INPUT 61 | CMP #CSI+78.,R1 ;END? 62 | BHI 5$ ;NO 63 | BR 3$ ;YES 64 | 65 | WA: .BLKW 5 66 | CSI: .BLKW 39. 67 | DEX: .WORD 0,0,0,0 68 | PGM: .LIMIT 69 | BA: .RAD50 /BA / 70 | DSA: .BLKW 4 71 | ZCNT =60. ;6 INCHES OF TAPE 72 | ZERO: 73 | .REPT ZCNT 74 | .BYTE 0 75 | .ENDR 76 | .END START 77 | -------------------------------------------------------------------------------- /atari_tools/e2_tools/DVCNAM.MAC: -------------------------------------------------------------------------------- 1 | ; 3-OCT-78 2 | ; 12:16:00 3 | .NLIST TTM,CND 4 | .TITLE DVCNAM INSERT DEVICE NAME INTO DIRECTORY 5 | .MCALL ..V2..,.REGDEF,.READW,.WRITW,.ENTER,.LOOKUP,.SETTOP 6 | .MCALL MSG,MSGW,.PRINT,.SRESET,.CLOSE,.FETCH,.EXIT,.CSISPC 7 | ..V2.. 8 | .REGDEF 9 | 10 | START: .SRESET 11 | MOV PGM,SP ;INIT THE STACK 12 | MOV PGM+2,R1 ;SET POINTER TO FREE MEMORY 13 | .FETCH R1,#DX ;GET DX HANDLER 14 | MOV R0,R1 ;UPDATE FREE SPACE POINTER 15 | BCC S0 ;AOK 16 | MSG ;SHOULD NEVER GET HERE 17 | .EXIT 18 | S0: .CSISPC #CSI,#DEX ;GET FIE NAME 19 | MOV #CSI+30.,R2 20 | TST (R2) ;ANY INPUT? 21 | BEQ START ;NOPE 22 | .LOOKUP #WA,#0,#DX ;OPEN DX FOR DIRECTORY STUFF 23 | .READW #WA,#0,R1,#256.,#6 ;READ FIRST SEGMENT 24 | BCC S1 25 | MSG 26 | .EXIT 27 | S1: BITB #4,13(R1) ;IS FIRST FILE PERMANENT? 28 | BNE S2 ;YES. GO MOVE IT 29 | S9: MOV DX,(R2) ;PUT DX1 INTO DEVICE SPEC 30 | .ENTER #WA,#1,R2,#1 ;OPEN A 1 BLOCK FILE 31 | BCC S3 ;OK 32 | S4: MSG 33 | .EXIT 34 | S3: .CLOSE #1 ;FOOL RT-11. CREATE A 0 LENGTH FILE 35 | BR START ;DONE 36 | S2: .SETTOP #-2 ;ASK FOR ALL OF MEMORY 37 | TST -(R0) ;BACK UP 1 WORD 38 | SUB R1,R0 ;COMPUTE BUFFER SIZE 39 | BIC #511.,R0 ;ROUND OFF TO BLOCK BOUNDARY 40 | CLC 41 | ROR R0 ;COMPUTE WORD COUNT 42 | MOV R0,R5 ;KEEP IT 43 | MOV R1,WA+2 ;PASS DEVICE BLK ADDRESS 44 | ADD #12,WA+2 ;ADJUST IT TO FILE SPEC 45 | MOV DX,@WA+2 ;MOVE IN DX1 NAME 46 | .LOOKUP #WA,#2 ;OPEN INPUT 47 | MOV R0,-(SP) ;PASS FILE SIZE 48 | .ENTER #WA,#3,,(SP)+ ;OPEN OUTPUT 49 | BCS S4 ;IT FAILED 50 | CLR R4 ;START AT BLOCK 0 51 | S6: .READW #WA,#2,R1,R5,R4 ;COPY FILE OUT 52 | BCS S5 53 | MOV R0,R5 ;UPDATE WORD COUNT 54 | .WRITW #WA,#3,R1,R5,R4 55 | BCC S7 56 | MSG 57 | .EXIT 58 | S7: SWAB R0 59 | ADD R0,R4 ;UPDATE BLOCK NUMBER 60 | BR S6 61 | S5: TSTB @#52 ;WHAT'S THE ERROR? 62 | BEQ S8 ;EOF. 63 | MSG 64 | .EXIT 65 | S8: .CLOSE #3 ;DONE WITH COPY 66 | BR S9 67 | 68 | PGM: .LIMIT 69 | ;**** 70 | ; DX AND DEX MUST BE TOGETHER 71 | DX: .RAD50 /DX1/ 72 | DEX: .WORD 0,0,0,0 73 | ;**** 74 | 75 | WA: .BLKW 5 76 | CSI: .BLKW 39. 77 | .END START 78 | -------------------------------------------------------------------------------- /atari_tools/e3_tools/M6TA.M69: -------------------------------------------------------------------------------- 1 | .TITLE M69TST MAC69 OPCODE GENERATOR TEST 2 | .LIST MEB 3 | .NLIST CND 4 | 5 | DES=100000 ;DESTRUCTIVE TO OPERAND (FOR CREF) 6 | 7 | AM.I =0001 ;IMMEDIATE 8 | AM.D =0002 ;DIRECT 9 | AM.X =0004 ;INDEXED 10 | AM.E =0010 ;EXTENDED 11 | AM.S =0020 ;BRANCH 12 | AM.SPC =0040 ;IMMEDIATE REQUIRES 2 BYTES 13 | AM.SPD =0100 ;DIRECT PAGE=OX 14 | OPC10 =0200 ;UPPER BYTE=10 15 | OPC11 =0400 ;UPPER BYTE=11 16 | AM.SPL =1000 ;LONG BRANCH 17 | I =AM.I 18 | DP =AM.D 19 | XD =AM.X 20 | E =AM.E 21 | BR =AM.S 22 | SPC =AM.SPC 23 | SPDP =AM.SPD 24 | SP10 =OPC10 25 | SPC10 =OPC10 26 | SP11 =OPC11 27 | SPC11 =OPC11 28 | 29 | SPL =AM.SPL 30 | MOST=I!DP!XD!E 31 | 32 | SHFTAM =DP!XD!E!SPDP!DES 33 | 34 | LONG =5+SP10+SPL 35 | 36 | PEN =1 ;TURN OFF PUSH STUFF 37 | 38 | .MACRO OPCDEF OP,VAL,MODE 39 | OP 40 | OP DATA 41 | .IF NB,MODE 42 | OP #DATA 43 | OP I,DATA 44 | OP D,DATA 45 | OP E,DATA 46 | OP . 47 | OP .+15 48 | OP (Y) 49 | OP (X) 50 | OP (S) 51 | OP (U) 52 | OP A(S) 53 | OP B(U) 54 | OP D(Y) 55 | OP (S)+ 56 | OP (U)++ 57 | OP @(X)+ 58 | OP @(Y)++ 59 | OP 0(S) 60 | OP 10.(U) 61 | OP 100.(X) 62 | OP 1000.(Y) 63 | OP -10.(X) 64 | OP -100.(Y) 65 | OP -1000.(S) 66 | OP -2000.(U) 67 | OP @0(X) 68 | OP @-10.(Y) 69 | OP @-100.(S) 70 | OP @-1000.(U) 71 | OP DATA(PC) 72 | OP @DATA(PC) 73 | OP -(X) 74 | OP --(Y) 75 | OP @-(S) 76 | OP @--(U) 77 | OP NE,DATA 78 | OP 5,DATA(Y) 79 | OP 8,DATA(X) 80 | .ENDC 81 | .ENDM 82 | 83 | DATA =5 84 | .PAGE 85 | .RADIX 16. 86 | OPCDEF ,03A 87 | OPCDEF ,089,MOST 88 | OPCDEF ,0C3,MOST+SPC 89 | OPCDEF ,01C,I 90 | OPCDEF ,048,SHFTAM 91 | OPCDEF ,048 92 | OPCDEF ,024,BR 93 | .MACRO PUSH OP 94 | PSHS OP 95 | .IRP Z, 96 | PSHS Z 97 | .ENDR 98 | .ENDM 99 | .MACRO PUUH OP 100 | PSHU OP 101 | .IRP Z, 102 | PSHU Z 103 | .ENDR 104 | .ENDM 105 | 106 | PUSH 107 | PUUH 108 | PULU D 109 | PULS D 110 | .ENDC 111 | .END 112 | -------------------------------------------------------------------------------- /atari_tools/e6/GSSSND.MAC: -------------------------------------------------------------------------------- 1 | ; 16-MAY-79 2 | ; 10:00:00 3 | .TITLE GSSSND SOUND PROCESSOR 6502 CODE 4 | .ENABL AMA 5 | .RADIX 16 6 | .ASECT 7 | .LIST MEB 8 | .SBTTL MACROS AND STUFF 9 | .MCALL .ALL 10 | .ALL 11 | .MACRO MVI OP1,OP2 12 | .BYTE 0A9 ;(LDA #N) 13 | .WORD OP2 14 | .=.-1 15 | STA OP1 16 | .BYTE 0A9 17 | .ENABL M68 18 | .WORD OP2 19 | .DSABL M68 20 | .=.-1 21 | STA OP1+1 22 | .ENDM 23 | .NLIST BYT 24 | 25 | TIMERL =0FFF7 ;TIMER LOAD 26 | TBASE =0FFF6 ;TIME BASE LOAD 27 | TIMERR =0FFF5 ;TIMER READ 28 | 29 | STAT =5800 ;DELTA MODULATOR STATUS PORT 30 | ;B7 - 2KHZ CLOCK 31 | ;B6 - BUTTON (N.O.) 32 | ;B5 - BUTTON (N.C.) 33 | ;B4 - 34 | ;B3 - 35 | ;B2 - 36 | 37 | TRST =5801 ;RESETS 2KHZ CLOCK (ANY MEM REFERENCE) 38 | SRRD =5802 ;SHIFT REGISTER READ (8 BITS) 39 | SRLD =5803 ;SHIFT REGISTER LOAD (8 BITS) 40 | 41 | .PAGE 42 | .SBTTL ENTRY 43 | .BYTE RP ;LINK TO PDP11 INTERFACE BYTES 44 | R0: .BLKB 45 | R1: .BLKB 46 | R2: .BLKB 47 | R3: .BLKB 48 | RP: .BLKB 49 | PRINDX: .BLKB 50 | LIMIT: .WORD 400 ;1K LIMIT PER SOUND 51 | BUTT: .BLKB 52 | SNDA: .WORD SOUNDS,SOUNDS,SOUNDS,SOUNDS 53 | .WORD 0 ;LAST ENTRY GOES HERE 54 | 55 | RESET: CLD 56 | SEI 57 | LDS #0FF ;INIT THE STACK 58 | 59 | START: JSR BUTTON ;DO A 'D-FLOP' ON PUSH BUTTON 60 | BVS START ;BUTTON NOT PUSHED 61 | BIT RP ;PLAY BACK MODE? 62 | BMI RECORD ;NOPE 63 | JMP PLAY 64 | 65 | .SBTTL RECORD MODE 66 | 67 | RECORD: LDX PRINDX ;GET STARTING ADDRESS INDEX 68 | LDA SNDA(X) ;GET LOW BYTE OF ADDRESS 69 | TAY ;SAVE IT IN Y 70 | ADD LIMIT ;COMPUTE HIGH LIMIT 71 | STA R2 ;AND SAVE IT IN R2 72 | LDA SNDA+1(X) ;GET HI BYTE OF ADDRESS 73 | TAX ;SAVE IT IN X 74 | STA R1 ;AND R1 75 | ADC LIMIT+1 ;COMPUTE HIGH LIMIT 76 | STA R3 77 | CLR R0 ;START RAM POINTER AT 0 78 | STA TRST ;RESET CLOCK 79 | 1$: BIT STAT ;WAIT FOR CLOCK 80 | BPL 1$ 81 | MOVB @R0(Y),SRRD ;PASS DATA 82 | STA TRST ;RESET CLOCK 83 | INY ;NEXT ADDRESS 84 | BNE 2$ 85 | INX 86 | STX R1 87 | 2$: CPX R3 ;REACHED LIMIT YET? 88 | BCC 3$ ;NOPE 89 | CPY R2 90 | BCC 3$ ;NOPE 91 | 5$: TXA ;SAVE X 92 | LDX PRINDX 93 | STA SNDA+3(X) 94 | TYA 95 | STA SNDA+2(X) ;SAVE HIGH LIMIT FOR NEXT SOUND 96 | 4$: JSR BUTTON ;TEST BUTTON 97 | BVC 4$ ;WAIT FOR IT TO DROP 98 | BVS START ;CONTINUE 99 | 3$: JSR BUTTON ;TEST BUTTON 100 | BVS 5$ ;TRUNCATED RECORDING 101 | BVC 1$ ;LOOP 102 | 103 | .PAGE 104 | .SBTTL PLAY BACK MODE 105 | 106 | PLAY: LDX PRINDX ;GET SOUND INDEX 107 | MOV R2, ; END ADDRESS => R2,R3 108 | LDY SNDA(X) ;START ADDRESS => R0,R1 AND Y,X 109 | MOVB R1,SNDA+1(X) 110 | TAX 111 | CLR R0 ;MEM ADDRESS STARTS AT 0 112 | 2$: BIT STAT ;WAIT FOR CLOCK 113 | BPL 2$ 114 | MOVB SRLD,@R0(Y) ;PASS DATA TO HARDWARE 115 | STA TRST ;RESET CLOCK 116 | INY ;NEXT LOCATION 117 | BNE 1$ 118 | INX 119 | STX R1 120 | 1$: CPX R3 ;REACHED LIMIT? 121 | BCC 2$ ;NOPE 122 | CPY R2 123 | BCC 2$ 124 | JMP START 125 | 126 | BUTTON: LDA STAT ;GET STATUS BITS 127 | AND #60 ;MASK ONLY THE BUTTON BITS 128 | CMP #60 ;BOTH ON? 129 | BEQ 1$ ;YES. IGNORE THEM THEN 130 | STA BUTT ;CHANGE FLIP FLOP 131 | 1$: BIT BUTT ;RETURN WITH CC'S SET 132 | RTS ; (V=1 IF BUTTON DOWN, V=0 IF BUTTON UP) 133 | 134 | .=200 ;SKIP OVER STACK SPACE 135 | SOUNDS: ;SOUNDS TABLES ARE FROM HERE TO ETERNITY 136 | .BLKB 0FF8-. ;SKIP UP TO VECTORS 137 | .WORD RESET,RESET,RESET,RESET 138 | .END RESET 139 | -------------------------------------------------------------------------------- /atari_tools/README.md: -------------------------------------------------------------------------------- 1 | # atari_tools 2 | 3 | These tools were recently (November 2023) uploaded to Bitsavers, and are present here for convenience. 4 | They were originally from here: https://bitsavers.org/bits/Atari/arcade/atari_tools.zip 5 | 6 | They consist primarily of dumps of several DEC RX01 format disks 7 | 8 | * e2_tools - Containing source code to RT-11 tools, and parts of the macro assemblers 9 | * e3_tools - More tool and operating system source code. 10 | * e4_tools - Even more tool and operating system source code, some bits in Pascal too. 11 | * e5_tools - the last of the source code, including source to runoff. 12 | * e6 - binaries for MAC65, MAC68, MAC69, MACRO, and a few bits of MAC source and a PASLIB pair. 13 | * f8 - other binaries for MAC65, MAC68, these run, but behave slightly differently (why?) 14 | 15 | ## Transferring into SimH 16 | 17 | The paper tape reader and punch are the most straightforward way to transfer files into the filesystem, e.g. to transfer something in: 18 | 19 | (^E means hit control-E) 20 | 21 | ``` 22 | ^E 23 | sim> att ptr atari_tools/e6/MAC65.SAV 24 | sim> cont 25 | COPY PC: SY:MAC65.SAV 26 | ``` 27 | 28 | The punch can be used to send something out: 29 | 30 | ``` 31 | ^E 32 | sim> att ptp centi.sav 33 | sim> cont 34 | COPY BIN:CENTI.SAV PC: 35 | ^E 36 | sim> det ptp 37 | ``` 38 | 39 | **det ptp must be used to detach the paper tape punch, so that the file will properly be closed, and readable.** 40 | 41 | ## Assembly 42 | 43 | Looking at the CENTI.COM command file, you'll see the commands needed to assemble and produce the ROM images. 44 | 45 | Here is an example MAC65 run: 46 | 47 | ``` 48 | .DIR RK1: 49 | 50 | CENDEF.MAC 23 CENIR2.MAC 22 51 | CENPIC.MAC 24 CENTI2.MAC 105 52 | CENTS2.MAC 37 COIN65.MAC 48 53 | SYNC2 .MAC 4 CENTI2.OBJ 14 54 | CENIR2.OBJ 6 CENTS2.OBJ 6 55 | CENPIC.OBJ 11 56 | 11 Files, 300 Blocks 57 | 4462 Free blocks 58 | 59 | .R MAC65 60 | *OBJ:CENTI2=CENTI2 61 | ERRORS DETECTED: 0 62 | FREE CORE: 14275. WORDS 63 | 64 | *OBJ:CENIR2=CENIR2 65 | ERRORS DETECTED: 0 66 | FREE CORE: 12969. WORDS 67 | 68 | *OBJ:CENTS2=CENTS2 69 | ERRORS DETECTED: 0 70 | FREE CORE: 15318. WORDS 71 | 72 | *OBJ:CENPIC=CENPIC 73 | ERRORS DETECTED: 0 74 | FREE CORE: 16243. WORDS 75 | ``` 76 | 77 | This produces a set of relocatable object files: 78 | 79 | ``` 80 | .DIR DK1:*.OBJ 81 | 82 | CENTI2.OBJ 14 CENIR2.OBJ 6 83 | CENTS2.OBJ 6 CENPIC.OBJ 11 84 | 4 Files, 37 Blocks 85 | 4462 Free blocks 86 | ``` 87 | 88 | But we still need to produce an absolute memory image, and we will need the LINKM linker for this, both to resolve the symbols that are split into several files, and to fix up the relative addresses into absolute ones. 89 | 90 | ``` 91 | .ASS RK2 OBJ 92 | .ASS RK2 BIN 93 | .R LINKM 94 | *BIN:CENTI2,CENTI2.XX=OBJ:CENTI2,CENIR2,CENTS2 95 | 96 | *BIN:CENPIC,CENPIC.XX=OBJ:CENPIC 97 | 98 | ^C 99 | . 100 | ``` 101 | 102 | At this point we have two SAV files. 103 | 104 | ``` 105 | .DIR DK2:*.SAV 106 | 107 | CENPIC.SAV 8 CENTI2.SAV 33 108 | 2 Files, 41 Blocks 109 | 4718 Free blocks 110 | ``` 111 | 112 | ## IMGFIL 113 | 114 | There was a tool called IMGFIL that was present on the coin-op systems. It is not present here. But it can be replicated with other tools. 115 | 116 | This program took as input: 117 | 118 | * The BINARY (SAV) file to cut into pieces 119 | * The image size (2048, for 2K ROMs) 120 | * any number of image files 121 | ** image file name 122 | ** image offset in hex 123 | 124 | An example run with CENTI, outputting to 2048 byte files, with offsets at 2000, 2800, 3000, and 3800 hex: 125 | 126 | ``` 127 | R IMGFIL 128 | BIN:CENTI 129 | 2048 130 | IMG:136001.103 131 | 2000 132 | IMG:136001.104 133 | 2800 134 | IMG:136001.105 135 | 3000 136 | IMG:136001.106 137 | 3800 138 | ^C 139 | ``` 140 | -------------------------------------------------------------------------------- /atari_tools/e3_tools/MALMSG.M65: -------------------------------------------------------------------------------- 1 | .TITLE MALMSG-MALIBU MESSAGES 2 | .CSECT 3 | .RADIX 16 4 | .LIST MEB ;LIST ASCIN EXPANSION 5 | .NLIST BYT 6 | ;******************************** 7 | ;* 8 | ;*THIS PROGRAM HANDLES ALL MESSAGES FOR THE GAME OF MALIBU. 9 | ;*SEE MALIBU.MAC FOR HARDWARE CONFIGURATION. 10 | ;* 11 | ;******************************** 12 | .SBTTL ****************** 13 | .SBTTL * 14 | .SBTTL *PROGRAMMER: ED LOGG 15 | .SBTTL * 16 | .SBTTL ****************** 17 | ; 18 | ;ENTRY POINTS 19 | .GLOBL VGMSG ;MESSAGE PROCESSOR 20 | ; 21 | ;ZERO PAGE DECLARATIONS 22 | ; 23 | .GLOBL TEMP1,VGLIST,TEMP2 24 | ; 25 | ;EXTERNAL ENTRY POINTS 26 | ; 27 | .GLOBL VGSABS,VGWAIT,VGADD ;VECTOR UTILITY ROUTINES 28 | .GLOBL VGMSGA,OPTSW ;JSRL CHARACTER TABLE 29 | 30 | ;ASCIN - TAKE AN ASCII STRING AND MAP 3 CHARACTERS TO 2 BYTES 31 | ; 32 | ;THIS MACRO PACKS 3 ASCII CHARACTERS (BLANK, A THRU Z,0,1 OR 2) INTO 2 33 | ;BYTES IN THE FORMAT 34 | ; AAAAABBB BBCCCCCD 35 | ;WHERE D=1 MEANS END OF LIST 36 | ; AAAAA,BBBBB,CCCCC=INDEX AS FOLLOWS 37 | ; 0=END OF LIST 38 | ; 1=BLANK 39 | ; 2=0 40 | ; 3=1 41 | ; 4=2 42 | ; 5=A 43 | ; ETC. 44 | .MACRO ASCIN STRING 45 | ..N=0 46 | .NCHR ..C, 47 | .ENABL M68 48 | .IRPC ..5, 49 | ..4=''..5 50 | ..C=..C-1 51 | ..3=0 52 | .IIF EQ,..4-^H20,..3=1 53 | .IF GE,..4-^H30 54 | .IIF LT,..4-^H33,..3=..4-^H30+2 55 | .ENDC 56 | .IF GE,..4-^H41 57 | .IIF LT,..4-^H5B,..3=..4-^H41+5 58 | .ENDC 59 | .IIF EQ,..N,..1=..3 60 | .IIF EQ,..N-1,..2=..3 61 | ..N=..N+1 62 | .IF EQ,..N-3 63 | ..N=0 64 | .IIF EQ,..C,.WORD <..1*^H800>+<..2*^H40>+<..3*2>+1 65 | .IIF NE,..C,.WORD <..1*^H800>+<..2*^H40>+<..3*2> 66 | .ENDC 67 | .ENDM 68 | .IIF EQ,..N-1,.WORD ..1*^H800 69 | .IIF EQ,..N-2,.WORD <..1*^H800>+<..2*^H40> 70 | .DSABL M68 71 | .ENDM 72 | 73 | 74 | .SBTTL VGMSG-VECTOR GENERATOR MESSAGE PROCESSOR 75 | ;VGMSG-VECTOR GENERATOR MESSAGE PROCESSOR 76 | ; 77 | ;ENTRY (Y)=MESSAGE NUMBER (0,1,2,...) 78 | ;USES A,X,Y(TEMP1,TEMP1+1),TEMP2,(VGLIST,VGLIST+1) 79 | VGMSG: LDA A,OPTSW 80 | AND I,03 81 | ASL 82 | TAX ;2*LANGUAGE (0,2,4,OR 6) 83 | LDA AX,VGMSGT+1 84 | STA TEMP1+1 85 | LDA AX,VGMSGT ;CARRY IS CLEAR FROM ASL ABOVE 86 | STA TEMP1 ;TEMP1 SETUP NOW 87 | ADC NY,TEMP1 ;RELATIVE ADDRESS TO START OF MESSAGE 88 | STA TEMP1 89 | BCC 10$ ;NO OVERFLOW 90 | INC TEMP1+1 91 | 10$: TYA 92 | PHA 93 | ASL 94 | TAY 95 | LDA AY,VGMSGS 96 | LDX AY,VGMSGS+1 97 | JSR VGSABS ;POSITION BEAM 98 | PLA 99 | TAY 100 | LDA AY,VGMSGW ;GET VALUE OF WAIT 101 | JSR VGWAIT ;WAIT FOR BEAM 102 | LDY I,0 ;Y DOUBLES AS INDEX FOR VGLIST AND TEMP1 103 | LDX I,0 104 | 20$: LDA NX,TEMP1 105 | STA TEMP2 106 | LSR 107 | LSR ;2*INDEX 108 | JSR VGMSG1 ;PUT OUT CHARACTER AND UPDATE TEMP1 109 | LDA NX,TEMP1 110 | ROL 111 | ROL TEMP2 112 | ROL 113 | LDA TEMP2 114 | ROL 115 | ASL 116 | JSR VGMSG2 ;PUT OUT CHARACTER 117 | LDA NX,TEMP1 118 | STA TEMP2 119 | JSR VGMSG1 ;PUT OUT CHARACTER AND UPDATE TEMP1 120 | LSR TEMP2 121 | BCC 20$ ;NOT END OF LIST 122 | VGMSG0: DEY 123 | JMP VGADD ;UPDATE VGLIST POINTER 124 | 125 | VGMSG1: INC TEMP1 ;UPDATE INDIRECT POINTER TO CHARACTERS 126 | BNE VGMSG2 ;NO OVERFLOW 127 | INC TEMP1+1 128 | VGMSG2: AND I,3E 129 | BNE 5$ ;NOT END OF LIST 130 | PLA 131 | PLA ;PURGE RTS 132 | BNE VGMSG0 ;RETURN 133 | 134 | 5$: CMP I,10. 135 | BCC 10$ ;IF BLANK, 0,1 OR 2 136 | ADC I,13. ;SET CORRECT INDEX 137 | 10$: TAX 138 | LDA AX,VGMSGA-2 ;10. FOR A, 12. FOR B, .... 139 | STA NY,VGLIST ;PUT JSRL INTO VECTOR LIST 140 | INY 141 | LDA AX,VGMSGA-1 142 | STA NY,VGLIST 143 | INY 144 | LDX I,0 145 | RTS 146 | 147 | 148 | VGMSGS: .BYTE 100./4,140./4 ;(X,Y)POSITIONS FOR START OF MESSAGE 149 | .BYTE 400./4,140./4 150 | .BYTE 700./4,140./4 151 | .BYTE 350./4,850./4 152 | .BYTE 400./4,730./4 153 | .BYTE 400./4,770./4 154 | .BYTE 590./4,730./4 155 | .BYTE 350./4,730./4 156 | .BYTE 350./4,770./4 157 | .BYTE 350./4,770./4 158 | .BYTE 350./4,770./4 159 | .BYTE 542./4,850./4 160 | .BYTE 400./4,810./4 161 | .BYTE 400./4,690./4 162 | 163 | VGMSGW: .BYTE 80,0,10,80 ;WAITS NEEDED FOR FOR EACH MESSAGE 164 | .BYTE 80,80,80,80 165 | .BYTE 80,80,80,80 166 | .BYTE 80,80 167 | 168 | VGMSGT: .WORD L0 ;LANGUAGE TABLE POINTERS (SEE OPTSW 1 AND 2) 169 | .WORD L0 170 | .WORD L0 171 | .WORD L0 172 | 173 | L0: .BYTE 10$-L0,11$-L0,12$-L0,13$-L0,14$-L0,15$-L0,16$-L0 174 | .BYTE 17$-L0,18$-L0,19$-L0,20$-L0,21$-L0,22$-L0,23$-L0 175 | 176 | 10$: ASCIN ^/SPEED / 177 | 11$: ASCIN ^/TIME / 178 | 12$: ASCIN ^/FUEL / 179 | 13$: ASCIN ^/TRACK / 180 | 14$: ASCIN ^/OUT OF FUEL/ 181 | 15$: ASCIN ^/GAME OVER/ 182 | 16$: ASCIN ^/ FOR UNDER / 183 | 17$: ASCIN ^/BONUS LAP/ 184 | 18$: ASCIN ^/1 COIN 2 PLAYS/ 185 | 19$: ASCIN ^/1 COIN 1 PLAY/ 186 | 20$: ASCIN ^/2 COINS 1 PLAY/ 187 | 21$: ASCIN ^/ RECORD/ 188 | 22$: ASCIN ^/LAPS LEFT / 189 | 23$: ASCIN ^/PUSH START/ 190 | .END 191 | 192 | -------------------------------------------------------------------------------- /atari_tools/e3_tools/PST65.MAC: -------------------------------------------------------------------------------- 1 | .TITLE PST65 VERSION 1. PERMANENT SYMBOL TABLE 8-JAN-77 2 | .IDENT /V0211/ 3 | .GLOBL PSTBAS, PSTTOP ;LIMITS 4 | .GLOBL WRDSYM ;POINTER TO .WORD 5 | .GLOBL ASCTSY ;POINTER TO .ASECT 6 | .GLOBL DFLGEV, DFLGBM, DFLCND, DFLMAC, DFLSMC 7 | 8 | DFLGEV= 020 ;DIRECTIVE REQUIRES EVEN LOCATION 9 | DFLGBM= 010 ;DIRECTIVE USES BYTE MODE 10 | DFLCND= 004 ;CONDITIONAL DIRECTIVE 11 | DFLMAC= 002 ;MACRO DIRECTIVE 12 | DFLSMC= 001 ;MCALL 13 | 14 | OPCL00=0 15 | OPCL01=1 16 | OPCL02=2 17 | OPCL03=3 18 | .IF DF PAL11R ;PAL11R SUBSET 19 | XMACRO= 0 20 | X40= 0 21 | X45= 0 22 | .ENDC 23 | 24 | .IIF DF XMACRO, XSML= 0 25 | 26 | DES=100000 ;DESTRUCTIVE TO OPERAND (FOR CREF) 27 | .MACRO OPCDEF NAME,CLASS,VALUE,AM,FLAGS 28 | .RAD50 /NAME/ 29 | .WORD 0 30 | .BYTE VALUE 31 | .BYTE 200+OPCL'CLASS 32 | .WORD FLAGS+AM+0 33 | .ENDM 34 | 35 | AMINIT=1 36 | .IRP X, 37 | X=AMINIT 38 | AMINIT=AMINIT+AMINIT 39 | .ENDR 40 | SPEC=AMINIT 41 | MOST=I+A+Z+NX+NY+ZX+AX+AY 42 | 43 | 44 | .MACRO DIRDEF NAME, FLAGS, COND 45 | .RAD50 /.'NAME/ 46 | .BYTE FLAGS+0, 0 47 | .IF NB 48 | .IF DF COND 49 | .GLOBL OPCERR 50 | .WORD OPCERR 51 | .MEXIT 52 | .ENDC 53 | .ENDC 54 | .GLOBL NAME 55 | .WORD NAME 56 | .ENDM 57 | 58 | PSTBAS: ;BASE 59 | .PAGE 60 | OPCDEF ADC,02,141,MOST 61 | OPCDEF AND,02,41,MOST 62 | OPCDEF ASL,02,2,A+Z+AC+ZX+AX,DES 63 | OPCDEF BCC,03,220,R 64 | OPCDEF BCS,03,260,R 65 | OPCDEF BEQ,03,360,R 66 | OPCDEF BIT,02,40,A+Z 67 | OPCDEF BMI,03,60,R 68 | OPCDEF BNE,03,320,R 69 | OPCDEF BPL,03,20,R 70 | OPCDEF BRK,00,0 71 | OPCDEF BVC,03,120,R 72 | OPCDEF BVS,03,160,R 73 | OPCDEF CLC,00,30 74 | OPCDEF CLD,00,330 75 | OPCDEF CLI,00,130 76 | OPCDEF CLV,00,270 77 | OPCDEF CMP,02,301,MOST 78 | OPCDEF CPX,02,340,I+A+Z+SPEC 79 | OPCDEF CPY,02,300,I+A+Z+SPEC 80 | OPCDEF DEC,02,302,A+Z+ZX+AX,DES 81 | OPCDEF DEX,00,312 82 | OPCDEF DEY,00,210 83 | OPCDEF EOR,02,101,MOST 84 | OPCDEF INC,02,342,A+Z+ZX+AX,DES 85 | OPCDEF INX,00,350 86 | OPCDEF INY,00,310 87 | OPCDEF JMP,03,100,A+N+SPEC 88 | OPCDEF JSR,03,24,A 89 | OPCDEF LDA,02,241,MOST 90 | OPCDEF LDX,02,242,I+A+Z+ZY+AY+SPEC 91 | OPCDEF LDY,02,240,I+A+Z+ZX+AX+SPEC 92 | OPCDEF LSR,02,102,A+Z+AC+ZX+AX,DES 93 | OPCDEF NOP,00,352 94 | OPCDEF ORA,02,1,MOST 95 | OPCDEF PHA,00,110 96 | OPCDEF PHP,00,10 97 | OPCDEF PLA,00,150 98 | OPCDEF PLP,00,50 99 | OPCDEF ROL,02,42,A+Z+AC+ZX+AX,DES 100 | OPCDEF ROR,02,142,A+Z+AC+ZX+AX,DES 101 | OPCDEF RTI,00,100 102 | OPCDEF RTS,00,140 103 | OPCDEF SBC,02,341,MOST 104 | OPCDEF SEC,00,70 105 | OPCDEF SED,00,370 106 | OPCDEF SEI,00,170 107 | OPCDEF STA,02,201,MOST-I,DES 108 | OPCDEF STX,02,202,A+Z+ZY+SPEC,DES 109 | OPCDEF STY,02,200,A+Z+ZX+SPEC,DES 110 | OPCDEF TAX,00,252 111 | OPCDEF TAY,00,250 112 | OPCDEF TSX,00,272 113 | OPCDEF TXA,00,212 114 | OPCDEF TXS,00,232 115 | OPCDEF TYA,00,230 116 | .PAGE 117 | DIRDEF , DFLGBM 118 | DIRDEF , DFLGBM 119 | DIRDEF , DFLGBM 120 | ASCTSY: 121 | DIRDEF , , XREL 122 | DIRDEF 123 | DIRDEF , DFLGEV 124 | DIRDEF , , XREL 125 | DIRDEF , DFLGBM 126 | DIRDEF 127 | DIRDEF , , XREL 128 | .IF DF YPHASE 129 | DIRDEF 130 | .ENDC 131 | DIRDEF 132 | DIRDEF 133 | DIRDEF 134 | DIRDEF 135 | DIRDEF 136 | DIRDEF , DFLCND 137 | DIRDEF , DFLMAC, XMACRO 138 | DIRDEF , DFLMAC, XMACRO 139 | DIRDEF 140 | DIRDEF 141 | DIRDEF , , XREL 142 | DIRDEF , , XREL 143 | DIRDEF 144 | DIRDEF , DFLCND 145 | DIRDEF , DFLCND 146 | DIRDEF , DFLCND 147 | DIRDEF , DFLCND 148 | DIRDEF , DFLCND 149 | DIRDEF , DFLCND 150 | DIRDEF , DFLCND 151 | DIRDEF , DFLCND 152 | DIRDEF , DFLCND 153 | DIRDEF , DFLCND 154 | DIRDEF , DFLCND 155 | DIRDEF , DFLCND 156 | DIRDEF , DFLCND 157 | DIRDEF , DFLCND 158 | DIRDEF , DFLCND 159 | DIRDEF , DFLCND 160 | DIRDEF 161 | DIRDEF 162 | DIRDEF , DFLMAC, XMACRO 163 | DIRDEF , DFLMAC, XMACRO 164 | DIRDEF , DFLGEV, XREL 165 | DIRDEF 166 | DIRDEF 167 | DIRDEF , DFLMAC, XMACRO 168 | DIRDEF , DFLMAC, XMACRO 169 | DIRDEF , DFLSMC, XSML 170 | DIRDEF , , XMACRO 171 | DIRDEF , , XMACRO 172 | DIRDEF , , XMACRO 173 | DIRDEF 174 | DIRDEF 175 | DIRDEF 176 | .IF DF YPHASE 177 | DIRDEF 178 | .ENDC 179 | DIRDEF 180 | .IF DF RSX11D 181 | DIRDEF 182 | .ENDC 183 | DIRDEF 184 | DIRDEF , DFLGEV 185 | .IF NDF XBAW 186 | DIRDEF 187 | .ENDC 188 | DIRDEF , DFLMAC, XMACRO 189 | DIRDEF 190 | DIRDEF 191 | DIRDEF <VCTRS> 192 | WRDSYM: 193 | DIRDEF <WORD >, DFLGEV 194 | 195 | 196 | PSTTOP: ;TOP LIMIT 197 | 198 | .END 199 | 7�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� -------------------------------------------------------------------------------- /org-talk/demonstration.org: -------------------------------------------------------------------------------- 1 | #+title: Atari Coin-Op Game Development Demo 2 | #+author: Thomas Cherryhomes 3 | #+email: thom.cherryhomes@gmail.com 4 | 5 | >* I. GOAL 6 | 7 | Demonstrate Atari Coin-Op's 6502 Macro Assembler for PDP-11 8 | in context. 9 | 10 | [[https://i.ebayimg.com/images/g/vb0AAOSwiXFgxZ5P/s-l1600.jpg][Centipede Cabinet]] 11 | 12 | - A quick overview of PDP-11 Development System 13 | 14 | - Modify original Centipede coin-op source code, assemble, 15 | link, and cut up into ROMs. 16 | 17 | - Run new ROMs on MAME as "ersatz" black box. 18 | 19 | * CENTIPEDE 20 | 21 | - [[https://pisces.bbystatic.com/image2/BestBuy_US/images/products/6264/6264911_rd.jpg][Cabinet]] 22 | - [[shell:xviewer ./centipede-screen.png][Screenshot]] 23 | - [[https://uploads.tapatalk-cdn.com/20170909/40cce19b998f564161b542bff9edfb3b.jpg][Board]] 24 | 25 | - Developed by Atari throughout 1980 26 | - Revision 2 released 5/28/81 27 | - 6502 CPU 28 | - Stamps for player and enemies 29 | - Tile playfield for mushrooms/messages/score/etc. 30 | - 2 bits per pixel, 4 colors for playfield and each stamp 31 | 32 | * OVERVIEW OF DEVELOPMENT SYSTEM 33 | 34 | - [[https://gunkies.org/w/images/e/e8/PDP11-20.jpg][PDP 11/20]] 35 | - 16-bit mini-computer from 1970 36 | - 32 kW of memory 37 | - 3 [[https://upload.wikimedia.org/wikipedia/commons/9/94/RK05.jpg][RK05]] 2.5 megabyte cartridge drives 38 | - 1 [[https://i0.wp.com/avitech.com.au/wp-content/uploads/2016/08/rx01-front.jpg][RX01]] floppy disk 39 | - 1 [[https://i.ytimg.com/vi/l--OHNxXFeE/maxresdefault.jpg][PC05]] paper tape reader and punch 40 | - 1 [[https://upload.wikimedia.org/wikipedia/commons/9/99/DEC_VT100_terminal.jpg][VT100]] as system console terminal 41 | - OS: RT-11 V4 (1979) 42 | 43 | * OVERVIEW OF BLACK BOX 44 | 45 | - Emulating Centipede board 46 | - Taking paper tape input to create EPROMS 47 | - MAME debugger is substitute for HP 1611A Logic Analyser 48 | 49 | (using paper tape is an example of the improvisation needed by old school developers, to get artifacts to their destination, and is not indicative of the exact process used at ATARI.) 50 | 51 | * STEP 1: EDIT CODE 52 | 53 | - Boot into RT-11 54 | - Use KED to make code change (CENIR2.MAC) 55 | - SY: disk is RK05, containing OS, and tools. 56 | - DK1: disk is RK05, containing source code. 57 | - VT100 is used as system console by programmer. 58 | 59 | - VT100 Keys used in KED: 60 | ESC OP (PF1) 61 | ESC Ow (KP7) 62 | ESC OM (KPENTER) 63 | CTRL-BACKSPACE (DEL) 64 | * STEP 2: ASSEMBLE CODE 65 | 66 | - Assign DK to DK1 to make things easier 67 | 68 | #+BEGIN_EXAMPLE 69 | .ASSIGN RK1 DK 70 | #+END_EXAMPLE 71 | 72 | - Call MAC65 to assemble code: 73 | 74 | #+BEGIN_EXAMPLE 75 | .R MAC65 76 | *CENTI2=CENTI2 77 | *CENIR2=CENIR2 78 | *CENTS2=CENTS2 79 | *CENPIC=CENPIC 80 | *SYNC2=SYNC2 81 | ^C 82 | #+END_EXAMPLE 83 | 84 | - Object files are now present on DK1: 85 | 86 | * STEP 3: RUN LINKM TO PRODUCE ABSOLUTE BINARY 87 | 88 | - Call LINKM to produce absolute SAV file. 89 | 90 | #+BEGIN_EXAMPLE 91 | .R LINKM 92 | DK2:CENTI2,CENTI2.XX=CENTI2,CENIR2,CENTS2 93 | DK2:CENPIC,CENPIC.XX=CENPIC 94 | DK2:SYNC2,SYNC2.XX=SYNC2 95 | ^C 96 | #+END_EXAMPLE 97 | 98 | - Two types of files now on DK2: 99 | .SAV an absolute memory image 100 | .XX the symbol map, with addresses for each public symbol 101 | 102 | * STEP 4: SEND FILES TO BLACK BOX VIA PAPER TAPE 103 | 104 | - We need to send three files: 105 | CENTI2.SAV 106 | CENPIC.SAV 107 | SYNC.SAV 108 | 109 | - For each, we: 110 | Ready the punch. 111 | 112 | #+BEGIN_EXAMPLE 113 | ^E 114 | sim> att ptp centi2.sav 115 | sim> cont 116 | #+END_EXAMPLE 117 | 118 | - Then we COPY the file to the punch, which creates the tape. 119 | 120 | #+BEGIN_EXAMPLE 121 | .COPY DK2:CENTI2.SAV PC: 122 | #+END_EXAMPLE 123 | 124 | Then we do the same for CENPIC.SAV, and SYNC2.SAV 125 | 126 | - The paper tape is then read into the development box 127 | (not shown) 128 | 129 | * STEP 5: CUT THE SAV file into the ROM images 130 | 131 | - The SAV files are absolute images, starting at address 0 132 | 133 | - CENTI2, therefore has an 8K gap at beginning. 134 | 135 | - We need to splice the SAV file into 2716 EPROM images, 136 | 2048 bytes each. 137 | 138 | - At ATARI, a tool called IMGFIL was used. We don't have it, 139 | but we can recreate its behavior using 'dd' under Linux: 140 | 141 | #+BEGIN_EXAMPLE 142 | dd if=centi2.sav of=/home/thomc/Workspace/mame/roms/centiped2/136001-207.d1 bs=1 count=2048 skip=8192 143 | dd if=centi2.sav of=/home/thomc/Workspace/mame/roms/centiped2/136001-208.e1 bs=1 count=2048 skip=10240 144 | dd if=centi2.sav of=/home/thomc/Workspace/mame/roms/centiped2/136001-209.fh1 bs=1 count=2048 skip=12288 145 | dd if=centi2.sav of=/home/thomc/Workspace/mame/roms/centiped2/136001-210.j1 bs=1 count=2048 skip=14336 146 | dd if=cenpic.sav of=/home/thomc/Workspace/mame/roms/centiped2/136001-211.f7 bs=1 count=2048 147 | dd if=cenpic.sav of=/home/thomc/Workspace/mame/roms/centiped2/136001-212.hj7 bs=1 count=2048 skip=2048 148 | dd if=sync2.sav of=/home/thomc/Workspace/mame/roms/centiped2/136001-213.p4 bs=1 count=256 149 | #+END_EXAMPLE 150 | 151 | * STEP 6: START THE BLACK BOX AND TEST THE RESULT 152 | 153 | #+START_EXAMPLE 154 | $ cd ~/Workspace/mame 155 | $ ./mamed -debug -window centiped2 156 | #+END_EXAMPLE 157 | 158 | * REFERENCES 159 | 160 | - The atari-coin-op-assembler repo: 161 | https://github.com/tschak909/atari-coin-op-assembler 162 | 163 | - The SimH emulator: 164 | https://github.com/simh/simh 165 | 166 | - The atari coin op tools originally from: 167 | https://bitsavers.org/bits/Atari/arcade/atari_tools.zip 168 | 169 | - The HistoricalSource repo on GitHub: 170 | https://github.com/historicalsource 171 | 172 | Thanks to: 173 | 174 | Al Kossow, for Bitsavers 175 | Jim Geist, for helping debug the toolchain 176 | HistoricalSource, for posting all the source code for study 177 | 178 | -------------------------------------------------------------------------------- /centipede/CENTI.DOC: -------------------------------------------------------------------------------- 1 | PROJECT NUMBER:30203 PROJECT PROGRAMMER:DONA BAILEY/ED LOGG PROJECT LEADER: 2 | 3 | DOCUMENTATION DISK(S):34A PROJECT NAME:CENTIPEDE DATE:5/11/81 4 | 5 | 6 | 7 | RELEASE INFORMATION: 8 | 9 | 10 | PART NUMBER PCB LOCATION DESCRIPTION START ADDR. RELEASE FILE NAME GENERIC FNAME PART SIZE BITS USED 11 | 12 | 13 | 136001-103 D1 PROGRAM ROM 2000 136001.103 8316 2KX8 ALL 14 | 136001-104 E1 2800 136001.104 8316 2KX8 ALL 15 | 136001-105 F/H1 3000 136001.105 8316 2KX8 ALL 16 | 136001-106 J1 3800 136001.106 8316 2KX8 ALL 17 | 18 | 136001-101 F7 PICTURE ROM 0 136001.101 8316 2KX8 ALL 19 | 136001-102 H/J7 800 136001.102 8316 2KX8 ALL 20 | 21 | 22 | 23 | 136001-107 D1 PROGRAM EROM 2000 136001.107 2716 2KX8 ALL 24 | 136001-108 E1 2800 136001.108 2716 2KX8 ALL 25 | 136001-109 F/H1 3000 136001.109 2716 2KX8 ALL 26 | 136001-110 J1 3800 136001.110 2716 2KX8 ALL 27 | 28 | 136001-111 F7 PICTURE EROM 0 136001.111 2716 2KX8 ALL 29 | 136001-112 H/J7 800 136001.112 2716 2KX8 ALL 30 | 31 | 32 | 136001-113 P4 SYNC N/A 136001.113 825S129 256X4 BITS 3-0 33 | 34 | 35 | 36 | GENERAL INFORMATION: 37 | 38 | ASSEMBLER USED:MAC65 39 | 40 | MAIN PROGRAM SOURCE FILES: 41 | 42 | INCLUDES:CENDEF 43 | FILES:CENTI,CENIRQ,CENTST 44 | 45 | PICTURE FILE:CENPIC (MAC65 FILE CONTAINING ALL CENTIPEDE PICTURES) 46 | 47 | 48 | 49 | LINKER USED:LINKM 50 | 51 | LINK COMMAND:CENTI,CENIRQ,CENTST 52 | 53 | 54 | COMMAND FILES:CENTI.COM 55 | 56 | DOCUMENTATION FILE:CENTIP.DOC (PIP FILE DOCUMENTING GAME PLAY AND OPTION SWITCHES) 57 | 58 | 59 | 60 | GENERAL ROMS/PROMS: PART # SOURCE FILE PART # SOURCE FILE 61 | 136001.113 SYNC.ROM 62 | PROJECT NUMBER:30203 PROJECT PROGRAMMER:DONA BAILEY/ED LOGG PROJECT LEADER: 63 | 64 | DOCUMENTATION DISK(S):34B PROJECT NAME:CENTIPEDE DATE 5/28/81 65 | 66 | 67 | 68 | RELEASE INFORMATION: 69 | 70 | 71 | 72 | PART NUMBER PCB LOCATION DESCRIPTION START ADDR. RELEASE FILE NAME GENERIC NAME PART SIZE BITS USED 73 | 74 | 75 | 136001-203 D1 PROGRAM ROM 2000 136001.203 8316 2KX8 ALL 76 | 136001-204 E1 2800 136001.204 8316 2KX8 ALL 77 | 136001-205 F/H1 3000 136001.205 8316 2KX8 ALL 78 | 136001-206 J1 3800 136001.206 8316 2KX8 ALL 79 | 80 | 136001-201 F7 PICTURE ROM 0 136001.201 8316 2KX8 ALL 81 | 136001-202 H/J7 800 136001.202 8316 2KX8 ALL 82 | 83 | 84 | 85 | 136001-207 D1 PROGRAM EPROM 2000 136001.207 2716 2KX8 ALL 86 | 136001-208 E1 2800 136001.208 2716 2KX8 ALL 87 | 136001-209 F/H1 3000 136001.209 2716 2KX8 ALL 88 | 136001-210 J1 3800 136001.210 2716 2KX8 ALL 89 | 90 | 136001-211 F7 PICTURE EPROM 0 136001.211 2716 2KX8 ALL 91 | 136001-212 H/J7 800 136001.212 2716 2KX8 ALL 92 | 93 | 136001-213 P4 SYNC N/A 136001.213 825S129 256X4 BITS 3-0 94 | 95 | 96 | GENERAL INFORMATION: 97 | 98 | ASSEMBLER USED:MAC65 99 | 100 | MAIN PROGRAM SOURCE FILES: 101 | 102 | INCLUDES:CENDEF 103 | FILES:CENTI2,CENIR2,CENTS2 104 | 105 | PICTURE FILE:CENPIC (MAC65 FILE CONTAINING ALL CENTIPEDE PICTURES) 106 | 107 | 108 | LINKER USED:LINKM 109 | 110 | LINK COMMAND:CENTI2,CENIR2,CENTS2 111 | 112 | 113 | COMMAND FILES:CENTI2.COM 114 | 115 | DOCUMENTATION FILE:CENTP2.DOC (PIP FLE DOCUMENTING GAME PLAY AND OPTION SWITCHES) 116 | 117 | 118 | GENERAL ROMS/PROMS: PART # SOURCE FILE PART # SOURCE FILE 119 | 136001.213 SYNC2.ROM 120 | 121 | 122 | PROJECT NUMBER: 30203 PROJECT PROGRAMMER: ED LOGG/DONA BAILEY PROJECT LEADER: 123 | 124 | DOCUMENTATION DISK(S): 34C PROJECT NAME: CENTIPEDE DATE: 7/14/81 125 | 126 | 127 | 128 | 129 | RELEASE INFORMATION: 130 | 131 | PART NUMBER PCB LOCATION DESCRIPTION START ADDR. RELEASE FILE NAME GENERIC NAME PART SIZE BITS USED 132 | 133 | 136001-303 D1 PROGRAM ROM 2000 136001.303 8316 2KX8 0-7 134 | 136001-304 E1 2800 136001.304 8316 2KX8 0-7 135 | 136001-305 F/H1 3000 136001.305 8316 2KX8 0-7 136 | 136001-306 J1 3800 136001.306 8316 2KX8 0-7 137 | 138 | 139 | 140 | 141 | 136001-307 D1 PROGRAM EPROM 2000 136001.307 2716 2KX8 0-7 142 | 136001-308 E1 2800 136001.308 2716 2KX8 0-7 143 | 136001-309 F/H1 3000 136001.309 2716 2KX8 0-7 144 | 136001-310 J1 3800 136001.310 2716 2KX8 0-7 145 | 146 | 147 | 148 | 149 | 136001-313 P4 SYNC PROM N/A 136001.313 825S129 256X4 BITS 3-0 150 | 151 | 152 | 153 | 154 | GENERAL INFORMATION: 155 | 156 | ASSEMBLER USED: MAC65 157 | 158 | MAIN PROGRAM SOURCE FILES: 159 | 160 | INCLUDES: CENDEF 161 | 162 | FILES: CENTI3, CENIR3, CENTS3 163 | 164 | LINKER USED: LINKM 165 | 166 | LINK COMMAND: CENTI3, CENIR3, CENTS3 167 | 168 | COMMAND FILES: CENTI3.COM 169 | 170 | 171 | 172 | GENERAL ROMS/PROMS: PART # SOURCE FILE PART # SOURCE FILE 173 | 174 | 136001-313 SYNC3.ROM 175 | PROJECT NUMBER:30203 PROJECT PROGRAMMER:ED LOGG PROJECT LEADER: 176 | 177 | DOCUMENTATION DISK(S):34D PROJECT NAME:CENTIPEDE 4 DATE:9/23/81 178 | 179 | RELEASE INFORMATION: 180 | 181 | 182 | PART NUMBER PCB LOCATION DESCRIPTION START ADDR. RELEASE FILE NAME GENERIC NAME PART SIZE BITS USED 183 | 184 | 185 | 136001-407 D1 PROGRAM EPROM 2000 136001.407 2716 2KX8 0-7 186 | 136001-408 E1 2800 136001.408 2716 2KX8 0-7 187 | 136001-409 F/H1 3000 136001.409 2716 2KX8 0-7 188 | 136001-410 J1 3800 136001.410 2716 2KX8 0-7 189 | 190 | 191 | 192 | GENERAL INFORMATION: 193 | 194 | ASSEMBLER USED:@ CENTI4.COM (MAC65) 195 | 196 | MAIN PROGRAM SOURCE FILES: 197 | 198 | INCLUDES:CENDE4,COIN65 199 | FILES:CENTI4,CENIR4,CENTS4 200 | 201 | 202 | 203 | 204 | LINKER USED:LINKM 205 | 206 | LINK COMMAND:@ CENTI4.COM (CENTI4,CENIR4,CENTS4) 207 | 208 | COMMAND FILES:CENTI4.COM 209 | 210 | DOCUMENTATION FILE:NONE 211 | 212 | 213 | 214 | GENERAL ROMS/PROMS:NONE 215 | ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� -------------------------------------------------------------------------------- /atari_tools/e2_tools/OPC68.MAC: -------------------------------------------------------------------------------- 1 | ; 1-JUL-78 2 | ; 15:30:00 3 | .TITLE OP CODE PROCESSOR 6800 4 | 5 | .MACRO CALL S 6 | JSR PC,S 7 | .ENDM 8 | 9 | .MACRO GENCAL NAME 10 | .MACRO NAME 11 | JSR PC,NAME 12 | .ENDM NAME 13 | .ENDM GENCAL 14 | 15 | GENCAL STCODE 16 | GENCAL SETIMM 17 | GENCAL SAVREG 18 | GENCAL GETSYM 19 | GENCAL SETSYM 20 | GENCAL GETNB 21 | GENCAL TSTARG 22 | GENCAL GLBEXP 23 | GENCAL ABSEXP 24 | GENCAL RELEXP 25 | GENCAL GETNB 26 | 27 | .MACRO RETURN 28 | RTS PC 29 | .ENDM 30 | 31 | .MACRO AMM Z 32 | .IRP X,Z 33 | AM.'X=..AMI 34 | ..AMI=..AMI+..AMI 35 | .RAD50 /X/ 36 | .ENDR 37 | .ENDM AMM 38 | 39 | ..AMI=1 40 | AMCHR: 41 | AMM <<<I >,<D >,<X >,<E >,<S >>> 42 | AMCSZE=.-AMCHR 43 | .WORD 0 44 | ..AMI=1 45 | AMM <<<I >,<Z >,<X >,<A >,<S >>> ;ALTERNATE AM'S 46 | .WORD 0 47 | AM.SPC=..AMI 48 | 49 | AM.SPC=..AMI 50 | 51 | .MACRO PUSH ARG 52 | MOV ARG,-(SP) 53 | .ENDM 54 | 55 | .MACRO PULL ARG 56 | MOV (SP)+,ARG 57 | .ENDM 58 | 59 | .MCALL .REGDEF 60 | .REGDEF 61 | 62 | .MACRO ERROR CHR 63 | BIS #ERR.'CHR,ERRBTS 64 | .ENDM 65 | 66 | ERRI=1 67 | .IRPC X,< ABDEILMNOPQRTUZ> 68 | ERR.'X=ERRI 69 | ERRI=ERRI+ERRI 70 | .ENDR 71 | .PAGE 72 | OPCODE: ;PROCESS OPCODE 73 | MOV #77776,PCRCNT ;LIST LOCATION OF FIRST BYTE ONLY 74 | INC BYTMOD ;ALL OPCODES ARE BYTE MODE 75 | BIC #-256.,R1 ;GET VALUE 76 | MOV VALUE,OPCMAP ;GET COPY OF AM 77 | MOV R1,(R4) ;REPLACE VALUE 78 | SETIMM ;CONVERT TO OBJECT FORMAT 79 | STCODE ;INSERT INTO CODROL 80 | NOP 81 | CLR (R4) ;RESET VALUE 82 | MOVB OPCMAP+1,CRFDFL+1 ;PASS DES FLAG 83 | 1$: PULL R1 ;PRUNE STACK 84 | TST OPCMAP ;ANY OPERANDS REQUIRED? 85 | BEQ CPOPJ ;NOPE.DONE 86 | TSTARG ;SPACE TO OPERAND 87 | BNE 3$ ;OPERAND PRESENT 88 | BIT #AM.S,OPCMAP ;BRANCH INSTRUCTION? 89 | BEQ 2$ ;NO 90 | JMP BRERR ;DO BRANCH ERROR 91 | 2$: CLR BYTMOD ;2 BYTES OF ZEROES 92 | ERROR A 93 | SETIMM 94 | STCODE 95 | MOV #^H30,R0 ;FORCE TO EXTENDED MODE 96 | BR 4$ 97 | 3$: CALL OPRAND ;PROCESS OPERAND 98 | 4$: MOV ROLBAS+12,R1 ;ADDRESS OF OPCODE 99 | ADD 6(R1),R0 ;UPDATE OPCODE TO CORRECT ADDRESS MODE 100 | MOVB R0,6(R1) ;STUFF IT BACK 101 | CPOPJ: RETURN ;EXIT 102 | .PAGE 103 | .SBTTL OPERAND PROCESSOR 104 | .ENABL LSB 105 | 106 | .GLOBL GETNB,ED.AMA,EDMASK,SYMBOL 107 | 108 | 109 | GLBFLG =100 110 | RELFLG =040 111 | DEFFLG =010 112 | 113 | OPRAND: SAVREG ;1 OR 2 OPERANDS REQUIRED 114 | CMP #'#,R5 ;IMMEADIATE MODE REQUEST? 115 | BNE 8$ ;NOPE 116 | GETNB ;YES. SKIP OVER IT 117 | MOV #1,R2 ;SIGNAL IMMEADIATE MODE 118 | CLR R1 119 | JMP OPR0 ;GO PROCESS AS RQD 120 | 8$: GETSYM ;TRY FOR AM SYMBOL 121 | BNE 1$ ;FOUND SOMETHING 122 | 5$: SETSYM ;NO AM FOUND. MUST BE SOMETHING ELSE 123 | BIT #AM.S,OPCMAP ;BRANCH? 124 | BEQ 2$ ;NO 125 | JMP BRTST 126 | 2$: GLBEXP ;THIS GUY IS NOT AN AM 127 | PUSH #<^H10> ;START WITH ZERO PAGE MODE 128 | CMP #'(,R5 ;(X) OPTION? 129 | BNE 23$ ;NOPE 130 | GETNB ;GET THE CONTENTS 131 | CMP #'X,R5 ;BETTER BE AN 'X' 132 | BNE 18$ ;IT AIN'T. Q ERROR 133 | GETNB ;NEXT 134 | CMP #'),R5 ;CLOSE? 135 | BNE 18$ ;NOPE. Q ERROR 136 | GETNB ;SKIP OVER ')' 137 | BIT #AM.X,OPCMAP ;LEGAL? 138 | BEQ 18$ ;NOPE. ERROR 139 | MOV #32.,(SP) ;X MODE 140 | BR OPXIT ;DONE 141 | 23$: BIT #AM.D,OPCMAP ;ZERO PAGE ADDRESSING ALLOWED? 142 | BEQ FABS ;NO. DEFAULT TO ABSOLUTE 143 | BIT #ED.AMA,EDMASK ;DEFAULT OPTIONS? 144 | BNE OPXIT ;NO. NORMAL PATH 145 | BIT #ERR.U!ERR.A,ERRBTS ;ANY ERRORS? 146 | BNE FABS ;YEP. FORCE EXTENDED MODE 147 | BITB #GLBFLG!RELFLG,MODE ;IS IT EXTERNAL OR RELOCATABLE? 148 | BNE FABS ;YES. FORCE EXTENDED 149 | BIT #-256.,R0 ;PAGE 0? 150 | BEQ OPXIT ;YES.OK 151 | BR FABS 152 | 18$: ERROR A 153 | FABS: MOV #^H30,(SP) ;ABSOLUTE ADDRESS MODE 154 | CLR BYTMOD ;SET TO WORD MODE 155 | BR OPXIT 156 | 157 | 1$: CLR R1 158 | 15$: MOV #1,R2 159 | 4$: TST AMCHR(R1) ;END OF TABLE? 160 | BEQ 14$ ;NOT AN AM SYMBOL 161 | CMP R0,AMCHR(R1) ;AM? 162 | BEQ 13$ ;YES 163 | ASL R2 164 | INC R1 165 | INC R1 166 | BR 4$ 167 | 14$: CMP R1,#AMCSZE ;ALTERNATE ADDRESS MODE SYMBOL SEARCH 168 | BNE 5$ ;NO SYMBOL FOUND 169 | INC R1 ;SKIP OVER ZERO 170 | INC R1 171 | BR 15$ 172 | 13$: CMP R1,#AMCSZE 173 | BMI 16$ 174 | SUB #AMCSZE+2,R1 175 | 16$: CMP #',,R5 ;NEXT THING A COMMA? 176 | BNE 5$ ;NOPE. THIS IS A LABEL 177 | INC EXPFLG ;EXPECT A COMMA 178 | TSTARG ;SKIP OVER AM SYMBOL 179 | .DSABL LSB 180 | OPR0: BIT R2,OPCMAP ;AM LEGAL FOR THIS INSTRUCTION? 181 | BNE 6$ ;YES 182 | BIT #AM.S,OPCMAP ;BRANCH INSTRUCTION? 183 | BNE BRERR ;YEP. SET BRANCH ERROR 184 | PUSH #<^H30> ;EXTENDED MODE 185 | ERROR A ;ERROR 186 | BR 7$ ;EXIT 187 | 6$: ASL R1 ;COMPUTE OPCODE MODIFIER 188 | ASL R1 189 | ASL R1 190 | BIT #AM.S,R2 ;AM = 'S' 191 | BNE BRANCH ;YES. PROCESS BRANCH 192 | PUSH R1 ;STUFF MODIFIER 193 | BIT #AM.E,R2 ;EXTENDED ADDRESS MODE? 194 | BNE 7$ ;YES. FORCE TO WORD MODE 195 | BIT #AM.I,R2 ;IMMEADIATE MODE? 196 | BEQ COMXIT ;NOPE. NORMAL INSTRUCTION 197 | BIT #AM.SPC,OPCMAP ;LONG IMMEADIATE? 198 | BEQ COMXIT 199 | ; BNE 7$ ;YES. FORCE TO WORD MODE 200 | 201 | 7$: CLR BYTMOD ;WORD MODE 202 | COMXIT: GLBEXP ;PROCESS OPERAND 203 | OPXIT: SETIMM 204 | STCODE 205 | PULL R0 206 | RETURN 207 | .PAGE 208 | 209 | .ENABL LSB 210 | BRTST: RELEXP ;CAN'T BE GLOBL 211 | SUB CLCLOC,R0 ;COMPUTE DISPLACMENT 212 | CLRB MODE ;DISREGARD RELOCATION FLAGS 213 | CLR RELLVL 214 | CMPB SECTOR,CLCSEC ;CAN'T BRANCH ACROSS A CSECT 215 | BNE BRERR ;THE DUMMY TRIED IT ANYWAY 216 | BR BRCH 217 | BRANCH: ABSEXP ;GET NUMBER. (BR S,+-NUMBER) 218 | BRCH: SUB #2,R0 ;COMPUTE DISPLACEMENT 219 | BPL 3$ 220 | ADD #400,R0 ;ALL 1'S IN HIGH BYTE? 221 | BMI BRERR ;NO.ERROR OFFSET OUT OF RANGE 222 | TSTB R0 ;>128? 223 | BPL BRERR ;ERROR. OFFSET OUT OF RANGE 224 | 5$: BIC #256.,R0 ;RESET ANY HIGH BITS 225 | MOV R0,VALUE 226 | BR 6$ 227 | 3$: BIT #-128.,R0 ;>127? 228 | BEQ 5$ ;YEP. 229 | BRERR: MOV #376,VALUE ;SET TO BR S,0 230 | ERROR A 231 | 6$: CLR -(SP) ;NO OPCODE MODIFIER 232 | BR OPXIT ;DONE 233 | 234 | OPCMAP: .BLKW 1 235 | .DSABL LSB 236 | .END 237 | ����������������� -------------------------------------------------------------------------------- /atari_tools/e3_tools/M69TST.MAC: -------------------------------------------------------------------------------- 1 | .TITLE M69TST MAC69 OPCODE GENERATOR TEST 2 | .LIST MEB 3 | .NLIST CND 4 | 5 | DES=100000 ;DESTRUCTIVE TO OPERAND (FOR CREF) 6 | 7 | AM.I =0001 ;IMMEDIATE 8 | AM.D =0002 ;DIRECT 9 | AM.X =0004 ;INDEXED 10 | AM.E =0010 ;EXTENDED 11 | AM.S =0020 ;BRANCH 12 | AM.SPC =0040 ;IMMEDIATE REQUIRES 2 BYTES 13 | AM.SPD =0100 ;DIRECT PAGE=OX 14 | OPC10 =0200 ;UPPER BYTE=10 15 | OPC11 =0400 ;UPPER BYTE=11 16 | AM.SPL =1000 ;LONG BRANCH 17 | I =AM.I 18 | D =AM.D 19 | X =AM.X 20 | E =AM.E 21 | S =AM.S 22 | SPC =AM.SPC 23 | SPDP =AM.SPD 24 | SP10 =OPC10 25 | SPC10 =OPC10 26 | SP11 =OPC11 27 | SPC11 =OPC11 28 | 29 | SPL =AM.SPL 30 | MOST=I!D!X!E 31 | 32 | SHFTAM =D!X!E!SPDP!DES 33 | 34 | LONG =5+SP10+SPL 35 | 36 | .MACRO OPCDEF OP,VAL,MODE 37 | .IF NB,MODE 38 | .IF EQ,MODE 39 | OP 40 | .MEXIT 41 | .IFF 42 | .IIF NE,AM.I&MODE,OP #DATA 43 | .IIF NE,AM.D&MODE,OP D,DATA 44 | .IIF NE,AM.E&MODE,OP E,DATA 45 | .IIF NE,AM.S&MODE,OP . 46 | .IF NE,AM.X&MODE 47 | OP DATA 48 | OP (Y) 49 | OP (X) 50 | OP (S)+ 51 | OP (U)++ 52 | OP @(X)+ 53 | OP @(Y)++ 54 | OP 0(S) 55 | OP 10.(U) 56 | OP 100.(X) 57 | OP 1000.(Y) 58 | OP @0(X) 59 | OP @-10.(Y) 60 | OP @-100.(S) 61 | OP @-1000.(U) 62 | OP DATA(PC) 63 | OP @DATA(PC) 64 | OP -(X) 65 | OP --(Y) 66 | OP @-(S) 67 | OP @--(U) 68 | OP NE,DATA 69 | OP 5,DATA(Y) 70 | OP 8,DATA(X) 71 | .ENDC 72 | .ENDC 73 | .ENDC 74 | .ENDM 75 | 76 | DATA =5 77 | .PAGE 78 | .RADIX 16. 79 | OPCDEF <ABX >,03A 80 | OPCDEF <ADCA >,089,MOST 81 | OPCDEF <ADCB >,0C9,MOST 82 | OPCDEF <ADDA >,08B,MOST 83 | OPCDEF <ADDB >,0CB,MOST 84 | OPCDEF <ADDD >,0C3,MOST+SPC 85 | OPCDEF <ANDA >,084,MOST 86 | OPCDEF <ANDB >,0C4,MOST 87 | OPCDEF <ANDCC >,01C,I 88 | OPCDEF <ASL >,048,SHFTAM 89 | OPCDEF <ASLA >,048 90 | OPCDEF <ASLB >,058 91 | OPCDEF <ASR >,047,SHFTAM 92 | OPCDEF <ASRA >,047 93 | OPCDEF <ASRB >,057 94 | OPCDEF <BCC >,024,S 95 | OPCDEF <BCS >,025,S 96 | OPCDEF <BEQ >,027,S 97 | OPCDEF <BGE >,02C,S 98 | OPCDEF <BGT >,02E,S 99 | OPCDEF <BHI >,022,S 100 | OPCDEF <BHIS >,024,S 101 | OPCDEF <BHS >,024,S 102 | OPCDEF <BITA >,085,MOST 103 | OPCDEF <BITB >,0C5,MOST 104 | OPCDEF <BLE >,02F,S 105 | OPCDEF <BLO >,025,S 106 | OPCDEF <BLOS >,025,S 107 | OPCDEF <BLS >,023,S 108 | OPCDEF <BLT >,02D,S 109 | OPCDEF <BMI >,02B,S 110 | OPCDEF <BNE >,026,S 111 | OPCDEF <BPL >,02A,S 112 | OPCDEF <BRA >,020,S 113 | OPCDEF <BRN >,021,S 114 | OPCDEF <BSR >,08D,S 115 | OPCDEF <BVC >,028,S 116 | OPCDEF <BVS >,029,S 117 | OPCDEF <CLR >,04F,SHFTAM 118 | OPCDEF <CLRA >,04F 119 | OPCDEF <CLRB >,05F 120 | OPCDEF <CMPA >,081,MOST 121 | OPCDEF <CMPB >,0C1,MOST 122 | OPCDEF <CMPD >,083,MOST+SPC+SP10 123 | OPCDEF <CMPS >,08C,MOST+SPC+SP11 124 | OPCDEF <CMPU >,083,MOST+SPC+SP11 125 | OPCDEF <CMPX >,08C,MOST+SPC 126 | OPCDEF <CMPY >,08C,MOST+SPC+SP10 127 | OPCDEF <COM >,043,SHFTAM 128 | OPCDEF <COMA >,043 129 | OPCDEF <COMB >,053 130 | OPCDEF <CPA >,081,MOST 131 | OPCDEF <CPB >,0C1,MOST 132 | OPCDEF <CPD >,083,MOST+SPC+SP10 133 | OPCDEF <CPS >,08C,MOST+SPC+SP11 134 | OPCDEF <CPU >,083,MOST+SPC+SP11 135 | OPCDEF <CPX >,08C,MOST+SPC 136 | OPCDEF <CPY >,08C,MOST+SPC+SP10 137 | OPCDEF <CWAI >,03C,I 138 | OPCDEF <DAA >,019 139 | OPCDEF <DEC >,04A,SHFTAM 140 | OPCDEF <DECA >,04A 141 | OPCDEF <DECB >,05A 142 | OPCDEF <EORA >,088,MOST 143 | OPCDEF <EORB >,0C8,MOST 144 | SPCOPC <EXG >,01E 145 | OPCDEF <INC >,04C,SHFTAM 146 | OPCDEF <INCA >,04C 147 | OPCDEF <INCB >,05C 148 | OPCDEF <JMP >,04E,X+E 149 | OPCDEF <JSR >,08D,X+E 150 | OPCDEF <LBCC >,024,LONG 151 | OPCDEF <LBCS >,025,LONG 152 | OPCDEF <LBEQ >,027,LONG 153 | OPCDEF <LBGE >,02C,LONG 154 | OPCDEF <LBGT >,02E,LONG 155 | OPCDEF <LBHI >,022,LONG 156 | OPCDEF <LBHIS >,024,LONG 157 | OPCDEF <LBHS >,024,LONG 158 | OPCDEF <LBLE >,02F,LONG 159 | OPCDEF <LBLO >,025,LONG 160 | OPCDEF <LBLOS >,023,LONG 161 | OPCDEF <LBLS >,023,LONG 162 | OPCDEF <LBLT >,02D,LONG 163 | OPCDEF <LBMI >,02B,LONG 164 | OPCDEF <LBNE >,026,LONG 165 | OPCDEF <LBPL >,02A,LONG 166 | OPCDEF <LBRA >,016,LONG 167 | OPCDEF <LBRN >,021,LONG 168 | OPCDEF <LBSR >,017,S+SPL 169 | OPCDEF <LBVC >,028,LONG 170 | OPCDEF <LBVS >,029,LONG 171 | OPCDEF <LDA >,086,MOST 172 | OPCDEF <LDB >,0C6,MOST 173 | OPCDEF <LDD >,0CC,MOST+SPC 174 | OPCDEF <LDS >,08E,MOST+SPC+SP10 175 | OPCDEF <LDU >,0CE,MOST+SPC 176 | OPCDEF <LDX >,08E,MOST+SPC 177 | OPCDEF <LDY >,08E,MOST+SPC+SP10 178 | OPCDEF <LEAS >,012,X 179 | OPCDEF <LEAU >,013,X 180 | OPCDEF <LEAX >,010,X 181 | OPCDEF <LEAY >,011,X 182 | OPCDEF <LSL >,048,SHFTAM 183 | OPCDEF <LSLA >,048 184 | OPCDEF <LSLB >,058 185 | OPCDEF <LSR >,044,SHFTAM 186 | OPCDEF <LSRA >,044 187 | OPCDEF <LSRB >,054 188 | OPCDEF <MUL >,03D 189 | OPCDEF <NEG >,040,SHFTAM 190 | OPCDEF <NEGA >,040 191 | OPCDEF <NEGB >,050 192 | OPCDEF <NOP >,01 193 | OPCDEF <ORA >,08A,MOST 194 | OPCDEF <ORB >,0CA,MOST 195 | OPCDEF <ORCC >,01A,I 196 | SPCOPC <PSHS >,034 197 | SPCOPC <PSHU >,036 198 | SPCOPC <PULS >,035 199 | SPCOPC <PULU >,039 200 | OPCDEF <ROL >,049,SHFTAM 201 | OPCDEF <ROLA >,049 202 | OPCDEF <ROLB >,059 203 | OPCDEF <ROR >,046,SHFTAM 204 | OPCDEF <RORA >,046 205 | OPCDEF <RORB >,056 206 | OPCDEF <RTI >,03B 207 | OPCDEF <RTS >,039 208 | OPCDEF <SBCA >,082,MOST 209 | OPCDEF <SBCB >,0C2,MOST 210 | OPCDEF <SEX >,01D 211 | OPCDEF <STA >,087,D+X+E+DES 212 | OPCDEF <STB >,0C7,D+X+E+DES 213 | OPCDEF <STD >,0CD,D+X+E+DES 214 | OPCDEF <STS >,0CF,D+X+E+DES+SPC10 215 | OPCDEF <STU >,0CF,D+X+E+DES 216 | OPCDEF <STX >,08F,D+X+E+DES 217 | OPCDEF <STY >,08F,D+X+E+DES+SPC10 218 | OPCDEF <SUBA >,080,MOST 219 | OPCDEF <SUBB >,0C0,MOST 220 | OPCDEF <SUBD >,083,MOST+SPC 221 | OPCDEF <SWI >,03F 222 | OPCDEF <SWI1 >,03F 223 | OPCDEF <SWI2 >,03F,SPC10 224 | OPCDEF <SWI3 >,03F,SPC11 225 | OPCDEF <SYNC >,013 226 | OPCDEF <TFR >,01F 227 | OPCDEF <TST >,04D,X+E+D+SPDP 228 | OPCDEF <TSTA >,04D 229 | OPCDEF <TSTB >,05D 230 | .RADIX 231 | .END 232 | ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� -------------------------------------------------------------------------------- /atari_tools/e3_tools/PST68.MAC: -------------------------------------------------------------------------------- 1 | .TITLE PST68 VERSION 1. PERMANENT SYMBOL TABLE 8-JAN-77 2 | .IDENT /V0211/ 3 | .GLOBL PSTBAS, PSTTOP ;LIMITS 4 | .GLOBL WRDSYM ;POINTER TO .WORD 5 | .GLOBL ASCTSY ;POINTER TO .ASECT 6 | .GLOBL DFLGEV, DFLGBM, DFLCND, DFLMAC, DFLSMC 7 | 8 | DFLGEV= 020 ;DIRECTIVE REQUIRES EVEN LOCATION 9 | DFLGBM= 010 ;DIRECTIVE USES BYTE MODE 10 | DFLCND= 004 ;CONDITIONAL DIRECTIVE 11 | DFLMAC= 002 ;MACRO DIRECTIVE 12 | DFLSMC= 001 ;MCALL 13 | 14 | .IF DF PAL11R ;PAL11R SUBSET 15 | XMACRO= 0 16 | X40= 0 17 | X45= 0 18 | .ENDC 19 | 20 | .IIF DF XMACRO, XSML= 0 21 | 22 | DES=100000 ;DESTRUCTIVE TO OPERAND (FOR CREF) 23 | .MACRO OPCDEF NAME,VALUE,AM 24 | .RAD50 /NAME/ 25 | .BYTE VALUE 26 | .BYTE ^H80 27 | .WORD AM+0 28 | .ENDM 29 | 30 | AMINIT=1 31 | .IRP X,<I,D,X,E,S,SPC> 32 | X=AMINIT 33 | AMINIT=AMINIT+AMINIT 34 | .ENDR 35 | MOST=I!D!X!E 36 | 37 | 38 | .MACRO DIRDEF NAME, FLAGS, COND 39 | .RAD50 /.'NAME/ 40 | .BYTE FLAGS+0, 0 41 | .IF NB <COND> 42 | .IF DF COND 43 | .GLOBL OPCERR 44 | .WORD OPCERR 45 | .MEXIT 46 | .ENDC 47 | .ENDC 48 | .GLOBL NAME 49 | .WORD NAME 50 | .ENDM 51 | 52 | PSTBAS: ;BASE 53 | .PAGE 54 | .RADIX 16. 55 | OPCDEF <ABA >,01B 56 | OPCDEF <ADCA >,089,MOST 57 | OPCDEF <ADCB >,0C9,MOST 58 | OPCDEF <ADDA >,08B,MOST 59 | OPCDEF <ADDB >,0CB,MOST 60 | OPCDEF <ANDA >,084,MOST 61 | OPCDEF <ANDB >,0C4,MOST 62 | OPCDEF <ASL >,048,X+E+DES 63 | OPCDEF <ASLA >,048 64 | OPCDEF <ASLB >,058 65 | OPCDEF <ASR >,047,X+E+DES 66 | OPCDEF <ASRA >,047 67 | OPCDEF <ASRB >,057 68 | OPCDEF <BCC >,024,S 69 | OPCDEF <BCS >,025,S 70 | OPCDEF <BEQ >,027,S 71 | OPCDEF <BGE >,02C,S 72 | OPCDEF <BGT >,02E,S 73 | OPCDEF <BHI >,022,S 74 | OPCDEF <BITA >,085,MOST 75 | OPCDEF <BITB >,0C5,MOST 76 | OPCDEF <BLE >,02F,S 77 | OPCDEF <BLS >,023,S 78 | OPCDEF <BLT >,02D,S 79 | OPCDEF <BMI >,02B,S 80 | OPCDEF <BNE >,026,S 81 | OPCDEF <BPL >,02A,S 82 | OPCDEF <BRA >,020,S 83 | OPCDEF <BSR >,08D,S 84 | OPCDEF <BVC >,028,S 85 | OPCDEF <BVS >,029,S 86 | OPCDEF <CBA >,011 87 | OPCDEF <CLC >,0C 88 | OPCDEF <CLI >,0E 89 | OPCDEF <CLR >,04F,X+E+DES 90 | OPCDEF <CLRA >,04F 91 | OPCDEF <CLRB >,05F 92 | OPCDEF <CLV >,0A 93 | OPCDEF <CMPA >,081,MOST 94 | OPCDEF <CMPB >,0C1,MOST 95 | OPCDEF <COM >,043,X+E+DES 96 | OPCDEF <COMA >,043 97 | OPCDEF <COMB >,053 98 | OPCDEF <CPX >,08C,MOST+SPC 99 | OPCDEF <DAA >,019 100 | OPCDEF <DEC >,04A,X+E+DES 101 | OPCDEF <DECA >,04A 102 | OPCDEF <DECB >,05A 103 | OPCDEF <DES >,034 104 | OPCDEF <DEX >,009 105 | OPCDEF <EORA >,088,MOST 106 | OPCDEF <EORB >,0C8,MOST 107 | OPCDEF <INC >,04C,X+E+DES 108 | OPCDEF <INCA >,04C 109 | OPCDEF <INCB >,05C 110 | OPCDEF <INS >,031 111 | OPCDEF <INX >,008 112 | OPCDEF <JMP >,04E,X+E 113 | OPCDEF <JSR >,08D,X+E 114 | OPCDEF <LDAA >,086,MOST 115 | OPCDEF <LDAB >,0C6,MOST 116 | OPCDEF <LDS >,08E,MOST+SPC 117 | OPCDEF <LDX >,0CE,MOST+SPC 118 | OPCDEF <LSR >,044,X+E+DES 119 | OPCDEF <LSRA >,044 120 | OPCDEF <LSRB >,054 121 | OPCDEF <NEG >,040,X+E+DES 122 | OPCDEF <NEGA >,040 123 | OPCDEF <NEGB >,050 124 | OPCDEF <NOP >,01 125 | OPCDEF <ORAA >,08A,MOST 126 | OPCDEF <ORAB >,0CA,MOST 127 | OPCDEF <PSHA >,036 128 | OPCDEF <PSHB >,037 129 | OPCDEF <PULA >,032 130 | OPCDEF <PULB >,033 131 | OPCDEF <ROL >,049,X+E+DES 132 | OPCDEF <ROLA >,049 133 | OPCDEF <ROLB >,059 134 | OPCDEF <ROR >,046,X+E+DES 135 | OPCDEF <RORA >,046 136 | OPCDEF <RORB >,056 137 | OPCDEF <RTI >,03B 138 | OPCDEF <RTS >,039 139 | OPCDEF <SBA >,010 140 | OPCDEF <SBCA >,082,MOST 141 | OPCDEF <SBCB >,0C2,MOST 142 | OPCDEF <SEC >,0D 143 | OPCDEF <SEI >,0F 144 | OPCDEF <SEV >,0B 145 | OPCDEF <STAA >,087,D+X+E+DES 146 | OPCDEF <STAB >,0C7,D+X+E+DES 147 | OPCDEF <STS >,08F,D+X+E+DES 148 | OPCDEF <STX >,0CF,D+X+E+DES 149 | OPCDEF <SUBA >,080,MOST 150 | OPCDEF <SUBB >,0C0,MOST 151 | OPCDEF <SWI >,03F 152 | OPCDEF <TAB >,016 153 | OPCDEF <TAP >,06 154 | OPCDEF <TBA >,017 155 | OPCDEF <TPA >,07 156 | OPCDEF <TST >,04D,X+E 157 | OPCDEF <TSTA >,04D 158 | OPCDEF <TSTB >,05D 159 | OPCDEF <TSX >,030 160 | OPCDEF <TXS >,035 161 | OPCDEF <WAI >,03E 162 | .RADIX 163 | .PAGE 164 | DIRDEF <ASCII>, DFLGBM 165 | DIRDEF <ASCIN>, DFLGBM 166 | DIRDEF <ASCIZ>, DFLGBM 167 | ASCTSY: 168 | DIRDEF <ASECT>, , XREL 169 | DIRDEF <BLKB > 170 | DIRDEF <BLKW >, DFLGEV 171 | DIRDEF <BSECT>, , XREL 172 | DIRDEF <BYTE >, DFLGBM 173 | DIRDEF <COPY > 174 | DIRDEF <CSECT>, , XREL 175 | DIRDEF <DCREF> 176 | .IF DF YPHASE 177 | DIRDEF <DEPHA> 178 | .ENDC 179 | DIRDEF <DSABL> 180 | DIRDEF <ECREF> 181 | DIRDEF <ENABL> 182 | DIRDEF <END > 183 | DIRDEF <ENDC >, DFLCND 184 | DIRDEF <ENDM >, DFLMAC, XMACRO 185 | DIRDEF <ENDR >, DFLMAC, XMACRO 186 | DIRDEF <ERROR> 187 | DIRDEF <EVEN > 188 | DIRDEF <GLOBB>, , XREL 189 | DIRDEF <GLOBL>, , XREL 190 | DIRDEF <IDENT> 191 | DIRDEF <IF >, DFLCND 192 | DIRDEF <IFDF >, DFLCND 193 | DIRDEF <IFEQ >, DFLCND 194 | DIRDEF <IFF >, DFLCND 195 | DIRDEF <IFG >, DFLCND 196 | DIRDEF <IFGE >, DFLCND 197 | DIRDEF <IFGT >, DFLCND 198 | DIRDEF <IFL >, DFLCND 199 | DIRDEF <IFLE >, DFLCND 200 | DIRDEF <IFLT >, DFLCND 201 | DIRDEF <IFNDF>, DFLCND 202 | DIRDEF <IFNE >, DFLCND 203 | DIRDEF <IFNZ >, DFLCND 204 | DIRDEF <IFT >, DFLCND 205 | DIRDEF <IFTF >, DFLCND 206 | DIRDEF <IFZ >, DFLCND 207 | DIRDEF <IIF > 208 | DIRDEF <INCLU> 209 | DIRDEF <IRP >, DFLMAC, XMACRO 210 | DIRDEF <IRPC >, DFLMAC, XMACRO 211 | DIRDEF <LIMIT>, DFLGEV, XREL 212 | DIRDEF <LIST > 213 | DIRDEF <MACLI> 214 | DIRDEF <MACR >, DFLMAC, XMACRO 215 | DIRDEF <MACRO>, DFLMAC, XMACRO 216 | DIRDEF <MCALL>, DFLSMC, XSML 217 | DIRDEF <MEXIT> , , XMACRO 218 | DIRDEF <NARG > , , XMACRO 219 | DIRDEF <NCHR > , , XMACRO 220 | DIRDEF <NLIST> 221 | DIRDEF <ODD > 222 | DIRDEF <PAGE > 223 | .IF DF YPHASE 224 | DIRDEF <PHASE> 225 | .ENDC 226 | DIRDEF <PRINT> 227 | .IF DF RSX11D 228 | DIRDEF <PSECT> 229 | .ENDC 230 | DIRDEF <RADIX> 231 | DIRDEF <RAD50>, DFLGEV 232 | .IF NDF XBAW 233 | DIRDEF <REM > 234 | .ENDC 235 | DIRDEF <REPT >, DFLMAC, XMACRO 236 | DIRDEF <SBTTL> 237 | DIRDEF <TITLE> 238 | DIRDEF <VCTRS> 239 | WRDSYM: 240 | DIRDEF <WORD >, DFLGEV 241 | 242 | 243 | PSTTOP: ;TOP LIMIT 244 | 245 | .END 246 | 7��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� -------------------------------------------------------------------------------- /centipede-reassembled/README.md: -------------------------------------------------------------------------------- 1 | # centipede-reassembled 2 | 3 | The re-assembled bits from centipede/revision.v2 now work as is. The problem was traced to a bug in the LINKM binary that was on disk f8. Re-building it with the source on disks e2, e3, and e4 produced an identical binary. 4 | 5 | ## Assembly 6 | 7 | The following is output from the assembly and linking process 8 | 9 | ``` 10 | .R MAC65 11 | *RK1:CENTI2.OBJ=CENTI2 12 | ERRORS DETECTED: 0 13 | FREE CORE: 14275. WORDS 14 | 15 | *RK1:CENIR2=CENIR2 16 | ERRORS DETECTED: 0 17 | FREE CORE: 12969. WORDS 18 | 19 | *RK1:CENTS2=CENTS2 20 | ERRORS DETECTED: 0 21 | FREE CORE: 15318. WORDS 22 | 23 | *RK1:CENPIC=CENPIC 24 | ERRORS DETECTED: 0 25 | FREE CORE: 16243. WORDS 26 | 27 | *RK1:SYNC2=SYNC2 28 | ERRORS DETECTED: 0 29 | FREE CORE: 16415. WORDS 30 | 31 | ^C 32 | 33 | .R LINKM 34 | *DK2:CENTI2,CENTI2.XX=DK1:CENTI2,CENIR2,CENTS2 35 | 36 | 37 | *DK2:CENPIC,CENPIC.XX=DK1:CENPIC 38 | 39 | 40 | *DK2:SYNC2,SYNC2.XX=DK1:SYNC2 41 | ^C 42 | 43 | . 44 | ``` 45 | 46 | ## IMGFIL process, and the differences 47 | 48 | Since we do not have IMGFIL, I had to replace it with linux dd. 49 | 50 | Once the assembly and linking were complete, the SAV files were output to the paper punch back to the PC, and the following commands were run: 51 | 52 | ```sh 53 | $ dd if=cenpic.sav of=136001-201 bs=1 count=2048 54 | 55 | 2048+0 records in 56 | 2048+0 records out 57 | 2048 bytes (2.0 kB, 2.0 KiB) copied, 0.00303139 s, 676 kB/s 58 | 59 | $ dd if=cenpic.sav of=136001-202 bs=1 count=2048 skip=2048 60 | 61 | 2048+0 records in 62 | 2048+0 records out 63 | 2048 bytes (2.0 kB, 2.0 KiB) copied, 0.00295437 s, 693 kB/s 64 | 65 | $ dd if=centi2.sav of=136001-204 bs=1 count=2048 skip=10240 66 | 67 | 2048+0 records in 68 | 2048+0 records out 69 | 2048 bytes (2.0 kB, 2.0 KiB) copied, 0.00304295 s, 673 kB/s 70 | 71 | $ dd if=centi2.sav of=136001-205 bs=1 count=2048 skip=12288 72 | 2048+0 records in 73 | 2048+0 records out 74 | 2048 bytes (2.0 kB, 2.0 KiB) copied, 0.00306165 s, 669 kB/s 75 | 76 | $ dd if=centi2.sav of=136001-206 bs=1 count=2048 skip=14336 77 | 78 | 2048+0 records in 79 | 2048+0 records out 80 | 2048 bytes (2.0 kB, 2.0 KiB) copied, 0.0030689 s, 667 kB/s 81 | 82 | # For some reason, the sync ROM has 256 additional bytes of zeroes. 83 | 84 | $ dd if=sync2.sav of=136001-213 bs=1 count=256 85 | 256+0 records in 86 | 256+0 records out 87 | 256 bytes copied, 0.000395258 s, 648 kB/s 88 | ``` 89 | 90 | ### 136001-201 - CENPIC.SAV offset $0000 91 | 92 | ```sh 93 | $ cmp -l centipede/revision.v2/136001.201 centipede-reassembled/136001-201 | gawk '{printf "%08X %02X %02X\n", $1-1, strtonum(0$2), strtonum(0$3)}' | more 94 | ``` 95 | 96 | no differences! 97 | 98 | ### 136001-202 - CENPIC.SAV offset $0800 99 | 100 | ``` 101 | $ cmp -l centipede/revision.v2/136001.202 centipede-reassembled/136001-202 | gawk '{printf "%08X %02X %02X\n", $1-1, strtonum(0$2), strtonum(0$3)}' | more 102 | ``` 103 | 104 | No differences! 105 | 106 | ### 136001-203 - CENTI.SAV offset $2000 107 | 108 | ``` 109 | $ cmp -l centipede/revision.v2/136001.203 centipede-reassembled/136001-203 | gawk '{printf "%08X %02X %02X\n", $1-1, strtonum(0$2), strtonum(0$3)}' | more 110 | ``` 111 | 112 | No differences! 113 | 114 | ### 136001-204 - CENTI.SAV offset $2800 115 | 116 | ``` 117 | $ cmp -l centipede/revision.v2/136001.204 centipede-reassembled/136001-204 | gawk '{printf "%08X %02X %02X\n", $1-1, strtonum(0$2), strtonum(0$3)}' | more 118 | ``` 119 | 120 | no differences! 121 | 122 | ### 136001-205 - CENTI.SAV offset $3000 123 | 124 | ``` 125 | $ cmp -l centipede/revision.v2/136001.205 centipede-reassembled/136001-205 | gawk '{printf "%08X %02X %02X\n", $1-1, strtonum(0$2), strtonum(0$3)}' | more 126 | ``` 127 | 128 | No differences! 129 | 130 | ### 136001-206 - CENTI.SAV offset $3800 131 | 132 | ``` 133 | $ cmp -l centipede/revision.v2/136001.206 centipede-reassembled/136001-206 | gawk '{printf "%08X %02X %02X\n", $1-1, strtonum(0$2), strtonum(0$3)}' | more 134 | ``` 135 | 136 | No differences! 137 | 138 | ## Map files 139 | 140 | Here are the map files generated by the working and non-working links. 141 | 142 | ### Working 143 | 144 | ``` 145 | ATARI LINKM V05.00 LOAD MAP 28-MAY-81 14:19:41 146 | BIN:CENTI2.SAV 147 | 148 | BIN:CENTI2,CENTI2.XX=OBJ:CENTI2,CENIR2,CENTS2 149 | 150 | File Summary: 151 | Name Module Ident Creation Date/Time 152 | OBJ:CENTI2 CENDEF 153 | OBJ:CENIR2 CENDEF 154 | OBJ:CENTS2 CENDEF 155 | 156 | Section Summary: 157 | Name Addr Size Attributes References (Files): 158 | . ABS. 0000 3366 159 | CENIRQ 3366 06AB 160 | CENTST 3A11 05EF 161 | 162 | Global Symbol Summary: 163 | Name Value Name Value Name Value Name Value Name Value 164 | ABS 3833 CLRCH 2656 IRQ 3879 WRITEA 3AC9 $COINA 0C01 165 | CHAR 383E COMP 3835 MAIN 200E $BC 00CB $INTCT 00D4 166 | CKSUM 3A11 CPYRHT 2003 MESS 37DD $BCCNT 00CA $LAM 0C01 167 | CKSUM0 2058 DIGITZ 3864 MESSAG 382D $CCTIM 00C5 $LMBIT 0010 168 | CKSUM1 2DAE DIGIT2 3857 MOOLAH 3366 $CMODE 00D3 $LMTIM 00D2 169 | CKSUM2 3365 INIT 2873 RESET 3B0D $CNCT 00C9 $PSTSL 00CC 170 | CKSUM3 3FF9 INITAL 383B SCORES 2D5D $CNSTT 00CF $$CRDT 00C8 171 | 172 | High limit = 4000 173 | ``` 174 | 175 | ### re-assembled 176 | 177 | ``` 178 | ATARI LINKM V04-06 LOAD MAP 179 | CENTI2.SAV 180 | 181 | DK2:CENTI2,CENTI2.XX=CENTI2,CENIR2,CENTS2 182 | (DK:CENTI2,DK:CENIR2,DK:CENTS2) 183 | 184 | 185 | SECTION ADDR SIZE ENTRY ADDR ENTRY ADDR ENTRY ADDR 186 | 187 | . ABS. 0000 3366 $LMBIT 0010 $CCTIM 00C5 $$CRDT 00C8 188 | $CNCT 00C9 $BCCNT 00CA $BC 00CB 189 | $PSTSL 00CC $CNSTT 00CF $LMTIM 00D2 190 | $CMODE 00D3 $INTCT 00D4 $COINA 0C01 191 | $LAM 0C01 CPYRHT 2003 MAIN 200E 192 | CKSUM0 2058 CLRCH 2656 INIT 2873 193 | SCORES 2D5D CKSUM1 2DAE CKSUM2 3365 194 | CENIRQ 3366 06AB MOOLAH 3366 MESS 37DD MESSAG 382D 195 | ABS 3833 COMP 3835 INITAL 383B 196 | CHAR 383E DIGIT2 3857 DIGITZ 3864 197 | IRQ 3879 198 | CENTST 3A11 05EF CKSUM 3A11 WRITEA 3AC9 RESET 3B0D 199 | CKSUM3 3FF9 200 | 201 | TRANSFER ADDRESS = 0001 202 | HIGH LIMIT = 4000 203 | ``` 204 | 205 | ## Mapping of ROMs to EPROMs for MAME 206 | 207 | ```sh 208 | $ cp 136001-201 ~/Workspace/mame/roms/centiped2/136001-211.f7 209 | $ cp 136001-202 ~/Workspace/mame/roms/centiped2/136001-212.hj7 210 | $ cp 136001-203 ~/Workspace/mame/roms/centiped2/136001-207.d1 211 | $ cp 136001-204 ~/Workspace/mame/roms/centiped2/136001-208.e1 212 | $ cp 136001-205 ~/Workspace/mame/roms/centiped2/136001-209.fh1 213 | $ cp 136001-206 ~/Workspace/mame/roms/centiped2/136001-210.j1 214 | $ cp 136001-213 ~/Workspace/mame/roms/centiped2/136001-213.p4 215 | ``` 216 | 217 | it can then be started with: 218 | 219 | ```sh 220 | mame centiped2 221 | ``` 222 | ![Our newly assembled Centipede in MAME](centiped2.png) 223 | -------------------------------------------------------------------------------- /atari_tools/e2_tools/OPC65.MAC: -------------------------------------------------------------------------------- 1 | ; 19-SEP-78 2 | ; 18:00:00 3 | .TITLE OP CODE PROCESSOR 6502 4 | 5 | .MACRO CALL S 6 | JSR PC,S 7 | .ENDM 8 | 9 | .MACRO GENCAL NAME 10 | .MACRO NAME 11 | JSR PC,NAME 12 | .ENDM NAME 13 | .ENDM GENCAL 14 | 15 | GENCAL STCODE 16 | GENCAL SETIMM 17 | GENCAL SAVREG 18 | GENCAL GETSYM 19 | GENCAL SETSYM 20 | GENCAL TSTARG 21 | GENCAL GLBEXP 22 | GENCAL ABSEXP 23 | GENCAL RELEXP 24 | GENCAL GETNB 25 | 26 | .MACRO RETURN 27 | RTS PC 28 | .ENDM 29 | 30 | .MACRO AMM Z 31 | .IRP X,Z 32 | AM.'X=..AMI 33 | ..AMI=..AMI+..AMI 34 | .RAD50 /X/ 35 | .ENDR 36 | .ENDM AMM 37 | 38 | ..AMI=1 39 | AMCHR: 40 | AMM <<<NX >,<Z >,<I >,<A >,<NY >,<ZX >>> 41 | AMM <<<AY >,<AX >,<S >,<AC >,<N >,<ZY >>> 42 | AMM <<<X >,<Y >>> 43 | .WORD 0 ;STOPPER 44 | 45 | AM.SPC=AM.X 46 | 47 | .MACRO XOR S,D 48 | MOV S,-(6) 49 | BIC D,(6) 50 | BIC S,D 51 | BIS (6)+,D 52 | .ENDM XOR 53 | 54 | .MACRO PUSH ARG 55 | MOV ARG,-(SP) 56 | .ENDM 57 | 58 | .MACRO PULL ARG 59 | MOV (SP)+,ARG 60 | .ENDM 61 | 62 | .MCALL .REGDEF 63 | .REGDEF 64 | 65 | .MACRO ERROR CHR 66 | BIS #ERR.'CHR,ERRBTS 67 | .ENDM 68 | 69 | ERRI=1 70 | .IRPC X,< ABDEILMNOPQRTUZ> 71 | ERR.'X=ERRI 72 | ERRI=ERRI+ERRI 73 | .ENDR 74 | .PAGE 75 | OPCODE: ;PROCESS OPCODE 76 | MOV #77776,PCRCNT ;LIST LOCATION OF FIRST BYTE ONLY 77 | INC BYTMOD ;ALL OPCODES ARE BYTE MODE 78 | BIC #-256.,R1 ;GET VALUE 79 | MOV VALUE,OPCMAP ;GET COPY OF AM 80 | MOV R1,(R4) ;REPLACE VALUE 81 | SETIMM ;CONVERT TO OBJECT FORMAT 82 | STCODE ;INSERT INTO CODROL 83 | NOP 84 | CLR (R4) ;RESET VALUE 85 | MOVB OPCMAP+1,CRFDFL+1 ;PASS DES FLAG TO CREF 86 | 1$: PULL R1 ;PRUNE STACK 87 | TST OPCMAP ;ANY OPERANDS REQUIRED? 88 | BEQ CPOPJ ;NO. WE'RE DONE 89 | TSTARG ;SPACE TO OPERAND 90 | BNE 3$ ;OPERAND PRESENT 91 | BIT #AM.S,OPCMAP ;BRANCH INSTRUCTION? 92 | BEQ 4$ ;NOPE 93 | JMP BRERR ;DO BRANCH ERROR ROUTINE 94 | 4$: BIT #AM.AC,OPCMAP ;GADS! NO OPERAND. IS THIS LEGAL? 95 | BNE 13$ ;YEAH. HE LUCKED OUT. 96 | ERROR A ;FLAG IT AS ERROR 97 | CLR BYTMOD ;AND GIVE HIM 2 BYTE OF ZEROES 98 | SETIMM 99 | STCODE 100 | MOV #12.,R0 ;FORCE TO 'AM.A' MODE 101 | BR 2$ ;EXIT 102 | 13$: MOV #10,R0 ;FORCE TO 'AM.I' MODE 103 | BR 2$ 104 | 3$: PUSH ERRBTS 105 | CLR ERRBTS 106 | CALL OPRAND ;DO OPERAND ROUTINE 107 | BIS (SP)+,ERRBTS 108 | 2$: MOV ROLBAS+12,R1 ;ADDRESS OF OPCODE 109 | ADD 6(R1),R0 ;UPDATE OPCODE TO CORRECT ADDRESS MODE 110 | MOVB R0,6(R1) ;STUFF IT BACK 111 | CPOPJ: RETURN ;EXIT 112 | .PAGE 113 | .SBTTL OPERAND PROCESSOR 114 | .ENABL LSB 115 | .GLOBL GETNB,ED.AMA,EDMASK,SYMBOL 116 | 117 | GLBFLG= 000100 118 | RELFLG= 000040 119 | BSEFLG= 000020 120 | DEFFLG= 000010 121 | 122 | OPRAND: SAVREG ;1 OR 2 OPERANDS REQUIRED 123 | INC EXPFLG ;COMMA EXPECTED. 124 | CLR (PC)+ ;START WITH NO ADDRESS MODE 125 | AMDCD: .WORD 0 126 | CMP #'#,R5 ;IMMEADIATE MODE REQUEST? 127 | BNE 1$ ;NO 128 | GETNB ;YES. SKIP THE CHARACTER 129 | MOV #AM.I,AMDCD ;SET IMMEADIATE MODE 130 | 4$: JSR R0,INDEX ;GO FIGURE OPERAND 131 | .WORD 100000 ;MUST NOT BE INDEXED 132 | 1$: CMP #'@,R5 ;INDIRECT MODE REQUEST? 133 | BNE 2$ ;NO 134 | GETNB ;YES. SKIP THE CHARACTER 135 | MOV #AM.N,R0 ;PREPARE TO TEST FOR JMP @LABEL 136 | BIT R0,OPCMAP ;JMP? 137 | BEQ 3$ ;NO 138 | MOV R0,AMDCD ;SET 'JMP N,LABEL' 139 | BR 4$ ;MUST NOT BE INDEXED 140 | 3$: BIT #AM.NX!AM.NY,OPCMAP ;@(X) LEGAL? 141 | BEQ 4$ ;NO 142 | JSR R0,INDEX ;YES. GO FIGURE OPERAND 143 | .WORD 200 ;MUST BE INDEXED 144 | 2$: GETSYM ;TRY FOR AM SYMBOL 145 | CMP #',,R5 ;IS THE NEXT THING A COMMA? 146 | BEQ 5$ ;YEP. THIS MUST BE AN ADDRESS MODE 147 | SETSYM ;RESET POINTERS 148 | BIT #AM.S,OPCMAP ;BRANCH INSTRUCTION? 149 | BEQ 6$ ;NO 150 | JMP REL ;YES. GO DO BRANCH STUFF 151 | 6$: JSR R0,INDEX ;GO EVALUATE EXPRESSION 152 | .WORD 0 ;MAY BE INDEXED 153 | 5$: MOV #AMCHR,R1 154 | MOV #1,R2 155 | 7$: CMP R0,(R1)+ ;MATCH? 156 | BEQ 8$ ;YEP 157 | ASL R2 ;COMPUTE NEW AM 158 | TST (R1) ;END? 159 | BNE 7$ ;NO. TRY AGAIN 160 | INVAM: ERROR A 161 | 18$: TSTARG ;SKIP ARGUMENT 162 | BR 4$ ;TRY FOR SOMETHING ELSE 163 | 8$: BIT #AM.X!AM.Y,R2 ;SPECIAL X, OR Y,? 164 | BEQ 19$ ;NOPE 165 | BIT #AM.X,R2 ;X,? 166 | BNE 20$ ;YEP 167 | INC R2 168 | 20$: BIC #-2,R2 ;CLEAR ALL BUT BIT 1 169 | TSTARG ;SKIP TO SECOND ARG 170 | GLBEXP ;EVALUATE EXPRESSION 171 | CLR -(SP) ;SET INDEX TYPE 172 | JMP ALTNDX 173 | 19$: BIT R2,OPCMAP ;LEGAL AM? 174 | BEQ INVAM ;NO 175 | BIT #AM.S,OPCMAP ;BRANCH? 176 | BNE BRANCH ;YEP 177 | MOV R2,AMDCD ;SAVE AM 178 | BR 18$ ;GO PROCESS OPERAND 179 | .DSABL LSB 180 | OPRET: MOV AMDCD,R0 ;GET REQUEST AM 181 | BEQ 17$ ;MUST BE INHERENT 182 | MOV R0,R2 ;ELSE USE IT 183 | 17$: BIT #AM.SPC,OPCMAP ;SPECIAL INSTRUCTION? 184 | BEQ 9$ ;NO 185 | BIT #AM.N,R2 ;INDIRECT REQUEST? 186 | BEQ 10$ ;NO 187 | MOV #44.,R1 ;YES. FAKE ZY 188 | BR 11$ 189 | 10$: BIT #AM.I,R2 ;IMMEADIATE MODE? 190 | BEQ 12$ ;NO 191 | CLR R1 ;FAKE NX 192 | BR 11$ 193 | 12$: BIT #AM.AY,R2 ;AY? 194 | BEQ 13$ ;NO 195 | MOV #28.,R1 ;YES. FAKE AX 196 | BR 11$ 197 | 13$: BIT #AM.ZY,R2 ;ZY? 198 | BEQ 9$ ;NO 199 | MOV #20.,R1 ;YES. FAKE ZX 200 | BR 11$ 201 | 9$: MOV R2,R0 ;GET A COPY OF AM 202 | BEQ INVAM ;NO GOOD 203 | CLR R1 204 | 15$: ROR R0 ;FIND AM BIT 205 | BCS 14$ ;FOUND IT 206 | BIT (R1)+,R1 ;INCREMENT R1 BY 2 WITHOUT DISTURBING CARRY 207 | BR 15$ 208 | 14$: ASL R1 ;COMPUTE OPCODE MODIFIER 209 | 11$: BIT #AM.AX!AM.AY!AM.A!AM.N,R2 ;WORD MODE? 210 | BEQ 16$ ;NOPE 211 | CLR BYTMOD ;YEP 212 | 16$: PUSH R1 ;SAVE MODIFIER 213 | OPXIT: SETIMM 214 | STCODE 215 | PULL R0 216 | RETURN 217 | 218 | .PAGE 219 | REL: RELEXP ;CAN'T BE GLOBAL 220 | CLRB MODE ;DISREGARD RELATIVE FLAGS 221 | CLR RELLVL ;AND LEVEL 222 | CMPB SECTOR,CLCSEC ;CAN'T BRANCH ACROSS CSECT 223 | BNE BRERR 224 | SUB CLCLOC,R0 ;COMPUTE DISPLACEMENT 225 | BR BRCH 226 | 227 | .ENABL LSB 228 | BRANCH: ABSEXP ;GET NUMBER. (BR S,+-NUMBER) 229 | BRCH: SUB #2,R0 ;COMPUTE DISPLACEMENT 230 | BPL 3$ 231 | ADD #400,R0 ;ALL 1'S IN HIGH BYTE? 232 | BMI BRERR ;NO.ERROR OFFSET OUT OF RANGE 233 | TSTB R0 ;>128? 234 | BPL BRERR ;ERROR. OFFSET OUT OF RANGE 235 | 5$: BIC #256.,R0 ;RESET ANY HIGH BITS 236 | MOV R0,VALUE 237 | BR 6$ 238 | 3$: BIT #-128.,R0 ;>127? 239 | BEQ 5$ ;YEP. 240 | BRERR: MOV #376,VALUE ;SET TO BR S,0 241 | ERROR A 242 | 6$: CLR -(SP) ;NO OPCODE MODIFIER 243 | BR OPXIT ;DONE 244 | 245 | OPCMAP: .BLKW 1 246 | .DSABL LSB 247 | .PAGE 248 | .SBTTL OPERAND EVALUATOR 249 | .ENABL LSB 250 | INDEX: MOV (R0),(SP) ;SAVE FLAGS 251 | GLBEXP ;EVALUATE EXPRESSION 252 | MOV #2,R2 ;START WITH Z PAGE ADDRESSING 253 | TST (SP) ;INDEX ALLOWED? 254 | BMI 1$ ;NOPE 255 | CMP #'(,R5 ;IS IT INDEXED? 256 | BEQ 2$ ;YES 257 | TSTB (SP) ;NO. MUST IT BE INDEXED? 258 | BPL 1$ ;NO. ITS OK AS IS 259 | BR 6$ 260 | 2$: GETNB ;SKIP OVER '(' 261 | CLR R2 ;START WITH X 262 | CMPB #'X,R5 ;GOT IT? 263 | BEQ 5$ ;YEP 264 | INC R2 ;SKIP UP TO Y 265 | CMPB #'Y,R5 ;GOT IT? 266 | BNE 6$ ;ERROR 267 | 5$: GETNB ;SKIP OVER 'X' OR 'Y' 268 | GETNB ;SKIP OVER THE ')' 269 | ALTNDX: 270 | 1$: MOV VALUE,R0 ;GET VALUE 271 | MOVB MODE,R1 ;AND FLAGS 272 | CLC 273 | BIT #ED.AMA,EDMASK ;AMA ON? 274 | BNE 7$ ;NO 275 | BIT #ERR.A!ERR.U!ERR.Q,ERRBTS ;ANY ERRORS? 276 | BNE 8$ ;YES. FORCE ABS 277 | BIT #BSEFLG,R1 ;BASE PAGE? 278 | BNE 7$ ;YEP. DON'T CARE ABOUT ANYTHING ELSE 279 | BIT #RELFLG,R1 ;RELOCATABLE? 280 | BNE 8$ ;YES 281 | BIT #DEFFLG,R1 ;DEFINED? 282 | BEQ 8$ ;NO 283 | BICB R0,R0 ;TEST FOR VALUE IN RANGE 284 | SWAB R0 285 | BEQ 7$ ;ITS < 256 286 | 8$: SEC ;FORCE 'A' MODE 287 | 7$: ROL R2 288 | ASLB (SP) 289 | ROL R2 290 | ASL R2 291 | MOV NDXTBL(R2),R0 ;GET ADDRESS MODE 292 | BIT R0,OPCMAP ;LEGAL? 293 | BNE 9$ ;YES 294 | XOR #4,R2 ;NO. FLIP AM A/Z 295 | MOV NDXTBL(R2),R0 ;TRY AGAIN 296 | BIT R0,OPCMAP ;LEGAL? 297 | BNE 9$ ;YES. OK 298 | 6$: ERROR A 299 | MOV #AM.A,R0 300 | 9$: MOV R0,R2 ;PASS THE AM 301 | TST (SP)+ ;PURGE STACK 302 | JMP OPRET ;DONE 303 | 304 | .DSABL LSB 305 | NDXTBL: .WORD AM.ZX,AM.NX,AM.AX,0 306 | .WORD AM.ZY,AM.NY,AM.AY,0 307 | .WORD AM.Z,0,AM.A,0,0,0,0,0 308 | .END 309 | ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� -------------------------------------------------------------------------------- /atari_tools/e6/LPTST.: -------------------------------------------------------------------------------- 1 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 2 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 3 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 4 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 5 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 6 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 7 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 8 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 9 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 10 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 11 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 12 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 13 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 14 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 15 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 16 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 17 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 18 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 19 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 20 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 21 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 22 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 23 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 24 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 25 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 26 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 27 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 28 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 29 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 30 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 31 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 32 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 33 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 34 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 35 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 36 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 37 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 38 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 39 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 40 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 41 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 42 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 43 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 44 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 45 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 46 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 47 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 48 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 49 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 50 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 51 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 52 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 53 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 54 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 55 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 56 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 57 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 58 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 59 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 60 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 61 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 62 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 63 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 64 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 65 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 66 | HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 67 | ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ -------------------------------------------------------------------------------- /atari_tools/e3_tools/PST69.MAC: -------------------------------------------------------------------------------- 1 | .NLIST TTM,CND 2 | .TITLE PST69 VERSION 3. PERMANENT SYMBOL TABLE 16-JUL-79 3 | .IDENT /V0211/ 4 | .GLOBL PSTBAS, PSTTOP ;LIMITS 5 | .GLOBL WRDSYM ;POINTER TO .WORD 6 | .GLOBL ASCTSY ;POINTER TO .ASECT 7 | .GLOBL DFLGEV, DFLGBM, DFLCND, DFLMAC, DFLSMC 8 | 9 | DFLGEV= 020 ;DIRECTIVE REQUIRES EVEN LOCATION 10 | DFLGBM= 010 ;DIRECTIVE USES BYTE MODE 11 | DFLCND= 004 ;CONDITIONAL DIRECTIVE 12 | DFLMAC= 002 ;MACRO DIRECTIVE 13 | DFLSMC= 001 ;MCALL 14 | 15 | .IF DF PAL11R ;PAL11R SUBSET 16 | XMACRO= 0 17 | X40= 0 18 | X45= 0 19 | .ENDC 20 | .IIF DF XMACRO, XSML= 0 21 | 22 | XBAW =0 23 | 24 | DES=100000 ;DESTRUCTIVE TO OPERAND (FOR CREF) 25 | .MACRO OPCDEF NAME,VALUE,AM 26 | .RAD50 /NAME/ 27 | .BYTE VALUE 28 | .BYTE ^H80 29 | .WORD AM+0 30 | 31 | .ENDM 32 | ...SPC =0 33 | 34 | .MACRO SPCOPC NAME,VALUE 35 | .RAD50 /NAME/ 36 | $$'NAME =...SPC 37 | .WORD 0C000+VALUE 38 | .WORD ...SPC 39 | ...SPC =...SPC+2 40 | .ENDM 41 | 42 | AM.I =0001 ;IMMEDIATE 43 | AM.D =0002 ;DIRECT 44 | AM.X =0004 ;INDEXED 45 | AM.E =0010 ;EXTENDED 46 | AM.S =0020 ;BRANCH 47 | AM.SPC =0040 ;IMMEDIATE REQUIRES 2 BYTES 48 | AM.SPD =0100 ;DIRECT PAGE=OX 49 | OPC10 =0200 ;UPPER BYTE=10 50 | OPC11 =0400 ;UPPER BYTE=11 51 | AM.SPL =1000 ;LONG BRANCH 52 | I =AM.I 53 | D =AM.D 54 | X =AM.X 55 | E =AM.E 56 | S =AM.S 57 | SPC =AM.SPC 58 | SPDP =AM.SPD 59 | SP10 =OPC10 60 | SPC10 =OPC10 61 | SP11 =OPC11 62 | SPC11 =OPC11 63 | 64 | SPL =AM.SPL 65 | MOST=I!D!X!E 66 | 67 | SHFTAM =D!X!E!SPDP!DES 68 | 69 | LONG =S+SP10+SPL 70 | 71 | .MACRO DIRDEF NAME, FLAGS, COND 72 | .RAD50 /.'NAME/ 73 | .BYTE FLAGS+0, 0 74 | .IF NB <COND> 75 | .IF DF COND 76 | .GLOBL OPCERR 77 | .WORD OPCERR 78 | .MEXIT 79 | .ENDC 80 | .ENDC 81 | .GLOBL NAME 82 | .WORD NAME 83 | .ENDM 84 | 85 | PSTBAS: ;BASE 86 | .PAGE 87 | .RADIX 16. 88 | OPCDEF <ABX >,03A 89 | OPCDEF <ADCA >,089,MOST 90 | OPCDEF <ADCB >,0C9,MOST 91 | OPCDEF <ADDA >,08B,MOST 92 | OPCDEF <ADDB >,0CB,MOST 93 | OPCDEF <ADDD >,0C3,MOST+SPC 94 | OPCDEF <ANDA >,084,MOST 95 | OPCDEF <ANDB >,0C4,MOST 96 | OPCDEF <ANDCC >,01C,I 97 | OPCDEF <ASL >,048,SHFTAM 98 | OPCDEF <ASLA >,048 99 | OPCDEF <ASLB >,058 100 | OPCDEF <ASR >,047,SHFTAM 101 | OPCDEF <ASRA >,047 102 | OPCDEF <ASRB >,057 103 | OPCDEF <BCC >,024,S 104 | OPCDEF <BCS >,025,S 105 | OPCDEF <BEQ >,027,S 106 | OPCDEF <BGE >,02C,S 107 | OPCDEF <BGT >,02E,S 108 | OPCDEF <BHI >,022,S 109 | OPCDEF <BHIS >,024,S 110 | OPCDEF <BHS >,024,S 111 | OPCDEF <BITA >,085,MOST 112 | OPCDEF <BITB >,0C5,MOST 113 | OPCDEF <BLE >,02F,S 114 | OPCDEF <BLO >,025,S 115 | OPCDEF <BLOS >,025,S 116 | OPCDEF <BLS >,023,S 117 | OPCDEF <BLT >,02D,S 118 | OPCDEF <BMI >,02B,S 119 | OPCDEF <BNE >,026,S 120 | OPCDEF <BPL >,02A,S 121 | OPCDEF <BRA >,020,S 122 | OPCDEF <BRN >,021,S 123 | OPCDEF <BSR >,08D,S 124 | OPCDEF <BVC >,028,S 125 | OPCDEF <BVS >,029,S 126 | OPCDEF <CLR >,04F,SHFTAM 127 | OPCDEF <CLRA >,04F 128 | OPCDEF <CLRB >,05F 129 | OPCDEF <CMPA >,081,MOST 130 | OPCDEF <CMPB >,0C1,MOST 131 | OPCDEF <CMPD >,083,MOST+SPC+SP10 132 | OPCDEF <CMPS >,08C,MOST+SPC+SP11 133 | OPCDEF <CMPU >,083,MOST+SPC+SP11 134 | OPCDEF <CMPX >,08C,MOST+SPC 135 | OPCDEF <CMPY >,08C,MOST+SPC+SP10 136 | OPCDEF <COM >,043,SHFTAM 137 | OPCDEF <COMA >,043 138 | OPCDEF <COMB >,053 139 | OPCDEF <CPA >,081,MOST 140 | OPCDEF <CPB >,0C1,MOST 141 | OPCDEF <CPD >,083,MOST+SPC+SP10 142 | OPCDEF <CPS >,08C,MOST+SPC+SP11 143 | OPCDEF <CPU >,083,MOST+SPC+SP11 144 | OPCDEF <CPX >,08C,MOST+SPC 145 | OPCDEF <CPY >,08C,MOST+SPC+SP10 146 | OPCDEF <CWAI >,03C,I 147 | OPCDEF <DAA >,019 148 | OPCDEF <DEC >,04A,SHFTAM 149 | OPCDEF <DECA >,04A 150 | OPCDEF <DECB >,05A 151 | OPCDEF <EORA >,088,MOST 152 | OPCDEF <EORB >,0C8,MOST 153 | SPCOPC <EXG >,01E 154 | OPCDEF <INC >,04C,SHFTAM 155 | OPCDEF <INCA >,04C 156 | OPCDEF <INCB >,05C 157 | OPCDEF <JMP >,04E,X+E 158 | OPCDEF <JSR >,08D,X+E 159 | OPCDEF <LBCC >,024,LONG 160 | OPCDEF <LBCS >,025,LONG 161 | OPCDEF <LBEQ >,027,LONG 162 | OPCDEF <LBGE >,02C,LONG 163 | OPCDEF <LBGT >,02E,LONG 164 | OPCDEF <LBHI >,022,LONG 165 | OPCDEF <LBHIS >,024,LONG 166 | OPCDEF <LBHS >,024,LONG 167 | OPCDEF <LBLE >,02F,LONG 168 | OPCDEF <LBLO >,025,LONG 169 | OPCDEF <LBLOS >,023,LONG 170 | OPCDEF <LBLS >,023,LONG 171 | OPCDEF <LBLT >,02D,LONG 172 | OPCDEF <LBMI >,02B,LONG 173 | OPCDEF <LBNE >,026,LONG 174 | OPCDEF <LBPL >,02A,LONG 175 | OPCDEF <LBRA >,016,LONG 176 | OPCDEF <LBRN >,021,LONG 177 | OPCDEF <LBSR >,017,S+SPL 178 | OPCDEF <LBVC >,028,LONG 179 | OPCDEF <LBVS >,029,LONG 180 | OPCDEF <LDA >,086,MOST 181 | OPCDEF <LDB >,0C6,MOST 182 | OPCDEF <LDD >,0CC,MOST+SPC 183 | OPCDEF <LDS >,08E,MOST+SPC+SP10 184 | OPCDEF <LDU >,0CE,MOST+SPC 185 | OPCDEF <LDX >,08E,MOST+SPC 186 | OPCDEF <LDY >,08E,MOST+SPC+SP10 187 | OPCDEF <LEAS >,012,X 188 | OPCDEF <LEAU >,013,X 189 | OPCDEF <LEAX >,010,X 190 | OPCDEF <LEAY >,011,X 191 | OPCDEF <LSL >,048,SHFTAM 192 | OPCDEF <LSLA >,048 193 | OPCDEF <LSLB >,058 194 | OPCDEF <LSR >,044,SHFTAM 195 | OPCDEF <LSRA >,044 196 | OPCDEF <LSRB >,054 197 | OPCDEF <MUL >,03D 198 | OPCDEF <NEG >,040,SHFTAM 199 | OPCDEF <NEGA >,040 200 | OPCDEF <NEGB >,050 201 | OPCDEF <NOP >,01 202 | OPCDEF <ORA >,08A,MOST 203 | OPCDEF <ORB >,0CA,MOST 204 | OPCDEF <ORCC >,01A,I 205 | SPCOPC <PSHS >,034 206 | SPCOPC <PSHU >,036 207 | SPCOPC <PULS >,035 208 | SPCOPC <PULU >,037 209 | OPCDEF <ROL >,049,SHFTAM 210 | OPCDEF <ROLA >,049 211 | OPCDEF <ROLB >,059 212 | OPCDEF <ROR >,046,SHFTAM 213 | OPCDEF <RORA >,046 214 | OPCDEF <RORB >,056 215 | OPCDEF <RTI >,03B 216 | OPCDEF <RTS >,039 217 | OPCDEF <SBCA >,082,MOST 218 | OPCDEF <SBCB >,0C2,MOST 219 | OPCDEF <SEX >,01D 220 | OPCDEF <STA >,087,D+X+E+DES 221 | OPCDEF <STB >,0C7,D+X+E+DES 222 | OPCDEF <STD >,0CD,D+X+E+DES 223 | OPCDEF <STS >,0CF,D+X+E+DES+SPC10 224 | OPCDEF <STU >,0CF,D+X+E+DES 225 | OPCDEF <STX >,08F,D+X+E+DES 226 | OPCDEF <STY >,08F,D+X+E+DES+SPC10 227 | OPCDEF <SUBA >,080,MOST 228 | OPCDEF <SUBB >,0C0,MOST 229 | OPCDEF <SUBD >,083,MOST+SPC 230 | OPCDEF <SWI >,03F 231 | OPCDEF <SWI1 >,03F 232 | OPCDEF <SWI2 >,03F,SPC10 233 | OPCDEF <SWI3 >,03F,SPC11 234 | OPCDEF <SYNC >,013 235 | SPCOPC <TFR >,01F 236 | OPCDEF <TST >,04D,X+E+D+SPDP 237 | OPCDEF <TSTA >,04D 238 | OPCDEF <TSTB >,05D 239 | .RADIX 240 | .PAGE 241 | DIRDEF <ASCII>, DFLGBM 242 | DIRDEF <ASCIN>, DFLGBM 243 | DIRDEF <ASCIZ>, DFLGBM 244 | ASCTSY: 245 | DIRDEF <ASECT>, , XREL 246 | DIRDEF <BLKB > 247 | DIRDEF <BLKW >, DFLGEV 248 | DIRDEF <BSECT>, , XREL 249 | DIRDEF <BYTE >, DFLGBM 250 | DIRDEF <COPY > 251 | DIRDEF <CSECT>, , XREL 252 | DIRDEF <DCREF> 253 | .IF DF YPHASE 254 | DIRDEF <DEPHA> 255 | .ENDC 256 | DIRDEF <DSABL> 257 | DIRDEF <ECREF> 258 | DIRDEF <ENABL> 259 | DIRDEF <END > 260 | DIRDEF <ENDC >, DFLCND 261 | DIRDEF <ENDM >, DFLMAC, XMACRO 262 | DIRDEF <ENDR >, DFLMAC, XMACRO 263 | DIRDEF <ERROR> 264 | DIRDEF <EVEN > 265 | DIRDEF <GLOBB>, , XREL 266 | DIRDEF <GLOBL>, , XREL 267 | DIRDEF <IDENT> 268 | DIRDEF <IF >, DFLCND 269 | DIRDEF <IFDF >, DFLCND 270 | DIRDEF <IFEQ >, DFLCND 271 | DIRDEF <IFF >, DFLCND 272 | DIRDEF <IFG >, DFLCND 273 | DIRDEF <IFGE >, DFLCND 274 | DIRDEF <IFGT >, DFLCND 275 | DIRDEF <IFL >, DFLCND 276 | DIRDEF <IFLE >, DFLCND 277 | DIRDEF <IFLT >, DFLCND 278 | DIRDEF <IFNDF>, DFLCND 279 | DIRDEF <IFNE >, DFLCND 280 | DIRDEF <IFNZ >, DFLCND 281 | DIRDEF <IFT >, DFLCND 282 | DIRDEF <IFTF >, DFLCND 283 | DIRDEF <IFZ >, DFLCND 284 | DIRDEF <IIF > 285 | DIRDEF <INCLU> 286 | DIRDEF <IRP >, DFLMAC, XMACRO 287 | DIRDEF <IRPC >, DFLMAC, XMACRO 288 | DIRDEF <LIMIT>, DFLGEV, XREL 289 | DIRDEF <LIST > 290 | DIRDEF <MACLI>, DFLMAC, XMACRO 291 | DIRDEF <MACR >, DFLMAC, XMACRO 292 | DIRDEF <MACRO>, DFLMAC, XMACRO 293 | DIRDEF <MCALL>, DFLSMC, XSML 294 | DIRDEF <MEXIT> , , XMACRO 295 | DIRDEF <NARG > , , XMACRO 296 | DIRDEF <NCHR > , , XMACRO 297 | DIRDEF <NLIST> 298 | DIRDEF <ODD > 299 | DIRDEF <PAGE > 300 | .IF DF YPHASE 301 | DIRDEF <PHASE> 302 | .ENDC 303 | DIRDEF <PRINT> 304 | .IF DF RSX11D 305 | DIRDEF <PSECT> 306 | .ENDC 307 | DIRDEF <RADIX> 308 | DIRDEF <RAD50>, DFLGEV 309 | .IF NDF XBAW 310 | DIRDEF <REM > 311 | .ENDC 312 | DIRDEF <REPT >, DFLMAC, XMACRO 313 | DIRDEF <SBTTL> 314 | DIRDEF <TITLE> 315 | DIRDEF <VCTRS> 316 | WRDSYM: 317 | DIRDEF <WORD >, DFLGEV 318 | 319 | 320 | PSTTOP: ;TOP LIMIT 321 | 322 | .END 323 | 7���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� -------------------------------------------------------------------------------- /atari_tools/e4_tools/OPC11.MAC: -------------------------------------------------------------------------------- 1 | .SBTTL OP CODE PROCESSOR 2 | 3 | .IFF 4 | PROPC: ;PROCESS OP CODE 5 | MOV #MODE,R4 ;POINT TO MODE 6 | MOV (R4),R1 ;LEAVE RESULT IN R1 7 | CLR (R4)+ ;SET TO ZERO, POINT TO VALUE 8 | MOV #CLCLOC,R2 ;POINT R2 TO LOCATION COUNTER 9 | BIT #100000+DFLGEV,R1 ;OP CODE OR EVEN DIRECTIVE? 10 | BEQ 1$ ; NO 11 | BIT #1,(R2) ;YES, CURRENTLY EVEN? 12 | BEQ 1$ ; YES 13 | INC (R2) ;NO, MAKE IT EVEN 14 | ERROR B ; AND FLAG ERROR 15 | 1$: BIT #DFLGBM,R1 ;BYTE MODE DIRECTIVE? 16 | BEQ 2$ ; NO 17 | INC BYTMOD ;YES, SET FLAG 18 | 2$: TST R1 ;OP-CODE? 19 | BMI 10$ ; YES 20 | MOV (R4),-(SP) ;NO, DIRECTIVE. 21 | CLR (R4) ;CLEAR VALUE 22 | CLR R3 ;START WITH R3=0 23 | JMPOVR (SP)+ ;GO TO PROPER HANDLER 24 | 25 | 10$: MOV #077776,PCRCNT ;LIST LOCATION OF FIRST WORD ONLY 26 | STCODE ;STUFF BASIC VALUE 27 | .IF NDF XCREF 28 | MOVB R1,CRFDFL+1 ;SET "*" CREF MARKERS 29 | .IFTF 30 | SWAB R1 31 | BIC #177600,R1 ;CLEAR HIGH ORDER BITS 32 | MOV R1,OPCLAS ;SAVE CLASS 33 | ASL R1 34 | ASL R1 ;FOUR BYTES PER TABLE ENTRY 35 | CLR -(SP) ;SET A STOPPER 36 | MOV OPJTBL+2(R1),-(SP) ;STACK SECOND ARG 37 | BNE 11$ ;BRANCH IF TWO ARGS 38 | TST (SP)+ ;ONE ARG, PRUNE TERMINATOR 39 | 11$: MOV OPJTBL(R1),R1 ;SET THE FIRST ARGUMENT 40 | BEQ 14$ ;BRANCH IF NO ARGS 41 | 12$: MOV R1,-(SP) ;SAVE A COPY OF THE ARG 42 | SWAB (SP) ;SHIFT COUNT TO RIGHT HALF 43 | BIC #177400,R1 ;ISOLATE LOW BYTE 44 | TSTARG ;COMMA TEST 45 | CLR R0 ;FUNCTION REGISTER 46 | CALL OPJBAS(R1) ;CALL PROPER ROUTINE 47 | .IFT 48 | ROLB CRFDFL+1 ;MOVE SECOND FIELD BIT 49 | .ENDC 50 | .PAGE 51 | 13$: ASL R0 ;SHIFT RESULT 52 | DECB (SP) ;COUNT IN SP, RH 53 | BGE 13$ 54 | ROR R0 ;WE WENT ONE TOO MANY 55 | MOV ROLBAS+CODROL,R1 56 | BIS R0,6(R1) ;SET EXPRESSION BITS 57 | TST (SP)+ ;PRUNE WORK ENTRY 58 | 14$: MOV (SP)+,R1 ;GET NEXT ARG FROM STACK 59 | BNE 12$ ;BRANCH IF NOT TERMINATOR 60 | 61 | .IF NDF XZERR 62 | MOV ROLBAS+CODROL,R1 63 | MOV 6(R1),R0 ;SET FOR "Z" ERROR TESTS 64 | MOV R0,R1 65 | BIC #000007,R1 66 | CMP #000120,R1 ; JMP (R)+ 67 | BEQ 22$ 68 | BIC #000700,R1 69 | CMP #004020,R1 ; JSR X,(R1)+ 70 | BEQ 22$ 71 | MOV R0,R1 72 | BIT #007000,R1 ;FIRST ARG TYPE 0? 73 | BNE 23$ ; NO, OK 74 | BIC #100777,R1 75 | BEQ 23$ 76 | CMP #070000,R1 ;DOUBLE ADDRESS TYPE? 77 | BEQ 23$ ; NO 78 | MOV R0,R1 79 | BIC #170017,R1 80 | CMP #000760,R1 ; MOV PC,[@]X(R) 81 | BEQ 22$ 82 | BIC #177717,R1 83 | CMP #000020,R1 ; (R)+ 84 | BEQ 21$ 85 | CMP #000040,R1 ; -(R) 86 | BNE 23$ 87 | 21$: MOV R0,R1 88 | ROL R1 89 | ROL R1 90 | SWAB R1 91 | SUB R0,R1 92 | BIT #000007,R1 ; R1=R2 93 | BNE 23$ 94 | 22$: ERROR Z 95 | 23$: 96 | .ENDC 97 | 98 | CPOPJ: RETURN 99 | .PAGE 100 | .MACRO GENOPJ NUMBER,SUBR1,SC1,SUBR2,SC2 ;OP CODE JUMP TABLE 101 | .GLOBL OPCL'NUMBER 102 | OPCL'NUMBER= <.-OPJTBL>/4 103 | .IIF NB <SUBR1>, .BYTE SUBR1-OPJBAS 104 | .IIF B <SUBR1>, .BYTE 0 105 | .BYTE SC1+0 106 | .IIF NB <SUBR2>, .BYTE SUBR2-OPJBAS 107 | .IIF B <SUBR2>, .BYTE 0 108 | .BYTE SC2+0 109 | .ENDM 110 | 111 | ENTSEC DPURE 112 | OPJTBL: ;OP CODE JUMP TABLE 113 | GENOPJ 00 114 | GENOPJ 01, AEXP 115 | GENOPJ 02, AEXP, 6, AEXP 116 | GENOPJ 03, REGEXP 117 | GENOPJ 04, BROP 118 | GENOPJ 05, REGEXP, 6, AEXP 119 | GENOPJ 06, TRAPOP 120 | 121 | .IF NDF X45 122 | GENOPJ 07, AEXP, 0, REGEXP, 6 123 | GENOPJ 08, REGEXP, 6, SOBOP 124 | GENOPJ 09, AEXP, 0, REGEXP, 6 125 | GENOPJ 10, MARKOP 126 | GENOPJ 11, AEXP, 0, DRGEXP, 6 127 | GENOPJ 12, DRGEXP, 6, AEXP, 0 128 | GENOPJ 13, SPLOP 129 | GENOPJ 14, AEXP, 0, DRGEXP, 6 130 | .ENDC 131 | 132 | 133 | ENTSEC IMPLIN 134 | OPCLAS: .BLKW ;OP CODE CLASS 135 | XITSEC 136 | .PAGE 137 | OPJBAS: ;INDEX BASE FOR FOLLOWING ROUTINES 138 | RETURN 139 | 140 | 141 | REGEXP: ;REGISTER EXPRESSION 142 | ABSEXP ;EVALUATE ABSOLUTE 143 | BIT #177770,R0 ;ANY OVERFLOW? 144 | BEQ 1$ ; NO 145 | ERROR R ;YES, FLAG ERROR 146 | BIC #177770,R0 ;CLEAR OVERFLOW 147 | 1$: RETURN 148 | 149 | BROP: ;BRANCH DISPLACEMENT TYPE 150 | RELEXP 151 | CMPB SECTOR,CLCSEC 152 | BNE 2$ 153 | SUB CLCLOC,R0 154 | ASR R0 155 | BCS 2$ 156 | DEC R0 157 | MOVB R0,R3 ;EXTEND SIGN 158 | CMP R0,R3 ;PROPER? 159 | BEQ 3$ ; YES 160 | 2$: ERROR A 161 | MOV #000377,R0 162 | 3$: BIC #177400,R0 ;CLEAR POSSIBLE HIGH BITS 163 | RETURN 164 | 165 | TRAPOP: ;TRAP TYPE 166 | ENTOVR 2 167 | SETXPR ;SET EXPRESSION REGISTERS 168 | MOV (R4),-(SP) ;SAVE THE VALUE 169 | EXPR ;EVALUATE THE EXPRESSION (NULL OK) 170 | INC BYTMOD ;TREAT AS BYTE 171 | SETIMM 172 | CMPB (R2),#200 ;ABSOLUTE? 173 | BNE 1$ ; NO 174 | TST (SP)+ ;YES, PRUNE STACK 175 | MOV (R4),R0 ;VALUE TO MERGE 176 | RETURN 177 | 178 | 1$: ZAP CODROL ;CLEAR CODE ROLL 179 | STCODE ;STORE ADDRESS 180 | MOV #100000,(R3) ;SET FOR ABSOLUTE BYTE 181 | SWAB (SP) 182 | MOV (SP)+,(R4) ;SET ORIGIONAL VALUE 183 | STCODE 184 | CLR R0 185 | RETURN 186 | XITOVR 187 | .PAGE 188 | .IF NDF X45 189 | 190 | DRGEXP: ;DOUBLE REGISTER EXPRESSION 191 | CALL REGEXP ;EVALUATE NORMAL 192 | MOV #177774,R3 ;TEST FOR OVERFLOW 193 | BR MASKR3 194 | 195 | SOBOP: ;SOB OPERATOR 196 | CALL BROP ;FREE-LOAD OFF BRANCH OPERATOR 197 | MOVB R0,R0 ;EXTEND SIGN 198 | NEG R0 ;POSITIVE FOR BACKWARDS 199 | BR MASKB6 ;MASK TO SIX BITS 200 | 201 | SPLOP: ;SPL TYPE 202 | ABSEXP 203 | MOV #177770,R3 ;ONLY THREE BITS ALLOWED 204 | BR MASKR3 205 | 206 | MARKOP: ;MARK OPERATOR 207 | ABSEXP ;EVALUATE ABSOLUTE 208 | MASKB6: MOV #177700,R3 ;SET TO MASK HIGH ORDER 209 | MASKR3: BIT R3,R0 ;OVERFLOW? 210 | BEQ 1$ ; NO 211 | ERROR T ;YES, FLAG TRUNCATION ERROR 212 | BIC R3,R0 ;CLEAR EXCESS 213 | 1$: RETURN 214 | 215 | .ENDC 216 | .PAGE 217 | AEXP: SAVREG ;ADDRESS EXPRESSION EVALUATION 218 | SETXPR ; AND SET "EXPRESSION" TYPE 219 | INC EXPFLG 220 | CLR -(SP) ;ACCUMULATE ON TOP OF STACK 221 | AEXP02: CHSCAN AEXTBL ;TEST FOR OPERATOR 222 | BEQ AEXP22 ; NO 223 | JMP (R0) ;YES, GO TO IT 224 | 225 | ENTSEC DPURE 226 | AEXTBL: ;ADDRESS EXPRESSION TABLE 227 | GCHTBL CH.IND, AEXP03 ; "@" 228 | GCHTBL CH.HSH, AEXP06 ; "#" 229 | GCHTBL CH.SUB, AEXP10 ; "-" 230 | GCHTBL CH.LP, AEXP12 ; "(" 231 | .WORD 0 ;TERMINATOR 232 | XITSEC 233 | 234 | AEXP03: TST (SP) ;"@", SECOND TIME AROUND? 235 | BEQ 4$ ; NO 236 | ERROR Q ; YES 237 | 4$: BIS #AM.DEF,(SP) ;SET IT 238 | BR AEXP02 239 | 240 | AEXP06: ;LITERAL (#) 241 | .IF NDF XFLTG 242 | CMP #OPCL11,OPCLAS ;CLASS 11? 243 | BNE 8$ ; NO 244 | CALL FLTG1W ;YES, TRY FOR ONE-WORD FLOATING 245 | BNE 9$ ;BRANCH IF OK 246 | .ENDC 247 | 8$: GLBEXP ;EVALUATE EXPRESSION 248 | 9$: BIS #AM.IMM,(SP) ;SET BITS 249 | BR AEXP32 ;USE COMMON EXIT 250 | 251 | AEXP10: ;AUTO-DECREMENT (-) 252 | CMP R5,#CH.LP ;FOLLOWED BY "("? 253 | BNE AEXP20 ; NOT A CHANCE 254 | CALL AEXPLP ;PROCESS PARENS 255 | BIS #AM.DEC,(SP) 256 | BR AEXP36 257 | 258 | AEXP12: ; "(" 259 | CALL AEXPL1 ;EVALUATE REGISTER 260 | CMP R5,#CH.ADD ;AUTO-INCREMENT (+)? 261 | BNE 14$ ; NO 262 | GETNB ;YES, POLISH IT OFF 263 | BIS #AM.INC,(SP) ;SET BITS 264 | BR AEXP36 265 | 266 | 14$: BIT #AM.DEF,(SP) ;INDIRECT SEEN? 267 | BNE 16$ ; YES 268 | BIS #AM.DEF,(SP) ;NO, SET BIT 269 | BR AEXP36 270 | 271 | 16$: CLR (R3) ;MODE 272 | CLR (R4) ; AND VALUE 273 | BR AEXP30 274 | .PAGE 275 | AEXP20: SETSYM ;AUTO-DEC FAILURE, POINT TO - 276 | AEXP22: GLBEXP ;GET AN EXPRESSION 277 | CMP R5,#CH.LP ;INDEXED? 278 | BEQ 24$ ; YES 279 | BIT #REGFLG,(R3) ;FLAGS 280 | BNE AEXP36 281 | .IF NDF XEDPIC!XEDAMA 282 | TST (SP) 283 | BNE 23$ 284 | .IF NDF XEDPIC 285 | BIT #ED.PIC,EDMASK 286 | BNE 1$ 287 | BIT #GLBFLG,(R3) 288 | BNE 2$ 289 | CMPB (R2),CLCSEC 290 | BEQ 23$ 291 | BR 2$ 292 | 1$: 293 | .ENDC 294 | .IF NDF XEDAMA 295 | BIT #ED.AMA,EDMASK ;ABSOLUTE MODE REQUESTED? 296 | BNE 23$ ; NO 297 | .ENDC 298 | 2$: BIS #AM.IMM!AM.DEF,(SP) ;OK, SET ABS MODE 299 | BR AEXP32 300 | .ENDC 301 | 302 | 23$: BIS #AM.REL,(SP) ;NO 303 | SETDSP ;SET DISPLACEMENT 304 | BR AEXP34 305 | 306 | 24$: BIT #REGFLG,(R3) ;FLAGS 307 | BEQ 26$ 308 | ERROR R 309 | BIC #REGFLG,(R3) ;FLAGS 310 | 26$: MOV (R1)+,-(SP) ;STACK CURRENT VALUE 311 | MOV (R1)+,-(SP) 312 | MOV (R1)+,-(SP) 313 | MOV (R1)+,-(SP) 314 | CALL AEXPLP ;PROCESS INDEX 315 | MOV (SP)+,-(R1) ;RESTORE 316 | MOV (SP)+,-(R1) 317 | MOV (SP)+,-(R1) 318 | MOV (SP)+,-(R1) 319 | AEXP30: BIS R0,(SP) 320 | BIS #AM.NDX,(SP) 321 | AEXP32: SETIMM 322 | AEXP34: STCODE 323 | CLR R0 324 | AEXP36: BIS (SP)+,R0 325 | RETURN 326 | .PAGE 327 | AEXPLP: ;AEXP PAREN PROCESSOR 328 | GETNB ;BYPASS PAREN 329 | AEXPL1: CALL REGEXP ;GET A REGISTER EXPRESSION 330 | CMP R5,#CH.RP ;HAPPY ENDING ")"? 331 | BNE 1$ ; NO 332 | JMP GETNB ;YES, BYPASS AND EXIT 333 | 334 | 1$: ERROR Q ;NO 335 | RETURN 336 | 337 | .IF NDF XEDAMA 338 | GENEDT AMA,,1 ;ABSOLUTE MODE ADDRESSING 339 | .ENDC 340 | .IF NDF XEDPIC 341 | GENEDT PIC,,1 ;PIC MODE 342 | .ENDC 343 | .PAGE 344 | .ENDC ;MACXX 345 | ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� -------------------------------------------------------------------------------- /atari_tools/e3_tools/FX.MAC: -------------------------------------------------------------------------------- 1 | ; 28-OCT-78 2 | ; 14:40:00 3 | .NLIST TTM,CND,BEX 4 | .IIF NDF DX,DX=0 ;NORMAL IS SYKES FORMAT 5 | 6 | .IF EQ,DX 7 | .TITLE DX SYKES CMPTABL FLOPPY HNDLR 8 | .IFF 9 | .TITLE FL DEC COMPATIBLE FLOPPY HNDLR 10 | .REPT 0 11 | 12 | THIS HANDLER IS A 'DX' TYPE HANDLER THAT INTERFACES THE PDP11 WITH 13 | THE SYKES 7250 FLOPPY DISK UNIT. IT USES THE STANDARD DEC FORMAT 14 | THAT IS A 2:1 SECTOR INTERLEAVE ON A TRACK (EVERY OTHER SECTOR) AND 15 | A 6 SECTOR SKEW IS USED ACROSS TRACKS. THERE IS NO INTERRUPT VECTOR 16 | CONFLICT WITH THE SYKES HANDLER (DX) BECAUSE BOTH HANDLERS SET THE 17 | VECTOR THEMSELVES ONLY IF IT IS NOT IN ALREADY IN USE. 18 | 19 | .ENDR 20 | .IFT 21 | .REPT 0 22 | 23 | THIS HANDLER IS A 'DX' TYPE HANDLER THAT INTERFACES THE PDP11 WITH 24 | THE SYKES 7250 FLOPPY DISK UNIT. IT USES A STANDARD CONTINIOUS DATA 25 | FORMAT IDENTICAL TO THAT USED IN OTHER DEC COMPATABILE DISK SYSTEMS 26 | (EXCEPT THE RX01). I.E. ALL DATA IS RETRIEVED AND STORED IN SEQUENCE 27 | BEGINING AT THE EQUIVALENT SECTOR OF THE REQUESTED BLOCK (4 SECTORS 28 | PER BLOCK) AND PROCEEDING TO THE NEXT HIGHER NUMBERED SECTOR TO THE 29 | MAX OF 26 AND THEN TO THE NEXT HIGHER NUMBERED TRACK, SECTOR 1,ETC. 30 | 31 | .ENDR 32 | .ENDC 33 | 34 | .MCALL GENS,GENSOP,.REGDEF 35 | .REGDEF 36 | GENSOP 37 | 38 | HDERR =1 39 | PR4 =4*40 40 | PR5 =5*40 41 | PR6 =6*40 42 | PR7 =7*40 43 | FLVEC =174 ;SYKES INTERRUPT VECTOR ADDRESS 44 | DTASVC =1 45 | RDY =2 46 | BUSY =4 47 | CRC =10 48 | PROTCT =20 49 | TRK00 =40 50 | FAULT =100 51 | RESET =200 52 | SLCT1 =201 53 | SLCT2 =202 54 | TERM =203 55 | DELETE =206 56 | 57 | MONITR =54 ;ADDRESS OF RMON 58 | OFFSET =270 ;OFFSET TO COMPLETION ROUTINE 59 | 60 | .GLOBL RKSYS,$INTEN,DTSYS,DSSYS,DPSYS 61 | .GLOBL RFSYS,DXSYS,DXINT,$INPTR 62 | RKSYS=0 63 | DTSYS=0 64 | DSSYS=0 65 | DPSYS=0 66 | RFSYS=0 67 | 68 | .MACRO RESTOR 69 | MOV PC,R5 70 | ADD #SVAREA-.,R5 71 | MOV (R5)+,R3 72 | MOV (R5)+,R2 73 | MOV (R5)+,R1 74 | MOV (R5)+,R0 75 | .ENDM 76 | 77 | .MACRO SAVE 78 | MOV PC,R5 79 | ADD #SVAREA-.,R5 80 | MOV R3,(R5)+ 81 | MOV R2,(R5)+ 82 | MOV R1,(R5)+ 83 | MOV R0,(R5) 84 | .ENDM 85 | .PAGE 86 | .SBTTL ENTRY 87 | .CSECT SYSHND ;IN CASE THIS IS SYSTEM DEVICE 88 | DXSTRT: .WORD 0 ;MAKE RT-11 THINK THERE'S NO VECTOR 89 | .WORD DXINT-. ;OFFSET TO INTERRUPT ROUTINE. (IN CASE OF ABORT) 90 | .WORD PR7 ;INT PRIORITY GOES HERE (IGNORED IN V02C) 91 | DXSYS: 92 | DXLQE: .WORD 0 ;LAST QUE ENTRY 93 | DXCQE: .WORD 0 ;CURRENT QUE ENTRY 94 | 95 | ; RT-11 ENTERS HERE FOR I/O INIT 96 | 97 | MOV #FLVEC,R0 ;ADDRESS OF REAL VECTOR 98 | TST (R0) ;ALEADY IN USE? 99 | BEQ VECOK ;NO. PROCEED 100 | MOV DXCQE,R4 101 | BIS #HDERR,@-(R4) ;SET HARD ERROR BIT IN CSW 102 | JMP EXIT ;END EXIT 103 | VECOK: MOV PC,(R0) ;INITIALISE IT OURSELVES 104 | ADD #DXINT-.,(R0)+ ; (PIC IS FUN) 105 | MOV #PR7,(R0) ;SET PRIORITY TOO (MUST BE 7) 106 | MOV #8.,(PC)+ ;INITIALISE RE-TRY COUNT 107 | RETCNT: .WORD 0 108 | RETRY: MOV DXCQE,R4 ;GET POINTER TO I/O ELEMENT 109 | MOV (R4)+,R3 ;R3 = BLOCK NUMBER 110 | MOVB (R4)+,R1 ;SAVE FUNCTION FOR LATER 111 | BITB #6,(R4) ;ONLY DRIVES 0 AND 1 ALLOWED 112 | BNE DXERR ;N.F.G 113 | MOV (PC)+,R5 ;GET COMMAND REG ADDRESS 114 | DXCM: .WORD 176002 115 | MOV #TERM,(R5)+ ;TERMINATE IN CASE WE'RE DOING RETRY 116 | 5$: BIT #BUSY,(R5) ;MAKE SURE ITS NOT BUSY 117 | BNE 5$ 118 | MOVB (R4)+,R0 ;SET UP UNIT SELECT 119 | ASR R0 ;PUT DRIVE # INTO CARRY 120 | MOV #RESET,R0 ;START WITH RESET 121 | MOV R0,-(R5) ;RESET CONTROLLER 122 | ADC R0 ;ADD IN DRIVE # 123 | INC R0 ;MAKE SELECT COMMAND 124 | MOV R0,(R5)+ ;SELECT DRIVE. GET STATUS REG ADDRESS 125 | BIT #RDY,(R5) ;DRIVE READY? 126 | BEQ DXERR ;NOPE 127 | MOV (R4)+,R0 ;GET BUFFER ADDRESS 128 | MOV (R4),R2 ;GET WORD COUNT 129 | INC R1 ;WHAT ARE GOING TO DO? 130 | BGT 1$ ;READ/WRITE 131 | .IF EQ,DX 132 | MOV R3,R4 ;SECTOR I/O. COPY TRACK/SECTOR WORD 133 | BICB R4,R4 ;ZAP SECTOR # FROM TRACK WORD 134 | BIC R4,R3 ;ZAP TRACK # FROM SECTOR WORD 135 | SWAB R4 ;PUT TRACK # WHERE IT MAY BE USED 136 | .IFF 137 | MOV #64.,R2 ;SECTOR R/W. RESET COUNT TO 1 SECTOR 138 | INC R1 ;FUNCTION? 139 | BGT 2$ ;SECTOR READ 140 | BEQ 3$ ;SECTOR WRITE 141 | MOV #DELETE,-2(R5) ;PUT US IN DELETE MODE 142 | 3$: NEG R2 ;SET COUNT TO INDICATE WRITE 143 | 2$: DEC R1 ;RESET FUNCTION TO ASSURE A SPECIAL 144 | MOV (R4),R4 ;AND PASS ABSOLUTE TRACK NUMBER 145 | TST (R0)+ ;SKIP THE FIRST WORD IN THE BUFFER 146 | .IFTF 147 | 1$: MOV R0,(PC)+ ;SAVE BUFFER ADDRESS 148 | BUFADR: .WORD 0 ;MEMORY POINTER 149 | CLR R0 150 | MOV #0,XFER ;SEND DATA TRANSFER COMMAND 151 | .=.-4 152 | MOVB (R4),(R1)+ ;DATA XFER COMMAND (READ) 153 | .=.+2 154 | TST R2 ;WRITE? 155 | BPL 4$ ;READ. 156 | BIT #PROTCT,(R5) ;DRIVE PROTECTED? 157 | BNE DXERR ;YES. ERROR 158 | NEG R2 ;ADJUST WORD COUNT 159 | BIS #40,R0 ;SET TO WRITE MODE 160 | MOV #0,XFER ;INIT THE DATA TRANSFER LOOP 161 | .=.-4 162 | MOVB (R1)+,(R4) ;DATA XFER COMMAND (WRITE) 163 | .=.+2 164 | 4$: MOV R0,(PC)+ ;SAVE CONTROL 165 | RWCNT: .WORD 0 166 | ASL R2 ;MAKE WORD COUNT INTO BYTE COUNT 167 | MOV R2,(PC)+ ;AND SAVE IT 168 | WCNT: .WORD 0 169 | TST R1 ;FUNCTION? 170 | BLE STS ; <= 0 FOR SPECIAL FUNCTION 171 | ASL R3 ;COMPUTE LOGICAL SECTOR BY MULTIPLYING 172 | ASL R3 ;BLOCK NUMBER BY 4 173 | .IFF 174 | MOV R3,LSN ;SAVE IT 175 | .IFTF 176 | NEXT: JSR R5,LOGPHY ;DO LOGICAL TO PHYSICAL CONVERSION 177 | .IFF 178 | LSN: .WORD 0 ;LOGICAL SECTOR MUST BE HERE 179 | .IFTF 180 | STS: BIS RWCNT,R3 ;SET R/W CONTROL INTO SECTOR NUMBER 181 | MOV R4,-(R5) ;SELECT TRACK 182 | MOV R3,(R5) ;SELECT SECTOR 183 | .IFF 184 | CLR NXTCMD ;BURN OUR BRIDGES 185 | .ENDC 186 | 187 | COMXIT: RESTOR ;RESTORE REGS 188 | BIS #100,@DXFG ;ENABLE INTERRUPTS 189 | RTS PC ;BACK TO RT-11 190 | .PAGE 191 | .SBTTL INTERRUPT ENTRY 192 | RTS PC ;NO ABORT ALLOWED 193 | .ENABL LSB 194 | DXINT: CLR @(PC)+ ;ZAP INTERRUPT ENABLE 195 | DXFG: .WORD 176000 196 | JSR R5,@$INPTR ;FIX PRIORITY AND SAVE R4,R5 197 | .WORD ^C<PR7>&PR7 ;LEAVE PRIORITY AT 7 198 | SAVE ;SAVE R0-R3 199 | MOV (PC)+,R4 ;SET STATUS REG ADDRESS 200 | DXST: .WORD 176004 201 | .IF NE,DX 202 | MOV R4,R5 203 | .ENDC 204 | BIT #FAULT+CRC,(R4)+ ;ANY ERRORS? 205 | BEQ 1$ ;NO 206 | DEC RETCNT ;TRY AGAIN? 207 | BGT RETRY ;YES 208 | DXERR: MOV DXCQE,R4 ;ERROR 209 | BIS #HDERR,@-(R4) ;SET BIT IN THE CSW 210 | BR ABXIT ;EXIT CLEARING THE VECTOR 211 | .DSABL LSB 212 | 1$: 213 | .IF NE,DX 214 | TST (PC)+ ;WHAT ARE WE TO DO? 215 | NXTCMD: .WORD 0 216 | BNE NEXT ;INITIATE NEXT READ 217 | CMP -(R5),-(R5) ;BACK UP TO FLAG REG 218 | .IFF 219 | MOV DXFG,R5 ;INIT R5 220 | .ENDC 221 | MOV BUFADR,R1 ;BUFFER ADDRESS 222 | MOV #128.,R2 ;WORD COUNT FOR 1 SECTOR 223 | MOV WCNT,R0 ;GET REQUEST BYTE COUNT 224 | BEQ FINI ;I/O COMPLETE 225 | XF0: TSTB (R5) ;WAIT FOR FLAG 226 | BPL XF0 227 | XFER: HALT ;*** MODIFIED AT RUN TIME *** 228 | ;READ MODE => MOVB (R4),(R1)+ 229 | ;WRITE MODE =>MOVB (R1)+,(R4) 230 | DEC R0 ;DEC TOTAL COUNT 231 | BEQ DONE ;DONE 232 | DEC R2 ;DEC LOCAL COUNT 233 | BGT XF0 ;CONTINUE 234 | .IF NE,DX 235 | TST (R5)+ ;SKIP TO COMMAND REG 236 | MOV #TERM,(R5)+ ;TERMINATE COMMAND 237 | .IFTF 238 | MOV R1,BUFADR ;SAVE UPDATED BUFFER LOC 239 | MOV R0,WCNT ;SAVE UPDATED BYTE COUNT 240 | .IFT 241 | INC LSN ;BUMP THE SECTOR # 242 | INC NXTCMD ;SET UP NEXT COMMAND 243 | .ENDC 244 | BR COMXIT ;GO WAIT FOR NEXT SECTOR 245 | 246 | DONE: MOV #TERM,2(R5) ;TERMINATE I/O 247 | CLR WCNT ;UPDATE BYTE COUNT 248 | BR COMXIT ;WAIT FOR LAST BLOCK TO FINISH 249 | FINI: MOV #TERM,2(R5) ;TERMINATE I/O (IN CASE OF SEEK) 250 | ABXIT: CLR @#FLVEC ;ZAP THE INTERRUPT VECTOR 251 | RESTOR ;RESTORE R0-R3 252 | EXIT: MOV PC,R4 ;USE PIC TO GET #DXCQE 253 | ADD #DXCQE-.,R4 254 | MOV @#MONITR,R5 ;GET RMON ADDRESS 255 | JMP @OFFSET(R5) ;AND JUMP TO COMPLETION 256 | SVAREA: .BLKW 4 ;SPACE FOR REG STORAGE 257 | .PAGE 258 | .SBTTL LOGICAL TO PHYSICAL CONVERSION 259 | .IF EQ,DX 260 | .SBTTL SYKES FORMAT 261 | .IFF 262 | .SBTTL DEC FORMAT 263 | .IFTF 264 | LOGPHY: 265 | .IFF 266 | MOV (R5)+,R3 ;GET LOGICAL SECTOR NUMBER 267 | .IFTF 268 | MOV #8.,R4 ;LOOP COUNT FOR DIVISION 269 | 1$: CMP #26.*200,R3 ;DOES 26 DIVIDE INTO DIVIDEND? 270 | BHI 2$ ;NO. (C=0) 271 | ADD #-26.*200,R3 ;SUBTRACT 26 FROM DIVIDEND. (C=1) 272 | 2$: ROL R3 ;SHIFT DIVIDEND AND QUOTIENT 273 | DEC R4 ;COUNT 274 | BGT 1$ ;CONTINUE UNTIL DIVIDE DONE 275 | MOVB R3,R4 ;COPY TRACK # 276 | CLRB R3 ;CLEAR TRACK # FROM REMAINDER 277 | SWAB R3 ;GET REMAINDER 278 | .IFT 279 | INC R3 ;RANGE SECTOR # TO 1-26 280 | .IFF 281 | CMP #12.,R3 ;C=1 IF 13<=R3<=25, ELSE C=0 282 | ROL R3 ;DOUBLE FOR 2:1 INTERLEAVE 283 | ; AND C SELECTS SECTOR GROUP 284 | ASL R4 ;PREPARE TRACK # FOR SECTOR SKEW 285 | ADD R4,R3 ;SKEW SECTOR BY 6 TIMES TRACK NUMBER 286 | ADD R4,R3 287 | ADD R4,R3 288 | ASR R4 ;PUT TRACK NUMBER BACK 289 | .IFTF 290 | INC R4 ;AND SKIP TRACK 0 291 | .IFF 292 | 3$: SUB #26.,R3 ;MODULO SECTOR INTO RANGE -26,-1 293 | BGE 3$ ;LOOP UNTIL REMAINDER GOES NEGATIVE 294 | ADD #27.,R3 ;RE-ADJUST TO RANGE 1-26 295 | .ENDC 296 | RTS R5 ;DONE 297 | 298 | $INPTR: .WORD 0 ;RT-11 FILLS THIS IN AT RUN TIME 299 | 300 | DXSIZE =.-DXSTRT 301 | .END 302 | ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� -------------------------------------------------------------------------------- /atari_tools/e4_tools/RPARAM.MAC: -------------------------------------------------------------------------------- 1 | .SBTTL ********** 2 | .SBTTL * MPARAM * 3 | .SBTTL ********** 4 | ...M69=0 5 | .IIF EQ,MACXX,...M69=1 6 | .IIF EQ,MACXX-69.,...M69=1 7 | .SBTTL COMMON PARAMETER FILE 8 | 9 | .ENABL AMA ;ABSOLUTE MODE ADDRESSING 10 | .NLIST BEX 11 | 12 | .IIF NDF MCEXEC, .NLIST 13 | 14 | R0= %0 15 | R1= %1 16 | R2= %2 17 | R3= %3 18 | R4= %4 19 | R5= %5 20 | SP= %6 21 | PC= %7 22 | .PAGE 23 | 24 | .SBTTL ASSEMBLY OPTIONS 25 | 26 | ;THE FOLLOWING MACRO CAUSES ASSEMBLY OPTIONS TO BE 27 | ;PRINTED ON THE LOADER MAP AND ANY IMPLICATIONS 28 | ;(SECOND ARGUMENT) TO BE DEFINED. OPTIONS ARE 29 | ;SELECTED BY EQUATING THEM TO ZERO. 30 | 31 | .MACRO LDRMAP MNE,IMPLIES 32 | .IF DF MNE 33 | .LIST 34 | ; .GLOBL MNE 35 | .NLIST 36 | .IRP X,<IMPLIES> 37 | X= 0 ;INVOKE IMPLICATIONS 38 | .ENDM 39 | .ENDC 40 | .ENDM LDRMAP 41 | 42 | 43 | ;THE FOLLOWING GROUP ENABLES FUNCTIONS 44 | 45 | LDRMAP PAL11R, <DOSV4, XMACRO, X40, X45, XEDPIC> 46 | LDRMAP PAL11R, <XEDLSB,XEDPNC, XEDLC, XLCTTM> 47 | LDRMAP PAL11R, <XZERR, XRESKB, TRAPS, XCREF> 48 | 49 | LDRMAP RT11 50 | 51 | LDRMAP RSX11D,<DFLGTB,YPHASE> ;RSX11D "FEATURES" 52 | 53 | LDRMAP DEBUG ;DEBUG VERSION 54 | LDRMAP DOSV4,<XRUN,XTIME> ;DOS V4 COMPATIBLE 55 | LDRMAP PDPV45 ;PDP-11/45 INSTRUCTIONS 56 | LDRMAP TRAPS ;ENABLE TRAPS FOR CALLS 57 | LDRMAP OVLAY ;ENABLE OVERLAYS 58 | LDRMAP DBLBUF ;TRAN'D INPUT 59 | LDRMAP YPHASE ;.PHASE/.DEPHAS 60 | LDRMAP FIXSTK ;FIXED STACK LOCATION 61 | 62 | ;THE FOLLOWING GROUP DISABLES FUNCTIONS 63 | 64 | .IIF DF X40&X45, XFLTG= 0 65 | 66 | LDRMAP XOVLAY ;SUPPRESS OVERLAYS 67 | LDRMAP XBAW ;NO BELLS AND WHISTLES 68 | LDRMAP XSWIT,XCREF ;NO SWITCHES 69 | LDRMAP XREL,XEDPIC ;ABS OUTPUT ONLY 70 | LDRMAP XMACRO,XSML ;ALL GENERATED CODE (MACRO, REPT, ETC.) 71 | LDRMAP XSML ;SYSTEM MACROS 72 | LDRMAP X40 ;PDP-11/40 FEATURES 73 | LDRMAP X45 ;PDP-11/45 FEATURES 74 | LDRMAP XFLTG,XEDFPT ;FLOATING POINT EVALUATION 75 | LDRMAP XEDABS ;ED.ABS 76 | LDRMAP XEDAMA ;ED.AMA 77 | LDRMAP XEDPIC ;ED.PIC 78 | LDRMAP XEDFPT ;ED.FPT 79 | LDRMAP XEDLSB ;ED.LSB 80 | LDRMAP XEDPNC ;ED.PNC 81 | LDRMAP XEDLC ;ED.LC 82 | LDRMAP XEDCDR ;CARD READER FORMAT 83 | LDRMAP XZERR ;"Z" ERRORS 84 | LDRMAP XLCTTM ;NO LPT LISTING FORMAT 85 | LDRMAP XLCSEQ ;SEQUENCE NUMBERS 86 | LDRMAP XCREF,XRUN ;CREF SUPPRESSION 87 | LDRMAP XRUN ;NO .RUN EMT USED 88 | ; LDRMAP XRESKB ;NO RESIDENT KB 89 | LDRMAP XTIME ;NO TIME & DATE ON HEADER 90 | LDRMAP DFLGTB ;????????? 91 | LDRMAP BRERR ;BRIEF SYSTEM ERRORS(RT11) 92 | .SBTTL VARIABLE PARAMETERS 93 | 94 | ;THE FOLLOWING PARAMETERS CAN BE MODIFIED 95 | ;AT ASSEMBLY TIME. 96 | 97 | .MACRO PARAM MNE, VALUE ;DEFINE DEFAULT PARAMETERS 98 | .IIF NDF MNE, MNE= VALUE 99 | .LIST 100 | MNE= MNE 101 | .NLIST 102 | .ENDM 103 | 104 | PARAM CPL, 80. ;CHARACTERS PER LISTING LINE 105 | PARAM LPP, 60. ;LINES PER PAGE 106 | .IF NDF PAL11R 107 | PARAM SRCLEN, 132. ;SOURCE STATEMENT LENGTH 108 | .IFF 109 | PARAM SRCLEN, 84. 110 | .ENDC 111 | LINLEN= SRCLEN 112 | OCTLEN= ^D<8*6> 113 | LSTLEN= OCTLEN+LINLEN+1 114 | PARAM BPMB, 20 ;BYTES PER MACRO BLOCK 115 | PARAM OBJLEN, 42. ;OBJECT BLOCK LENGTH 116 | PARAM RLDLEN, 42. ;RLD BLOCK LENGTH 117 | PARAM CMILEN, 83. 118 | PARAM SMLLEN, 80. 119 | PARAM CRFLEN, 132. 120 | PARAM TTLLEN,32. ;TITLE LENGTH 121 | PARAM STLLEN,64. ;SUB-TITLE LENGTH 122 | PARAM SYSUIC, 000401 ;SYSTEM UIC [1,1] 123 | 124 | .MACRO PURGE NAME ;PURGE MACRO 125 | .MACRO NAME A,B,C,D,E,F,G,H,I,J 126 | .ERROR ;MACRO "NAME" PURGED 127 | .ENDM 128 | .ENDM PURGE 129 | .SBTTL GLOBALS 130 | 131 | ;GLOBALS DEFINED IN ASSEMBLER 132 | 133 | .GLOBL ASSEM 134 | .GLOBL MACP0, MACP1, ENDP1, MACP2, ENDP2 135 | 136 | .IF NDF XSWIT 137 | .GLOBL ABSEXP, CHRPNT, GETR50, PASS, SYMBOL 138 | .GLOBL $EDABL, $NLIST, EXMFLG, ARGCNT, LC.TTM 139 | .GLOBL LCMASK, TTLBUF, TTLBRK, ERRBTS 140 | .ENDC 141 | 142 | .GLOBL PUTKB, PUTKBL, PUTLP 143 | 144 | .GLOBL DNC, MOVBYT, SAVREG, XMIT0 145 | 146 | .GLOBL LINBUF, ERRCNT 147 | 148 | .IF NDF XBAW 149 | .GLOBL CTTBL 150 | .ENDC 151 | 152 | .IF NDF XEDABS 153 | .GLOBL ED.ABS, EDMASK 154 | .ENDC 155 | 156 | .IF NDF XCREF 157 | .GLOBL GSARG 158 | .ENDC 159 | 160 | .IF DF TRAPS 161 | .GLOBL TRPPRO 162 | .ENDC 163 | 164 | ;GLOBALS DEFINED IN MCEXEC 165 | 166 | .IF NDF XCREF 167 | .GLOBL CRFTST, CRFBUF, CRFCNT 168 | .ENDC 169 | .IF NDF XTIME 170 | .GLOBL DATTIM 171 | .ENDC 172 | .IF NDF XSML 173 | .GLOBL FINSML, INISML 174 | .ENDC 175 | .GLOBL GETPLI, HDRTTL 176 | .GLOBL IO.EOF, IO.TTY, IO.ERR 177 | .GLOBL SYTTOP, TSTSTK 178 | 179 | .GLOBL IOFTBL, CNTTBL, BUFTBL 180 | 181 | .IF DF FIXSTK 182 | .GLOBL TSTSYT 183 | .ENDC 184 | .SBTTL SECTOR INITIALIZATION 185 | 186 | ;SECTORS ARE ENTERED THROUGH THE MACRO 187 | ; "ENTSEC", SPECIFYING THE SECTOR NAME FOR THE 188 | ;ARGUMENT. THE MACRO "XITSEC" RETURNS TO 189 | ;THE DEFAULT SECTOR, "MAIN". THE NULL .CSECT IS 190 | ;NEVER USED. 191 | 192 | .MACRO ENTSEC NAME ;INIT A SECTION 193 | .CSECT NAME 194 | .ENDM 195 | 196 | .IF NDF OVLAY 197 | .MACRO XITSEC 198 | .CSECT 199 | .ENDM 200 | .IFF 201 | .MACRO XITSEC ;EXIT TO DEFAULT SECTION 202 | .CSECT MAIN 203 | .ENDM 204 | 205 | ;OVERLAYS ARE COLLECTED IN SECTORS OVR1 THROUGH 206 | ;OVRN, WHERE N (DECIMAL) IS THE NUMBER OF OVERLAYS. 207 | 208 | OVRLVL= 0 ;INIT OVERLAY LEVEL 209 | NUMOVR= 9. ;NUMBER OF OVERLAYS ALLOWED 210 | XXX= 0 ;LOOP COUNTER 211 | .RADIX 10 ;GENERATE DECIMAL EXTENSIONS 212 | .REPT NUMOVR 213 | XXX= XXX+1 ;BUMP COUNT 214 | .IRP N,<\XXX> ;FORCE BINARY TO ASCII 215 | ENTSEC OVR'N 216 | OVR'N'B: 217 | .ENDM 218 | .ENDR 219 | .RADIX 8 ;BACK TO OCTAL 220 | 221 | ENTSEC OVRSEP ;OVERLAY SEPARATOR 222 | OVRSEP: 223 | ENTSEC OVR1 224 | .LIMIT ;OVERLAY TEST LOCATION 225 | GVNUM 226 | .BYTE 0 227 | .EVEN 228 | .ENDC 229 | 230 | .IF DF OVLAY 231 | ENTSEC MAIN$ ;EXEC'S COPY 232 | ENTSEC MAIN ;DEFAULT SECTOR 233 | .ENDC 234 | 235 | 236 | ENTSEC DPURE ;D-SPACE, PURE 237 | ENTSEC DPURE$ 238 | 239 | ENTSEC MIXED$ ;MIXED PURE AND IMPURE 240 | TAB= 11 241 | LF= 12 242 | VT= 13 243 | FF= 14 244 | CR= 15 245 | SPACE= 40 246 | .SBTTL SUBROUTINE CALL DEFINITIONS 247 | 248 | ;THE MACRO "CALL" IS THE EQUIVALENT OF "JSR PC," AND 249 | ;IS USED FOR SIMPLICITY. THE MACRO "RETURN" IS THE 250 | ;EQUIVALENT OF "RTS PC". 251 | 252 | .MACRO CALL ADDRESS 253 | JSR PC,ADDRESS 254 | .ENDM 255 | 256 | .MACRO RETURN 257 | RTS PC 258 | .ENDM 259 | 260 | 261 | ;THE MACRO "GENCAL" DEFINES A MACRO WHICH CALLS A 262 | ;SUBROUTINE OF THE SAME NAME. IF "TRAPS" ARE ENABLED, 263 | ;GENCAL CAUSES A TRAP. 264 | 265 | .IF NDF TRAPS 266 | 267 | .MACRO GENCAL NAME ;CAN BE CHANGED TO OPDEFS OR TRAPS 268 | .MACRO NAME 269 | JSR PC,NAME 270 | .ENDM 271 | .ENDM 272 | 273 | .IFF 274 | .MACRO GENCAL NAME 275 | ENTSEC TRPSEC 276 | .IRP OFFSET, <\.-TRPBAS> ;GENERATE NUMERIC 277 | TRP'OFFSET= TRAP+OFFSET 278 | .WORD NAME 279 | .MACRO NAME 280 | .WORD TRP'OFFSET 281 | .ENDM 282 | .ENDM 283 | XITSEC 284 | .ENDM 285 | 286 | ENTSEC TRPSEC 287 | TRPBAS: ;TRAP VECTOR TABLE 288 | XITSEC 289 | 290 | .ENDC 291 | .IF DF OVLAY 292 | GENCAL CALOVR 293 | 294 | .MACRO SETOVR N 295 | .IF NE OVRLVL 296 | .ERROR OVRLVL ; NOT = 0 297 | .ENDC 298 | .IF NDF XOVR'N 299 | OVRLVL= 1 300 | OVRBAS= OVR'N'B 301 | .CSECT OVR'N 302 | OVRTMP= . 303 | .MACRO XITSEC 304 | .CSECT OVR'N 305 | .ENDM 306 | XITSEC 307 | .ENABL PIC 308 | .IFF 309 | OVRLVL= -1 310 | .ENDC 311 | .ENDM 312 | 313 | .MACRO ENTOVR N 314 | SETOVR N 315 | .IF GT OVRLVL 316 | .CSECT MAIN 317 | CALOVR 318 | .WORD OVRTMP 319 | .CSECT OVR'N 320 | .ENDC 321 | .ENDM 322 | 323 | .MACRO XITOVR INLINE 324 | .IF EQ OVRLVL 325 | .ERROR OVRLVL ; NOT = 1 326 | .ENDC 327 | .IF NB <INLINE> 328 | .CSECT MAIN 329 | OV.TMP= . 330 | XITSEC 331 | JMP OV.TMP 332 | .ENDC 333 | OVRLVL= 0 334 | .MACRO XITSEC 335 | .CSECT MAIN 336 | .ENDM 337 | XITSEC 338 | .DSABL PIC 339 | .ENDM 340 | 341 | .MACRO JMPOVR ADRPNT ;JUMP TO POSSIBLE OVERLAY 342 | .NTYPE T.VAL, ADRPNT 343 | .IF NE T.VAL-26 ;(SP)+ 344 | MOV ADRPNT,-(SP) 345 | .ENDC 346 | JMP CALOVF 347 | .ENDM 348 | .IFF ;DEFAULTS FOR NON-OVERLAY 349 | 350 | .MACRO SETOVR NAME 351 | .ENDM 352 | .MACRO ENTOVR NAME 353 | .ENDM 354 | 355 | .MACRO XITOVR INLINE 356 | .ENDM 357 | 358 | .MACRO JMPOVR ADRPNT 359 | JMP @ADRPNT 360 | .ENDM 361 | 362 | .ENDC 363 | .SBTTL MISCELLANEOUS MACRO DEFINITIONS 364 | 365 | .MACRO PUTKB ADDR ;LIST TO KB 366 | MOV ADDR,R0 367 | CALL PUTKB 368 | .ENDM 369 | 370 | .MACRO PUTLP ADDR ;LIST TO LP 371 | MOV ADDR,R0 372 | CALL PUTLP 373 | .ENDM 374 | 375 | .MACRO PUTKBL ADDR ;LIST TO KB AND LP 376 | MOV ADDR,R0 377 | CALL PUTKBL 378 | .ENDM 379 | 380 | .MACRO PUTLIN ADDR ;USE LISTING FLAGS 381 | .IF DIF <ADDR><R0> 382 | MOV ADDR,R0 383 | .ENDC 384 | CALL PUTLIN 385 | .ENDM 386 | 387 | .MACRO XMIT WRDCNT ;MOVE SMALL # OF WORDS 388 | CALL XMIT0-<WRDCNT*2> 389 | .ENDM XMIT 390 | 391 | 392 | ;THE MACRO "GENSWT" IS USED TO SPECIFY A COMMAND 393 | ;STRING SWITCH (1ST ARGUMENT) AND THE ADDRESS OF 394 | ;THE ROUTINE TO BE CALLED WHEN ENCOUNTERED (2ND ARG). 395 | 396 | ENTSEC SWTSE$ ;SWITCH TABLE 397 | SWTBAS: 398 | ENTSEC SWTSEC 399 | 400 | .MACRO GENSWT MNE,ADDR,?LABEL 401 | .IF NDF MCEXEC 402 | ENTSEC SWTSEC 403 | .IFF 404 | ENTSEC SWTSE$ 405 | .ENDC 406 | LABEL: .ASCIZ /MNE/ 407 | . = LABEL+2 ;TRIM TO ONE WORD 408 | .WORD ADDR 409 | XITSEC 410 | .ENDM 411 | 412 | XITSEC 413 | 414 | .IIF NDF MCEXEC, .LIST 415 | �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� -------------------------------------------------------------------------------- /atari_tools/e4_tools/PST.MAC: -------------------------------------------------------------------------------- 1 | .TITLE PST V02-11 PERMANENT SYMBOL TABLE 4-SEP-75 2 | 3 | .IDENT /V0211/ 4 | 5 | .NLIST 6 | ; COPYRIGHT (C) 1974,1975 7 | ; 8 | ; DIGITAL EQUIPMENT CORPORATION 9 | ; MAYNARD, MASSACHUSETTS 01754 10 | ; 11 | ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY 12 | ; ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH 13 | ; THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, 14 | ; OR ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE MADE 15 | ; AVAILABLE TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO 16 | ; ONE WHO AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE 17 | ; SOFTWARE SHALL AT ALL TIMES REMAIN IN DIGITAL. 18 | ; 19 | ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO 20 | ; CHANGE WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED 21 | ; AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. 22 | ; 23 | ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE 24 | ; OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT 25 | ; WHICH IS NOT SUPPLIED BY DIGITAL. 26 | ; 27 | ; 28 | ;CHANGED BY JD FOR LSI,SEPT 2,75 29 | .LIST 30 | ; 15 NOV 72 31 | 32 | .GLOBL PSTBAS, PSTTOP ;LIMITS 33 | .GLOBL WRDSYM ;POINTER TO .WORD 34 | 35 | DR1= 200 ;DESTRUCTIVE REFERENCE IN FIRST FIELD 36 | DR2= 100 ;DESTRUCTIVE REFERENCE IN SECOND FIELD 37 | 38 | .GLOBL DFLGEV, DFLGBM, DFLCND, DFLMAC, DFLSMC 39 | 40 | DFLGEV= 020 ;DIRECTIVE REQUIRES EVEN LOCATION 41 | DFLGBM= 010 ;DIRECTIVE USES BYTE MODE 42 | DFLCND= 004 ;CONDITIONAL DIRECTIVE 43 | DFLMAC= 002 ;MACRO DIRECTIVE 44 | DFLSMC= 001 ;MCALL 45 | 46 | .IF DF PAL11R ;PAL11R SUBSET 47 | XMACRO= 0 48 | X40= 0 49 | X45= 0 50 | .ENDC 51 | 52 | .IIF DF X40&X45, XFLTG= 0 53 | .IIF DF XMACRO, XSML= 0 54 | 55 | ;NAME: RAD50 NAME OF OPCODE 56 | ;CLASS: TYPE OF PDP-11 INSTRUCTION 57 | ;VALUE: OPCODE 58 | ;FLAGS: DR1;1 FIELD INST.,DES.DESTROYED 59 | ; DR2:2 FIELDS ,DES. DESTROYED 60 | ;COND: OPERATIONS PARTICULAR TO A 61 | ; MACHINE 62 | .MACRO OPCDEF NAME, CLASS, VALUE, FLAGS, COND 63 | .IF NB <COND> 64 | .IF DF COND 65 | .MEXIT 66 | .ENDC 67 | .ENDC 68 | .RAD50 /NAME/ 69 | .BYTE FLAGS+0 70 | .GLOBL OPCL'CLASS 71 | .BYTE 200+OPCL'CLASS 72 | .WORD VALUE 73 | .ENDM 74 | 75 | .MACRO DIRDEF NAME, FLAGS, COND 76 | .RAD50 /.'NAME/ 77 | .BYTE FLAGS+0, 0 78 | .IF NB <COND> 79 | .IF DF COND 80 | .GLOBL OPCERR 81 | .WORD OPCERR 82 | .MEXIT 83 | .ENDC 84 | .ENDC 85 | .GLOBL NAME 86 | .WORD NAME 87 | .ENDM 88 | 89 | PSTBAS: ;BASE 90 | OPCDEF <ABSD >, 01, 170600, DR1, X45 91 | OPCDEF <ABSF >, 01, 170600, DR1, X45 92 | OPCDEF <ADC >, 01, 005500, DR1 93 | OPCDEF <ADCB >, 01, 105500, DR1 94 | OPCDEF <ADD >, 02, 060000, DR2 95 | OPCDEF <ADDD >, 11, 172000, DR2, X45 96 | OPCDEF <ADDF >, 11, 172000, DR2, X45 97 | OPCDEF <ASH >, 09, 072000, DR2, X40&X45 98 | OPCDEF <ASHC >, 09, 073000, DR2, X40&X45 99 | OPCDEF <ASL >, 01, 006300, DR1 100 | OPCDEF <ASLB >, 01, 106300, DR1 101 | OPCDEF <ASR >, 01, 006200, DR1 102 | OPCDEF <ASRB >, 01, 106200, DR1 103 | OPCDEF <BCC >, 04, 103000, 104 | OPCDEF <BCS >, 04, 103400, 105 | OPCDEF <BEQ >, 04, 001400, 106 | OPCDEF <BGE >, 04, 002000, 107 | OPCDEF <BGT >, 04, 003000, 108 | OPCDEF <BHI >, 04, 101000, 109 | OPCDEF <BHIS >, 04, 103000, 110 | OPCDEF <BIC >, 02, 040000, DR2 111 | OPCDEF <BICB >, 02, 140000, DR2 112 | OPCDEF <BIS >, 02, 050000, DR2 113 | OPCDEF <BISB >, 02, 150000, DR2 114 | OPCDEF <BIT >, 02, 030000, 115 | OPCDEF <BITB >, 02, 130000, 116 | OPCDEF <BLE >, 04, 003400, 117 | OPCDEF <BLO >, 04, 103400, 118 | OPCDEF <BLOS >, 04, 101400, 119 | OPCDEF <BLT >, 04, 002400, 120 | OPCDEF <BMI >, 04, 100400, 121 | OPCDEF <BNE >, 04, 001000, 122 | OPCDEF <BPL >, 04, 100000, 123 | OPCDEF <BPT >, 00, 000003, , X45 124 | OPCDEF <BR >, 04, 000400, 125 | OPCDEF <BVC >, 04, 102000, 126 | OPCDEF <BVS >, 04, 102400, 127 | OPCDEF <CCC >, 00, 000257, 128 | OPCDEF <CFCC >, 00, 170000, , X45 129 | OPCDEF <CLC >, 00, 000241, 130 | OPCDEF <CLN >, 00, 000250, 131 | OPCDEF <CLR >, 01, 005000, DR1 132 | OPCDEF <CLRB >, 01, 105000, DR1 133 | OPCDEF <CLRD >, 01, 170400, DR1, X45 134 | OPCDEF <CLRF >, 01, 170400, DR1, X45 135 | OPCDEF <CLV >, 00, 000242, 136 | OPCDEF <CLZ >, 00, 000244, 137 | OPCDEF <CMP >, 02, 020000, 138 | OPCDEF <CMPB >, 02, 120000, 139 | OPCDEF <CMPD >, 11, 173400, , X45 140 | OPCDEF <CMPF >, 11, 173400, , X45 141 | OPCDEF <CNZ >, 00, 000254, 142 | OPCDEF <COM >, 01, 005100, DR1 143 | OPCDEF <COMB >, 01, 105100, DR1 144 | OPCDEF <DEC >, 01, 005300, DR1 145 | OPCDEF <DECB >, 01, 105300, DR1 146 | OPCDEF <DIV >, 07, 071000, DR2, X40&X45 147 | OPCDEF <DIVD >, 11, 174400, DR2, X45 148 | OPCDEF <DIVF >, 11, 174400, DR2, X45 149 | OPCDEF <EMT >, 06, 104000, 150 | OPCDEF <FADD >, 03, 075000, DR1, X40 151 | OPCDEF <FDIV >, 03, 075030, DR1, X40 152 | OPCDEF <FMUL >, 03, 075020, DR1, X40 153 | OPCDEF <FSUB >, 03, 075010, DR1, X40 154 | OPCDEF <HALT >, 00, 000000, 155 | OPCDEF <INC >, 01, 005200, DR1 156 | OPCDEF <INCB >, 01, 105200, DR1 157 | OPCDEF <IOT >, 00, 000004, 158 | OPCDEF <JMP >, 01, 000100, 159 | OPCDEF <JSR >, 05, 004000, DR1 160 | OPCDEF <LDCDF >, 11, 177400, DR2, X45 161 | OPCDEF <LDCFD >, 11, 177400, DR2, X45 162 | OPCDEF <LDCID >, 14, 177000, DR2, X45 163 | OPCDEF <LDCIF >, 14, 177000, DR2, X45 164 | OPCDEF <LDCLD >, 14, 177000, DR2, X45 165 | OPCDEF <LDCLF >, 14, 177000, DR2, X45 166 | OPCDEF <LDD >, 11, 172400, DR2, X45 167 | OPCDEF <LDEXP >, 14, 176400, DR2, X45 168 | OPCDEF <LDF >, 11, 172400, DR2, X45 169 | OPCDEF <LDFPS >, 01, 170100, , X45 170 | OPCDEF <LDSC >, 00, 170004, , X45 171 | OPCDEF <LDUB >, 00, 170003, , X45 172 | OPCDEF <MARK >, 10, 006400, , X45 173 | OPCDEF <MFPD >, 01, 106500, , X45 174 | OPCDEF <MFPI >, 01, 006500, , X45 175 | OPCDEF <MFPS >, 01, 106700, DR1, XLSI 176 | OPCDEF <MODD >, 11, 171400, DR2, X45 177 | OPCDEF <MODF >, 11, 171400, DR2, X45 178 | OPCDEF <MOV >, 02, 010000, DR2 179 | OPCDEF <MOVB >, 02, 110000, DR2 180 | OPCDEF <MTPD >, 01, 106600, DR1, X45 181 | OPCDEF <MTPI >, 01, 006600, DR1, X45 182 | OPCDEF <MTPS >, 01, 106400, , XLSI 183 | OPCDEF <MUL >, 07, 070000, DR2, X40&X45 184 | OPCDEF <MULD >, 11, 171000, DR2, X45 185 | OPCDEF <MULF >, 11, 171000, DR2, X45 186 | OPCDEF <NEG >, 01, 005400, DR1 187 | OPCDEF <NEGB >, 01, 105400, DR1 188 | OPCDEF <NEGD >, 01, 170700, DR1, X45 189 | OPCDEF <NEGF >, 01, 170700, DR1, X45 190 | OPCDEF <NOP >, 00, 000240, 191 | OPCDEF <RESET >, 00, 000005, 192 | OPCDEF <ROL >, 01, 006100, DR1 193 | OPCDEF <ROLB >, 01, 106100, DR1 194 | OPCDEF <ROR >, 01, 006000, DR1 195 | OPCDEF <RORB >, 01, 106000, DR1 196 | OPCDEF <RTI >, 00, 000002, 197 | OPCDEF <RTS >, 03, 000200, DR1 198 | OPCDEF <RTT >, 00, 000006, , X45 199 | OPCDEF <SBC >, 01, 005600, DR1 200 | OPCDEF <SBCB >, 01, 105600, DR1 201 | OPCDEF <SCC >, 00, 000277, 202 | OPCDEF <SEC >, 00, 000261, 203 | OPCDEF <SEN >, 00, 000270, 204 | OPCDEF <SETD >, 00, 170011, , X45 205 | OPCDEF <SETF >, 00, 170001, , X45 206 | OPCDEF <SETI >, 00, 170002, , X45 207 | OPCDEF <SETL >, 00, 170012, , X45 208 | OPCDEF <SEV >, 00, 000262, 209 | OPCDEF <SEZ >, 00, 000264, 210 | OPCDEF <SOB >, 08, 077000, DR1, X45 211 | OPCDEF <SPL >, 13, 000230, , X45 212 | OPCDEF <STA0 >, 00, 170005, , X45 213 | OPCDEF <STB0 >, 00, 170006, , X45 214 | OPCDEF <STCDF >, 12, 176000, DR2, X45 215 | OPCDEF <STCDI >, 12, 175400, DR2, X45 216 | OPCDEF <STCDL >, 12, 175400, DR2, X45 217 | OPCDEF <STCFD >, 12, 176000, DR2, X45 218 | OPCDEF <STCFI >, 12, 175400, DR2, X45 219 | OPCDEF <STCFL >, 12, 175400, DR2, X45 220 | OPCDEF <STD >, 12, 174000, DR2, X45 221 | OPCDEF <STEXP >, 12, 175000, DR2, X45 222 | OPCDEF <STF >, 12, 174000, DR2, X45 223 | OPCDEF <STFPS >, 01, 170200, DR1, X45 224 | OPCDEF <STQ0 >, 00, 170007, , X45 225 | OPCDEF <STST >, 01, 170300, DR1, X45 226 | OPCDEF <SUB >, 02, 160000, DR2 227 | OPCDEF <SUBD >, 11, 173000, DR2, X45 228 | OPCDEF <SUBF >, 11, 173000, DR2, X45 229 | OPCDEF <SWAB >, 01, 000300, DR1 230 | OPCDEF <SXT >, 01, 006700, DR1, X45 231 | OPCDEF <TRAP >, 06, 104400, 232 | OPCDEF <TST >, 01, 005700, 233 | OPCDEF <TSTB >, 01, 105700, 234 | OPCDEF <TSTD >, 01, 170500, , X45 235 | OPCDEF <TSTF >, 01, 170500, , X45 236 | OPCDEF <WAIT >, 00, 000001, 237 | OPCDEF <XOR >, 05, 074000, DR2, X45 238 | DIRDEF <ASCII>, DFLGBM 239 | DIRDEF <ASCIZ>, DFLGBM 240 | DIRDEF <ASECT>, , XREL 241 | DIRDEF <BLKB > 242 | DIRDEF <BLKW >, DFLGEV 243 | DIRDEF <BYTE >, DFLGBM 244 | DIRDEF <COPY > 245 | DIRDEF <CSECT>, , XREL 246 | .IF DF YPHASE 247 | DIRDEF <DEPHA> 248 | .ENDC 249 | DIRDEF <DSABL> 250 | DIRDEF <ENABL> 251 | DIRDEF <END > 252 | DIRDEF <ENDC >, DFLCND 253 | DIRDEF <ENDM >, DFLMAC, XMACRO 254 | DIRDEF <ENDR >, DFLMAC, XMACRO 255 | DIRDEF <EOT > 256 | DIRDEF <ERROR> 257 | DIRDEF <EVEN > 258 | DIRDEF <FLT2 >, DFLGEV, XFLTG 259 | DIRDEF <FLT4 >, DFLGEV, XFLTG 260 | DIRDEF <GLOBL>, , XREL 261 | DIRDEF <IDENT> 262 | DIRDEF <IF >, DFLCND 263 | DIRDEF <IFDF >, DFLCND 264 | DIRDEF <IFEQ >, DFLCND 265 | DIRDEF <IFF >, DFLCND 266 | DIRDEF <IFG >, DFLCND 267 | DIRDEF <IFGE >, DFLCND 268 | DIRDEF <IFGT >, DFLCND 269 | DIRDEF <IFL >, DFLCND 270 | DIRDEF <IFLE >, DFLCND 271 | DIRDEF <IFLT >, DFLCND 272 | DIRDEF <IFNDF>, DFLCND 273 | DIRDEF <IFNE >, DFLCND 274 | DIRDEF <IFNZ >, DFLCND 275 | DIRDEF <IFT >, DFLCND 276 | DIRDEF <IFTF >, DFLCND 277 | DIRDEF <IFZ >, DFLCND 278 | DIRDEF <IIF > 279 | DIRDEF <INCLU> 280 | DIRDEF <IRP >, DFLMAC, XMACRO 281 | DIRDEF <IRPC >, DFLMAC, XMACRO 282 | DIRDEF <LIMIT>, DFLGEV, XREL 283 | DIRDEF <LIST > 284 | DIRDEF <MACLI>, DFLSMC, XSML 285 | DIRDEF <MACR >, DFLMAC, XMACRO 286 | DIRDEF <MACRO>, DFLMAC, XMACRO 287 | DIRDEF <MCALL>, DFLSMC, XSML 288 | DIRDEF <MEXIT> , , XMACRO 289 | DIRDEF <NARG > , , XMACRO 290 | DIRDEF <NCHR > , , XMACRO 291 | DIRDEF <NLIST> 292 | DIRDEF <NTYPE> , , XMACRO 293 | DIRDEF <ODD > 294 | DIRDEF <PAGE > 295 | .IF DF YPHASE 296 | DIRDEF <PHASE> 297 | .ENDC 298 | DIRDEF <PRINT> 299 | .IF DF RSX11D 300 | DIRDEF <PSECT> 301 | .ENDC 302 | DIRDEF <RADIX> 303 | DIRDEF <RAD50>, DFLGEV 304 | .IF NDF XBAW 305 | DIRDEF <REM > 306 | .ENDC 307 | DIRDEF <REPT >, DFLMAC, XMACRO 308 | DIRDEF <SBTTL> 309 | DIRDEF <TITLE> 310 | WRDSYM: 311 | DIRDEF <WORD >, DFLGEV 312 | 313 | 314 | PSTTOP: ;TOP LIMIT 315 | 316 | .END 317 | ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� -------------------------------------------------------------------------------- /atari_tools/e2_tools/PIP1.MAC: -------------------------------------------------------------------------------- 1 | .IF DF MBUILD 2 | .TITLE MBUILD OVERLAY V02-03 3 | .IFF 4 | .TITLE PIP1 OVERLAY V04-06 5 | .ENDC 6 | ; RT-11 PIP (PERIPHERAL INTERCHANGE PROGRAM) 7 | ; AND 8 | ; RT-11 MBUILD (MAGTAPE BUILD PROGRAM 9 | ; 10 | ; DEC-11-ORPPA-E 11 | ; 12 | ; COPYRIGHT (C) 1973,1974,1975 13 | ; 14 | ; DIGITAL EQUIPMENT CORPORATION 15 | ; MAYNARD, MASSACHUSETTS 01754 16 | ; 17 | ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY 18 | ; ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH 19 | ; THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, 20 | ; OR ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE MADE 21 | ; AVAILABLE TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO 22 | ; ONE WHO AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE 23 | ; SOFTWARE SHALL AT ALL TIMES REMAIN IN DIGITAL. 24 | ; 25 | ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO 26 | ; CHANGE WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED 27 | ; AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. 28 | ; 29 | ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE 30 | ; OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT 31 | ; WHICH IS NOT SUPPLIED BY DIGITAL. 32 | ; 33 | ; MAY 2, 1973 34 | ; 35 | ; HANK MAURER 36 | ; LOUISE GERHART 37 | ; ANTON CHERNOFF 38 | 39 | ; JUNE 25, 1974 40 | ; 41 | ; BOB FRIEDENTHAL 42 | ; 43 | ; NOVEMBER 1974,JANUARY 1975,AUGUST 1975 44 | ; 45 | ; BOB BEAN 46 | ; 47 | ; 48 | .SBTTL MACRO DEFINITIONS 49 | 50 | .MCALL ..V1.. 51 | .MCALL .CLOSE, .CSISPC,.DELETE,.DSTATU,.FETCH, .HRESET 52 | .MCALL .LOOKUP,.PRINT, .RCTRLO,.RENAME,.REOPEN,.SAVEST 53 | .MCALL .SETTOP,.SRESET,.TTYIN, .TTYOUT,.UNLOCK,.LOCK 54 | .MCALL .READW, .WAIT, .DATE, .WRITW, .EXIT, .REGDEF 55 | .MCALL .CSIGEN,.SERR ,.TRPSET,...CM1,...CM2,...CM3 56 | 57 | ..V1.. ;USE V1 MACRO FORMAT 58 | .REGDEF ;DEFINE REGISTERS 59 | 60 | .MACRO MESSAGE TEXT 61 | .CSECT MSGS1 62 | ..CH =. 63 | .ASCIZ %TEXT% 64 | .CSECT 65 | .PRINT #..CH 66 | .ENDM MESSAGE 67 | 68 | .MACRO ERROR TEXT 69 | JSR R0,MSG 70 | .ASCIZ "?TEXT?" 71 | .EVEN 72 | .ENDM ERROR 73 | 74 | .MACRO SWITCH CHAR,ADR,MODE,VALUE 75 | .BYTE ''CHAR,MODE 76 | .IF B VALUE 77 | .WORD 0 78 | .IFF 79 | VALUE: .WORD 0 80 | .ENDC 81 | .IF EQ MODE 82 | .WORD ADR-COPY 83 | .IFF 84 | ADR: .WORD 0 85 | .ENDC 86 | .ENDM SWITCH 87 | 88 | ;THE FOLLOWING MONITOR FEATURES ARE USED IN NON-STANDARD CALLS 89 | ; HENCE, THE USUAL MACROS ARE NOT USED 90 | 91 | .MACRO .ENTER CH 92 | EMT 40+CH 93 | .ENDM .ENTER 94 | 95 | .MACRO .READ CH 96 | EMT 200+CH 97 | .ENDM .READ 98 | 99 | .MACRO .WRITE CH 100 | EMT 220+CH 101 | .ENDM .WRITE 102 | 103 | ;SYMBOL DEFINITIONS 104 | 105 | NLIMIT = 37 ;MAX # OF DIRECTORY SEGMENTS ALLOWED 106 | STRTAD = 40 ;USER PROGRAM START ADDRESS 107 | JSW = 44 ;JOB STATUS WORD 108 | EMTERR = 52 ;RT-11 ERROR RETURN WORD 109 | SYSPTR = 54 ;POINTER TO RT-11 RESIDENT 110 | DIRBLK = 6 ;STARTING BLOCK OF DIRECTORIES 111 | OFFSET = 256 ;OFFSET TO VITAL RMON WORDS 112 | ;OFFSET IS DIFF OF BLKEY AND $RMON 113 | SYSUNT = 275 ;OFFSET TO SYSTEM DEVICE UNIT # 114 | CONFIG = 300 ;OFFSET TO CONFIG WORD 115 | R50STAR = 132500 ;* IN RADIZ 50 (FROM CSI) 116 | DIREOB = 4000 ;DIRECTORY BIT SAYING END OF BLOCK 117 | DIRPRM = 2000 ;BIT SAYING PERMANENT FILE 118 | DIREMP = 1000 ;BIT SAYING EMPTY ENTRY 119 | DIRESZ = 16 ;SIZE OF 1 ENTRY (+ XTRABY) 120 | FGACTV = 200 ;BIT IN CONFIG SAYING FG ACTIVE 121 | CSWEOF = 20000 ;EOF BIT IN CSW 122 | HDR1 = 42110 ;ASCII H,D 123 | EOF1 = 47505 ;ASCII E,O 124 | 125 | RXCS = 177170 ;ADDRESS OF RX11 CONTROL/STATUS REGISTER 126 | .IF NDF MBUSSC 127 | RSCS2 = 172050 ;ADDRESS OF RH11/RJS03/4 CONT REG 2 128 | .ENDC 129 | .IF DF MBUSSC 130 | RSCS2 = 176310 ;ADDRESS OF RH11/RJS03/4 CR2 131 | .ENDC 132 | 133 | ;DEVICE IDENTIFICATION CODES IN $STAT 134 | RKIDEN=0 ;RK11/RK05,RK03 135 | DTIDEN=1 ;TC11/TU56 136 | TMIDEN=11 ;TM11/TU10/TSO3 137 | RFIDEN=12 ;RF11/RS11 138 | CTIDEN=13 ;TA11/TU60 139 | RJIDEN=16 ;RJS03/4 140 | TJIDEN=20 ;TJU16 141 | DPIDEN=21 ;RP11/RP02,RP03 142 | DXIDEN=22 ;RX11/RX01 143 | 144 | ;ASCII CHARACTERS 145 | RUBOUT=377 ;RUBOUT 146 | ASTRSK=52 ;ASTERISK 147 | 148 | .GLOBL ILLCMD,FGCHK,DEVINF,SSB,HANERR,REBOT,FILDES 149 | .SBTTL REBOOT 150 | ; 151 | ; THIS CODE REBOOTS THE SYSTEM FROM ANY OF THE DEVICES 152 | ; SPECIFIED IN THE TABLE AT BOOTDV. THE COMMAND IS ANALYZED,THE 153 | ; DEVICE IS LOOKED UP IN THE TABLE,AND IF FOUND,THE CORRESPONDING 154 | ; ROUTINE IN THE TABLE AT BOOTAD IS ENTERED TO PEFORM THE BOOT 155 | ; 156 | ;BOOTDV-TABLE OF DEVICE CODES WHICH LISTS DEVICES FROM WHICH RT-11 157 | ;CAN BE BOOTED. THIS TABLE IS ORDERED TO CORRESPOND WITH THE 158 | ;TABLE BOOTAD,WHICH CONTAINS THE ADDRESSES OF THE CORRESPONDING 159 | ;BOOTSTRAP ROUTINE FOR EACH DEVICE. 160 | BOOTDV: .IF NDF MBUILD 161 | .BYTE DTIDEN ;TC11/TU56 DECTAPE 162 | .BYTE DXIDEN ;RX11/RX01 FLOPPY DISK 163 | .ENDC 164 | .BYTE RFIDEN ;RF11/RS11 FIXED HEAD DISK 165 | .BYTE DPIDEN ;RP11/RP02,RP03 DISK CARTRIDGE 166 | .BYTE RKIDEN ;RK11/RK05,RK03 DECPACK DISK 167 | .BYTE RJIDEN ;RH11/RJSO3/4 FIXED HEAD DISK 168 | BDVEND: .EVEN ;END OF TABLE 169 | 170 | ;BOOTAD-TABLE OF ADDRESSES FOR BOOTSRAP ROUTINES FOR EACH OF THE 171 | ;DEVICES SPECIFIED IN BOOTDV. INDEX OF DEVICE IN BOOTDV IS 172 | ;USED AS INDEX INTO THIS JUMP TABLE. 173 | BOOTAD: .IF NDF MBUILD 174 | DTBOOT ;TC11 175 | DXBOOT ;RX11 176 | .ENDC 177 | RFBOOT ;RF11 178 | DPBOOT ;RP11 179 | RKBOOT ;RK11 180 | RJBOOT ;RJSO3/4 181 | 182 | ;REBOOT ROUTINE 183 | ;ANALYZES /O COMMAND TO DETERMINE WHICH DEVICE WAS SPECIFED BY 184 | ;LOOKING FOR THE CODE OF THE SPECIFIED DEVICE IN BOOTDV. IF THE 185 | ;CODE IS FOUND,THE APPROPRIATE ROUTINE IS ENTERED 186 | 187 | REBOT: JSR PC,FGCHK ;MAKE SURE FG IS NOT PRESENT 188 | MOV #FILDES+36,R5 ;POINT TO INPUT LIST 189 | TST (R5) ;WAS A DEVICE SPECIFIED? 190 | BEQ 4$ ;NO 191 | TST (R4) ;ANY OUTPUT FILES SPECIFIED? 192 | BEQ 3$ ;NO 193 | 4$: JMP ILLCMD ;BAD COMMAND 194 | 3$: TST 2(R5) ;ANY INPUT FILES? 195 | BNE 4$ ;YES-/O PROBABLY MISTAKE 196 | .DSTATU #DEVINF,R5 ;GET CODE FOR THE DEVICE 197 | .LOOKUP 1,R5 ;NON-FILE STRUCTURED LOOKUP ON DEVICE,FOLLOWED 198 | .SAVEST 1,#SSB ;BY A SAVESTATUS WILL MAKE UNIT # AVAILABLE 199 | MOV #BOOTDV,R0 ;POINT TO LEGAL DEVICE CODE TABLE 200 | 1$: CMPB DEVINF,(R0)+ ;LOOK FOR DECIE 201 | BEQ DVFND ;FOUND THE DEVICE 202 | CMP R0,#BDVEND ;END OF TABLE? 203 | BLO 1$ ;NO-EXAMINE NEXT ENTRY 204 | HANER1: JMP HANERR ;YES-DEVICE SPECIFIED MUST BE ILLEGAL 205 | 206 | DVFND: SUB #BOOTDV+1,R0 ;GET INDEX OF DEV IN BOOTDV 207 | ASL R0 ;ADDRESSES ARE EVEN 208 | JMP @BOOTAD(R0) ;ENTER BOOT ROUTINE FOR DEVICE 209 | 210 | ;BM793-COMMON BOOTSTRAP ROUTINE FOR RP11,RK11,TC11,RF11 211 | ;ON ENTRY,R0 POINTS TO CONTROLLER WORD COUNT REGISTER 212 | ;R1 CONTAINS CONTROLLER COMMAND VALUE TO CAUSE A READ 213 | ;R2 CONTAINS APPROPRAITE UNIT VALUE TO PUT IN CONTROLLER 214 | ;R3 CONTAINS ADDRESS OF CONTOLLER REGISTER TO RECIEVE R2 215 | 216 | BM793: .HRESET ;NOW BEGINS THE BOOT 217 | 2$: RESET 218 | MOV R2,@R3 ;PUT UNIT # IN REGISTER POINTED TO BY R3 219 | MOV R0,R5 ;WE CAN'T DESTROY R0 220 | MOV #-256.,@R5 ;SET WORD COUNT 221 | CMP R5,#177344 ;IS THIS DECTAPE? 222 | BNE 3$ ;NO 223 | MOV #4002,-(R5) ;YES-MUST SEARCH FOR BLOCK 0 224 | TST @R5 225 | BPL .-2 226 | TST -(R5) 227 | BPL 2$ 228 | CMP (R5)+,(R5)+ ;AT BLOCK 0-POINT R5 TO COMMAND REGISTER 229 | 3$: MOV R1,-(R5) ;STUFF COMMAND REGISTER WITH READ COMMAND 230 | TSTB @R5 ;WAIT TO FINISH 231 | BPL .-2 232 | TST @R5 ;ERROR? 233 | BMI 2$ ;YES-TRY AGAIN 234 | CLRB @R5 ;NO-STOP DEVICE 235 | JMP @#0 ;AND START SECONDARY BOOT CODE 236 | 237 | .IF NDF MBUILD 238 | ;FLOPPY BOOT ROUTINE 239 | PS: RTI ;USED TO LOAD PS FROM STACK IN MACHINE 240 | ;INDEPENDENT FASHION 241 | DXBOOT: .HRESET ;STOP ALL RT-11 I/O 242 | RESET ;STOP TERMINAL AND CLOCK 243 | DECB SSB+11 ;UNIT #-1 IN SAVED STATUS BLOCK 244 | BMI UNIT0 ;IF RESULT<0,UNIT WAS 0 245 | .IF DF,$$DEC 246 | BNE HANER1 ;ANY UNIT BUT 0 OR 1 ILLEGAL 247 | MOV #20,R2 ;BOOT FROM UNIT 1 248 | BR UNIT1 249 | UNIT0: CLR R2 250 | UNIT1: BIS #100247,R2 ;R2=20 FOR UNIT 1 BOOT 251 | MOV #340,-(SP) ;PUT DESIRED PRIORITY ON STACK 252 | ;THS FOLLOWING INSTRUCTION IS MACHINE 253 | ;INDEPENDENT WAY TO LOAD PS 254 | JSR PC,PS ;LOAD PS FROM STACK WITH RTI INST 255 | 1$: MOV #RXCS,R1 ;POINT R1 TO STATUS REGISTER FOR CONTROLLER 256 | 2$: BITB R2,@R1 ;WAIT FOR FLOPPY DONE 257 | BEQ 2$ 258 | MOVB #7,R3 ;SET SECTOR/TRACK/LOOP CONTROL 259 | MOV R1,R0 ;SET UP TO POINT TO RXDB 260 | MOV R2,(R0)+ ;LOAD READ AND GO FUNCTION 261 | BR 4$ ;GO TO WAIT LOOP 262 | 3$: MOV #1,@R0 ;1ST SECTOR 1, 2ND TRACK 1, 3RD JUNK 263 | 4$: ASR R3 ;STEP THROUGH SECTOR/TRACK SEQ 264 | BCS 6$ ;BRANCH TO WAIT,SIT CYCLE NOT DONE 265 | MOVB (PC)+,@R1 ;LOAD EMPTY BUFFER COMMAND 266 | 5$: MOVB @R0,(R3)+ ;MOVE DATA BYTE TO MEMORY 267 | 6$: BIT R2,@R1 ;WAIT FOR TR DONE OR ERROR 268 | BEQ 6$ 269 | BMI 1$ ;BRANCH TO RETRY IF ERROR 270 | BCS 3$ ;BRANCH IF IN SECTOR/TRACK LOOP 271 | TSTB @R1 ;IS DATA TRANSFER DONE 272 | BMI 5$ ;BRANCH TO TRANSFER MORE 273 | CLR R0 ;MAKE SURE LOC 0 IS 240 274 | CMP #240,@R0 275 | BNE 1$ ;BRANCH IF NOT TO RETRY 276 | CMPB #247,R2 ;SET C=1 IF UNIT 1 BOOT 277 | ADC R0 ;R0=0 IF UNIT0,1 IF UNIT 1 278 | CLR PC ;GO TO SECONDARY BOOT 279 | .IFF 280 | BR HANER1 281 | UNIT0: MOV #512.,R4 ;BYTE COUNT 282 | CLR R1 ;MEM POINTER 283 | MOV #200,R0 ;COMMAND 284 | MOV #176002,R5 ;SYKES CONTROL ADDRESS 285 | MOV R0,(R5) ;RESET DRIVE 286 | INC R0 ;MAKE SELECT COMMAND 287 | MOV R0,(R5)+ ;SELECT DRIVE 0 (201) 288 | BIC #200,R0 ;MAKE TRACK/SECTOR READ COMMAND 289 | BIT #2,(R5) ;DRIVE READY? 290 | BEQ UNIT0 ;NO 291 | MOV R0,-(R5) ;TRACK SELECT (1) 292 | MOV R0,(R5) ;SECTOR SELECT (1) 293 | TST -(R5) ;ADJUST ADDRESS 294 | 2$: TSTB (R5) ;DO DATA XFER 295 | BPL 2$ 296 | MOVB 6(R5),(R1)+ 297 | DEC R4 298 | BGT 2$ 299 | TST (R5)+ 300 | MOV #203,(R5)+ ;TERMINATE I/O 301 | BIT #110,(R5) ;ERRORS? 302 | BNE UNIT0 ;YEP 303 | CLR PC 304 | .ENDC 305 | 306 | ;TC11 BOOT ROUTINE 307 | DTBOOT: MOV #177344,R0 ;ADDR OF WC REGISTER IN R0 308 | .ENDC 309 | ONEONL: TSTB SSB+11 ;ONLY UNIT 0 ALLOWED 310 | BNE HANER1 ;ILLEGAL DEVICE IF UNIT NOT 0 311 | CLR R3 ;DON'T NEED UNIT POINTER 312 | READ5G: MOV #5,R1 ;READ COMMAND IS READ (4)+GO (1) 313 | BR BM793 ;DO COMMON BOOT 314 | 315 | ;RK11 BOOT ROUTINE 316 | RKBOOT: MOVB SSB+11,R2 ;UNIT INTO R2 317 | CLC 318 | ROR R2 ;SLIDE UNIT TO BITS 15-13 319 | ROR R2 320 | ROR R2 321 | ROR R2 322 | MOV #177412,R3 ;R3 POINTS TO UNIT REGISTER 323 | MOV #177406,R0 ;R0 POINTS TO WC 324 | BR READ5G ;SET READ COMMAND AND GO TO BOOT 325 | 326 | ;RF11 ROUTINE 327 | RFBOOT: MOV #177462,R0 ;POINT R0 TO WC 328 | BR ONEONL ;THE RESET IS SHARED WITH DECTAPE 329 | 330 | ;RP11 ROUTINE 331 | DPBOOT: MOV #176716,R0 ;POINT RO TO WC 332 | MOV SSB+10,R1 ;UNIT # INTO R1 333 | BIC #174377,R1 ;STRIP TO UNIT BITS 334 | ADD #5,R1 ;READ COMMAND IN R1 335 | CLR R3 ;DON'T NEED SEPERATE UNIT 336 | BR BM793 337 | 338 | ;RJS03/4 ROUTINE 339 | RJBOOT: .HRESET ;STOP ALL RT-11 I/O,INCLUDING TTY 340 | RESET ;AND STOP ALL PDP-11 I/O 341 | MOV #RSCS2,R5 ;POINT R5 TO RH11 CONROL REG 2 342 | MOVB SSB+11,(R5) ;SET UNIT 343 | CLR -(R5) ;READ BLOCK 0 344 | CLR -(R5) ;INTO ADRRESS 0 345 | MOV #177400,-(R5) ;READ ONE BLOCK 346 | MOV #71,-(R5) ;GO 347 | 1$: BIT #100200,(R5) ;TEST FOR DONE OR ERROR 348 | BEQ 1$ ;WAIT 349 | BMI RJBOOT ;KEEP TRYING ON ERROR 350 | CLR PC ;BOOT DONE-START SECONDARY 351 | .END ;END OF BOOTSRAP OVERLAY 352 | ��������������������������������������������������������������������������������������������������������������������������������������������������������������� --------------------------------------------------------------------------------