From 7af5ad59491ddf2066641aef1e0025a337c0f247 Mon Sep 17 00:00:00 2001 From: Philipp Hachtmann Date: Thu, 1 Oct 2015 19:52:51 +0200 Subject: [PATCH] software: Added more and more Signed-off-by: Philipp Hachtmann --- sw/SPACE/SPACE.PA | 1703 +++++ sw/SPACE/original-space.pal | 2262 ++++++ sw/SPACE/space.pal | 2392 ++++++ sw/SPACE/space.pal.bak | 2355 ++++++ sw/f4/FRTSRC/BUILD.BI | 25 + sw/f4/FRTSRC/EXIT.BI | 25 + sw/f4/FRTSRC/FMAIN.BI | 230 + sw/f4/FRTSRC/FMAIN.OL | 326 + sw/f4/FRTSRC/LINK.BI | 53 + sw/f4/FRTSRC/PLOT.RA | 268 + sw/f4/FRTSRC/RALF.PA | 4454 +++++++++++ sw/f4/FRTSRC/RALF.err | 30 + sw/f4/FRTSRC/READ.ME | 1 + sw/f4/FRTSRC/TMP.BI | 239 + sw/f4/FRTSRC/abs.ra | 21 + sw/f4/FRTSRC/acos.ra | 78 + sw/f4/FRTSRC/adc.ra | 59 + sw/f4/FRTSRC/alog.ra | 149 + sw/f4/FRTSRC/alog10.ra | 48 + sw/f4/FRTSRC/amax.ra | 57 + sw/f4/FRTSRC/amin.ra | 57 + sw/f4/FRTSRC/amod.ra | 65 + sw/f4/FRTSRC/asin.ra | 73 + sw/f4/FRTSRC/atan.ra | 137 + sw/f4/FRTSRC/atan2.ra | 80 + sw/f4/FRTSRC/cabs.ra | 57 + sw/f4/FRTSRC/carith.ra | 110 + sw/f4/FRTSRC/cexp.ra | 71 + sw/f4/FRTSRC/chars.ra | 176 + sw/f4/FRTSRC/chkeof.ra | 35 + sw/f4/FRTSRC/clk8a.ra | 450 ++ sw/f4/FRTSRC/clock.ra | 399 + sw/f4/FRTSRC/clog.ra | 81 + sw/f4/FRTSRC/cmplx.ra | 51 + sw/f4/FRTSRC/cos.ra | 48 + sw/f4/FRTSRC/cosd.ra | 51 + sw/f4/FRTSRC/cosh.ra | 83 + sw/f4/FRTSRC/csin.ra | 98 + sw/f4/FRTSRC/csqrt.ra | 92 + sw/f4/FRTSRC/dabs.ra | 21 + sw/f4/FRTSRC/datan.ra | 203 + sw/f4/FRTSRC/datan2.ra | 91 + sw/f4/FRTSRC/date.ra | 91 + sw/f4/FRTSRC/dble.ra | 27 + sw/f4/FRTSRC/dcos.ra | 57 + sw/f4/FRTSRC/dexp.ra | 266 + sw/f4/FRTSRC/dexp3.ra | 70 + sw/f4/FRTSRC/dim.ra | 32 + sw/f4/FRTSRC/dlog.ra | 234 + sw/f4/FRTSRC/dlog10.ra | 56 + sw/f4/FRTSRC/dmax1.ra | 42 + sw/f4/FRTSRC/dmin1.ra | 42 + sw/f4/FRTSRC/dmod.ra | 79 + sw/f4/FRTSRC/dsign.ra | 39 + sw/f4/FRTSRC/dsin.ra | 214 + sw/f4/FRTSRC/dsqrt.ra | 79 + sw/f4/FRTSRC/exp.ra | 109 + sw/f4/FRTSRC/exp3.ra | 65 + sw/f4/FRTSRC/expcc.ra | 165 + sw/f4/FRTSRC/expci.ra | 88 + sw/f4/FRTSRC/expdd.ra | 22 + sw/f4/FRTSRC/expdi.ra | 63 + sw/f4/FRTSRC/expdr.ra | 25 + sw/f4/FRTSRC/expic.ra | 142 + sw/f4/FRTSRC/expid.ra | 22 + sw/f4/FRTSRC/expid2.ra | 71 + sw/f4/FRTSRC/expii.ra | 52 + sw/f4/FRTSRC/expir.ra | 19 + sw/f4/FRTSRC/f4.pa | 3661 +++++++++ sw/f4/FRTSRC/fcomp.bi | 168 + sw/f4/FRTSRC/float.ra | 18 + sw/f4/FRTSRC/idint.ra | 39 + sw/f4/FRTSRC/ifix.ra | 30 + sw/f4/FRTSRC/libra.pa | 1424 ++++ sw/f4/FRTSRC/load.pa | 3084 ++++++++ sw/f4/FRTSRC/ltr.ra | 50 + sw/f4/FRTSRC/onqib.ra | 102 + sw/f4/FRTSRC/p2ocfg.pa | 2 + sw/f4/FRTSRC/pass2.pa | 4679 ++++++++++++ sw/f4/FRTSRC/pass3.pa | 816 ++ sw/f4/FRTSRC/pause.ra | 43 + sw/f4/FRTSRC/real.ra | 73 + sw/f4/FRTSRC/realtm.ra | 284 + sw/f4/FRTSRC/rfcv.ra | 49 + sw/f4/FRTSRC/rfdv.ra | 30 + sw/f4/FRTSRC/rsw.ra | 141 + sw/f4/FRTSRC/rtl.pa | 1753 +++++ sw/f4/FRTSRC/rts.pa | 3789 ++++++++++ sw/f4/FRTSRC/sign.ra | 40 + sw/f4/FRTSRC/sin.ra | 124 + sw/f4/FRTSRC/sind.ra | 48 + sw/f4/FRTSRC/sinh.ra | 105 + sw/f4/FRTSRC/sngl.ra | 21 + sw/f4/FRTSRC/sqrt.ra | 128 + sw/f4/FRTSRC/tan.ra | 56 + sw/f4/FRTSRC/tand.ra | 48 + sw/f4/FRTSRC/tanh.ra | 52 + sw/f4/FRTSRC/xfix.ra | 16 + sw/images/hachti/d | Bin 0 -> 3325952 bytes sw/images/hachti/system_museumsnacht_2010.rk | Bin 0 -> 3325952 bytes sw/os8/v3d/dsk.rk | Bin 0 -> 1666560 bytes sw/os8/v3d/ready_to_use.rk | Bin 0 -> 1666560 bytes .../sources/fortran/dectapes/dectape2/tand.ra | 48 + sw/os8/v3d/sources/system/dectapes/README | 5 + .../sources/system/dectapes/dectape1/ASR33.PA | 198 + .../system/dectapes/dectape1/C2BOOT.PA | 194 + .../sources/system/dectapes/dectape1/CREF.PA | 3052 ++++++++ .../sources/system/dectapes/dectape1/EPIC.PA | 1983 +++++ .../sources/system/dectapes/dectape1/FLOAT.SB | 746 ++ .../system/dectapes/dectape1/LIBSET.PA | 688 ++ .../system/dectapes/dectape1/LOADER.PA | 2171 ++++++ .../sources/system/dectapes/dectape1/README | 18 + .../system/dectapes/dectape1/RK08NS.PA | 197 + .../system/dectapes/dectape1/RK08SY.PA | 255 + .../system/dectapes/dectape1/SRCCOM.PA | 1043 +++ .../sources/system/dectapes/dectape1/TD8EA.PA | 364 + .../sources/system/dectapes/dectape1/TD8EB.PA | 365 + .../sources/system/dectapes/dectape1/TD8EC.PA | 364 + .../sources/system/dectapes/dectape1/TD8ED.PA | 366 + .../sources/system/dectapes/dectape2/BAT.PA | 198 + .../system/dectapes/dectape2/DF32NS.PA | 163 + .../system/dectapes/dectape2/DF32SY.PA | 183 + .../sources/system/dectapes/dectape2/FORT.PA | 4535 +++++++++++ .../system/dectapes/dectape2/FPATCH.PA | 498 ++ .../sources/system/dectapes/dectape2/README | 16 + .../system/dectapes/dectape2/RF08SY.PA | 182 + .../system/dectapes/dectape2/RK8ESY.PA | 237 + .../sources/system/dectapes/dectape2/SABR.CO | 422 ++ .../sources/system/dectapes/dectape2/SABR.PA | 5589 ++++++++++++++ .../system/dectapes/dectape2/SPATCH.PA | 847 +++ .../sources/system/dectapes/dectape3/ATAN.SB | 151 + .../system/dectapes/dectape3/BITMAP.PA | 861 +++ .../system/dectapes/dectape3/C3BOOT.PA | 495 ++ .../sources/system/dectapes/dectape3/CD.PA | 1610 ++++ .../sources/system/dectapes/dectape3/CR8E.PA | 302 + .../sources/system/dectapes/dectape3/CS.PA | 367 + .../sources/system/dectapes/dectape3/DUMP.PA | 385 + .../system/dectapes/dectape3/INTEGR.SB | 347 + .../sources/system/dectapes/dectape3/IOH.SB | 921 +++ .../sources/system/dectapes/dectape3/IOPEN.SB | 184 + .../system/dectapes/dectape3/IPOWRS.SB | 163 + .../sources/system/dectapes/dectape3/L645.PA | 198 + .../system/dectapes/dectape3/LINCNS.PA | 205 + .../system/dectapes/dectape3/LINCSY.PA | 192 + .../sources/system/dectapes/dectape3/LPSV.PA | 208 + .../sources/system/dectapes/dectape3/LSPT.PA | 178 + .../system/dectapes/dectape3/POWERS.SB | 319 + .../sources/system/dectapes/dectape3/PT8E.PA | 187 + .../sources/system/dectapes/dectape3/README | 27 + .../system/dectapes/dectape3/RF08NS.PA | 204 + .../system/dectapes/dectape3/RK8ENS.PA | 245 + .../system/dectapes/dectape3/ROMMSY.PA | 199 + .../system/dectapes/dectape3/RWTAPE.SB | 204 + .../system/dectapes/dectape3/RX01SY.PA | 334 + .../sources/system/dectapes/dectape3/SQRT.SB | 117 + .../system/dectapes/dectape3/TC08NS.PA | 210 + .../system/dectapes/dectape3/TC08SY.PA | 217 + .../system/dectapes/dectape3/TD8ESY.PA | 384 + .../system/dectapes/dectape3/TDCOPY.PA | 1515 ++++ .../system/dectapes/dectape3/TDINIT.PA | 931 +++ .../sources/system/dectapes/dectape3/TM8E.PA | 413 + .../sources/system/dectapes/dectape3/TRIG.SB | 247 + .../system/dectapes/dectape3/UTILTY.SB | 436 ++ .../sources/system/dectapes/dectape3/VR12.PA | 337 + .../sources/system/dectapes/dectape3/VT50.PA | Bin 0 -> 3824 bytes .../sources/system/dectapes/dectape4/BUILD.PA | 3466 +++++++++ .../system/dectapes/dectape4/DTFRMT.PA | 1863 +++++ .../sources/system/dectapes/dectape4/KL8E.PA | 796 ++ .../sources/system/dectapes/dectape4/LQP.PA | 279 + .../sources/system/dectapes/dectape4/PIP.PA | 2234 ++++++ .../sources/system/dectapes/dectape4/README | 16 + .../system/dectapes/dectape4/RX01NS.PA | 275 + .../sources/system/dectapes/dectape4/RX78B.PA | 287 + .../system/dectapes/dectape4/RXCOPY.PA | 940 +++ .../system/dectapes/dectape4/TDFRMT.PA | 2041 +++++ .../sources/system/dectapes/dectape5/CCL.PA | 3584 +++++++++ .../system/dectapes/dectape5/DTCOPY.PA | 874 +++ .../sources/system/dectapes/dectape5/HELP.PA | 709 ++ .../sources/system/dectapes/dectape5/README | 14 + .../system/dectapes/dectape5/RKLFMT.PA | 2012 +++++ .../sources/system/dectapes/dectape5/SET.PA | 2279 ++++++ .../sources/system/dectapes/dectape6/BOOT.PA | 751 ++ .../sources/system/dectapes/dectape6/CAMP.PA | 2080 +++++ .../system/dectapes/dectape6/DIRECT.PA | 1148 +++ .../sources/system/dectapes/dectape6/MCPIP.PA | 2344 ++++++ .../sources/system/dectapes/dectape6/PAL8.PA | 5373 +++++++++++++ .../sources/system/dectapes/dectape6/README | 14 + .../system/dectapes/dectape6/RESORC.PA | 1798 +++++ .../sources/system/dectapes/dectape7/EDIT.PA | 2868 +++++++ .../sources/system/dectapes/dectape7/FOTP.PA | 1638 ++++ .../system/dectapes/dectape7/HELP78.HL | 416 + .../sources/system/dectapes/dectape7/HELP8.HL | 900 +++ .../sources/system/dectapes/dectape7/OS8.PA | 3749 +++++++++ .../sources/system/dectapes/dectape7/PIP10.PA | 3615 +++++++++ .../sources/system/dectapes/dectape7/README | 14 + sw/plot_standalone/PLOT.FT | Bin 0 -> 768 bytes sw/plot_standalone/PLOT2.FT | Bin 0 -> 768 bytes sw/plot_standalone/PLOT3.FT | Bin 0 -> 768 bytes sw/plot_standalone/PLOT4.FT | Bin 0 -> 1152 bytes sw/tools/BINSTA.PA | 168 + sw/tools/BLDR.PA | 152 + sw/tools/KERMIT.PA | 6721 +++++++++++++++++ 202 files changed, 133986 insertions(+) create mode 100644 sw/SPACE/SPACE.PA create mode 100644 sw/SPACE/original-space.pal create mode 100644 sw/SPACE/space.pal create mode 100644 sw/SPACE/space.pal.bak create mode 100644 sw/f4/FRTSRC/BUILD.BI create mode 100644 sw/f4/FRTSRC/EXIT.BI create mode 100644 sw/f4/FRTSRC/FMAIN.BI create mode 100644 sw/f4/FRTSRC/FMAIN.OL create mode 100644 sw/f4/FRTSRC/LINK.BI create mode 100644 sw/f4/FRTSRC/PLOT.RA create mode 100644 sw/f4/FRTSRC/RALF.PA create mode 100644 sw/f4/FRTSRC/RALF.err create mode 100644 sw/f4/FRTSRC/READ.ME create mode 100644 sw/f4/FRTSRC/TMP.BI create mode 100644 sw/f4/FRTSRC/abs.ra create mode 100644 sw/f4/FRTSRC/acos.ra create mode 100644 sw/f4/FRTSRC/adc.ra create mode 100644 sw/f4/FRTSRC/alog.ra create mode 100644 sw/f4/FRTSRC/alog10.ra create mode 100644 sw/f4/FRTSRC/amax.ra create mode 100644 sw/f4/FRTSRC/amin.ra create mode 100644 sw/f4/FRTSRC/amod.ra create mode 100644 sw/f4/FRTSRC/asin.ra create mode 100644 sw/f4/FRTSRC/atan.ra create mode 100644 sw/f4/FRTSRC/atan2.ra create mode 100644 sw/f4/FRTSRC/cabs.ra create mode 100644 sw/f4/FRTSRC/carith.ra create mode 100644 sw/f4/FRTSRC/cexp.ra create mode 100644 sw/f4/FRTSRC/chars.ra create mode 100644 sw/f4/FRTSRC/chkeof.ra create mode 100644 sw/f4/FRTSRC/clk8a.ra create mode 100644 sw/f4/FRTSRC/clock.ra create mode 100644 sw/f4/FRTSRC/clog.ra create mode 100644 sw/f4/FRTSRC/cmplx.ra create mode 100644 sw/f4/FRTSRC/cos.ra create mode 100644 sw/f4/FRTSRC/cosd.ra create mode 100644 sw/f4/FRTSRC/cosh.ra create mode 100644 sw/f4/FRTSRC/csin.ra create mode 100644 sw/f4/FRTSRC/csqrt.ra create mode 100644 sw/f4/FRTSRC/dabs.ra create mode 100644 sw/f4/FRTSRC/datan.ra create mode 100644 sw/f4/FRTSRC/datan2.ra create mode 100644 sw/f4/FRTSRC/date.ra create mode 100644 sw/f4/FRTSRC/dble.ra create mode 100644 sw/f4/FRTSRC/dcos.ra create mode 100644 sw/f4/FRTSRC/dexp.ra create mode 100644 sw/f4/FRTSRC/dexp3.ra create mode 100644 sw/f4/FRTSRC/dim.ra create mode 100644 sw/f4/FRTSRC/dlog.ra create mode 100644 sw/f4/FRTSRC/dlog10.ra create mode 100644 sw/f4/FRTSRC/dmax1.ra create mode 100644 sw/f4/FRTSRC/dmin1.ra create mode 100644 sw/f4/FRTSRC/dmod.ra create mode 100644 sw/f4/FRTSRC/dsign.ra create mode 100644 sw/f4/FRTSRC/dsin.ra create mode 100644 sw/f4/FRTSRC/dsqrt.ra create mode 100644 sw/f4/FRTSRC/exp.ra create mode 100644 sw/f4/FRTSRC/exp3.ra create mode 100644 sw/f4/FRTSRC/expcc.ra create mode 100644 sw/f4/FRTSRC/expci.ra create mode 100644 sw/f4/FRTSRC/expdd.ra create mode 100644 sw/f4/FRTSRC/expdi.ra create mode 100644 sw/f4/FRTSRC/expdr.ra create mode 100644 sw/f4/FRTSRC/expic.ra create mode 100644 sw/f4/FRTSRC/expid.ra create mode 100644 sw/f4/FRTSRC/expid2.ra create mode 100644 sw/f4/FRTSRC/expii.ra create mode 100644 sw/f4/FRTSRC/expir.ra create mode 100644 sw/f4/FRTSRC/f4.pa create mode 100644 sw/f4/FRTSRC/fcomp.bi create mode 100644 sw/f4/FRTSRC/float.ra create mode 100644 sw/f4/FRTSRC/idint.ra create mode 100644 sw/f4/FRTSRC/ifix.ra create mode 100644 sw/f4/FRTSRC/libra.pa create mode 100644 sw/f4/FRTSRC/load.pa create mode 100644 sw/f4/FRTSRC/ltr.ra create mode 100644 sw/f4/FRTSRC/onqib.ra create mode 100644 sw/f4/FRTSRC/p2ocfg.pa create mode 100644 sw/f4/FRTSRC/pass2.pa create mode 100644 sw/f4/FRTSRC/pass3.pa create mode 100644 sw/f4/FRTSRC/pause.ra create mode 100644 sw/f4/FRTSRC/real.ra create mode 100644 sw/f4/FRTSRC/realtm.ra create mode 100644 sw/f4/FRTSRC/rfcv.ra create mode 100644 sw/f4/FRTSRC/rfdv.ra create mode 100644 sw/f4/FRTSRC/rsw.ra create mode 100644 sw/f4/FRTSRC/rtl.pa create mode 100644 sw/f4/FRTSRC/rts.pa create mode 100644 sw/f4/FRTSRC/sign.ra create mode 100644 sw/f4/FRTSRC/sin.ra create mode 100644 sw/f4/FRTSRC/sind.ra create mode 100644 sw/f4/FRTSRC/sinh.ra create mode 100644 sw/f4/FRTSRC/sngl.ra create mode 100644 sw/f4/FRTSRC/sqrt.ra create mode 100644 sw/f4/FRTSRC/tan.ra create mode 100644 sw/f4/FRTSRC/tand.ra create mode 100644 sw/f4/FRTSRC/tanh.ra create mode 100644 sw/f4/FRTSRC/xfix.ra create mode 100644 sw/images/hachti/d create mode 100644 sw/images/hachti/system_museumsnacht_2010.rk create mode 100644 sw/os8/v3d/dsk.rk create mode 100644 sw/os8/v3d/ready_to_use.rk create mode 100644 sw/os8/v3d/sources/fortran/dectapes/dectape2/tand.ra create mode 100644 sw/os8/v3d/sources/system/dectapes/README create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape1/ASR33.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape1/C2BOOT.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape1/CREF.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape1/EPIC.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape1/FLOAT.SB create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape1/LIBSET.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape1/LOADER.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape1/README create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape1/RK08NS.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape1/RK08SY.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape1/SRCCOM.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape1/TD8EA.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape1/TD8EB.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape1/TD8EC.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape1/TD8ED.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape2/BAT.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape2/DF32NS.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape2/DF32SY.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape2/FORT.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape2/FPATCH.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape2/README create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape2/RF08SY.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape2/RK8ESY.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape2/SABR.CO create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape2/SABR.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape2/SPATCH.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/ATAN.SB create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/BITMAP.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/C3BOOT.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/CD.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/CR8E.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/CS.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/DUMP.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/INTEGR.SB create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/IOH.SB create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/IOPEN.SB create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/IPOWRS.SB create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/L645.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/LINCNS.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/LINCSY.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/LPSV.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/LSPT.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/POWERS.SB create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/PT8E.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/README create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/RF08NS.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/RK8ENS.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/ROMMSY.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/RWTAPE.SB create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/RX01SY.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/SQRT.SB create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/TC08NS.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/TC08SY.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/TD8ESY.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/TDCOPY.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/TDINIT.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/TM8E.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/TRIG.SB create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/UTILTY.SB create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/VR12.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape3/VT50.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape4/BUILD.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape4/DTFRMT.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape4/KL8E.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape4/LQP.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape4/PIP.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape4/README create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape4/RX01NS.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape4/RX78B.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape4/RXCOPY.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape4/TDFRMT.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape5/CCL.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape5/DTCOPY.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape5/HELP.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape5/README create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape5/RKLFMT.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape5/SET.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape6/BOOT.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape6/CAMP.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape6/DIRECT.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape6/MCPIP.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape6/PAL8.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape6/README create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape6/RESORC.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape7/EDIT.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape7/FOTP.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape7/HELP78.HL create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape7/HELP8.HL create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape7/OS8.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape7/PIP10.PA create mode 100644 sw/os8/v3d/sources/system/dectapes/dectape7/README create mode 100644 sw/plot_standalone/PLOT.FT create mode 100644 sw/plot_standalone/PLOT2.FT create mode 100644 sw/plot_standalone/PLOT3.FT create mode 100644 sw/plot_standalone/PLOT4.FT create mode 100644 sw/tools/BINSTA.PA create mode 100644 sw/tools/BLDR.PA create mode 100644 sw/tools/KERMIT.PA diff --git a/sw/SPACE/SPACE.PA b/sw/SPACE/SPACE.PA new file mode 100644 index 0000000..8543c5a --- /dev/null +++ b/sw/SPACE/SPACE.PA @@ -0,0 +1,1703 @@ +CLZE=6130 +CLSK=6131 +CLOE=6132 +CLAB=6133 +CLEN=6134 +CLSA=6135 +CLBA=6136 +CLCA=6137 +CREXT=0100 +CR2=0200 +CR3=0300 +CR4=0400 +CR5=0500 +CR6=0600 +COVSTAT=4000 +CMFREE=0000 +CMPROG=1000 +CADC=0040 +CINH=0020 +CION=0010 +CEV3=0004 +CEV2=0002 +CEV1=00001 +DIXY=6055 +DILX=6053 +DILY=6054 +DILE=6056 +DISD=6052 +XRIN=NOP +XRCL=NOP +/DSB=XXXX +DXC=JMS I IVCLDX +DYC=JMS I IVCLDY +DXL=0000 +DYL=0000 +DIS=0000 +/CRF=NOP +/CCF=NOP + *0 + 0 + JMP I 2 + INTSER +EMPTY, 0 +ODT1, 0 +ODT2, 0 +ODT3, 0 + *10 +AUTO10, 0 +AUTO11, 0 +AUTO12, 0 +AUTO13, 0 +AUTO14, 0 +AUTO15, 0 +AUTO16, 0 +AUTO17, 0 + *20 +ONEOUT, 0 +ONECNT, 0 +ONEFLG, 0 +ONETHE, 0 +ONEVEX, 0 +ONEVEY, 0 +ONEPEX, 0 +ONEPEY, 0 +ONESIN, 0 +ONECOS, 0 +ONEFIN, 0 +TWOOUT, 0 +TWOCNT, 0 +TWOFLG, 0 +TWOTHE, 0 +TWOVEX, 0 +TWOVEY, 0 +TWOPEX, 0 +TWOPEY, 0 +TWOSIN, 0 +TWOCOS, 0 +TWOFIN, 0 +XONEDS, 0 +YONEDS, 0 +XTWODS, 0 +YTWODS, 0 +DIXTEM, 0 +DIYTEM, 0 +DISCNT, 0 +T10SIN, 0 +T20SIN, 0 +T30SIN, 0 +T10COS, 0 +T20COS, 0 +T30COS, 0 +CALSIN, 0 +CALCOS, 0 +SINE, SINEIN +COSINE, COSINI +MULT, MULTI +RSHIFT, SHIFTR +VECTOR, DISPLY +CALPOS, POSCAL +INTWRD, 0 +INTCNT, 0 +HYPER, HYPSET +MESOUT, CHARS +THEADJ, THEAJI +VEESCL, VEELIM +ISHFT, DISHFT +RESET1, RESE1 +GAMOVR, 0 +ACCFLG, 0 +ACCPER, -30 +MEXP, -400 +PROX, 0 +PROY, 0 +PROLIF, -360 +BUFTMP, 0 +ONEFIL, DISBUF +TWOFIL, DISBUF+40 +P5, 5 +P10, 10 +P17, 17 +P20, 20 +P37, 37 +P40, 40 +P100, 100 +P132, 132 +P200, 200 +P400, 400 +P550, 550 +P3777, 3777 +M4, -4 +M6, -6 +M10, -10 +M11, -11 +M264, -264 +M200, -200 +M400, -400 +M550, -550 +IVCLDX, VCLDX +IVCLDY, VCLDY + *200 +START, CLA CLL + DIXY + LAS + TAD SWRD + TAD XROPT + DCA COLDST +RESTRT, CLA CMA + XRCL + CLA CLL + TAD P17 + DCA AUTO10 + TAD TABLEN + DCA AUTO11 + DCA I AUTO10 + ISZ AUTO11 + JMP .-2 + TAD STRT1 + DCA ONEPEX + TAD STRT2 + DCA TWOPEX + TAD P37 + DCA ONECOS + TAD P37 + DCA TWOCOS + TAD ACCPER + DCA ACCFLG + DCA ONEFIN + DCA TWOFIN + DCA GAMOVR + JMS I BUFSET + TCF + PCF + RRB + CLA CMA + CLZE + CLA + TAD CDELY + CLAB + CLA + TAD CCNF + CLOE + CLA CLL + JMP COLDST + +CCNF, CR4+CMPROG+CION+COVSTAT +CDELY, -310 +UPDATE, CLA CLL + +COLDST, 0 + LAS + DCA INTWRD + TAD INTWRD + RTR + RTR + AND LFTHAF + DCA INTTEM + TAD INTWRD + AND RYTHAF + TAD INTTEM + JMP .+3 +CODST, XRIN + XRCL + DCA INTWRD + TAD M550 + DCA INTCNT + ION + TAD ACCFLG + IAC + SMA SZA + TAD ACCPER + DCA ACCFLG + JMP I .+1 + ONEUP +BUFSET, SETBUF +TABLEN, AUTO17-CALCOS +INTTEM, 0 +LFTHAF, 0360 +RYTHAF, 0017 +STRT1, 1000 +STRT2, -1000 +SWRD, 2000-CODST +XROPT, JMP CODST +INTSER, DCA INTACC + RAR + DCA INTLNK + CLSK + JMP INTBUS + CLA IAC RTR + CLSA + CLA CLL + JMP UPDATE +INTBUS, KSF + JMP .+5 + KCC + TAD GAMOVR + SZA CLA + JMP RESTRT +/ TCF + ISZ INTGLH + SKP + HLT +INTRET, CLA CLL + TAD INTLNK + RAL + TAD INTACC + ION + JMP I 0 +INTACC, 0 +INTLNK, 0 +INTGLH, 0 + *400 +ONEUP, TAD ONEFLG + SNA + JMP ONEOK + IAC + SNA + TAD ONEFIN + DCA ONEFLG + JMP I ITWOUP +ONEOK, TAD ONEOUT + SZA CLA + JMP ONEFIG + TAD TWOFIN + SZA CLA + JMS I ONEWN + TAD INTWRD + AND OP300 + TAD OM300 + SZA CLA + JMP ONELEF + CMA + JMP I HYPER +ONELEF, TAD INTWRD + AND P200 + SNA CLA + JMP ONERYT + CLA CLL CMA + JMP ONEFIG +ONERYT, TAD INTWRD + AND P100 + SZA CLA + IAC +ONEFIG, TAD ONETHE + JMS I THEADJ + DCA ONETHE + TAD ONETHE + JMS I SINE + DCA ONESIN + TAD ONETHE + JMS I COSINE + DCA ONECOS + TAD ONEOUT + SZA CLA + JMP ONEVEL +ONEMOV, TAD ACCFLG + SZA CLA + JMP ONEVEL + TAD INTWRD + AND P40 + SNA CLA + JMP ONEVEL + TAD ONECOS + TAD ONEVEY + JMS I VEESCL + DCA ONEVEY + TAD ONESIN + TAD ONEVEX + JMS I VEESCL + DCA ONEVEX +ONEVEL, TAD ONEVEX + JMS I ISHFT + JMS I ISHFT + TAD ONEPEX + DCA ONEPEX + TAD ONEVEY + JMS I ISHFT + JMS I ISHFT + TAD ONEPEY + DCA ONEPEY + TAD ONEOUT + SZA CLA + JMP I ITWOUP +ONELNC, TAD LNC1FG + SNA CLA + JMP .+3 + ISZ LNC1FG + JMP I ITWOUP + TAD INTWRD + AND P20 + SNA CLA + JMP I ITWOUP + + TAD PROLIF + DCA I AUTO16 + TAD ONEVEX + JMS I ISHFT + JMS I RSHIFT + TAD ONESIN + JMS I RSHIFT + DCA I AUTO16 + TAD ONESIN + CLL RTL + TAD ONEPEX + DCA I AUTO16 + TAD ONEVEY + JMS I ISHFT + JMS I RSHIFT + TAD ONECOS + JMS I RSHIFT + DCA I AUTO16 + TAD ONECOS + CLL RTL + TAD ONEPEY + DCA I AUTO16 + TAD M200 + DCA LNC1FG + JMS I RESET1 + JMP I .+1 +ITWOUP, TWOUP +LNC1FG, 0 +OP300, 300 +OM300, -300 +ONEWN, ONEWIN + *600 +TWOUP, TAD TWOFLG + SNA + JMP TWOOK + IAC + SNA + TAD TWOFIN + DCA TWOFLG + JMP I IONEST +TWOOK, TAD TWOOUT + SZA CLA + JMP TWOFIG + TAD ONEFIN + SZA CLA + JMS I TWOWN + TAD INTWRD + AND OP14 + TAD OM14 + SNA CLA + JMP I HYPER + +TWOLEF, TAD INTWRD + AND P10 + SNA CLA + JMP TWORYT + CLA CLL CMA + JMP TWOFIG +TWORYT, CLA CLL IAC RTL + AND INTWRD + SZA CLA + IAC +TWOFIG, TAD TWOTHE + JMS I THEADJ + DCA TWOTHE + TAD TWOTHE + JMS I SINE + DCA TWOSIN + TAD TWOTHE + JMS I COSINE + DCA TWOCOS + TAD TWOOUT + SZA CLA + JMP TWOVEL +TWOMOV, TAD ACCFLG + SZA CLA + JMP TWOVEL + CLL IAC RAL + AND INTWRD + SNA CLA + JMP TWOVEL + TAD TWOSIN + TAD TWOVEX + JMS I VEESCL + DCA TWOVEX + TAD TWOCOS + TAD TWOVEY + JMS I VEESCL + DCA TWOVEY +TWOVEL, TAD TWOVEX + JMS I ISHFT /COMPONENTS + JMS I ISHFT + TAD TWOPEX + DCA TWOPEX + TAD TWOVEY + JMS I ISHFT + JMS I ISHFT + TAD TWOPEY + DCA TWOPEY + TAD TWOOUT + SZA CLA + JMP I IONEST +TWOLNC, TAD LNC2FG + SNA CLA + JMP .+3 + ISZ LNC2FG + JMP I IONEST + IAC + AND INTWRD + SNA CLA + JMP I IONEST + TAD PROLIF + DCA I AUTO16 + TAD TWOVEX + JMS I ISHFT + JMS I RSHIFT + TAD TWOSIN + JMS I RSHIFT + DCA I AUTO16 + TAD TWOSIN + CLL RTL + TAD TWOPEX + DCA I AUTO16 + TAD TWOVEY + JMS I ISHFT + JMS I RSHIFT + TAD TWOCOS + JMS I RSHIFT + DCA I AUTO16 + TAD TWOCOS + CLL RTL + TAD TWOPEY + DCA I AUTO16 + TAD M200 + DCA LNC2FG + JMS I RESET1 + JMP I .+1 +IONEST, ONESET +LNC2FG, 0 +OP14, 14 +OM14, -14 +TWOWN, TWOWIN + *1000 +ONESET, CLA CLL + TAD ONEFLG + SZA CLA + JMP I ITWOST + TAD ONESIN + DCA CALSIN + TAD ONECOS + DCA CALCOS + JMS I CALPOS + TAD ONEFIL + DCA AUTO10 + TAD ONEPEX + TAD T30SIN + DCA I AUTO10 + TAD ONEPEY + TAD T30COS + DCA I AUTO10 + TAD T10COS + CIA + TAD ONEPEX + DCA I AUTO10 + TAD T10SIN + TAD ONEPEY + DCA I AUTO10 + TAD T30SIN + TAD T30COS + CIA + TAD ONEPEX + DCA I AUTO10 + TAD T30COS + CIA + TAD T30SIN + TAD ONEPEY + DCA I AUTO10 + TAD T10SIN + CIA + TAD ONEPEX + DCA I AUTO10 + TAD T10COS + CIA + TAD ONEPEY + DCA I AUTO10 +FLAM1, TAD INTWRD + AND P40 + SNA CLA + JMP ONECON + TAD ONEOUT + SZA CLA + JMP ONECON + TAD ONFG1 + SNA + CLA CLL CMA RAL + DCA ONFG1 + ISZ ONFG1 + JMP ONECON + TAD ONFG2 + CMA + DCA ONFG2 + TAD ONFG2 + SNA CLA + TAD T10SIN + TAD T30SIN + CIA + TAD ONEPEX + DCA I AUTO10 + TAD ONFG2 + SNA CLA + TAD T10COS + TAD T30COS + CIA + TAD ONEPEY + DCA I AUTO10 + TAD T10SIN + CIA + TAD ONEPEX + DCA I AUTO10 + TAD T10COS + CIA + TAD ONEPEY + DCA I AUTO10 + CLA CLL CMA RAL +ONECON, TAD M6 + DCA ONECNT + TAD T30SIN + CIA + TAD T30COS + TAD ONEPEX + DCA I AUTO10 + TAD T30SIN + TAD T30COS + CIA + TAD ONEPEY + DCA I AUTO10 + TAD T10COS + TAD ONEPEX + DCA I AUTO10 + TAD T10SIN + CIA + TAD ONEPEY + DCA I AUTO10 + TAD T30SIN + TAD ONEPEX + DCA I AUTO10 + TAD T30COS + TAD ONEPEY + DCA I AUTO10 + JMP I ITWOST +ITWOST, TWOSET +ONFG1, 0 +ONFG2, 0 + *1200 +TWOSET, CLA CLL + TAD TWOFLG + SZA CLA + JMP I IFILDS + TAD TWOSIN + DCA CALSIN + TAD TWOCOS + DCA CALCOS + JMS I CALPOS + TAD TWOFIL + DCA AUTO10 + TAD T30SIN + TAD TWOPEX + DCA I AUTO10 + TAD T30COS + TAD TWOPEY + DCA I AUTO10 + TAD T20COS + CIA + TAD T20SIN + TAD TWOPEX + DCA I AUTO10 + TAD T20SIN + TAD T20COS + TAD TWOPEY + DCA I AUTO10 + TAD T20COS + CIA + TAD TWOPEX + DCA I AUTO10 + TAD T20SIN + TAD TWOPEY + DCA I AUTO10 + TAD T20COS + TAD T30SIN + CIA + TAD TWOPEX + DCA I AUTO10 + TAD T30COS + CIA + TAD T20SIN + TAD TWOPEY + DCA I AUTO10 + TAD T20SIN + CIA + TAD TWOPEX + DCA I AUTO10 + TAD T20COS + CIA + TAD TWOPEY + DCA I AUTO10 +FLAM2, CLA CLL IAC RAL + AND INTWRD + SNA CLA + JMP TWOCON + TAD TWOOUT + SZA CLA + JMP TWOCON + TAD TWFG1 + SNA + CLA CLL CMA RAL + DCA TWFG1 + ISZ TWFG1 + JMP TWOCON + TAD TWFG2 + CMA + DCA TWFG2 + + TAD TWFG2 + SNA CLA + TAD T20SIN + TAD T30SIN + CIA + TAD TWOPEX + DCA I AUTO10 + TAD TWFG2 + SNA CLA + TAD T20COS + TAD T30COS + CIA + TAD TWOPEY + DCA I AUTO10 + TAD T20SIN + CIA + TAD TWOPEX + DCA I AUTO10 + TAD T20COS + CIA + TAD TWOPEY + DCA I AUTO10 + CLA CLL CMA RAL +TWOCON, TAD M10 + DCA TWOCNT + TAD T30SIN + CIA + TAD T20COS + TAD TWOPEX + DCA I AUTO10 + TAD T30COS + TAD T20SIN + CIA + TAD TWOPEY + DCA I AUTO10 + TAD T20COS + TAD TWOPEX + DCA I AUTO10 + TAD T20SIN + CIA + TAD TWOPEY + DCA I AUTO10 + TAD T20COS + TAD T20SIN + TAD TWOPEX + DCA I AUTO10 + TAD T20SIN + CIA + TAD T20COS + TAD TWOPEY + DCA I AUTO10 + TAD T30SIN + TAD TWOPEX + DCA I AUTO10 + TAD T30COS + TAD TWOPEY + DCA I AUTO10 + JMP I IFILDS +IFILDS, FILDIS +TWFG1, 0 +TWFG2, 0 + *1400 +FILDIS, CLA CLL + JMS I COLIDE +/ DSB 1 + TAD ONEFLG + SZA CLA + JMP TWODIS + TAD ONEFIL + DCA AUTO10 + TAD ONECNT + DCA AUTO11 + TAD I AUTO10 + DCA XONEDS + TAD I AUTO10 + DCA YONEDS + TAD ONEOUT + SZA CLA + JMP I IONEEX +FILONE, TAD I AUTO10 + DCA XTWODS + TAD I AUTO10 + DCA YTWODS + JMS I VECTOR + ISZ AUTO11 + SKP + JMP TWODIS + TAD XTWODS + DCA XONEDS + TAD YTWODS + DCA YONEDS + JMP FILONE +TWODIS, TAD TWOFLG + SZA CLA + JMP I IPRODS + TAD TWOFIL + DCA AUTO10 + TAD TWOCNT + DCA AUTO11 + TAD I AUTO10 + DCA XONEDS + TAD I AUTO10 + DCA YONEDS + TAD TWOOUT + SZA CLA + JMP I ITWOEX +TWDLOP, TAD I AUTO10 + DCA XTWODS + TAD I AUTO10 + DCA YTWODS + JMS I VECTOR + ISZ AUTO11 + JMP .+3 + JMP I .+1 +IPRODS, PRODIS + TAD XTWODS + DCA XONEDS + TAD YTWODS + DCA YONEDS + JMP TWDLOP +COLIDE, COLLID +IONEEX, ONEEXP +ITWOEX, TWOEXP +DISPLY, 0 + CLA + TAD XONEDS + CIA + TAD XTWODS + JMS DISHFT + DCA DIXTEM + TAD YONEDS + CIA + TAD YTWODS + JMS DISHFT + DCA DIYTEM + TAD M4 + DCA DISCNT +DISLOP, TAD XONEDS + TAD DIXTEM + DCA XONEDS + TAD YONEDS + TAD DIYTEM + DCA YONEDS + TAD XONEDS +/ RTR + DXC DXL + CLA + TAD YONEDS + DYC DYL DIS + CLA + ISZ DISCNT + JMP DISLOP + JMP I DISPLY +DISHFT, 0 + CLL + SPA + CML IAC + RAR + CLL + SPA + CML IAC + RAR + JMP I DISHFT + *1600 +PRODIS, CLA CLL + TAD BUFST + DCA BUFTMP +/ DSB 2 +PROLOP, TAD I BUFTMP + SNA + JMP EXPIRE + IAC + DCA I BUFTMP + ISZ BUFTMP + TAD I BUFTMP + ISZ BUFTMP + TAD I BUFTMP + DCA I BUFTMP + TAD I BUFTMP + DCA PROX + ISZ BUFTMP + TAD I BUFTMP + ISZ BUFTMP + TAD I BUFTMP + DCA I BUFTMP + TAD I BUFTMP + DCA PROY + TAD PROX +/ RTR +/ RAR + DXC DXL + CLA + TAD PROY +/ RTR + DYC DYL DIS + CLA + JMS I CHKOUT + ISZ BUFTMP + TAD BUFTMP + TAD BUFLIM + SZA CLA + JMP PROLOP +/ BEGIN. TURNS OUT THAT ROUGHLY 2 +FINISH, TAD GAMOVR + SZA CLA + JMP I ENDGAM +/ TAD M400 + CLA CLL + TAD INTCNT + CIA + JMP . +ENDGAM, JOBLOP +EXPIRE, TAD BUFTMP + TAD P5 + DCA BUFTMP + TAD BUFTMP + TAD BUFLIM + SZA CLA + JMP PROLOP + JMP FINISH +BUFST, DISBUF+101 +BUFLIM, -DISBUF-175 +CHKOUT, CHECK +RESE1, 0 + TAD MRES + DCA RESCNT +RESLOP, TAD RESPNT + TAD P5 + DCA RESPNT + TAD RESPNT + TAD BUFLIM + SZA CLA + JMP RESCON + TAD BUFST + DCA RESPNT +RESCON, TAD I RESPNT + SNA CLA + JMP RESFND + ISZ RESCNT + JMP RESLOP + HLT +RESFND, CMA + TAD RESPNT + DCA AUTO16 + JMP I RESE1 +MRES, -14 +RESCNT, 0 +RESPNT, 0 +SETBUF, 0 + CMA + TAD BUFST + DCA AUTO16 + TAD BUFST + DCA BUFTMP + TAD BUFST + DCA RESPNT + TAD BUFST + DCA SETPNT +SETLOP, DCA I SETPNT + ISZ SETPNT + TAD SETPNT + TAD BUFLIM + SZA CLA + JMP SETLOP + JMP I SETBUF +SETPNT, 0 + *2000 +CHECK, 0 + TAD ONEFLG + SZA CLA + JMP CHECK2 + TAD ONEOUT + SZA CLA + JMP CHECK2 + TAD PROX + CIA + TAD ONEPEX + SPA + CIA + TAD LIMIT + SMA CLA + JMP CHECK2 + TAD PROY + CIA + TAD ONEPEY + SPA + CIA + TAD LIMIT + SMA CLA + JMP CHECK2 + TAD MEXP + DCA ONEOUT + JMS CUTOUT +CHECK2, TAD TWOFLG + SZA CLA + JMP I CHECK + TAD TWOOUT + SZA CLA + JMP I CHECK + TAD PROX + CIA + TAD TWOPEX + SPA + CIA + TAD LIMIT + SMA CLA + JMP I CHECK + TAD PROY + CIA + TAD TWOPEY + SPA + CIA + TAD LIMIT + SMA CLA + JMP I CHECK + TAD MEXP + DCA TWOOUT + JMS CUTOUT + JMP I CHECK +LIMIT, -120 +CUTOUT, 0 + TAD M4 + TAD BUFTMP + DCA CUTPNT + DCA I CUTPNT + JMP I CUTOUT +CUTPNT, 0 +COLLID, 0 + TAD ONEFLG + SZA CLA + JMP I COLLID + TAD TWOFLG + SZA CLA + JMP I COLLID + TAD ONEOUT + SZA CLA + JMP I COLLID + TAD TWOOUT + SZA CLA + JMP I COLLID + TAD ONEPEX + CIA + TAD TWOPEX + SPA + CIA + TAD COLLIM + SMA CLA + JMP I COLLID + TAD ONEPEY + CIA + TAD TWOPEY + SPA + CIA + TAD COLLIM + SMA CLA + JMP I COLLID + TAD MEXP + DCA ONEOUT + TAD MEXP + DCA TWOOUT + JMP I COLLID +COLLIM, -300 + *2200 +HYPSET, DCA RTNFLG + TAD RTNFLG + SZA CLA + TAD ONEDIF + TAD TWOLST + DCA AUTO15 + CLCA + + DCA AUTO17 + TAD I AUTO17 + AND TIMOUT + CIA + DCA I AUTO15 + TAD I AUTO17 + JMS I THEADJ + DCA I AUTO15 + TAD I AUTO17 + JMS VEESET + DCA I AUTO15 + TAD I AUTO17 + JMS VEESET + DCA I AUTO15 + TAD I AUTO17 + DCA I AUTO15 + TAD I AUTO17 + DCA I AUTO15 + TAD I AUTO17 + AND TIMOUT + TAD MHYP /ABOUT 3 + SMA CLA + JMP HYPRET + TAD RTNFLG + SZA CLA + TAD ONEDIF + TAD OUTLOC + DCA VEESET + TAD MEXP + DCA I VEESET +HYPRET, ISZ RTNFLG + JMP I TWORTN + JMP I ONERTN +TIMOUT, 777 +ONEDIF, ONEFLG-TWOFLG +TWOLST, TWOFLG-1 +RTNFLG, 0 +ONERTN, TWOUP +TWORTN, ONESET +OUTLOC, TWOOUT +MHYP, -200 +VEESET, 0 + CLL + SPA + CML + AND HM177 + SZL CLL + CIA + JMP I VEESET +HM177, 177 +ONEEXP, CLA CLL + TAD ONETHE + TAD INCONE + DCA ONETHE + JMS I IXPDIS + ISZ ONEOUT + JMP I NOWTWO + IAC + DCA ONEFLG + IAC + DCA ONEFIN + TAD TWOFIN + SNA CLA + JMP I NOWTWO + JMP I TIEUP +TWOEXP, CLA CLL + TAD TWOTHE + TAD INCTWO + DCA TWOTHE + JMS I IXPDIS + ISZ TWOOUT + JMP I NOWPRO + IAC + DCA TWOFLG + IAC + DCA TWOFIN + + TAD ONEFIN + SZA CLA + JMP I TIEUP + JMP I NOWPRO +NOWTWO, TWODIS +NOWPRO, PRODIS +TIEUP, NOWIN +IXPDIS, EXPDIS +INCONE, 55 +INCTWO, 55 + *2400 +EXPDIS, 0 + TAD I AUTO10 + DCA XTWODS + TAD I AUTO10 + DCA YTWODS + TAD XTWODS + CIA + TAD XONEDS + DCA DIXTEM + TAD YTWODS + CIA + TAD YONEDS + DCA DIYTEM + TAD M4 + DCA DISCNT + +EXPLOP, TAD XONEDS + TAD DIXTEM + DCA XONEDS + TAD YONEDS + TAD DIYTEM + DCA YONEDS + TAD XONEDS +/ RTR +/ RAR + JMS I IVCLDX + CLA + TAD YONEDS + JMS I IVCLDY + CLA + ISZ DISCNT + JMP EXPLOP + ISZ AUTO11 + SKP + JMP I EXPDIS + TAD XTWODS + DCA XONEDS + TAD YTWODS + DCA YONEDS + JMP EXPDIS+1 +VEELIM, 0 + DCA VEEHLD + TAD VEEHLD + SMA + JMP VEEPOS + TAD VEEMAX + SMA CLA + JMP VEECLR + TAD VEEMIN + JMP I VEELIM +VEEPOS, TAD VEEMIN + SPA CLA + JMP VEECLR + TAD VEEMAX + JMP I VEELIM +VEECLR, TAD VEEHLD + JMP I VEELIM +VEEHLD, 0 +VEEMIN, -140 +VEEMAX, 140 +THEAJI, 0 + SMA + JMP .+3 + TAD P550 + JMP .-3 + TAD M550 + SMA + JMP .-2 + TAD P550 + JMP I THEAJI +ONEWIN, 0 + TAD MES1 + DCA MESS + IAC + DCA GAMOVR + JMP I ONEWIN +TWOWIN, 0 + TAD MES2 + DCA MESS + IAC + DCA GAMOVR + JMP I TWOWIN +NOWIN, TAD MES4 + DCA MESS + IAC + DCA GAMOVR + +JOBLOP, +/ DSB 1 + TAD MES0 + JMS I MESOUT + TAD MESS + JMS I MESOUT + TAD MES5 + JMS I MESOUT + TAD MES3 + JMS I MESOUT +FINITO, JMP JOBLOP +MES0, MESS0 +MES1, MESS1 +MES2, MESS2 +MES3, MESS3 +MES4, MESS4 +MES5, MESS5 +MESS, 0 + *6400 +SINEIN, 0 + DCA SINARG + TAD SINEIN + DCA I SINPSH + ISZ SINPSH + TAD SINARG + SZA + JMP SINNG2 +SINPOP, CLA CLL CMA + TAD SINPSH + DCA SINPSH + TAD I SINPSH + DCA SINEIN + TAD SINARG + JMP I SINEIN +SINNG2, SMA + JMP SINPOS + CIA + JMS SINEIN +SINNEG, CIA + DCA SINARG + JMP SINPOP +SINPOS, TAD M264 + SPA + JMP .+2 + JMP SINNEG-1 + TAD P132 + SPA + JMP SINELK + SZA CLA + JMP .+3 + TAD P37 + JMP SINNEG+1 + TAD SINARG + TAD M264 + JMP SINNEG-1 +SINELK, TAD P132 + TAD SINTAB + DCA SINEIN + TAD I SINEIN + DCA SINARG + JMP SINPOP +SINARG, 0 +SINPSH, SINLST +SINLST, 0 + 0 + 0 + 0 + 0 + 0 +SINTAB, SINES-1 +COSINI, 0 + CIA + TAD P132 + JMS SINEIN + JMP I COSINI +SINES, 00 + 01 + 01 + 02 + 02 + 03 + 03 + 04 + 05 + 05 + 06 + 06 + 07 + 07 + 10 + 10 + 11 + 11 + 12 + 12 + 13 + 13 + 14 + 15 + 15 + 16 + 16 + 17 + 17 + 20 + 20 + 20 + 21 + 21 + 22 + 22 + 23 + 23 + 24 + 24 + 25 + 25 + 25 + 26 + 26 + 27 + 27 + 27 + 30 + 30 + 30 + 31 + 31 + 31 + 32 + 32 + 32 + 33 + 33 + 33 + 33 + 34 + 34 + 34 + 35 + 35 + 35 + 35 + 35 + 36 + 36 + 36 + 36 + 36 + 36 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 + 37 +MULTI, 0 + CLL + SPA + CMA CML IAC + DCA MULMP1 + DCA MULMP5 + TAD I MULTI + SNA + JMP MULPSN+2 + SPA + CMA CML IAC + DCA MULMP2 + TAD MULTHR + DCA MULMP3 +MULMP4, TAD MULMP1 + RAR + DCA MULMP1 + TAD MULMP5 + SZL + TAD MULMP2 + CLL RAR + DCA MULMP5 + ISZ MULMP3 + JMP MULMP4 + TAD MULMP1 + RAR +MULPSN, SZL + JMP MULCMP + DCA MULMP1 + TAD MULMP5 +MULMPZ, ISZ MULTI + JMP I MULTI +MULCMP, CMA CLL IAC + DCA MULMP1 + TAD MULMP5 + CMA + SZL + IAC + JMP MULMPZ +MULTHR, 7764 +MULMP1, 0 +MULMP5, 0 +MULMP2, 0 +MULMP3, 0 +SHIFTR, 0 + CLL + SPA + CML IAC + RAR + JMP I SHIFTR +POSCAL, 0 + TAD CALSIN + DCA T10SIN + TAD T10SIN + CLL RAL + DCA T20SIN + TAD T10SIN + TAD T20SIN + DCA T30SIN + TAD CALCOS + DCA T10COS + TAD T10COS + CLL RAL + DCA T20COS + TAD T10COS + TAD T20COS + DCA T30COS + JMP I POSCAL +VDIV, 0 + SMA + JMP VPLUS +VMINUS, CMA IAC + RTR + AND P1777 + CMA IAC + JMP I VDIV +VPLUS, RTR + AND P1777 + JMP I VDIV +VCLDX, 0 + JMS VDIV + DISD + JMP .-1 + DIXY + DILX + JMP I VCLDX +VCLDY, 0 + JMS VDIV + DILY + JMP I VCLDY +P1777, 1777 + *7000 +CHARS, 0 + DCA ADDR + TAD I ADDR + RTR + RTR + RTR + JMS CHAR + SKP + JMP I CHARS + TAD I ADDR + ISZ ADDR + JMS CHAR + JMP CHARS+2 + JMP I CHARS +CHAR, 0 + AND K77 + CLL RAL + TAD TABLE + DCA POINT + CMA + DCA COUNT2 + TAD I POINT + ISZ POINT + SNA + JMP SPCHAR + DCA CURPLT +XPLOT, TAD KM6 + DCA COUNT6 + TAD YVALUE + DCA YTEMP + TAD XVALUE + DILX + TAD XINCR + DCA XVALUE +YPLOT, TAD CURPLT + CLL RAL + DCA CURPLT + SNL + JMP CNTINU + TAD YTEMP + DILY + DISD + JMP .-1 + DIXY + CLA CLL + TAD CURPLT + SNA CLA + JMP WRDEND +CNTINU, TAD YTEMP + TAD YINCR + DCA YTEMP + ISZ COUNT6 + JMP YPLOT + JMP XPLOT +WRDEND, ISZ COUNT2 + JMP EXIT + TAD I POINT + SZA + JMP XPLOT-1 +EXIT, TAD XVALUE + TAD XINCR + DCA XVALUE + JMP I CHAR +SPCHAR, TAD I POINT + DCA POINT + JMP I POINT +SPACE, TAD XINCR + CLL RTL + JMP EXIT +CRLF, TAD INITX + DCA XVALUE +LF, TAD YINCR + CLL RTL + CLL CIA RAL + TAD YVALUE + DCA YVALUE + JMP I CHAR +RESET, TAD INITX + DCA XVALUE + TAD INITY + JMP RESET-2 +TERM, ISZ CHAR + JMP I CHAR +INITX, 0 +INITY, 327 +XVALUE, 0 +YVALUE, 0 +XINCR, 6 +YINCR, 10 +YTEMP, 0 +CURPLT, 0 +ADDR, 0 +COUNT6, 0 +COUNT2, 0 +KM6, -6 +K77, 77 +POINT, 0 +TABLE, .+1 + 0 + TERM + 7611 + 1176 + 7745 + 4532 + 3641 + 4122 + 7741 + 4136 + 7745 + 4541 + 7705 + 501 + 7741 + 5173 + 7710 + 1077 + 4177 + 4100 + 2040 + 4037 + 7714 + 2241 + 7740 + 4040 + 7702 + 277 + 7706 + 3077 + 7741 + 4177 + 7705 + 502 + 3641 + 6176 + 7715 + 2542 + 2245 + 5122 + 177 + 100 + 3740 + 4037 + 1720 + 4037 + 7730 + 3077 + 4136 + 3641 + 374 + 7403 + 6151 + 4543 + 7741 + 0 + 204 + 1020 + 4177 + 0 + 436 + 400 + 0 + RESET + 0 + SPACE + 5600 + 0 + 303 + 0 + 1477 + 7714 + 2277 + 2200 + 2313 + 6462 + 7777 + 7777 + 300 + 0 + 3641 + 0 + 4136 + 0 + 4040 + 4040 + 1034 + 1000 + 0 + LF + 1010 + 1000 + 4000 + 0 + 2010 / + 402 + 3641 + 4136 + 4442 + 7740 + 4261 + 5146 + 2145 + 5321 + 1710 + 1077 + 4745 + 4531 + 7750 + 5070 + 6111 + 503 + 2255 + 5522 + 705 + 577 + 2400 + 0 + 0 + CRLF + 1024 + 4200 + 1212 + 1200 + 4224 + 1000 + 255 + 300 +MESS0, 3773 +MESS5, 7340 + 4040 + 4040 + 4000 +MESS1, 1716 + 0500 +MESS2, 2427 + 1700 +MESS3, 2711 + 1623 + 4100 +MESS4, 1617 + 0217 + 0431 + 0000 + *7400 +DISBUF, 0 + $ +/////////////////////////// +////////////////////////// diff --git a/sw/SPACE/original-space.pal b/sw/SPACE/original-space.pal new file mode 100644 index 0000000..2d216a4 --- /dev/null +++ b/sw/SPACE/original-space.pal @@ -0,0 +1,2262 @@ +/ SPACE WAR +/ +/ INTERPLANETARY DEATH AND DESTRUCTION ON YOUR +/ LAB-8 +/ +/ EVAN SUITS +/ +/ THIS VERSION WORKS OFF EITHER THE BLUE RIBBON CONNECTOR OR THE +/ SR. WHEN THE PROGRAM IS STARTED (AT 0200) OR RESTARTED THE +/ SR WILL BE TESTED AND IF =0000 WILL BE USED FOR THE COMMAND +/ INPUT. OTHERWISE, THE BLUE RIBBON CONNECTOR (AX08 * C0-C7 * +/ XR OPTION ONLY) CONTINGENCY INPUTS WILL BE USED. +/ +/ WHEN THE PROGRAM IS STARTED THE TWO SHIPS SHOULD +/ APPEAR ON THE SCREEN WITH SHIP 'ONE' ON THE LEFT, SHIP +/ 'TWO' ON THE RIGHT. +/ +/ THE COMMAND WORD BIT ASSIGNMENTS ARE: +/ +/ SR BIT: C: FUNCTION: +/ +/ 0 0 SHIP ONE ROTATES LEFT +/ +/ 1 1 SHIP ONE ROTATES RIGHT +/ +/ 2 2 SHIP ONE ACCELERATES +/ +/ 3 3 SHIP ONE FIRES +/ +/ +/ +/ 8 4 SHIP TWO ROTATES LEFT +/ +/ 9 5 SHIP TWO ROTATES RIGHT +/ +/ 10 6 SHIP TWO ACCELERATES +/ +/ 11 7 SHIP TWO FIRES +/ +/ +/ +/ NOTE THAT TURNING RIGHT AND LEFT SIMULTANEOUSLY THROWS +/ THE SHIP INTO HYPERSPACE. IN THE CURRENT VERSION THE ODDS +/ ARE IN FAVOR OF YOUR MAKING IT BACK SAFELY. THE GAME IS OVER +/ WHEN ONE OR BOTH OF THE SHIPS HAVE BEEN DESTROYED AND THE +/ WINNER (IF ANY) IS IN NORMAL SPACE. WHEN THE WINNER +/ HAS BEEN ANNOUNCED, HIT ANY TTY KEY TO RESTART. +/ + + + +/ SYMBOL DEFINITIONS FOR PAL8-PAL10 + +ZTEN=6342 +OTEN=6344 + +XRIN=6331 +XRCL=6334 + +SKXK=6321 +CLXK=6352 + +DSB=6324 + +DXC=6301 +DYC=6311 +DXL=6302 +DYL=6312 +DIS=6304 + +CRF=6072 +CCF=6052 + + / +/ THIS PROGRAM RELIES ON THE PROGRAM INTERUPT FACILITY FOR +/ REAL WORLD TIMING PURPOSES. +/ + + *0 + + 0 /EFFECTIVE JMS 0 ON PROGRAM INTERUPT + JMP I 2 /EXIT IMMEDIATLY TO SERVICE ROUTINE + INTSER + +EMPTY, 0 /THESE LOCATIONS ARE RESERVED FOR +ODT1, 0 /DEBUGGERS, ETC. +ODT2, 0 +ODT3, 0 + +/ +/ ALL THE AUTO INDEX REGISTERS ARE NAMED BUT NOT ALL OF +/ THEM ARE USED. THE STATUS OF ANY GIVEN REGISTER CANNOT +/ BE DETERMINED AT ANY TIME EXCEPT BY CAREFUL INSPECTION OF +/ THE CODE. +/ + + *10 + +AUTO10, 0 +AUTO11, 0 +AUTO12, 0 +AUTO13, 0 +AUTO14, 0 +AUTO15, 0 +AUTO16, 0 +AUTO17, 0 + +/ +/ THE FOLLOWING ARE THE DATA FILES FOR THE TWO SPACE SHIPS +/ AS WELL AS CERTAIN OTHER PARAMETERS FOR CALCULATING POSITIONS +/ AND SO ON. THE ORDER OF THE LOCATIONS MUST BE PRESERVED +/ ALTHOUGH THE SIZE OF THE TABLES MAY BE VARIED +/ + + *20 + +ONEOUT, 0 /IF NON-ZERO CONTAINS REAMINING TIME OF EXPLOSION +ONECNT, 0 /NUMBER OF POINTS IN FIGURE TO BE DISPLAYED +ONEFLG, 0 /IN OR OUT OF NORMAL SPACE +ONETHE, 0 /ANGLE OF ORIENTATION ON SCREEN +ONEVEX, 0 /X COMPONENT OF VELOCITY +ONEVEY, 0 /Y COMPONENT OF VELOCITY +ONEPEX, 0 /X POSITION (12 BITS) +ONEPEY, 0 /Y POSITION (12 BITS) +ONESIN, 0 /SINE OF ANGLE +ONECOS, 0 /COSINE OF ANGLE +ONEFIN, 0 /SET WHEN EXPLOSION DIES OUT + +TWOOUT, 0 /SAME CONTENT AND ORDER +TWOCNT, 0 /AS ABOVE +TWOFLG, 0 +TWOTHE, 0 +TWOVEX, 0 +TWOVEY, 0 +TWOPEX, 0 +TWOPEY, 0 +TWOSIN, 0 +TWOCOS, 0 +TWOFIN, 0 + + +/ +/ THESE LOCATIONS ARE USED BY THE "VECTOR GENERATOR" IN +/ DISPLAYING THE FIGURES. A FOUR DOT VECTOR WILL BE DRAWN +/ FROM XONE,YONE TO XTWO,YTWO WITH STEPS OF SIZE DIXTEM,DIYTEM +/ + +XONEDS, 0 +YONEDS, 0 +XTWODS, 0 +YTWODS, 0 +DIXTEM, 0 +DIYTEM, 0 +DISCNT, 0 + + +/ +/ THE NEXT LOCATIONS ARE USED BY CALPOS TO DO A FAST +/ MULTIPLY TO HELP CALCULATE THE DISPLAY FILES. +/ +T10SIN, 0 +T20SIN, 0 +T30SIN, 0 +T10COS, 0 +T20COS, 0 +T30COS, 0 + +CALSIN, 0 +CALCOS, 0 + + +/ +/ NOW COME THE VARIOUS ODDS AND ENDS ONE USUALLY FINDS ON +/ PAGE ZERO +/ + +SINE, SINEIN +COSINE, COSINI +MULT, MULTI +RSHIFT, SHIFTR +VECTOR, DISPLY +CALPOS, POSCAL +INTWRD, 0 +INTCNT, 0 +CLOCK, 0 +HYPER, HYPSET +MESOUT, CHARS +THEADJ, THEAJI +VEESCL, VEELIM +ISHFT, DISHFT +RESET1, RESE1 +GAMOVR, 0 +ACCFLG, 0 +ACCPER, -30 +MEXP, -400 + +PROX, 0 +PROY, 0 +PROLIF, -360 +BUFTMP, 0 +ONEFIL, DISBUF +TWOFIL, DISBUF+40 + +P5, 5 +P10, 10 +P17, 17 +P20, 20 +P37, 37 +P40, 40 +P100, 100 +P132, 132 +P200, 200 +P400, 400 +P550, 550 +P3777, 3777 + +M4, -4 +M6, -6 +M10, -10 +M11, -11 +M264, -264 +M200, -200 +M400, -400 +M550, -550 + + +/ +/ THE PROGRAM MAY BE STARTED OR RESTARTED AT ANYTIME AT 0200. +/ THE DATA FILE ON PAGE ZERO IS CLEARED, ALL FLAGS INITIALIZED, +/ AND THE SR EXAMINED. IF THE SR=0 THE DISPLAY UPDATE ROUTINES +/ ARE SET TO PICK UP THE STATUS WORD FROM THE SR. IF THE SR +/ DOES NOT EQUAL ZERO, THE STATUS WORD IS READ FROM THE EIGHT +/ CONTINGENCY INPUTS ON THE BLUE RIBBON CONNECTOR OF THE AX08 +/ (XR OPTION ONLY). JUMP IS THEN TO THE DISPLAY +/ FILE UPDATE TO START OFF THE GAME. +/ + + *200 + +START, CLA CLL /START OR RESTART HERE ANY OLD TIME + LAS /SR + SNA CLA + TAD SWRD /USE THE SR + TAD XROPT /USE THE BLUE RIBBON CONNECTOR + DCA COLDST /AND LEAVE IN THE TRAP LOCATION + +RESTRT, CLA CMA + XRCL + CLA CLL + + TAD P17 /FIRST CLEAR THE POSITION AND DATA + DCA AUTO10 /TABLES OF THE TWO SHIPS + TAD TABLEN + DCA AUTO11 + DCA I AUTO10 + ISZ AUTO11 + JMP .-2 + + TAD STRT1 /SET THE STARTING POSITIONS OF THE + DCA ONEPEX /TWO SHIPS + TAD STRT2 + DCA TWOPEX + TAD P37 /SET TRIG FUNCTIONS JUST IN CASE + DCA ONECOS + TAD P37 + DCA TWOCOS /ZERO DEGREES IS POINTING STRAIGHT UP + TAD ACCPER /SET COUNT FOR VELOCITY INCREASE + DCA ACCFLG + DCA ONEFIN /CLEAR ALL GAME END FLAGS + DCA TWOFIN + DCA GAMOVR + JMS I BUFSET /RESET ALL PROJECTILE DISPLAY BUFFERS + TAD P400 /START UP THE CRYSTAL CLOCK IN THE AX08 + ZTEN + OTEN + TCF /CLEAR OTHER REMAINING LIKELY FLAGS + PCF + RRB + CRF + CCF + CLA + JMP COLDST /AND GO TO IT + + +/ +/ UPDATE IS REACHED WHENEVER THE PROGRAM IS STARTED OR THE +/ CLOCK COUNT OVERFLOWS INDICATING TIME TO RECALCULATE THE +/ THE DISPLAY FILES AND REFRESH THE DISPLAY. THE INTERUPT +/ COUNT IS RESTORED, THE STATUS WORD IS PICKED UP FROM EITHER +/ THE SR OR BRC, AND THE RECALCULATION PROCESS BEGUN. +/ + +UPDATE, CLA CLL /HERE ON CLOCK COUNT OVERFLOW. + /START NEXT SWEEP +COLDST, 0 /TRAP TO READ SR OR BRC + LAS /HERE FOR SR + DCA INTWRD /STORE TEMPORARILY + TAD INTWRD /MASK OUT LEFTMOST 4 BITS + RTR /FOR NUMBER ONE + RTR + AND LFTHAF + DCA INTTEM /AND STORE + TAD INTWRD /MASK OUT RIGHTMOST BITS FOR NUMBER TWO + AND RYTHAF + TAD INTTEM /ADD TOGETHER + JMP .+3 /AND CONTINUE + +CODST, XRIN /HERE FOR BRC - PICK UP AND CLEAR + XRCL + DCA INTWRD /CONTINUE + TAD M550 /RESTORE INTERUPT COUNT BEFORE NEXT + DCA INTCNT /UPDATE + ION /GET READY FOR THE NEXT CYCLE + TAD ACCFLG /ALLOW VELOCITY INCREASE THIS TIME? + IAC /ONLY WHEN ACCFLG=0 + SMA SZA + TAD ACCPER /IF ZERO, RESET COUNT + DCA ACCFLG + + JMP I .+1 /NOW GET DOWN TO WORK. + ONEUP + +BUFSET, SETBUF +TABLEN, AUTO17-CALCOS +INTTEM, 0 +LFTHAF, 0360 +RYTHAF, 0017 +STRT1, 1000 +STRT2, -1000 +SWRD, 2000-CODST +XROPT, JMP CODST + + +/ +/ THIS IS THE INTERUPT SERVICE ROUTINE. MOST OF THE +/ INTERUPTS WILL BE FROM THE CRYSTAL CLOCK WHICH WILL BE +/ COUNTED AND UNLESS THE COUNT OVERFLOWS THE INTERUPT IS +/ DISMISSED IMMEDIATLY. IF THE COUNT OVER FLOWS, JMP IS TO +/ UPDATE WITH IOF. +/ +/ SPECIAL CASE IS KEYBOARD INTERUPT WHEN THE GAMOVR FLAG IS +/ SET IN WHICH CASE THE GAME IS RESTARTED. +/ +/ UNEXPECTED INTERUPTS ARE COUNTED AND AFTER ENOUGH OF THEM +/ HAPPEN THE PROGRAM HALTS. IF THIS HAPPENS RELOAD OR FIND THE +/ STRANGE FLAG +/ + +INTSER, DCA INTACC /HERE RIGHT AFTER INTERUPT - STORE + RAR /AC AND LINK + DCA INTLNK /FOR POSSIBLE CONTINUATION + SKXK /WAS IT THE CRYSTAL CLOCK? + JMP INTBUS /NO TRY SOMETHING ELSE + CLXK /YES CLEAR THE FLAG + ISZ CLOCK /AND BUMP CLOCK COUNTER + NOP /IGNORE OVERFLOW + ISZ INTCNT /TIME FOR AN UPDATE? + JMP INTRET /NO, DISMISS THE INTERUPT + JMP UPDATE /YES, GO TO IT + +INTBUS, KSF /HERE ON NON-CLOCK INTERUPT + JMP .+5 /NOT THE KEYBOARD + KCC /CLEAR KEYBOARD FLAG + TAD GAMOVR /IS THE GAMEOVER + SZA CLA + JMP RESTRT /YES, RESTART + TCF /NO, HELL WITH IT + ISZ INTGLH /COUNT ONE BADDIE + SKP + HLT /HALT IF TOO MANY BADDIES + +INTRET, CLA CLL /HERE TO DISMISS THE INTERUPT + TAD INTLNK + RAL + TAD INTACC + ION + JMP I 0 + +INTACC, 0 +INTLNK, 0 +INTGLH, 0 + + +/ +/ NOW BEGINS THE GREAT UPDATE PROCEEDURE, FIRST FOR SHIP +/ NUMBER ONE (THE DELTA SHAPED SHIP WHICH APPEARS ON +/ THE LEFT AT THE START OF THE GAME). IF ALIVE THE STATUS +/ WORD (INTWRD) IS TESTED FOR REQUESTS FOR LEFT TURN, +/ RIGHT TURN, THRUST ON, AND LAUNCH PROJECTILE. THESE ACTIONS +/ MAY OR MAY NOT BE ACTED UPON DEPENDING ON COUNTS AND FLAGS. +/ WHEN THIS IS COMPLETE THE SAME OPERATION IS PERFORMED FOR +/ NUMBER TWO. +/ + + *400 + +ONEUP, TAD ONEFLG /FIRST SEE IF IT'S IN NORMAL SPACE + SNA + JMP ONEOK /YES IT IS + IAC /NO, BUT IS IT JUST COMING OUT? + SNA + TAD ONEFIN /YES, THROW BACK IN IF ALREADY DESTROYED + DCA ONEFLG /OTHERWISE JUST COUNT ONE + JMP I ITWOUP /AND GO TO FIX UP NUMBER TWO + +ONEOK, TAD ONEOUT /IN NORMAL SPACE - IS IT EXPLODING? + SZA CLA + JMP ONEFIG /IF YES, ALLOW NO CONTROLS + TAD TWOFIN /HAS THE ENEMY BEEN VANQUISHED? + SZA CLA + JMS I ONEWN /YES, SIGNAL VICTORY + TAD INTWRD /NOW BEGIN TEST OF REQUEST + AND OP300 /LEFT AND RIGHT TURN TOGETHER MEAN HYPERSPACE! + TAD OM300 /TEST BITS 4 AND 5 + SZA CLA + JMP ONELEF /NOPE, CONTINUE + CMA /YES, CALL HYPER WITH AC=-1 FOR NUMBER ONE + JMP I HYPER +ONELEF, TAD INTWRD /REQUEST FOR LEFT TURN? + AND P200 /TEST BIT 4 + SNA CLA + JMP ONERYT /NO + CLA CLL CMA /YES DECREMENT ANGLE + JMP ONEFIG + +ONERYT, TAD INTWRD /HOW ABOUT RIGHT TURN + AND P100 /TEST BIT 5 + SZA CLA + IAC /YES, INCREMENT ANGLE + +ONEFIG, TAD ONETHE /PICK UP AND ADJUST ANGLE (MAYBE) + JMS I THEADJ /BRING BACK WITHIN LIMITS OF TRIG FUNCTIONS + DCA ONETHE /AND STORE + TAD ONETHE /FIND THEM TRIG FUNCTIONS + JMS I SINE /AND STORE ONCE AND FOR ALL + DCA ONESIN /IN THE APPROPRIATE PLACES + TAD ONETHE + JMS I COSINE + DCA ONECOS + TAD ONEOUT /DO NOT ALLOW THRUST IF EXPLODING + SZA CLA + JMP ONEVEL + + + +ONEMOV, TAD ACCFLG /ALLOW ANY VELOCITY INCREASE THIS CYCLE? + SZA CLA + JMP ONEVEL /NOPE + TAD INTWRD /YES, ANY REQUESTED? + AND P40 /TEST BIT 6 + SNA CLA + JMP ONEVEL /NONE REQUESTED + TAD ONECOS /YES, ADD IN VELOCITY INCREMENT DEPENDING + TAD ONEVEY /ON ORIENTATION + JMS I VEESCL /BUT DO NOT ALLOW TO EXCEED MAXIMUM + DCA ONEVEY /AND STORE + TAD ONESIN /DO THE SAME FOR THE OTHER (X) COMPONENT + TAD ONEVEX + JMS I VEESCL + DCA ONEVEX + + + +ONEVEL, TAD ONEVEX /NOW UPDATE THE POSITION WITH THE + JMS I ISHFT /VELOCITY COMPONENTS DIVIDED BY 4 + JMS I ISHFT /THIS MAINTAINS MAXIMUM RESOLUTION + TAD ONEPEX + DCA ONEPEX /IGNORE ANY OVERFLOW + TAD ONEVEY /DO THE SAME FOR Y COORDINATE + JMS I ISHFT /AND VELOCITY COMPONENT + JMS I ISHFT + TAD ONEPEY + DCA ONEPEY + TAD ONEOUT /DO NOT ALLOW PROJECTILE LAUNCH IF + SZA CLA /EXPLODING + JMP I ITWOUP + + + +ONELNC, TAD LNC1FG /OTHERWISE, SEE IF RELOAD IS FINISHED + SNA CLA + JMP .+3 + ISZ LNC1FG /NO, CONTINUE RELOADING + JMP I ITWOUP /AND EXIT + TAD INTWRD /YES, READY TO LAUNCH, TRIGGER BEEN PULLED? + AND P20 /TEST BIT7 + SNA CLA + JMP I ITWOUP /NO, WAIT FOR A BETTER SHOT + /.....I GUESS..... + TAD PROLIF /YES, SET CYCLE COUNT FOR THIS LAUNCH + DCA I AUTO16 /AUTO16 ALWAYS POINTS AT THE NEXT SLOT IN THE FILE + TAD ONEVEX /ADD SHIPS VELOCITY (SCALED OF COURSE) + JMS I ISHFT /TO ORIENTATION TO EXTABLISH X VELOCITY + JMS I RSHIFT /COMPONENT OF PROJECTILE + TAD ONESIN + JMS I RSHIFT /AND STICK IT IN THE FILE + DCA I AUTO16 + TAD ONESIN /MOVE THE LAUNCH POINT OUTSIDE THE + CLL RTL /SHIP OF ORIGIN + TAD ONEPEX + DCA I AUTO16 /AND STORE X POSITION + TAD ONEVEY /NOW DO THE SAME FOR THE Y VELOCITY AND + JMS I ISHFT /POSITION + JMS I RSHIFT + TAD ONECOS + JMS I RSHIFT + DCA I AUTO16 + TAD ONECOS + CLL RTL + TAD ONEPEY + DCA I AUTO16 + TAD M200 /START RELOAD CYCLE + DCA LNC1FG + JMS I RESET1 /RESET AUTO16 TO NEXT HOLE + + JMP I .+1 /NOW TO FIX IT UP WITH NUMBER TWO +ITWOUP, TWOUP + +LNC1FG, 0 /PROJECTILE LAUNCH ENABLE + +OP300, 300 /HYPERSPACE REQUEST CODE BITS 4 AND 5 +OM300, -300 +ONEWN, ONEWIN /POINTER TO VICTORY MESSAGE + + +/ +/ HERE BEGINS THE UPDATE PROCEEDURE FOR SHIP NUMBER TWO. +/ OPERATION IS THE SAME AS FOR NUMBER ONE ABOVE. +/ + + *600 + +TWOUP, TAD TWOFLG /FIRST SEE IF IT'S IN NORMAL SPACE + SNA + JMP TWOOK /YES, CONTINUE + IAC /NO, BUMP COUNT AND TEST FOR REENTRY + SNA + TAD TWOFIN /IF RE-ENTERING THROW BACK OUT IF FINISHED + DCA TWOFLG /AND CONTINUE + JMP I IONEST + +TWOOK, TAD TWOOUT /HERE WHEN READY TO UPDATE IN NORMAL SPACE + SZA CLA /IS IT EXPLODING? + JMP TWOFIG /YES DO NOT ALLOW HYPERSPACE + TAD ONEFIN /DID WE JUST WIN? + SZA CLA + JMS I TWOWN /YES ENABLE END OF GAME MESSAGE + TAD INTWRD /TEST FOR HYPERSPACE REQUEST + AND OP14 + TAD OM14 /BITS 8 AND 9 MUST BE SET + SNA CLA + JMP I HYPER /8 AND 9 SET. ENTER HYPER ROUTINE WITH AC=0 + /FOR SHIP NUMBER 2 +TWOLEF, TAD INTWRD /TEST FOR LEFT TURN - BIT 8 + AND P10 + SNA CLA + JMP TWORYT /NOT SET + CLA CLL CMA /SET, DECREMENT TWOTHE BY 1 DEGREE + JMP TWOFIG /SKIP TEST FOR RIGHT TURN + +TWORYT, CLA CLL IAC RTL /TEST FOR RIGHT TURN - BIT 9 + AND INTWRD + SZA CLA + IAC /IF SET INCREMENT TWOTHE BY 1 DEGREE + +TWOFIG, TAD TWOTHE /UPDTAE TWOTHE + JMS I THEADJ /BRING TO WITHIN LIMITS OF SINE,COSINE + DCA TWOTHE /AND STORE + TAD TWOTHE + JMS I SINE /CALCULATE SINE AND COSINE FUNCTIONS + DCA TWOSIN /AND STORE IN DATA TABLE + TAD TWOTHE + JMS I COSINE + DCA TWOCOS + TAD TWOOUT /DO NOT ALLOW VELOCITY CHANGE IF EXPLODING + SZA CLA + JMP TWOVEL + + + +TWOMOV, TAD ACCFLG /NOW FOR ACCELERATION. TEST TO SEE IF ALLOWED + SZA CLA /DURING THIS UPDATE CYCLE + JMP TWOVEL /NOPE + CLL IAC RAL /YES, TEST FOR BIT 2 SET + AND INTWRD + SNA CLA + JMP TWOVEL /NOT SET + + TAD TWOSIN /UPDATE X VELOCITY COMPONENT BY SINE OF + TAD TWOVEX /ANGLE OF ORIENTATION + JMS I VEESCL /AND SCALE TO NOT EXCEED MAX + DCA TWOVEX /UPDATE Y COMPONENT WITH COSINE + + TAD TWOCOS + TAD TWOVEY + JMS I VEESCL + DCA TWOVEY + + + +TWOVEL, TAD TWOVEX /NOW UPDATE THE POSITION WITH THE VELOCITY + JMS I ISHFT /COMPONENTS/16 + JMS I ISHFT + TAD TWOPEX + DCA TWOPEX + TAD TWOVEY + JMS I ISHFT + JMS I ISHFT + TAD TWOPEY + DCA TWOPEY + TAD TWOOUT + SZA CLA + JMP I IONEST + + + +TWOLNC, TAD LNC2FG /NOW CHECK FOR PROJECTILE LAUNCH. FIRST + SNA CLA /TEST TO SEE IF RELOAD COMPLETE + JMP .+3 + ISZ LNC2FG /NO, COUNT ONE CYCLE AND EXIT + JMP I IONEST + IAC /YES, TEST TRIGGER BIT 11 + AND INTWRD + SNA CLA + JMP I IONEST /NOT SET, HELL WITH IT + + TAD PROLIF /OK, SET PROJECTILE LIFE + DCA I AUTO16 /AUTO16 IS ALWAYS POINTING AT THE NEXT SLOT + TAD TWOVEX /ADD SHIPS VELOCITY + JMS I ISHFT /(ADJUSTED) + JMS I RSHIFT + TAD TWOSIN /TO THAT OF PROJECTILE - AGAIN X COMPONENT + JMS I RSHIFT /FROM SINE OF ANGLE OF ORIENTATION + DCA I AUTO16 + TAD TWOSIN /SET INITIAL POSITION TO BE JUST AHEAD + CLL RTL /OF THE SHIP + TAD TWOPEX /X COMPONENT + DCA I AUTO16 + TAD TWOVEY /NOW THE Y COMPONENTS FROM Y VELOCITY + JMS I ISHFT /Y POSITION AND COSINE + JMS I RSHIFT + TAD TWOCOS + JMS I RSHIFT + DCA I AUTO16 + TAD TWOCOS + CLL RTL + TAD TWOPEY + DCA I AUTO16 + TAD M200 + DCA LNC2FG /200 CYCLES OF RELOAD + JMS I RESET1 /DRINK LEADEN DEATH, NUMBER ONE! + + JMP I .+1 /FINAL EXIT TO DISPLAY FILE CALCULATIONS +IONEST, ONESET + +LNC2FG, 0 /RELOAD COUNT + +OP14, 14 /HYPERSPACE CODE +OM14, -14 +TWOWN, TWOWIN + + +/ +/ HERE BEGINS THE DISPLAY CALCULATIONS FOR THE TWO SHIPS. AT +/ THIS POINT ONLY THE POSITION AND ORIENTATION OF EACH VESSEL +/ IS ONF INTEREST SINCE THE VELOCITY AND ALL THAT HAVE ALREADY +/ BEEN TAKEN CARE OF. FOR THE BOTH SHIPS THE DISPLAY FILES ARE +/ CALCULATED AS A SERIES OF PAIRS OF X,Y COORDINATES. BETWEEN +/ EACH PAIR OF POINTS A FOUR POINT VECTOR WILL BE DRAWN. THE +/ ACTUAL COORDINATES ARE CALCULATED AS DISPLACEMENTS +/ FROM THE CENTRAL PSOTION OF THE SHIP, TAKING INTO ACCOUNT THE +/ ANGLE OF ORIENTATION. THE FORMULAS FOLLOWED ARE: +/ +/ X(POINT)=X(BASE)+X(REL)*COS[THE]+Y(REL)*SINE[THE] +/ +/ Y(POINT)=Y(BASE)+Y(REL)*COS[THE]-X(REL)*SINE[THE] +/ +/ WHERE SINE[THE] AND COS[THE] ARE THE FUNCTIONS OF THE +/ ANGLE OF ORIENTATION, X(BASE) AND Y(BASE) ARE THE +/ COORDINATES OF THE SHIPS POSITION AND X(REL) AND Y(REL) +/ CORRESPOND TO DISPLACEMENT PAIRS DEPENDING ON THE SHAPE +/ OF THE FIGURE. ALL X AND Y RELS LIE WITHIN THE RANGE 0-3 AND +/ THERE FORE ALL NECESSARY DISPLACEMENTS FROM BASE COORDINATES +/ MAY BE CALCULATEDFROM DIFFERENT COMBINATIONS OF T10SIN, T20COS +/ ETC. THESE VALUES ARE CALCULATED BY A CALL TO POSCAL WITH THE SINE +/ AND COSINE OF THE ANGLE OF INTEREST IN CALSIN AND CALCOS. +/ +/ FOLLOWING THIS METHOD ANY FIGURE DESCRIBABLE WITH A 7 BY 7 +/ MATRIX OF POINTS MAY BE QUICKLY CALCULATED. +/ +/ BEGINNING AT ONESET DIFFERENT DISPLACEMENT PAIRS ARE CALCULATED +/ AND DEPOSITIED THROUGH AUTO10 TO FORM THE DISPLAY FILE FOR SHIP NUMBER ONE. +/ + + + *1000 + +ONESET, CLA CLL /BEGIN DISPLAY FILE FOR NUMBER ONE + TAD ONEFLG /DONT BOTHER IF NOT IN NORMAL SPACE + SZA CLA + JMP I ITWOST + TAD ONESIN /SET UP FOR MATRIX COMPONENT CALCULATIONS + DCA CALSIN + TAD ONECOS + DCA CALCOS + JMS I CALPOS /CALL THE CALCULATOR + +/ +/ CONSIDER THE 7 BY 7 MATRIX OF DISPLACEMENT POINTS WITH THE +/ CENTER AT 0,0 CORRESPONDING TO THE SHIPS POSITION. A SERIES +/ OF POINTS IS NOW DESCRIBED AROUND THIS CENTER USING THE +/ MULTIPLES OF THE TRIG FUNCTIONS JUST CALCULATED +/ SO THAT ANY POINT ON THE OUTLINE IS DESCRIBABLE AS X,Y +/ DISPLACED BY X,Y OF THE SHIP ITSELF +/ + + TAD ONEFIL /SET UP AUTO10 AS THE DISPLAY FILE + DCA AUTO10 /POINTER + TAD ONEPEX /THE FIRST POINT OF THE OUTLINE IS + TAD T30SIN + DCA I AUTO10 / 0,3 OR TOP CENTER + TAD ONEPEY + TAD T30COS + DCA I AUTO10 + + TAD T10COS + CIA /THE SECOND IS + TAD ONEPEX + DCA I AUTO10 / -1,0 + TAD T10SIN /OR JUST LEFT OF DEAD CENTER + TAD ONEPEY /AND SO ON + DCA I AUTO10 + + TAD T30SIN + TAD T30COS /THE THIRD POINT IS + CIA + TAD ONEPEX / -3,-3 + DCA I AUTO10 + TAD T30COS /OR BOTTOM LEFT HAND CORNER + CIA + TAD T30SIN + TAD ONEPEY + DCA I AUTO10 + + + + TAD T10SIN + CIA /FOURTH POINT + TAD ONEPEX + DCA I AUTO10 / 0,-1 + TAD T10COS + CIA /OR JUST BELOW CENTER + TAD ONEPEY + DCA I AUTO10 + +FLAM1, TAD INTWRD /TEST FOR POWER ON. IF ON, DRAW THE + AND P40 /FLAME WITH AN EXTRA POINT SOME + SNA CLA /DISTANCE DIRECTLY BELOW THE SHIP + JMP ONECON /POWER NOT ON - CONTINUE + TAD ONEOUT /DO NOT ALLOW IF EXPLODING + SZA CLA + JMP ONECON + + TAD ONFG1 /USE ONFG1 TO TURN THE FLAME ON AND + SNA /OFF TO MAKE IT FLICKER. DISPLAY THE + CLA CLL CMA RAL /FLAME ONE TIME OUT OF THREE + DCA ONFG1 + + ISZ ONFG1 + JMP ONECON /ONE OUT OF THREE TIMES THIS WILL SKIP + + TAD ONFG2 /VARY ALSO THE LENGHT OF THE FLAME + CMA /WITH LONG SHORT LONG SHORT + DCA ONFG2 + + TAD ONFG2 /TIP OF FLAME AT EITHER + SNA CLA + TAD T10SIN / 0,-4 OR + TAD T30SIN / 0,-3 + CIA + TAD ONEPEX + DCA I AUTO10 + TAD ONFG2 + SNA CLA + TAD T10COS + TAD T30COS + CIA + TAD ONEPEY + DCA I AUTO10 + + TAD T10SIN + CIA + TAD ONEPEX /RETURN DISPLAY TO 0,-1 + DCA I AUTO10 + TAD T10COS + CIA + TAD ONEPEY + DCA I AUTO10 + CLA CLL CMA RAL /ADD -2 TO POINT COUNT + + + +ONECON, TAD M6 /SET POINT COUNT TO -6 OR -8 + DCA ONECNT + + TAD T30SIN /CONTINUE WITH DISPLAY FILE - THIS POINT + CIA + TAD T30COS / AT 3,-3 + TAD ONEPEX / + DCA I AUTO10 /OR LOWER RIGHT HAND CORNER + TAD T30SIN + TAD T30COS + CIA + TAD ONEPEY + DCA I AUTO10 + + TAD T10COS /NEXT + TAD ONEPEX / + DCA I AUTO10 / 1,0 + TAD T10SIN / + CIA / OR JUST RIGHT OF CENTER + TAD ONEPEY + DCA I AUTO10 + + TAD T30SIN /FINALLY BACK TO + TAD ONEPEX / + DCA I AUTO10 / 0,3 + TAD T30COS / + TAD ONEPEY / TOP CENTE + DCA I AUTO10 + + JMP I ITWOST /NOW FOR NUMBER TWO +ITWOST, TWOSET + +ONFG1, 0 /USED TO COUNT FLICKERS +ONFG2, 0 /SHORT OR LONG FLAG + + +/ +/ HERE BEGINS THE DISPLAY FILE GENERATOR FOR SHIP TWO. +/ IT WORKS JUST LIKE THE ONE FOR NUMBER ONE BUT WITH +/ DIFFERENT DISPLACEMENT PAIRS AND TWO EXTRA POINTS +/ + + *1200 + +TWOSET, CLA CLL /DONT BOTHER IF NOT IN NORMAL SPACE + TAD TWOFLG + SZA CLA + JMP I IFILDS + TAD TWOSIN /SET UP TO HAVE DISPLACEMENT INCREMENTS + DCA CALSIN /CALCULATED + TAD TWOCOS + DCA CALCOS + JMS I CALPOS + + TAD TWOFIL /SET AUTO10 TO POINT TO SECOND DISPLAY + DCA AUTO10 /FILE + TAD T30SIN /FIRST POINT AT + TAD TWOPEX / + DCA I AUTO10 / 0,3 + TAD T30COS / + TAD TWOPEY / OR TOP CENTER + DCA I AUTO10 + + TAD T20COS + CIA + TAD T20SIN + TAD TWOPEX + DCA I AUTO10 + TAD T20SIN + TAD T20COS /SECOND POINT + TAD TWOPEY / -2,2 + DCA I AUTO10 + + TAD T20COS /THIRD POINT + CIA / -2,0 + TAD TWOPEX + DCA I AUTO10 + TAD T20SIN + TAD TWOPEY + DCA I AUTO10 + + + + TAD T20COS + TAD T30SIN + CIA + TAD TWOPEX /FOURTH POINT + DCA I AUTO10 / -2,-3 + TAD T30COS + CIA + TAD T20SIN + TAD TWOPEY + DCA I AUTO10 + + + + TAD T20SIN + CIA /NEXT + TAD TWOPEX / 0,-2 + DCA I AUTO10 + TAD T20COS + CIA + TAD TWOPEY + DCA I AUTO10 + +FLAM2, CLA CLL IAC RAL /NOW THE FLAME BIT. CHECK FOR POWER ON + AND INTWRD + SNA CLA + JMP TWOCON /NO, FORGET IT + TAD TWOOUT /NOT ALLOWED IF EXPLODING + SZA CLA + JMP TWOCON + + TAD TWFG1 /SET THE 1-3 FLICKER AS WITH #1 + SNA + CLA CLL CMA RAL + DCA TWFG1 + + ISZ TWFG1 /ALSO THE LENGHT VARIATION + JMP TWOCON + + TAD TWFG2 /EVERY OTHER TIME LONG + CMA + DCA TWFG2 + /FLAME TIP AT EITHER + TAD TWFG2 / 0,-3 + SNA CLA /OR + TAD T20SIN / 0,-5 + TAD T30SIN + CIA + TAD TWOPEX + DCA I AUTO10 + TAD TWFG2 + SNA CLA + TAD T20COS + TAD T30COS + CIA + TAD TWOPEY + DCA I AUTO10 + + TAD T20SIN /NOW BACK UP TO THE SHIP + CIA + TAD TWOPEX + DCA I AUTO10 + TAD T20COS + CIA + TAD TWOPEY + DCA I AUTO10 + + CLA CLL CMA RAL /ADD -2 TO POINT COUNT + + + +TWOCON, TAD M10 /SET POINT COUNT TO -8 OR -10 + DCA TWOCNT + + TAD T30SIN /CONTINUE WITH DISPLAY FILE + CIA /NEXT POINT AT 2,-3 + TAD T20COS + TAD TWOPEX + DCA I AUTO10 + TAD T30COS + TAD T20SIN + CIA + TAD TWOPEY + DCA I AUTO10 + + + + TAD T20COS /NEXT POINT + TAD TWOPEX / + DCA I AUTO10 / 2,0 + TAD T20SIN + CIA + TAD TWOPEY + DCA I AUTO10 + + TAD T20COS /AND THE NEXT AT + TAD T20SIN + TAD TWOPEX / 2,2 + DCA I AUTO10 + TAD T20SIN + CIA + TAD T20COS + TAD TWOPEY + DCA I AUTO10 + + TAD T30SIN + TAD TWOPEX + DCA I AUTO10 + TAD T30COS /AND THE LAST AT + TAD TWOPEY / + DCA I AUTO10 / 0,3 + + JMP I IFILDS /NOW TO DISPLAY THE WHOLE MESS +IFILDS, FILDIS + +TWFG1, 0 /FLIK THE FLAME +TWFG2, 0 /LONG OR SHORT + + +/ +/ HERE TO DISPLAY THE TWO SHIPS. CHECK FIRST FOR COLLISION +/ AND THEN SET THE TWO PAIRS OF COORDENATES FOR THE END +/ POINTS AND CALL THE "VECTOR GENERATOR" TO DRAW THE DOTS +/ IN BETWEEN. WHEN THE COUNT OVERFLOWS DO THE SAME FOR +/ NUMBER TWO. THEN EXIT TO DISPLAY ALL THE PROJECTILES. +/ + + *1400 + +FILDIS, CLA CLL /ALL SET TO GO + JMS I COLIDE /TEST FOR COLLISION FIRST + DSB 1 /IF NO COLLISION + TAD ONEFLG /SKIP NUMBER ONE IF NOT IN NORMAL + SZA CLA /SPACE + JMP TWODIS + + TAD ONEFIL /SET UP POINTERS TO DISPLAY FILE + DCA AUTO10 /FOR NUMBER ONE + TAD ONECNT /ALONG WITH VECTOR COUNT + DCA AUTO11 + TAD I AUTO10 /SET OUT THE FIRST POINT PAIR + DCA XONEDS + TAD I AUTO10 + DCA YONEDS + TAD ONEOUT /NORMAL DISPLAY OR EXPLOSION? + SZA CLA + JMP I IONEEX /GO ELSE WHERE FOR EXPLOSION + +FILONE, TAD I AUTO10 /STEP TO NEXT PAIR OF POINTS + DCA XTWODS /SET X AND Y TO NEW POINT + TAD I AUTO10 + DCA YTWODS + JMS I VECTOR /CALL THE DOT DRAWING MACHINE + ISZ AUTO11 + SKP /COUNT + JMP TWODIS /DO NUMBER TWO ON OVERFLOW + TAD XTWODS /SWAP POINTS FOR NEXT PAIR + DCA XONEDS + TAD YTWODS /THE GENERATOR DRAWS FROM ONE + DCA YONEDS /TOWARDS TWO + JMP FILONE + + + +TWODIS, TAD TWOFLG /HERE TO DO NUMBER TWO + SZA CLA /BUT NOT IF IN HYPER SPACE + JMP I IPRODS + + TAD TWOFIL /SET UP FILE POINTER AS IN ONE + DCA AUTO10 + TAD TWOCNT /AND THE COUNT + DCA AUTO11 + TAD I AUTO10 /I SUPPOSE THIS COULD BE A SUBROUTINE TOO + DCA XONEDS + TAD I AUTO10 + DCA YONEDS + TAD TWOOUT /IS IT EXPLODING? + SZA CLA + JMP I ITWOEX /YES, HOW EXCITING + +TWDLOP, TAD I AUTO10 /NO HOW DULL, STICK IN NEXT PAIR OF + DCA XTWODS /POINTS + TAD I AUTO10 + DCA YTWODS /AND CALL THE VECTOR SEQUENCE + JMS I VECTOR + ISZ AUTO11 + JMP .+3 + + JMP I .+1 /WHEN COUNT OVERFLOWS GO ON TO +IPRODS, PRODIS /DO THE PROJECTILE THING + + TAD XTWODS /OTHERWISE SWAP ON TO THE NEXT PAIR + DCA XONEDS /OF POINTS + TAD YTWODS + DCA YONEDS + JMP TWDLOP + +COLIDE, COLLID +IONEEX, ONEEXP +ITWOEX, TWOEXP + + +/ +/ THIS IS THE SO CALLED "VECTOR GENERATOR" WHICH DRAWS A +/ SERIES OF DOTS FROM XONEDS,YONEDS TO XTWODS,YTWODS. +/ THE COORDINATE COMPONENTS ARE DIVIDED INTO FOURTHS AND +/ FOUR DOTS DRAWN ON THE SCOPE SCREEN. NOTE THAT NO DOT +/ IS DRAWN AT XONEDS,YONEDS. THIS IS COMPENSATED FOR ELSEWHERE. +/ + + +DISPLY, 0 /ENTER TO DRAW A FOUR POINT VECTOR + TAD XONEDS /FROM XONEDS,YONEDS + CIA /TO XTWODS,YTWODS + TAD XTWODS /DIVIDE COORDINATE DIFERENCES INTO + JMS DISHFT /FOURTHS + DCA DIXTEM /AND STORE INCREMENT + TAD YONEDS + CIA + TAD YTWODS + JMS DISHFT + DCA DIYTEM + TAD M4 /FOR FOUR DOTS + DCA DISCNT + +DISLOP, TAD XONEDS /ADD INCREMENT TO CURRENT X AND Y + TAD DIXTEM + DCA XONEDS /NOTE THAT THIS ROUTINE DESTROYS + TAD YONEDS /XONEDS AND YONEDS + TAD DIYTEM + DCA YONEDS + TAD XONEDS + RTR /DIVIDE BY 8 TO FIT SCREEN SIZE + RAR + DXC DXL /SET X VALUE + CLA + TAD YONEDS /DO THE SAME FOR Y + RTR + RAR + DYC DYL DIS /AT LAST SOMETHING TO SEE!! + CLA + ISZ DISCNT /DONE YET? + JMP DISLOP /NOPE + JMP I DISPLY /YUP + + +DISHFT, 0 /A GENERALIZED SHIFT ROUTINE CALLED + CLL /FROM EVERYWHERE TO DIVIDE THE + SPA /AC BY FOUR WITH AN ASR RIGHT + CML IAC /NOTE THAT NEGATIVE NUMBERS ARE + RAR /ROUNDED UPWARDS (TOWARD ZERO) + CLL /TO MAKE IT COME OUT RIGHT + SPA + CML IAC /EVEN SO THERE ARE SOME ROUNDING ERRORS + RAR /SOMEWHERE. SO MUCH FOR 12 BIT MACHINES + JMP I DISHFT + + +/ +/ HERE TO DISPLAY ALL THE PROJECTILES AND TEST FOR HITS. +/ THE PROJECTILE DISPLAY FILE IS SEARCHED FOR PROJECTILES WITH +/ NON-ZERO COUNTS AND WHEN ONE IS FOUND THE POSITION IS +/ UPDATED BY THE VELOCITY, THE POINT DISPLAYED AND TESTED FOR +/ A HIT. +/ + + *1600 + +PRODIS, CLA CLL / BEGIN DISPLAY OF THE PROJECTILES + TAD BUFST /POINT TO BEGINNING OF DISPLAY FILE + DCA BUFTMP + DSB 2 /SET EXTRA BRIGHT FOR SINGLE POINTS + +PROLOP, TAD I BUFTMP /PICK UP NEXT COUNT + SNA + JMP EXPIRE /THIS ONE IS DEAD - GO TO THE NEXT + IAC /INCREMENT COUNT AND REPLACE + DCA I BUFTMP + ISZ BUFTMP /BUMP POINTER TO X VELOCITY + TAD I BUFTMP + ISZ BUFTMP /THEN TO XPOSITION AND UPDATE X POSITION + TAD I BUFTMP /WITH THE VELOCITY WHICH IS CONSTANT + DCA I BUFTMP + TAD I BUFTMP + DCA PROX /AND STORE X POSITION FOR DISPLAY AND TEST + ISZ BUFTMP /NOW TO Y POSITION AND VELOCITY + TAD I BUFTMP + ISZ BUFTMP + TAD I BUFTMP /SAME LITTLE GAME + DCA I BUFTMP + TAD I BUFTMP + DCA PROY /STORE THE NEW Y VALUE + + TAD PROX /DISPLAY THE POINT WITH + RTR /THE SAME SHIFT AS FOR THE SHIPS + RAR /FOR THE SMALL SCREEN + DXC DXL + CLA + TAD PROY + RTR / + RAR + DYC DYL DIS /THERE IT IS!! + CLA + JMS I CHKOUT /TEST FOR A HIT + ISZ BUFTMP /MOVE POINTER ON AND TEST FOR END + TAD BUFTMP /OF BUFFER + TAD BUFLIM + SZA CLA + JMP PROLOP /NOT AT END - CONTINUE + + / +/ HERE AT THE END OF THE PROJECTILE DISPLAY. IF THE GAMOVR +/ FLAG IS SET, GO ON TO THE MESSAGE DISPLAY - VICTORY LAP +/ SECTION. OTHERWISE PICK UP THE REMAINING CLOCK COUNT +/ TO GIVE THE FANS SOMETHING TO LOOK AT, AND MOVE THE +/ ELECTRON BEAM TO A LOWER CORNER. THE COUNT DISPLAYED +/ IN THE AC IS THE NUMBER OF 100 USEC CLOCK TICKS REMAINING +/ WHEN THIS CODE IS REACHED BEFORE THE NEXT UPDATE WOULD +/ BEGIN. TURNS OUT THAT ROUGHLY 2/3 OF THE CPU IS LEFT +/ OVER SHOULD ANYONE WANT TO DO ANYTHING VERY FANCY. +/ + + +FINISH, TAD GAMOVR /IS THIS THE VICTORY LAP OR WHAT? + SZA CLA + JMP I ENDGAM /YES, GO TO PUT UP THE MESSAGE + TAD M400 /MOVE THE BEAM OFF SCREEN + DYC DYL + CLA CLL + DXC DXL + TAD INTCNT /PICK UP THE COUNT + CIA + JMP . + +ENDGAM, JOBLOP + + + +EXPIRE, TAD BUFTMP /HERE TO ADVANCE THE BUFFER + TAD P5 /POINTER TO THE NEXT PROJECTILE + DCA BUFTMP /UNLESS THE END + TAD BUFTMP /OF THE BUFFER + TAD BUFLIM /IS REACHED + SZA CLA /IN WHICH CASE + JMP PROLOP /IT + JMP FINISH /QUITS + +BUFST, DISBUF+101 +BUFLIM, -DISBUF-175 +CHKOUT, CHECK + +RESE1, 0 /THIS IS CALLED TO SET THE POINTER + TAD MRES /(AUTO16) TO THE NEXT FREE SLOT + DCA RESCNT /FOR A PROJECTILE LAUNCH. 12 POSSIBLE + +RESLOP, TAD RESPNT /MOVE THE POINTER TO THE NEXT SLOT + TAD P5 + DCA RESPNT + TAD RESPNT /RESTE IF AT END OF BUFFER + TAD BUFLIM + SZA CLA + JMP RESCON + TAD BUFST + DCA RESPNT + +RESCON, TAD I RESPNT /FIND A HOLE YET? + SNA CLA + JMP RESFND /YES, SET UP AUTO16 + ISZ RESCNT /NO COUNT + JMP RESLOP /AND TRY AGAIN + HLT /NO HOLES AT ALL? + +RESFND, CMA /BACK THE POINTER FOR AUTO INDEXING + TAD RESPNT + DCA AUTO16 + JMP I RESE1 + +MRES, -14 +RESCNT, 0 +RESPNT, 0 + +SETBUF, 0 + CMA /THIS ROUTINE IS CALLED FROM THE + TAD BUFST /STARTING SEQUENCE TO INITIALIZE ALL + DCA AUTO16 /THE BUFFER POINTERS AND SO ON + TAD BUFST + DCA BUFTMP + TAD BUFST + DCA RESPNT + TAD BUFST + DCA SETPNT +SETLOP, DCA I SETPNT + ISZ SETPNT + TAD SETPNT + TAD BUFLIM + SZA CLA + JMP SETLOP + JMP I SETBUF + +SETPNT, 0 + + +/ +/ THIS HERE NOW THING CHECKS THE COORDINATES OF THE MOST RECENTLY +/ DISPLAYED PROJECTILE AGAINST THOSE OF THE SHIPS ON THE SCREEN. +/ IF WITH A COLLISION LIMIT A HIT IS RECORDED AND THE LIFE +/ COUNT OF THE PROJECTILE ZEROED TO REMOVE IT. A HIT SHIP +/ IS SUITABLY FLAGGED +/ + + *2000 + +CHECK, 0 /HERE TO TEST FOR A PROJECTILE HIT + TAD ONEFLG /CANT HIT SOMETHING IN HYPERSPACE + SZA CLA + JMP CHECK2 + TAD ONEOUT /OR SOMETHING THAT'S BEEN HIT + SZA CLA + JMP CHECK2 + + TAD PROX /CHECK X COORDINATES OF SHIP ONE + CIA /AND PROJECTILE + TAD ONEPEX /THIS SORT OF THING IS WHY THE + SPA /COORDINATES HAVE TO BE MAINTAINED TO 12 + CIA /BITS + TAD LIMIT /CLOSE ENOUGH? + SMA CLA + JMP CHECK2 /IF X ISN' CLOSE ENOUGH THEN NO HIT + TAD PROY /X WAS CLOSE ENOUGH, HOW ABOUT Y? + CIA + TAD ONEPEY + SPA + CIA + TAD LIMIT + SMA CLA + JMP CHECK2 /NO HIT + + TAD MEXP /DEPOSIT EXPLOSION COUNT IN ONEOUT + DCA ONEOUT /ALL THAT IS NECESSARY + JMS CUTOUT /REMOVE PROJECTILE + + + +CHECK2, TAD TWOFLG /NO HIT ON NUMBER ONE, TRY NUMBER TWO + SZA CLA + JMP I CHECK /BUT NOT IF IN HYPERSPACE + TAD TWOOUT /OR IF ALREADY HIT + SZA CLA + JMP I CHECK + + TAD PROX /CHECK X'S FIRST + CIA + TAD TWOPEX + SPA /GET ABSOLUTE VALUE OF DIFFERENCE + CIA + TAD LIMIT /AND TEST MAGNITUDE AGAINST PROXIMITY + SMA CLA /LIMIT + JMP I CHECK /NOWHERE NEAR CLOSE + + TAD PROY /NYAH, NYAH + CIA /TRY THE Y'S + TAD TWOPEY + SPA + CIA /ABSOLUTE VALUE OF DIFFERENCE + TAD LIMIT + SMA CLA + JMP I CHECK /CLEAN MISS! + + TAD MEXP /HIT ON TWO - END EVERYTHING BY SETTING + DCA TWOOUT /TWOOUT TO NON-ZERO EXPLOSION COUNT + JMS CUTOUT + JMP I CHECK /EXIT AFTER DESTOYING PROJECTILE + +LIMIT, -120 /PROXIMITY LIMIT FOR WHAT CONSTITUTES A HIT + +CUTOUT, 0 /THIS ROUTINE ZEROES OUT THE MOST RECENTLY + TAD M4 /DISPLAYED PROJECTILE BY ZEROEING THE + TAD BUFTMP /COUNT + DCA CUTPNT + DCA I CUTPNT + JMP I CUTOUT + +CUTPNT, 0 + + +/ +/ THIS ROUTINE IS CALLED TO TEST FOR A COLLISION BETWEEN THE +/ TWO SHIPS. THE COORDINATES OF BOTH ARE COMPARED +/ AND IFF SUFFICIENTLY CLOSE BOTH ARE DESTROYED BY SETTING +/ THEIR EXPLOSION COUNTS NON-ZERO. +/ + + +COLLID, 0 /HERE TO TEST FOR COLLISION + TAD ONEFLG /NO TEST IF EITHER SHIP IS IN + SZA CLA /HYPERSPACE OR EXPLODING + JMP I COLLID + TAD TWOFLG + SZA CLA + JMP I COLLID + TAD ONEOUT + SZA CLA + JMP I COLLID + TAD TWOOUT + SZA CLA + JMP I COLLID + + TAD ONEPEX /BOTH SHIPS AVAILABLE FOR COLLISION + CIA /CHECK X COORDINATES FIRST + TAD TWOPEX + SPA /GET ABSOLUTE VALUE OF DIFFERENCE + CIA + TAD COLLIM /CLOSE ENOUGH? + SMA CLA + JMP I COLLID /NOPE, FORGET IT + + TAD ONEPEY /YES, NOW TRY THE Y COORDINATES + CIA + TAD TWOPEY + SPA + CIA /GET MAGNITUDE ONLY + TAD COLLIM + SMA CLA /CLOSE ENOUGH? + JMP I COLLID + TAD MEXP /YES, SET BOTH EXPLOSION COUNTS + DCA ONEOUT + TAD MEXP + DCA TWOOUT + JMP I COLLID + +COLLIM, -300 + +/ +/ THIS ROUTINE IS CALLED TO SET ONE OF THE TWO SHIPS INTO +/ HYPERSPACE. ON ENTRY THE AC=-1 FOR SHIP #1, 0 FOR SHIP +/ NUMBER 2. THE LOCATION CLOCK IS USED FOR A RANDOM +/ ADDRESS POINTER FROM WHICH WILL BE DRAWN THE +/ VARIOUS PARAMETERS FOR REENTRY. +/ + + *2200 + +HYPSET, DCA RTNFLG /HERE WITH AC=-1 OR 0 + TAD RTNFLG /SET UP LIST POINTER + SZA CLA + TAD ONEDIF /TO APPROPRIATE SHIP FILE + TAD TWOLST + DCA AUTO15 + + TAD CLOCK /SET UP "RANDOM NUMBER GENERATOR" + DCA AUTO17 + TAD I AUTO17 /PICK UP FIRST THE AMOUNT OF TIME + AND TIMOUT /OUT OF NOMAL SPACE LIMITED TO -777 + CIA /UPDATE CYCLES ( ABOUT 15 SECONDS) + DCA I AUTO15 /AND STORE IN ONEOUT OR TWO OUT + + TAD I AUTO17 /THE NEXT RANDOM NUMBER BECOMES THE + JMS I THEADJ /ANGLE OR ORIENTATION ON REENTRY + DCA I AUTO15 + TAD I AUTO17 /AND THE NEXT BECOMES THE X VELOCITY + JMS VEESET /COMPONENT + DCA I AUTO15 + TAD I AUTO17 /AND THEN THE Y COMPONENT + JMS VEESET + DCA I AUTO15 + TAD I AUTO17 + DCA I AUTO15 + + TAD I AUTO17 + DCA I AUTO15 + + TAD I AUTO17 /FINALLY SEE IF RETURN WILL BE SUCCESSFLY + AND TIMOUT + TAD MHYP /ABOUT 3/4 CHANCE + SMA CLA + JMP HYPRET /OK + TAD RTNFLG /THIS IS THE ONE TIME IN FOUR. SET + SZA CLA /UP FOR EXPLOSION ON REENTRY + TAD ONEDIF + TAD OUTLOC + DCA VEESET + TAD MEXP + DCA I VEESET + +HYPRET, ISZ RTNFLG + JMP I TWORTN + JMP I ONERTN + +TIMOUT, 777 +ONEDIF, ONEFLG-TWOFLG +TWOLST, TWOFLG-1 +RTNFLG, 0 +ONERTN, TWOUP +TWORTN, ONESET +OUTLOC, TWOOUT +MHYP, -200 + + + +VEESET, 0 /HERE TO LIMIT VELOCITY COMPONENTS + CLL + SPA /GET MAGNITUDE + CML + AND HM177 /LIMIT TO 177 + SZL CLL + CIA + JMP I VEESET /AND EXIT + +HM177, 177 + +ONEEXP, CLA CLL /HERE TO DISPLAY SHIP NUMBER ONE AS + TAD ONETHE /AN EXPLOSION + TAD INCONE /FIRST ROTATE IT BY A GOOD DOLLOP + DCA ONETHE + JMS I IXPDIS /THEN CALL THE EXPLOSION GENERATOR + ISZ ONEOUT /DONE WITH THE EXPLOSION? + JMP I NOWTWO /NO, NORMAL RETURN + + IAC /YES, SET INTO PSEUDO HYPER SPACE + DCA ONEFLG + IAC /DISABLE RETURN FROM HYPER SPACE + DCA ONEFIN + + TAD TWOFIN /IS NUMBER TWO STILL AROUND? + SNA CLA + JMP I NOWTWO /YES, RETURN + JMP I TIEUP /NO, TIE BALL GAME + + +TWOEXP, CLA CLL /HERE TO DISPLAY SHIP NUMBER TWO + TAD TWOTHE /AS AN EXPLOSION. BASH IT AROUND + TAD INCTWO + DCA TWOTHE + JMS I IXPDIS /THEN DISPLAY IT + ISZ TWOOUT /DONE WITH EXPLOSION? + JMP I NOWPRO /NO, NORMAL RETURN + + IAC /YES, SEND INTO PSEUDO HYPER SPACE + DCA TWOFLG + IAC /DISABLE NORMAL RETURN FROM HYPERSPACE + DCA TWOFIN + /CHECK NUMBER ONE + TAD ONEFIN + SZA CLA /STILL ALIVE AND WELL? + JMP I TIEUP /NO, TIE GAME + JMP I NOWPRO /YES, CONTINUE ON +NOWTWO, TWODIS +NOWPRO, PRODIS +TIEUP, NOWIN +IXPDIS, EXPDIS +INCONE, 55 +INCTWO, 55 + + +/ +/ HERE TO DISPLAY THE FIGURE POINTED TO BY AUTO10 AS +/ AN EXPLOSION. THIS WORKS THE SAME WAY AS THE NORMAL +/ DISPLAY ROUTINE EXCEPT THAT THE COORDINATE INCREMENTS +/ ARE INVERTED TURNING THE FIGURE INSIDE OUT FOR S +/ A SORT OF CLOBBY EXPLOSION. +/ + + *2400 + +EXPDIS, 0 /HERE TO DISPLAY A FIGURE INSIDE OUT + TAD I AUTO10 /WITH THE POINTERS AND COUNTS ALREADY + DCA XTWODS /SET UP BY FILDIS OR TWODIS + TAD I AUTO10 /STICK NEXT TWO POINTS INTO LINE + DCA YTWODS + + TAD XTWODS + CIA /CALCULATE INCREMENT THE WRONG WAY + TAD XONEDS + DCA DIXTEM /AND STORE + TAD YTWODS + CIA + TAD YONEDS + DCA DIYTEM /SAME FOR Y + + TAD M4 /4 DOTS IN THE VECTOR" + DCA DISCNT /COULD HAVE CALLED THE OTHER + /VECTOR GENERATOR I SUPPOSE +EXPLOP, TAD XONEDS + TAD DIXTEM /ADD X AND Y INCREMENTS TO THE RUNNING + DCA XONEDS /TOTALS AND DISPLAY THE RUNNING + TAD YONEDS /TOTALS NORMAL SIZE + TAD DIYTEM + DCA YONEDS + + TAD XONEDS + RTR /COULD MAKE TWICE AS BIG BY NOP-ING + RAR /THE RAR'S BUT THE SCREEN IS SMALL ENOUGH + DXC DXL /AS IT IS + CLA + TAD YONEDS + RTR + RAR + DYC DYL DIS + CLA + ISZ DISCNT /DONE 4 DOTS? + JMP EXPLOP /NO + + ISZ AUTO11 /DONE ALL VECTORS IN THE FILE? + SKP + JMP I EXPDIS /YES, EXIT + + TAD XTWODS /NO SWAP TO NEXT PAIR OF POINTS + DCA XONEDS + TAD YTWODS + DCA YONEDS + JMP EXPDIS+1 + + + +/ +/ VEELIM IS THE SCALING ROUTINE FOR VELOCITY COMPONENTS. +/ THE COMPONENTS ARE SCALED TO REMAIN IN THE RANGE 140 +/ TO -140. THIS IS NECESSARY TO AVOID ASTRONOMICAL SPPED +/ BUILDUP ON THE SMALL SCREEN. UNFORTUNATELY THE X AND Y +/ COMPONENTS ARE SCALED SEPARATELY WHICH GIVES SLIGHT BUT +/ NOTICABLE DISTORTIONS IN DIAGONAL FLIGHT PATHS. IN THE +/ NORMAL HEAT OF THE BATTLE NO ONE WILL REALLY NOTICE. +/ + + +VEELIM, 0 /ENTER TO SCALE VELOCITY HELD IN + DCA VEEHLD /AC + TAD VEEHLD + SMA /BRANCH FOR POSITIVE OR NEGATIV + JMP VEEPOS + TAD VEEMAX + SMA CLA /GREATER THAN MAXIMUM POSITIVE? + JMP VEECLR /NO + TAD VEEMIN /I MEAN MAXIMUM NEGATIVE - YES SET + JMP I VEELIM /TO MAX NEGATIV + +VEEPOS, TAD VEEMIN /GREATER THAN MAX? + SPA CLA + JMP VEECLR /NO + TAD VEEMAX /YES SET TO MAX + JMP I VEELIM + +VEECLR, TAD VEEHLD /IT WAS IN RANGE ALL ALONG + JMP I VEELIM + +VEEHLD, 0 +VEEMIN, -140 +VEEMAX, 140 + +THEAJI, 0 /HERE TO ADJUST THE ANGLE TO A RANGE + SMA /0-550 OR 0-360 DEGREES. THIS IS + JMP .+3 /NECESSARY TO INSURE THAT PUSHDOWN OVERFLOW + TAD P550 /WILL NOT HAPPEN IN THE SINE AND COSINE + JMP .-3 /ROUTINES. THIS SIMPLY TAKES THE AC + TAD M550 /MODULO 360 AND EXITS + SMA + JMP .-2 + TAD P550 /FOLLOW IT THROUGH AND SEE IF IT DOESN'T + JMP I THEAJI + + +/ +/ ONE OF THESE ROUTINE IS ENTERED WHEN A WINNER IS DECLARED. +/ THE ADDRESS OF THE VICTORY MESSAGE IS PLACED IN MESS AND +/ THE GAMOVR FLAG SET TO CAUSE A BRANCH TO JOBLOP WHEN THE +/ DISPLAY CYCLE IS COMPLETED. THE ROUTINE WILL THEN DISPLAY +/ THE APPROPRIATE MESSAGE OVER THE REMAINING SHIPS IF +/ ANY UNTIL THE KEYBOARD IS MOLESTED OR THE CLOCK RUNS OUT +/ AND THE NEXT DISPLAY UPDATE CYCLE IS SET. AT ANY RATE THE +/ PROGRAM WILL REACH HERE ONLY WHEN SOMEONE HAS BITTEN THE +/ INTERGALACTIC DUST. +/ + + +ONEWIN, 0 /THIS IS CALLED WHEN TWOFIN IS SET + TAD MES1 /AND ONE FIN IS NOT. SET ONE TO VICTOR + DCA MESS /AND SET GAMOVR FLAG + IAC + DCA GAMOVR + JMP I ONEWIN /THEN RETURN TO UPDATE CYCLE + +TWOWIN, 0 /THIS IS CALLED WHEN ONEFIN IS SET + TAD MES2 /AND TWO FIN IS NOT + DCA MESS /SET ALSO GAMOVR + IAC + DCA GAMOVR + JMP I TWOWIN + +NOWIN, TAD MES4 /GET HERE WHEN BOTH ONEFIN AND TWOFIN + DCA MESS /ARE SET . + IAC + DCA GAMOVR /NOBODY EVER REALLY WINDS + /UP THE WINNER IN THESE THINGS +JOBLOP, DSB 1 /THIS IS ENTERED FROM FINISH WHEN + TAD MES0 /GAMOVR IS SET AND SERVES TO DISPLAY + JMS I MESOUT /THE VICTORY MESSAGE ON THE SCREEN + TAD MESS /USING THE CHARACTER GENERATOR SOMEWHAT + JMS I MESOUT /FURTHER ON UNTIL THE GAME IS RESTARTED + TAD MES5 /OR UNTIL THE INTERRUPT COUNT OVERFLOWS + JMS I MESOUT /AND THE UPDATE CYCLE IS RESTARTED + TAD MES3 + JMS I MESOUT +FINITO, JMP JOBLOP + +MES0, MESS0 +MES1, MESS1 +MES2, MESS2 +MES3, MESS3 +MES4, MESS4 +MES5, MESS5 +MESS, 0 + + +/ +/ THE FOLLOWING ARE THE SINE AND COSINE ROUTINES CUSTOMIZED +/ FOR THIS PROGRAM FROM ANOTHER I WORKED ON. CALL EITHER +/ SINE OR COSINE WITH ANGLE IN DEGREES IN AC. THE ARGUEMENT +/ IS REDUCED THROUGH RECURSION UNTIL BETWEEN 0-89 DEGREES +/ AND THEN A TABLE LOOKUP DONE TO OBTAIN THE VALUE. IT TAKES +/ UP A FAIR AMOUNT OF SPACE BUT IT WORKS JUST FASTER +/ THAN SHEEP. THE COSINE CALL JUST TRANSFORMS THE ARGUEMENT +/ THROUGH SOME TRIGONOMETRIC GARBAGE AND CALLS THE SINE +/ ROUTINE. NOTE THAT CALLING EITHER ROUTINE WITH TOO +/ LARGE AN ARGUEMENT WILL CAUSE PUSHDOWN OVERFLOW AND THEN +/ ALL HELL WILL BREAK LOOSE. THE ORIGINAL ROUTINE FROM WHICH +/ THIS WAS STOLEN HAD FULL WORD PRECISION. +/ + + *6400 + +SINEIN, 0 /I REALLY CANT BRING MYSELF TO COMMENT + DCA SINARG /THIS. IT'S VERY STRAIGHFORWARD + TAD SINEIN + DCA I SINPSH + ISZ SINPSH + TAD SINARG + SZA + JMP SINNG2 + +SINPOP, CLA CLL CMA + TAD SINPSH + DCA SINPSH + TAD I SINPSH + DCA SINEIN + TAD SINARG + JMP I SINEIN + +SINNG2, SMA + JMP SINPOS + CIA + JMS SINEIN + +SINNEG, CIA + DCA SINARG + JMP SINPOP + +SINPOS, TAD M264 + SPA + JMP .+2 + JMP SINNEG-1 + TAD P132 + SPA + JMP SINELK + SZA CLA + JMP .+3 + TAD P37 + JMP SINNEG+1 + + TAD SINARG + TAD M264 + JMP SINNEG-1 + +SINELK, TAD P132 + TAD SINTAB + DCA SINEIN + TAD I SINEIN + DCA SINARG + JMP SINPOP + + + +SINARG, 0 +SINPSH, SINLST +SINLST, 0 + 0 + 0 + 0 + 0 + 0 + +SINTAB, SINES-1 + +COSINI, 0 + CIA + TAD P132 + JMS SINEIN + JMP I COSINI + + + +SINES, 00 /1 + 01 /2 + 01 /3 + 02 /4 + 02 /5 + 03 /6 + 03 /7 + 04 /8 + 05 /9 + 05 /10 + 06 /11 + 06 /12 + 07 /13 + 07 /14 + 10 /15 + 10 /16 + 11 /17 + 11 /18 + 12 /19 + 12 /20 + 13 /21 + 13 /22 + 14 /23 + 15 /24 + 15 /25 + 16 /26 + 16 /27 + 17 /28 + 17 /29 + 20 /30 + 20 /31 + 20 /32 + 21 /33 + 21 /34 + 22 /35 + 22 /36 + 23 /37 + 23 /38 + 24 /39 + 24 /40 + 25 /41 + 25 /42 + 25 /43 + 26 /44 + 26 /45 + 27 /46 + 27 /47 + 27 /48 + 30 /49 + 30 /50 + 30 /51 + 31 /52 + 31 /53 + 31 /54 + 32 /55 + 32 /56 + 32 /57 + 33 /58 + 33 /59 + 33 /60 + 33 /61 + 34 /62 + 34 /63 + 34 /64 + 35 /65 + 35 /66 + 35 /67 + 35 /68 + 35 /69 + 36 /70 + 36 /71 + 36 /72 + 36 /73 + 36 /74 + 36 /75 + 37 /76 + 37 /77 + 37 /78 + 37 /79 + 37 /80 + 37 /81 + 37 /82 + 37 /83 + 37 /84 + 37 /85 + 37 /86 + 37 /87 + 37 /88 + 37 /89 + + + +MULTI, 0 /THIS IS STANDARD SINGLE PRECISION + CLL /MULTIPLY ROUTINE WHICH WAS ONCE + SPA /USED. I'VE LEFT IT IN SINCE + CMA CML IAC /THERE IS LOTS OF CORE LEFT OVER AND + DCA MULMP1 /MAYBLE SOMEDAY I'LL NEED IT TO PUT + DCA MULMP5 /IN A SUN OR SOMETHING. THIS IS THE + TAD I MULTI /STANDARD DEC SUBROUTINE WITH DIFFERENT + SNA /LABELS + JMP MULPSN+2 + SPA + CMA CML IAC + DCA MULMP2 + TAD MULTHR + DCA MULMP3 + +MULMP4, TAD MULMP1 + RAR + DCA MULMP1 + TAD MULMP5 + SZL + TAD MULMP2 + CLL RAR + DCA MULMP5 + ISZ MULMP3 + JMP MULMP4 + TAD MULMP1 + RAR +MULPSN, SZL + JMP MULCMP + DCA MULMP1 + TAD MULMP5 +MULMPZ, ISZ MULTI + JMP I MULTI + +MULCMP, CMA CLL IAC + DCA MULMP1 + TAD MULMP5 + CMA + SZL + IAC + JMP MULMPZ + +MULTHR, 7764 +MULMP1, 0 +MULMP5, 0 +MULMP2, 0 +MULMP3, 0 + + +/ +/ SHIFTR DIVIDES THE AC BY TWO WHETHER POSITIVE OR NEGATIVE +/ AND IS CALLED FROM VARIOUS PLACES. NOT ENTIRELY MYSTERIOUS +/ + + +SHIFTR, 0 + CLL + SPA + CML IAC + RAR + JMP I SHIFTR + + +/ +/ POSCAL IS CALLED TO CALCULATE THE COORDINATE INCREMENTS +/ NECESSARY TO PRODUCE THE SHIP FIGURES. RATHER THAN DOING +/ A LOT OF EXPENSIVE MATH THIS DOES A QUICK PRODUCTION +/ OF 1, 2, AND 3 TIMES THE SIN AND COSINE VALUES FOUND +/ IN CALSIN AND CALCOS LEAVING THEM IN THE TABLE FOR +/ ONESET AND TWOSET. IF THE SCOPE WERE ANY BETTER +/ THIS PROBABLY WOULDN'T BE NEAR GOOD ENOUGH BUT.... +/ + +POSCAL, 0 + TAD CALSIN + + DCA T10SIN + TAD T10SIN + CLL RAL + DCA T20SIN + TAD T10SIN + TAD T20SIN + DCA T30SIN + + TAD CALCOS + + DCA T10COS + TAD T10COS + CLL RAL + DCA T20COS + TAD T10COS + TAD T20COS + DCA T30COS + JMP I POSCAL + + + *7000 + +/GENERAL PURPOSE SYMBOL GENERATOR +/ +CHARS, 0 /ENTRY TO PLOT CHARACTER STRING + DCA ADDR /STORE STRING ADDRESS + TAD I ADDR /FETCH DOUBLE CHARACTER + RTR /SHIFT + RTR / FOR FIRST + RTR / CHARACTER + JMS CHAR /PLOT CHARACTER + SKP /NORMAL RETURN -- SKIP + JMP I CHARS /TERMINATION RETURN -- EXIT + TAD I ADDR /RECALL DOUBLE CHARACTER + ISZ ADDR /ADVANCE STRING ADDRESS + JMS CHAR /PLOT CHARACTER + JMP CHARS+2 /NORMAL RETURN -- REPEAT + JMP I CHARS /TERMINATION RETURN -- EXIT +/ +CHAR, 0 /ENTRY TO PLOT SINGLE CHARACTER + AND K77 /MASK OUT UPPER BITS + CLL RAL /MULTIPLY CODE BY TWO + TAD TABLE /ADD TABLE BASE ADDRESS + DCA POINT /CONSTRUCT POINTER TO 24-BIT CODE + CMA /INITIALIZE COUNTER FOR + DCA COUNT2 / TWO PLOT WORDS + TAD I POINT /FETCH FIRST PLOT WORD + ISZ POINT /INCREMENT POINTER FOR NEXT ONE + SNA /SKIP IF NOT SPECIAL CHARACTER + JMP SPCHAR /ELSE GO PROCESS IT + DCA CURPLT /SAVE CURRENT PLOT BITS +XPLOT, TAD KM6 /INITIALIZE 6-BIT + DCA COUNT6 / COUNTER + TAD YVALUE /RESET Y TEMPORARY + DCA YTEMP / VALUE FOR CHARACTER + TAD XVALUE /OUTPUT CURRENT + DXC DXL / X-VALUE TO CRT + TAD XINCR /INCREMENT + DCA XVALUE / ABSCISSA +YPLOT, TAD CURPLT /RECALL CURRENT PLOT BITS + CLL RAL /GET NEXT BIT + DCA CURPLT /SAVE REMAINING PLOT BITS + SNL /SKIP IF POINT TO PLOT + JMP CNTINU /ELSE JUMP AHEAD + TAD YTEMP /OUTPUT CURRENT + DYC DYL DIS / Y-VALUE TO CRT + CLA CLL /CLEAR AC + TAD CURPLT /RECALL CURRENT PLOT BITS + SNA CLA /SKIP IF POINTS REMAINING + JMP WRDEND /ELSE WORD IS FINISHED +CNTINU, TAD YTEMP /INCREMENT TEMPORARY + TAD YINCR / Y-VALUE FOR NEXT + DCA YTEMP / CHARACTER STEP + ISZ COUNT6 /SKIP IF 6 BITS PLOTTED + JMP YPLOT /ELSE PLOT NEXT ONE + JMP XPLOT /GO UPDATE X-VALUE +WRDEND, ISZ COUNT2 /SKIP IF ANOTHER BIT WORD + JMP EXIT /ELSE EXIT + TAD I POINT /FETCH SECOND BIT WORD + SZA /SKIP IF NO PLOT POINTS + JMP XPLOT-1 /ELSE GO PLOT THEM +EXIT, TAD XVALUE /INCREMENT ABSCISSA + TAD XINCR / FOR SPACE BETWEEN + DCA XVALUE / SYMBOLS + JMP I CHAR /EXIT FROM CHAR +/ +SPCHAR, TAD I POINT /FETCH TRANSFER VECTOR + DCA POINT /STORE AS INDIRECT ADDRESS + JMP I POINT /GO TO APPROPRIATE ROUTINE +SPACE, TAD XINCR /FETCH BASIC ABSCISSA INCREMENT + CLL RTL /MULTIPLY BY FOUR AND + JMP EXIT / GO CREATE SPACE +CRLF, TAD INITX /"CARRIAGE RETURN" RESETS X + DCA XVALUE / TO ITS ORIGINAL VALUE +LF, TAD YINCR /"LINE FEED" + CLL RTL / DECREMENTS THE + CLL CIA RAL / Y-VALUE BY + TAD YVALUE / EIGHT SCALE + DCA YVALUE / STEPS + JMP I CHAR /EXIT FROM CHAR +RESET, TAD INITX /"RESET" RESETS + DCA XVALUE / X AND Y TO + TAD INITY / THEIR ORIGINAL + JMP RESET-2 / VALUES +TERM, ISZ CHAR /TERMINATE CODE CAUSES + JMP I CHAR / EXIT TO P+2 +/ +INITX, 0 /INITIAL X-VALUE +INITY, 327 /INITIAL Y-VALUE +XVALUE, 0 /CURRENT X-VALUE +YVALUE, 0 /CURRENT Y-VALUE +XINCR, 6 /BASIC X INCREMENT VALUE +YINCR, 10 /BASIC Y INCREMENT VALUE +YTEMP, 0 /TEMPORARY Y-VALUE +CURPLT, 0 /CURRENT PLOT BITS +ADDR, 0 /CURRENT STRING ADDRESS +COUNT6, 0 /6-BIT COUNTER +COUNT2, 0 /2-WORD COUNTER +KM6, -6 /CONSTANT FOR COUNT6 +K77, 77 /CHARACTER CODE MASK +POINT, 0 /TABLE POINTER +/ + +/ +TABLE, .+1 /TABLE BASE ADDRESS + 0 /SPECIAL CHARACTER (00) + TERM /TERMINATION CODE + 7611 / A + 1176 + 7745 / B + 4532 + 3641 / C + 4122 + 7741 / D + 4136 + 7745 / E + 4541 + 7705 / F + 501 + 7741 / G + 5173 + 7710 / H + 1077 + 4177 / I + 4100 + 2040 / J + 4037 + 7714 / K + 2241 + 7740 / L + 4040 + 7702 / M + 277 + 7706 / N + 3077 + 7741 / O + 4177 + 7705 / P + 502 + 3641 / Q + 6176 + 7715 / R + 2542 + 2245 / S + 5122 + 177 / T + 100 + 3740 / U + 4037 + 1720 / V + 4037 + 7730 / W + 3077 + 4136 / X + 3641 + 374 / Y + 7403 + 6151 / Z + 4543 + 7741 / [ + 0 + 204 / \ + 1020 + 4177 / ] + 0 + 436 / ^ + 400 + 0 /SPECIAL CHARACTER (37) + RESET /RESET + 0 /SPECIAL CHARACTER (40) + SPACE /SPACE + 5600 / ! + 0 + 303 / " + 0 + 1477 / # + 7714 + 2277 / MARKER + 2200 + 2313 / % + 6462 + 7777 / BLOCK + 7777 + 300 / ' + 0 + 3641 / ( + 0 + 4136 / ) + 0 + 4040 / UNDERSCORE (52) + 4040 + 1034 / + + 1000 + 0 /SPECIAL CHARACTER (54) + LF /LINE FEED + 1010 / - + 1000 + 4000 / . + 0 + 2010 / / + 402 + 3641 / 0 + 4136 + 4442 / 1 + 7740 + 4261 / 2 + 5146 + 2145 / 3 + 5321 + 1710 / 4 + 1077 + 4745 / 5 + 4531 + 7750 / 6 + 5070 + 6111 / 7 + 503 + 2255 / 8 + 5522 + 705 / 9 + 577 + 2400 / : + 0 + 0 /SPECIAL CHARACTER (73) + CRLF /CARRIAGE RETURN; LINE FEED + 1024 / > + 4200 + 1212 / = + 1200 + 4224 / < + 1000 + 255 / ? + 300 + + +/ +/ HERE FOLLOW THE PACKED ASCII TEXTS FOR THE VARIOUS +/ VICTORY MESSAGES. PERSONS ADVENTEROUS TO FIND THIS MIGH CARE +/ TO TOGGLE IN SOME CUTE LITTLE MESSAGES OF THEIR OWN. +/ + +MESS0, 3773 +MESS5, 7340 + 4040 + 4040 + 4000 + +MESS1, 1716 + 0500 + +MESS2, 2427 + 1700 + +MESS3, 2711 + 1623 + 4100 + +MESS4, 1617 + 0217 + 0431 + 0000 + + + *7400 + +DISBUF, 0 + +/ THE DISPLAY BUFFERS BEGIN HERE AND EXTEND UP SOMEWHERE TO +/ AROUND 7575 OR SO. +/ +/ +/ +/ +/ + + + + $ + +//////////////////////////// +/ +/ THIS IS THE END +/ +/////////////////////////// + + + + + + \ No newline at end of file diff --git a/sw/SPACE/space.pal b/sw/SPACE/space.pal new file mode 100644 index 0000000..a604b28 --- /dev/null +++ b/sw/SPACE/space.pal @@ -0,0 +1,2392 @@ +/ SPACE WAR +/ +/ INTERPLANETARY DEATH AND DESTRUCTION ON YOUR +/ LAB-8 +/ +/ EVAN SUITS +/ +/ THIS VERSION WORKS OFF EITHER THE BLUE RIBBON CONNECTOR OR THE +/ SR. WHEN THE PROGRAM IS STARTED (AT 0200) OR RESTARTED THE +/ SR WILL BE TESTED AND IF =0000 WILL BE USED FOR THE COMMAND +/ INPUT. OTHERWISE, THE BLUE RIBBON CONNECTOR (AX08 * C0-C7 * +/ XR OPTION ONLY) CONTINGENCY INPUTS WILL BE USED. +/ +/ WHEN THE PROGRAM IS STARTED THE TWO SHIPS SHOULD +/ APPEAR ON THE SCREEN WITH SHIP 'ONE' ON THE LEFT, SHIP +/ 'TWO' ON THE RIGHT. +/ +/ THE COMMAND WORD BIT ASSIGNMENTS ARE: +/ +/ SR BIT: C: FUNCTION: +/ +/ 0 0 SHIP ONE ROTATES LEFT +/ +/ 1 1 SHIP ONE ROTATES RIGHT +/ +/ 2 2 SHIP ONE ACCELERATES +/ +/ 3 3 SHIP ONE FIRES +/ +/ +/ +/ 8 4 SHIP TWO ROTATES LEFT +/ +/ 9 5 SHIP TWO ROTATES RIGHT +/ +/ 10 6 SHIP TWO ACCELERATES +/ +/ 11 7 SHIP TWO FIRES +/ +/ +/ +/ NOTE THAT TURNING RIGHT AND LEFT SIMULTANEOUSLY THROWS +/ THE SHIP INTO HYPERSPACE. IN THE CURRENT VERSION THE ODDS +/ ARE IN FAVOR OF YOUR MAKING IT BACK SAFELY. THE GAME IS OVER +/ WHEN ONE OR BOTH OF THE SHIPS HAVE BEEN DESTROYED AND THE +/ WINNER (IF ANY) IS IN NORMAL SPACE. WHEN THE WINNER +/ HAS BEEN ANNOUNCED, HIT ANY TTY KEY TO RESTART. +/ + + +/**************************************************************** + +/*************************** +/ CLOCK OPERATIONS + +CLZE=6130 / CLEAR CLOCK ENABLE REGISTER PER AC +CLSK=6131 / SKIP ON CLOCK FLAG +CLOE=6132 / SET CLOCK ENABLE REGISTER PER AC +CLAB=6133 / AC REGISTER TO CLOCK COUNTER REGISTER +CLEN=6134 / CLOCK ENABLE REGISTER TO AC +CLSA=6135 / STATUS TO AC +CLBA=6136 / CLOCK BUFFER REGISTER TO AC +CLCA=6137 / CLOCK COUNTER REGISTER TO AC + +/ BITS IN CLOCK ENABLE REGISTER +CREXT=0100 / EXTERNAL SOURCE +CR2=0200 / 10**2 per second +CR3=0300 / 10**3 per second +CR4=0400 / 10**4 per second +CR5=0500 / 10**5 per second +CR6=0600 / 10**6 per second + +COVSTAT=4000 +CMFREE=0000 / 4096 FIXED FREE RUN +CMPROG=1000 / PROGRAMMED DELAY + +CADC=0040 / START ADC ON OVERFLOW +CINH=0020 / INHIBIT CLOCK +CION=0010 / INTERRUPT ENABLE + +CEV3=0004 / EVENT 3 ENABLED +CEV2=0002 / EVENT 2 ENABLED +CEV1=00001 / EVENT 1 ENABLED + +/ VC8-E OPCODES +DIXY=6055 / INTENSIFY +DILX=6053 / LOAD X +DILY=6054 / LOAD Y +DILE=6056 / LOAD ENABLES FROM A +DISD=6052 / TEST FOR READY + +/**************************************************************** +/ SYMBOL DEFINITIONS FOR PAL8-PAL10 + +XRIN=NOP / DIGITAL INPUT? +XRCL=NOP + +/DSB=XXXX / SET BRIGHTNESS - MUST BE COMMENTED OUT!!! + +DXC=JMS I IVCLDX / X VALUE CONTROL? +DYC=JMS I IVCLDY / Y VALUE CONTROL? + +DXL=0000 / X VALUE LOAD FLAG? +DYL=0000 / Y VALUE LOAD FLAG? +DIS=0000 / ANOTHER STRANGE FLAG + +/CRF=NOP / WHICH FLAG??? +/CCF=NOP / ?? + + +/**************************************************************** +/ +/ THIS PROGRAM RELIES ON THE PROGRAM INTERUPT FACILITY FOR +/ REAL WORLD TIMING PURPOSES. +/ + + *0 + + 0 /EFFECTIVE JMS 0 ON PROGRAM INTERUPT + JMP I 2 /EXIT IMMEDIATLY TO SERVICE ROUTINE + INTSER + +EMPTY, 0 /THESE LOCATIONS ARE RESERVED FOR +ODT1, 0 /DEBUGGERS, ETC. +ODT2, 0 +ODT3, 0 + +/ +/ ALL THE AUTO INDEX REGISTERS ARE NAMED BUT NOT ALL OF +/ THEM ARE USED. THE STATUS OF ANY GIVEN REGISTER CANNOT +/ BE DETERMINED AT ANY TIME EXCEPT BY CAREFUL INSPECTION OF +/ THE CODE. +/ + + *10 + +AUTO10, 0 +AUTO11, 0 +AUTO12, 0 +AUTO13, 0 +AUTO14, 0 +AUTO15, 0 +AUTO16, 0 +AUTO17, 0 + +/ +/ THE FOLLOWING ARE THE DATA FILES FOR THE TWO SPACE SHIPS +/ AS WELL AS CERTAIN OTHER PARAMETERS FOR CALCULATING POSITIONS +/ AND SO ON. THE ORDER OF THE LOCATIONS MUST BE PRESERVED +/ ALTHOUGH THE SIZE OF THE TABLES MAY BE VARIED +/ + + *20 + +ONEOUT, 0 /IF NON-ZERO CONTAINS REAMINING TIME OF EXPLOSION +ONECNT, 0 /NUMBER OF POINTS IN FIGURE TO BE DISPLAYED +ONEFLG, 0 /IN OR OUT OF NORMAL SPACE +ONETHE, 0 /ANGLE OF ORIENTATION ON SCREEN +ONEVEX, 0 /X COMPONENT OF VELOCITY +ONEVEY, 0 /Y COMPONENT OF VELOCITY +ONEPEX, 0 /X POSITION (12 BITS) +ONEPEY, 0 /Y POSITION (12 BITS) +ONESIN, 0 /SINE OF ANGLE +ONECOS, 0 /COSINE OF ANGLE +ONEFIN, 0 /SET WHEN EXPLOSION DIES OUT + +TWOOUT, 0 /SAME CONTENT AND ORDER +TWOCNT, 0 /AS ABOVE +TWOFLG, 0 +TWOTHE, 0 +TWOVEX, 0 +TWOVEY, 0 +TWOPEX, 0 +TWOPEY, 0 +TWOSIN, 0 +TWOCOS, 0 +TWOFIN, 0 + + +/ +/ THESE LOCATIONS ARE USED BY THE "VECTOR GENERATOR" IN +/ DISPLAYING THE FIGURES. A FOUR DOT VECTOR WILL BE DRAWN +/ FROM XONE,YONE TO XTWO,YTWO WITH STEPS OF SIZE DIXTEM,DIYTEM +/ + +XONEDS, 0 +YONEDS, 0 +XTWODS, 0 +YTWODS, 0 +DIXTEM, 0 +DIYTEM, 0 +DISCNT, 0 + + +/ +/ THE NEXT LOCATIONS ARE USED BY CALPOS TO DO A FAST +/ MULTIPLY TO HELP CALCULATE THE DISPLAY FILES. +/ +T10SIN, 0 +T20SIN, 0 +T30SIN, 0 +T10COS, 0 +T20COS, 0 +T30COS, 0 + +CALSIN, 0 +CALCOS, 0 + +/ +/ NOW COME THE VARIOUS ODDS AND ENDS ONE USUALLY FINDS ON +/ PAGE ZERO +/ + +SINE, SINEIN +COSINE, COSINI +MULT, MULTI +RSHIFT, SHIFTR +VECTOR, DISPLY +CALPOS, POSCAL +INTWRD, 0 +INTCNT, 0 +/CLOCK, 0 +HYPER, HYPSET +MESOUT, CHARS +THEADJ, THEAJI +VEESCL, VEELIM +ISHFT, DISHFT +RESET1, RESE1 +GAMOVR, 0 +ACCFLG, 0 +ACCPER, -30 +MEXP, -400 + +PROX, 0 +PROY, 0 +PROLIF, -360 +BUFTMP, 0 +ONEFIL, DISBUF +TWOFIL, DISBUF+40 + +P5, 5 +P10, 10 +P17, 17 +P20, 20 +P37, 37 +P40, 40 +P100, 100 +P132, 132 +P200, 200 +P400, 400 +P550, 550 +P3777, 3777 + +M4, -4 +M6, -6 +M10, -10 +M11, -11 +M264, -264 +M200, -200 +M400, -400 +M550, -550 + +IVCLDX, VCLDX +IVCLDY, VCLDY + +/ +/ THE PROGRAM MAY BE STARTED OR RESTARTED AT ANYTIME AT 0200. +/ THE DATA FILE ON PAGE ZERO IS CLEARED, ALL FLAGS INITIALIZED, +/ AND THE SR EXAMINED. IF THE SR=0 THE DISPLAY UPDATE ROUTINES +/ ARE SET TO PICK UP THE STATUS WORD FROM THE SR. IF THE SR +/ DOES NOT EQUAL ZERO, THE STATUS WORD IS READ FROM THE EIGHT +/ CONTINGENCY INPUTS ON THE BLUE RIBBON CONNECTOR OF THE AX08 +/ (XR OPTION ONLY). JUMP IS THEN TO THE DISPLAY +/ FILE UPDATE TO START OFF THE GAME. +/ + + *200 + +START, CLA CLL /START OR RESTART HERE ANY OLD TIME + DIXY /TO GET THE VC8-E STARTED ONCE + LAS /SR +/TMP SNA CLA + TAD SWRD /USE THE SR + TAD XROPT /USE THE BLUE RIBBON CONNECTOR + DCA COLDST /AND LEAVE IN THE TRAP LOCATION + +RESTRT, CLA CMA + XRCL + CLA CLL + + TAD P17 /FIRST CLEAR THE POSITION AND DATA + DCA AUTO10 /TABLES OF THE TWO SHIPS + TAD TABLEN + DCA AUTO11 + DCA I AUTO10 + ISZ AUTO11 + JMP .-2 + + TAD STRT1 /SET THE STARTING POSITIONS OF THE + DCA ONEPEX /TWO SHIPS + TAD STRT2 + DCA TWOPEX + TAD P37 /SET TRIG FUNCTIONS JUST IN CASE + DCA ONECOS + TAD P37 + DCA TWOCOS /ZERO DEGREES IS POINTING STRAIGHT UP + TAD ACCPER /SET COUNT FOR VELOCITY INCREASE + DCA ACCFLG + DCA ONEFIN /CLEAR ALL GAME END FLAGS + DCA TWOFIN + DCA GAMOVR + JMS I BUFSET /RESET ALL PROJECTILE DISPLAY BUFFERS + + + TCF /CLEAR OTHER REMAINING LIKELY FLAGS + PCF + RRB + + CLA CMA / ALL ONES + CLZE / CLEAR CLOCK CONFIG REGISTER + CLA + TAD CDELY / LOAD NEG DELAY + CLAB / LOAD TO CLOCK BUFFER + CLA + TAD CCNF / LOAD CLOCK CONFIG + CLOE / SET CONFIG BITS + + CLA CLL + JMP COLDST /AND GO TO IT + +CCNF, CR4+CMPROG+CION+COVSTAT / CLOCK CONFIGURATION +CDELY, -310 / COUNTER PRESET (200) + +/ +/ UPDATE IS REACHED WHENEVER THE PROGRAM IS STARTED OR THE +/ CLOCK COUNT OVERFLOWS INDICATING TIME TO RECALCULATE THE +/ THE DISPLAY FILES AND REFRESH THE DISPLAY. THE INTERUPT +/ COUNT IS RESTORED, THE STATUS WORD IS PICKED UP FROM EITHER +/ THE SR OR BRC, AND THE RECALCULATION PROCESS BEGUN. +/ + +UPDATE, CLA CLL /HERE ON CLOCK COUNT OVERFLOW. + /START NEXT SWEEP +COLDST, 0 /TRAP TO READ SR OR BRC + LAS /HERE FOR SR + DCA INTWRD /STORE TEMPORARILY + TAD INTWRD /MASK OUT LEFTMOST 4 BITS + RTR /FOR NUMBER ONE + RTR + AND LFTHAF + DCA INTTEM /AND STORE + TAD INTWRD /MASK OUT RIGHTMOST BITS FOR NUMBER TWO + AND RYTHAF + TAD INTTEM /ADD TOGETHER + JMP .+3 /AND CONTINUE + +CODST, XRIN /HERE FOR BRC - PICK UP AND CLEAR + XRCL + DCA INTWRD /CONTINUE + TAD M550 /RESTORE INTERUPT COUNT BEFORE NEXT + DCA INTCNT /UPDATE + ION /GET READY FOR THE NEXT CYCLE + TAD ACCFLG /ALLOW VELOCITY INCREASE THIS TIME? + IAC /ONLY WHEN ACCFLG=0 + SMA SZA + TAD ACCPER /IF ZERO, RESET COUNT + DCA ACCFLG + + JMP I .+1 /NOW GET DOWN TO WORK. + ONEUP + +BUFSET, SETBUF +TABLEN, AUTO17-CALCOS +INTTEM, 0 +LFTHAF, 0360 +RYTHAF, 0017 +STRT1, 1000 +STRT2, -1000 +SWRD, 2000-CODST +XROPT, JMP CODST + + + +/ +/ THIS IS THE INTERUPT SERVICE ROUTINE. MOST OF THE +/ INTERUPTS WILL BE FROM THE CRYSTAL CLOCK WHICH WILL BE +/ COUNTED AND UNLESS THE COUNT OVERFLOWS THE INTERUPT IS +/ DISMISSED IMMEDIATLY. IF THE COUNT OVER FLOWS, JMP IS TO +/ UPDATE WITH IOF. +/ +/ SPECIAL CASE IS KEYBOARD INTERUPT WHEN THE GAMOVR FLAG IS +/ SET IN WHICH CASE THE GAME IS RESTARTED. +/ +/ UNEXPECTED INTERUPTS ARE COUNTED AND AFTER ENOUGH OF THEM +/ HAPPEN THE PROGRAM HALTS. IF THIS HAPPENS RELOAD OR FIND THE +/ STRANGE FLAG +/ + +INTSER, DCA INTACC /HERE RIGHT AFTER INTERUPT - STORE + RAR /AC AND LINK + DCA INTLNK /FOR POSSIBLE CONTINUATION + CLSK /WAS IT THE CRYSTAL CLOCK? + JMP INTBUS /NO TRY SOMETHING ELSE + CLA IAC RTR /LOAD 4000 + CLSA /GET CLOCKSTATUS AND RESET FLAG + CLA CLL + JMP UPDATE /YES, GO TO IT + +INTBUS, KSF /HERE ON NON-CLOCK INTERUPT + JMP .+5 /NOT THE KEYBOARD + KCC /CLEAR KEYBOARD FLAG + TAD GAMOVR /IS THE GAMEOVER + SZA CLA + JMP RESTRT /YES, RESTART +/ TCF /NO, HELL WITH IT + ISZ INTGLH /COUNT ONE BADDIE + SKP + HLT /HALT IF TOO MANY BADDIES + +INTRET, CLA CLL /HERE TO DISMISS THE INTERUPT + TAD INTLNK + RAL + TAD INTACC + ION + JMP I 0 + +INTACC, 0 +INTLNK, 0 +INTGLH, 0 + + + +/ +/ NOW BEGINS THE GREAT UPDATE PROCEEDURE, FIRST FOR SHIP +/ NUMBER ONE (THE DELTA SHAPED SHIP WHICH APPEARS ON +/ THE LEFT AT THE START OF THE GAME). IF ALIVE THE STATUS +/ WORD (INTWRD) IS TESTED FOR REQUESTS FOR LEFT TURN, +/ RIGHT TURN, THRUST ON, AND LAUNCH PROJECTILE. THESE ACTIONS +/ MAY OR MAY NOT BE ACTED UPON DEPENDING ON COUNTS AND FLAGS. +/ WHEN THIS IS COMPLETE THE SAME OPERATION IS PERFORMED FOR +/ NUMBER TWO. +/ + + *400 + +ONEUP, TAD ONEFLG /FIRST SEE IF IT'S IN NORMAL SPACE + SNA + JMP ONEOK /YES IT IS + IAC /NO, BUT IS IT JUST COMING OUT? + SNA + TAD ONEFIN /YES, THROW BACK IN IF ALREADY DESTROYED + DCA ONEFLG /OTHERWISE JUST COUNT ONE + JMP I ITWOUP /AND GO TO FIX UP NUMBER TWO + +ONEOK, TAD ONEOUT /IN NORMAL SPACE - IS IT EXPLODING? + SZA CLA + JMP ONEFIG /IF YES, ALLOW NO CONTROLS + TAD TWOFIN /HAS THE ENEMY BEEN VANQUISHED? + SZA CLA + JMS I ONEWN /YES, SIGNAL VICTORY + TAD INTWRD /NOW BEGIN TEST OF REQUEST + AND OP300 /LEFT AND RIGHT TURN TOGETHER MEAN HYPERSPACE! + TAD OM300 /TEST BITS 4 AND 5 + SZA CLA + JMP ONELEF /NOPE, CONTINUE + CMA /YES, CALL HYPER WITH AC=-1 FOR NUMBER ONE + JMP I HYPER +ONELEF, TAD INTWRD /REQUEST FOR LEFT TURN? + AND P200 /TEST BIT 4 + SNA CLA + JMP ONERYT /NO + CLA CLL CMA /YES DECREMENT ANGLE + JMP ONEFIG + +ONERYT, TAD INTWRD /HOW ABOUT RIGHT TURN + AND P100 /TEST BIT 5 + SZA CLA + IAC /YES, INCREMENT ANGLE + +ONEFIG, TAD ONETHE /PICK UP AND ADJUST ANGLE (MAYBE) + JMS I THEADJ /BRING BACK WITHIN LIMITS OF TRIG FUNCTIONS + DCA ONETHE /AND STORE + TAD ONETHE /FIND THEM TRIG FUNCTIONS + JMS I SINE /AND STORE ONCE AND FOR ALL + DCA ONESIN /IN THE APPROPRIATE PLACES + TAD ONETHE + JMS I COSINE + DCA ONECOS + TAD ONEOUT /DO NOT ALLOW THRUST IF EXPLODING + SZA CLA + JMP ONEVEL + + + + +ONEMOV, TAD ACCFLG /ALLOW ANY VELOCITY INCREASE THIS CYCLE? + SZA CLA + JMP ONEVEL /NOPE + TAD INTWRD /YES, ANY REQUESTED? + AND P40 /TEST BIT 6 + SNA CLA + JMP ONEVEL /NONE REQUESTED + TAD ONECOS /YES, ADD IN VELOCITY INCREMENT DEPENDING + TAD ONEVEY /ON ORIENTATION + JMS I VEESCL /BUT DO NOT ALLOW TO EXCEED MAXIMUM + DCA ONEVEY /AND STORE + TAD ONESIN /DO THE SAME FOR THE OTHER (X) COMPONENT + TAD ONEVEX + JMS I VEESCL + DCA ONEVEX + + + +ONEVEL, TAD ONEVEX /NOW UPDATE THE POSITION WITH THE + JMS I ISHFT /VELOCITY COMPONENTS DIVIDED BY 4 + JMS I ISHFT /THIS MAINTAINS MAXIMUM RESOLUTION + TAD ONEPEX + DCA ONEPEX /IGNORE ANY OVERFLOW + TAD ONEVEY /DO THE SAME FOR Y COORDINATE + JMS I ISHFT /AND VELOCITY COMPONENT + JMS I ISHFT + TAD ONEPEY + DCA ONEPEY + TAD ONEOUT /DO NOT ALLOW PROJECTILE LAUNCH IF + SZA CLA /EXPLODING + JMP I ITWOUP + + + + +ONELNC, TAD LNC1FG /OTHERWISE, SEE IF RELOAD IS FINISHED + SNA CLA + JMP .+3 + ISZ LNC1FG /NO, CONTINUE RELOADING + JMP I ITWOUP /AND EXIT + TAD INTWRD /YES, READY TO LAUNCH, TRIGGER BEEN PULLED? + AND P20 /TEST BIT7 + SNA CLA + JMP I ITWOUP /NO, WAIT FOR A BETTER SHOT + /.....I GUESS..... + TAD PROLIF /YES, SET CYCLE COUNT FOR THIS LAUNCH + DCA I AUTO16 /AUTO16 ALWAYS POINTS AT THE NEXT SLOT IN THE FILE + TAD ONEVEX /ADD SHIPS VELOCITY (SCALED OF COURSE) + JMS I ISHFT /TO ORIENTATION TO EXTABLISH X VELOCITY + JMS I RSHIFT /COMPONENT OF PROJECTILE + TAD ONESIN + JMS I RSHIFT /AND STICK IT IN THE FILE + DCA I AUTO16 + TAD ONESIN /MOVE THE LAUNCH POINT OUTSIDE THE + CLL RTL /SHIP OF ORIGIN + TAD ONEPEX + DCA I AUTO16 /AND STORE X POSITION + TAD ONEVEY /NOW DO THE SAME FOR THE Y VELOCITY AND + JMS I ISHFT /POSITION + JMS I RSHIFT + TAD ONECOS + JMS I RSHIFT + DCA I AUTO16 + TAD ONECOS + CLL RTL + TAD ONEPEY + DCA I AUTO16 + TAD M200 /START RELOAD CYCLE + DCA LNC1FG + JMS I RESET1 /RESET AUTO16 TO NEXT HOLE + + JMP I .+1 /NOW TO FIX IT UP WITH NUMBER TWO +ITWOUP, TWOUP + +LNC1FG, 0 /PROJECTILE LAUNCH ENABLE + +OP300, 300 /HYPERSPACE REQUEST CODE BITS 4 AND 5 +OM300, -300 +ONEWN, ONEWIN /POINTER TO VICTORY MESSAGE + + + +/ +/ HERE BEGINS THE UPDATE PROCEEDURE FOR SHIP NUMBER TWO. +/ OPERATION IS THE SAME AS FOR NUMBER ONE ABOVE. +/ + + *600 + +TWOUP, TAD TWOFLG /FIRST SEE IF IT'S IN NORMAL SPACE + SNA + JMP TWOOK /YES, CONTINUE + IAC /NO, BUMP COUNT AND TEST FOR REENTRY + SNA + TAD TWOFIN /IF RE-ENTERING THROW BACK OUT IF FINISHED + DCA TWOFLG /AND CONTINUE + JMP I IONEST + +TWOOK, TAD TWOOUT /HERE WHEN READY TO UPDATE IN NORMAL SPACE + SZA CLA /IS IT EXPLODING? + JMP TWOFIG /YES DO NOT ALLOW HYPERSPACE + TAD ONEFIN /DID WE JUST WIN? + SZA CLA + JMS I TWOWN /YES ENABLE END OF GAME MESSAGE + TAD INTWRD /TEST FOR HYPERSPACE REQUEST + AND OP14 + TAD OM14 /BITS 8 AND 9 MUST BE SET + SNA CLA + JMP I HYPER /8 AND 9 SET. ENTER HYPER ROUTINE WITH AC=0 + /FOR SHIP NUMBER 2 +TWOLEF, TAD INTWRD /TEST FOR LEFT TURN - BIT 8 + AND P10 + SNA CLA + JMP TWORYT /NOT SET + CLA CLL CMA /SET, DECREMENT TWOTHE BY 1 DEGREE + JMP TWOFIG /SKIP TEST FOR RIGHT TURN + +TWORYT, CLA CLL IAC RTL /TEST FOR RIGHT TURN - BIT 9 + AND INTWRD + SZA CLA + IAC /IF SET INCREMENT TWOTHE BY 1 DEGREE + +TWOFIG, TAD TWOTHE /UPDTAE TWOTHE + JMS I THEADJ /BRING TO WITHIN LIMITS OF SINE,COSINE + DCA TWOTHE /AND STORE + TAD TWOTHE + JMS I SINE /CALCULATE SINE AND COSINE FUNCTIONS + DCA TWOSIN /AND STORE IN DATA TABLE + TAD TWOTHE + JMS I COSINE + DCA TWOCOS + TAD TWOOUT /DO NOT ALLOW VELOCITY CHANGE IF EXPLODING + SZA CLA + JMP TWOVEL + + + + +TWOMOV, TAD ACCFLG /NOW FOR ACCELERATION. TEST TO SEE IF ALLOWED + SZA CLA /DURING THIS UPDATE CYCLE + JMP TWOVEL /NOPE + CLL IAC RAL /YES, TEST FOR BIT 2 SET + AND INTWRD + SNA CLA + JMP TWOVEL /NOT SET + + TAD TWOSIN /UPDATE X VELOCITY COMPONENT BY SINE OF + TAD TWOVEX /ANGLE OF ORIENTATION + JMS I VEESCL /AND SCALE TO NOT EXCEED MAX + DCA TWOVEX /UPDATE Y COMPONENT WITH COSINE + + TAD TWOCOS + TAD TWOVEY + JMS I VEESCL + DCA TWOVEY + + + +TWOVEL, TAD TWOVEX /NOW UPDATE THE POSITION WITH THE VELOCITY + JMS I ISHFT /COMPONENTS/16 + JMS I ISHFT + TAD TWOPEX + DCA TWOPEX + TAD TWOVEY + JMS I ISHFT + JMS I ISHFT + TAD TWOPEY + DCA TWOPEY + TAD TWOOUT + SZA CLA + JMP I IONEST + + + + +TWOLNC, TAD LNC2FG /NOW CHECK FOR PROJECTILE LAUNCH. FIRST + SNA CLA /TEST TO SEE IF RELOAD COMPLETE + JMP .+3 + ISZ LNC2FG /NO, COUNT ONE CYCLE AND EXIT + JMP I IONEST + IAC /YES, TEST TRIGGER BIT 11 + AND INTWRD + SNA CLA + JMP I IONEST /NOT SET, HELL WITH IT + + TAD PROLIF /OK, SET PROJECTILE LIFE + DCA I AUTO16 /AUTO16 IS ALWAYS POINTING AT THE NEXT SLOT + TAD TWOVEX /ADD SHIPS VELOCITY + JMS I ISHFT /(ADJUSTED) + JMS I RSHIFT + TAD TWOSIN /TO THAT OF PROJECTILE - AGAIN X COMPONENT + JMS I RSHIFT /FROM SINE OF ANGLE OF ORIENTATION + DCA I AUTO16 + TAD TWOSIN /SET INITIAL POSITION TO BE JUST AHEAD + CLL RTL /OF THE SHIP + TAD TWOPEX /X COMPONENT + DCA I AUTO16 + TAD TWOVEY /NOW THE Y COMPONENTS FROM Y VELOCITY + JMS I ISHFT /Y POSITION AND COSINE + JMS I RSHIFT + TAD TWOCOS + JMS I RSHIFT + DCA I AUTO16 + TAD TWOCOS + CLL RTL + TAD TWOPEY + DCA I AUTO16 + TAD M200 + DCA LNC2FG /200 CYCLES OF RELOAD + JMS I RESET1 /DRINK LEADEN DEATH, NUMBER ONE! + + JMP I .+1 /FINAL EXIT TO DISPLAY FILE CALCULATIONS +IONEST, ONESET + +LNC2FG, 0 /RELOAD COUNT + +OP14, 14 /HYPERSPACE CODE +OM14, -14 +TWOWN, TWOWIN + + + +/ +/ HERE BEGINS THE DISPLAY CALCULATIONS FOR THE TWO SHIPS. AT +/ THIS POINT ONLY THE POSITION AND ORIENTATION OF EACH VESSEL +/ IS ONF INTEREST SINCE THE VELOCITY AND ALL THAT HAVE ALREADY +/ BEEN TAKEN CARE OF. FOR THE BOTH SHIPS THE DISPLAY FILES ARE +/ CALCULATED AS A SERIES OF PAIRS OF X,Y COORDINATES. BETWEEN +/ EACH PAIR OF POINTS A FOUR POINT VECTOR WILL BE DRAWN. THE +/ ACTUAL COORDINATES ARE CALCULATED AS DISPLACEMENTS +/ FROM THE CENTRAL PSOTION OF THE SHIP, TAKING INTO ACCOUNT THE +/ ANGLE OF ORIENTATION. THE FORMULAS FOLLOWED ARE: +/ +/ X(POINT)=X(BASE)+X(REL)*COS[THE]+Y(REL)*SINE[THE] +/ +/ Y(POINT)=Y(BASE)+Y(REL)*COS[THE]-X(REL)*SINE[THE] +/ +/ WHERE SINE[THE] AND COS[THE] ARE THE FUNCTIONS OF THE +/ ANGLE OF ORIENTATION, X(BASE) AND Y(BASE) ARE THE +/ COORDINATES OF THE SHIPS POSITION AND X(REL) AND Y(REL) +/ CORRESPOND TO DISPLACEMENT PAIRS DEPENDING ON THE SHAPE +/ OF THE FIGURE. ALL X AND Y RELS LIE WITHIN THE RANGE 0-3 AND +/ THERE FORE ALL NECESSARY DISPLACEMENTS FROM BASE COORDINATES +/ MAY BE CALCULATEDFROM DIFFERENT COMBINATIONS OF T10SIN, T20COS +/ ETC. THESE VALUES ARE CALCULATED BY A CALL TO POSCAL WITH THE SINE +/ AND COSINE OF THE ANGLE OF INTEREST IN CALSIN AND CALCOS. +/ +/ FOLLOWING THIS METHOD ANY FIGURE DESCRIBABLE WITH A 7 BY 7 +/ MATRIX OF POINTS MAY BE QUICKLY CALCULATED. +/ +/ BEGINNING AT ONESET DIFFERENT DISPLACEMENT PAIRS ARE CALCULATED +/ AND DEPOSITIED THROUGH AUTO10 TO FORM THE DISPLAY FILE FOR SHIP NUMBER ONE. +/ + + + *1000 + +ONESET, CLA CLL /BEGIN DISPLAY FILE FOR NUMBER ONE + TAD ONEFLG /DONT BOTHER IF NOT IN NORMAL SPACE + SZA CLA + JMP I ITWOST + TAD ONESIN /SET UP FOR MATRIX COMPONENT CALCULATIONS + DCA CALSIN + TAD ONECOS + DCA CALCOS + JMS I CALPOS /CALL THE CALCULATOR + +/ +/ CONSIDER THE 7 BY 7 MATRIX OF DISPLACEMENT POINTS WITH THE +/ CENTER AT 0,0 CORRESPONDING TO THE SHIPS POSITION. A SERIES +/ OF POINTS IS NOW DESCRIBED AROUND THIS CENTER USING THE +/ MULTIPLES OF THE TRIG FUNCTIONS JUST CALCULATED +/ SO THAT ANY POINT ON THE OUTLINE IS DESCRIBABLE AS X,Y +/ DISPLACED BY X,Y OF THE SHIP ITSELF +/ + + TAD ONEFIL /SET UP AUTO10 AS THE DISPLAY FILE + DCA AUTO10 /POINTER + TAD ONEPEX /THE FIRST POINT OF THE OUTLINE IS + TAD T30SIN + DCA I AUTO10 / 0,3 OR TOP CENTER + TAD ONEPEY + TAD T30COS + DCA I AUTO10 + + TAD T10COS + CIA /THE SECOND IS + TAD ONEPEX + DCA I AUTO10 / -1,0 + TAD T10SIN /OR JUST LEFT OF DEAD CENTER + TAD ONEPEY /AND SO ON + DCA I AUTO10 + + TAD T30SIN + TAD T30COS /THE THIRD POINT IS + CIA + TAD ONEPEX / -3,-3 + DCA I AUTO10 + TAD T30COS /OR BOTTOM LEFT HAND CORNER + CIA + TAD T30SIN + TAD ONEPEY + DCA I AUTO10 + + + + + TAD T10SIN + CIA /FOURTH POINT + TAD ONEPEX + DCA I AUTO10 / 0,-1 + TAD T10COS + CIA /OR JUST BELOW CENTER + TAD ONEPEY + DCA I AUTO10 + +FLAM1, TAD INTWRD /TEST FOR POWER ON. IF ON, DRAW THE + AND P40 /FLAME WITH AN EXTRA POINT SOME + SNA CLA /DISTANCE DIRECTLY BELOW THE SHIP + JMP ONECON /POWER NOT ON - CONTINUE + TAD ONEOUT /DO NOT ALLOW IF EXPLODING + SZA CLA + JMP ONECON + + TAD ONFG1 /USE ONFG1 TO TURN THE FLAME ON AND + SNA /OFF TO MAKE IT FLICKER. DISPLAY THE + CLA CLL CMA RAL /FLAME ONE TIME OUT OF THREE + DCA ONFG1 + + ISZ ONFG1 + JMP ONECON /ONE OUT OF THREE TIMES THIS WILL SKIP + + TAD ONFG2 /VARY ALSO THE LENGHT OF THE FLAME + CMA /WITH LONG SHORT LONG SHORT + DCA ONFG2 + + TAD ONFG2 /TIP OF FLAME AT EITHER + SNA CLA + TAD T10SIN / 0,-4 OR + TAD T30SIN / 0,-3 + CIA + TAD ONEPEX + DCA I AUTO10 + TAD ONFG2 + SNA CLA + TAD T10COS + TAD T30COS + CIA + TAD ONEPEY + DCA I AUTO10 + + TAD T10SIN + CIA + TAD ONEPEX /RETURN DISPLAY TO 0,-1 + DCA I AUTO10 + TAD T10COS + CIA + TAD ONEPEY + DCA I AUTO10 + CLA CLL CMA RAL /ADD -2 TO POINT COUNT + + + + +ONECON, TAD M6 /SET POINT COUNT TO -6 OR -8 + DCA ONECNT + + TAD T30SIN /CONTINUE WITH DISPLAY FILE - THIS POINT + CIA + TAD T30COS / AT 3,-3 + TAD ONEPEX / + DCA I AUTO10 /OR LOWER RIGHT HAND CORNER + TAD T30SIN + TAD T30COS + CIA + TAD ONEPEY + DCA I AUTO10 + + TAD T10COS /NEXT + TAD ONEPEX / + DCA I AUTO10 / 1,0 + TAD T10SIN / + CIA / OR JUST RIGHT OF CENTER + TAD ONEPEY + DCA I AUTO10 + + TAD T30SIN /FINALLY BACK TO + TAD ONEPEX / + DCA I AUTO10 / 0,3 + TAD T30COS / + TAD ONEPEY / TOP CENTE + DCA I AUTO10 + + JMP I ITWOST /NOW FOR NUMBER TWO +ITWOST, TWOSET + +ONFG1, 0 /USED TO COUNT FLICKERS +ONFG2, 0 /SHORT OR LONG FLAG + + + +/ +/ HERE BEGINS THE DISPLAY FILE GENERATOR FOR SHIP TWO. +/ IT WORKS JUST LIKE THE ONE FOR NUMBER ONE BUT WITH +/ DIFFERENT DISPLACEMENT PAIRS AND TWO EXTRA POINTS +/ + + *1200 + +TWOSET, CLA CLL /DONT BOTHER IF NOT IN NORMAL SPACE + TAD TWOFLG + SZA CLA + JMP I IFILDS + TAD TWOSIN /SET UP TO HAVE DISPLACEMENT INCREMENTS + DCA CALSIN /CALCULATED + TAD TWOCOS + DCA CALCOS + JMS I CALPOS + + TAD TWOFIL /SET AUTO10 TO POINT TO SECOND DISPLAY + DCA AUTO10 /FILE + TAD T30SIN /FIRST POINT AT + TAD TWOPEX / + DCA I AUTO10 / 0,3 + TAD T30COS / + TAD TWOPEY / OR TOP CENTER + DCA I AUTO10 + + TAD T20COS + CIA + TAD T20SIN + TAD TWOPEX + DCA I AUTO10 + TAD T20SIN + TAD T20COS /SECOND POINT + TAD TWOPEY / -2,2 + DCA I AUTO10 + + TAD T20COS /THIRD POINT + CIA / -2,0 + TAD TWOPEX + DCA I AUTO10 + TAD T20SIN + TAD TWOPEY + DCA I AUTO10 + + + + TAD T20COS + TAD T30SIN + CIA + TAD TWOPEX /FOURTH POINT + DCA I AUTO10 / -2,-3 + TAD T30COS + CIA + TAD T20SIN + TAD TWOPEY + DCA I AUTO10 + + + + + TAD T20SIN + CIA /NEXT + TAD TWOPEX / 0,-2 + DCA I AUTO10 + TAD T20COS + CIA + TAD TWOPEY + DCA I AUTO10 + +FLAM2, CLA CLL IAC RAL /NOW THE FLAME BIT. CHECK FOR POWER ON + AND INTWRD + SNA CLA + JMP TWOCON /NO, FORGET IT + TAD TWOOUT /NOT ALLOWED IF EXPLODING + SZA CLA + JMP TWOCON + + TAD TWFG1 /SET THE 1-3 FLICKER AS WITH #1 + SNA + CLA CLL CMA RAL + DCA TWFG1 + + ISZ TWFG1 /ALSO THE LENGHT VARIATION + JMP TWOCON + + TAD TWFG2 /EVERY OTHER TIME LONG + CMA + DCA TWFG2 + /FLAME TIP AT EITHER + TAD TWFG2 / 0,-3 + SNA CLA /OR + TAD T20SIN / 0,-5 + TAD T30SIN + CIA + TAD TWOPEX + DCA I AUTO10 + TAD TWFG2 + SNA CLA + TAD T20COS + TAD T30COS + CIA + TAD TWOPEY + DCA I AUTO10 + + TAD T20SIN /NOW BACK UP TO THE SHIP + CIA + TAD TWOPEX + DCA I AUTO10 + TAD T20COS + CIA + TAD TWOPEY + DCA I AUTO10 + + CLA CLL CMA RAL /ADD -2 TO POINT COUNT + + + + +TWOCON, TAD M10 /SET POINT COUNT TO -8 OR -10 + DCA TWOCNT + + TAD T30SIN /CONTINUE WITH DISPLAY FILE + CIA /NEXT POINT AT 2,-3 + TAD T20COS + TAD TWOPEX + DCA I AUTO10 + TAD T30COS + TAD T20SIN + CIA + TAD TWOPEY + DCA I AUTO10 + + + + TAD T20COS /NEXT POINT + TAD TWOPEX / + DCA I AUTO10 / 2,0 + TAD T20SIN + CIA + TAD TWOPEY + DCA I AUTO10 + + TAD T20COS /AND THE NEXT AT + TAD T20SIN + TAD TWOPEX / 2,2 + DCA I AUTO10 + TAD T20SIN + CIA + TAD T20COS + TAD TWOPEY + DCA I AUTO10 + + TAD T30SIN + TAD TWOPEX + DCA I AUTO10 + TAD T30COS /AND THE LAST AT + TAD TWOPEY / + DCA I AUTO10 / 0,3 + + JMP I IFILDS /NOW TO DISPLAY THE WHOLE MESS +IFILDS, FILDIS + +TWFG1, 0 /FLIK THE FLAME +TWFG2, 0 /LONG OR SHORT + + + +/ +/ HERE TO DISPLAY THE TWO SHIPS. CHECK FIRST FOR COLLISION +/ AND THEN SET THE TWO PAIRS OF COORDENATES FOR THE END +/ POINTS AND CALL THE "VECTOR GENERATOR" TO DRAW THE DOTS +/ IN BETWEEN. WHEN THE COUNT OVERFLOWS DO THE SAME FOR +/ NUMBER TWO. THEN EXIT TO DISPLAY ALL THE PROJECTILES. +/ + + *1400 + +FILDIS, CLA CLL /ALL SET TO GO + JMS I COLIDE /TEST FOR COLLISION FIRST +/ DSB 1 /IF NO COLLISION + TAD ONEFLG /SKIP NUMBER ONE IF NOT IN NORMAL + SZA CLA /SPACE + JMP TWODIS + + TAD ONEFIL /SET UP POINTERS TO DISPLAY FILE + DCA AUTO10 /FOR NUMBER ONE + TAD ONECNT /ALONG WITH VECTOR COUNT + DCA AUTO11 + TAD I AUTO10 /SET OUT THE FIRST POINT PAIR + DCA XONEDS + TAD I AUTO10 + DCA YONEDS + TAD ONEOUT /NORMAL DISPLAY OR EXPLOSION? + SZA CLA + JMP I IONEEX /GO ELSE WHERE FOR EXPLOSION + +FILONE, TAD I AUTO10 /STEP TO NEXT PAIR OF POINTS + DCA XTWODS /SET X AND Y TO NEW POINT + TAD I AUTO10 + DCA YTWODS + JMS I VECTOR /CALL THE DOT DRAWING MACHINE + ISZ AUTO11 + SKP /COUNT + JMP TWODIS /DO NUMBER TWO ON OVERFLOW + TAD XTWODS /SWAP POINTS FOR NEXT PAIR + DCA XONEDS + TAD YTWODS /THE GENERATOR DRAWS FROM ONE + DCA YONEDS /TOWARDS TWO + JMP FILONE + + + + +TWODIS, TAD TWOFLG /HERE TO DO NUMBER TWO + SZA CLA /BUT NOT IF IN HYPER SPACE + JMP I IPRODS + + TAD TWOFIL /SET UP FILE POINTER AS IN ONE + DCA AUTO10 + TAD TWOCNT /AND THE COUNT + DCA AUTO11 + TAD I AUTO10 /I SUPPOSE THIS COULD BE A SUBROUTINE TOO + DCA XONEDS + TAD I AUTO10 + DCA YONEDS + TAD TWOOUT /IS IT EXPLODING? + SZA CLA + JMP I ITWOEX /YES, HOW EXCITING + +TWDLOP, TAD I AUTO10 /NO HOW DULL, STICK IN NEXT PAIR OF + DCA XTWODS /POINTS + TAD I AUTO10 + DCA YTWODS /AND CALL THE VECTOR SEQUENCE + JMS I VECTOR + ISZ AUTO11 + JMP .+3 + + JMP I .+1 /WHEN COUNT OVERFLOWS GO ON TO +IPRODS, PRODIS /DO THE PROJECTILE THING + + TAD XTWODS /OTHERWISE SWAP ON TO THE NEXT PAIR + DCA XONEDS /OF POINTS + TAD YTWODS + DCA YONEDS + JMP TWDLOP + +COLIDE, COLLID +IONEEX, ONEEXP +ITWOEX, TWOEXP + + + +/ +/ THIS IS THE SO CALLED "VECTOR GENERATOR" WHICH DRAWS A +/ SERIES OF DOTS FROM XONEDS,YONEDS TO XTWODS,YTWODS. +/ THE COORDINATE COMPONENTS ARE DIVIDED INTO FOURTHS AND +/ FOUR DOTS DRAWN ON THE SCOPE SCREEN. NOTE THAT NO DOT +/ IS DRAWN AT XONEDS,YONEDS. THIS IS COMPENSATED FOR ELSEWHERE. +/ + +DISPLY, 0 /ENTER TO DRAW A FOUR POINT VECTOR + CLA + TAD XONEDS /FROM XONEDS,YONEDS + CIA /TO XTWODS,YTWODS + TAD XTWODS /DIVIDE COORDINATE DIFERENCES INTO + JMS DISHFT /FOURTHS + DCA DIXTEM /AND STORE INCREMENT + TAD YONEDS + CIA + TAD YTWODS + JMS DISHFT /FOURTHS + DCA DIYTEM + TAD M4 /FOR FOUR DOTS + DCA DISCNT + +DISLOP, TAD XONEDS /ADD INCREMENT TO CURRENT X AND Y + TAD DIXTEM + DCA XONEDS /NOTE THAT THIS ROUTINE DESTROYS + TAD YONEDS /XONEDS AND YONEDS + TAD DIYTEM + DCA YONEDS + TAD XONEDS +/ RTR /DIVIDE BY 8 TO FIT SCREEN SIZE +/ RAR + DXC DXL /SET X VALUE + CLA + TAD YONEDS /DO THE SAME FOR Y +/ RTR +/ RAR + DYC DYL DIS /AT LAST SOMETHING TO SEE!! + CLA + ISZ DISCNT /DONE YET? + JMP DISLOP /NOPE + JMP I DISPLY /YUP + + +DISHFT, 0 /A GENERALIZED SHIFT ROUTINE CALLED + CLL /FROM EVERYWHERE TO DIVIDE THE + SPA /AC BY FOUR WITH AN ASR RIGHT + CML IAC /NOTE THAT NEGATIVE NUMBERS ARE + RAR /ROUNDED UPWARDS (TOWARD ZERO) + CLL /TO MAKE IT COME OUT RIGHT + SPA + CML IAC /EVEN SO THERE ARE SOME ROUNDING ERRORS + RAR /SOMEWHERE. SO MUCH FOR 12 BIT MACHINES + JMP I DISHFT + + + +/ +/ HERE TO DISPLAY ALL THE PROJECTILES AND TEST FOR HITS. +/ THE PROJECTILE DISPLAY FILE IS SEARCHED FOR PROJECTILES WITH +/ NON-ZERO COUNTS AND WHEN ONE IS FOUND THE POSITION IS +/ UPDATED BY THE VELOCITY, THE POINT DISPLAYED AND TESTED FOR +/ A HIT. +/ + + *1600 + +PRODIS, CLA CLL / BEGIN DISPLAY OF THE PROJECTILES + TAD BUFST /POINT TO BEGINNING OF DISPLAY FILE + DCA BUFTMP +/ DSB 2 /SET EXTRA BRIGHT FOR SINGLE POINTS + +PROLOP, TAD I BUFTMP /PICK UP NEXT COUNT + SNA + JMP EXPIRE /THIS ONE IS DEAD - GO TO THE NEXT + IAC /INCREMENT COUNT AND REPLACE + DCA I BUFTMP + ISZ BUFTMP /BUMP POINTER TO X VELOCITY + TAD I BUFTMP + ISZ BUFTMP /THEN TO XPOSITION AND UPDATE X POSITION + TAD I BUFTMP /WITH THE VELOCITY WHICH IS CONSTANT + DCA I BUFTMP + TAD I BUFTMP + DCA PROX /AND STORE X POSITION FOR DISPLAY AND TEST + ISZ BUFTMP /NOW TO Y POSITION AND VELOCITY + TAD I BUFTMP + ISZ BUFTMP + TAD I BUFTMP /SAME LITTLE GAME + DCA I BUFTMP + TAD I BUFTMP + DCA PROY /STORE THE NEW Y VALUE + + TAD PROX /DISPLAY THE POINT WITH +/ RTR /THE SAME SHIFT AS FOR THE SHIPS +/ RAR /FOR THE SMALL SCREEN + DXC DXL + CLA + TAD PROY +/ RTR / +/ RAR + DYC DYL DIS /THERE IT IS!! + CLA + JMS I CHKOUT /TEST FOR A HIT + ISZ BUFTMP /MOVE POINTER ON AND TEST FOR END + TAD BUFTMP /OF BUFFER + TAD BUFLIM + SZA CLA + JMP PROLOP /NOT AT END - CONTINUE + + +/ +/ HERE AT THE END OF THE PROJECTILE DISPLAY. IF THE GAMOVR +/ FLAG IS SET, GO ON TO THE MESSAGE DISPLAY - VICTORY LAP +/ SECTION. OTHERWISE PICK UP THE REMAINING CLOCK COUNT +/ TO GIVE THE FANS SOMETHING TO LOOK AT, AND MOVE THE +/ ELECTRON BEAM TO A LOWER CORNER. THE COUNT DISPLAYED +/ IN THE AC IS THE NUMBER OF 100 USEC CLOCK TICKS REMAINING +/ WHEN THIS CODE IS REACHED BEFORE THE NEXT UPDATE WOULD +/ BEGIN. TURNS OUT THAT ROUGHLY 2/3 OF THE CPU IS LEFT +/ OVER SHOULD ANYONE WANT TO DO ANYTHING VERY FANCY. +/ + + +FINISH, TAD GAMOVR /IS THIS THE VICTORY LAP OR WHAT? + SZA CLA + JMP I ENDGAM /YES, GO TO PUT UP THE MESSAGE +/ TAD M400 /MOVE THE BEAM OFF SCREEN +/ DYC DYL + CLA CLL +/ DXC DXL + TAD INTCNT /PICK UP THE COUNT + CIA + JMP . + +ENDGAM, JOBLOP + + +EXPIRE, TAD BUFTMP /HERE TO ADVANCE THE BUFFER + TAD P5 /POINTER TO THE NEXT PROJECTILE + DCA BUFTMP /UNLESS THE END + TAD BUFTMP /OF THE BUFFER + TAD BUFLIM /IS REACHED + SZA CLA /IN WHICH CASE + JMP PROLOP /IT + JMP FINISH /QUITS + +BUFST, DISBUF+101 +BUFLIM, -DISBUF-175 +CHKOUT, CHECK + +RESE1, 0 /THIS IS CALLED TO SET THE POINTER + TAD MRES /(AUTO16) TO THE NEXT FREE SLOT + DCA RESCNT /FOR A PROJECTILE LAUNCH. 12 POSSIBLE + +RESLOP, TAD RESPNT /MOVE THE POINTER TO THE NEXT SLOT + TAD P5 + DCA RESPNT + TAD RESPNT /RESTE IF AT END OF BUFFER + TAD BUFLIM + SZA CLA + JMP RESCON + TAD BUFST + DCA RESPNT + +RESCON, TAD I RESPNT /FIND A HOLE YET? + SNA CLA + JMP RESFND /YES, SET UP AUTO16 + ISZ RESCNT /NO COUNT + JMP RESLOP /AND TRY AGAIN + HLT /NO HOLES AT ALL? + +RESFND, CMA /BACK THE POINTER FOR AUTO INDEXING + TAD RESPNT + DCA AUTO16 + JMP I RESE1 + +MRES, -14 +RESCNT, 0 +RESPNT, 0 + +SETBUF, 0 + CMA /THIS ROUTINE IS CALLED FROM THE + TAD BUFST /STARTING SEQUENCE TO INITIALIZE ALL + DCA AUTO16 /THE BUFFER POINTERS AND SO ON + TAD BUFST + DCA BUFTMP + TAD BUFST + DCA RESPNT + TAD BUFST + DCA SETPNT +SETLOP, DCA I SETPNT + ISZ SETPNT + TAD SETPNT + TAD BUFLIM + SZA CLA + JMP SETLOP + JMP I SETBUF + +SETPNT, 0 + + + +/ +/ THIS HERE NOW THING CHECKS THE COORDINATES OF THE MOST RECENTLY +/ DISPLAYED PROJECTILE AGAINST THOSE OF THE SHIPS ON THE SCREEN. +/ IF WITH A COLLISION LIMIT A HIT IS RECORDED AND THE LIFE +/ COUNT OF THE PROJECTILE ZEROED TO REMOVE IT. A HIT SHIP +/ IS SUITABLY FLAGGED +/ + + *2000 + +CHECK, 0 /HERE TO TEST FOR A PROJECTILE HIT + TAD ONEFLG /CANT HIT SOMETHING IN HYPERSPACE + SZA CLA + JMP CHECK2 + TAD ONEOUT /OR SOMETHING THAT'S BEEN HIT + SZA CLA + JMP CHECK2 + + TAD PROX /CHECK X COORDINATES OF SHIP ONE + CIA /AND PROJECTILE + TAD ONEPEX /THIS SORT OF THING IS WHY THE + SPA /COORDINATES HAVE TO BE MAINTAINED TO 12 + CIA /BITS + TAD LIMIT /CLOSE ENOUGH? + SMA CLA + JMP CHECK2 /IF X ISN' CLOSE ENOUGH THEN NO HIT + TAD PROY /X WAS CLOSE ENOUGH, HOW ABOUT Y? + CIA + TAD ONEPEY + SPA + CIA + TAD LIMIT + SMA CLA + JMP CHECK2 /NO HIT + + TAD MEXP /DEPOSIT EXPLOSION COUNT IN ONEOUT + DCA ONEOUT /ALL THAT IS NECESSARY + JMS CUTOUT /REMOVE PROJECTILE + + + + +CHECK2, TAD TWOFLG /NO HIT ON NUMBER ONE, TRY NUMBER TWO + SZA CLA + JMP I CHECK /BUT NOT IF IN HYPERSPACE + TAD TWOOUT /OR IF ALREADY HIT + SZA CLA + JMP I CHECK + + TAD PROX /CHECK X'S FIRST + CIA + TAD TWOPEX + SPA /GET ABSOLUTE VALUE OF DIFFERENCE + CIA + TAD LIMIT /AND TEST MAGNITUDE AGAINST PROXIMITY + SMA CLA /LIMIT + JMP I CHECK /NOWHERE NEAR CLOSE + + TAD PROY /NYAH, NYAH + CIA /TRY THE Y'S + TAD TWOPEY + SPA + CIA /ABSOLUTE VALUE OF DIFFERENCE + TAD LIMIT + SMA CLA + JMP I CHECK /CLEAN MISS! + + TAD MEXP /HIT ON TWO - END EVERYTHING BY SETTING + DCA TWOOUT /TWOOUT TO NON-ZERO EXPLOSION COUNT + JMS CUTOUT + JMP I CHECK /EXIT AFTER DESTOYING PROJECTILE + +LIMIT, -120 /PROXIMITY LIMIT FOR WHAT CONSTITUTES A HIT + +CUTOUT, 0 /THIS ROUTINE ZEROES OUT THE MOST RECENTLY + TAD M4 /DISPLAYED PROJECTILE BY ZEROEING THE + TAD BUFTMP /COUNT + DCA CUTPNT + DCA I CUTPNT + JMP I CUTOUT + +CUTPNT, 0 + + + +/ +/ THIS ROUTINE IS CALLED TO TEST FOR A COLLISION BETWEEN THE +/ TWO SHIPS. THE COORDINATES OF BOTH ARE COMPARED +/ AND IFF SUFFICIENTLY CLOSE BOTH ARE DESTROYED BY SETTING +/ THEIR EXPLOSION COUNTS NON-ZERO. +/ + + +COLLID, 0 /HERE TO TEST FOR COLLISION + TAD ONEFLG /NO TEST IF EITHER SHIP IS IN + SZA CLA /HYPERSPACE OR EXPLODING + JMP I COLLID + TAD TWOFLG + SZA CLA + JMP I COLLID + TAD ONEOUT + SZA CLA + JMP I COLLID + TAD TWOOUT + SZA CLA + JMP I COLLID + + TAD ONEPEX /BOTH SHIPS AVAILABLE FOR COLLISION + CIA /CHECK X COORDINATES FIRST + TAD TWOPEX + SPA /GET ABSOLUTE VALUE OF DIFFERENCE + CIA + TAD COLLIM /CLOSE ENOUGH? + SMA CLA + JMP I COLLID /NOPE, FORGET IT + + TAD ONEPEY /YES, NOW TRY THE Y COORDINATES + CIA + TAD TWOPEY + SPA + CIA /GET MAGNITUDE ONLY + TAD COLLIM + SMA CLA /CLOSE ENOUGH? + JMP I COLLID + TAD MEXP /YES, SET BOTH EXPLOSION COUNTS + DCA ONEOUT + TAD MEXP + DCA TWOOUT + JMP I COLLID + +COLLIM, -300 + + +/ +/ THIS ROUTINE IS CALLED TO SET ONE OF THE TWO SHIPS INTO +/ HYPERSPACE. ON ENTRY THE AC=-1 FOR SHIP #1, 0 FOR SHIP +/ NUMBER 2. THE LOCATION CLOCK IS USED FOR A RANDOM +/ ADDRESS POINTER FROM WHICH WILL BE DRAWN THE +/ VARIOUS PARAMETERS FOR REENTRY. +/ + + *2200 + +HYPSET, DCA RTNFLG /HERE WITH AC=-1 OR 0 + TAD RTNFLG /SET UP LIST POINTER + SZA CLA + TAD ONEDIF /TO APPROPRIATE SHIP FILE + TAD TWOLST + DCA AUTO15 + + CLCA /SET UP "RANDOM NUMBER GENERATOR" + /USE CLOCK COUNTER FOR THAT PURPOSE + DCA AUTO17 + TAD I AUTO17 /PICK UP FIRST THE AMOUNT OF TIME + AND TIMOUT /OUT OF NOMAL SPACE LIMITED TO -777 + CIA /UPDATE CYCLES ( ABOUT 15 SECONDS) + DCA I AUTO15 /AND STORE IN ONEOUT OR TWO OUT + + TAD I AUTO17 /THE NEXT RANDOM NUMBER BECOMES THE + JMS I THEADJ /ANGLE OR ORIENTATION ON REENTRY + DCA I AUTO15 + TAD I AUTO17 /AND THE NEXT BECOMES THE X VELOCITY + JMS VEESET /COMPONENT + DCA I AUTO15 + TAD I AUTO17 /AND THEN THE Y COMPONENT + JMS VEESET + DCA I AUTO15 + TAD I AUTO17 + DCA I AUTO15 + + TAD I AUTO17 + DCA I AUTO15 + + TAD I AUTO17 /FINALLY SEE IF RETURN WILL BE SUCCESSFLY + AND TIMOUT + TAD MHYP /ABOUT 3/4 CHANCE + SMA CLA + JMP HYPRET /OK + TAD RTNFLG /THIS IS THE ONE TIME IN FOUR. SET + SZA CLA /UP FOR EXPLOSION ON REENTRY + TAD ONEDIF + TAD OUTLOC + DCA VEESET + TAD MEXP + DCA I VEESET + +HYPRET, ISZ RTNFLG + JMP I TWORTN + JMP I ONERTN + +TIMOUT, 777 +ONEDIF, ONEFLG-TWOFLG +TWOLST, TWOFLG-1 +RTNFLG, 0 +ONERTN, TWOUP +TWORTN, ONESET +OUTLOC, TWOOUT +MHYP, -200 + + + + +VEESET, 0 /HERE TO LIMIT VELOCITY COMPONENTS + CLL + SPA /GET MAGNITUDE + CML + AND HM177 /LIMIT TO 177 + SZL CLL + CIA + JMP I VEESET /AND EXIT + +HM177, 177 + +ONEEXP, CLA CLL /HERE TO DISPLAY SHIP NUMBER ONE AS + TAD ONETHE /AN EXPLOSION + TAD INCONE /FIRST ROTATE IT BY A GOOD DOLLOP + DCA ONETHE + JMS I IXPDIS /THEN CALL THE EXPLOSION GENERATOR + ISZ ONEOUT /DONE WITH THE EXPLOSION? + JMP I NOWTWO /NO, NORMAL RETURN + + IAC /YES, SET INTO PSEUDO HYPER SPACE + DCA ONEFLG + IAC /DISABLE RETURN FROM HYPER SPACE + DCA ONEFIN + + TAD TWOFIN /IS NUMBER TWO STILL AROUND? + SNA CLA + JMP I NOWTWO /YES, RETURN + JMP I TIEUP /NO, TIE BALL GAME + + + +TWOEXP, CLA CLL /HERE TO DISPLAY SHIP NUMBER TWO + TAD TWOTHE /AS AN EXPLOSION. BASH IT AROUND + TAD INCTWO + DCA TWOTHE + JMS I IXPDIS /THEN DISPLAY IT + ISZ TWOOUT /DONE WITH EXPLOSION? + JMP I NOWPRO /NO, NORMAL RETURN + + IAC /YES, SEND INTO PSEUDO HYPER SPACE + DCA TWOFLG + IAC /DISABLE NORMAL RETURN FROM HYPERSPACE + DCA TWOFIN + /CHECK NUMBER ONE + TAD ONEFIN + SZA CLA /STILL ALIVE AND WELL? + JMP I TIEUP /NO, TIE GAME + JMP I NOWPRO /YES, CONTINUE ON +NOWTWO, TWODIS +NOWPRO, PRODIS +TIEUP, NOWIN +IXPDIS, EXPDIS +INCONE, 55 +INCTWO, 55 + + + +/ +/ HERE TO DISPLAY THE FIGURE POINTED TO BY AUTO10 AS +/ AN EXPLOSION. THIS WORKS THE SAME WAY AS THE NORMAL +/ DISPLAY ROUTINE EXCEPT THAT THE COORDINATE INCREMENTS +/ ARE INVERTED TURNING THE FIGURE INSIDE OUT FOR S +/ A SORT OF CLOBBY EXPLOSION. +/ + + *2400 + +EXPDIS, 0 /HERE TO DISPLAY A FIGURE INSIDE OUT + TAD I AUTO10 /WITH THE POINTERS AND COUNTS ALREADY + DCA XTWODS /SET UP BY FILDIS OR TWODIS + TAD I AUTO10 /STICK NEXT TWO POINTS INTO LINE + DCA YTWODS + + TAD XTWODS + CIA /CALCULATE INCREMENT THE WRONG WAY + TAD XONEDS + DCA DIXTEM /AND STORE + TAD YTWODS + CIA + TAD YONEDS + DCA DIYTEM /SAME FOR Y + + TAD M4 /4 DOTS IN THE VECTOR" + DCA DISCNT /COULD HAVE CALLED THE OTHER + /VECTOR GENERATOR I SUPPOSE +EXPLOP, TAD XONEDS + TAD DIXTEM /ADD X AND Y INCREMENTS TO THE RUNNING + DCA XONEDS /TOTALS AND DISPLAY THE RUNNING + TAD YONEDS /TOTALS NORMAL SIZE + TAD DIYTEM + DCA YONEDS + + TAD XONEDS +/ RTR /COULD MAKE TWICE AS BIG BY NOP-ING +/ RAR /THE RAR'S BUT THE SCREEN IS SMALL ENOUGH + JMS I IVCLDX /AS IT IS + CLA + TAD YONEDS +/ RTR +/ RAR + JMS I IVCLDY +/ DISD +/ JMP .-1 +/ DIXY + + CLA + ISZ DISCNT /DONE 4 DOTS? + JMP EXPLOP /NO + + ISZ AUTO11 /DONE ALL VECTORS IN THE FILE? + SKP + JMP I EXPDIS /YES, EXIT + + TAD XTWODS /NO SWAP TO NEXT PAIR OF POINTS + DCA XONEDS + TAD YTWODS + DCA YONEDS + JMP EXPDIS+1 + + + + +/ +/ VEELIM IS THE SCALING ROUTINE FOR VELOCITY COMPONENTS. +/ THE COMPONENTS ARE SCALED TO REMAIN IN THE RANGE 140 +/ TO -140. THIS IS NECESSARY TO AVOID ASTRONOMICAL SPPED +/ BUILDUP ON THE SMALL SCREEN. UNFORTUNATELY THE X AND Y +/ COMPONENTS ARE SCALED SEPARATELY WHICH GIVES SLIGHT BUT +/ NOTICABLE DISTORTIONS IN DIAGONAL FLIGHT PATHS. IN THE +/ NORMAL HEAT OF THE BATTLE NO ONE WILL REALLY NOTICE. +/ + + +VEELIM, 0 /ENTER TO SCALE VELOCITY HELD IN + DCA VEEHLD /AC + TAD VEEHLD + SMA /BRANCH FOR POSITIVE OR NEGATIV + JMP VEEPOS + TAD VEEMAX + SMA CLA /GREATER THAN MAXIMUM POSITIVE? + JMP VEECLR /NO + TAD VEEMIN /I MEAN MAXIMUM NEGATIVE - YES SET + JMP I VEELIM /TO MAX NEGATIV + +VEEPOS, TAD VEEMIN /GREATER THAN MAX? + SPA CLA + JMP VEECLR /NO + TAD VEEMAX /YES SET TO MAX + JMP I VEELIM + +VEECLR, TAD VEEHLD /IT WAS IN RANGE ALL ALONG + JMP I VEELIM + +VEEHLD, 0 +VEEMIN, -140 +VEEMAX, 140 + +THEAJI, 0 /HERE TO ADJUST THE ANGLE TO A RANGE + SMA /0-550 OR 0-360 DEGREES. THIS IS + JMP .+3 /NECESSARY TO INSURE THAT PUSHDOWN OVERFLOW + TAD P550 /WILL NOT HAPPEN IN THE SINE AND COSINE + JMP .-3 /ROUTINES. THIS SIMPLY TAKES THE AC + TAD M550 /MODULO 360 AND EXITS + SMA + JMP .-2 + TAD P550 /FOLLOW IT THROUGH AND SEE IF IT DOESN'T + JMP I THEAJI + + + +/ +/ ONE OF THESE ROUTINE IS ENTERED WHEN A WINNER IS DECLARED. +/ THE ADDRESS OF THE VICTORY MESSAGE IS PLACED IN MESS AND +/ THE GAMOVR FLAG SET TO CAUSE A BRANCH TO JOBLOP WHEN THE +/ DISPLAY CYCLE IS COMPLETED. THE ROUTINE WILL THEN DISPLAY +/ THE APPROPRIATE MESSAGE OVER THE REMAINING SHIPS IF +/ ANY UNTIL THE KEYBOARD IS MOLESTED OR THE CLOCK RUNS OUT +/ AND THE NEXT DISPLAY UPDATE CYCLE IS SET. AT ANY RATE THE +/ PROGRAM WILL REACH HERE ONLY WHEN SOMEONE HAS BITTEN THE +/ INTERGALACTIC DUST. +/ + + +ONEWIN, 0 /THIS IS CALLED WHEN TWOFIN IS SET + TAD MES1 /AND ONE FIN IS NOT. SET ONE TO VICTOR + DCA MESS /AND SET GAMOVR FLAG + IAC + DCA GAMOVR + JMP I ONEWIN /THEN RETURN TO UPDATE CYCLE + +TWOWIN, 0 /THIS IS CALLED WHEN ONEFIN IS SET + TAD MES2 /AND TWO FIN IS NOT + DCA MESS /SET ALSO GAMOVR + IAC + DCA GAMOVR + JMP I TWOWIN + +NOWIN, TAD MES4 /GET HERE WHEN BOTH ONEFIN AND TWOFIN + DCA MESS /ARE SET . + IAC + DCA GAMOVR /NOBODY EVER REALLY WINDS + /UP THE WINNER IN THESE THINGS +JOBLOP, +/ DSB 1 /THIS IS ENTERED FROM FINISH WHEN + TAD MES0 /GAMOVR IS SET AND SERVES TO DISPLAY + JMS I MESOUT /THE VICTORY MESSAGE ON THE SCREEN + TAD MESS /USING THE CHARACTER GENERATOR SOMEWHAT + JMS I MESOUT /FURTHER ON UNTIL THE GAME IS RESTARTED + TAD MES5 /OR UNTIL THE INTERRUPT COUNT OVERFLOWS + JMS I MESOUT /AND THE UPDATE CYCLE IS RESTARTED + TAD MES3 + JMS I MESOUT +FINITO, JMP JOBLOP + +MES0, MESS0 +MES1, MESS1 +MES2, MESS2 +MES3, MESS3 +MES4, MESS4 +MES5, MESS5 +MESS, 0 + + + +/ +/ THE FOLLOWING ARE THE SINE AND COSINE ROUTINES CUSTOMIZED +/ FOR THIS PROGRAM FROM ANOTHER I WORKED ON. CALL EITHER +/ SINE OR COSINE WITH ANGLE IN DEGREES IN AC. THE ARGUEMENT +/ IS REDUCED THROUGH RECURSION UNTIL BETWEEN 0-89 DEGREES +/ AND THEN A TABLE LOOKUP DONE TO OBTAIN THE VALUE. IT TAKES +/ UP A FAIR AMOUNT OF SPACE BUT IT WORKS JUST FASTER +/ THAN SHEEP. THE COSINE CALL JUST TRANSFORMS THE ARGUEMENT +/ THROUGH SOME TRIGONOMETRIC GARBAGE AND CALLS THE SINE +/ ROUTINE. NOTE THAT CALLING EITHER ROUTINE WITH TOO +/ LARGE AN ARGUEMENT WILL CAUSE PUSHDOWN OVERFLOW AND THEN +/ ALL HELL WILL BREAK LOOSE. THE ORIGINAL ROUTINE FROM WHICH +/ THIS WAS STOLEN HAD FULL WORD PRECISION. +/ + + *6400 + +SINEIN, 0 /I REALLY CANT BRING MYSELF TO COMMENT + DCA SINARG /THIS. IT'S VERY STRAIGHFORWARD + TAD SINEIN + DCA I SINPSH + ISZ SINPSH + TAD SINARG + SZA + JMP SINNG2 + +SINPOP, CLA CLL CMA + TAD SINPSH + DCA SINPSH + TAD I SINPSH + DCA SINEIN + TAD SINARG + JMP I SINEIN + +SINNG2, SMA + JMP SINPOS + CIA + JMS SINEIN + +SINNEG, CIA + DCA SINARG + JMP SINPOP + +SINPOS, TAD M264 + SPA + JMP .+2 + JMP SINNEG-1 + TAD P132 + SPA + JMP SINELK + SZA CLA + JMP .+3 + TAD P37 + JMP SINNEG+1 + + TAD SINARG + TAD M264 + JMP SINNEG-1 + +SINELK, TAD P132 + TAD SINTAB + DCA SINEIN + TAD I SINEIN + DCA SINARG + JMP SINPOP + + + + +SINARG, 0 +SINPSH, SINLST +SINLST, 0 + 0 + 0 + 0 + 0 + 0 + +SINTAB, SINES-1 + +COSINI, 0 + CIA + TAD P132 + JMS SINEIN + JMP I COSINI + + + + +SINES, 00 /1 + 01 /2 + 01 /3 + 02 /4 + 02 /5 + 03 /6 + 03 /7 + 04 /8 + 05 /9 + 05 /10 + 06 /11 + 06 /12 + 07 /13 + 07 /14 + 10 /15 + 10 /16 + 11 /17 + 11 /18 + 12 /19 + 12 /20 + 13 /21 + 13 /22 + 14 /23 + 15 /24 + 15 /25 + 16 /26 + 16 /27 + 17 /28 + 17 /29 + 20 /30 + 20 /31 + 20 /32 + 21 /33 + 21 /34 + 22 /35 + 22 /36 + 23 /37 + 23 /38 + 24 /39 + 24 /40 + 25 /41 + 25 /42 + 25 /43 + 26 /44 + 26 /45 + 27 /46 + 27 /47 + 27 /48 + 30 /49 + 30 /50 + 30 /51 + 31 /52 + 31 /53 + 31 /54 + 32 /55 + 32 /56 + 32 /57 + 33 /58 + 33 /59 + 33 /60 + 33 /61 + 34 /62 + 34 /63 + 34 /64 + 35 /65 + 35 /66 + 35 /67 + 35 /68 + 35 /69 + 36 /70 + 36 /71 + 36 /72 + 36 /73 + 36 /74 + 36 /75 + 37 /76 + 37 /77 + 37 /78 + 37 /79 + 37 /80 + 37 /81 + 37 /82 + 37 /83 + 37 /84 + 37 /85 + 37 /86 + 37 /87 + 37 /88 + 37 /89 + + + + +MULTI, 0 /THIS IS STANDARD SINGLE PRECISION + CLL /MULTIPLY ROUTINE WHICH WAS ONCE + SPA /USED. I'VE LEFT IT IN SINCE + CMA CML IAC /THERE IS LOTS OF CORE LEFT OVER AND + DCA MULMP1 /MAYBLE SOMEDAY I'LL NEED IT TO PUT + DCA MULMP5 /IN A SUN OR SOMETHING. THIS IS THE + TAD I MULTI /STANDARD DEC SUBROUTINE WITH DIFFERENT + SNA /LABELS + JMP MULPSN+2 + SPA + CMA CML IAC + DCA MULMP2 + TAD MULTHR + DCA MULMP3 + +MULMP4, TAD MULMP1 + RAR + DCA MULMP1 + TAD MULMP5 + SZL + TAD MULMP2 + CLL RAR + DCA MULMP5 + ISZ MULMP3 + JMP MULMP4 + TAD MULMP1 + RAR +MULPSN, SZL + JMP MULCMP + DCA MULMP1 + TAD MULMP5 +MULMPZ, ISZ MULTI + JMP I MULTI + +MULCMP, CMA CLL IAC + DCA MULMP1 + TAD MULMP5 + CMA + SZL + IAC + JMP MULMPZ + +MULTHR, 7764 +MULMP1, 0 +MULMP5, 0 +MULMP2, 0 +MULMP3, 0 + + + +/ +/ SHIFTR DIVIDES THE AC BY TWO WHETHER POSITIVE OR NEGATIVE +/ AND IS CALLED FROM VARIOUS PLACES. NOT ENTIRELY MYSTERIOUS +/ + + +SHIFTR, 0 + CLL + SPA + CML IAC + RAR + JMP I SHIFTR + + +/ +/ POSCAL IS CALLED TO CALCULATE THE COORDINATE INCREMENTS +/ NECESSARY TO PRODUCE THE SHIP FIGURES. RATHER THAN DOING +/ A LOT OF EXPENSIVE MATH THIS DOES A QUICK PRODUCTION +/ OF 1, 2, AND 3 TIMES THE SIN AND COSINE VALUES FOUND +/ IN CALSIN AND CALCOS LEAVING THEM IN THE TABLE FOR +/ ONESET AND TWOSET. IF THE SCOPE WERE ANY BETTER +/ THIS PROBABLY WOULDN'T BE NEAR GOOD ENOUGH BUT.... +/ + +POSCAL, 0 + TAD CALSIN + + DCA T10SIN + TAD T10SIN + CLL RAL + DCA T20SIN + TAD T10SIN + TAD T20SIN + DCA T30SIN + + TAD CALCOS + + DCA T10COS + TAD T10COS + CLL RAL + DCA T20COS + TAD T10COS + TAD T20COS + DCA T30COS + JMP I POSCAL + +/**************************************************************** +/ VC8-E ROUTINES + + +VDIV, 0 + SMA / SKIP IF MINUS + JMP VPLUS +VMINUS, CMA IAC / COMPLEMENT + RTR / DIVIDE BY FOUR + AND P1777 / DELETE UPPER TWO BITS + CMA IAC + JMP I VDIV / RETURN + +VPLUS, RTR + AND P1777 + JMP I VDIV + +/***** + +VCLDX, 0 / INTENSIFY LAST POINT AND LOAD NEW X VALUE + JMS VDIV / DIVIDE BY FOUR + DISD / DISPLAY READY? + JMP .-1 / WAIT. + DIXY / INTENSIFY + DILX / LOAD NEW X VALUE + JMP I VCLDX / RETURN + +VCLDY, 0 + JMS VDIV / DIVIDE BY FOUR + DILY / LOAD NEW Y VALUE + JMP I VCLDY + +P1777, 1777 + + +/**************************************************************** + + + *7000 + +/GENERAL PURPOSE SYMBOL GENERATOR +/ +CHARS, 0 /ENTRY TO PLOT CHARACTER STRING + DCA ADDR /STORE STRING ADDRESS + TAD I ADDR /FETCH DOUBLE CHARACTER + RTR /SHIFT + RTR / FOR FIRST + RTR / CHARACTER + JMS CHAR /PLOT CHARACTER + SKP /NORMAL RETURN -- SKIP + JMP I CHARS /TERMINATION RETURN -- EXIT + TAD I ADDR /RECALL DOUBLE CHARACTER + ISZ ADDR /ADVANCE STRING ADDRESS + JMS CHAR /PLOT CHARACTER + JMP CHARS+2 /NORMAL RETURN -- REPEAT + JMP I CHARS /TERMINATION RETURN -- EXIT +/ +CHAR, 0 /ENTRY TO PLOT SINGLE CHARACTER + AND K77 /MASK OUT UPPER BITS + CLL RAL /MULTIPLY CODE BY TWO + TAD TABLE /ADD TABLE BASE ADDRESS + DCA POINT /CONSTRUCT POINTER TO 24-BIT CODE + CMA /INITIALIZE COUNTER FOR + DCA COUNT2 / TWO PLOT WORDS + TAD I POINT /FETCH FIRST PLOT WORD + ISZ POINT /INCREMENT POINTER FOR NEXT ONE + SNA /SKIP IF NOT SPECIAL CHARACTER + JMP SPCHAR /ELSE GO PROCESS IT + DCA CURPLT /SAVE CURRENT PLOT BITS +XPLOT, TAD KM6 /INITIALIZE 6-BIT + DCA COUNT6 / COUNTER + TAD YVALUE /RESET Y TEMPORARY + DCA YTEMP / VALUE FOR CHARACTER + TAD XVALUE /OUTPUT CURRENT + DILX /X-VALUE TO CRT + TAD XINCR /INCREMENT + DCA XVALUE / ABSCISSA +YPLOT, TAD CURPLT /RECALL CURRENT PLOT BITS + CLL RAL /GET NEXT BIT + DCA CURPLT /SAVE REMAINING PLOT BITS + SNL /SKIP IF POINT TO PLOT + JMP CNTINU /ELSE JUMP AHEAD + TAD YTEMP /OUTPUT CURRENT + DILY /Y-VALUE TO CRT + DISD / READY TO DISPLAY THE POINT? + JMP .-1 / NO, WE'LL WAIT. + DIXY / SHOOT THE BEAM! + + CLA CLL /CLEAR AC + TAD CURPLT /RECALL CURRENT PLOT BITS + SNA CLA /SKIP IF POINTS REMAINING + JMP WRDEND /ELSE WORD IS FINISHED +CNTINU, TAD YTEMP /INCREMENT TEMPORARY + TAD YINCR / Y-VALUE FOR NEXT + DCA YTEMP / CHARACTER STEP + ISZ COUNT6 /SKIP IF 6 BITS PLOTTED + JMP YPLOT /ELSE PLOT NEXT ONE + JMP XPLOT /GO UPDATE X-VALUE +WRDEND, ISZ COUNT2 /SKIP IF ANOTHER BIT WORD + JMP EXIT /ELSE EXIT + TAD I POINT /FETCH SECOND BIT WORD + SZA /SKIP IF NO PLOT POINTS + JMP XPLOT-1 /ELSE GO PLOT THEM +EXIT, TAD XVALUE /INCREMENT ABSCISSA + TAD XINCR / FOR SPACE BETWEEN + DCA XVALUE / SYMBOLS + JMP I CHAR /EXIT FROM CHAR +/ +SPCHAR, TAD I POINT /FETCH TRANSFER VECTOR + DCA POINT /STORE AS INDIRECT ADDRESS + + JMP I POINT /GO TO APPROPRIATE ROUTINE +SPACE, TAD XINCR /FETCH BASIC ABSCISSA INCREMENT + CLL RTL /MULTIPLY BY FOUR AND + JMP EXIT / GO CREATE SPACE +CRLF, TAD INITX /"CARRIAGE RETURN" RESETS X + DCA XVALUE / TO ITS ORIGINAL VALUE +LF, TAD YINCR /"LINE FEED" + CLL RTL / DECREMENTS THE + CLL CIA RAL / Y-VALUE BY + TAD YVALUE / EIGHT SCALE + DCA YVALUE / STEPS + JMP I CHAR /EXIT FROM CHAR +RESET, TAD INITX /"RESET" RESETS + DCA XVALUE / X AND Y TO + TAD INITY / THEIR ORIGINAL + JMP RESET-2 / VALUES +TERM, ISZ CHAR /TERMINATE CODE CAUSES + JMP I CHAR / EXIT TO P+2 +/ +INITX, 0 /INITIAL X-VALUE +INITY, 327 /INITIAL Y-VALUE +XVALUE, 0 /CURRENT X-VALUE +YVALUE, 0 /CURRENT Y-VALUE +XINCR, 6 /BASIC X INCREMENT VALUE +YINCR, 10 /BASIC Y INCREMENT VALUE +YTEMP, 0 /TEMPORARY Y-VALUE +CURPLT, 0 /CURRENT PLOT BITS +ADDR, 0 /CURRENT STRING ADDRESS +COUNT6, 0 /6-BIT COUNTER +COUNT2, 0 /2-WORD COUNTER +KM6, -6 /CONSTANT FOR COUNT6 +K77, 77 /CHARACTER CODE MASK +POINT, 0 /TABLE POINTER +/ + + +/ +TABLE, .+1 /TABLE BASE ADDRESS + 0 /SPECIAL CHARACTER (00) + TERM /TERMINATION CODE + 7611 / A + 1176 + 7745 / B + 4532 + 3641 / C + 4122 + 7741 / D + 4136 + 7745 / E + 4541 + 7705 / F + 501 + 7741 / G + 5173 + 7710 / H + 1077 + 4177 / I + 4100 + 2040 / J + 4037 + 7714 / K + 2241 + 7740 / L + 4040 + 7702 / M + 277 + 7706 / N + 3077 + 7741 / O + 4177 + 7705 / P + 502 + 3641 / Q + 6176 + 7715 / R + 2542 + 2245 / S + 5122 + 177 / T + 100 + 3740 / U + 4037 + 1720 / V + 4037 + 7730 / W + 3077 + 4136 / X + 3641 + 374 / Y + 7403 + 6151 / Z + 4543 + 7741 / [ + 0 + 204 / \ + 1020 + 4177 / ] + 0 + 436 / ^ + 400 + 0 /SPECIAL CHARACTER (37) + RESET /RESET + 0 /SPECIAL CHARACTER (40) + SPACE /SPACE + 5600 / ! + 0 + 303 / " + 0 + 1477 / # + 7714 + 2277 / MARKER + 2200 + 2313 / % + 6462 + 7777 / BLOCK + 7777 + 300 / ' + 0 + 3641 / ( + 0 + 4136 / ) + 0 + 4040 / UNDERSCORE (52) + 4040 + 1034 / + + 1000 + 0 /SPECIAL CHARACTER (54) + LF /LINE FEED + 1010 / - + 1000 + 4000 / . + 0 + 2010 / / + 402 + 3641 / 0 + 4136 + 4442 / 1 + 7740 + 4261 / 2 + 5146 + 2145 / 3 + 5321 + 1710 / 4 + 1077 + 4745 / 5 + 4531 + 7750 / 6 + 5070 + 6111 / 7 + 503 + 2255 / 8 + 5522 + 705 / 9 + 577 + 2400 / : + 0 + 0 /SPECIAL CHARACTER (73) + CRLF /CARRIAGE RETURN; LINE FEED + 1024 / > + 4200 + 1212 / = + 1200 + 4224 / < + 1000 + 255 / ? + 300 + + + +/ +/ HERE FOLLOW THE PACKED ASCII TEXTS FOR THE VARIOUS +/ VICTORY MESSAGES. PERSONS ADVENTEROUS TO FIND THIS MIGH CARE +/ TO TOGGLE IN SOME CUTE LITTLE MESSAGES OF THEIR OWN. +/ + +MESS0, 3773 +MESS5, 7340 + 4040 + 4040 + 4000 + +MESS1, 1716 + 0500 + +MESS2, 2427 + 1700 + +MESS3, 2711 + 1623 + 4100 + +MESS4, 1617 + 0217 + 0431 + 0000 + + + + *7400 + +DISBUF, 0 + +/ THE DISPLAY BUFFERS BEGIN HERE AND EXTEND UP SOMEWHERE TO +/ AROUND 7575 OR SO. +/ +/ +/ +/ +/ + + + + + $ + +//////////////////////////// +/ +/ THIS IS THE END +/ +/////////////////////////// + + + + + + diff --git a/sw/SPACE/space.pal.bak b/sw/SPACE/space.pal.bak new file mode 100644 index 0000000..120029c --- /dev/null +++ b/sw/SPACE/space.pal.bak @@ -0,0 +1,2355 @@ +/ SPACE WAR +/ +/ INTERPLANETARY DEATH AND DESTRUCTION ON YOUR +/ LAB-8 +/ +/ EVAN SUITS +/ +/ THIS VERSION WORKS OFF EITHER THE BLUE RIBBON CONNECTOR OR THE +/ SR. WHEN THE PROGRAM IS STARTED (AT 0200) OR RESTARTED THE +/ SR WILL BE TESTED AND IF =0000 WILL BE USED FOR THE COMMAND +/ INPUT. OTHERWISE, THE BLUE RIBBON CONNECTOR (AX08 * C0-C7 * +/ XR OPTION ONLY) CONTINGENCY INPUTS WILL BE USED. +/ +/ WHEN THE PROGRAM IS STARTED THE TWO SHIPS SHOULD +/ APPEAR ON THE SCREEN WITH SHIP 'ONE' ON THE LEFT, SHIP +/ 'TWO' ON THE RIGHT. +/ +/ THE COMMAND WORD BIT ASSIGNMENTS ARE: +/ +/ SR BIT: C: FUNCTION: +/ +/ 0 0 SHIP ONE ROTATES LEFT +/ +/ 1 1 SHIP ONE ROTATES RIGHT +/ +/ 2 2 SHIP ONE ACCELERATES +/ +/ 3 3 SHIP ONE FIRES +/ +/ +/ +/ 8 4 SHIP TWO ROTATES LEFT +/ +/ 9 5 SHIP TWO ROTATES RIGHT +/ +/ 10 6 SHIP TWO ACCELERATES +/ +/ 11 7 SHIP TWO FIRES +/ +/ +/ +/ NOTE THAT TURNING RIGHT AND LEFT SIMULTANEOUSLY THROWS +/ THE SHIP INTO HYPERSPACE. IN THE CURRENT VERSION THE ODDS +/ ARE IN FAVOR OF YOUR MAKING IT BACK SAFELY. THE GAME IS OVER +/ WHEN ONE OR BOTH OF THE SHIPS HAVE BEEN DESTROYED AND THE +/ WINNER (IF ANY) IS IN NORMAL SPACE. WHEN THE WINNER +/ HAS BEEN ANNOUNCED, HIT ANY TTY KEY TO RESTART. +/ + + +/**************************************************************** + +/*************************** +/ CLOCK OPERATIONS + +CLZE=6130 / CLEAR CLOCK ENABLE REGISTER PER AC +CLSK=6131 / SKIP ON CLOCK FLAG +CLOE=6132 / SET CLOCK ENABLE REGISTER PER AC +CLAB=6133 / AC REGISTER TO CLOCK COUNTER REGISTER +CLEN=6134 / CLOCK ENABLE REGISTER TO AC +CLSA=6135 / STATUS TO AC +CLBA=6136 / CLOCK BUFFER REGISTER TO AC +CLCA=6137 / CLOCK COUNTER REGISTER TO AC + +/ BITS IN CLOCK ENABLE REGISTER +CREXT=0100 / EXTERNAL SOURCE +CR2=0200 / 10**2 per second +CR3=0300 / 10**3 per second +CR4=0400 / 10**4 per second +CR5=0500 / 10**5 per second +CR6=0600 / 10**6 per second + +COVSTAT=4000 +CMFREE=0000 / 4096 FIXED FREE RUN +CMPROG=1000 / PROGRAMMED DELAY + +CADC=0040 / START ADC ON OVERFLOW +CINH=0020 / INHIBIT CLOCK +CION=0010 / INTERRUPT ENABLE + +CEV3=0004 / EVENT 3 ENABLED +CEV2=0002 / EVENT 2 ENABLED +CEV1=00001 / EVENT 1 ENABLED + +/ VC8-E OPCODES +DIXY=6055 / INTENSIFY +DILX=6053 / LOAD X +DILY=6054 / LOAD Y +DILE=6056 / LOAD ENABLES FROM A +DISD=6052 / TEST FOR READY + +/**************************************************************** +/ SYMBOL DEFINITIONS FOR PAL8-PAL10 + +XRIN=NOP / DIGITAL INPUT? +XRCL=NOP + +/DSB=XXXX / SET BRIGHTNESS - MUST BE COMMENTED OUT!!! + +DXC=JMS I IVCLDX / X VALUE CONTROL? +DYC=JMS I IVCLDY / Y VALUE CONTROL? + +DXL=0000 / X VALUE LOAD FLAG? +DYL=0000 / Y VALUE LOAD FLAG? +DIS=0000 / ANOTHER STRANGE FLAG + +/CRF=NOP / WHICH FLAG??? +/CCF=NOP / ?? + + +/**************************************************************** +/ +/ THIS PROGRAM RELIES ON THE PROGRAM INTERUPT FACILITY FOR +/ REAL WORLD TIMING PURPOSES. +/ + + *0 + + 0 /EFFECTIVE JMS 0 ON PROGRAM INTERUPT + JMP I 2 /EXIT IMMEDIATLY TO SERVICE ROUTINE + INTSER + +EMPTY, 0 /THESE LOCATIONS ARE RESERVED FOR +ODT1, 0 /DEBUGGERS, ETC. +ODT2, 0 +ODT3, 0 + +/ +/ ALL THE AUTO INDEX REGISTERS ARE NAMED BUT NOT ALL OF +/ THEM ARE USED. THE STATUS OF ANY GIVEN REGISTER CANNOT +/ BE DETERMINED AT ANY TIME EXCEPT BY CAREFUL INSPECTION OF +/ THE CODE. +/ + + *10 + +AUTO10, 0 +AUTO11, 0 +AUTO12, 0 +AUTO13, 0 +AUTO14, 0 +AUTO15, 0 +AUTO16, 0 +AUTO17, 0 + +/ +/ THE FOLLOWING ARE THE DATA FILES FOR THE TWO SPACE SHIPS +/ AS WELL AS CERTAIN OTHER PARAMETERS FOR CALCULATING POSITIONS +/ AND SO ON. THE ORDER OF THE LOCATIONS MUST BE PRESERVED +/ ALTHOUGH THE SIZE OF THE TABLES MAY BE VARIED +/ + + *20 + +ONEOUT, 0 /IF NON-ZERO CONTAINS REAMINING TIME OF EXPLOSION +ONECNT, 0 /NUMBER OF POINTS IN FIGURE TO BE DISPLAYED +ONEFLG, 0 /IN OR OUT OF NORMAL SPACE +ONETHE, 0 /ANGLE OF ORIENTATION ON SCREEN +ONEVEX, 0 /X COMPONENT OF VELOCITY +ONEVEY, 0 /Y COMPONENT OF VELOCITY +ONEPEX, 0 /X POSITION (12 BITS) +ONEPEY, 0 /Y POSITION (12 BITS) +ONESIN, 0 /SINE OF ANGLE +ONECOS, 0 /COSINE OF ANGLE +ONEFIN, 0 /SET WHEN EXPLOSION DIES OUT + +TWOOUT, 0 /SAME CONTENT AND ORDER +TWOCNT, 0 /AS ABOVE +TWOFLG, 0 +TWOTHE, 0 +TWOVEX, 0 +TWOVEY, 0 +TWOPEX, 0 +TWOPEY, 0 +TWOSIN, 0 +TWOCOS, 0 +TWOFIN, 0 + + +/ +/ THESE LOCATIONS ARE USED BY THE "VECTOR GENERATOR" IN +/ DISPLAYING THE FIGURES. A FOUR DOT VECTOR WILL BE DRAWN +/ FROM XONE,YONE TO XTWO,YTWO WITH STEPS OF SIZE DIXTEM,DIYTEM +/ + +XONEDS, 0 +YONEDS, 0 +XTWODS, 0 +YTWODS, 0 +DIXTEM, 0 +DIYTEM, 0 +DISCNT, 0 + + +/ +/ THE NEXT LOCATIONS ARE USED BY CALPOS TO DO A FAST +/ MULTIPLY TO HELP CALCULATE THE DISPLAY FILES. +/ +T10SIN, 0 +T20SIN, 0 +T30SIN, 0 +T10COS, 0 +T20COS, 0 +T30COS, 0 + +CALSIN, 0 +CALCOS, 0 + +/ +/ NOW COME THE VARIOUS ODDS AND ENDS ONE USUALLY FINDS ON +/ PAGE ZERO +/ + +SINE, SINEIN +COSINE, COSINI +MULT, MULTI +RSHIFT, SHIFTR +VECTOR, DISPLY +CALPOS, POSCAL +INTWRD, 0 +INTCNT, 0 +/CLOCK, 0 +HYPER, HYPSET +MESOUT, CHARS +THEADJ, THEAJI +VEESCL, VEELIM +ISHFT, DISHFT +RESET1, RESE1 +GAMOVR, 0 +ACCFLG, 0 +ACCPER, -30 +MEXP, -400 + +PROX, 0 +PROY, 0 +PROLIF, -360 +BUFTMP, 0 +ONEFIL, DISBUF +TWOFIL, DISBUF+40 + +P5, 5 +P10, 10 +P17, 17 +P20, 20 +P37, 37 +P40, 40 +P100, 100 +P132, 132 +P200, 200 +P400, 400 +P550, 550 +P3777, 3777 + +M4, -4 +M6, -6 +M10, -10 +M11, -11 +M264, -264 +M200, -200 +M400, -400 +M550, -550 + +IVCLDX, VCLDX +IVCLDY, VCLDY + +/ +/ THE PROGRAM MAY BE STARTED OR RESTARTED AT ANYTIME AT 0200. +/ THE DATA FILE ON PAGE ZERO IS CLEARED, ALL FLAGS INITIALIZED, +/ AND THE SR EXAMINED. IF THE SR=0 THE DISPLAY UPDATE ROUTINES +/ ARE SET TO PICK UP THE STATUS WORD FROM THE SR. IF THE SR +/ DOES NOT EQUAL ZERO, THE STATUS WORD IS READ FROM THE EIGHT +/ CONTINGENCY INPUTS ON THE BLUE RIBBON CONNECTOR OF THE AX08 +/ (XR OPTION ONLY). JUMP IS THEN TO THE DISPLAY +/ FILE UPDATE TO START OFF THE GAME. +/ + + *200 + +START, CLA CLL /START OR RESTART HERE ANY OLD TIME + DIXY /TO GET THE VC8-E STARTED ONCE + LAS /SR +/TMP SNA CLA + TAD SWRD /USE THE SR + TAD XROPT /USE THE BLUE RIBBON CONNECTOR + DCA COLDST /AND LEAVE IN THE TRAP LOCATION + +RESTRT, CLA CMA + XRCL + CLA CLL + + TAD P17 /FIRST CLEAR THE POSITION AND DATA + DCA AUTO10 /TABLES OF THE TWO SHIPS + TAD TABLEN + DCA AUTO11 + DCA I AUTO10 + ISZ AUTO11 + JMP .-2 + + TAD STRT1 /SET THE STARTING POSITIONS OF THE + DCA ONEPEX /TWO SHIPS + TAD STRT2 + DCA TWOPEX + TAD P37 /SET TRIG FUNCTIONS JUST IN CASE + DCA ONECOS + TAD P37 + DCA TWOCOS /ZERO DEGREES IS POINTING STRAIGHT UP + TAD ACCPER /SET COUNT FOR VELOCITY INCREASE + DCA ACCFLG + DCA ONEFIN /CLEAR ALL GAME END FLAGS + DCA TWOFIN + DCA GAMOVR + JMS I BUFSET /RESET ALL PROJECTILE DISPLAY BUFFERS + + + TCF /CLEAR OTHER REMAINING LIKELY FLAGS + PCF + RRB + + CLA CMA / ALL ONES + CLZE / CLEAR CLOCK CONFIG REGISTER + CLA + TAD CDELY / LOAD NEG DELAY + CLAB / LOAD TO CLOCK BUFFER + CLA + TAD CCNF / LOAD CLOCK CONFIG + CLOE / SET CONFIG BITS + + CLA CLL + JMP COLDST /AND GO TO IT + +CCNF, CR4+CMPROG+CION+COVSTAT / CLOCK CONFIGURATION +CDELY, -310 / COUNTER PRESET (200) + +/ +/ UPDATE IS REACHED WHENEVER THE PROGRAM IS STARTED OR THE +/ CLOCK COUNT OVERFLOWS INDICATING TIME TO RECALCULATE THE +/ THE DISPLAY FILES AND REFRESH THE DISPLAY. THE INTERUPT +/ COUNT IS RESTORED, THE STATUS WORD IS PICKED UP FROM EITHER +/ THE SR OR BRC, AND THE RECALCULATION PROCESS BEGUN. +/ + +UPDATE, CLA CLL /HERE ON CLOCK COUNT OVERFLOW. + /START NEXT SWEEP +COLDST, 0 /TRAP TO READ SR OR BRC + LAS /HERE FOR SR + DCA INTWRD /STORE TEMPORARILY + TAD INTWRD /MASK OUT LEFTMOST 4 BITS + RTR /FOR NUMBER ONE + RTR + AND LFTHAF + DCA INTTEM /AND STORE + TAD INTWRD /MASK OUT RIGHTMOST BITS FOR NUMBER TWO + AND RYTHAF + TAD INTTEM /ADD TOGETHER + JMP .+3 /AND CONTINUE + +CODST, XRIN /HERE FOR BRC - PICK UP AND CLEAR + XRCL + DCA INTWRD /CONTINUE + TAD M550 /RESTORE INTERUPT COUNT BEFORE NEXT + DCA INTCNT /UPDATE + ION /GET READY FOR THE NEXT CYCLE + TAD ACCFLG /ALLOW VELOCITY INCREASE THIS TIME? + IAC /ONLY WHEN ACCFLG=0 + SMA SZA + TAD ACCPER /IF ZERO, RESET COUNT + DCA ACCFLG + + JMP I .+1 /NOW GET DOWN TO WORK. + ONEUP + +BUFSET, SETBUF +TABLEN, AUTO17-CALCOS +INTTEM, 0 +LFTHAF, 0360 +RYTHAF, 0017 +STRT1, 1000 +STRT2, -1000 +SWRD, 2000-CODST +XROPT, JMP CODST + + +/ +/ THIS IS THE INTERUPT SERVICE ROUTINE. MOST OF THE +/ INTERUPTS WILL BE FROM THE CRYSTAL CLOCK WHICH WILL BE +/ COUNTED AND UNLESS THE COUNT OVERFLOWS THE INTERUPT IS +/ DISMISSED IMMEDIATLY. IF THE COUNT OVER FLOWS, JMP IS TO +/ UPDATE WITH IOF. +/ +/ SPECIAL CASE IS KEYBOARD INTERUPT WHEN THE GAMOVR FLAG IS +/ SET IN WHICH CASE THE GAME IS RESTARTED. +/ +/ UNEXPECTED INTERUPTS ARE COUNTED AND AFTER ENOUGH OF THEM +/ HAPPEN THE PROGRAM HALTS. IF THIS HAPPENS RELOAD OR FIND THE +/ STRANGE FLAG +/ + +INTSER, DCA INTACC /HERE RIGHT AFTER INTERUPT - STORE + RAR /AC AND LINK + DCA INTLNK /FOR POSSIBLE CONTINUATION + CLSK /WAS IT THE CRYSTAL CLOCK? + JMP INTBUS /NO TRY SOMETHING ELSE + CLA IAC RTR /LOAD 4000 + CLSA /GET CLOCKSTATUS AND RESET FLAG + CLA CLL + JMP UPDATE /YES, GO TO IT + +INTBUS, KSF /HERE ON NON-CLOCK INTERUPT + JMP .+5 /NOT THE KEYBOARD + KCC /CLEAR KEYBOARD FLAG + TAD GAMOVR /IS THE GAMEOVER + SZA CLA + JMP RESTRT /YES, RESTART +/ TCF /NO, HELL WITH IT + ISZ INTGLH /COUNT ONE BADDIE + SKP + HLT /HALT IF TOO MANY BADDIES + +INTRET, CLA CLL /HERE TO DISMISS THE INTERUPT + TAD INTLNK + RAL + TAD INTACC + ION + JMP I 0 + +INTACC, 0 +INTLNK, 0 +INTGLH, 0 + + +/ +/ NOW BEGINS THE GREAT UPDATE PROCEEDURE, FIRST FOR SHIP +/ NUMBER ONE (THE DELTA SHAPED SHIP WHICH APPEARS ON +/ THE LEFT AT THE START OF THE GAME). IF ALIVE THE STATUS +/ WORD (INTWRD) IS TESTED FOR REQUESTS FOR LEFT TURN, +/ RIGHT TURN, THRUST ON, AND LAUNCH PROJECTILE. THESE ACTIONS +/ MAY OR MAY NOT BE ACTED UPON DEPENDING ON COUNTS AND FLAGS. +/ WHEN THIS IS COMPLETE THE SAME OPERATION IS PERFORMED FOR +/ NUMBER TWO. +/ + + *400 + +ONEUP, TAD ONEFLG /FIRST SEE IF IT'S IN NORMAL SPACE + SNA + JMP ONEOK /YES IT IS + IAC /NO, BUT IS IT JUST COMING OUT? + SNA + TAD ONEFIN /YES, THROW BACK IN IF ALREADY DESTROYED + DCA ONEFLG /OTHERWISE JUST COUNT ONE + JMP I ITWOUP /AND GO TO FIX UP NUMBER TWO + +ONEOK, TAD ONEOUT /IN NORMAL SPACE - IS IT EXPLODING? + SZA CLA + JMP ONEFIG /IF YES, ALLOW NO CONTROLS + TAD TWOFIN /HAS THE ENEMY BEEN VANQUISHED? + SZA CLA + JMS I ONEWN /YES, SIGNAL VICTORY + TAD INTWRD /NOW BEGIN TEST OF REQUEST + AND OP300 /LEFT AND RIGHT TURN TOGETHER MEAN HYPERSPACE! + TAD OM300 /TEST BITS 4 AND 5 + SZA CLA + JMP ONELEF /NOPE, CONTINUE + CMA /YES, CALL HYPER WITH AC=-1 FOR NUMBER ONE + JMP I HYPER +ONELEF, TAD INTWRD /REQUEST FOR LEFT TURN? + AND P200 /TEST BIT 4 + SNA CLA + JMP ONERYT /NO + CLA CLL CMA /YES DECREMENT ANGLE + JMP ONEFIG + +ONERYT, TAD INTWRD /HOW ABOUT RIGHT TURN + AND P100 /TEST BIT 5 + SZA CLA + IAC /YES, INCREMENT ANGLE + +ONEFIG, TAD ONETHE /PICK UP AND ADJUST ANGLE (MAYBE) + JMS I THEADJ /BRING BACK WITHIN LIMITS OF TRIG FUNCTIONS + DCA ONETHE /AND STORE + TAD ONETHE /FIND THEM TRIG FUNCTIONS + JMS I SINE /AND STORE ONCE AND FOR ALL + DCA ONESIN /IN THE APPROPRIATE PLACES + TAD ONETHE + JMS I COSINE + DCA ONECOS + TAD ONEOUT /DO NOT ALLOW THRUST IF EXPLODING + SZA CLA + JMP ONEVEL + + + +ONEMOV, TAD ACCFLG /ALLOW ANY VELOCITY INCREASE THIS CYCLE? + SZA CLA + JMP ONEVEL /NOPE + TAD INTWRD /YES, ANY REQUESTED? + AND P40 /TEST BIT 6 + SNA CLA + JMP ONEVEL /NONE REQUESTED + TAD ONECOS /YES, ADD IN VELOCITY INCREMENT DEPENDING + TAD ONEVEY /ON ORIENTATION + JMS I VEESCL /BUT DO NOT ALLOW TO EXCEED MAXIMUM + DCA ONEVEY /AND STORE + TAD ONESIN /DO THE SAME FOR THE OTHER (X) COMPONENT + TAD ONEVEX + JMS I VEESCL + DCA ONEVEX + + + +ONEVEL, TAD ONEVEX /NOW UPDATE THE POSITION WITH THE + JMS I ISHFT /VELOCITY COMPONENTS DIVIDED BY 4 + JMS I ISHFT /THIS MAINTAINS MAXIMUM RESOLUTION + TAD ONEPEX + DCA ONEPEX /IGNORE ANY OVERFLOW + TAD ONEVEY /DO THE SAME FOR Y COORDINATE + JMS I ISHFT /AND VELOCITY COMPONENT + JMS I ISHFT + TAD ONEPEY + DCA ONEPEY + TAD ONEOUT /DO NOT ALLOW PROJECTILE LAUNCH IF + SZA CLA /EXPLODING + JMP I ITWOUP + + + +ONELNC, TAD LNC1FG /OTHERWISE, SEE IF RELOAD IS FINISHED + SNA CLA + JMP .+3 + ISZ LNC1FG /NO, CONTINUE RELOADING + JMP I ITWOUP /AND EXIT + TAD INTWRD /YES, READY TO LAUNCH, TRIGGER BEEN PULLED? + AND P20 /TEST BIT7 + SNA CLA + JMP I ITWOUP /NO, WAIT FOR A BETTER SHOT + /.....I GUESS..... + TAD PROLIF /YES, SET CYCLE COUNT FOR THIS LAUNCH + DCA I AUTO16 /AUTO16 ALWAYS POINTS AT THE NEXT SLOT IN THE FILE + TAD ONEVEX /ADD SHIPS VELOCITY (SCALED OF COURSE) + JMS I ISHFT /TO ORIENTATION TO EXTABLISH X VELOCITY + JMS I RSHIFT /COMPONENT OF PROJECTILE + TAD ONESIN + JMS I RSHIFT /AND STICK IT IN THE FILE + DCA I AUTO16 + TAD ONESIN /MOVE THE LAUNCH POINT OUTSIDE THE + CLL RTL /SHIP OF ORIGIN + TAD ONEPEX + DCA I AUTO16 /AND STORE X POSITION + TAD ONEVEY /NOW DO THE SAME FOR THE Y VELOCITY AND + JMS I ISHFT /POSITION + JMS I RSHIFT + TAD ONECOS + JMS I RSHIFT + DCA I AUTO16 + TAD ONECOS + CLL RTL + TAD ONEPEY + DCA I AUTO16 + TAD M200 /START RELOAD CYCLE + DCA LNC1FG + JMS I RESET1 /RESET AUTO16 TO NEXT HOLE + + JMP I .+1 /NOW TO FIX IT UP WITH NUMBER TWO +ITWOUP, TWOUP + +LNC1FG, 0 /PROJECTILE LAUNCH ENABLE + +OP300, 300 /HYPERSPACE REQUEST CODE BITS 4 AND 5 +OM300, -300 +ONEWN, ONEWIN /POINTER TO VICTORY MESSAGE + + +/ +/ HERE BEGINS THE UPDATE PROCEEDURE FOR SHIP NUMBER TWO. +/ OPERATION IS THE SAME AS FOR NUMBER ONE ABOVE. +/ + + *600 + +TWOUP, TAD TWOFLG /FIRST SEE IF IT'S IN NORMAL SPACE + SNA + JMP TWOOK /YES, CONTINUE + IAC /NO, BUMP COUNT AND TEST FOR REENTRY + SNA + TAD TWOFIN /IF RE-ENTERING THROW BACK OUT IF FINISHED + DCA TWOFLG /AND CONTINUE + JMP I IONEST + +TWOOK, TAD TWOOUT /HERE WHEN READY TO UPDATE IN NORMAL SPACE + SZA CLA /IS IT EXPLODING? + JMP TWOFIG /YES DO NOT ALLOW HYPERSPACE + TAD ONEFIN /DID WE JUST WIN? + SZA CLA + JMS I TWOWN /YES ENABLE END OF GAME MESSAGE + TAD INTWRD /TEST FOR HYPERSPACE REQUEST + AND OP14 + TAD OM14 /BITS 8 AND 9 MUST BE SET + SNA CLA + JMP I HYPER /8 AND 9 SET. ENTER HYPER ROUTINE WITH AC=0 + /FOR SHIP NUMBER 2 +TWOLEF, TAD INTWRD /TEST FOR LEFT TURN - BIT 8 + AND P10 + SNA CLA + JMP TWORYT /NOT SET + CLA CLL CMA /SET, DECREMENT TWOTHE BY 1 DEGREE + JMP TWOFIG /SKIP TEST FOR RIGHT TURN + +TWORYT, CLA CLL IAC RTL /TEST FOR RIGHT TURN - BIT 9 + AND INTWRD + SZA CLA + IAC /IF SET INCREMENT TWOTHE BY 1 DEGREE + +TWOFIG, TAD TWOTHE /UPDTAE TWOTHE + JMS I THEADJ /BRING TO WITHIN LIMITS OF SINE,COSINE + DCA TWOTHE /AND STORE + TAD TWOTHE + JMS I SINE /CALCULATE SINE AND COSINE FUNCTIONS + DCA TWOSIN /AND STORE IN DATA TABLE + TAD TWOTHE + JMS I COSINE + DCA TWOCOS + TAD TWOOUT /DO NOT ALLOW VELOCITY CHANGE IF EXPLODING + SZA CLA + JMP TWOVEL + + + +TWOMOV, TAD ACCFLG /NOW FOR ACCELERATION. TEST TO SEE IF ALLOWED + SZA CLA /DURING THIS UPDATE CYCLE + JMP TWOVEL /NOPE + CLL IAC RAL /YES, TEST FOR BIT 2 SET + AND INTWRD + SNA CLA + JMP TWOVEL /NOT SET + + TAD TWOSIN /UPDATE X VELOCITY COMPONENT BY SINE OF + TAD TWOVEX /ANGLE OF ORIENTATION + JMS I VEESCL /AND SCALE TO NOT EXCEED MAX + DCA TWOVEX /UPDATE Y COMPONENT WITH COSINE + + TAD TWOCOS + TAD TWOVEY + JMS I VEESCL + DCA TWOVEY + + + +TWOVEL, TAD TWOVEX /NOW UPDATE THE POSITION WITH THE VELOCITY + JMS I ISHFT /COMPONENTS/16 + JMS I ISHFT + TAD TWOPEX + DCA TWOPEX + TAD TWOVEY + JMS I ISHFT + JMS I ISHFT + TAD TWOPEY + DCA TWOPEY + TAD TWOOUT + SZA CLA + JMP I IONEST + + + +TWOLNC, TAD LNC2FG /NOW CHECK FOR PROJECTILE LAUNCH. FIRST + SNA CLA /TEST TO SEE IF RELOAD COMPLETE + JMP .+3 + ISZ LNC2FG /NO, COUNT ONE CYCLE AND EXIT + JMP I IONEST + IAC /YES, TEST TRIGGER BIT 11 + AND INTWRD + SNA CLA + JMP I IONEST /NOT SET, HELL WITH IT + + TAD PROLIF /OK, SET PROJECTILE LIFE + DCA I AUTO16 /AUTO16 IS ALWAYS POINTING AT THE NEXT SLOT + TAD TWOVEX /ADD SHIPS VELOCITY + JMS I ISHFT /(ADJUSTED) + JMS I RSHIFT + TAD TWOSIN /TO THAT OF PROJECTILE - AGAIN X COMPONENT + JMS I RSHIFT /FROM SINE OF ANGLE OF ORIENTATION + DCA I AUTO16 + TAD TWOSIN /SET INITIAL POSITION TO BE JUST AHEAD + CLL RTL /OF THE SHIP + TAD TWOPEX /X COMPONENT + DCA I AUTO16 + TAD TWOVEY /NOW THE Y COMPONENTS FROM Y VELOCITY + JMS I ISHFT /Y POSITION AND COSINE + JMS I RSHIFT + TAD TWOCOS + JMS I RSHIFT + DCA I AUTO16 + TAD TWOCOS + CLL RTL + TAD TWOPEY + DCA I AUTO16 + TAD M200 + DCA LNC2FG /200 CYCLES OF RELOAD + JMS I RESET1 /DRINK LEADEN DEATH, NUMBER ONE! + + JMP I .+1 /FINAL EXIT TO DISPLAY FILE CALCULATIONS +IONEST, ONESET + +LNC2FG, 0 /RELOAD COUNT + +OP14, 14 /HYPERSPACE CODE +OM14, -14 +TWOWN, TWOWIN + + +/ +/ HERE BEGINS THE DISPLAY CALCULATIONS FOR THE TWO SHIPS. AT +/ THIS POINT ONLY THE POSITION AND ORIENTATION OF EACH VESSEL +/ IS ONF INTEREST SINCE THE VELOCITY AND ALL THAT HAVE ALREADY +/ BEEN TAKEN CARE OF. FOR THE BOTH SHIPS THE DISPLAY FILES ARE +/ CALCULATED AS A SERIES OF PAIRS OF X,Y COORDINATES. BETWEEN +/ EACH PAIR OF POINTS A FOUR POINT VECTOR WILL BE DRAWN. THE +/ ACTUAL COORDINATES ARE CALCULATED AS DISPLACEMENTS +/ FROM THE CENTRAL PSOTION OF THE SHIP, TAKING INTO ACCOUNT THE +/ ANGLE OF ORIENTATION. THE FORMULAS FOLLOWED ARE: +/ +/ X(POINT)=X(BASE)+X(REL)*COS[THE]+Y(REL)*SINE[THE] +/ +/ Y(POINT)=Y(BASE)+Y(REL)*COS[THE]-X(REL)*SINE[THE] +/ +/ WHERE SINE[THE] AND COS[THE] ARE THE FUNCTIONS OF THE +/ ANGLE OF ORIENTATION, X(BASE) AND Y(BASE) ARE THE +/ COORDINATES OF THE SHIPS POSITION AND X(REL) AND Y(REL) +/ CORRESPOND TO DISPLACEMENT PAIRS DEPENDING ON THE SHAPE +/ OF THE FIGURE. ALL X AND Y RELS LIE WITHIN THE RANGE 0-3 AND +/ THERE FORE ALL NECESSARY DISPLACEMENTS FROM BASE COORDINATES +/ MAY BE CALCULATEDFROM DIFFERENT COMBINATIONS OF T10SIN, T20COS +/ ETC. THESE VALUES ARE CALCULATED BY A CALL TO POSCAL WITH THE SINE +/ AND COSINE OF THE ANGLE OF INTEREST IN CALSIN AND CALCOS. +/ +/ FOLLOWING THIS METHOD ANY FIGURE DESCRIBABLE WITH A 7 BY 7 +/ MATRIX OF POINTS MAY BE QUICKLY CALCULATED. +/ +/ BEGINNING AT ONESET DIFFERENT DISPLACEMENT PAIRS ARE CALCULATED +/ AND DEPOSITIED THROUGH AUTO10 TO FORM THE DISPLAY FILE FOR SHIP NUMBER ONE. +/ + + + *1000 + +ONESET, CLA CLL /BEGIN DISPLAY FILE FOR NUMBER ONE + TAD ONEFLG /DONT BOTHER IF NOT IN NORMAL SPACE + SZA CLA + JMP I ITWOST + TAD ONESIN /SET UP FOR MATRIX COMPONENT CALCULATIONS + DCA CALSIN + TAD ONECOS + DCA CALCOS + JMS I CALPOS /CALL THE CALCULATOR + +/ +/ CONSIDER THE 7 BY 7 MATRIX OF DISPLACEMENT POINTS WITH THE +/ CENTER AT 0,0 CORRESPONDING TO THE SHIPS POSITION. A SERIES +/ OF POINTS IS NOW DESCRIBED AROUND THIS CENTER USING THE +/ MULTIPLES OF THE TRIG FUNCTIONS JUST CALCULATED +/ SO THAT ANY POINT ON THE OUTLINE IS DESCRIBABLE AS X,Y +/ DISPLACED BY X,Y OF THE SHIP ITSELF +/ + + TAD ONEFIL /SET UP AUTO10 AS THE DISPLAY FILE + DCA AUTO10 /POINTER + TAD ONEPEX /THE FIRST POINT OF THE OUTLINE IS + TAD T30SIN + DCA I AUTO10 / 0,3 OR TOP CENTER + TAD ONEPEY + TAD T30COS + DCA I AUTO10 + + TAD T10COS + CIA /THE SECOND IS + TAD ONEPEX + DCA I AUTO10 / -1,0 + TAD T10SIN /OR JUST LEFT OF DEAD CENTER + TAD ONEPEY /AND SO ON + DCA I AUTO10 + + TAD T30SIN + TAD T30COS /THE THIRD POINT IS + CIA + TAD ONEPEX / -3,-3 + DCA I AUTO10 + TAD T30COS /OR BOTTOM LEFT HAND CORNER + CIA + TAD T30SIN + TAD ONEPEY + DCA I AUTO10 + + + + TAD T10SIN + CIA /FOURTH POINT + TAD ONEPEX + DCA I AUTO10 / 0,-1 + TAD T10COS + CIA /OR JUST BELOW CENTER + TAD ONEPEY + DCA I AUTO10 + +FLAM1, TAD INTWRD /TEST FOR POWER ON. IF ON, DRAW THE + AND P40 /FLAME WITH AN EXTRA POINT SOME + SNA CLA /DISTANCE DIRECTLY BELOW THE SHIP + JMP ONECON /POWER NOT ON - CONTINUE + TAD ONEOUT /DO NOT ALLOW IF EXPLODING + SZA CLA + JMP ONECON + + TAD ONFG1 /USE ONFG1 TO TURN THE FLAME ON AND + SNA /OFF TO MAKE IT FLICKER. DISPLAY THE + CLA CLL CMA RAL /FLAME ONE TIME OUT OF THREE + DCA ONFG1 + + ISZ ONFG1 + JMP ONECON /ONE OUT OF THREE TIMES THIS WILL SKIP + + TAD ONFG2 /VARY ALSO THE LENGHT OF THE FLAME + CMA /WITH LONG SHORT LONG SHORT + DCA ONFG2 + + TAD ONFG2 /TIP OF FLAME AT EITHER + SNA CLA + TAD T10SIN / 0,-4 OR + TAD T30SIN / 0,-3 + CIA + TAD ONEPEX + DCA I AUTO10 + TAD ONFG2 + SNA CLA + TAD T10COS + TAD T30COS + CIA + TAD ONEPEY + DCA I AUTO10 + + TAD T10SIN + CIA + TAD ONEPEX /RETURN DISPLAY TO 0,-1 + DCA I AUTO10 + TAD T10COS + CIA + TAD ONEPEY + DCA I AUTO10 + CLA CLL CMA RAL /ADD -2 TO POINT COUNT + + + +ONECON, TAD M6 /SET POINT COUNT TO -6 OR -8 + DCA ONECNT + + TAD T30SIN /CONTINUE WITH DISPLAY FILE - THIS POINT + CIA + TAD T30COS / AT 3,-3 + TAD ONEPEX / + DCA I AUTO10 /OR LOWER RIGHT HAND CORNER + TAD T30SIN + TAD T30COS + CIA + TAD ONEPEY + DCA I AUTO10 + + TAD T10COS /NEXT + TAD ONEPEX / + DCA I AUTO10 / 1,0 + TAD T10SIN / + CIA / OR JUST RIGHT OF CENTER + TAD ONEPEY + DCA I AUTO10 + + TAD T30SIN /FINALLY BACK TO + TAD ONEPEX / + DCA I AUTO10 / 0,3 + TAD T30COS / + TAD ONEPEY / TOP CENTE + DCA I AUTO10 + + JMP I ITWOST /NOW FOR NUMBER TWO +ITWOST, TWOSET + +ONFG1, 0 /USED TO COUNT FLICKERS +ONFG2, 0 /SHORT OR LONG FLAG + + +/ +/ HERE BEGINS THE DISPLAY FILE GENERATOR FOR SHIP TWO. +/ IT WORKS JUST LIKE THE ONE FOR NUMBER ONE BUT WITH +/ DIFFERENT DISPLACEMENT PAIRS AND TWO EXTRA POINTS +/ + + *1200 + +TWOSET, CLA CLL /DONT BOTHER IF NOT IN NORMAL SPACE + TAD TWOFLG + SZA CLA + JMP I IFILDS + TAD TWOSIN /SET UP TO HAVE DISPLACEMENT INCREMENTS + DCA CALSIN /CALCULATED + TAD TWOCOS + DCA CALCOS + JMS I CALPOS + + TAD TWOFIL /SET AUTO10 TO POINT TO SECOND DISPLAY + DCA AUTO10 /FILE + TAD T30SIN /FIRST POINT AT + TAD TWOPEX / + DCA I AUTO10 / 0,3 + TAD T30COS / + TAD TWOPEY / OR TOP CENTER + DCA I AUTO10 + + TAD T20COS + CIA + TAD T20SIN + TAD TWOPEX + DCA I AUTO10 + TAD T20SIN + TAD T20COS /SECOND POINT + TAD TWOPEY / -2,2 + DCA I AUTO10 + + TAD T20COS /THIRD POINT + CIA / -2,0 + TAD TWOPEX + DCA I AUTO10 + TAD T20SIN + TAD TWOPEY + DCA I AUTO10 + + + + TAD T20COS + TAD T30SIN + CIA + TAD TWOPEX /FOURTH POINT + DCA I AUTO10 / -2,-3 + TAD T30COS + CIA + TAD T20SIN + TAD TWOPEY + DCA I AUTO10 + + + + TAD T20SIN + CIA /NEXT + TAD TWOPEX / 0,-2 + DCA I AUTO10 + TAD T20COS + CIA + TAD TWOPEY + DCA I AUTO10 + +FLAM2, CLA CLL IAC RAL /NOW THE FLAME BIT. CHECK FOR POWER ON + AND INTWRD + SNA CLA + JMP TWOCON /NO, FORGET IT + TAD TWOOUT /NOT ALLOWED IF EXPLODING + SZA CLA + JMP TWOCON + + TAD TWFG1 /SET THE 1-3 FLICKER AS WITH #1 + SNA + CLA CLL CMA RAL + DCA TWFG1 + + ISZ TWFG1 /ALSO THE LENGHT VARIATION + JMP TWOCON + + TAD TWFG2 /EVERY OTHER TIME LONG + CMA + DCA TWFG2 + /FLAME TIP AT EITHER + TAD TWFG2 / 0,-3 + SNA CLA /OR + TAD T20SIN / 0,-5 + TAD T30SIN + CIA + TAD TWOPEX + DCA I AUTO10 + TAD TWFG2 + SNA CLA + TAD T20COS + TAD T30COS + CIA + TAD TWOPEY + DCA I AUTO10 + + TAD T20SIN /NOW BACK UP TO THE SHIP + CIA + TAD TWOPEX + DCA I AUTO10 + TAD T20COS + CIA + TAD TWOPEY + DCA I AUTO10 + + CLA CLL CMA RAL /ADD -2 TO POINT COUNT + + + +TWOCON, TAD M10 /SET POINT COUNT TO -8 OR -10 + DCA TWOCNT + + TAD T30SIN /CONTINUE WITH DISPLAY FILE + CIA /NEXT POINT AT 2,-3 + TAD T20COS + TAD TWOPEX + DCA I AUTO10 + TAD T30COS + TAD T20SIN + CIA + TAD TWOPEY + DCA I AUTO10 + + + + TAD T20COS /NEXT POINT + TAD TWOPEX / + DCA I AUTO10 / 2,0 + TAD T20SIN + CIA + TAD TWOPEY + DCA I AUTO10 + + TAD T20COS /AND THE NEXT AT + TAD T20SIN + TAD TWOPEX / 2,2 + DCA I AUTO10 + TAD T20SIN + CIA + TAD T20COS + TAD TWOPEY + DCA I AUTO10 + + TAD T30SIN + TAD TWOPEX + DCA I AUTO10 + TAD T30COS /AND THE LAST AT + TAD TWOPEY / + DCA I AUTO10 / 0,3 + + JMP I IFILDS /NOW TO DISPLAY THE WHOLE MESS +IFILDS, FILDIS + +TWFG1, 0 /FLIK THE FLAME +TWFG2, 0 /LONG OR SHORT + + +/ +/ HERE TO DISPLAY THE TWO SHIPS. CHECK FIRST FOR COLLISION +/ AND THEN SET THE TWO PAIRS OF COORDENATES FOR THE END +/ POINTS AND CALL THE "VECTOR GENERATOR" TO DRAW THE DOTS +/ IN BETWEEN. WHEN THE COUNT OVERFLOWS DO THE SAME FOR +/ NUMBER TWO. THEN EXIT TO DISPLAY ALL THE PROJECTILES. +/ + + *1400 + +FILDIS, CLA CLL /ALL SET TO GO + JMS I COLIDE /TEST FOR COLLISION FIRST +/ DSB 1 /IF NO COLLISION + TAD ONEFLG /SKIP NUMBER ONE IF NOT IN NORMAL + SZA CLA /SPACE + JMP TWODIS + + TAD ONEFIL /SET UP POINTERS TO DISPLAY FILE + DCA AUTO10 /FOR NUMBER ONE + TAD ONECNT /ALONG WITH VECTOR COUNT + DCA AUTO11 + TAD I AUTO10 /SET OUT THE FIRST POINT PAIR + DCA XONEDS + TAD I AUTO10 + DCA YONEDS + TAD ONEOUT /NORMAL DISPLAY OR EXPLOSION? + SZA CLA + JMP I IONEEX /GO ELSE WHERE FOR EXPLOSION + +FILONE, TAD I AUTO10 /STEP TO NEXT PAIR OF POINTS + DCA XTWODS /SET X AND Y TO NEW POINT + TAD I AUTO10 + DCA YTWODS + JMS I VECTOR /CALL THE DOT DRAWING MACHINE + ISZ AUTO11 + SKP /COUNT + JMP TWODIS /DO NUMBER TWO ON OVERFLOW + TAD XTWODS /SWAP POINTS FOR NEXT PAIR + DCA XONEDS + TAD YTWODS /THE GENERATOR DRAWS FROM ONE + DCA YONEDS /TOWARDS TWO + JMP FILONE + + + +TWODIS, TAD TWOFLG /HERE TO DO NUMBER TWO + SZA CLA /BUT NOT IF IN HYPER SPACE + JMP I IPRODS + + TAD TWOFIL /SET UP FILE POINTER AS IN ONE + DCA AUTO10 + TAD TWOCNT /AND THE COUNT + DCA AUTO11 + TAD I AUTO10 /I SUPPOSE THIS COULD BE A SUBROUTINE TOO + DCA XONEDS + TAD I AUTO10 + DCA YONEDS + TAD TWOOUT /IS IT EXPLODING? + SZA CLA + JMP I ITWOEX /YES, HOW EXCITING + +TWDLOP, TAD I AUTO10 /NO HOW DULL, STICK IN NEXT PAIR OF + DCA XTWODS /POINTS + TAD I AUTO10 + DCA YTWODS /AND CALL THE VECTOR SEQUENCE + JMS I VECTOR + ISZ AUTO11 + JMP .+3 + + JMP I .+1 /WHEN COUNT OVERFLOWS GO ON TO +IPRODS, PRODIS /DO THE PROJECTILE THING + + TAD XTWODS /OTHERWISE SWAP ON TO THE NEXT PAIR + DCA XONEDS /OF POINTS + TAD YTWODS + DCA YONEDS + JMP TWDLOP + +COLIDE, COLLID +IONEEX, ONEEXP +ITWOEX, TWOEXP + + +/ +/ THIS IS THE SO CALLED "VECTOR GENERATOR" WHICH DRAWS A +/ SERIES OF DOTS FROM XONEDS,YONEDS TO XTWODS,YTWODS. +/ THE COORDINATE COMPONENTS ARE DIVIDED INTO FOURTHS AND +/ FOUR DOTS DRAWN ON THE SCOPE SCREEN. NOTE THAT NO DOT +/ IS DRAWN AT XONEDS,YONEDS. THIS IS COMPENSATED FOR ELSEWHERE. +/ + +DISPLY, 0 /ENTER TO DRAW A FOUR POINT VECTOR + CLA + TAD XONEDS /FROM XONEDS,YONEDS + CIA /TO XTWODS,YTWODS + TAD XTWODS /DIVIDE COORDINATE DIFERENCES INTO + JMS DISHFT /FOURTHS + DCA DIXTEM /AND STORE INCREMENT + TAD YONEDS + CIA + TAD YTWODS + JMS DISHFT /FOURTHS + DCA DIYTEM + TAD M4 /FOR FOUR DOTS + DCA DISCNT + +DISLOP, TAD XONEDS /ADD INCREMENT TO CURRENT X AND Y + TAD DIXTEM + DCA XONEDS /NOTE THAT THIS ROUTINE DESTROYS + TAD YONEDS /XONEDS AND YONEDS + TAD DIYTEM + DCA YONEDS + TAD XONEDS +/ RTR /DIVIDE BY 8 TO FIT SCREEN SIZE +/ RAR + DXC DXL /SET X VALUE + CLA + TAD YONEDS /DO THE SAME FOR Y +/ RTR +/ RAR + DYC DYL DIS /AT LAST SOMETHING TO SEE!! + CLA + ISZ DISCNT /DONE YET? + JMP DISLOP /NOPE + JMP I DISPLY /YUP + + +DISHFT, 0 /A GENERALIZED SHIFT ROUTINE CALLED + CLL /FROM EVERYWHERE TO DIVIDE THE + SPA /AC BY FOUR WITH AN ASR RIGHT + CML IAC /NOTE THAT NEGATIVE NUMBERS ARE + RAR /ROUNDED UPWARDS (TOWARD ZERO) + CLL /TO MAKE IT COME OUT RIGHT + SPA + CML IAC /EVEN SO THERE ARE SOME ROUNDING ERRORS + RAR /SOMEWHERE. SO MUCH FOR 12 BIT MACHINES + JMP I DISHFT + + +/ +/ HERE TO DISPLAY ALL THE PROJECTILES AND TEST FOR HITS. +/ THE PROJECTILE DISPLAY FILE IS SEARCHED FOR PROJECTILES WITH +/ NON-ZERO COUNTS AND WHEN ONE IS FOUND THE POSITION IS +/ UPDATED BY THE VELOCITY, THE POINT DISPLAYED AND TESTED FOR +/ A HIT. +/ + + *1600 + +PRODIS, CLA CLL / BEGIN DISPLAY OF THE PROJECTILES + TAD BUFST /POINT TO BEGINNING OF DISPLAY FILE + DCA BUFTMP +/ DSB 2 /SET EXTRA BRIGHT FOR SINGLE POINTS + +PROLOP, TAD I BUFTMP /PICK UP NEXT COUNT + SNA + JMP EXPIRE /THIS ONE IS DEAD - GO TO THE NEXT + IAC /INCREMENT COUNT AND REPLACE + DCA I BUFTMP + ISZ BUFTMP /BUMP POINTER TO X VELOCITY + TAD I BUFTMP + ISZ BUFTMP /THEN TO XPOSITION AND UPDATE X POSITION + TAD I BUFTMP /WITH THE VELOCITY WHICH IS CONSTANT + DCA I BUFTMP + TAD I BUFTMP + DCA PROX /AND STORE X POSITION FOR DISPLAY AND TEST + ISZ BUFTMP /NOW TO Y POSITION AND VELOCITY + TAD I BUFTMP + ISZ BUFTMP + TAD I BUFTMP /SAME LITTLE GAME + DCA I BUFTMP + TAD I BUFTMP + DCA PROY /STORE THE NEW Y VALUE + + TAD PROX /DISPLAY THE POINT WITH +/ RTR /THE SAME SHIFT AS FOR THE SHIPS +/ RAR /FOR THE SMALL SCREEN + DXC DXL + CLA + TAD PROY +/ RTR / +/ RAR + DYC DYL DIS /THERE IT IS!! + CLA + JMS I CHKOUT /TEST FOR A HIT + ISZ BUFTMP /MOVE POINTER ON AND TEST FOR END + TAD BUFTMP /OF BUFFER + TAD BUFLIM + SZA CLA + JMP PROLOP /NOT AT END - CONTINUE + + / +/ HERE AT THE END OF THE PROJECTILE DISPLAY. IF THE GAMOVR +/ FLAG IS SET, GO ON TO THE MESSAGE DISPLAY - VICTORY LAP +/ SECTION. OTHERWISE PICK UP THE REMAINING CLOCK COUNT +/ TO GIVE THE FANS SOMETHING TO LOOK AT, AND MOVE THE +/ ELECTRON BEAM TO A LOWER CORNER. THE COUNT DISPLAYED +/ IN THE AC IS THE NUMBER OF 100 USEC CLOCK TICKS REMAINING +/ WHEN THIS CODE IS REACHED BEFORE THE NEXT UPDATE WOULD +/ BEGIN. TURNS OUT THAT ROUGHLY 2/3 OF THE CPU IS LEFT +/ OVER SHOULD ANYONE WANT TO DO ANYTHING VERY FANCY. +/ + + +FINISH, TAD GAMOVR /IS THIS THE VICTORY LAP OR WHAT? + SZA CLA + JMP I ENDGAM /YES, GO TO PUT UP THE MESSAGE +/ TAD M400 /MOVE THE BEAM OFF SCREEN +/ DYC DYL + CLA CLL +/ DXC DXL + TAD INTCNT /PICK UP THE COUNT + CIA + JMP . + +ENDGAM, JOBLOP + + +EXPIRE, TAD BUFTMP /HERE TO ADVANCE THE BUFFER + TAD P5 /POINTER TO THE NEXT PROJECTILE + DCA BUFTMP /UNLESS THE END + TAD BUFTMP /OF THE BUFFER + TAD BUFLIM /IS REACHED + SZA CLA /IN WHICH CASE + JMP PROLOP /IT + JMP FINISH /QUITS + +BUFST, DISBUF+101 +BUFLIM, -DISBUF-175 +CHKOUT, CHECK + +RESE1, 0 /THIS IS CALLED TO SET THE POINTER + TAD MRES /(AUTO16) TO THE NEXT FREE SLOT + DCA RESCNT /FOR A PROJECTILE LAUNCH. 12 POSSIBLE + +RESLOP, TAD RESPNT /MOVE THE POINTER TO THE NEXT SLOT + TAD P5 + DCA RESPNT + TAD RESPNT /RESTE IF AT END OF BUFFER + TAD BUFLIM + SZA CLA + JMP RESCON + TAD BUFST + DCA RESPNT + +RESCON, TAD I RESPNT /FIND A HOLE YET? + SNA CLA + JMP RESFND /YES, SET UP AUTO16 + ISZ RESCNT /NO COUNT + JMP RESLOP /AND TRY AGAIN + HLT /NO HOLES AT ALL? + +RESFND, CMA /BACK THE POINTER FOR AUTO INDEXING + TAD RESPNT + DCA AUTO16 + JMP I RESE1 + +MRES, -14 +RESCNT, 0 +RESPNT, 0 + +SETBUF, 0 + CMA /THIS ROUTINE IS CALLED FROM THE + TAD BUFST /STARTING SEQUENCE TO INITIALIZE ALL + DCA AUTO16 /THE BUFFER POINTERS AND SO ON + TAD BUFST + DCA BUFTMP + TAD BUFST + DCA RESPNT + TAD BUFST + DCA SETPNT +SETLOP, DCA I SETPNT + ISZ SETPNT + TAD SETPNT + TAD BUFLIM + SZA CLA + JMP SETLOP + JMP I SETBUF + +SETPNT, 0 + + +/ +/ THIS HERE NOW THING CHECKS THE COORDINATES OF THE MOST RECENTLY +/ DISPLAYED PROJECTILE AGAINST THOSE OF THE SHIPS ON THE SCREEN. +/ IF WITH A COLLISION LIMIT A HIT IS RECORDED AND THE LIFE +/ COUNT OF THE PROJECTILE ZEROED TO REMOVE IT. A HIT SHIP +/ IS SUITABLY FLAGGED +/ + + *2000 + +CHECK, 0 /HERE TO TEST FOR A PROJECTILE HIT + TAD ONEFLG /CANT HIT SOMETHING IN HYPERSPACE + SZA CLA + JMP CHECK2 + TAD ONEOUT /OR SOMETHING THAT'S BEEN HIT + SZA CLA + JMP CHECK2 + + TAD PROX /CHECK X COORDINATES OF SHIP ONE + CIA /AND PROJECTILE + TAD ONEPEX /THIS SORT OF THING IS WHY THE + SPA /COORDINATES HAVE TO BE MAINTAINED TO 12 + CIA /BITS + TAD LIMIT /CLOSE ENOUGH? + SMA CLA + JMP CHECK2 /IF X ISN' CLOSE ENOUGH THEN NO HIT + TAD PROY /X WAS CLOSE ENOUGH, HOW ABOUT Y? + CIA + TAD ONEPEY + SPA + CIA + TAD LIMIT + SMA CLA + JMP CHECK2 /NO HIT + + TAD MEXP /DEPOSIT EXPLOSION COUNT IN ONEOUT + DCA ONEOUT /ALL THAT IS NECESSARY + JMS CUTOUT /REMOVE PROJECTILE + + + +CHECK2, TAD TWOFLG /NO HIT ON NUMBER ONE, TRY NUMBER TWO + SZA CLA + JMP I CHECK /BUT NOT IF IN HYPERSPACE + TAD TWOOUT /OR IF ALREADY HIT + SZA CLA + JMP I CHECK + + TAD PROX /CHECK X'S FIRST + CIA + TAD TWOPEX + SPA /GET ABSOLUTE VALUE OF DIFFERENCE + CIA + TAD LIMIT /AND TEST MAGNITUDE AGAINST PROXIMITY + SMA CLA /LIMIT + JMP I CHECK /NOWHERE NEAR CLOSE + + TAD PROY /NYAH, NYAH + CIA /TRY THE Y'S + TAD TWOPEY + SPA + CIA /ABSOLUTE VALUE OF DIFFERENCE + TAD LIMIT + SMA CLA + JMP I CHECK /CLEAN MISS! + + TAD MEXP /HIT ON TWO - END EVERYTHING BY SETTING + DCA TWOOUT /TWOOUT TO NON-ZERO EXPLOSION COUNT + JMS CUTOUT + JMP I CHECK /EXIT AFTER DESTOYING PROJECTILE + +LIMIT, -120 /PROXIMITY LIMIT FOR WHAT CONSTITUTES A HIT + +CUTOUT, 0 /THIS ROUTINE ZEROES OUT THE MOST RECENTLY + TAD M4 /DISPLAYED PROJECTILE BY ZEROEING THE + TAD BUFTMP /COUNT + DCA CUTPNT + DCA I CUTPNT + JMP I CUTOUT + +CUTPNT, 0 + + +/ +/ THIS ROUTINE IS CALLED TO TEST FOR A COLLISION BETWEEN THE +/ TWO SHIPS. THE COORDINATES OF BOTH ARE COMPARED +/ AND IFF SUFFICIENTLY CLOSE BOTH ARE DESTROYED BY SETTING +/ THEIR EXPLOSION COUNTS NON-ZERO. +/ + + +COLLID, 0 /HERE TO TEST FOR COLLISION + TAD ONEFLG /NO TEST IF EITHER SHIP IS IN + SZA CLA /HYPERSPACE OR EXPLODING + JMP I COLLID + TAD TWOFLG + SZA CLA + JMP I COLLID + TAD ONEOUT + SZA CLA + JMP I COLLID + TAD TWOOUT + SZA CLA + JMP I COLLID + + TAD ONEPEX /BOTH SHIPS AVAILABLE FOR COLLISION + CIA /CHECK X COORDINATES FIRST + TAD TWOPEX + SPA /GET ABSOLUTE VALUE OF DIFFERENCE + CIA + TAD COLLIM /CLOSE ENOUGH? + SMA CLA + JMP I COLLID /NOPE, FORGET IT + + TAD ONEPEY /YES, NOW TRY THE Y COORDINATES + CIA + TAD TWOPEY + SPA + CIA /GET MAGNITUDE ONLY + TAD COLLIM + SMA CLA /CLOSE ENOUGH? + JMP I COLLID + TAD MEXP /YES, SET BOTH EXPLOSION COUNTS + DCA ONEOUT + TAD MEXP + DCA TWOOUT + JMP I COLLID + +COLLIM, -300 + +/ +/ THIS ROUTINE IS CALLED TO SET ONE OF THE TWO SHIPS INTO +/ HYPERSPACE. ON ENTRY THE AC=-1 FOR SHIP #1, 0 FOR SHIP +/ NUMBER 2. THE LOCATION CLOCK IS USED FOR A RANDOM +/ ADDRESS POINTER FROM WHICH WILL BE DRAWN THE +/ VARIOUS PARAMETERS FOR REENTRY. +/ + + *2200 + +HYPSET, DCA RTNFLG /HERE WITH AC=-1 OR 0 + TAD RTNFLG /SET UP LIST POINTER + SZA CLA + TAD ONEDIF /TO APPROPRIATE SHIP FILE + TAD TWOLST + DCA AUTO15 + + CLCA /SET UP "RANDOM NUMBER GENERATOR" + /USE CLOCK COUNTER FOR THAT PURPOSE + DCA AUTO17 + TAD I AUTO17 /PICK UP FIRST THE AMOUNT OF TIME + AND TIMOUT /OUT OF NOMAL SPACE LIMITED TO -777 + CIA /UPDATE CYCLES ( ABOUT 15 SECONDS) + DCA I AUTO15 /AND STORE IN ONEOUT OR TWO OUT + + TAD I AUTO17 /THE NEXT RANDOM NUMBER BECOMES THE + JMS I THEADJ /ANGLE OR ORIENTATION ON REENTRY + DCA I AUTO15 + TAD I AUTO17 /AND THE NEXT BECOMES THE X VELOCITY + JMS VEESET /COMPONENT + DCA I AUTO15 + TAD I AUTO17 /AND THEN THE Y COMPONENT + JMS VEESET + DCA I AUTO15 + TAD I AUTO17 + DCA I AUTO15 + + TAD I AUTO17 + DCA I AUTO15 + + TAD I AUTO17 /FINALLY SEE IF RETURN WILL BE SUCCESSFLY + AND TIMOUT + TAD MHYP /ABOUT 3/4 CHANCE + SMA CLA + JMP HYPRET /OK + TAD RTNFLG /THIS IS THE ONE TIME IN FOUR. SET + SZA CLA /UP FOR EXPLOSION ON REENTRY + TAD ONEDIF + TAD OUTLOC + DCA VEESET + TAD MEXP + DCA I VEESET + +HYPRET, ISZ RTNFLG + JMP I TWORTN + JMP I ONERTN + +TIMOUT, 777 +ONEDIF, ONEFLG-TWOFLG +TWOLST, TWOFLG-1 +RTNFLG, 0 +ONERTN, TWOUP +TWORTN, ONESET +OUTLOC, TWOOUT +MHYP, -200 + + + +VEESET, 0 /HERE TO LIMIT VELOCITY COMPONENTS + CLL + SPA /GET MAGNITUDE + CML + AND HM177 /LIMIT TO 177 + SZL CLL + CIA + JMP I VEESET /AND EXIT + +HM177, 177 + +ONEEXP, CLA CLL /HERE TO DISPLAY SHIP NUMBER ONE AS + TAD ONETHE /AN EXPLOSION + TAD INCONE /FIRST ROTATE IT BY A GOOD DOLLOP + DCA ONETHE + JMS I IXPDIS /THEN CALL THE EXPLOSION GENERATOR + ISZ ONEOUT /DONE WITH THE EXPLOSION? + JMP I NOWTWO /NO, NORMAL RETURN + + IAC /YES, SET INTO PSEUDO HYPER SPACE + DCA ONEFLG + IAC /DISABLE RETURN FROM HYPER SPACE + DCA ONEFIN + + TAD TWOFIN /IS NUMBER TWO STILL AROUND? + SNA CLA + JMP I NOWTWO /YES, RETURN + JMP I TIEUP /NO, TIE BALL GAME + + +TWOEXP, CLA CLL /HERE TO DISPLAY SHIP NUMBER TWO + TAD TWOTHE /AS AN EXPLOSION. BASH IT AROUND + TAD INCTWO + DCA TWOTHE + JMS I IXPDIS /THEN DISPLAY IT + ISZ TWOOUT /DONE WITH EXPLOSION? + JMP I NOWPRO /NO, NORMAL RETURN + + IAC /YES, SEND INTO PSEUDO HYPER SPACE + DCA TWOFLG + IAC /DISABLE NORMAL RETURN FROM HYPERSPACE + DCA TWOFIN + /CHECK NUMBER ONE + TAD ONEFIN + SZA CLA /STILL ALIVE AND WELL? + JMP I TIEUP /NO, TIE GAME + JMP I NOWPRO /YES, CONTINUE ON +NOWTWO, TWODIS +NOWPRO, PRODIS +TIEUP, NOWIN +IXPDIS, EXPDIS +INCONE, 55 +INCTWO, 55 + + +/ +/ HERE TO DISPLAY THE FIGURE POINTED TO BY AUTO10 AS +/ AN EXPLOSION. THIS WORKS THE SAME WAY AS THE NORMAL +/ DISPLAY ROUTINE EXCEPT THAT THE COORDINATE INCREMENTS +/ ARE INVERTED TURNING THE FIGURE INSIDE OUT FOR S +/ A SORT OF CLOBBY EXPLOSION. +/ + + *2400 + +EXPDIS, 0 /HERE TO DISPLAY A FIGURE INSIDE OUT + TAD I AUTO10 /WITH THE POINTERS AND COUNTS ALREADY + DCA XTWODS /SET UP BY FILDIS OR TWODIS + TAD I AUTO10 /STICK NEXT TWO POINTS INTO LINE + DCA YTWODS + + TAD XTWODS + CIA /CALCULATE INCREMENT THE WRONG WAY + TAD XONEDS + DCA DIXTEM /AND STORE + TAD YTWODS + CIA + TAD YONEDS + DCA DIYTEM /SAME FOR Y + + TAD M4 /4 DOTS IN THE VECTOR" + DCA DISCNT /COULD HAVE CALLED THE OTHER + /VECTOR GENERATOR I SUPPOSE +EXPLOP, TAD XONEDS + TAD DIXTEM /ADD X AND Y INCREMENTS TO THE RUNNING + DCA XONEDS /TOTALS AND DISPLAY THE RUNNING + TAD YONEDS /TOTALS NORMAL SIZE + TAD DIYTEM + DCA YONEDS + + TAD XONEDS +/ RTR /COULD MAKE TWICE AS BIG BY NOP-ING +/ RAR /THE RAR'S BUT THE SCREEN IS SMALL ENOUGH + JMS I IVCLDX /AS IT IS + CLA + TAD YONEDS +/ RTR +/ RAR + JMS I IVCLDY +/ DISD +/ JMP .-1 +/ DIXY + + CLA + ISZ DISCNT /DONE 4 DOTS? + JMP EXPLOP /NO + + ISZ AUTO11 /DONE ALL VECTORS IN THE FILE? + SKP + JMP I EXPDIS /YES, EXIT + + TAD XTWODS /NO SWAP TO NEXT PAIR OF POINTS + DCA XONEDS + TAD YTWODS + DCA YONEDS + JMP EXPDIS+1 + + + +/ +/ VEELIM IS THE SCALING ROUTINE FOR VELOCITY COMPONENTS. +/ THE COMPONENTS ARE SCALED TO REMAIN IN THE RANGE 140 +/ TO -140. THIS IS NECESSARY TO AVOID ASTRONOMICAL SPPED +/ BUILDUP ON THE SMALL SCREEN. UNFORTUNATELY THE X AND Y +/ COMPONENTS ARE SCALED SEPARATELY WHICH GIVES SLIGHT BUT +/ NOTICABLE DISTORTIONS IN DIAGONAL FLIGHT PATHS. IN THE +/ NORMAL HEAT OF THE BATTLE NO ONE WILL REALLY NOTICE. +/ + + +VEELIM, 0 /ENTER TO SCALE VELOCITY HELD IN + DCA VEEHLD /AC + TAD VEEHLD + SMA /BRANCH FOR POSITIVE OR NEGATIV + JMP VEEPOS + TAD VEEMAX + SMA CLA /GREATER THAN MAXIMUM POSITIVE? + JMP VEECLR /NO + TAD VEEMIN /I MEAN MAXIMUM NEGATIVE - YES SET + JMP I VEELIM /TO MAX NEGATIV + +VEEPOS, TAD VEEMIN /GREATER THAN MAX? + SPA CLA + JMP VEECLR /NO + TAD VEEMAX /YES SET TO MAX + JMP I VEELIM + +VEECLR, TAD VEEHLD /IT WAS IN RANGE ALL ALONG + JMP I VEELIM + +VEEHLD, 0 +VEEMIN, -140 +VEEMAX, 140 + +THEAJI, 0 /HERE TO ADJUST THE ANGLE TO A RANGE + SMA /0-550 OR 0-360 DEGREES. THIS IS + JMP .+3 /NECESSARY TO INSURE THAT PUSHDOWN OVERFLOW + TAD P550 /WILL NOT HAPPEN IN THE SINE AND COSINE + JMP .-3 /ROUTINES. THIS SIMPLY TAKES THE AC + TAD M550 /MODULO 360 AND EXITS + SMA + JMP .-2 + TAD P550 /FOLLOW IT THROUGH AND SEE IF IT DOESN'T + JMP I THEAJI + + +/ +/ ONE OF THESE ROUTINE IS ENTERED WHEN A WINNER IS DECLARED. +/ THE ADDRESS OF THE VICTORY MESSAGE IS PLACED IN MESS AND +/ THE GAMOVR FLAG SET TO CAUSE A BRANCH TO JOBLOP WHEN THE +/ DISPLAY CYCLE IS COMPLETED. THE ROUTINE WILL THEN DISPLAY +/ THE APPROPRIATE MESSAGE OVER THE REMAINING SHIPS IF +/ ANY UNTIL THE KEYBOARD IS MOLESTED OR THE CLOCK RUNS OUT +/ AND THE NEXT DISPLAY UPDATE CYCLE IS SET. AT ANY RATE THE +/ PROGRAM WILL REACH HERE ONLY WHEN SOMEONE HAS BITTEN THE +/ INTERGALACTIC DUST. +/ + + +ONEWIN, 0 /THIS IS CALLED WHEN TWOFIN IS SET + TAD MES1 /AND ONE FIN IS NOT. SET ONE TO VICTOR + DCA MESS /AND SET GAMOVR FLAG + IAC + DCA GAMOVR + JMP I ONEWIN /THEN RETURN TO UPDATE CYCLE + +TWOWIN, 0 /THIS IS CALLED WHEN ONEFIN IS SET + TAD MES2 /AND TWO FIN IS NOT + DCA MESS /SET ALSO GAMOVR + IAC + DCA GAMOVR + JMP I TWOWIN + +NOWIN, TAD MES4 /GET HERE WHEN BOTH ONEFIN AND TWOFIN + DCA MESS /ARE SET . + IAC + DCA GAMOVR /NOBODY EVER REALLY WINDS + /UP THE WINNER IN THESE THINGS +JOBLOP, +/ DSB 1 /THIS IS ENTERED FROM FINISH WHEN + TAD MES0 /GAMOVR IS SET AND SERVES TO DISPLAY + JMS I MESOUT /THE VICTORY MESSAGE ON THE SCREEN + TAD MESS /USING THE CHARACTER GENERATOR SOMEWHAT + JMS I MESOUT /FURTHER ON UNTIL THE GAME IS RESTARTED + TAD MES5 /OR UNTIL THE INTERRUPT COUNT OVERFLOWS + JMS I MESOUT /AND THE UPDATE CYCLE IS RESTARTED + TAD MES3 + JMS I MESOUT +FINITO, JMP JOBLOP + +MES0, MESS0 +MES1, MESS1 +MES2, MESS2 +MES3, MESS3 +MES4, MESS4 +MES5, MESS5 +MESS, 0 + + +/ +/ THE FOLLOWING ARE THE SINE AND COSINE ROUTINES CUSTOMIZED +/ FOR THIS PROGRAM FROM ANOTHER I WORKED ON. CALL EITHER +/ SINE OR COSINE WITH ANGLE IN DEGREES IN AC. THE ARGUEMENT +/ IS REDUCED THROUGH RECURSION UNTIL BETWEEN 0-89 DEGREES +/ AND THEN A TABLE LOOKUP DONE TO OBTAIN THE VALUE. IT TAKES +/ UP A FAIR AMOUNT OF SPACE BUT IT WORKS JUST FASTER +/ THAN SHEEP. THE COSINE CALL JUST TRANSFORMS THE ARGUEMENT +/ THROUGH SOME TRIGONOMETRIC GARBAGE AND CALLS THE SINE +/ ROUTINE. NOTE THAT CALLING EITHER ROUTINE WITH TOO +/ LARGE AN ARGUEMENT WILL CAUSE PUSHDOWN OVERFLOW AND THEN +/ ALL HELL WILL BREAK LOOSE. THE ORIGINAL ROUTINE FROM WHICH +/ THIS WAS STOLEN HAD FULL WORD PRECISION. +/ + + *6400 + +SINEIN, 0 /I REALLY CANT BRING MYSELF TO COMMENT + DCA SINARG /THIS. IT'S VERY STRAIGHFORWARD + TAD SINEIN + DCA I SINPSH + ISZ SINPSH + TAD SINARG + SZA + JMP SINNG2 + +SINPOP, CLA CLL CMA + TAD SINPSH + DCA SINPSH + TAD I SINPSH + DCA SINEIN + TAD SINARG + JMP I SINEIN + +SINNG2, SMA + JMP SINPOS + CIA + JMS SINEIN + +SINNEG, CIA + DCA SINARG + JMP SINPOP + +SINPOS, TAD M264 + SPA + JMP .+2 + JMP SINNEG-1 + TAD P132 + SPA + JMP SINELK + SZA CLA + JMP .+3 + TAD P37 + JMP SINNEG+1 + + TAD SINARG + TAD M264 + JMP SINNEG-1 + +SINELK, TAD P132 + TAD SINTAB + DCA SINEIN + TAD I SINEIN + DCA SINARG + JMP SINPOP + + + +SINARG, 0 +SINPSH, SINLST +SINLST, 0 + 0 + 0 + 0 + 0 + 0 + +SINTAB, SINES-1 + +COSINI, 0 + CIA + TAD P132 + JMS SINEIN + JMP I COSINI + + + +SINES, 00 /1 + 01 /2 + 01 /3 + 02 /4 + 02 /5 + 03 /6 + 03 /7 + 04 /8 + 05 /9 + 05 /10 + 06 /11 + 06 /12 + 07 /13 + 07 /14 + 10 /15 + 10 /16 + 11 /17 + 11 /18 + 12 /19 + 12 /20 + 13 /21 + 13 /22 + 14 /23 + 15 /24 + 15 /25 + 16 /26 + 16 /27 + 17 /28 + 17 /29 + 20 /30 + 20 /31 + 20 /32 + 21 /33 + 21 /34 + 22 /35 + 22 /36 + 23 /37 + 23 /38 + 24 /39 + 24 /40 + 25 /41 + 25 /42 + 25 /43 + 26 /44 + 26 /45 + 27 /46 + 27 /47 + 27 /48 + 30 /49 + 30 /50 + 30 /51 + 31 /52 + 31 /53 + 31 /54 + 32 /55 + 32 /56 + 32 /57 + 33 /58 + 33 /59 + 33 /60 + 33 /61 + 34 /62 + 34 /63 + 34 /64 + 35 /65 + 35 /66 + 35 /67 + 35 /68 + 35 /69 + 36 /70 + 36 /71 + 36 /72 + 36 /73 + 36 /74 + 36 /75 + 37 /76 + 37 /77 + 37 /78 + 37 /79 + 37 /80 + 37 /81 + 37 /82 + 37 /83 + 37 /84 + 37 /85 + 37 /86 + 37 /87 + 37 /88 + 37 /89 + + + +MULTI, 0 /THIS IS STANDARD SINGLE PRECISION + CLL /MULTIPLY ROUTINE WHICH WAS ONCE + SPA /USED. I'VE LEFT IT IN SINCE + CMA CML IAC /THERE IS LOTS OF CORE LEFT OVER AND + DCA MULMP1 /MAYBLE SOMEDAY I'LL NEED IT TO PUT + DCA MULMP5 /IN A SUN OR SOMETHING. THIS IS THE + TAD I MULTI /STANDARD DEC SUBROUTINE WITH DIFFERENT + SNA /LABELS + JMP MULPSN+2 + SPA + CMA CML IAC + DCA MULMP2 + TAD MULTHR + DCA MULMP3 + +MULMP4, TAD MULMP1 + RAR + DCA MULMP1 + TAD MULMP5 + SZL + TAD MULMP2 + CLL RAR + DCA MULMP5 + ISZ MULMP3 + JMP MULMP4 + TAD MULMP1 + RAR +MULPSN, SZL + JMP MULCMP + DCA MULMP1 + TAD MULMP5 +MULMPZ, ISZ MULTI + JMP I MULTI + +MULCMP, CMA CLL IAC + DCA MULMP1 + TAD MULMP5 + CMA + SZL + IAC + JMP MULMPZ + +MULTHR, 7764 +MULMP1, 0 +MULMP5, 0 +MULMP2, 0 +MULMP3, 0 + + +/ +/ SHIFTR DIVIDES THE AC BY TWO WHETHER POSITIVE OR NEGATIVE +/ AND IS CALLED FROM VARIOUS PLACES. NOT ENTIRELY MYSTERIOUS +/ + + +SHIFTR, 0 + CLL + SPA + CML IAC + RAR + JMP I SHIFTR + + +/ +/ POSCAL IS CALLED TO CALCULATE THE COORDINATE INCREMENTS +/ NECESSARY TO PRODUCE THE SHIP FIGURES. RATHER THAN DOING +/ A LOT OF EXPENSIVE MATH THIS DOES A QUICK PRODUCTION +/ OF 1, 2, AND 3 TIMES THE SIN AND COSINE VALUES FOUND +/ IN CALSIN AND CALCOS LEAVING THEM IN THE TABLE FOR +/ ONESET AND TWOSET. IF THE SCOPE WERE ANY BETTER +/ THIS PROBABLY WOULDN'T BE NEAR GOOD ENOUGH BUT.... +/ + +POSCAL, 0 + TAD CALSIN + + DCA T10SIN + TAD T10SIN + CLL RAL + DCA T20SIN + TAD T10SIN + TAD T20SIN + DCA T30SIN + + TAD CALCOS + + DCA T10COS + TAD T10COS + CLL RAL + DCA T20COS + TAD T10COS + TAD T20COS + DCA T30COS + JMP I POSCAL + +/**************************************************************** +/ VC8-E ROUTINES + + +VDIV, 0 + SMA / SKIP IF MINUS + JMP VPLUS +VMINUS, CMA IAC / COMPLEMENT + RTR / DIVIDE BY FOUR + AND P1777 / DELETE UPPER TWO BITS + CMA IAC + JMP I VDIV / RETURN + +VPLUS, RTR + AND P1777 + JMP I VDIV + +/***** + +VCLDX, 0 / INTENSIFY LAST POINT AND LOAD NEW X VALUE + JMS VDIV / DIVIDE BY FOUR + DISD / DISPLAY READY? + JMP .-1 / WAIT. + DIXY / INTENSIFY + DILX / LOAD NEW X VALUE + JMP I VCLDX / RETURN + +VCLDY, 0 + JMS VDIV / DIVIDE BY FOUR + DILY / LOAD NEW Y VALUE + JMP I VCLDY + +P1777, 1777 + + +/**************************************************************** + + + *7000 + +/GENERAL PURPOSE SYMBOL GENERATOR +/ +CHARS, 0 /ENTRY TO PLOT CHARACTER STRING + DCA ADDR /STORE STRING ADDRESS + TAD I ADDR /FETCH DOUBLE CHARACTER + RTR /SHIFT + RTR / FOR FIRST + RTR / CHARACTER + JMS CHAR /PLOT CHARACTER + SKP /NORMAL RETURN -- SKIP + JMP I CHARS /TERMINATION RETURN -- EXIT + TAD I ADDR /RECALL DOUBLE CHARACTER + ISZ ADDR /ADVANCE STRING ADDRESS + JMS CHAR /PLOT CHARACTER + JMP CHARS+2 /NORMAL RETURN -- REPEAT + JMP I CHARS /TERMINATION RETURN -- EXIT +/ +CHAR, 0 /ENTRY TO PLOT SINGLE CHARACTER + AND K77 /MASK OUT UPPER BITS + CLL RAL /MULTIPLY CODE BY TWO + TAD TABLE /ADD TABLE BASE ADDRESS + DCA POINT /CONSTRUCT POINTER TO 24-BIT CODE + CMA /INITIALIZE COUNTER FOR + DCA COUNT2 / TWO PLOT WORDS + TAD I POINT /FETCH FIRST PLOT WORD + ISZ POINT /INCREMENT POINTER FOR NEXT ONE + SNA /SKIP IF NOT SPECIAL CHARACTER + JMP SPCHAR /ELSE GO PROCESS IT + DCA CURPLT /SAVE CURRENT PLOT BITS +XPLOT, TAD KM6 /INITIALIZE 6-BIT + DCA COUNT6 / COUNTER + TAD YVALUE /RESET Y TEMPORARY + DCA YTEMP / VALUE FOR CHARACTER + TAD XVALUE /OUTPUT CURRENT + DILX /X-VALUE TO CRT + TAD XINCR /INCREMENT + DCA XVALUE / ABSCISSA +YPLOT, TAD CURPLT /RECALL CURRENT PLOT BITS + CLL RAL /GET NEXT BIT + DCA CURPLT /SAVE REMAINING PLOT BITS + SNL /SKIP IF POINT TO PLOT + JMP CNTINU /ELSE JUMP AHEAD + TAD YTEMP /OUTPUT CURRENT + DILY /Y-VALUE TO CRT + DISD / READY TO DISPLAY THE POINT? + JMP .-1 / NO, WE'LL WAIT. + DIXY / SHOOT THE BEAM! + + CLA CLL /CLEAR AC + TAD CURPLT /RECALL CURRENT PLOT BITS + SNA CLA /SKIP IF POINTS REMAINING + JMP WRDEND /ELSE WORD IS FINISHED +CNTINU, TAD YTEMP /INCREMENT TEMPORARY + TAD YINCR / Y-VALUE FOR NEXT + DCA YTEMP / CHARACTER STEP + ISZ COUNT6 /SKIP IF 6 BITS PLOTTED + JMP YPLOT /ELSE PLOT NEXT ONE + JMP XPLOT /GO UPDATE X-VALUE +WRDEND, ISZ COUNT2 /SKIP IF ANOTHER BIT WORD + JMP EXIT /ELSE EXIT + TAD I POINT /FETCH SECOND BIT WORD + SZA /SKIP IF NO PLOT POINTS + JMP XPLOT-1 /ELSE GO PLOT THEM +EXIT, TAD XVALUE /INCREMENT ABSCISSA + TAD XINCR / FOR SPACE BETWEEN + DCA XVALUE / SYMBOLS + JMP I CHAR /EXIT FROM CHAR +/ +SPCHAR, TAD I POINT /FETCH TRANSFER VECTOR + DCA POINT /STORE AS INDIRECT ADDRESS + JMP I POINT /GO TO APPROPRIATE ROUTINE +SPACE, TAD XINCR /FETCH BASIC ABSCISSA INCREMENT + CLL RTL /MULTIPLY BY FOUR AND + JMP EXIT / GO CREATE SPACE +CRLF, TAD INITX /"CARRIAGE RETURN" RESETS X + DCA XVALUE / TO ITS ORIGINAL VALUE +LF, TAD YINCR /"LINE FEED" + CLL RTL / DECREMENTS THE + CLL CIA RAL / Y-VALUE BY + TAD YVALUE / EIGHT SCALE + DCA YVALUE / STEPS + JMP I CHAR /EXIT FROM CHAR +RESET, TAD INITX /"RESET" RESETS + DCA XVALUE / X AND Y TO + TAD INITY / THEIR ORIGINAL + JMP RESET-2 / VALUES +TERM, ISZ CHAR /TERMINATE CODE CAUSES + JMP I CHAR / EXIT TO P+2 +/ +INITX, 0 /INITIAL X-VALUE +INITY, 327 /INITIAL Y-VALUE +XVALUE, 0 /CURRENT X-VALUE +YVALUE, 0 /CURRENT Y-VALUE +XINCR, 6 /BASIC X INCREMENT VALUE +YINCR, 10 /BASIC Y INCREMENT VALUE +YTEMP, 0 /TEMPORARY Y-VALUE +CURPLT, 0 /CURRENT PLOT BITS +ADDR, 0 /CURRENT STRING ADDRESS +COUNT6, 0 /6-BIT COUNTER +COUNT2, 0 /2-WORD COUNTER +KM6, -6 /CONSTANT FOR COUNT6 +K77, 77 /CHARACTER CODE MASK +POINT, 0 /TABLE POINTER +/ + +/ +TABLE, .+1 /TABLE BASE ADDRESS + 0 /SPECIAL CHARACTER (00) + TERM /TERMINATION CODE + 7611 / A + 1176 + 7745 / B + 4532 + 3641 / C + 4122 + 7741 / D + 4136 + 7745 / E + 4541 + 7705 / F + 501 + 7741 / G + 5173 + 7710 / H + 1077 + 4177 / I + 4100 + 2040 / J + 4037 + 7714 / K + 2241 + 7740 / L + 4040 + 7702 / M + 277 + 7706 / N + 3077 + 7741 / O + 4177 + 7705 / P + 502 + 3641 / Q + 6176 + 7715 / R + 2542 + 2245 / S + 5122 + 177 / T + 100 + 3740 / U + 4037 + 1720 / V + 4037 + 7730 / W + 3077 + 4136 / X + 3641 + 374 / Y + 7403 + 6151 / Z + 4543 + 7741 / [ + 0 + 204 / \ + 1020 + 4177 / ] + 0 + 436 / ^ + 400 + 0 /SPECIAL CHARACTER (37) + RESET /RESET + 0 /SPECIAL CHARACTER (40) + SPACE /SPACE + 5600 / ! + 0 + 303 / " + 0 + 1477 / # + 7714 + 2277 / MARKER + 2200 + 2313 / % + 6462 + 7777 / BLOCK + 7777 + 300 / ' + 0 + 3641 / ( + 0 + 4136 / ) + 0 + 4040 / UNDERSCORE (52) + 4040 + 1034 / + + 1000 + 0 /SPECIAL CHARACTER (54) + LF /LINE FEED + 1010 / - + 1000 + 4000 / . + 0 + 2010 / / + 402 + 3641 / 0 + 4136 + 4442 / 1 + 7740 + 4261 / 2 + 5146 + 2145 / 3 + 5321 + 1710 / 4 + 1077 + 4745 / 5 + 4531 + 7750 / 6 + 5070 + 6111 / 7 + 503 + 2255 / 8 + 5522 + 705 / 9 + 577 + 2400 / : + 0 + 0 /SPECIAL CHARACTER (73) + CRLF /CARRIAGE RETURN; LINE FEED + 1024 / > + 4200 + 1212 / = + 1200 + 4224 / < + 1000 + 255 / ? + 300 + + +/ +/ HERE FOLLOW THE PACKED ASCII TEXTS FOR THE VARIOUS +/ VICTORY MESSAGES. PERSONS ADVENTEROUS TO FIND THIS MIGH CARE +/ TO TOGGLE IN SOME CUTE LITTLE MESSAGES OF THEIR OWN. +/ + +MESS0, 3773 +MESS5, 7340 + 4040 + 4040 + 4000 + +MESS1, 1716 + 0500 + +MESS2, 2427 + 1700 + +MESS3, 2711 + 1623 + 4100 + +MESS4, 1617 + 0217 + 0431 + 0000 + + + *7400 + +DISBUF, 0 + +/ THE DISPLAY BUFFERS BEGIN HERE AND EXTEND UP SOMEWHERE TO +/ AROUND 7575 OR SO. +/ +/ +/ +/ +/ + + + + $ + +//////////////////////////// +/ +/ THIS IS THE END +/ +/////////////////////////// + + + + + + \ No newline at end of file diff --git a/sw/f4/FRTSRC/BUILD.BI b/sw/f4/FRTSRC/BUILD.BI new file mode 100644 index 0000000..148a20f --- /dev/null +++ b/sw/f4/FRTSRC/BUILD.BI @@ -0,0 +1,25 @@ +$JOB FORTRAN IV BUILD - INITIAL CLEANUP AND PREPARATION +/ ******************************************************************* +/ ******************************************************************* +/ ******************************************************************* +/ +/ INITIAL CLEANUP +/ +/ ******************************************************************* +/ ******************************************************************* +/ ******************************************************************* + +.DELETE *.RL +.DELETE *.BN +.DELETE *.LD +.DELETE SYS:FORTRN.* +.DELETE SYS:F4.SV,LOAD.SV,RALF.SV +.DELETE SYS:PASS2.SV,PASS20.SV,PASS3.SV +.DELETE SYS:FRTS.SV,FORLIB.RL +.SQUISH SYS:/O + +/ PUT MAIN BATCH FILE TO SYS: +.COPY SYS: + IFNSW 8 < + TAD% BUFADR /GET X DISPLACEMENT + DCAZ 17 /INTO ALPHA REG + ISZ BUFADR /INCREMENT ADDRESS + SKP CLA + JMS BUMPF /INCREMENT DATA FIELD + TAD% BUFADR /GET Y DISPLACEMENT + CIF 10 + LINC + DIS 17 + PDP + CLA + ISZ BUFADR /INCR BUFFER POINTER + SKP CLA + JMS BUMPF + > +ENDDL, ISZ NPTS /INCREMENT COUNTER + JMP DSPLUP /LOOP + CDF 10 + JMP% DISPLY /RETURN TO IDLE Q +BUMPF, 0 /FIELD CHANGER + TAD FLDDB /BUMP FIELD + TAD L10 + DCA FLDDB +FLDDB, HLT /CHANGE IT NOW + JMP% BUMPF +PUTONQ, 0 /PUT DISPLY ONTO BACKROUND Q + TAD BUFADR+1 /CREATE CDF FOR DISPLAY LOOP + AND L7 + CLL RAL + RTL + TAD FLD0 + DCA DBFLD + IFSW 8 < + 6050 /CLEAR DISPLAY LOGIC + > + CDF CIF + SKP + JMP% PUTONQ + DCA .-2 /ONCE ONLY + CIF CDF 10 + JMS% ONQBX+1 + ADDR DISPLY + CIF CDF + JMP% PUTONQ /CALLED VIA TRAP4 + EXTERN ONQB +ONQBX, ADDR ONQB +BUFADR, 0 + 0 +PLTXR, 0;0;0;-1;0;0 +FLD0, CDF +L7, 7 +L10, 10 +NPTS, 0 + SECT PLOT + JA #PLOT +NAME, TEXT +PLOT + +PLTBAS, 0;0;0 +XLO, +X, 0;0;0 +YLO, +Y, 0;0;0 +XHI, +N, 0;0;0 +YHI, 0;0;0 +ADRBUF, 0;0;0 + IFSW 8 < +YSCALE, F 1022. +YZERO, F 511. + ORG 10*3+PLTBAS + FNOP + JA NAME+3 + 0 +PLTRET, JA . +XSCALE, F 786. +XZERO, F 511. +RANGE, F 1022. +BASE, F 511.> + IFNSW 8 < +YSCALE, F 510. +YZERO, F 255. + ORG 10*3+PLTBAS + FNOP + JA NAME+3 + 0 +PLTRET, JA . +XSCALE, F 392. +XZERO, F 0. +RANGE, F 510. +BASE, F 255.> +L1P5, F 1.5 +XYPAIR, 0;0;0 +#PLOT, BASE PLTBAS + JSA SETUP + LDX 1,1 + FLDA% PLTBAS,1 /GET ARG ADDRESSES + FSTA N + FLDA% PLTBAS,1+ + FSTA X + FLDA% PLTBAS,1+ + FSTA Y + STARTF + FLDA% N /NUMBER OF POINTS TO PLOT + FNEG + ATX 1 /INTO XR 1 + LDX -1,2 /XR 2 IS THE INDEXER +PLTLUP, JXN PLOOP,3+ /ANY MORE ROOM IN PLOT BUFFER ? + LDX -1,3 /NO, FIX COUNT + JA PLTRET +PLOOP, FLDA% Y,2+ /GET Y VALUE + FMUL YSCALE /SCALE IT + FSUB YZERO /SUBTRACT LOWER LIMIT + ALN 0 + FSTA XYPAIR + FLDA% X,2 /GET X VALUE OF PAIR + FMUL XSCALE /SCALE IT + FSUB XZERO /SUBTRACT LOWER LIMIT + ALN 0 + STARTD + FSTA XYPAIR,0 /XYPAIR+1,+2 CONTAINS THE POINT + FLDA XYPAIR /STORE THIS DOUBLE WORD INTO PLOT BUFFER + FSTA% ADRBUF,4 + ADDX 1,4 /TROUBLE IS, WE WANT POST INCREMENT + STARTF + JXN PLTLUP,1+ /LOOP IF MORE POINTS + JA PLTRET + BASE 0 +SETUP, JA . + STARTD + FLDA 30 /GET RETURN ADDRESS + FSTA PLTRET + FLDA 0 /GET ARG POINTER + BASE PLTBAS + SETB PLTBAS + SETX PLTXR + FSTA PLTBAS + JA SETUP + SECT PLOTR + BASE PLTBAS + JSA SETUP + LDX 1,1 + FLDA% PLTBAS,1 /GET ARG ADDRESSES + FSTA N + FLDA% PLTBAS,1+ + FSTA X + FLDA% PLTBAS,1+ + FSTA Y + FLDA% PLTBAS,1+ + FSTA YHI + STARTF + FLDA% YHI + ATX 5 + FLDA% N /NUMBER OF POINTS TO PLOT + FNEG + ATX 1 /INTO XR 1 + LDX -1,2 /XR 2 IS THE INDEXER +PLOTRL, FLDA% Y,2+ /GET Y VALUE + FMUL YSCALE /SCALE IT + FSUB YZERO /SUBTRACT LOWER LIMIT + ALN 0 + FSTA XYPAIR + FLDA% X,2 /GET X VALUE OF PAIR + FMUL XSCALE /SCALE IT + FSUB XZERO /SUBTRACT LOWER LIMIT + ALN 0 + STARTD + FSTA XYPAIR,0 /XYPAIR+1,+2 CONTAINS THE POINT + FLDA XYPAIR /STORE THIS DOUBLE WORD INTO PLOT BUFFER + FSTA% ADRBUF,5 + ADDX 1,5 /TROUBLE IS, WE WANT POST INCREMENT + STARTF + JXN PLOTRL,1+ /LOOP IF MORE POINTS + JA PLTRET + SECT CLRPLT + BASE PLTBAS + JSA SETUP + LDX 0,4 /DISABLE DISPLAY LOOP + LDX 1,1 + FLDA% PLTBAS,1 /GET ARG POINTERS + FSTA N + FLDA% PLTBAS,1+ + FSTA ADRBUF + FSTA BUFADR+1 + STARTF + FLDA% N /SIZE OF BUFFER + FMUL L1P5 /NUMBER OF 2 WORD PAIRS + FNEG + ATX 3 /INTO SOME CHOICE XRS + TRAP4 PUTONQ /PUTISPLY ONTO IDLE Q +CLRRET, JA PLTRET + SECT SCALE /SET SCALING FACTORS + BASE PLTBAS + JSA SETUP + LDX 1,1 + FLDA% PLTBAS,1 /GET ARGS + FSTA XLO + FLDA% PLTBAS,1+ + FSTA YLO + FLDA% PLTBAS,1+ + FSTA XHI + FLDA% PLTBAS,1+ + FSTA YHI + STARTF + FLDA% XHI /COMPUTE X RANGE + FSUB% XLO + FSTA XHI + FLDA% YHI /NOW Y RANGE + FSUB% YLO + FSTA YHI + FLDA RANGE /COMPUTE XSCALE + FDIV XHI + FSTA XSCALE + FLDA RANGE /NOW Y SCALE + FDIV YHI + FSTA YSCALE + FLDA% XLO /COMPUTE XZERO + FMUL RANGE + FDIV XHI + IFSW 8 < + FADD BASE> + FSTA XZERO + FLDA% YLO /NOW YZERO + FMUL RANGE + FDIV YHI + FADD BASE + FSTA YZERO +SCLRET, JA PLTRET + END + diff --git a/sw/f4/FRTSRC/RALF.PA b/sw/f4/FRTSRC/RALF.PA new file mode 100644 index 0000000..5b3d399 --- /dev/null +++ b/sw/f4/FRTSRC/RALF.PA @@ -0,0 +1,4454 @@ +/ RALF, V62A +/ +/ +/ +/ +/ +/ +/ +// +/ +/ +/ +/ +/COPYRIGHT (C) 1974, 1975, 1977 +/DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. +/ +/ +/ +/THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A +/SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU- +/SION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANT OTHER +/COPIES THEREOF, MAY NOT BR PROVIDED OR OTHERWISE MADE AVAILABLE +/TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO +/AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE +/SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC. +/ +/ +/THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT +/NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL +/EQUIPMRNT COROPATION. +/ +/DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS +/SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. +/ +/ +/ +/ +/ +/ + / RELOCATABLE ASSEMBLER FOR OS/8 FORTRAN IV +/ +/ +/ FPPASM BY HANK MAURER +/ RALF MODS BY JUD LEONARD +/ OS/8 FORTRAN MODS BY RICHIE LARY + MARTY HURLEY +/ NEW DATE ALGORITHUM PUT IN BY ED STEINBERGER +/ +/ THE FOLLOWING FORMULA GIVES THE NUM +/ OF USER SYMBOLS: +/ -(FREE+200[BASE8])/6[BASE10] +/ WHERE THE VALUE OF FREE IS FROM THE +/ RALF SYMBOL MAP +/ +/ +IFNDEF RALF +/ +/ ASSEMBLE WITH PAL8-V9 WITH W SWITCH +/ SAVE AS: +/ .SAVE SYS RALF.SV ;200=2000 + +/ +/ CHANGES FOR OS/78 AND OS/8 V3D BY P.T. +/ .CHANGED VERSION NUMBER TO 62 +/ .RALF NO LONGER GENERATES FAULTY RELOCATABLE IF: +/ 1.) THE ESD IS LONGER THAN ONE BLOCK, AND +/ 2.)LIST OUTPUT IS DIRECTED TO A 2-PAGE NON-SYSTEM HANDLER +/ +/ + FLD0=0 + FLD1=10 + VNUM=62 + PATCH="A /PATCH LEVEL A + *3 +VERS, VNUM /VERSION NUMBER +OLDN3, 0 /TEMP FOR LOOKUP +OTEMP, 0 /A COUPLE OF TEMPS THAT +OCNT, 0 /DIDNT FIT INTO THEIR PAGE + 0 +X10, 0 +X11, 0 +X12, 0 +X13, 0 +X14, 0 +OUTPTR, OUBUF-1 +NEXT, FREE-1 +CHRPTR, LINE-1 +NCHARS, -1 /CHARACTER INPUT STUFF +CPTMP, 0 +NCTMP, 0 /USED TO SAVE CHAR POSITION +LINSIZ, 0 /SIZE OF LINE FOR PRINTING +STYPE, /SYMBOL TYPE CODE +CHKSUM, 0 /FOR BINARY OUTPUT + IFZERO RALF < +LOCTR1, 0 /INITIAL LOCN CNTR FOR ABSOLUTE ASM +LOCTR2, 200 > + IFNZRO RALF < +ESDNO, 2 /LAST ESD #. (#MAIN & BLANK COMMON DEFAULT) +LOCTR1, 20 /HIGH LOCN CNTR WITH ESD (STARTS IN #MAIN) +LOCTR2, 0 +DPFLG, 0 > + BASER, 4000 /BASE REGISTER SETTING + 0 +INDXR, 0 /INDEX LOCS: MUST FOLLOW BASER + 0 +EXPVAL, 0 /EXPRESSION VALUE + 0 + 0 +EXPDEF, 0 /=0 IF EXPR IS UNDEFINED +EXPSW, 0 /FLAG=1 IF NO EXPR +WORD1, 0 /TEMPORARY 2 WORD OPERAND +WORD2, 0 +FPPADR, 0 /ADDRESS FIELD FOR FPP INDEX INSTR + 0 +OPCODE, 0 /OPCODE OR PSEUDO-OP POINTER +XFLAG, 0 /INDEX FLAG = 1 IF INDEX PRESENT +XINCR, 1 /FLAG = 0 IF + LEGAL IN INDEX EXPR +BUCKET, 0 /FIRST CHAR OF NAME +NAME1, 0 /CHARS 2 AND 3 OF NAME +NAME2, 0 /CHARS 4 AND 5 OF NAME +NAME3, 0 /CHAR 6 OF NAME AND TYPE +LASTOP, 0 /LAST OPERATOR ENCOUNTERRED IN EXPR +PASSNO, -1 /PASS NUMBER +ASMOF, 0 /SET NEGATIVE WHEN ASSEMBLY OFF +PNCHOF, 0 /NON-ZERO TO SUPPRESS BINARY OUTPUT +LISTSW, 1 /LIST SWITCH (1 ENABLES LISTING) +OUTSWT, 0 /OUT SWITCH, =1 IF LINE ALREADY LISTED +REPCNT, 0 /REPEAT COUNTER +SCSWT, 0 /SEMICOLON SWITCH +RADIX, 0 /RADIX FOR INTEGERS (0 IS OCTAL) +LTEMP, -177 /TEMP USED BY LOOKUP +EXTMP, 0 /TEMPS USED BY EXPR AND OTHERS +EXTMP2, 0 +EQUN, 0;0;0;0 /NAME ON LEFT OF EQUAL SIGN + /NEXT TWO LOCS USED WITH EQUN BY DMPESD +FPPSWT, 0 /1 WHHEN FINDING FPP ADR EXPR +FPP2WD, 0 /SET BY EXPR TO FORCE 2 WD FMT +FPPWD2, 0 /SET BY FPP2WD.OR.EXPTYP.EQ.0 +LITRL, 0 /SET = 1 FOR LITERAL +P0LIT, 177 +CPLIT, 177 +PAGEN, 0 +ERRORS, 0 /ERROR COUNT +PC, TTYOUT /OUTPUT ROUTINE +OUFILE, 7573 /OUTPUT FILE LIST POINTER +BFILE, 1 + LPAGE1, 1 /INPUT FORMFEED COUNT +LPAGE2, 0 /OUTPUT PAGE WITH RESPECT TO ABOVE +LINPAG, -1 /LINES/PAGE COUNTER +LINKSW, 0 /1 IF LINK GENERATED ON THIS LINE +LINKS, /NO OF LINKS GENERATED +ABREFS, 0 /NO OF ABSOLUTE REFERENCES +ABSOP, 0 /POINTER-SWITCH FOR BINARY OUTPUT +USR, 200 /CURRENT CALL ADDRESS FOR USR +SYONLY, 0 /=0=LIST ONLY SMAP WHEN LIST FILE + /IS SPECIFIED. ITS SET VIA SLASH S + /=1=REGULAR +NP17, 17 /** +NP7700, 7700 +OPX, 0 +OP, ZBLOCK 6 +ACX, 0 +AC, ZBLOCK 6 +M3, -3 +BLINE, LINE-1 +/ + PAGE + / +/ CORE ALLOCATION IN HIGH FIELD 0 +/ + CPLBUF=5100 /ACTUALLY AT 5200 + P0LBUF=5200 /AND 5300, 1/2 PAGE EACH + IFZERO RALF < + INBUF=5400 > + IFNZRO RALF < + INBUF=6000 /AFTER PASS 1, MOVES TO 5400> + OUBUF=6400 + LINE=7000 /CURRENT INPUT LINE IN ASCII + INDEVH=7200 /TENTATIVE INPUT DEVICE HANDLR ADDR + OUDEVH=7400 /TENTATIVE OUTPUT HANDLER ADDR + INRECS=2 + INCTL=400 + OUCTL=4200 +/ +/ COLLECT THE NEXT STATEMENT +/ + ISZ .+2 +REPLEN, JMP I .+1 +REPLST, BEGIN /START AT 6000 IF CHAINED ELSE 6001 +NEXTST, CDF FLD0 /JUST PRECAUTION + TAD OUTSWT /IF NO OUTPUT FROM THIS LINE, + SNA CLA + TAD PASSNO /AND LISTING PASS + SMA SZA CLA + TAD LISTSW /AND LISTING ENABLED + SNA CLA /PRINT THIS LINE NOW + JMP START /ELSE GET NEXT + JMS I [CRLF /PRINT CR/LF + TAD (-6 + DCA LTEMP /SPACE OVER + JMS I [PRINT2 /12 SPACES + ISZ LTEMP + JMP .-2 + JMS I (PRNTLN /THEN PRINT LINE +START, JMS I [GETCHR /ANY MORE CHARS ? + JMP NOTEG + JMS I [ERMSG /EXTRA GARBAGE ON LAST LINE + 0507 /*EG* +NOTEG, TAD SCSWT /DID LAST LINE END WITH SEMICOLON ? + SNA CLA + JMP .+5 /NO + DCA SCSWT /KILL SC SWITCH + ISZ CHRPTR /SKIP OVER SEMICOLON + ISZ NCHARS + JMP ASMBL /DON'T READ A NEW LINE + TAD REPCNT /IS THIS LINE TO BE REPEATED? + SPA CLA + JMP AGAIN /DO IT +NEWLIN, TAD BLINE /RESET POINTER + DCA CHRPTR + TAD [-200 /LIMIT LINE SIZE + DCA MAXLIN + DCA OUTSWT /CLEAR OUTPUT SWITCH + RDLOOP, JMS I (ICHAR /READ A CHAR + TAD (-212 + SNA + JMP RDLOOP /IGNORE LINE FEEDS + TAD (212-215 /END ON CR + SNA + JMP ENDLIN + IAC + SNA /FORM FEED? + JMP FORMFD + TAD (214 /FIX CHAR + DCA I CHRPTR /SAVE IT + ISZ MAXLIN /TEST FOR LINE TOO LONG + JMP RDLOOP /PUT CHAR AWAY AND GET NEXT 1 + JMS I (ICHAR /IGNORE ANOTHER CHAR + TAD (-215 /UNLESS CR + SZA CLA + JMP .-3 + JMS I [ERMSG /EXCESS LENGTH LINE + 1424 /*LT* +ENDLIN, TAD CHRPTR /FIND - NUMBER OF CHARS - 1 + CMA + TAD BLINE + DCA NCHARS + TAD REPCNT /0 BECOMES 0, + CIA /BUT POS REP COUNT + DCA REPCNT /ENABLES REPEAT + TAD NCHARS /SAVE LENGTH + DCA REPLEN + TAD LISTSW /SAVE LISTING SWITCH DURING REPEAT + DCA REPLST +REASM, TAD NCHARS /SAVE SIZE OF LINE FOR PRINT + DCA LINSIZ + TAD BLINE + DCA CHRPTR /SET POINTER +ASMBL, TAD ASMOF /ARE WE INSIDE A CONDITIONAL + SZA CLA + JMP OFFIT /YES, AND THE COND WAS FALSE + JMS I [GETCHR /LOOK FOR A CHARACTER + JMP NEXTST + TAD (-257 /IS IT SLASH ? + SNA + JMP NOASM /YES, COOL IT + TAD [257-240 /IS IT BLANK OR TAB ? + SZA CLA /YES, IGNORE + JMS I [BACK1 /NO, PUT IT BACK + JMP I (LUNAME /ASSEMBLE STMT + FORMFD, ISZ LPAGE1 /BUMP FORM FEED COUNT + DCA LPAGE2 /CLEAR SUB-PAGE COUNT + CLA CMA + DCA LINPAG /FORCE EJECT ON CRLF + JMP RDLOOP +OPENIT, CLA CMA /DECR COUNT, ANOTHER OPEN ANGLE + TAD ASMOF + DCA ASMOF +OFFIT, ISZ NCHARS /MORE TO GO? + JMP GETIT /YES +NOASM, CLA CMA + DCA NCHARS /DONT ASSEMBLE THIS LINE + JMP NEXTST /(PREVENTING *EG* MESSAGE) +GETIT, TAD I CHRPTR /PICK UP THE CHARACTER + TAD (-274 /OPEN ANGLE BRACKET? + SNA + JMP OPENIT /YES, PUSH ONE LEVEL DOWN + CLL RTR + SNA CLA + ISZ ASMOF /IF CLOSE, CHECK LEVEL + JMP OFFIT /TRY FOR NEXT + JMP ASMBL /RESUME WORK +AGAIN, TAD REPLEN /WE NOW REPEAT THE SAME LINE + DCA NCHARS + DCA LISTSW /NO LISTING DURRING REPEAT + ISZ REPCNT + JMP REASM /ASSUMING COUNT STILL OK + TAD REPLST /RESTORE LISTING + DCA LISTSW + JMP NEWLIN /GET NEXT LINE + MAXLIN=LTEMP +/ +TXERR, TEXT " ERRORS" +TXELN= .-TXERR + PAGE + / +/ DIVIDE AC BY 3 +/ USEFUL IN FPP REFERENCES TO BASE +/ +OVER3, 0 /DIVIDE AC BY THREE + DCA EXTMP2 /MQ + TAD (-15 /SET SHIFT COUNT + DCA LTEMP +DIVLUP, CLL /ZERO LINK + TAD (-3 /SUBTRACT DIVISOR FROM AC + SZL /IF AC>=3 SET LINK TO 1 + JMP .+3 /OK, DONT RESTORE + TAD (3 /TOO SMALL, RESTORE AC + CLL /SET LINK BACK TO 0 + DCA EXTMP /SAVE AC + TAD EXTMP2 /ROTATE MQ-AC LEFT, PUT LINK IN MQ + RAL + DCA EXTMP2 /SAVE MQ + TAD EXTMP /GET BACK AC + RAL /COMPLETE SHIFT + ISZ LTEMP /TEST COUNT + JMP DIVLUP /KEEP GOING + DCA EXTMP /THIS IS REMAINDER + TAD EXTMP2 /RETURN QUOTIENT + JMP I OVER3 +/ +/ INITIALIZE FOR OUTPUT +/ +OUSETP, 0 + TAD (OUCTL&3700 /BUFFER SIZE IN DBL WORDS + CIA /NEGATE IT (PAL10 BLOWS) + DCA OUDWCT + TAD NOUBUF + DCA OUPTR /INITIALIZE WORD POINTER + TAD OUJMPE + DCA OUJMP /INITIALIZE 3-WAY CHARACTER SWITCH + JMP I OUSETP +NOUBUF, OUBUF +/ +/ STORE CHARACTERS IN OUTPUT BUFFER +/ IN PS8 FORMAT (YOU KNOW, 3 CHARS +/ IN 2 WORDS THE WRONG WAY) +/ +OCHAR, 0 + AND (377 + DCA OUTEMP + TAD OUTINH + SZA CLA /IS THERE AN OUTPUT FILE? + JMP I OCHAR /NO - EXIT + CDF OUFLD /SET DATA FIELD TO BUFFER'S FIELD + ISZ OUJMP /BUMP THE CHARACTER SWITCH +OUJMP, HLT /THREE WAY CHARACTER SWITCH + JMP OCHAR1 + JMP OCHAR2 + TAD OUTEMP + CLL RTL + RTL + AND (7400 + TAD I OUPOLD + DCA I OUPOLD /UPDATE FIRST WORD OF TWO WITH HIGH + /ORDER 4 BITS OF THIRD CHAR + TAD OUTEMP + CLL RTR + RTR + RAR + AND (7400 + TAD I OUPTR + DCA I OUPTR /UPDATE 2ND WORD FROM LO 4 BITS + TAD OUJMPE + DCA OUJMP /RESET SWITCH + ISZ OUPTR + ISZ OUDWCT /BUMP COUNTER EVERY 3 CHARS + JMP OUCOMN + TAD (OUCTL /LOAD CONTROL WORD FOR A FULL WRITE + JMS I (OUTDMP /DUMP THE BUFFER + JMS OUSETP /RE-INITIALIZE THE POINTERS + JMP OUCOMN +OCHAR2, TAD OUPTR + DCA OUPOLD /SAVE POINTER TO FIRST WORD OF TWO + ISZ OUPTR /BUMP WORD POINTER TO SECOND WORD +OCHAR1, TAD OUTEMP + DCA I OUPTR +OUCOMN, CDF + JMP I OCHAR +OUTEMP, 0 +OUPOLD, 0 +OUPTR, 0 +OUJMPE, JMP OUJMP +OUDWCT, 0 +OUTINH, 0 +/ +/ MOVE OUTPUT FILE NAME TO FIELD 0 +/ +OFNAME, 0 + TAD OUFILE + DCA X10 + TAD (OUFNAM-1 + DCA X11 + TAD (-4 + DCA LTEMP + CDF 10 + TAD I X10 + CDF 0 + DCA I X11 + ISZ LTEMP + JMP .-5 + JMP I OFNAME + / +/ GET OUTPUT DEVICE CHARISTICS +/ +OTYPE, 0 + CDF 10 + TAD I (7600 + AND [17 + TAD (DCB-1 + DCA OTYPP + TAD I OTYPP + CDF 0 + JMP I OTYPE +OTYPP= OFNAME +/ +/ BASIC TITLE INFO +/ +TITBUF, + IFZERO RALF < + TEXT "FLAP V" > + IFNZRO RALF < + TEXT "RALF V" > +*.-1 +VMTXT, 0;0;0 +TITDAT, ZBLOCK 6 + TEXT " PAGE" +TITLEN= .-TITBUF + PAGE + / +/ PROCESS A STATEMENT +/ +LUNAME, TAD CHRPTR /SAVE CHAR STUFF + DCA CPTMP + TAD NCHARS + DCA NCTMP + DCA LINKSW /CLEAR SWITCH + JMS I [GETNAM /LOOK FOR NAME + IFZERO RALF < + JMP I (TRYSTR /COULD BE AN ORG> + IFNZRO RALF < + JMP I (GETEXP /NOT ONE OF OURS, I GUESS> + JMS I [GETCHR /LOOK FOR COMMA + JMP JSTONE /ITS JUST ONE SYMBOL + TAD (-254 /COMMA TEST + SZA + JMP TRYEQU /NO COMMA, CHECK FOR EQUAL + JMS I [LOOKUP /LOOK UP SYMBOL + JMP DEFLBL /ITS UNDEFINED + CLL RAR /VERIFY ADDR TYPE + SZA CLA + JMP MDERR /THAT'S A NO-NO + TAD I X10 /CHECK LOCCTR AGAINST OLD DEFINITION + CIA + TAD LOCTR1 /FIRST UPPERR HALF + SZA CLA + JMP .+6 + TAD I X10 + CIA + TAD LOCTR2 /THEN LOWER HALF + SNA CLA + JMP DEFIND +MDERR, JMS I [ERMSG /MULTIPLY DEFINED + 1504 /*MD* + JMP I (ASMBL /FIELD IS OK +DEFLBL, ISZ I LTEMP /SET TYPE TO 1 (USER ADDR) + TAD LOCTR1 /PUT LOCATION COUNTER + DCA I X10 /INTO VALUE + TAD LOCTR2 + DCA I X10 +DEFIND, CDF FLD0 /GO LOOK FOR ANOTHER TAG + JMP I (ASMBL + TRYEQU, TAD (-21 /CHECK FOR EQUAL SIGN + SZA + JMP TRYBLK /NO, TRY BLANK + TAD NAME1 + DCA EQUN /SAVE 6 CHARACTER NAME + TAD NAME2 + DCA EQUN+1 + TAD NAME3 + DCA EQUN+2 + TAD BUCKET + DCA EQUN+3 + JMS I [GETCHR /ALLOW BLANK AFTER = + JMP EQUERR + TAD [-240 + SZA CLA + JMS I [BACK1 /ANYTHING ELSE GOES BACK + JMS I [EXPR /GET VALUE RIGHT OF EQUALS + JMP EQUERR /BAD EQU + TAD EQUN /RESTORE NAME + DCA NAME1 + TAD EQUN+1 + DCA NAME2 + TAD EQUN+2 + DCA NAME3 + TAD EQUN+3 + DCA BUCKET + JMS I [LOOKUP /LOOKUP SYMBOL + JMP PUTVAL /A NEW SYMBOL + CLL RAR + SZA CLA + JMP EQUERR /TYPE CONFLICT +PUTVAL, TAD EXPVAL+1 /SAVE ADDRESS TYPE + DCA I X10 + TAD EXPVAL+2 + DCA I X10 + TAD I LTEMP /NOW GET TYPE WORD + AND (7740 /ZERO OLD TYPE, PRESERVING FORCE BIT + TAD EXPDEF /DEFINED BY RIGHT HAND SIDE + DCA I LTEMP /RESTORE WORD + CDF FLD0 + JMP I [NEXTST /GO GET NEXT STMT +EQUERR, JMS I [ERMSG /BAD EQU + 0205 /*BE* + JMP I [NEXTST + TRYBLK, TAD (35 /CHECK FOR BLANK + SNA /MATCH BLANK? + JMP JSTONE /YES + AND [77 + JMS I [R6L + DCA NAME3 /MAKE MODIFIED NAME OF IT + JMS I [GETCHR /MODIFIER MUST BE FOLLOWED BY BLANK + JMP I (GETEXP /LOOKS BAD + TAD [-240 /GOT IT? + SZA CLA + JMP I (GETEXP /LET EXPR TELL HIM IF ITS WRONG +JSTONE, TAD (33 /USE OUR INTERNAL SYMBOL TABLE + JMS I [FIND /IS IT THERE? + JMP I (GETEXP /NO, LOOK IN USER'S + TAD OPCTBL /CREATE JUMP THRU TABLE + DCA OPCJMP /SAVE IT + TAD I X10 /PICK UP FIRST WORD OF VALUE + DCA OPCODE /ITS AN OPCODE-MAYBE? + CDF FLD0 +OPCJMP, 0 /JUMP SOMEWHERE +OPCTBL, JMP I .-4 + PSEUDO /PSEUDO OPS + PDP8MR /PDP8 MRI + FPPMR /FPPMR + FPPS1 /OTHER FPP OPCODES + FPPS2 + FPPS3 + FPPS4 + FPPS5 + FPMRI /INDIRECT FPP MEM REF + FPMRS /SHORT DIRECT MEM REF + FPMRL /LONG DIRECT REF + PDPOPR /8-MODE OPERATES +REPETX, JMS I (ADRGET /EVALUATE REPEAT EXPR + CLL CMA RAR /3777 + AND EXPVAL+2 + DCA REPCNT + JMP I [NEXTST + PAGE + / +GETEXP, CDF FLD0 + TAD CPTMP /RESTORE CHARACTER POINTER + DCA CHRPTR + TAD NCTMP /TO JUST AFTER TAG (IF ANY) + DCA NCHARS +SX, DCA OPCODE + JMS I [EXPR /TRY FOR AN EXPRESSION + JMP BADEXP /IF NONE, ERROR + IFNZRO RALF < + JMS RELERR /BOMB IF NOT ABSOLUTE EXP> + TAD EXPVAL+2 + JMS I [OUTWRD + JMP I [NEXTST /GO DO NEXT STMT + IFNZRO RALF +/ +FPPMR, ISZ FPPSWT /SET FORCE ENABLE + JMS FPADR + TAD WORD1 /IF WAY OFF BASE, + SNA + TAD FPPWD2 /OR IF FORCED + SNA + TAD XFLAG /OR IF INDEXED + SZA CLA + JMP FORMT1 /USE LONG FORM + TAD WORD2 + CLL + TAD (-600 /COMPLETE OFF-BASE CHECK + SZL CLA + JMP FORMT1 /USE LONG + JMP FORMT2 +FPPS2, JMS I (GETADR /COLLECT ADDRESS EXPR + JMS IXMES /BUT DISALLOW INDEX + JMP F2WD /PUT TWO WORDS OUT +/ +IXMES, 0 + TAD XFLAG /NO INDEX ALLOWED + SNA CLA + JMP I IXMES /HE'S COOL + JMS I [ERMSG + 1130 /*IX* + JMP I IXMES + FPMRL, JMS FPADR +FORMT1, JMS I (FIXOPC +F2WD, TAD FPPADR + AND [7 /FIELD BITS + TAD OPCODE /IN FIRST WORD +FPDMP, IFZERO RALF < + JMS I [OUTWRD + TAD FPPADR+1 /LOW ADDRESS + JMS I [OUTWRD + JMP I [NEXTST /NEXT!> + IFNZRO RALF < + JMP I (OUTREL /DUMP TWO RELOCATABLE> +FPMRS, JMS FPADR /COLLECT OPERAND + JMS IXMES /ERROR IF INDEX GIVEN + TAD WORD1 + SZA CLA + JMP BADEXP + TAD WORD2 + CLL + TAD (-600 /DOES IT FIT? + SNL CLA + JMP FORMT2 +BADEXP, JMS I [ERMSG + 0230 /*BX* + TAD OPCODE /BEST GUESS OF THE DESIRED OUTPUT + JMS I [OUTWRD + JMP I [NEXTST +FPMRI, JMS FPADR + TAD WORD1 + SZA CLA + JMP BADEXP /NOT EVEN CLOSE + TAD WORD2 + CLL + TAD (-30 + SZL CLA + JMP BADEXP /GOTTA BE IN THE FIRST 10 +FORMT3, JMS I (FIXOPC +FORMT2, TAD WORD2 + JMS I (OVER3 /BY 3 FOR BASE ADDRESS + TAD [200 +FPPS3, TAD OPCODE + JMS I [OUTWRD /WHEW! + JMP I [NEXTST +FPPS1, JMS I (GETADR /GET ADDR, AND INDEX + JMS I (FIXOPC /PUT OPCODE TOGETHER + TAD FPPADR /GET ADDR EXTENSION + AND [7 + TAD OPCODE /WITH TOGETHER OPCODE + AND (7377 /WITHDRAW ONE BIT + JMP FPDMP /PUT IT OUT + FPPS5, CLA IAC /DISALLOW INDEX INCR + JMS I (GETADR /COLLECT ADDRESS AND INDEX + IFNZRO RALF < + TAD FPPADR + AND [7770 /MUST BE ABSOLUTE + SNA CLA + JMP .+3 /OK + JMS I [ERMSG + 2205 /*RE*> + TAD XFLAG + SZA CLA /ANY INDEX? + TAD EXPVAL+2 + AND [7 /STRIP OFF ESD BITS + TAD OPCODE + JMS I [OUTWRD /DUMP THAT + TAD FPPADR+1 + JMS I [OUTWRD /NOW LOW 12 BITS + JMP I [NEXTST +/ +FPADR, 0 + JMS I (GETADR /COLLECT ADDRESS AND INDEX + TAD BASER+1 + CIA STL + TAD FPPADR+1 + DCA WORD2 /GET ADDRESS RELATIVE TO BASE + RAL + TAD BASER + CIA + TAD FPPADR + DCA WORD1 + JMP I FPADR + PAGE + / +PSEUDO, JMP I OPCODE /DISPATCH TO APPROPRIATE HNDLR +/ + IFZERO RALF < +/ +/ ASSEMBLE VARIOUS INSTRUCTION TYPES +/ +PDP8MR, TAD CHRPTR /SAVE POSITION + DCA CPTMP + TAD NCHARS + DCA NCTMP /SAVE COUNT + JMS I [GETCHR /LOOK FOR SPACE "I" + JMP GETMR /WILL GIVE BX ERROR + TAD (-"I /IS IT I? + SNA CLA /IF NOT, FORGET IT + JMS I [GETCHR /MUST BE FOLLOWED BY SPACE + JMP NOTIND + TAD [-240 + SZA CLA + JMP NOTIND /SOMETHING ELSE + TAD OPCODE /PUT INDIRECT INTO OPCODE + TAD (400 + DCA OPCODE +GETMR, JMS ADRGET /PICK UP ADDRESS FIELD + TAD EXPVAL+2 /CHECK PAGE OF ADDRESS + AND [7600 + SNA + JMP PAGEZ /ITS IN PAGE 0 + CIA + TAD LOCTR2 /COMPARE WITH CURRENT PAGE + AND [7600 + SNA CLA + JMP THSPAG /OK, ITS THIS PAGE + TAD OPCODE /CAN WE USE A LINK ? + AND (400 /IS INDIRECT BIT OFF ? + SNA CLA + JMP I (MAKLNK /YES, GO MAKE LINK + JMS I [ERMSG /NOPE, ITS AN ILLEGAL REFERENCE + 1122 /*IR* +THSPAG, TAD EXPVAL+2 /GET ADDRESS + AND [177 /LOWER 7 BITS + TAD [200 /PUT IN PAGE BIT + SKP +PAGEZ, TAD EXPVAL+2 /GET ADDRESS (UPPER 5 BITS ZERO) + TAD OPCODE /PLUS OPCODE + JMS I [OUTWRD /OUTPUT WORD + JMP I [NEXTST +NOTIND, TAD CPTMP /RESTORE CHAR POINTER + DCA CHRPTR + TAD NCTMP + DCA NCHARS + JMP GETMR /NOT AN INDIRECT> + FPPS4, JMS ADRGET /GET INDEX REG EXPRESSION + IFZERO RALF < + JMS LITERR /CAN'T ALLOW LITERAL> + JMS SUBX /GET RELATIVE INDEX VALUE + TAD EXPVAL+2 /GET LOWER 3 BITS + AND [7 /OF INDEX REG EXPR + TAD OPCODE /WITH OPCODE + JMS I [OUTWRD /OUT + JMP I [NEXTST +ADRGET, 0 /GET ADDRESS EXPR AND CHECK TYPE + JMS I [EXPR /GET EXPR + JMS I [ERMSG /BAD ADDR EXPR + 0230 /*BX* + JMP I ADRGET + IFZERO RALF < +LITERR, 0 /GIVE ERROR IF LITERAL + TAD LITRL + SNA CLA + JMP I LITERR + JMS I [ERMSG + 1114 /*IL* + JMP I LITERR > + IFNZRO RALF < +PDP8MR, JMS ADRGET + JMP I (CHCKMR /V.56 + > + GETADR, 0 /GET ADDR, INDEX + DCA XITEMP /SAVE INDEX INCREMENT SWITCH + JMS ADRGET /GET ADDR + DCA FPPSWT /KILL FPP SWITCH + IFZERO RALF < + JMS LITERR /DISALLOW LITERALS> + TAD EXPDEF /IF EXPR WAS UNDEFINED + SNA CLA + IAC /OR FORCE BIT WAS SET + TAD FPP2WD + DCA FPPWD2 /FORCE 2 WORD FORMAT + DCA XFLAG /ZERO INDEX SWT + TAD EXPVAL+1 /SAVE ADDRESS VALUE + DCA FPPADR + TAD EXPVAL+2 + DCA FPPADR+1 + JMS I [GETCHR /LOOK FOR COMMA + JMP I GETADR /NO INDEX + TAD (-254 + SZA CLA + JMS I [BACK1 /WILL CAUSE A BX ERROR + ISZ XFLAG /SET INDEX SWITCH + TAD XITEMP /SET INDEX INCREMENT SWITCH + DCA XINCR + JMS ADRGET + ISZ XINCR /CLEAR INDEX INCREMENT SWITCH + IFZERO RALF < + JMS LITERR > + JMS SUBX /CALCULATE INDEX NO + JMP I GETADR +XITEMP, +SUBX, 0 + TAD INDXR+1 /CHECK FOR INDEX IN RANGE + STL CIA + TAD EXPVAL+2 + DCA EXPVAL+2 + RAL + TAD INDXR + CIA + TAD EXPVAL+1 + SZA CLA + JMP BIERR + TAD EXPVAL+2 + CLL + TAD [-10 + SZL CLA +BIERR, JMS I [ERMSG + 0211 /*BI* + JMP I SUBX + IFNZRO RALF < +/ +/ AT END OF PASS, +/ CLEAR LENGTHS OF ALL SECTIONS +/ +CLRSCT, 0 + TAD (PNDL+3 + DCA LTEMP /POINT TO USER SYMBOL SPACE + CDF FLD1 +CSLOOP, TAD I LTEMP /GET TYPE + AND [37 /STRIP TO TYPE ONLY + TAD (-3 + SPA CLA /IS IT COMMON OR SECTION? + JMP NOTSCT /NO, PASS IT + ISZ LTEMP /BUMP POINTER TO VALUE + TAD I LTEMP + AND [7770 /SAVE ESD NUMBER + DCA I LTEMP + ISZ LTEMP + DCA I LTEMP /CLEAR LOW ORDER + CLA CLL CMA RAL /-2 +NOTSCT, TAD (6 /BUMP POINTER + TAD LTEMP /TO NEXT SYMBOL + DCA LTEMP + TAD NEXT /COMPARE END OF SYMBOL TABLE + CIA CLL + TAD LTEMP + SNL CLA + JMP CSLOOP /MORE TO GO + CDF FLD0 + JMP I CLRSCT /THAS ALL> +/ +/ + IFNZRO RALF < +/ +/ ENSURE BOTH SYMBOL AND SUB-EXPR ARE ABSOLUTE +/ +NOREL, 0 + TAD WORD1 /IS SYMBOL RELOCATABLE? + AND [7770 /TEST ESD BITS + SZA CLA + STL RAR /IF SO, FORCE ERROR + JMS I (RELERR /TEST SUB EXPR + JMP I NOREL +DPCHKX, CLA CLL CML RAR /SET DPFLG, MODULE NEEDS + DCA DPFLG /DP HARDWARE + JMP I [NEXTST +/ SET BASE AND INDEX LOCS +INDXX, CLA STL RTL /INDXR MUST JUST FOLLOW BASER +BASEX, TAD (BASER-1 /POINT TO VALUE TO BE SET + DCA X12 /HOPEFULLY UNUSED XR + JMS I (ADRGET /COLLECT EXPRESSION + TAD EXPVAL+1 + DCA I X12 /HIGH ORDER AND ESD + TAD EXPVAL+2 + DCA I X12 /LOW ORDER + JMP I [NEXTST >/THIS CONDITIONAL SASSEMBLY WAS +/EXPANDED TO INCLUDE INDXX ON THIS PAGE. IT IS ALSO +/COND. ASSEMBLED ON ANOTHER PAGE FOR FLAP. +DELFIL, 0 + TAD [7600 + DCA OUFILE + JMS I [OFNAME + CLA IAC + CIF 10 + JMS I USR + 4 + OUFNAM + 0 + NOP + JMP I DELFIL + PAGE + / +/ PRINT THE CURRENT LINE IF NOT ALREADY DONE +/ +PRNTLN, 0 /PRINT THE LINE + TAD OUTSWT /HAS THE LINE BEEN PRINTED YET? + SZA CLA + JMP I PRNTLN /YES, COOL IT + ISZ OUTSWT /SET SWITCH + TAD BLINE /POINTER TO LINE + DCA X13 + DCA CRLF /CLEAR POSITION COUNT + JMP PRLTST /IN CASE OF EMPTY LINE +PRLNXT, TAD I X13 /GET A CHAR + TAD (-211 /WATCH OUT FOR TAB + SNA + JMP TABIT /CONVERT TO BLANKS + TAD (211 /RESTORE + ISZ CRLF /BUMP POSITION COUNT + JMS I PC /PRINT IT +PRLTST, ISZ LINSIZ /CHECK COUNT + JMP PRLNXT + JMP I PRNTLN +TABIT, TAD [240 /REPLACE TAB WITH BLANKS + ISZ CRLF + JMS I PC + TAD CRLF + AND [7 + SZA CLA + JMP TABIT + JMP PRLTST +/ +/ GO TO NEXT LINE +/ +CRLF, 0 + CLA + TAD (215 + JMS I PC /PRINT A CHAR + TAD (212 + JMS I PC + ISZ LINPAG /FULL PAGE? + JMP I CRLF /NO + CLA CMA + DCA LINPAG +/ +/ NEW PAGE, WITH HEADING AND PAGE NO +/ + TAD PASSNO /IF NOT LISTING PASS + SMA SZA CLA + TAD LISTSW /OR IF NOT LISTING, + SNA CLA + JMP I CRLF /DO NOT EJECT + TAD RFORMF + SZA /DON'T F.F. FIRST TIME + JMS I PC /TOP OF PAGE + TAD (214 + DCA RFORMF + JMS I (PRTXT /PRINT HEADING + TITBUF-1 + -TITLEN + TAD LPAGE1 /FORM FEED COUNT + JMS I (DECOUT + TAD LPAGE2 + SNA CLA + JMP .+5 /NO SUB PAGE IF 0 + TAD (255 + JMS I PC + TAD LPAGE2 + JMS I (DECOUT + ISZ LPAGE2 + TAD (215 /FOR BH + JMS I PC + TAD (212 + JMS I PC + TAD (-71 /RESET LINE COUNTER + DCA LINPAG + JMP CRLF+1 /GIVE ANOTHER CRLF +RFORMF, 0 +/ +/ PRINT TEXT +/ +PRTXT, 0 + TAD I PRTXT + DCA X13 + ISZ PRTXT + TAD I PRTXT + DCA PRTTMP + ISZ PRTXT + TAD I X13 + JMS PRINT2 + ISZ PRTTMP + JMP .-3 + JMP I PRTXT +PRTTMP= PRNTLN +/ +PRINT2, 0 + DCA P2 + TAD P2 + JMS I [R6R + JMS P1 + TAD P2 + JMS P1 + JMP I PRINT2 +/ +P1, 0 + AND [77 + SNA + JMP .+4 /PRINT ZERO AS BLANK + TAD (-40 /TEST ABOVE OR BELOW 300 + SPA + TAD [100 /ABOVE, MAKE 301 TO 337 + TAD [240 /IF BELOW, MAKE 240 TO 277 + JMS I PC /PRINT IT, WHATEVER IT IS + JMP I P1 + / +TTYOUT, 0 + TLS + TSF + JMP .-1 +TTYCLA, JMS I (CKCTC /CHECK FOR ^C - AC CONTAINS DIFFERENCE + TAD (-14 /CTRL/O + SZA CLA + JMP I TTYOUT + TAD .+2 + DCA TTYOUT+1 + JMP I TTYOUT +/ +P2, 0 +/ + IFZERO RALF < +TXLNK, TEXT " LINKS" +TXLLN= .-TXLNK > + IFNZRO RALF < +TXABR, TEXT " ABS REFS" +TXALN= .-TXABR > + PAGE + / +/ GET AND EVALUATE AN EXPRESSION +/ +EXPR, 0 /GET EXPRESSION + DCA EXPVAL /ZERO EXPR VALUE + DCA EXPVAL+1 + DCA EXPVAL+2 + CLA IAC + DCA EXPDEF /AND TYPE + CLA IAC /SET EXPR SWITCH TO NO EXPR + DCA EXPSW + DCA FPP2WD /SET FORCE SWITCH OFF + CLA IAC /SET LASTOP TO + + DCA LASTOP + IFZERO RALF < + JMS I (CHKLIT /GO CHECK FOR LITERAL> + JMS I (GETSGN /IGNORE +, BUMP LASTOP IF - +SYMBOL, JMS I [GETNAM /NOW PICK UP NAME + JMP NOSYM /NONE, TRY OTHER + JMS I [LOOKUP /LOOK IT UP + JMP UNDEF /A NEW ONE + IFZERO RALF < + JMP ADR /YES > + IFNZRO RALF < + CLL RAR + SNA + JMP ADR +SCTN, TAD I LTEMP /GET TYPE + AND (40 /FORCE BIT + SZA CLA + ISZ FPP2WD /SET FORCE EXPR SW + TAD I X10 /GET ESD FROM SYMBOL + AND [7770 /ESD ONLY + DCA WORD1 /INTERNALLY, SYMBOL VAL IS ZERO + JMP CLR2 /SO CLEAR WORD 2> + NOTDOT, TAD (256-242 /IS IT DBL QUOTE? + SZA CLA + JMP ENDEXP + ISZ NCHARS /IS THERE ANOTHER CHAR? + JMP ISQUOT /YES, USE IT +ENDEXP, JMS I [BACK1 /PUT IT BACK + TAD EXPSW /WAS THERE ANY EXPRESSION AT ALL? + SZA CLA + JMP BAD /NO, DON'T SKIP + IFZERO RALF < + TAD LITRL /WAS IT A LITERAL REF? + SZA CLA + JMS I (CRLIT /YES, STICK IT IN THE POOL> + TAD LASTOP /TRAILING OPERATOR? + SNA + JMP OKEXP /NO, ALL IS FINE + CLL RAR /IF PLUS OPERATOR + TAD XINCR /AND THATS LEGAL + SNA CLA +OKEXP, ISZ EXPR /GOOD EXPR, BUMP RETURN +BAD, JMS CKCTC + CLA + JMP I EXPR /AND RETURN +/ +NOSYM, JMS I (NUMBER /LOOK FOR A NUMBER + JMP ADREXP /USE NUMBER + JMS I [GETCHR /NOT A NUMBER, GET A CHAR + JMP ENDEXP+1 /NONE LEFT, END + TAD (-256 /IS IT "." ? + SZA + JMP NOTDOT /NO, TRY FOR QUOTE + TAD LOCTR1 /THIS WAS LOC SYMBOL + DCA WORD1 /PUT VALUE INTO WORD1,2 + TAD LOCTR2 + JMP CLR2 /AND USE VALUE +ISQUOT, DCA WORD1 + TAD I CHRPTR + JMP CLR2 +CKCTC, 0 + CLA + KSF /IF NOTHING AT THE KEYBOARD, + JMP I CKCTC /RETURN + TAD [200 + KRS /ELSE, LOOK AT IT + TAD (-203 /IS IT CTRL/C? + SNA + JMP I [7600 /GO TO MOMMA + JMP I CKCTC + ADR, TAD I LTEMP /CHECK FORCE BIT FOR THIS SYMBOL + AND (40 + SZA CLA + ISZ FPP2WD /AND SET SWITCH IF BIT ON + TAD I X10 /GET FIRST WORD OF VALUE +ONE, DCA WORD1 /SINGLE WORD SYMBOL, HIGH=0 + TAD I X10 /GET REST OF SYMBOL +CLR2, DCA WORD2 + CDF FLD0 /FIX FIELD +ADREXP, DCA EXPSW /KILL FIRST TIME SWITCH + TAD LASTOP /PICK UP LAST OPERATOR + TAD ADROP /MAKE A JMP I + DCA .+1 + 0 /DO IT +ADROP, JMP I . + ADRADD + ADRSUB + ADRMUL + ADRDIV + ADRAND + ADROR + ADROR + UNDEF, TAD FPPSWT /IS THIS AN FPP ADDR ? + SNA CLA + JMP .+5 /NO, SKIP AROUND + TAD I LTEMP /TURN ON FORCE BIT + AND (7737 /FOR THIS SYMBOL + TAD (40 + DCA I LTEMP + DCA EXPDEF /SET TYPE TO UNDEFINED + CDF FLD0 /FIX FIELD + DCA EXPSW /KILL FIRST TIME SWITCH + JMS I [ERMSG + 2523 /*US* +OPR8R, TAD (OPR8RS-1 /SET POINTER + DCA X11 /TO OPERATOR TABLE + DCA LASTOP /ZERO LASTOP + JMS I [GETCHR /GET CHAR + JMP ENDEXP+1 /NONE, DONE + DCA EXTMP /SAVE IT +FINDOP, ISZ LASTOP + TAD I X11 /GET NEXT LIST ENTRY + SNA + JMP NOOPR /ZERO IS END OF LIST + TAD EXTMP /COMPARE + SZA CLA + JMP FINDOP /LOOP + JMP SYMBOL /LOOK FOR OPERAND +NOOPR, DCA LASTOP /NO MATCH FOUND + JMP ENDEXP /PUT IT BACK + PAGE + ADRADD, IFNZRO RALF < + TAD WORD1 + AND [7770 /IF THIS SYMBOL IS RELOCATABLE, + SZA CLA /CHECK FOR EXPR VALIDITY + JMS I (RELERR > + TAD EXPVAL+2 /ADD FOR 15 BIT ADDRESS + CLL /ZERO LINK + TAD WORD2 /ADD LOW WORDS + DCA EXPVAL+2 /SAVE RESULT + RAL /PUT CARRY INTO BIT 11 + TAD WORD1 /ORDER WORDS + JMP ADRASX /LOOK FOR OPERATOR +ADRSUB, IFNZRO RALF < + TAD WORD1 /IF SYMBOL IS RELOCATABLE + AND [7770 /WE MUST COMPARE SECTIONS + CIA /IF EQUAL, EXPR BECOMES ABSOLUTE + SNA /ELSE, EXPR IS ILLEGAL + JMP .+5 /OK, USE EXPVAL ESD + JMS I (RELERR /COMPARE: AC DELIBERATELY NON-ZERO + TAD EXPVAL+1 + AND [7 /IF WORD RELOCATABLE, EXP IS ABS + DCA EXPVAL+1 > + TAD WORD2 /SUBTR LOW 12 BITS + CLL CML CIA + TAD EXPVAL+2 + DCA EXPVAL+2 /SAVE LOW HALF + RAL + TAD WORD1 /SUBTRACT HIGH HALF + CIA + AND [7 /DO NOT SUBTR ESD'S +ADRASX, TAD EXPVAL+1 + AND (7767 /PREVENT CARRY INTO BIT 8 +ADRASY, DCA EXPVAL+1 /SAVE HIGH HALF + JMP I (OPR8R /GET OPERATOR +/INDXX HERE FOR FLAP + IFZERO RALF < +/ SET BASE AND INDEX LOCS +INDXX, CLA STL RTL /INDXR MUST JUST FOLLOW BASER +BASEX, TAD (BASER-1 /POINT TO VALUE TO BE SET + DCA X12 /HOPEFULLY UNUSED XR + JMS I (ADRGET /COLLECT EXPRESSION + TAD EXPVAL+1 + DCA I X12 /HIGH ORDER AND ESD + TAD EXPVAL+2 + DCA I X12 /LOW ORDER + JMP I [NEXTST > + ADRAND, TAD WORD1 /AND + AND EXPVAL+1 /HIGH + AND [7 /3 BITS + DCA EXPVAL+1 /HALF + TAD WORD2 /THEN + AND EXPVAL+2 /LOW + JMP ADRAOX +ADROR, TAD WORD1 /OR IS PERFORMED BY + CMA /SETTING THE BITS + AND EXPVAL+1 /THAT ARE ON IN B AND NOT ON IN A + TAD WORD1 /AND THEN SETTING THE BITS + AND [7 + DCA EXPVAL+1 /THAT ARE ON IN A + TAD WORD2 + CMA + AND EXPVAL+2 + TAD WORD2 +ADRAOX, DCA EXPVAL+2 + IFNZRO RALF < + JMS I (NOREL /**> + JMP I (OPR8R /GET NEXT OPERATOR +/ + ADRMUL, TAD WORD2 /**RL CODE + CIA + DCA EXPVAL+1 /MULT BY + TAD EXPVAL+2 /REPEATED ADDITIONS + ISZ EXPVAL+1 + JMP .-2 + JMP ADRAOX +ADRDIV, DCA WORD1 + DCA EXPVAL+1 + TAD WORD2 + SNA CLA + JMP DIVERR + TAD EXPVAL+2 + CIA CLL + TAD WORD2 + SZL + JMP .+3 /DIVIDE BY + ISZ WORD1 /COUNTING SUBTRACTIONS + JMP .-4 + CLA + TAD WORD1 + JMP ADRAOX + DIVERR, JMS I [ERMSG + 0626 /*DV* + JMP I (OPR8R /CONTINUE + PDPOPR, TAD CHRPTR + DCA CPTMP + TAD NCHARS + DCA NCTMP + JMS I [GETNAM /LOOK FOR ANOTHER MICRO-INST + JMP TRYEXP /NONE + TAD (33 /USE INTERNAL TABLE + JMS I [FIND /IS IT THERE ? + JMP TRYEXP /NO + TAD (-PDPOP /IS IT AN OPERATE ? + SZA CLA + JMP TRYEXP /NO + TAD I X10 /GET VALUE + CDF FLD0 + DCA EXPVAL+2 +PDPOR, TAD EXPVAL+2 + CMA /OR THEM TOGETHER + AND OPCODE + TAD EXPVAL+2 + DCA OPCODE + JMS I [GETCHR /MORE CHARS ? + JMP I (FPPS3 /NO-DONE + TAD [-240 /BLANK ? + SNA CLA + JMP PDPOPR /YES-PROCESS NEXT + JMP I (BADEXP +TRYEXP, CDF FLD0 + TAD CPTMP + DCA CHRPTR + TAD NCTMP + DCA NCHARS + ISZ NCTMP + SKP + JMP I (FPPS3 + JMS I [EXPR + JMP I (BADEXP + JMP PDPOR +TXSYM, TEXT " SYMBOLS," + TXSLN=.-TXSYM + PAGE + IFZERO RALF < +/ +/ LITERAL THINGS +/ +CHKLIT, 0 /CHECK FOR LITERAL + DCA PAGENO /ZERO PAGE NUMBER + DCA LITRL + JMS I [GETCHR /GET CHARACTER + JMP I CHKLIT /NO LITERAL + TAD (-250 /CHECK FOR ( + SNA + ISZ PAGENO /CURRENT PAGE LITERAL + SZA /SKIP IF ALREADY ZERO + TAD (-63 /CHECK FOR [ + SNA + ISZ LITRL /SET SWITCH + SZA CLA + JMS I [BACK1 /PUT BACK NON ([ + JMP I CHKLIT +/ +/ CREATE A LINK FOR OFF-PAGE REFERENCE +/ +MAKLNK, TAD (THSPAG /PROPER RETURN ADDR + DCA CRLIT + TAD OPCODE /SET INDIRECT BIT + TAD (400 + DCA OPCODE + CLA IAC + DCA PAGENO /SET INDICATOR + ISZ LINKS /COUNT ANOTHER LINK GENERATED + ISZ LINKSW /SET SWITCH FOR APOSTROPHE OUTPUT + JMP NOTP0 +CRLIT, 0 /CREATE LITERAL + /VALUE:EXPVAL, IN PAGE:PAGENO + TAD PAGENO /CHECK FOR PAGE 0 + SNA CLA + JMP ISP0 /PAGE 0 LITERAL +NOTP0, TAD (CPLBUF /SET PTR TO LITERAL BUFFER + DCA LITBAS + TAD LOCTR2 /CHECK FOR LIT BUFFER FULL + AND [100 + SNA CLA + JMP DOLIT-1 /USE 77 AS LIMIT + TAD LOCTR2 + AND [177 + JMP DOLIT /USE CURRENT ADDR AS LIMIT + ISP0, TAD (P0LBUF /USE PAGE 0 LIT BUFFER + DCA LITBAS + TAD [77 /ASSUME FIRST 64 WORDS USED +DOLIT, DCA NWUSED + TAD PAGENO /GET POINTER TO + TAD [P0LIT /LITERAL BOUNDARY + DCA XPAGE + TAD I XPAGE /DISPLACEMENT OF LIT BUFR - 1 + DCA LITPTR /INTO LITPTR +NOTIT, TAD LITPTR /POINTER+SIZE + TAD (-177 /SHOULD BE LESS THAN 177 + SMA CLA + JMP NEWLIT /ENTER NEW LITERAL + TAD LITPTR /NOW GET POINTER + TAD LITBAS /TO TABLE + DCA X11 /FOR COMPARISON + ISZ LITPTR /INCREMENT POINTER + TAD I X11 /GET WORD OF LITERAL + CIA + TAD EXPVAL+2 /COMPARE PROTOTYPE + SZA CLA + JMP NOTIT /NOT IT, SLIDE POINTER AND RETRY +LITADR, TAD PAGENO /PAGE 0 ? + SZA CLA + TAD LOCTR2 /NO, CURRENT PAGE, GET ADDRESS + AND [7600 + TAD LITPTR /PLUS PAGE DISPLACEMENT + DCA EXPVAL+2 /INTO VALUE + TAD LOCTR1 +RETLIT, DCA EXPVAL+1 + JMP I CRLIT + NEWLIT, CLA CMA + TAD I XPAGE /MOVE LITERAL BOUNDARY DOWN + DCA X10 /ADDRESS OF NEW LITERAL + TAD NWUSED /CHECK FOR PAGE OVERFULL + CIA + TAD X10 + SMA CLA + JMP .+5 /NOT FULL + JMS I [ERMSG /*PO* + 2017 + DCA EXPVAL+2 /ZERO ADDRESS + JMP RETLIT + TAD X10 + DCA I XPAGE + TAD I XPAGE /SET UP POINTER FOR MOVE + TAD LITBAS + DCA X10 + TAD EXPVAL+2 /MOVE LITERAL IN + DCA I X10 + TAD I XPAGE /SET UP LITERAL ADDRESS + IAC + DCA LITPTR + JMP LITADR /RETURN LITERAL ADDRESS +LITBAS, 0 +NWUSED, 0 +LITPTR, 0 +PAGENO, 0 +XPAGE, 0 + PAGE /> + / +/ FIND SYMBOL TABLE ENTRY +/ FOR THE SYMBOL IN BUCKET AND NAME 1, 2, 3 +/ SKIP IF FOUND WITH TYPE IN AC +/ +FIND, 0 /SYMBOL TABLE LOOKUP + TAD BUCKET /GET BUCKET ADDRESS + CDF FLD1 /GO TO FIELD 1 +LOOK, DCA OLDN3 /THIS IS PTR OF PREV ENTRY + TAD I OLDN3 /THIS IS ADR OF NEXT ENTRY + SNA /IF ZERO, THEN + JMP I FIND /IT AIN'T HERE + DCA X10 /SAVE NEXT NAME PTR + TAD NAME1 /COMPARE NAMES + CIA CLL + TAD I X10 /WORD 1 + SZA CLA + JMP NOTSAM + TAD NAME2 + CIA CLL + TAD I X10 /WORD2 + SZA CLA + JMP NOTSAM + TAD NAME3 + CIA CLL + TAD I X10 /COMPARE LAST CHAR + AND [7700 /HIGH HALF ONLY + SZA CLA + JMP NOTSAM + ISZ FIND /IF FOUND BUMP RETURN + TAD X10 + DCA LTEMP /ADDR OF TYPE WORD + TAD I LTEMP /GET TYPE INTO AC + AND [37 /WITHOUT FORCE BIT + JMP I FIND /RETURN +NOTSAM, SZL CLA /IS NAME 1,2,3 .LT. ENTRY + JMP I FIND /YES, IT ISN'T HERE + TAD I OLDN3 /GET ADDR OF LINK INTO AC + JMP LOOK /LOOP + / +/ FIND SYMBOL, OR IF NOT THERE, CREATE ENTRY FOR IT +/ +LOOKUP, 0 + JMS FIND + JMP .+4 + SZA + ISZ LOOKUP /SKIP RETURN IF DEFINED + JMP I LOOKUP /RETURN TYPE CODE + TAD I OLDN3 /GET FORWARD LINK TO + DCA I NEXT /NEXT ENTRY INTO NEW ENTRY + TAD NEXT /PUT FORWARD LINK TO NEW + DCA I OLDN3 /ENTRY INTO PREVIOUS ENTRY + TAD NAME1 /PUT IN NAME + DCA I NEXT + TAD NAME2 + DCA I NEXT + TAD NAME3 + DCA I NEXT + TAD NEXT /X10=NEXT + DCA X10 + TAD NEXT /LTEMP=NEXT + DCA LTEMP + DCA I NEXT /INITIAL VALUE IS ZERO + DCA I NEXT + TAD NEXT /CHECK FOR TABLE FULL + CLL + TAD [200 /GONNA OVERFLO PS8? + SNL CLA + JMP I LOOKUP /NO PROBLEMS, RETURN (NO SKIP) + JMS I [ERMSG1 + 2324 /*ST* + / +/ COLLECT AN INTEGER IN THE CURRENT RADIX +/ +NUMBER, 0 /GET INTEGER NUMBER (NO SIGN) + DCA NSWTCH /CLEAR SWITCH + DCA NOFLO /CLEAR OVRFLO SW + DCA WORD1 /CLEAR 24 BIT NUMBER + DCA WORD2 +NUMLUP, JMS I (DIGIT + JMP NODGT /TOO BAD + DCA NUM /YES, SAVE IT + TAD WORD1 /SAVE CURRENT VALUE + DCA NUM1 /OF NUMBER + TAD WORD2 + DCA NUM2 + JMS SHIFT /SHIFT WORD1,2, LEFT 1 (MULT BY 2) + JMS SHIFT /DO IT AGAIN (MULT BY 4) + TAD RADIX /LOOK AT RADIX (1=DECIMAL) + SNA CLA + JMP OCTNUM /ITS OCTAL + CLL /DECIMAL, ADD IN NUMBER + TAD NUM2 + TAD WORD2 /THUS MULTIPLYING BY 5 + DCA WORD2 + RAL + TAD NUM1 + TAD WORD1 + DCA WORD1 + JMP ADDDGT +OCTNUM, TAD NUM + AND [7770 /CHECK FOR 8 OR 9 + SZA CLA + ISZ NOFLO /SET ERROR FLAG +ADDDGT, JMS SHIFT /SHIFT LEFT 1 AGAIN, THUS + TAD WORD2 /MULTIPLYING BY 8 OR 10 + CLL /THEN ADD IN NEW DIGIT + TAD NUM + DCA WORD2 + RAL + TAD WORD1 + DCA WORD1 + SZL /BEWARE OF OVERFLO + ISZ NOFLO + JMP NUMLUP /LOOP + NODGT, TAD NSWTCH /WAS THERE A NUMBER + SNA CLA + ISZ NUMBER /NO, SKIP + TAD WORD1 + AND [7770 /CHECK FOR MORE THAN 15 BITS + SNA + TAD NOFLO /OR GROSS OVERFLOW + SNA CLA + JMP I NUMBER /ALL GREEN + JMS I [ERMSG + 1605 /*NE* + JMP I NUMBER /RETURN +NOFLO= LOOKUP /ZERO IF NO ERRORS +NUM= FIND +NUM1= EXTMP +NUM2= EXTMP2 +NSWTCH, /ZERO IF NO DIGITS +SHIFT, 0 /SHIFT DOUBLE WORD LEFT 1 + TAD WORD2 + CLL RAL + DCA WORD2 + TAD WORD1 + RAL + DCA WORD1 + SZL /IF BIT SHIFTED FROM HI WORD, + ISZ NOFLO /SET ERROR FLAG + JMP I SHIFT + PAGE + / +/ BACK UP GETCHR POINTERS, +/ WE DON'T WANT THIS ONE +/ +BACK1, 0 + CLA CMA /BACKUP COUNT + TAD NCHARS + DCA NCHARS + CLA CMA /AND POINTER + TAD CHRPTR + DCA CHRPTR + JMP I BACK1 +/ +/ GET NEXT CHAR FROM LINE BUFFER +/ FOR ASSEMBLY PURPOSES ONLY +/ SKIP UNLESS END OF LINE (CR, ;, OR /) +/ +GETCHR, 0 + JMS GETAC +GETSKP, ISZ GETCHR /SKIP RETURN + JMP I GETCHR +BLANK, JMS GETAC /COME HERE IF BALNK OR TAB + TAD (-257 /END OF LINE ON SLASH AFTER BLANK + SNA CLA + JMP GETCND + JMS BACK1 /PUT IT BACK + TAD [240 /AND RETURN A SINGLE BLANK + JMP GETSKP /SKIP OUT +SEMICL, ISZ SCSWT + JMS BACK1 /PUT BACK SEMI COLON + JMP I GETCHR +GETAC, 0 + ISZ NCHARS /END OF LINE? + JMP .+4 /NO, GET IT +GETCND, CLA CMA /YES, RESET IN CASE OF + DCA NCHARS /ANOTHER CALL + JMP I GETCHR /RETURN END OF LINE + TAD I CHRPTR /PICK UP NEXT + TAD [-240 /CHECK FOR BLANK + SZA + TAD (240-211 /OR TAB + SNA + JMP BLANK /THEY GET SPECIAL HANDLING + TAD (211-273 /LOOKOUT FOR SEMICOLON + SNA + JMP SEMICL /ALSO SPECIAL + TAD (273-276 /IGNORE CLOSE ANGLE BRACKET + SNA + JMP GETAC+1 /GET ANOTHER + TAD (276 /ELSE, RESTORE CHAR + JMP I GETAC /AND PASS IT BACK + / +/ COLLECT A SYMBOL IN BUCKET, NAME 1,2, & 3 +/ NO SKIP ON RETURN IF NO SYMBOL +/ +GETNAM, 0 + DCA NAME1 /CLEAR SYMBOL SPACE + DCA NAME2 + DCA NAME3 + JMS LETTER /GET A LETTER + JMP ISSYM + JMS GETCHR /CHECK FOR # + JMP I GETNAM /NOPE + TAD (-"# + SNA CLA + JMP ISSYM + JMS BACK1 + JMP I GETNAM +ISSYM, DCA BUCKET + ISZ GETNAM /ONE LETTER DOTH A SYMBOL MAKE + JMS GNC /FRIENDLY LOCAL SUBR + JMS R6L + DCA NAME1 + JMS GNC + TAD NAME1 + DCA NAME1 + JMS GNC + JMS R6L + DCA NAME2 + JMS GNC + TAD NAME2 + DCA NAME2 + JMS GNC + JMS R6L + DCA NAME3 + JMS GNC /AFTER 6, WE IGNORE + SKP CLA +GNC, 0 + JMS LETTER + JMP I GNC /RETTURN LETTER + JMS DIGIT + JMP I GETNAM /EMPTY HANDED, RETURN TO CALLER + TAD (60 + JMP I GNC + / +/ IF NEXT CHAR IS A LETTER, RETURN 6 BITS +/ IF NOT, REPLACE CHAR AND SKIP. +/ +LETTER, 0 + JMS GETCHR + JMP NLETR /NO LETTER, SKIP + TAD (-333 + CLL CML + TAD (33 + SZA SNL /DON'T ALLOW 300 + JMP I LETTER + JMS BACK1 +NLETR, ISZ LETTER + JMP I LETTER +/ +/ IF NEXT CHAR IS A DIGIT (0-9) RETURN VALUE AND SKIP +/ +DIGIT, 0 + JMS GETCHR + JMP I DIGIT + TAD (-272 + CLL + TAD (12 + SNL + JMP NDIGT + ISZ DIGIT + JMP I DIGIT +NDIGT, JMS BACK1 + JMP I DIGIT +/ +R6L, 0 + CLL RTL + RTL + RTL + JMP I R6L +/ +R6R, 0 + RTR + RTR + RTR + AND [77 + JMP I R6R + PAGE + / +/ BUILD AN INSTRUCTION +/ +FIXOPC, 0 /COMBINE OPCODE PARTS + TAD XFLAG /CHECK INDEX SWITCH + SNA CLA + JMP ZRONDX /IF ZERO, NO INDEX REG + CLA CMA + TAD LASTOP /IF INDEX, CHECK FOR INCR + SNA CLA + TAD [100 /YES, PUT + BIT ON + TAD OPCODE /COMBINE WITH OPCODE + DCA OPCODE + TAD EXPVAL+2 /GET INDEX REG. EXPR + AND [7 /ONLY 3 BITS + CLL RTL /SHIFT INTO POSITION + RAL +ZRONDX, TAD OPCODE /ADD OPCODE + TAD (400 /TURN ON TYPE BIT + DCA OPCODE /SAVE OPCODE + JMP I FIXOPC /RETURN +/ +OPR8RS, + -253 /PLUS + -255 /MINUS + -252 /STAR (MULTIPLY) ** + -257 /SLASH (DIVIDE) + -246 /AMPERSAND (AND) + -240 /SPACE (OR) + -241 /EXCLAMATION (OR) + 0 /END OF LIST + / +/ FATAL ERRORS +/ +ERMSG1, 0 /PASS 1 (FATAL) MESSAGES + CDF + TAD I ERMSG1 /GET CODE + DCA .+3 + DCA PASSNO + JMS ERMSG /DO THE MSG THING + 0 + IFZERO RALF < +RETSYS, > + TSF /FINISH TYPING + JMP .-1 + JMP I [7600 /EXIT TO PS8 +/ +/ GENERAL GARBAGE TYPE ERRORS +/ +ERMSG, 0 + CDF FLD0 /FIX FIELD + CLA /NO MESSAGE ON PASS 1 + TAD PASSNO + SMA SZA /IF PASS 3, OUTPUT LEADING CRLF + JMS I [CRLF + SPA CLA + JMP MSGDUN + TAD (5555 /MINUSES + JMS I [PRINT2 + TAD I ERMSG /2-CHAR CODE + JMS I [PRINT2 /PRINT THE MESSAGE + TAD (5555 + JMS I [PRINT2 + TAD PASSNO + SZA CLA + JMP .+4 + JMS I [PRINT2 +PLINE, JMS I (PRNTLN + JMS I [CRLF + ISZ ERRORS /BUMP COUNT +MSGDUN, ISZ ERMSG + JMP I ERMSG + / +/ OUTPUT DECIMAL +/ SUPPRESS LEADING ZEROS +/ PRINT "NO" INSTEAD OF "0" +/ +DECOUT, 0 + SNA /ZERO IS SPECIAL + JMP DECNO /NO INSTEAD OF 0 + DCA OTEMP + DCA OCNT + JMS DEC2 /GET THOUSANDS + -1750 + JMS DEC2 /HUNDREDS + -144 + JMS DEC2 /TENS + -12 + TAD OTEMP /UNITS (NO ZERO SUPPRESS HERE) + JMS PDIG /PRINT LAST DIGIT + JMP I DECOUT /EASY, WHEN YOU KNOW HOW +/ +DECNO, TAD (1617 /NO + JMS I [PRINT2 + JMP I DECOUT +/ +/ LAZY MAN'S DIVISION +/ +DEC2, 0 + CDF FLD0 /JUST TO MAKE SURE +DEC3, CLA CLL + TAD OTEMP + SNA + JMP DEC4 + TAD I DEC2 /SUBTRACT DIVISOR + SNL /TOO MUCH? + JMP DEC4 /YES, STOP NOW + DCA OTEMP /NO, SAVE NEW REMAIN + ISZ OCNT /BUMP QUOTIENT + JMP DEC3 /DO IT AGAIN +DEC4, CLA + ISZ DEC2 /SKIP RETURN + TAD OCNT /CHECK FOR SIGNIFICANCE + SNA + JMP I DEC2 /NONE + JMS PDIG + CLA STL RAR /FORCE SIGNIFICANCE + DCA OCNT + JMP I DEC2 + / +TENTH, -111 + 1463;1463;1463 + 1463;1463;1463 +TEN, 1 +PDIG, 0 + TAD P260 + JMS I PC + JMP I PDIG +P260, 260 + 5 +/ +/ OCTAL CONVERSION, THE HARD WAY +/ +OCTOUT, 0 + DCA OTEMP + STL RAR /NO ZERO SUPPRESS + DCA OCNT + JMS DEC2 + -1000 + JMS DEC2 + -100 + JMS DEC2 + -10 + TAD OTEMP + JMS PDIG + JMP I OCTOUT + PAGE + / +/ OUTPUT ONE WORD +/ + IFNZRO RALF < +/ +/ TEXT TYPE CODES: +TTABS= 0400 +TTORG= 1000 +TTREL= 1400 +/ +OUTREL, DCA WRD /HOLD FIRST WORD + DCA LINKSW /CLEAR ABSOLUTE REF INDICATOR + TAD FPPADR /GET ESD CODE + RTR + RTR /RIGHT IN AC + AND [177 /STRIP TO ESD ONLY + SNA /CHECK FOR ABSOLUTE + JMP PUTABS + DCA FPPADR /SAVE ESD + TAD PASSNO /CHECK FOR PASS 2 + SZA CLA + JMP PRNTRL /IF NOT, TREAT NORMALLY + DCA ABSOP + CLA STL RTL + JMS I (FULCHK /ENSURE 3 WORDS LEFT + TAD FPPADR /GET ESD AGAIN + TAD (TTREL /INSERT CONTROL CODE + DCA I OUTPTR + TAD WRD /FIRST DATUM + DCA I OUTPTR + TAD FPPADR+1 + DCA I OUTPTR + JMS I (FULCHK /IS IT FULL? + JMS BMPLOC /TWO WORDS OUT + JMS BMPLOC /SO LOCCTR +2 + JMP I [NEXTST +PUTABS, ISZ ABREFS /COUNT IT + ISZ LINKSW /SET FLAG +PRNTRL, TAD WRD /GET FIRST WORD + JMS OUTWRD + TAD FPPADR+1 + JMS OUTWRD + JMP I [NEXTST > + / +OUTWRD, 0 /OUTPUT ROUTINE + DCA WRD /SAVE WORD + IFZERO RALF < + TAD LOCTR2 /GET LOW 12 BITS OF LOCATION + JMS I [R6L + AND [37 /GET PAGE NUMBER (WITHIN FIELD) + DCA OTEMP /SAVE PAGE NUMBER + TAD OTEMP + SZA CLA /POINTER TO LITERAL POINTER + IAC + TAD [P0LIT + DCA OWTEMP + TAD LOCTR2 /GET CURRENT ADDRESS DISPLACEMENT + AND [177 + CIA /COMPARE WITH LITERAL BOUNDARY + TAD I OWTEMP + SMA CLA + JMP .+3 /NO PAGE OVER FLOW + JMS I [ERMSG + 2017 /*PO*> + TAD PASSNO /CHECK PASS + SZA + JMP PRNTST /ITS NOT PASS 2 + IFZERO RALF < + TAD WRD /NOW OUTPUT WORD + JMS I [R6R + JMS OOCHAR + TAD WRD + AND [77 + JMS OOCHAR > + IFNZRO RALF < + TAD ABSOP /CHECK FOR ALREADY IN ABS OUTPUT + SZA CLA + JMP INABS /NO PROBLEM + CLA IAC + JMS I (FULCHK + TAD (TTABS /SET ABS CONTROL CODE + DCA I OUTPTR + TAD OUTPTR /SAVE POINTER FOR FUTRUE REF + DCA ABSOP +INABS, ISZ I ABSOP /BUMP COUNT + TAD WRD + DCA I OUTPTR + JMS I (FULCHK /GOOD!> + PRNTST, SMA SZA CLA + TAD LISTSW /IS LIST ON ? + SNA CLA + JMP ENDOUT /NO, DONT PRINT + JMS I [CRLF /NEW LINE + TAD LOCTR1 /PRINT LOCATION COUNTER + AND [7 + JMS I (PDIG + TAD LOCTR2 /NEXT FOUR DIGITS + JMS I [OCTOUT + TAD [240 + JMS I PC + TAD WRD /NOW WORD + JMS I [OCTOUT + TAD LINKSW /LINK GENERATED ON THIS LINE? + SZA CLA + TAD (4700 /IF SO, GIVE APOSTROPHE SPACE + JMS I [PRINT2 + DCA LINKSW /CLEAR SW + JMS I (PRNTLN /PRINT LINE IF NECESSARY +ENDOUT, JMS BMPLOC /BUMP LOC CNTR + JMP I OUTWRD /RETURN +/ +WRD, +BMPLOC, 0 + ISZ LOCTR2 /BUMP LOW ORDER + JMP I BMPLOC + CLA IAC + TAD LOCTR1 + AND (7767 /STOP CARRY INTO BIT 8 + DCA LOCTR1 + JMP I BMPLOC + IFZERO RALF < +/ +/ PUNCH CONTROL +/ +NOPNCX, CLA IAC +ENPNCX, DCA PNCHOF + JMP I [NEXTST +/ +/ OUTPUT AN ORIGIN +/ +PUTORG, 0 + TAD PASSNO /CHECK FOR PASS 2 + SZA CLA + JMP I PUTORG /ELSE FORGET IT + TAD LOCTR2 /OUTPUT FIRST CHAR + JMS I [R6R + TAD [100 + JMS OOCHAR /OUTPUT CHAR + TAD LOCTR2 /NOW LOWER HALF OF ORIGIN + AND [77 + JMS OOCHAR + JMP I PUTORG +OWTEMP, +CHAROO, 0 +OOCHAR, 0 /OUTPUT CHAR AND COMPUTE CHKSUM + DCA CHAROO + TAD PNCHOF /PUNCHING? + SZA CLA + JMP I OOCHAR /NOPE + TAD CHAROO + TAD CHKSUM + DCA CHKSUM + TAD CHAROO + JMS I [OCHAR + JMP I OOCHAR > + / +/ BEGIN NEXT PASS +/ WITH APPROPRIATE THINGS RESET +/ TO DEFAULT VALUES +/ +RESET, JMS I (IOPEN /RE-SELECT FIRST INPUT FILE + TAD USR /EITHER 200 OR 7700 + SPA CLA /IS USR IN CORE? + JMP .+6 /NO + CIF 10 /YES, DISMISS IT + JMS I USR + 11 /USROUT + TAD [7700 + DCA USR /ITS GONE + IFNZRO RALF < + CLA STL RTL /COUNTING FROM 2, + DCA ESDNO /RESET ESD COUNT + JMS I (CLRSCT /ZERO ALL SECTION LENGTHS> + DCA ASMOF /ZERO CONDITIONAL SWITCH + DCA SCSWT /ZERO SEMICOLON SWITCH + TAD SYONLY /IF NOT SYM MAP ONLY + DCA LISTSW /FORCE LIST ENABLE + CLA IAC + DCA LPAGE1 + DCA LPAGE2 + CLA CMA + DCA LINPAG + IFZERO RALF < + TAD [177 + DCA P0LIT /RESET LITERAL BUFFER POINTERS + TAD [177 + DCA CPLIT + TAD [200 > + DCA LOCTR2 /LOCATION COUNTER + IFNZRO RALF < + TAD (20 > + DCA LOCTR1 + CLL CML RAR /4000 + DCA BASER /SET BASE BEYOND BELIEF + DCA INDXR + DCA INDXR+1 + DCA RADIX /RESET DEFAULT OCTAL + DCA ERRORS /ZERO ERROR COUNT + DCA LINKS + ISZ PASSNO /BUMP PASS NUMBER + JMP I (NEWLIN + JMP I (NEWLIN /DO NEXT PASS + PAGE + / +/ END OF A PASS +/ +ENDX, IFZERO RALF < + DCA PNCHOF /RE-ENABLE PUNCH> + IFNZRO RALF < + JMS I (BORG /SET MAX LEN OF CURRENT SECT> + TAD PASSNO + SMA CLA /WHAT PASS WAS THIS? + JMP EOP2 /NOT THE FIRST + IFNZRO RALF < + TAD (INBUF-400 + DCA I (INBUFP /MOVE INPUT BUFFER OVER DMPESD> + TAD BFILE + SNA CLA + JMP START3 /NO BINARY, START PASS 3 + IFZERO RALF < + TAD [200 /START BIN OUT WITH L/T + JMS I [OCHAR + JMP I (RESET > + IFNZRO RALF < + JMP I (DMPESD /OUTPUT EXT SYM TABLE> +/ +EOP2, IFZERO RALF < + CLA IAC /DUMP CURRENT PAGE LITERALS + JMS I (DMPLIT + JMS I (DMPLIT /THEN DUMP PAGE 0 LITERALS> + TAD PASSNO + SMA SZA CLA + JMP EOP3 /YES, PRINT SYMBOL TABLE + IFZERO RALF < + TAD CHKSUM /OUTPUT CHECKSUM + JMS I [R6R + JMS I [OCHAR + TAD CHKSUM + AND [77 + JMS I [OCHAR /LOWER HALF + TAD [200 /TRAILER CHAR + JMS I [OCHAR > + IFNZRO RALF < + DCA I OUTPTR /SET OUTPUT END INDICATOR> + JMS I (OCLOSE /CLOSE THE BINARY FILE +START3, DCA PASSNO /SKIP PASS TWO + JMS I (OOPEN /OPEN LISTING FILE + IFZERO RALF < + JMP NOP3 /NO LISTING, GIVE INFO ON TTY> + IFNZRO RALF < + JMP I (RETSYS > + TAD [OCHAR /CHANGE PRINT ROUTINE + DCA PC + JMP I (RESET /NO,RESET EVERYTHING + / +/ END OF LAST PASS +/ GIVE SOME STATISTICS +/ +EOP3, CLA CMA + DCA LINPAG + JMS I [CRLF +NOP3, JMS I (7607 /READ IN OVERLAY + 0100 +OVERLY, OVBUFR + 40 /USE SYS SCRATCH BLK + JMP I (7605 + JMP I OVERLY + +CHCKMR, 0 + TAD OPCODE /BE SURE ALL REFS ARE + AND [200 /ARE ON SAME PG + SZA CLA + TAD LOCTR2 + AND [7600 + CIA + TAD EXPVAL+2 + AND [7600 + SZA CLA +ADRERR, JMS I [ERMSG + 0201 /**BA** + TAD EXPVAL+2 + AND [177 + TAD OPCODE + JMS I [OUTWRD + JMP I [NEXTST + +IOERR, TAD INOP /REMOVE JMS PRNTLN + DCA PLINE + JMS I [ERMSG1 + 1117 /**IO** +INOP, NOP + + PAGE + IFZERO RALF < +/ ORG THINGS FOR ABSOLUTE ASSEMBLIES +/ +TRYSTR, JMS I [GETCHR + JMP I [NEXTST /WHAT CAN YOU DO? + TAD (-252 /IS IT AN ORG + SZA CLA + JMP I (GETEXP /NO, SOME FUNNY EXPR, MAYBE +ORGX, JMS I (ADRGET + TAD LOCTR1 /CHECK FOR NEW FIELD + CIA + TAD EXPVAL+1 + SNA CLA + JMP SAMFLD /NOT A DIFFERENT FIELD + CLA IAC + JMS DMPLIT /DUMP CURRENT PAGE LITERALS + JMS DMPLIT /DUMP PAGE 0 LITERALS + TAD EXPVAL+1 + AND [7 + DCA LOCTR1 + TAD PNCHOF /PUNCHING ENABLED? + SNA + TAD PASSNO /PASS 2? + SZA CLA + JMP SAMPAG /NO, DON'T OUTPUT CHANGE FIELD + TAD LOCTR1 /NEW FIELD BITS + RTL CLL + RAL + TAD (300 /TURN ON THE LEFT TWO BITS + JMS I [OCHAR /PUT IT OUT (NOT IN CHECK SUM) + JMP SAMPAG /DO THE SAME FOR CURRENT PAGE +SAMFLD, TAD LOCTR2 + AND [7600 /CHECK FOR SAME PAGE + DCA LTEMP + TAD EXPVAL+2 + AND [7600 + CIA + TAD LTEMP + SNA CLA + JMP SAMPAG /PAGE IS THE SAME + CLA IAC + JMS DMPLIT /DUMP CURRENT PAGE LITERALS +SAMPAG, TAD EXPVAL+2 + DCA LOCTR2 + JMS I (PUTORG + JMP I [NEXTST /DONE +PAGEX, TAD LOCTR2 /ADVANCE TO NEXT PAGE + CLL + TAD [177 + AND [7600 + DCA EXPVAL+2 + RAL + TAD LOCTR1 + DCA EXPVAL+1 + JMP ORGX+1 /DO ORG THINGS + DMPLIT, 0 + DCA PAGEN /SAVE PAGE INDICATOR + TAD OUTSWT /SAVE OUTPUT SWITCH + DCA SWTOUT + ISZ OUTSWT /DONT PRINT LINE WITH LITERALS + TAD PAGEN + TAD [P0LIT /GET BOUNDARY POINTER + DCA LTEMP + TAD PAGEN /WHICH LITERAL BUFFER ? + SNA CLA + TAD (P0LBUF-CPLBUF /PAGE 0 BUFFER + TAD (CPLBUF /CURRENT PAGE BUFFER + TAD I LTEMP /PLUS PAGE ADDRESS + DCA X10 /GIVES START OF LITERALS -1 + TAD PAGEN + SZA CLA + TAD LOCTR2 /UPPER FIVE BITS OF ADDRESS + AND [7600 + TAD I LTEMP /PLUS LOWER SEVEN + IAC /PLUS ONE + DCA LOCTR2 /GIVES LOCATION COUNTER + TAD LOCTR2 + AND [177 /ANYTHING TO DUMP? + SNA CLA + JMP DMPFIN /NO + TAD PASSNO + SMA SZA CLA + JMS I [CRLF /ONLY IF PASS 3 + JMS I (PUTORG + TAD [177 /STORE SPURIOUS LITERAL BOUNDARY + DCA I LTEMP /TO PREVENT FALLACIOUS *PO* MESSAGES +LITLUP, TAD I X10 /NO, GET NEXT LITERAL + JMS I [OUTWRD /OUTPUT WORD AND BUMP LC + TAD X10 /DONE? + IAC + AND [77 + SZA CLA + JMP LITLUP /LOOP +DMPFIN, TAD SWTOUT /RESTORE OUTPUT SWITCH + DCA OUTSWT + JMP I DMPLIT /ALL DONE +SWTOUT, 0 > + EXPON, TAD LASTOP + DCA TMP + DCA LASTOP + JMS I (GETSGN /GET SIGN OF EXPONENT + TAD RADIX + DCA OTEMP + ISZ RADIX /SET RADIX TO DECIMAL + JMS I (NUMBER /GET EXPONENT + NOP + TAD OTEMP + DCA RADIX /RESTORE RADIX + TAD TMP + CLL RAR + TAD LASTOP + RAR /LASTOP TO LINK, + DCA LASTOP /TMP TO SIGN OF LASTOP + TAD WORD2 + SZL + CIA /PUT SIGN ON EXP + JMP I (OVER +TMP, 0 + IFZERO RALF < PAGE / > + IFNZRO RALF < +/ +/ IF ALL CONDITIONS ARE RIGHT, CALL THE LOADER +/ +RETSYS, JMS I (DELFIL /THIS LOCATION USED BY INIT CODE +/MAY BE ZEROED BY IT. USED TO DELETE F4 OUTPUT FILE WHEN CHAINING +/FROM COMPILER + OUTPUT DEV IS NOT SYS + CDF 10 + TAD (7604 /POINT TO 2ND OUT FILE THING + DCA X11 + TAD (7611 /POINTER TO 3RD + DCA X10 + TAD (-5 /LENGTH OF SUCH THINGS + DCA LTEMP + TAD I X10 /MOVE 3RD TO 2ND + DCA I X11 /FOR LOADER MAP FILE + ISZ LTEMP + JMP .-3 + TAD I [7600 /WAS THERE A FIRST OUT FILE + AND NP17 /(BINARY OUT)* + DCA LTEMP + TAD OUTBLK /GET FILE LENGTH + AND (377 + CLL RTL + RTL + CIA + TAD LTEMP /COMBINE UNIT AND LEN + DCA I X10 /FOR FIRST INPUT FILE TO LOADER + TAD PASBLK /STARTING BLOCK + DCA I X10 + DCA I X10 /THAT'S THE END OF INPUT + CDF 0 + TAD ERRORS /IF NO ERRORS + SNA CLA + ISZ CHNSW /SHOULD WE CHAIN? + JMP I (7605 /NO!!! + ISZ I (7746 /** + CIF 10 + JMS I USR + 6 /CHAIN +LDRBLK, 0 /FIRST BLOCK OF LOADER +/ +PASBLK, 0 /FIRST BLOCK OF FILE PASSED +CHNSW, 0 /-1 TO ENABLE CHAIN LOADER + / +/ OUTPUT A BLOCK OF BINARY +/ +OUTBLK, 0 /AT END OF PASS2, BECOMES + /LENGTH OF BINARY FILE + TAD (OUCTL /DEV HNDLR CONTROL WORD + JMS I (OUTDMP /CALL THE HANDLER + TAD MOUBUF + DCA OUTPTR /RESET BUFFER POINTER + DCA ABSOP /FORCE NEW ABS OUTPUT CONTROL + JMP I OUTBLK +MOUBUF, OUBUF-1 +/ +TYPCOD, 2500 /UNDEFINED + 0000 /ADDRESS + 3000 /XTERNAL + 0300 /COMMON + 2300 /SECTION + -1 /? + -1 /? + 7000 /8-M0DE SECTION + 3200 /8-MODE PAGE0 COMMON SECTION + 0600 /8-MODE FIELD1 SECTION + BORG, 0 + CDF FLD0 + TAD LOCTR1 + RTR + RTR + AND [177 + TAD (ESDBUF-1 /POINT INTO ESD TABLE + DCA LTEMP + TAD I LTEMP + TAD (4 /ADDRESS VALUE + DCA LTEMP + CDF FLD1 + TAD LOCTR1 + AND [7 /GET ADDR BITS ONLY + DCA BOTMP /SAVE EM + TAD I LTEMP /OLD HIGH VALUE BITS + AND [7 + CIA + TAD BOTMP /COMPARE THEM + SPA + JMP BOXIT /NO UPDATE REQUIRED + SNA CLA + JMP BOCHKL /NO DIFFERENCE YET + TAD LOCTR1 + DCA I LTEMP /RESET TO NEW HIGH + ISZ LTEMP + JMP BOSETL /SKIP OVER TEST +BOCHKL, ISZ LTEMP /POINT TO LO-ORDER + TAD I LTEMP + CIA CLL + TAD LOCTR2 /COMPARE LOW ORDERS + SNL CLA + JMP BOXIT /NO REPLACE +BOSETL, TAD LOCTR2 + DCA I LTEMP +BOXIT, CLA + CDF FLD0 + JMP I BORG /WHEW! +BOTMP= EXTMP + PAGE + NEWESD, 0 + TAD ESDNO + TAD (-177 /CHECK LIMIT + SPA CLA + JMP .+3 + JMS I [ERMSG1 /TOO MANY + 3023 /*XS* + ISZ ESDNO /BUMP COUNT + TAD PASSNO /DON'T CHANGE TABLE AFTER PASS 1 + SMA CLA + JMP I NEWESD + TAD ESDNO + TAD (ESDBUF-1 /INDEX BUFFER + DCA ESDTMP + CDF FLD1 + TAD I OLDN3 /GET POINTER TO THIS SYMBOL + CDF FLD0 + DCA I ESDTMP + TAD ESDTMP + TAD [200 + DCA ESDTMP /NOW ADDRESS CHAR TABLE + TAD BUCKET + DCA I ESDTMP + JMP I NEWESD +ESDTMP= EXTMP +/ +/ RELOCATION CONTROL PSEUDO-OPS +/ +ENTRX, JMS I [GETNAM /NAME OF ENTRY POINT + JMP ESDERR + JMS I [LOOKUP /FIND IT + JMP QENT /UNDEFINED + CLL RAR /MUST BE USER ADDR TYPE + SNA CLA + TAD I X10 /LOOK AT ESD + AND [7770 + SZA CLA /IS IT RELOCATABLE? + JMP OKENT /YES +QENT, JMS I [ERMSG /NO MESSAGE ON PASS 1 + 1105 /*IE* +OKENT, JMS NEWESD /CREATE AN ENTRY FOR IT + JMP I [NEXTST + / +EXTRNX, CLA STL RTL + DCA STYPE /EXTERNS ARE TYPE 2 + JMS I [GETNAM + JMP ESDERR + JMS I [LOOKUP + JMS CRESD /IF UNDEFINED, DEFINE IT + CLL RTR /IF DEFINED, CHECK LEGALITY + SZA CLA +ESDERR, JMS I [ERMSG + 0523 /*ES* + JMP I [NEXTST +/ + CLA IAC /FIELD1 SECT=11 + IAC /COMMZ SECT=10 +SECT8X, TAD [7 + JMP COMMX+1 +SECTX, CLA IAC +COMMX, TAD (COMMN /GET DESIRED CODE + DCA STYPE /FOR SECTION TYPE + JMS I [GETNAM + DCA BUCKET /IF NO NAME, BLANK COMMON + JMS I [LOOKUP + JMP NEWSCT /UNDEFINED + CIA /OLD FRIEND + TAD STYPE /SAME? + SNA CLA + JMP SETSCT /YUP, DO IT + JMP ESDERR +/ +CRESD, 0 + JMS NEWESD /CREATE NEW ESD ENTRY + CDF FLD1 + TAD I LTEMP /SET TYPE CODE + AND [7700 + TAD STYPE + DCA I LTEMP + ISZ LTEMP + TAD ESDNO + CLL RTL /ESD NO TO SYMBOL VLAUE + RTL + DCA I LTEMP + CDF FLD0 + JMP I CRESD +/ +NEWSCT, JMS CRESD /CREATE AN ESD +SETSCT, JMS I (BORG /ADJUST LOC CTR'S + CDF FLD1 + TAD I X10 /GET NEW LOC CTR VALUE + DCA LOCTR1 + TAD I X10 + DCA LOCTR2 /LOW LOC CTR + CDF FLD0 + JMP PUTORG + / +ORGX, JMS I (ADRGET /GET ORG EXPR + JMS I (BORG + TAD EXPVAL+1 + AND [7770 /DOES IT HAVE AN ESD? + SNA CLA + TAD LOCTR1 /IF NOT, KEEP CURRENT ESD + AND [7770 + TAD EXPVAL+1 + DCA LOCTR1 /RESET PC + TAD EXPVAL+2 + DCA LOCTR2 +PUTORG, TAD PASSNO /OUTPUT ON PASS 2 ONLY + SZA CLA + JMP I [NEXTST + DCA ABSOP /CLEAR ABS OUTPUT SW + CLA STL RTL + JMS I (FULCHK /ROOM FOR MORE? + TAD LOCTR1 + RTR + RTR /GET ESD + AND [177 + TAD (TTORG + DCA I OUTPTR + TAD LOCTR1 + AND [7 /FIELD BITS + DCA I OUTPTR + TAD LOCTR2 /ADDRESS + DCA I OUTPTR + JMS I (FULCHK + JMP I [NEXTST + PAGE /> + / +/ VARIOUS PSEUDO-OP HANDLERS +/ +LSTONX, TAD SYONLY /ENABLE LISTING UNLESS SYM MAP ONLY +LSTOFX, DCA LISTSW + JMP I [NEXTST +/ +DECX, CLA IAC +OCTALX, DCA RADIX + JMP I [NEXTST +/ +TEXTX, JMS I [GETCHR /GET DELIMITER + JMP I [NEXTST /NULL STMT + CIA + DCA EXTMP /SAVE - DELIM +LOOP6B, JMS GETCHT /GET HIG ORDER CHAR + JMP I [NEXTST + JMS I [R6L /SHIFT IT UP + DCA LTEMP /SAVE HALF + JMS GETCHT /GET LOWER CHAR + JMP OUTTXT /GO PUT LAST + TAD LTEMP /PUT 2 CHARS TOGETHER + JMS I [OUTWRD /OUTPUT WORD + JMP LOOP6B /LOOP +OUTTXT, TAD LTEMP /PUT OUT HALF WORD + JMS I [OUTWRD /OR ZERO WORD + JMP I [NEXTST +GETCHT, 0 /GET CHAR FOR TEXT STMT + ISZ NCHARS /BUMP COUNT + SKP + JMP I GETCHT /END OF TEXT + TAD I CHRPTR /GET CHAR + DCA BUCKET /SAVE IT + TAD BUCKET /IS IT THE DELIM ? + TAD EXTMP + SNA CLA + JMP I GETCHT /YES, RETURN NO SKIP + ISZ GETCHT /BUMP RETURN + TAD BUCKET /GET CHAR + AND [77 /LOW 6 BITS + JMP I GETCHT /RETURN + / +/ CONDITIONAL ASSEMBLY HANDLERS +/ +IFNZRX, CLA CMA +IFZROX, JMS GETCON /GET CONDITION EXPR + TAD EXPVAL+1 /HIGH ORDER + AND [7 + SNA + TAD EXPVAL+2 /LOW ORDER +SWTCH, SNA CLA + JMP TRUE /PRESENT CONDITION OF ASMOF IS OK +FALSE, TAD ASMOF /GOTTA REVERSE IT + CMA + DCA ASMOF /THAT DOES IT +TRUE, CDF FLD0 + JMS I [GETCHR + JMP BADCND /FORGOT THE ANGLE + TAD [-240 /IGNORE BLANK, IF ANY + SNA + JMP TRUE /TRY AGAIN + TAD (240-274 + SNA CLA + JMP I (ASMBL /GO FROM HERE + JMS I [BACK1 /LET SOMEONE ELSE WORRY ABOUT IT + JMP BADCND +/ +GETCON, 0 + DCA ASMOF /SET INITIAL TRUTH + JMS I [EXPR /COLLECT EXPR + JMP OKCND /BAD MAY MEAN GOOD +BADCND, JMS I [ERMSG /BUT GOOD MEANS BAD + 1103 /*IC* + DCA ASMOF /ENABLE ASSEMBLY + JMP I (ASMBL +OKCND, TAD EXPSW /WAS THERE AN EXPR, AT LEAST? + SNA CLA + JMP I GETCON /YES + JMP BADCND +/ +IFNEGX, CLA CMA +IFPOSX, JMS GETCON + CLA CLL IAC RTL /4 + AND EXPVAL+1 /SIGN OF EXPR + JMP SWTCH /GO FROM THERE +/ +IFNDFX, CLA CMA +IFREFX, DCA ASMOF + JMS I [GETNAM /GET SYMBOL NAME + JMP BADCND /GOTTA GIVE SOMETHING + JMS I [FIND /IS IT KNOWN TO US? + JMP FALSE /NOT REFERENCED YET + SNA CLA /SKIP IF DEFINED + DCA ASMOF /ELSE ASSEMBLE + JMP TRUE + IFSWX, CLA CMA +IFNSWX, DCA ASMOF + TAD (7642 /ADDRESS OF OPTION WORDS + DCA WORD2 /A TEMP + JMS I (LETTER /ALLOW LETTER + JMP .+4 /AC BETWEEN 1 AND 32 + JMS I (DIGIT /OR NUMBER + JMP BADCND /ALL ELSE IS BAD + TAD (33 /MAKE 0 = Z+1 + ISZ WORD2 /BUMP POINTER + TAD (-14 /IS IT IN THIS WORD? + SMA SZA + JMP .-3 /NO, POINT TO NEXT + CIA + CMA STL /BIT COUNT AWAY FROM LINK + DCA WORD1 + RAL /SHIFT + ISZ WORD1 /COUNT + JMP .-2 + CDF 10 /OPTIONS FIELD + AND I WORD2 /GET SELECTED BIT + JMP SWTCH /AND TEST IT +/ +ZBLKX, JMS I (ADRGET /EVALUATE EXPR + TAD EXPVAL+2 + CIA + DCA ZBCNT /HOLD COUNT + TAD LISTSW /SAVE LISTSWITCH + DCA ZBTMP + JMS I [OUTWRD /PUT A WORD + DCA LISTSW /NO LIST AFTER FIRST + ISZ ZBCNT /COUNT THEM + JMP .-3 /MORE + TAD ZBTMP /RESTORE + DCA LISTSW /LISTING + JMP I [NEXTST +ZBCNT= EXTMP +ZBTMP= EXTMP2 + PAGE + + + PTP=20 + DCB=7760 + INFLD=INCTL&70 /GET FIELD OF INPUT BUFFER + OUFLD=OUCTL&70 /DITTO OUTPUT BUFFER +IN7400, 7400 +NINCTL, INCTL+1 +NINREC, INRECS +IOPEN, 0 + TAD (7617 + DCA INFPTR /RESET FILE POINTER + JMS INNEWF /FETCH NEW HNDLR, ETC + /WHILE USR IS STILL IN CORE + CLA CMA + DCA INCHCT /FORCE A READ ON NEXT CHAR + JMP I IOPEN + +ICHAR, 0 +IN7600, 7600 +INCHAR, CDF INFLD + ISZ INJMP /BUMP THREE-WAY UNPACK SWITCH + ISZ INCHCT +INJMPP, JMP INJMP + TAD INEOF + SZA CLA /DID LAST READ GIVE EOF ? +GETNEW, JMS INNEWF /OPEN A NEW INPUT FILE + TAD INCTR + CLL + TAD NINREC + SNL + DCA INCTR /RESTORE INCR IF NOT OVERFLOWED + SZL /IS THIS THE LAST READ? + ISZ INEOF /YES - SET END-OF-FILE FLAG + CLL CML CMA RTR /MAKE CONTROL WORD + RTR /FROM THE AMOUNT OF THE OVERFLOW + RTR /(IF ANY) AND THE STANDARD CNTRL WD + TAD NINCTL + DCA INCTLW + CDF + JMS I INHNDL /CALL THE DEVICE HANDLER +INCTLW, 0 +INBUFP, INBUF +INREC, 0 + JMP INERRX /SOME KIND OF HANDLER ERROR +INBREC, TAD INREC + TAD NINREC + DCA INREC /UPDATE THE RECORD NUMBER + TAD INCTLW + AND IN7600 + CLL RAL + TAD INCTLW + AND IN7600 + CMA + DCA INCHCT /COMPUTE THE NEW CHARACTER COUNT + TAD INJMPP + DCA INJMP /RESET THE CHARACTER SWITCH + TAD INBUFP + DCA INPTR /AND THE WORD POINTER + JMP INCHAR /MAKE BELIEVE THIS NEVER HAPPENED +INERRX, ISZ INEOF /EITHER AN END-OF-FILE OR A BADDIE + SMA CLA /WHICH TYPE WAS IT ? + JMP INBREC /END OF FILE - RESUME PROCESSING + JMP I [IOERR /BADDIE, GIVE ERROR MESSAGE +INJMP, HLT /THIS IS THE 3 WAY CHARACTER SWITCH + JMP ICHAR1 + JMP ICHAR2 + TAD INJMPP + DCA INJMP + TAD I INPTR + AND IN7400 + CLL RTR + RTR /COMBINE HIGH-ORDER FOUR BITS OF + TAD INCTLW + RTR /THE 2 WORD TO FORM THE 3RD CHAR + RTR + ISZ INPTR + JMP INCOMN +ICHAR2, TAD I INPTR + AND IN7400 + DCA INCTLW /SAVE THE HI ORDER BITS FOR THE 3RD + ISZ INPTR /BUMP THE WORD POINTER +ICHAR1, TAD I INPTR +INCOMN, AND (177 /PHPH WAS 277 + TAD (-32 /PHPH WAS 232 + SNA /IS THE CHARACTER A ^Z? + JMP GETNEW /YES - GET A NEW FILE + TAD (232 /RESTORE THE CHARACTER /PHPH NOW WE HAVE PARITY ON! + CDF + JMP I ICHAR /AND RETURN +INFPTR, 7617 +INEOF, 1 /PARAMETERS ARE SET UP SO THAT +INCHCT, /IOPEN IS UNNECESSARY. +INNEWF, -1 + TAD NINDEV + DCA INHNDL /INITIALIZE HANDLER ADDRESS + CDF 10 + TAD I INFPTR /GET NEXT CD INPUT FILE ENTRY + CDF + SNA /ANY MORE? + JMP I (ENDX /NO MORE INPUT + CIF 10 + JMS I USR + 1 /ASSIGN, FETCH HANDLER + +INHNDL, 0 + JMP I [IOERR /HUH? + CDF 10 + TAD I INFPTR + AND (7760 /GET LENGTH PART OF WORD + SZA /LENGTH OF 0 MEANS LENGTH GE 256 + TAD [17 /ADD HIGH ORDER BITS + CLL CML RTR + RTR + DCA INCTR /STORE LENGTH OF FILE + ISZ INFPTR + TAD I INFPTR + CDF + DCA INREC /STARTING RECORD NUMBER OF FILE + ISZ INFPTR + DCA INEOF /ZERO END-OF-FILE FLAG + JMP I INNEWF +INCTR, 0 +INPTR, 0 +OUFNAM, 0;0;0;0 /OUTPUT FILE NAME +NINDEV, INDEVH + PAGE + OOPEN, 0 + TAD OUFILE /INCR OUTPUT FILE POINTER + TAD (5 + DCA OUFILE + CDF 10 + TAD I OUFILE /GET DEVICE CODE, LEN + DCA OUELEN /HOLD IT A MO + JMS I (OFNAME /GET FILE NAME INTO FIELD 0 + TAD OUELEN /CHECK FOR NULL FILE + SNA CLA + JMP ONOFIL /INHIBIT OUTPUT + JMS GETUSR /LOAD USR IF NOT ALREADY IN + TAD OUNAME /RESET ENTER CALL + DCA OUBLK + TAD NOUDEV + DCA OUHNDL + TAD OUELEN /THE UNIT + CIF 10 + JMS I USR + 1 /ASSIGN, FETCH HANDLER +OUHNDL, 0 /OUTPUT DEVICE HANDLER ENTRY + JMP I [IOERR /HUH? + TAD OUELEN /UNIT AGAIN + CIF 10 + JMS I USR + 3 /ENTER OUTPUT FILE +OUBLK, OUFNAM /REPLACED WITH STARTING BLOCK +OUELEN, 0 /REPLACED WITH LENGTH OF HOLE + JMP I [IOERR /YOU BLEW IT!!! + DCA OUCCNT + DCA I (OUTINH /ZERO OUTPUT INHIBIT FLAG + JMS I (OUSETP + ISZ OOPEN + JMP I OOPEN +ONOFIL, ISZ I (OUTINH + JMP I OOPEN +OUTDMP, 0 + DCA OUCTLW /STORE THE CONTROL WORD + TAD OUCCNT + SNA + ISZ OUCTLW + TAD OUBLK + DCA OUREC /COMPUTE STARTING BLOCK + TAD OUCTLW + JMS I [R6L + AND [17 /COMPUTE THE NUMBER OF RECORDS + TAD OUCCNT /UPDATE SIZE OF FILE + DCA OUCCNT + TAD OUCCNT + CLL CML + TAD OUELEN + SNL SZA CLA /EXCEED GIVEN LENGTH ? + JMP I [IOERR /YES - ERROR + CDF + JMS I OUHNDL +OUCTLW, 0 +LOUBUF, OUBUF +OUREC, 0 + JMP I [IOERR + JMP I OUTDMP +OCLOSE, 0 + JMS GETUSR /ENSURE USR IN CORE + IFNZRO RALF < + TAD PASSNO + SZA CLA + JMP .+6 + TAD (377 + JMS I (FULCHK /DUMP LAST BLOCK + TAD OUCCNT /SAVE FILE LENGTH + DCA I (OUTBLK /FOR CHAIN + JMP NODUMP > + JMS I (OTYPE + AND (770 + TAD (-PTP /CHECK FOR PAPER TAPE PUNCH OUTPUT + SZA CLA /AND SKIP ^Z OUTPUT IF TRUE + TAD (232 /OUTPUT A ^Z + JMS I [OCHAR +FILLLP, JMS I [OCHAR + JMS I (OTYPE /GET TYPE OF OUTPUT DEVICE + SPA CLA + TAD [100 + TAD [77 + AND I (OUDWCT + SZA CLA /UP TO THE BOUNDARY YET? + JMP FILLLP /NO - FILL WITH ZEROS + TAD I (OUDWCT /GET DOUBLEWORD COUNT LEFT + TAD (OUCTL&3700 + SNA /A FULL WRITE LEFT? + JMP NODUMP /YES DON'T DO IT + TAD (4000+OUFLD /PUT IN FIELD AND WRITE BITS + JMS OUTDMP +NODUMP, CIF CDF 10 + TAD I OUFILE + CDF + JMS I USR + 4 /CLOSE THE OUTPUT FILE +OUNAME, OUFNAM /POINTER TO OUTPUT FILE NAME +OUCCNT, 0 + JMP I [IOERR /ERROR WHILE CLOSING - BAD!! + JMP I OCLOSE /ALL DONE +NOUDEV, OUDEVH + / +/ LOAD USR IF NOT IN CORE ALREADY +/ +GETUSR, 0 + TAD USR /CURRENT CALL ADDR + SMA CLA + JMP I GETUSR /WE GOT IT + CIF 10 + JMS I USR /THE ANSWERING SERVICE + 10 /CALLS THE SR + TAD [200 + DCA USR /RESET THE CALL ADDRESS + JMP I GETUSR /JES FINE + PAGE + FULCHK, 0 + IFNZRO RALF < +/ +/ IF THE RELOCATABLE BINARY OUTPUT +/ BLOCK IS FULL (WITHIN THE CONTENTS OF THE AC) +/ FILL THE REST WITH NOP CODES AND OUTPUT THE +/ BLOCK. +/ + TAD OUTPTR + TAD KOUBUF + SPA CLA + JMP I FULCHK +FULLUP, TAD OUTPTR + TAD KOUBUF + SMA CLA + JMP .+4 + CLA IAC + DCA I OUTPTR + JMP FULLUP + JMS I (OUTBLK + JMP I FULCHK +KOUBUF, -OUBUF-377 > +/ +/ +/ GET SIGN CHARACTER IF ANY +/ BUMP LASTOP IF MINUS +/ +GETSGN, 0 + JMS I [GETCHR + JMP I GETSGN + TAD (-255 /MINUS? + SNA + ISZ LASTOP + SZA + CLL CMA RAR /IF IT WAS PLUS, BECOMES 0 + SZA CLA /SKIP IF PLUS OR MINUS + JMS I [BACK1 /OTHERWISE PUT IT BACK + JMP I GETSGN + / AS PER RICHIE LARY +/ +/ SINGLE AND DOUBLE PRECISION +/ FLOATING POINT INPUT +/ +/ +EX, TAD M3 +FX, TAD M3 + DCA DESW /STORE LENGTH + TAD (-7 + JMS CLEAR /CLEAR FAC+OP + DCA LASTOP + JMS GETSGN /GET SIGN + STA /CLA CMA + DCA DPSW /SET NO DP +GETD, DCA DCNT + JMS I (DIGIT /GET A DIGIT + JMP LOOKP /NO + DCA OTEMP /SAVE IT + JMS I (FMPTEN /MULT FAC*10 + JMS CLEAR + TAD OTEMP + SZA + JMS I (FAD /ADD DIGIT TO FAC IF NOT= 0 + TAD DPSW + CMA + TAD DCNT /BUMP IF FP SEEN + JMP GETD + LOOKP, JMS I [GETCHR + JMP OVER /DONE + TAD (-256 + SNA + JMP DECPT + TAD (256-304 + CLL RAR + SNA CLA + JMP I (EXPON /E OR D +DEXERR, JMS I [ERMSG + 0620 /FP + JMP NOTNEG +DECPT, ISZ DPSW + JMP DEXERR /2 PERIODS + JMP GETD +/ +OVER, TAD DCNT /EXPON COMES HERE W EXP IN AC + SNA + JMP NOSCAL /NO SCALING NEEDE + CLL + SMA + CIA CML /SIGN IN LINK,MAGNITUDE IN AC + DCA DCNT /AS A COUNT + SNL + TAD (TENTH-TEN /OFFSET KLUDGE + DCA OTEMP +SCALUP, TAD OTEMP + JMS I (FMPTEN /MULT BY 10.0 OR 0.1 + ISZ DCNT + JMP SCALUP +NOSCAL, JMS CLEAR + STL RAR + DCA OP+5 /ROUNDING CONSTANT + JMS I (ADD + TAD AC + SZA CLA + JMS I (NORM /WATCH IT! + DCA AC+5 + TAD LASTOP + SNA CLA /SIGN -? + JMP NOTNEG /NO + TAD (AC+5 + JMS I (SETUP +ACNGLP, RAL + TAD I P /NEGATE FAC + CLL CIA + DCA I P + STA + TAD P + DCA P + ISZ CT + JMP ACNGLP +NOTNEG, JMS CLEAR /SET UP X10 + TAD I X10 + JMS I [OUTWRD + ISZ DESW /OUTPUT # + JMP .-3 + JMP I [NEXTST + CLEAR, 0 /AC MAY NOT BE 0 + TAD (-7 + DCA CT + TAD (OPX-1 + DCA X10 + DCA I X10 + ISZ CT + JMP .-2 + JMP I CLEAR + DCNT=FULCHK + DPSW=NCTMP + DESW=OPCODE + PAGE + OVBUFR=. +FAD, 0 /FLOATING ADD DIGIT IN AC + DCA OP + TAD (13 + DCA OPX +ALNLP, TAD OPX + CIA + TAD ACX + SNA /ALIGNED? + JMP GOADD /YES + SMA CLA + TAD (OPX-ACX + JMS RSHFT /NO-SHIFT 1 OF THEM RIGHT 1 + JMP ALNLP /TRY AGAIN +GOADD, JMS ADD /ADD FRACTIONS + JMS NORM /NORMALIZE RESULT + JMP I FAD /RETURN +/ +RSHFT, 0 /SHIFT RIGHT + TAD (ACX /DEFAULT IS FAC + JMS SETUP + ISZ I P /BUMP EXPONENT +RSLP, ISZ P + TAD I P + RAR + DCA I P + ISZ CT + JMP RSLP + JMP I RSHFT +/ +ADD, 0 /ADD TO FAC + TAD (OP+5 + DCA PP2 + TAD (AC+5 + JMS SETUP +ADDLP, RAL /CARRY + TAD I PP2 + TAD I P + DCA I P /ADD ONE WORD + STA + TAD P /COMPLEMENT LINK + DCA P + STA + TAD PP2 /COMPLEMENT LINK + DCA PP2 + ISZ CT + JMP ADDLP + JMP I ADD + NORM, 0 /NORMALIZE FAC + TAD AC + SPA CLA /CHECK FOR OVERNORMALIZATION + JMS RSHFT /AND CORRECT +NORMLP, STL RTR + AND AC + SZA CLA /NORMALIZED? + JMP I NORM /YES + TAD (AC+5 + JMS SETUP +LSLP, TAD I P + RAL /LEFT SHIFT + DCA I P /FAC 1 BIT + STA CML /COMPLEMENT LINK + TAD P + DCA P + ISZ CT + JMP LSLP + STA + TAD ACX /BUMP EXP + DCA ACX /DOWN 1 + JMP NORMLP + FMPTEN, 0 /FLTG MULTIPLY BY 10.0 OR .1 + TAD (TEN + JMS SETUP + TAD AC + SNA CLA /AC=0 MEANS RESULT=0 + JMP I FMPTEN + TAD I P + TAD ACX /FUDGE FAC + DCA ACX /EXPONENT + TAD (MUX + DCA X11 + TAD (ACX + DCA SETUP + TAD (OPX + DCA X10 + DCA MUX /CLEAR MULT TEMP EXP +MPLP1, ISZ SETUP + TAD I SETUP /MOVE FAC + DCA I X10 /TO OP + DCA I SETUP /CLEAR FAC + ISZ P + TAD I P /MOVE MULTIPLIER + DCA I X11 /TO MULT TEMP + ISZ CT + JMP MPLP1 +/ +MPLP2, TAD (MUX-ACX + JMS RSHFT /SHIFT MULT TEMP RIGHT 1 + SZL + JMS ADD /ADD IF LOW ORDER BIT WAS 1 + JMS RSHFT /SHIFT FAC RIGHT + TAD MU+5 + SZA CLA /12 SUCCESSIVE 0 BITS + JMP MPLP2 /IN MULTIPLIER MEANS DONE + JMS NORM + JMP I FMPTEN +/ +SETUP, 0 /COMMON CODE + DCA P + TAD (-6 + DCA CT + CLL + JMP I SETUP +/ +MUX, 0 /MULT TEMP +MU, ZBLOCK 6 + CT=CPTMP + P=EXTMP + PP2=PAGEN + PAGE + IFNZRO RALF < +ESDBUF, PNDL+6 /ESD ENTRY FOR SECTION #MAIN + PNDL /DITTO FOR BLANK COMMON + ZBLOCK 376 /FILL TO 400 LOCS +/ +/ BEGIN OF PASS 2: +/ DUMP EXTERNAL SYMBOL DICTIONARY +/ DURING PASSES 2 AND 3, THIS IS INPUT BUFFER +/ +DMPESD, CLA CLL CMA RAL /-2 + DCA EXTMP2 /PASS CONTROL + TAD (3 /RALF OUTPUT IDENTIFIER + DCA I OUTPTR + TAD VERS + DCA I OUTPTR /THIS MAKES 6-WORD ENTRIES + TAD DPFLG /4000=NEED DP HARDWARE + DCA I OUTPTR /EXACTLY FILL A BLOCK + DCA I OUTPTR +ESDSCN, TAD (ESDBUF-1 + DCA X10 /POINT TO POINTERS + TAD (ESDBUF+177 + DCA X12 /POINT TO INITAIL CHARS + TAD ESDNO + CIA + DCA EXTMP +ESDLUP, TAD (-3 + DCA LTEMP /NAME LENGTH COUNT + TAD (EQUN-1 /WHERE WE'LL KEEP THE NAME + DCA X13 + TAD I X10 /GET POINTER + DCA X11 + TAD I X12 /GET FIRST CHAR + SNA /BLANK BECOMES # + TAD (43 +ESDNLP, JMS I [R6L + DCA EQUN+2 + CDF FLD1 + TAD I X11 /GET NEXT PAIR FROM SYMBOL TABLE + DCA EQUN+3 /HOLD IT + CDF FLD0 + TAD EQUN+3 + JMS I [R6R /GET LEFT CHAR + TAD EQUN+2 /COMBINE THEM + DCA I X13 + TAD EQUN+3 /GET RIGHT HALF OF PAIR + AND [77 + ISZ LTEMP + JMP ESDNLP + AND [37 /DROP FORCE BIT FROM TYPE + DCA EQUN+3 + CDF FLD1 + TAD I X11 /HIGH VALUE + DCA EQUN+4 + TAD I X11 /LOW VALUE + DCA EQUN+5 + CDF FLD0 + TAD EXTMP2 /WHAT PASS IS THIS? + RAR /LINK 0 IF FIRST, 1 IF SECOND + SNL CLA + JMP NOENTS /FIRST, ENTRYS NOT OUTPUT + TAD EQUN+3 /OUTPUT ENTRIES ONLY ON 2ND + CLL RAR + SNA CLA + SNL + JMP ESDLND /NO GO + JMP ESDOUT /YES, PUT IT +NOENTS, TAD EQUN+3 /EXT, COMM, OR SCTN + CLL RAR + SNA /SKIP IF OK + JMP ESDLND /UNDEFINED OR ENTRY + RAR + SNA CLA + JMP ESDOUT /IF EXTERN, DO IT + TAD EQUN+4 /IF SECTION, CHECK + AND [7 /THAT LENGTH + SNA /IS NON-ZERO + TAD EQUN+5 + SNA CLA + JMP ESDLND /ZERO LEN JUST GETS IN THE WAY +ESDOUT, TAD (EQUN-1 + DCA X13 + TAD (-6 + DCA LTEMP + TAD I X13 /GET OUTPUT WORD + DCA I OUTPTR + ISZ LTEMP + JMP .-3 /6-WORD ENTRIES + TAD OUTPTR + TAD OUTBUF + SPA CLA + JMP ESDLND /NOT END OF BLOCK YET + JMS I (OUTBLK + TAD (3 + DCA I OUTPTR + DCA I OUTPTR + DCA I OUTPTR + DCA I OUTPTR +ESDLND, ISZ EXTMP /GO THRU ESD LIST + JMP ESDLUP + ISZ EXTMP2 /WHOLE LIST TWO PASSES + JMP ESDSCN + TAD (-6 /THEN STORE END-OF-ESD + DCA LTEMP + DCA I OUTPTR + ISZ LTEMP + JMP .-2 + TAD (377 /FORCE BLOCK OUTPUT + JMS I (FULCHK + CDF FLD1 /THEN DEFAULT ORG + TAD I (LMAIN /IF MAIN LEN .NE. 0 + AND [7 + SNA + TAD I (LMAIN+1 + CDF FLD0 + SNA CLA + JMP I (RESET /FIRST SECTION WILL GET IT + TAD (TTORG+1 /ORG TO ZERO OF MAIN + DCA I OUTPTR + DCA I OUTPTR + DCA I OUTPTR + JMP I (RESET +OUTBUF, 1001 + PAGE /> + / +/ INITIALIZATION CODE +/ +BEGIN, JMP CHNIN /IF ENTERED BY CHAIN +GCMND, CIF 10 /IF ENTERED BY .R, ETC + JMS I USR /USR IS LEFT OVER + 5 /DECODE + IFZERO RALF < + 620 /DEFAULT EXT = .FP> + IFNZRO RALF < + 2201 /DEFAULT EXT = .RA> + DCA I (RETSYS /NO NEED FOR IT IF NOT CHAINED +CHNIN, JMS I (7607 + 4100 /TEMP WRITE OUT OVERLAY + 6600 /NOW AT 6600 + 40 /TO SYS SCRATCH BLK 40 + JMP I (7605 /ERROR + CDF 10 + IFNZRO RALF < + TAD I [7600 /BIN FILE UNIT + AND NP17 + SNA /IS THERE ONE? + JMP DEFBIN /NO, SET DEFAULT + TAD (7757 /POINT TO DEV CTRL WORD + DCA WORD1 + TAD I WORD1 + SPA CLA + JMP OKBIN /FILE-STRUCTURED, OK + CDF 0 + JMS I (PRTXT /TYPE MESSAGE + TXBBIN-1 + -TXBLN + JMS I [CRLF + JMP GCMND /TRY AGAIN +/ +DEFBIN, CLA IAC /DEFAULT BIN UNIT IS SYS + DCA I [7600 /SET UNIT + TAD [7600 + DCA X10 /SET POINTER + TAD (0617 /FO + DCA I X10 + TAD (2224 /RT + DCA I X10 + TAD (2216 /RN + DCA I X10 /FORTRN. + DCA I X10 + CDF 0 + JMP I (NOEXT /NOW, OPEN THE FILE> + OKBIN, CDF 0 /HAVE TO GO TO ANOTHER PAGE + JMP I (NOKBIN /ONLY SO MANY PATCHES TO A PAGE +GBIN, CDF 10 + TAD I (7644 + AND (20 + SNA CLA + ISZ SYONLY /=NO SLASH T + CDF 0 + JMS I (NEW /**SEE IF NEED 2 PG HANDLER + 7600 + JMS I (OOPEN + DCA BFILE + IFNZRO RALF < + TAD R41 /L OR G SWITCH** + CDF 10 + AND I (7643 /TEST /L OR /G SWITCH + CDF 0 + SNA CLA /** + JMP KCHN /KILL CHAIN, IT'S SET + CIF 10 + CLA IAC /UNIT IS SYS + JMS I USR + 2 /LOOKUP +LBLK, LDRNAM /LOADER.SV +R41, 41 /** + JMP KCHN /NO FIND, NO CALL + TAD LBLK /STARTING BLOCK + DCA I (LDRBLK /FOR CHAIN + TAD I (OUBLK /OUTPUT STARTING BLOCK + DCA I (PASBLK /SAVED FOR CHAIN TO LOADER + CLA CMA /ENABLE CHAIN +KCHN, DCA I (CHNSW /OR KILL IT, WHATEVER> + JMS I (INCHK /NOW CHECK INPUT DEVICES FOR 2 PG HANDLERS + JMS I (INNEWF /GET INPUT HANDLER + CLA CMA + DCA I (INCHCT /SET INITIAL COUNT + TAD NP7700 + DCA USR /FROM NOW ON, USE THE HIGH CALL + JMS I (NEW + 7605 /CHECK LIST DEV TOO** + CDF 10 + TAD I (7611 /LST FILE EXT + SNA + TAD (1423 /LS DEFAULT + DCA I (7611 + TAD I (7666 /GET DATE + DCA WORD1 +/ +/ MOVE SYMBOL TABLE TO ITS PROPER LOCATION +/ + TAD (1777 + DCA X10 /LOADED ADDRESS OF SYMBOL TABLE + CLA CMA + DCA X11 /WE MOVE IT TO ASSEMBLED ADDRESS + TAD (-FREE /LENGTH OF SYMBOL TABLE + DCA WORD2 /SET COUNT + TAD I X10 + DCA I X11 /THIS SAVES SWAPS OF USR + ISZ WORD2 + JMP .-3 + CDF 0 + JMP I (GDATE /CHECK FOR FPP PRESENCE** + PAGE + / +/ PUT THE DATE INTO THE PAGE HEADING +/ +GDATE, TAD (1000 + DCA I (7746 /SET NO-RESTART BIT + /PUT VERNUM IN TITLE LINE + TAD VMSG + DCA I (VMTXT + TAD VMSG+1 /PATCH LEVEL + DCA I (VMTXT+1 + DCA OCNT /CLEAR OCNT + TAD WORD1 /RE-GET DATE + SNA + JMP I (NEWLIN /GOLLY, AND ALL THIS CODE WASTED + AND (370 + CLL RTR + RAR + TAD (-12 + SPA + JMP .+3 + ISZ OCNT + JMP .-4 + TAD (72 /60+12 + DCA OTEMP + TAD (TITDAT-1 + DCA X11 + TAD OCNT + JMS I (R6L + SZA + TAD (6000 + TAD OTEMP + DCA I X11 + TAD WORD1 + AND (7400 /MONTH + JMS I (R6L + TAD (MONTHS-3 + DCA X10 + TAD I X10 + DCA I X11 + TAD I X10 + DCA I X11 + DCA OCNT + TAD WORD1 + AND [7 + DCA OTEMP + TAD I (7777 + AND (600 + RTR CLL + RTR + TAD OTEMP + TAD (106 + TAD (-12 + SPA + JMP .+3 + ISZ OCNT + JMP .-4 + TAD (72 + DCA OTEMP + TAD (5560 + TAD OCNT + DCA I 11 + TAD OTEMP + JMS I (R6L + TAD (40 + DCA I X11 + JMP I (NEWLIN +VMSG, VNUM&70^10+VNUM&707+6060 + PATCH&77^100+40 + IFNZRO RALF < +LDRNAM, TEXT "LOAD@@SV" +TXBBIN, TEXT "BIN OUT DEV NOT FILE-STRUCTURED" +TXBLN= .-TXBBIN > +MONTHS, TEXT "-JAN-FEB-MAR-APR-MAY-JUN-JUL-AUG-SEP-OCT-NOV-DEC" + PAGE +/PAGE FOR NEW CODE REQUIRED FOR OS/8 FORTRAN +NEW, 0 + TAD NT2 /CHECK IF ALREADY CHECKED + SZA CLA + JMP NEWDON + TAD I NEW /NO. GET THE DEV TO CHECK + DCA NTEMP + CDF 10 + TAD I NTEMP /GET DEV.NUM + AND [17 + DCA NT1 /INCHK NEEDS TO KNOW TOO + TAD NT1 + SNA /IF 0,THEN NO DEVICE + JMP NEWDON + DCA NTEMP + CLA CMA + TAD I (37 /GET PTR TO DEV TBL + TAD NTEMP + DCA NTEMP /PTS TO ENTRY IN DEV TBL + TAD I NTEMP + CDF 0 + SMA CLA + JMP FIX /NOT A 2 PG HANDLER + TAD (6377 /FIX ALL LOCATIONS THAT REFER TO +/THE BUFFER VARIABLES. +/THE CHANGES ARE: +/OUBUF=6000,LINE=6400,INDEVH=6600,OUDEVH=7200 +/INRECS=1,INCTL=200 + DCA I (BLINE + TAD (6000 + DCA I (NOUBUF + IFNZRO RALF < + TAD (5777 + DCA I (MOUBUF > /FLAP DOESN'T USE ALL THE RALF LOCNS + TAD (6601 + DCA I (NINDEV + TAD (201 + DCA I (NINCTL + JMS TPNSH /TWO-PAGE NON-SYSTEM HANDLER + DCA I (NINREC + TAD (6000 + DCA I (LOUBUF + TAD (7201 + DCA I (NOUDEV + TAD (5777 + DCA I (OUTPTR + TAD (6377 + DCA I (CHRPTR + IFNZRO RALF < + TAD (1401 + DCA I (KOUBUF > + TAD (7201 +FIX, DCA NT2 /SET SO IF DID 2 PGS., DONT DO IT AGAIN +NEWDON, ISZ NEW /GET CORRECT ADDR + JMP I NEW +NTEMP, 0 +NT1, 0 /DEV. NUM. +NT2, 0 /0 IF NO 2PG HANDLERS YET +INCHK, 0 /CHECK THE INPUT DEVICES + JMS NEW +INLOC, 7617 + TAD INLOC + DCA NEXTIN +ANOTH, TAD NT1 + SNA CLA /SKIP IF FILE USED + JMP I INCHK + TAD NT2 + SZA CLA /SKIP IF STILL 1 PAGE HANDLERS + JMP I INCHK + TAD NP2 + TAD NEXTIN + DCA NEXTIN /INCREMENT TO PT TO NEXT INPUT FILR + JMS NEW +NEXTIN, 0 + JMP ANOTH +NP2, 2 +NOKBIN, CDF 10 /BELONGS WITH INIT CODE + TAD I [7600 + AND NP17 + TAD (7646 + DCA WORD1 /CREATE POINTER INTO DEV TBL + TAD I WORD1 + CDF 0 + TAD (-7607 + SNA CLA /IF ITS SYS, NO PROBLEMS + DCA I (RETSYS /SO CAN ZERO CALL TO DELETE ROUTINE + CDF 10 + TAD I (7604 + SZA + JMP FEND /AN EXT WAS SPECIFIED + IFZERO RALF < + TAD (0216 /.BN DEFAULT FOR FLAP + JMP FEND > + IFNZRO RALF < +NOEXT, CDF 10 + TAD I (7643 /CHECK IF L OR G SPEC + AND L41 + SNA CLA + TAD (0610 /NO-NEEDS RL EXT + TAD (1404 > /YES-NEEDS LD +FEND, DCA I (7604 + CDF 0 + JMP I (GBIN +L41, 41 +TPNSH, 0 + TAD (1401 /CHANGE OUTPUT BUFFER + DCA I (OUTBUF + IAC + JMP I TPNSH +/ + PAGE + LDADR, RELOC OVBUFR + TAD ERRORS /ERROR COUNT + JMS I (DECOUT + JMS I (PRTXT /"ERRORS" + TXERR-1 + -TXELN + JMS I [CRLF + IFZERO RALF < + TAD PASSNO /IF NOT LISTING PASS + SPA SNA CLA /ERROR COUNT IS ENUF + JMP I (RETSYS > + TAD NEXT + TAD (-FREE+1 /DON'T COUNT BASIC SYMBOLS + CLL RAR /DIVIDE + JMS I (OVER3 /BY 6 + JMS I (DECOUT + JMS I (PRTXT /"SYMBOLS, " + TXSYM-1 + -TXSLN + IFZERO RALF < + TAD LINKS + JMS I (DECOUT + JMS I (PRTXT /"LINKS" + TXLNK-1 + -TXLLN > + IFNZRO RALF < + TAD ABREFS + JMS I (DECOUT + JMS I (PRTXT /"ABS REFS" + TXABR-1 + -TXALN > + JMS I [CRLF + TAD (-33 /27 BUCKETS + DCA LTEMP + DCA BUCKET + CLA CMA + DCA OPCODE /SYMBOLS PER LINE COUNTER + STPRNT, TAD BUCKET + DCA EXTMP /BUCKET START ADDRESS +LUPBKT, CDF FLD1 + TAD I EXTMP /WAS THAT LAST SYMBOL ? + SNA + JMP NXTBKT /YES, GO GET NEXT BUCKET + DCA EXTMP /SAVE LINK ADDR + TAD EXTMP + DCA X14 /SET UP POINTER FOR NAME + ISZ OPCODE /IS LINE FULL? + JMP .+4 /NO + TAD (-4 + DCA OPCODE + JMS I [CRLF + TAD BUCKET + SNA /WATCH FOR # + TAD (43 + JMS I [PRINT2 /PRINT BUCKET (FIRST) CHAR + CDF FLD1 + TAD I X14 /SYMBOL + JMS I [PRINT2 /PRINT 2 AND 3 + CDF FLD1 + TAD I X14 + JMS I [PRINT2 /PRINT 4 AND 5 + CDF FLD1 + TAD I X14 + IFNZRO RALF < + DCA OTEMP /HOLD + TAD OTEMP > + AND [7700 /PRINT 6 AND BLANK + JMS I [PRINT2 + IFNZRO RALF < + TAD OTEMP /GET TYPE + AND [17 + TAD (TYPCOD /POINT TO TABLE + DCA OTEMP + TAD I OTEMP /GET TYPE INDICATOR + JMS I [PRINT2 > + CDF FLD1 + TAD I X14 /PRINT FIRST DIGIT + AND [7 + JMS I (PDIG /FIELD DIGIT + CDF FLD1 + TAD I X14 /LOW 12 BITS + JMS I [OCTOUT + JMS I [PRINT2 /TWO BLANKS + JMP LUPBKT + NXTBKT, ISZ BUCKET /NEXT BUCKET CHAR + CDF FLD0 + ISZ LTEMP /INCREMENT COUNT + JMP STPRNT + JMS I [CRLF /DO FINAL CRLF** + TAD (214 /DO NOT PAGEJ + JMS I PC /THAT WOULD GIVE A HEADING + JMS I (OCLOSE + JMP I (RETSYS /FINISH IT OFF + PAGE + RELOC + / PAGE 0 LITERALS + FIELD 1 + *10000 + / +/ SYMBOL TABLE IS IN FIELD ONE. +/ EACH ENTRY HAS THE FOLLOWING FORMAT +/ +/ 0: POINTER TO NEXT ENTRY IN BUCKET, 0 IF LAST +/ 1: 2ND AND 3RD CHARS OF SYMBOL +/ 2: 4TH AND 5TH +/ 3: 6TH AND TYPE CODE +/ 4: ESD # AND HIGH-ORDER VALUE +/ 5: LOW-ORDER VALUE +/ + USER=1 + XTERN=2 + COMMN=3 + SECTN=4 + PSUDO=5 + PDPMR=6 + FPPMRF=7 + FPPSF1=10 /JXN, TRAP + FPPSF2=11 /JA, SETB, SETX + FPPSF3=12 /CLA, EXIT, NEG, NOP, NORM, + /PAUS, JAC, STARTD, STARTF + FPPSF4=13 /ALN, ATX, XTA + FPPSF5=14 /ADDX, LDX + FPPMRI=15 /% + FPPMRS=16 /' + FPPMRL=17 /# + PDPOP=20 +/ +/ THE FOLLOWING CODE TRICKS THE LOADER INTO PUTTING +/ THE SYMBOL TABLE AT 2000, WHERE THE USR IS NOT, +/ THUS SAVING SOME SWAPPING AT LOAD AND INITIALIZE. +/ IT IS MOVED TO THE ASSEMBLED ADDRESS AFTER WE'RE +/ DONE WITH THE USR, AND BEFORE THE FIRST PASS BEGINS +/ + *12000 + NOPUNCH + *10000 + ENPUNCH + / +/ BUCKETS FOR USER-DEFINED SYMBOLS +/ AND PDP8 OPERATES AND IOTS +/ + PNDL + ZBLOCK 33 + / +/ BUCKETS FOR INTERNALLY DEFINED SYMBOLS +/ + AL + BL + CL + DL + EL + FL + GL + HL + IL + JL + KL + LL + ML + NL + OL + PL + QL + RL + SL + TL + UL + VL + WL + XL + YL + ZL + AL, .+5 /ADDR + 0404;2200 + FPPSF2 + 0 + .+5 /ADDX + 0404;3000 + FPPSF5 + 0110 + .+5 /ALN + 1416;0 + FPPSF4 + 0010 + IFZERO RALF < + .+5 /AND + 1604;0 + PDPMR + AND 0 > + IFNZRO RALF < + .+5 /AND . + 1604;0 + PDPMR + 200 + .+5 /AND% + 1604;0 + PDPMR+500 + 600 + .+5 /ANDZ + 1604;3200 + PDPMR + 0 + .+5 /ANDZ% + 1604;3200 + PDPMR+500 + 400 > + 0 /ATX + 2430;0 + FPPSF4 + 0020 +BL, 0 /BASE + 0123;0500 + PSUDO + BASEX +CL, .+5 /CDF + 0406;0 + PDPOP + CDF + .+5 /CIA + 1101;0 + PDPOP + CIA + .+5 /CIF + 1106;0 + PDPOP + CIF + .+5 /CLA + 1401;0 + PDPOP + CLA + .+5 /CLL + 1414;0 + PDPOP + CLL + .+5 /CMA + 1501;0 + PDPOP + CMA + IFZERO RALF < 0 > + IFNZRO RALF < .+5 > + 1514;0 /CML + PDPOP + CML + IFNZRO RALF < + .+5 /COMMON + 1715;1517 + PSUDO+1600 + COMMX + 0 /COMMZ (8-MODE COMM SECT) + 1715;1532 + PSUDO + SECT8X-1 > + DL, IFZERO RALF < + .+5 /DCA + 0301;0 + PDPMR + DCA 0 > + IFNZRO RALF < + .+5 /DCA . + 0301;0 + PDPMR + 3200 + .+5 /DCA% + 0301;0 + PDPMR+500 + 3600 + .+5 /DCAZ + 0301;3200 + PDPMR + DCA 0 + .+5 /DCAZ% + 0301;3200 + PDPMR+500 + DCA I 0 > + IFZERO RALF < 0 > /DECIMAL + IFNZRO RALF < .+5 > + 0503;1115 + PSUDO+0100 + DECX + IFNZRO RALF < 0 /DPCHK + 2003;1013 + PSUDO + DPCHKX > +EL, .+5 /E + 0;0 + PSUDO + EX + .+5 /END + 1604;0 + PSUDO + ENDX + IFZERO RALF < + 0 /ENPUNCH + 1620;2516 + PSUDO+0300 + ENPNCX > + IFNZRO RALF < + .+5 /ENTRY + 1624;2231 + PSUDO + ENTRX + 0 /EXTERN + 3024;0522 + PSUDO+1600 + EXTRNX > + FL, .+5 /F + 0;0 + PSUDO + FX + .+5 /FADD + 0104;0400 + FPPMRF + 1000 + .+5 /FADD# + 0104;0400 + FPPMRL+300 + 1000 + .+5 /FADD% + 0104;0400 + FPPMRI+500 + 1000 + .+5 /FADD' + 0104;0400 + FPPMRS+700 + 1000 + .+5 /FADDM + 0104;0415 + FPPMRF + 5000 + .+5 /FADDM# + 0104;0415 + FPPMRL+300 + 5000 + .+5 /FADDM% + 0104;0415 + FPPMRI+500 + 5000 + .+5 /FADDM' + 0104;0415 + FPPMRS+700 + 5000 + .+5 /FCLA + 0314;0100 + FPPSF3 + 0002 + .+5 /FDIV + 0411;2600 + FPPMRF + 3000 + .+5 /FDIV# + 0411;2600 + FPPMRL+300 + 3000 + .+5 /FDIV% + 0411;2600 + FPPMRI+500 + 3000 + .+5 /FDIV' + 0411;2600 + FPPMRI+700 + 3000 + .+5 /FEXIT + 0530;1124 + FPPSF3 + 0 + IFNZRO RALF < + .+5 /FIELD1 (8-MODE FIELD1 SECT) + 1105;1404 + PSUDO+6100 + SECT8X-2 > + .+5 /FLDA + 1404;0100 + FPPMRF + 0000 + .+5 /FLDA# + 1404;0100 + FPPMRL+300 + 0000 + .+5 /FLDA% + 1404;0100 + FPPMRI+500 + 0000 + .+5 /FLDA' + 1404;0100 + FPPMRS+700 + 0000 + .+5 /FMUL + 1525;1400 + FPPMRF + 4000 + .+5 /FMUL# + 1525;1400 + FPPMRL+300 + 4000 + .+5 /FMUL% + 1525;1400 + FPPMRI+500 + 4000 + .+5 /FMUL' + 1525;1400 + FPPMRS+700 + 4000 + .+5 /FMULM + 1525;1415 + FPPMRF + 7000 + .+5 /FMULM# + 1525;1415 + FPPMRL+300 + 7000 + .+5 /FMULM% + 1525;1415 + FPPMRI+500 + 7000 + .+5 /FMULM' + 1525;1415 + FPPMRS+700 + 7000 + .+5 /FNEG + 1605;0700 + FPPSF3 + 0003 + .+5 /FNOP + 1617;2000 + FPPSF3 + 0040 + .+5 /FNORM + 1617;2215 + FPPSF3 + 0004 + .+5 /FPAUSE + 2001;2523 + FPPSF3+0500 + 0001 + .+5 /FPCOM + 2003;1715 + PDPOP + 6553 + .+5 /FPHLT + 2010;1424 + PDPOP + 6554 + .+5 /FPICL + 2011;0314 + PDPOP + 6552 + .+5 /FPINT + 2011;1624 + PDPOP + 6551 + .+5 /FPIST + 2011;2324 + PDPOP + 6557 + .+5 /FPRST + 2022;2324 + PDPOP + 6556 + .+5 /FPST + 2023;2400 + PDPOP + 6555 + .+5 /FSTA + 2324;0100 + FPPMRF + 6000 + .+5 /FSTA# + 2324;0100 + FPPMRL+300 + 6000 + .+5 /FSTA% + 2324;0100 + FPPMRI+500 + 6000 + .+5 /FSTA' + 2324;0100 + FPPMRS+700 + 6000 + .+5 /FSUB + 2325;0200 + FPPMRF + 2000 + .+5 /FSUB# + 2325;0200 + FPPMRL+300 + 2000 + .+5 /FSUB% + 2325;0200 + FPPMRI+500 + 2000 + 0 /FSUB' + 2325;0200 + FPPMRS+700 + 2000 + GL= 0 /AINT NONE +HL, 0 /HLT + 1424;0 + PDPOP + HLT +IL, .+5 /IAC + 0103;0 + PDPOP + IAC + .+5 /IFFLAP + 0606;1401 + PSUDO+2000 + IFZERO RALF + IFNZRO RALF + .+5 /IFNDEF + 0616;0405 + PSUDO+0600 + IFNDFX + .+5 /IFNEG + 0616;0507 + PSUDO + IFNEGX + .+5 /IFNSW + 0616;2327 + PSUDO + IFNSWX + .+5 /IFNZRO + 0616;3222 + PSUDO+1700 + IFNZRX + .+5 /IFPOS + 0620;1723 + PSUDO + IFPOSX + .+5 /IFRALF + 0622;0114 + PSUDO+0600 + IFNZRO RALF + IFZERO RALF + .+5 /IFREF + 0622;0506 + PSUDO + IFREFX + .+5 /IFSW + 0623;2700 + PSUDO + IFSWX + .+5 /IFZERO + 0632;0522 + PSUDO+1700 + IFZROX + .+5 + 1604;0530 + PSUDO + INDXX + .+5 /IOF + 1706;0 + PDPOP + IOF + .+5 /ION + 1716;0 + PDPOP + ION + IFZERO RALF < + 0 /ISZ + 2332;0 + PDPMR + ISZ 0 > + IFNZRO RALF < + .+5 /ISZ . + 2332;0 + PDPMR + ISZ .&7600 + .+5 /ISZ% + 2332;0 + PDPMR+500 + ISZ I .&7600 + .+5 /ISZZ + 2332;3200 + PDPMR + ISZ 0 + 0 /ISZZ% + 2332;3200 + PDPMR+500 + ISZ I 0 > + JL, .+5 /JA + 0100;0 + FPPSF2 + 1030 + .+5 /JAC + 0103;0 + FPPSF3 + 0007 + .+5 /JAL + 0114;0 + FPPSF2 + 1070 + .+5 /JEQ + 0521;0 + FPPSF2 + 1000 + .+5 /JGE + 0705;0 + FPPSF2 + 1010 + .+5 /JGT + 0724;0 + FPPSF2 + 1060 + .+5 /JLE + 1405;0 + FPPSF2 + 1020 + .+5 /JLT + 1424;0 + FPPSF2 + 1050 + IFZERO RALF < + .+5 /JMP + 1520;0 + PDPMR + JMP 0 + .+5 /JMS + 1523;0 + PDPMR + JMS 0 > + IFNZRO RALF < + .+5 /JMP . + 1520;0 + PDPMR + JMP .&7600 + .+5 /JMP% + 1520;0 + PDPMR+500 + JMP I .&7600 + .+5 /JMPZ + 1520;3200 + PDPMR + JMP 0 + .+5 /JMPZ% + 1520;3200 + PDPMR+500 + JMP I 0 + .+5 /JMS . + 1523;0 + PDPMR + JMS .&7600 + .+5 /JMS% + 1523;0 + PDPMR+500 + JMS I .&7600 + .+5 /JMSZ + 1523;3200 + PDPMR + JMS 0 + .+5 /JMSZ% + 1523;3200 + PDPMR+500 + JMS I 0 > + .+5 /JNE + 1605;0 + FPPSF2 + 1040 + .+5 /JSA + 2301;0 + FPPSF2 + 1120 + .+5 /JSR + 2322;0 + FPPSF2 + 1130 + 0 /JXN + 3016;0 + FPPSF1 + 2000 +KL, .+5 /KCC + 0303;0 + PDPOP + KCC + .+5 /KRB + 2202;0 + PDPOP + KRB + .+5 /KRS + 2223;0 + PDPOP + KRS + 0 /KSF + 2306;0 + PDPOP + KSF +LL, .+5 /LAS + 0123;0 + PDPOP + LAS + .+5 /LDX + 0430;0 + FPPSF5 + 0100 + .+5 /LISTOFF + 1123;2417 + PSUDO+0600 + LSTOFX + 0 /LISTON + 1123;2417 + PSUDO+1600 + LSTONX + ML= 0 /NO LIST +NL, IFZERO RALF < .+5 > + IFNZRO RALF < 0 > + 1720;0 /NOP + PDPOP + NOP + IFZERO RALF < + 0 /NOPUNCH + 1720;2516 + PSUDO+0300 + NOPNCX > +OL, .+5 /OCTAL + 0324;0114 + PSUDO + OCTALX + .+5 /ORG + 2207;0 + PSUDO + ORGX + 0 /OSR + 2322;0 + PDPOP + OSR + IFZERO RALF < +PL, 0 /PAGE + 0107;0500 + PSUDO + PAGEX > + IFNZRO RALF +QL= 0 /WHAT DID YOU EXPECT? +RL, .+5 /RAL + 0114;0 + PDPOP + RAL + .+5 /RAR + 0122;0 + PDPOP + RAR + .+5 /RDF + 0406;0 + PDPOP + RDF + .+5 /REPEAT + 0520;0501 + PSUDO+2400 + REPETX + .+5 /RIB + 1102;0 + PDPOP + RIB + .+5 /RIF + 1106;0 + PDPOP + RIF + .+5 /RMF + 1506;0 + PDPOP + RMF + .+5 /RTL + 2414;0 + PDPOP + RTL + 0 /RTR + 2422;0 + PDPOP + RTR + SL, .+5 /S + 0;0 + PSUDO + SX + IFNZRO RALF < + .+5 /SECT + 0503;2400 + PSUDO + SECTX + .+5 /8 MODE SECT + 0503;2470 + PSUDO + SECT8X > + .+5 /SETB + 0524;0200 + FPPSF2 + 1110 + .+5 /SETX + 0524;3000 + FPPSF2 + 1100 + .+5 /SKP + 1320;0 + PDPOP + SKP + .+5 /SMA + 1501;0 + PDPOP + SMA + .+5 /SNA + 1601;0 + PDPOP + SNA + .+5 /SNL + 1614;0 + PDPOP + SNL + .+5 /SPA + 2001;0 + PDPOP + SPA + .+5 /STARTD + 2401;2224 + FPPSF3+0400 + 0006 + .+5 /STARTE + 2401;2224 + FPPSF3+0500 + 0050 + .+5 /STARTF + 2401;2224 + FPPSF3+0600 + 0005 + .+5 /STL + 2414;0 + PDPOP + STL + .+5 /SZA + 3201;0 + PDPOP + SZA + 0 /SZL + 3214;0 + PDPOP + SZL + TL, IFZERO RALF < + .+5 /TAD + 0104;0 + PDPMR + TAD 0 > + IFNZRO RALF < + .+5 /TAD . + 0104;0 + PDPMR + TAD .&7600 + .+5 /TAD% + 0104;0 + PDPMR+500 + TAD I .&7600 + .+5 /TADZ + 0104;3200 + PDPMR + TAD 0 + .+5 /TADZ% + 0104;3200 + PDPMR+500 + TAD I 0 > + .+5 /TCF + 0306;0 + PDPOP + TCF + .+5 /TEXT + 0530;2400 + PSUDO + TEXTX + .+5 /TLS + 1423;0 + PDPOP + TLS + .+5 /TPC + 2003;0 + PDPOP + TPC + .+5 /TRAP3 + 2201;2063 + FPPSF1 + 3000 + .+5 /TRAP4 + 2201;2064 + FPPSF1 + 4000 + .+5 /TRAP5 + 2201;2065 + FPPSF1 + 5000 + .+5 /TRAP6 + 2201;2066 + FPPSF1 + 6000 + .+5 /TRAP7 + 2201;2067 + FPPSF1 + 7000 + 0 /TSF + 2306;0 + PDPOP + TSF + UL= 0 +VL= 0 +WL= 0 +XL, 0 /XTA + 2401;0 + FPPSF4 + 0030 +YL= 0 +ZL, 0 /ZBLOCK + 0214;1703 + PSUDO+1300 + ZBLKX + IFZERO RALF < PNDL=0 > + IFNZRO RALF < +PNDL, .+6 /BLANK COMMON + 0;0 + 3 /CODE FOR COMMON + 40;0 /ESD #2, LEN=0 + 0 /#MAIN + 1501;1116 + 4 /CODE FOR SECTION +LMAIN, 20;0 /ESD #1, LEN=0> +FREE, +END, END /NICE WHEN FLAP ASSEMBLES + $ + diff --git a/sw/f4/FRTSRC/RALF.err b/sw/f4/FRTSRC/RALF.err new file mode 100644 index 0000000..078a1fa --- /dev/null +++ b/sw/f4/FRTSRC/RALF.err @@ -0,0 +1,30 @@ +RALF.PA(303:8) : error: illegal blank at Loc = 00366 +RALF.PA(424:8) : error: illegal blank at Loc = 00544 +RALF.PA(437:8) : error: illegal blank at Loc = 00563 +RALF.PA(992:8) : error: illegal blank at Loc = 01520 +RALF.PA(1033:8) : error: illegal blank at Loc = 01563 +RALF.PA(1535:8) : error: illegal blank at Loc = 02364 +RALF.PA(1536:8) : error: illegal blank at Loc = 02364 +RALF.PA(1537:8) : error: illegal blank at Loc = 02364 +RALF.PA(1538:8) : error: illegal blank at Loc = 02364 +RALF.PA(1614:19) : error: no literal value at Loc = 02462 +RALF.PA(1842:8) : error: illegal blank at Loc = 03000 +RALF.PA(1843:8) : error: illegal blank at Loc = 03000 +RALF.PA(1844:8) : error: illegal blank at Loc = 03000 +RALF.PA(2353:8) : error: illegal blank at Loc = 03562 +RALF.PA(2379:8) : error: illegal blank at Loc = 03630 +RALF.PA(2614:8) : error: illegal blank at Loc = 04167 +RALF.PA(2615:8) : error: illegal blank at Loc = 04167 +RALF.PA(3417:8) : error: illegal blank at Loc = 06325 +RALF.PA(3568:2) : error: duplicate label "STPRNT" at Loc = 06631 +RALF.PA(3570:1) : error: duplicate label "LUPBKT" at Loc = 06633 +RALF.PA(3615:2) : error: duplicate label "NXTBKT" at Loc = 06706 +RALF.PA(4025:8) : error: illegal blank at Loc = 10655 +RALF.PA(4232:8) : error: illegal blank at Loc = 11230 +RALF.PA(4261:8) : error: illegal blank at Loc = 11254 +RALF.PA(4425:8) : error: illegal blank at Loc = 11557 +RALF.PA(4426:8) : error: illegal blank at Loc = 11557 +RALF.PA(4427:8) : error: illegal blank at Loc = 11557 +RALF.PA(4432:8) : error: illegal blank at Loc = 11564 + + 28 detected errors diff --git a/sw/f4/FRTSRC/READ.ME b/sw/f4/FRTSRC/READ.ME new file mode 100644 index 0000000..54d9fe8 --- /dev/null +++ b/sw/f4/FRTSRC/READ.ME @@ -0,0 +1 @@ +START WITH "SUBMIT BUILD"! diff --git a/sw/f4/FRTSRC/TMP.BI b/sw/f4/FRTSRC/TMP.BI new file mode 100644 index 0000000..b50c152 --- /dev/null +++ b/sw/f4/FRTSRC/TMP.BI @@ -0,0 +1,239 @@ +$JOB FORTRAN IV BUILD - MAIN PART +/ ******************************************************************* +/ ******************************************************************* +/ ******************************************************************* +/ +/ STUPID ASSEMBLER PROCEDURES +/ +/ ******************************************************************* +/ ******************************************************************* +/ ******************************************************************* +/ THE RALF ASSEMBLER REFUSES TO ACCEPPT THE .RA FILES AS THEY +/ COME FROM KERMIT. I CANNOT INVESTIGATE WHICH PARITY IS GENERATED +/ BY KERMIT-12. BUT I KNOW THAT PIP MAKES EVERYTHING RIGHT AGAIN. +/ SO ALL .RA FILES ARE MOVED TROUGH PIP ONCE. +/ +.R PIP +*ABS.RA + IFNSW 8 < + TAD CHANEL+2 /CREATE FIRST SAM + TAD SAM0 + DCA DOSAM + IOF + LINC /ENTER LINC MODE WITHOUT INTERRUPTS + ESF /DISABLE FAST SAM +DOSAM, 0 + PDP + ION /BACK IN 8 MODE, TURN ON INTERRUPTS> + DCA SAMPLE+1 /SAVE SAMPLE + CIF CDF + JMP% ADC8 + IFNSW 8 < +SAM0, SAM 0> + diff --git a/sw/f4/FRTSRC/alog.ra b/sw/f4/FRTSRC/alog.ra new file mode 100644 index 0000000..3c710f7 --- /dev/null +++ b/sw/f4/FRTSRC/alog.ra @@ -0,0 +1,149 @@ +/ +/ +/ A L O G +/ - - - - +/ +/SUBROUTINE ALOG(X) +/ +/ VERSION 5A 4-26-77 (MH) +/ + SECT ALOG + JA #ALOG + 0 /WORKING SPACE FOR EXPONENT DIDDLE. + 0 + 0 +ALOGTM, 0 + 0 + 0 + 0 +F2ALOG, F 2. +FPI2, 1 + 3110 + 3755 +/ + EXTERN #ARGER +ALOG0, TRAP4 #ARGER + JA ALGRTN /RETURN NOW. +/ + EXTERN #ARGER +ALOGM1, TRAP4 #ARGER + JA ALGRTN + TEXT +ALOG + +ALOGXR, +BPALOG, F 0.0 +XRALOG, F 0.0 +ALOG1, F 0.0 +ALOG2, F 0.0 +F1ALOG, F 1. +/ +ALOGMG, 0 + 0 + 13 /CORRECT EXPONENT DIDDLER. +/ +/ +/ +/ +ALOGL1, 0 + 3777 + 7742 +/ +ALOGE2, 0 + 2613 + 4414 +/ + ORG 10*3+BPALOG + FNOP + JA ALOGXR + 0 +ALGRTN, JA . +ALOGL2, 7777 + 4000 + 4100 +/ +ALOGL3, 7777 + 2517 + 0310 +/ +ALOGL4, 7776 + 4113 + 7211 +/ +ALOGL5, 7776 + 2535 + 3301 +/ +ALOGL6, 7775 + 4746 + 0771 +/ +ALOGL7, 7774 + 2236 + 4304 +/ +ALOGL8, 7771 + 4544 + 1735 + BASE 0 +#ALOG, STARTD + FLDA 10*3 + FSTA ALGRTN + FLDA 0 + SETX XRALOG + SETB BPALOG + BASE BPALOG + LDX 1,1 + FSTA BPALOG + FLDA% BPALOG,1 /ADDR OF X + FSTA BPALOG + STARTF + FLDA% BPALOG /GET X + JEQ ALOG0 /IF =0 THEN ERROR + JLT ALOGM1 /IF<0 THEN ERROR + LDX -1,0 /IF >0 THEN START DOING + FSTA ALOG1 /SAVE IN A TEMP. + FSUB F1ALOG /KNOCK OFF ONE. + JEQ ALGRTN /IF ZERO EXIT. LOG(1)=0 + JGE ALOGST /IF POSITIVE LOG>0 + FLDA F1ALOG /NEGITE. INVERT IT. + FDIV ALOG1 /BY DIVIDING INTO ONE. + FSTA ALOG1 + LDX 0,0 /RESET SIGN TO NEGATIVE. + JA .+3 /AVOID USELESS LOAD INSTRUCTION. +/ +ALOGST, FLDA ALOG1 /RECALL NUMBER. + FDIV F2ALOG /CUT IN HALF. + FSTA ALOGTM /PREPARE FOR EXPONENT DIDDLE. + FLDA ALOGMG /SET THE EXPONENT OF THE EXPONENT TO 13. + FSTA ALOGTM-3 /SO THAT NORMALIZE WILL DO JOB. + FSTA ALOGTM+1 /AND ALSO ZERO OUT LOW ORDER POART OF EX. MANT. + FLDA ALOGTM-1 /RECALL THE NUMBER + FNORM /NORMALIZE IT. + FMUL ALOGE2 /NOW MULITPLY EXPONENT BY LOG E 2 + FSTA ALOG2 /AND SAVE IT FOR A SECOND. + FLDA ALOG1 /RECALL THE NUMBER AGAIN. + FSTA ALOGTM /STORE IN THE TEMPORARY WORKER. + FLDA FPI2-2 /RECALL WORD WITH LOW ORDER ONE. + FSTA ALOGTM-2 /STORE AWAY. + FLDA ALOGTM /RECALL NUMBER WITH AN EXPONENT OF 1 + FSUB F1ALOG /SUBTRACT AWAY. + FSTA ALOG1 /AND STORE + FMUL ALOGL8 /MULTIPLY BY THE CONSTANT. + FADD ALOGL7 /ADD IN + FMUL ALOG1 /MULT. + FADD ALOGL6 /AND SO ON DOWN THE LINE. + FMUL ALOG1 + FADD ALOGL5 + FMUL ALOG1 + FADD ALOGL4 + FMUL ALOG1 + FADD ALOGL3 + FMUL ALOG1 + FADD ALOGL2 + FMUL ALOG1 + FADD ALOGL1 + FMUL ALOG1 + FADD ALOG2 /CORRECT NOW.ADD IN EXPONENT. + JXN ALGRTN,0 /EXIT IF SIGN IS OK. + FNEG /ELSE NEGATE IT. + JA ALGRTN + diff --git a/sw/f4/FRTSRC/alog10.ra b/sw/f4/FRTSRC/alog10.ra new file mode 100644 index 0000000..1517ea7 --- /dev/null +++ b/sw/f4/FRTSRC/alog10.ra @@ -0,0 +1,48 @@ +/ +/ +/ A L O G 1 0 +/ - - - - - - +/ +/ VERSION 5A 4-27-77 PT +/ +/SUBROUTINE ALOG10(X) + SECT ALOG10 + JA #ALOG + TEXT +ALOG10+ +LOGXR, SETX XRLOG + SETB BPLOG +BPLOG, FNOP + 0 + 0 +XRLOG, F 0.0 +LOG1, F 0.0 +ALOG1C, 7777 /FUDGE CONSTANT + 3362 + 6754 + ORG 10*3+BPLOG + FNOP + JA LOGXR + 0 +LOGRTN, JA . + BASE 0 +#ALOG, STARTD + FLDA 10*3 + FSTA LOGRTN + FLDA 0 + SETX XRLOG + SETB BPLOG + BASE BPLOG + LDX 1,1 + FSTA BPLOG + FLDA% BPLOG,1 /ADDR OF X + FSTA BPLOG + STARTF + FLDA% BPLOG /GET X + FSTA LOG1 + EXTERN ALOG + JSR ALOG /CALL ALOG + JA .+4 + JA LOG1 + FMUL ALOG1C /CORRECT FOR THE LOG BASE E. + JA LOGRTN + diff --git a/sw/f4/FRTSRC/amax.ra b/sw/f4/FRTSRC/amax.ra new file mode 100644 index 0000000..1004595 --- /dev/null +++ b/sw/f4/FRTSRC/amax.ra @@ -0,0 +1,57 @@ +/ +/ VERSION 5A 4/27/77 MH +/ + SECT AMAX0 + ENTRY AMAX1 + ENTRY MAX0 + ENTRY MAX1 + BASE 0 +AMAX1, SETX XR + LDX 1,3 /DON'T INTEGERIZE RESULT +MAXCOM, STARTD + FLDA 0 /ADDRESS OF JA .+2+2*N + FSTA 3 + FLDA 30 /RETURN ADDRESS + FSTA RETN + FLDA% 3 / JA .+2+2*N + FSUB 0 /-JA . + FSUB TWO /- 2 + LDX 1,1 + ALN 1 /DIVIDE BY TWO + FNEG /-N + ATX 1 + LDX 0,2 /FOR ARG PICKUP + FLDA% 0,2+ /ADDRESS OF FIRST ARG + FSTA 3 + STARTF +NEW, FLDA% 3 /SAVE NEW MAX + FSTA MAX +SAME, JXN MORMAX,1+ /ANY MORE ARGS ? + FLDA MAX /GET RESULT + JXN RETN,3 /DON'T FIX + JLT NEGFIX /NEGATIVE FIX + ALN 0 + FNORM + JA RETN +NEGFIX, FNEG + ALN 0 + FNORM + FNEG +RETN, JA . +MORMAX, STARTD /NEXT ARG ADDRESS + FLDA% 0,2+ + FSTA 3 + STARTF + FLDA MAX /COMPARE + FSUB% 3 + JGE SAME /SAME MAX + JA NEW /NEW MAX +TWO, 0;2 +MAX, 0;0;0 +MAX0, +MAX1, SETX XR + LDX 0,3 /INTEGERIZE RESULT + JA MAXCOM /GO DO IT +XR, 0;0;0;0;0;0;0;0 + END + diff --git a/sw/f4/FRTSRC/amin.ra b/sw/f4/FRTSRC/amin.ra new file mode 100644 index 0000000..a5addcf --- /dev/null +++ b/sw/f4/FRTSRC/amin.ra @@ -0,0 +1,57 @@ +/ +/ VERSION 5A 4/27/77 MH +/ + SECT AMIN0 + ENTRY AMIN1 + ENTRY MIN0 + ENTRY MIN1 + BASE 0 +AMIN1, SETX XR + LDX 1,3 /DON'T INTEGERIZE RESULT +MINCOM, STARTD + FLDA 0 /ADDRESS OF JA .+2+2*N + FSTA 3 + FLDA 30 /RETURN ADDRESS + FSTA RETN + FLDA% 3 / JA .+2+2*N + FSUB 0 /-JA . + FSUB TWO /- 2 + LDX 1,1 + ALN 1 /DIVIDE BY TWO + FNEG /-N + ATX 1 + LDX 0,2 /FOR ARG PICKUP + FLDA% 0,2+ /ADDRESS OF FIRST ARG + FSTA 3 + STARTF +NEW, FLDA% 3 /SAVE NEW MIN + FSTA MIN +SAME, JXN MORMIN,1+ /ANY MORE ARGS ? + FLDA MIN /GET RESULT + JXN RETN,3 /DON'T FIX + JLT NEGFIX /NEGATIVE FIX + ALN 0 + FNORM + JA RETN +NEGFIX, FNEG + ALN 0 + FNORM + FNEG +RETN, JA . +MORMIN, STARTD /NEXT ARG ADDRESS + FLDA% 0,2+ + FSTA 3 + STARTF + FLDA MIN /COMPARE + FSUB% 3 + JLE SAME /SAME MIN + JA NEW /NEW MIN +TWO, 0;2 +MIN, 0;0;0 +MIN0, +MIN1, SETX XR + LDX 0,3 /INTEGERIZE RESULT + JA MINCOM /GO DO IT +XR, 0;0;0;0;0;0;0;0 + END + diff --git a/sw/f4/FRTSRC/amod.ra b/sw/f4/FRTSRC/amod.ra new file mode 100644 index 0000000..47f3352 --- /dev/null +++ b/sw/f4/FRTSRC/amod.ra @@ -0,0 +1,65 @@ +/ +/ +/ +/ A M O D +/ - - - - +/ +/SUBROUTINE AMOD(X,Y) +/ +/ VERSION 5A 4-27-77 PT +/ + SECT AMOD + ENTRY MOD + JA #AMOD + TEXT +AMOD + +AMODXR, SETX XRAMOD + SETB BPAMOD +BPAMOD, F 0.0 +XRAMOD, F 0.0 +AMODX, F 0.0 + ORG 10*3+BPAMOD + FNOP + JA AMODXR + 0 + AMDRTN, JA . + EXTERN #ARGER +AMODER, TRAP4 #ARGER + FCLA + JA AMDRTN + BASE 0 +MOD, +#AMOD, STARTD + FLDA 10*3 + FSTA AMDRTN + FLDA 0 + SETX XRAMOD + SETB BPAMOD + BASE BPAMOD + LDX 1,1 + FSTA BPAMOD + FLDA% BPAMOD,1 /ADDR OF X + FSTA AMODX + FLDA% BPAMOD,1+ /ADDR OF Y + FSTA BPAMOD + STARTF + FLDA% BPAMOD /GET Y + JEQ AMODER /Y=0 IS ERROR + JGT .+3 + FNEG /ABS VALUE + FSTA BPAMOD + FLDA% AMODX /GET X + JGT .+5 + FNEG /ABS VALUE + LDX 0,1 /NOTE SIGN + FSTA AMODX /SAV IN A TEMPORARY + FDIV BPAMOD /DIVIDE BY Y + JAL AMODER /TOO BIG. + ALN 0 /FIX IT UP NOW. + FNORM + FMUL BPAMOD /MULITPLY IT. + FNEG /NEGATE IT. + FADD AMODX /AND ADD IN X. + JXN AM,1 /CHECK SIGN + FNEG +AM, JA AMDRTN + diff --git a/sw/f4/FRTSRC/asin.ra b/sw/f4/FRTSRC/asin.ra new file mode 100644 index 0000000..a4c9b4f --- /dev/null +++ b/sw/f4/FRTSRC/asin.ra @@ -0,0 +1,73 @@ +/ +/ +/ A S I N +/ - - - - +/ +/SUBROUTINE ASIN(X) +/ +/ VERSION 5A 4-27-77 PT +/ + SECT ASIN + JA #ASIN +ASINEQ, FLDA FPI2AS /RETURN PI OVER TWO. + FMUL ASIN8 /TIMES ARG. + JA ASNRTN + TEXT +ASIN + +ASINXR, SETX XRASIN + SETB BPASIN +BPASIN, FNOP + 0 + 0 +XRASIN, F 0.0 +ASIN8, F 0.0 +ASIN7, F 0.0 +F1ASIN, F 1. +FPI2AS, 1 /PI OVER 2 + 3110 + 3755 + ORG 10*3+BPASIN + FNOP + JA ASINXR + 0 +ASNRTN, JA . + BASE 0 +#ASIN, STARTD + FLDA 10*3 + FSTA ASNRTN + FLDA 0 + SETX XRASIN + SETB BPASIN + BASE BPASIN + LDX 1,1 + FSTA BPASIN + FLDA% BPASIN,1 /ADDR OF X + FSTA BPASIN + STARTF + FLDA% BPASIN /GET X + FSTA ASIN8 /STORE ARG AWAY. + JGE .+3 /TAKE ABSOLUTE VALUE. + FNEG + FSUB F1ASIN /SEE IF >1 + JLE ASINOK /CONTINUE PROCESS. + EXTERN #ARGER + TRAP4 #ARGER /TRAP OUT. + JA ASNRTN /RETURN. +ASINOK, FLDA ASIN8 /X USES STRAIGHT TRIG RELATION. + FNEG + FMUL ASIN8 /-X^2 + FADD F1ASIN /1.-X^2 + JEQ ASINEQ /IF 0,FAC=PI OVER 2 + FSTA ASIN7 + EXTERN SQRT + JSR SQRT + JA .+4 + JA ASIN7 + FSTA ASIN7 /SQRT(1.-X^2) + FLDA ASIN8 + FDIV ASIN7 /X/SQRT(1.X^2) + FSTA ASIN7 + EXTERN ATAN + JSR ATAN /TAKE THE ARCTANGENT. + JA ASNRTN + JA ASIN7 + diff --git a/sw/f4/FRTSRC/atan.ra b/sw/f4/FRTSRC/atan.ra new file mode 100644 index 0000000..ab73d75 --- /dev/null +++ b/sw/f4/FRTSRC/atan.ra @@ -0,0 +1,137 @@ +/ +/ +/ A T A N +/ - - - - +/ +/SUBROUTINE ATAN(X) +/ +/ VERSION 5A 4-27-77 PT +/ + SECT ATAN + JA #ATAN + TEXT +ATAN + +ATANXR, SETX XRATAN + SETB BPATAN +BPATAN, F 0.0 +XRATAN, F 0.0 +ATAN1, F 0.0 +ATAN22, F 0.0 +ATAN3, F 0.0 +ATAN4, F 0.0 +F1ATAN, F 1. + ORG 10*3+BPATAN + FNOP + JA ATANXR + 0 +ATNRTN, JA . +/ +ATANC1, -15 /LOWER LIMIT TEST. + 2000 + 0000 +/ +ATANC2, 0 /UPPER LIMIT TEST. + 3777 + 7000 +/ +ATANC3, -1 + 2111 + 4121 +/ +ATANC4, 1 + 3355 + 4754 +/ +ATANC5, 0 + 2060 + 2511 +/ +ATANC6, -3 + 3023 + 1227 +/ +ATANC7, -2 + 5566 + 7220 +/ +ATANC8, -2 + 3146 + 0740 +/ +ATANC9, -1 + 5252 + 5262 +/ +ATANCH, 1 + 3110 + 3755 +/ +ATANCJ, F -4. + BASE 0 +#ATAN, STARTD + FLDA 10*3 + FSTA ATNRTN + FLDA 0 + SETX XRATAN + SETB BPATAN + BASE BPATAN + LDX 1,1 + FSTA BPATAN + FLDA% BPATAN,1 /ADDR OF X + FSTA BPATAN + STARTF + FLDA% BPATAN /GET X + LDX -1,0 /REMEMBER SIGN + JGE .+5 + LDX 0,0 /SAVE THE SIGN. + FNEG /NEGATE THE FAC [ABS] + FSTA ATAN1 /AND STORE AWAY. + FSTA ATAN22 + FSUB ATANC1 /TEST TO SEE IF TOO SMALL. + JLE ATANBG /IT IS. ATAN(X)=X + FSUB ATANC2 /TEST TO SEE IF TOO BIG. + JLE ATANLW /IT ISNT. + FLDA F1ATAN /TO BIG. INVERT IT. + FDIV ATAN1 + FSTA ATAN1 +/ +ATANLW, FCLA /CLEAR OUT TEMP. + FSTA ATAN3 + FLDA ATAN1 /RECALL NUMBER. + FSUB ATANC3 /START THE KNOCKING OFF PROCESS. + JLT ATANNT /WRONG SECTOR. + FLDA ATANC4 /BOP UP ORIGINAL. + FADDM ATAN1 + FLDA ATANCJ /GET MAGIC NUMBER. + FDIV ATAN1 + FADD ATANC4 + FSTA ATAN1 + FLDA ATANC5 + FSTA ATAN3 +/ +ATANNT, FLDA ATAN1 /RECALL AND SQUARE IT. + FMUL ATAN1 + FSTA ATAN4 /YET ANOTHER TEMP. + FLDA ATANC6 + FMUL ATAN4 + FADD ATANC7 + FMUL ATAN4 + FADD ATANC8 + FMUL ATAN4 + FADD ATANC9 + FMUL ATAN4 + FADD F1ATAN + FMUL ATAN1 + FADD ATAN3 + FSTA ATAN1 + FLDA ATAN22 + FSUB F1ATAN + JLE ATANBG + FLDA ATANCH + FSUB ATAN1 + JA .+3 +/ +ATANBG, FLDA ATAN1 + JXN ATNRTN,0 + FNEG + JA ATNRTN + diff --git a/sw/f4/FRTSRC/atan2.ra b/sw/f4/FRTSRC/atan2.ra new file mode 100644 index 0000000..0c1df14 --- /dev/null +++ b/sw/f4/FRTSRC/atan2.ra @@ -0,0 +1,80 @@ +/ +/ +/ +/ A T A N 2 +/ - - - - - +/ +/SUBROUTINE ATAN2(Y,X) +/ +/ VERSION 5A 4-27-77 PT +/ + SECT ATAN2 + JA #ATAN2 + TEXT +ATAN2 + +ATN2XR, SETX XRATN2 + SETB BPATN2 +BPATN2, FNOP + 0 + 0 +XRATN2, F 0.0 +YCOR, F 0.0 +XCOR, F 0.0 +FPIAT2, 2 /PI + 3110 + 3755 +ATPI, F 1.570796 /PI/2 + ORG 10*3+BPATN2 + FNOP + JA ATN2XR + 0 +AT2RTN, JA . + BASE 0 +#ATAN2, STARTD + FLDA 10*3 + FSTA AT2RTN + FLDA 0 + SETX XRATN2 + SETB BPATN2 + BASE BPATN2 + LDX 1,1 + FSTA BPATN2 + FLDA% BPATN2,1 /ADDR OF Y + FSTA YCOR + FLDA% BPATN2,1+ /ADDR OF X + FSTA XCOR + STARTF + FLDA% YCOR /GET Y - THE TAN + FSTA YCOR /SAV FOR A SECOND + LDX 1,2 /POSITIVE X + JEQ ATN0 + JGT ATN1 + LDX 0,2 +ATN1, FLDA% XCOR /GET X - THE QUADRAND + FSTA XCOR /+MOVE IT TO A SAFE PLACE + JEQ ATASP + FLDA YCOR /Y/X + FDIV XCOR + FSTA YCOR + EXTERN ATAN + JSR ATAN /CALL ATAN + JA .+4 /TAKE ARCTAN OF Y/X + JA YCOR + FSTA YCOR /SAVE IT AWAY + JGE A2 /SKIP IF 1 OR 3 Q + FADD FPIAT2 /ADD PI FOR 4TH Q + FSTA YCOR +A2, JXN AT2RTN,2 + FLDA YCOR + FSUB FPIAT2 /SUB PI FOR 2ND+3RD QUADS + JA AT2RTN +ATASP, FLDA ATPI /X=0 MEANS +-PI/2 + JXN ATNG,2 + FNEG +ATNG, JA AT2RTN +ATN0, FLDA% XCOR + JLT POSX /IF X POS,ANS IS 0 + FCLA + JA AT2RTN +POSX, FLDA FPIAT2 /OTHERWISE,ANS IS PI + JA AT2RTN + diff --git a/sw/f4/FRTSRC/cabs.ra b/sw/f4/FRTSRC/cabs.ra new file mode 100644 index 0000000..ab166b0 --- /dev/null +++ b/sw/f4/FRTSRC/cabs.ra @@ -0,0 +1,57 @@ +/ +/ C A B S +/ - - - - +/ +/ VERSION 5A 4-27-77 PT +/ +/ENTER IN COMPLEX, EXIT IN REAL +/ +/Z=X+IY +/ +/CABS(Z)=SQRT(X^2+Y^2) +/ + DPCHK + SECT CABS + JA #CABS + TEXT +CABS + +CABSXR, SETX XRCABS + SETB BPCABS + JA .+3 +BPCABS, F 0.0 +XRCABS, F 0.0 +ARG, F 0.0 + F 0.0 + ORG 10*3+BPCABS + FNOP + JA CABSXR + 0 +CABSRT, JA . + BASE 0 +#CABS, STARTD + FLDA 10*3 + FSTA CABSRT + FLDA 0 + SETB BPCABS + SETX XRCABS + BASE BPCABS + LDX 1,1 + FSTA BPCABS + FLDA% BPCABS,1 + FSTA BPCABS + STARTE + FLDA% BPCABS + FSTA ARG + STARTF + FLDA ARG + FMULM ARG /X^2 + FLDA ARG+3 /Y + FMUL ARG+3 /Y^2 + FADD ARG /X^2+Y^2 + FSTA ARG + EXTERN SQRT + JSR SQRT + JA RT1 + JA ARG +RT1, JA CABSRT + EXTERN #CAC + diff --git a/sw/f4/FRTSRC/carith.ra b/sw/f4/FRTSRC/carith.ra new file mode 100644 index 0000000..e2770c3 --- /dev/null +++ b/sw/f4/FRTSRC/carith.ra @@ -0,0 +1,110 @@ +/COMPLEX ARITHMETIC ROUTINES +/ (A+BI)+-*/(C+DI) +/ +/ VERSION 5A 4-26-77 MH +/ + DPCHK + SECT #CAD + JA . + FSTA #CARG /SAVE SECOND ARG + STARTF + FLDA #CARG /STARTF ROUNDS + FADDM #CAC /A+C + FLDA #CARG+3 + FADDM #CAC+3 /B+D + STARTE + JA #CAD + ENTRY #CSB +#CSB, JA . + FSTA #CARG + STARTF + FLDA #CARG /STARTF ROUNDS + FNEG + FADDM #CAC /A-C + FLDA #CAC+3 + FSUB #CARG+3 /B-D + FSTA #CAC+3 + STARTE + JA #CSB + ENTRY #CNG +#CNG, JA . + STARTF + FLDA #CAC + FNEG + FSTA #CAC + FLDA #CAC+3 + FNEG + FSTA #CAC+3 + STARTE + JA #CNG + ENTRY #CEQ +#CEQ, JA . + JSA #CSB + STARTF + FLDA #CAC + JNE NOTEQ + FLDA #CAC+3 + JNE NOTEQ + FLDA ONE + JA #CEQ +NOTEQ, FCLA + JA #CEQ +ONE, F 1.0 + ENTRY #CML +#CML, JA . + FSTA #CARG + STARTF + FLDA #CARG /STARTF ROUNDS + FMUL #CAC /A*C + FSTA TEMP + FLDA #CARG+3 + FMUL #CAC+3 /B*D + FSTA TEMP2 + FLDA #CARG + FMULM #CAC+3 /B*C + FLDA #CAC + FMUL #CARG+3 /A*D + FADDM #CAC+3 /A*D+B*C + FLDA TEMP + FSUB TEMP2 /A*C-B*D + FSTA #CAC + STARTE + JA #CML + ENTRY #CDV +#CDV, JA . + FSTA #CARG + STARTF + FLDA #CARG /STARTF ROUNDS + FMUL #CAC+3 /B*C + FSTA TEMP + FLDA #CARG+3 + FMUL #CAC /A*D + FSTA TEMP2 + FLDA #CARG + FMULM #CAC /A*C + FLDA #CAC+3 + FMUL #CARG+3 /B*D + FADDM #CAC /A*C+B*D + FLDA #CARG + FMULM #CARG /C*C + FLDA #CARG+3 + FMUL #CARG+3 /D*D + FADDM #CARG /C*C+D*D + FLDA TEMP + FSUB TEMP2 /B*C-A*D + FDIV #CARG /(B*C-A*D)/(C*C+D*D) + FSTA #CAC+3 + FLDA #CAC + FDIV #CARG /(A*C+B*D)/(C*C+D*D) + FSTA #CAC + STARTE + JA #CDV +TEMP, 0;0;0 +TEMP2, 0;0;0 +#CARG, 0;0;0 + 0;0;0 + ENTRY #CAC +#CAC, 0;0;0 + 0;0;0 + END + diff --git a/sw/f4/FRTSRC/cexp.ra b/sw/f4/FRTSRC/cexp.ra new file mode 100644 index 0000000..7a9dbd0 --- /dev/null +++ b/sw/f4/FRTSRC/cexp.ra @@ -0,0 +1,71 @@ +/ +/ C E X P +/ - - - - +/ +/ COMPLEX EXPONENT ROUTINE +/Z=X+IY +/ +/ VERSION 5A 4-25-77 MH +/ +/ +/CEXP(Z)=EXP(X)*(COS(Y)+I*SIN(Y)) +/ENTER+EXIT IN COMPLEX +/EXTERNAL EXP,SIN,COS +/ + SECT CEXP + JA #CEXP + DPCHK + TEXT +CEXP + +CEXPXR, SETX XR + SETB BP + JA .+3 +BP, F 0.0 +XR, F 0.0 +ARG, F 0.0 + F 0.0 + ORG 10*3+BP + FNOP + JA CEXPXR + 0 +RT, JA . + BASE 0 +#CEXP, STARTD + FLDA 10*3 + FSTA RT + FLDA 0 + SETB BP + SETX XR + BASE BP + LDX 1,1 + FSTA BP + FLDA% BP,1 + FSTA BP + STARTE + FLDA% BP + FSTA ARG + STARTF + EXTERN EXP + JSR EXP /EXP(X) + JA CEX1 + JA ARG +CEX1, FSTA ETEMP + EXTERN COS + JSR COS /COS(Y) + JA CEX2 + JA ARG+3 +CEX2, FSTA ARG + EXTERN SIN + JSR SIN /SIN(Y) + JA CEX3 + JA ARG+3 +CEX3, FSTA ARG+3 + FLDA ETEMP + FMULM ARG + FMULM ARG+3 + STARTE + FLDA ARG + FSTA #CAC + JA RT + EXTERN #CAC +ETEMP, F 0.0 + diff --git a/sw/f4/FRTSRC/chars.ra b/sw/f4/FRTSRC/chars.ra new file mode 100644 index 0000000..58ae83d --- /dev/null +++ b/sw/f4/FRTSRC/chars.ra @@ -0,0 +1,176 @@ +/ +/ VERSION 5A 4-27-77 PT +/ + SECT CHARS + ENTRY CGET + ENTRY CPUT + TEXT +CHARS+ +CHARXR, SETX XRCHAR + SETB BPCHAR +BPCHAR, F 0. +XRCHAR, F 0. +FROM, F 0. +NCHAR, F 0. + ORG 10*3+BPCHAR + FNOP + JA CHARXR + 0 +CHARTN, JA . + BASE 0 +START, JA . + STARTD + FLDA 10*3 + FSTA CHARTN + FLDA 0 + SETX XRCHAR + SETB BPCHAR + BASE BPCHAR + LDX 1,1 + FSTA BPCHAR /STR SAVED IN BPCHAR + FLDA% BPCHAR,1 + FSTA STR + FLDA% BPCHAR,1+ + FSTA NCHAR + FLDA% BPCHAR,1+ + FSTA FROM /ADDR OF F + STARTF + FLDA% NCHAR + ATX 0 + JA START +/ +CGET, JSA START + TRAP4 CGETIT + XTA 0 + FSTA% FROM /TO 3 WORDS + JA CHARTN +/ +CPUT, JSA START + FLDA% FROM + ATX 1 + FCLA + TRAP4 CPUTIT + JA CHARTN +/ + SECT8 CHAR /ALL IN 1 PAGE +CGETIT, 0 + JMS FLDRTN + TAD O2FLD + DCA ORGFLD + TAD XFLD + DCA XR2FLD + TAD PFLD + DCA GFLD +GFLD, 0 /STR FIELD + TAD% STR-1 +ORGFLD, 0 /THIS ROUTINE + DCA LOC + TAD XR /N + RAR + SNL CLA + JMP RIGHT + CLL + TAD LOC + RTR + RTR + RTR +BOTH, AND P77 +XR2FLD, 0 + DCA% QXR+1 /PASS TO FPP + CDF CIF 0 + JMP% CGETIT +RIGHT, TAD LOC + JMP BOTH +CADD, ADDR CGETIT + 0 +STR, 0 + 0 +/ +CPUTIT, 0 + JMS FLDRTN + TAD QXR1 + AND P7 + RTL + RAL + TAD CDFINS + DCA XR1FLD + TAD O2FLD + DCA O1FLD + TAD O2FLD + DCA O3FLD + TAD PFLD + DCA P1FLD +XR1FLD, 0 + TAD% QXR1+1 /F VALUE +O1FLD, 0 + AND P77 + DCA LOC +P1FLD, 0 + TAD% STR-1 +O3FLD, 0 + DCA XR1FLD /USE AS A TMP + TAD XR + RAR + SNL CLA + JMP PRIGHT + CLL + TAD XR1FLD + AND P77 /SAVE RIGHT HALF + DCA XR1FLD + TAD LOC + RTL + RTL + RTL + TAD XR1FLD +PFLD, 0 + DCA% STR-1 + CIF CDF 0 + JMP% CPUTIT +PRIGHT, TAD XR1FLD + AND P7700 + TAD LOC + JMP PFLD +/ +FLDRTN, 0 + TAD CADD + AND P7 + RTL + RAL + TAD CDFINS + DCA O2FLD + TAD QXR + AND P7 + RAL + RTL + TAD CDFINS + DCA XFLD +XFLD, 0 + TAD% QXR+1 +O2FLD, 0 + DCA XR + TAD XR + RAR + SNL + TAD M1 + CLL + TAD STR+1 + DCA STR-1 + SZL CLA + IAC + CLL + TAD STR + AND P7 + RAL + RTL + TAD CDFINS + DCA PFLD /STR FLD + JMP% FLDRTN +P77, 77 +CDFINS, 6203 +P7, 7 +QXR, ADDR XRCHAR +LOC, 0 +XR, 0 +M1, -1 +QXR1, ADDR XRCHAR+1 +P7700, 7700 + diff --git a/sw/f4/FRTSRC/chkeof.ra b/sw/f4/FRTSRC/chkeof.ra new file mode 100644 index 0000000..18416a0 --- /dev/null +++ b/sw/f4/FRTSRC/chkeof.ra @@ -0,0 +1,35 @@ +/ +/ VERSION 5A 4-26-77 MH +/ + SECT CHKEOF +/CHECKS END OF FILE CONDITION. +/ZEROS PASSED VARIABLE + PASSES ITS ADDRESS TO #EOFSW +/FRTS DOES REST + EXTERN #EOFSW + BASE CHKBAS + JA CODE +NAME, TEXT +CHKEOF+ +CHKBAS, F 0. +CHKXR, F 0. + BASE 0 +CODE, STARTD + FLDA 30 + FSTA CHKRTN /RETURN ADDR + FLDA 0 /GET PTR TO VARIABLE LIST + BASE CHKBAS + SETB CHKBAS + SETX CHKXR + FSTA CHKBAS + LDX 1,1 + FLDA% CHKBAS,1 /HERES PTR TO VAR ADDR + FSTA CHKBAS + JA PART2 + ORG 10*3+CHKBAS + FNOP + JA NAME+3 +PART2, FLDA CHKBAS + FSTA #EOFSW /PASS ADDR TO SYS + STARTF + FCLA + FSTA% CHKBAS /ZERO VAR +CHKRTN, JA . diff --git a/sw/f4/FRTSRC/clk8a.ra b/sw/f4/FRTSRC/clk8a.ra new file mode 100644 index 0000000..ccf875e --- /dev/null +++ b/sw/f4/FRTSRC/clk8a.ra @@ -0,0 +1,450 @@ +/PDP-8A OPTION 1 (100 HZ) CLOCK ROUTINE................CLK8A +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ +/COPYRIGHT (C) 1975 +/DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. +/ +/ +/ +/THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A +/SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU- +/SION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE,OR ANY OTHER +/COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE +/TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH A SYSTEM AND TO ONE WHO +/AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE +/SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC. +/ +/ +/THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT +/NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL +/EQUIPMENT CORPORATION. +/ +/ +/DEC ASSUMES NO RESPONSIBILITY FOR THE USEOR RELIABILITY OF ITS +/SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ + + + + +/ +/E.P. 11/6/75 +/ VERSION 5A 4/26/77 MH +/ +/ + + + + + + + + EXTERN #DISP /SYSTEM PAGE 0,NEEDED TO + /PUT CLOCK STATUS ON PG0 + /(CSTAT) FOR USE BY GEN + /USER CLOCK SERVICE ROUTS + EXTERN #T812 /RTS CPTYP + EXTERN ONQI /INTERRUPT QUEUER + CLLE= 6135 /AC11=1 INTRRUPTS ON. + CLCL= 6136 /CLEAR CLOCK FLAG + CLSK= 6137 /SKIP ON CLOCK FLAG. + CSTAT=157 /IDOCLK PUTS CLSA BITS + /IN HERE + BASE FTMP0 + INDEX FCNWD + FIELD1 SYNC + JSA SETUP /HERE TO READ A STRIG + /INITIALIZE ARGS + TRAP4 DOSYNC /FCNWD (XR) HOLDS STRIG + /TO READ + XTA FCNWD /=ANS=0,1 + FSTA% FTMP1 /GIVE ANS TO CALLER + JA GOBAK +FTMP0, F 0.0 /BASE PAGE +FTMP1, F 0.0 +RPTR, 27;ADDR RTBL /PTR TO RATE TBL, ALSO + /USED TO FLT OVRCNT (NOTE + /THAT THE EXPONENT=27) +MINRAT, F .02 /MIN ALLOWABLE RATE +TOVR, F 0.0 +NAME, TEXT +CLOCK + + ORG 10*3+FTMP0 + FNOP + JA NAME+3 + 0 +GOBAK, JA . +RTBL, F 16.0 /CONSTANT USED TO CHK FOR + /EXT CLK BIT IN FCNWD + /THIS CONST MUST BE NE 0 +MAXRAT, +F4096, F 4096.0 /USED TO GET OVRFLO COUNT + F 100000.0 /FASTEST RATE IN HERTZ + F 10000.0 /NEXT FASTEST RATE + F 1000.0 + F 100.0 /SLOWEST RATE + F 1.0 /USED BY TIME FOR EXT CLK + BASE 0 + +SETUP, 0;0 /HERE TO INIT ALL FPP SUBS + STARTD + FLDA 30 /PICK UP RTN TO CALLER + FSTA GOBAK + FLDA 0 /GET PTR TO CALLERS ARGS + SETX FCNWD /CLOCK XR AND BASE + SETB FTMP0 + BASE FTMP0 + FSTA FTMP1 + FLDA% FTMP1,P1 + FSTA FTMP0 /PTR TO 1ST ARG + FLDA% FTMP1,P2 + FSTA FTMP1 /PTR TO 2ND ARG + FLDA #T812 /TELLS PDP8,PDP12 + ATX CPTYP /0=8=DK8ES,1=12=KW12A + STARTF + FLDA% FTMP0 /=1ST ARG + ATX FCNWD /ALWAYS IN FCNWD + JA SETUP + ENTRY CLOCK +CLOCK, JSA SETUP /HERE FOR CLOCK START + FLDA% FTMP0 + FSUB RTBL /FCNWD IS IN FAC,IF GE 16 + JGE ITSEXT /(RTBL=16.0) THEN USER IS + /REQUESTING AN EXTERNAL + /CLOCK I.E. B8 OF FCNWD + /IS SET. + FLDA% FTMP1 /=REQUESTED RATE IN HERTZ + FSUB MINRAT /.LE. MINUMUM RATE + JLE GOTR-2 /MEANS STOP CLOCK. + FADD MINRAT + FSUB MAXRAT /CHK FOR TOO FAST + JGT GOTR-2 + LDX -4,OVRFLO /THERE ARE 4 BASIC RATES + LDX 1,RATE /=INDEX INTO RTBL; UPON + /TRAP(CLOCK) RATE=(0, + /2,3,4,5,6) 0=STOP, + /6=EXTERNAL + /2-5=PROGRAMMABLE RATES +LOP0, FLDA% RPTR,RATE+ + /GET NEXT SLOWEST RATE + FDIV% FTMP1 /=REQUESTED RATE IN HZ. + /FAC=OVRFLO COUNT; + FSUB F4096 /MUST BE MODULO 12 BITS. + JLE GOTR /FOUND IT + JXN LOP0,OVRFLO+ + LDX 0,RATE /RATE IS TOO SLOW, STOP + /CLOCK. +GOTR, FADD F4096 /RESTORE + FSTA TOVR + ATX OVRFLO /OVER FLOW COUNT + TRAP4 SETCLK /GO START CLOCK + JA GOBAK /RTN TO CALLER +ITSEXT, LDX 6,RATE /=RATE FOR EXT CLK + FLDA% FTMP1 /REQUESTED RATE IS + /INTERPRETED AS OVRFLO + JA GOTR+1 /WHEN RATE IS EXTERNAL + /MAGIC TABLE USED BY SETCLK TO SET CLOCK ENABLE +/BITS. EVEN NUMBERED ENTRIES ARE FOR THE DK8ES; +/ODD NUMBERED ONES ARE FOR THE KW12A. + +CLKTBL, 0675 /"STANDARD" DK BITS + 300 /STND KW BITS + 1 /DK STRIG1 BIT + 60 /KW STRIG1 BITS + 2 /DK S2 + 14 /KW S2 + 4 /S3 +P3, 3 /S3 + 40 /DK ADC ON OVR BIT + 400 /KW ADC ON OVR BIT + + /IF NOT NEXT PAGE DO ORG + IFNEG .-200 < ORG .-SYNC&7600+200+SYNC > + SETCLK, 0 /TRAP HERE TO START CLK + /THIS ROUT HANDLES BOTH + /DK8ES AND KW12A. + CLCL /TRY AND CLEAR IT HERE???? +/ CLLR /STOP KW AND SET MODE 0; + /NOP FOR DK. +/ CLEN /CLR KW12 ENABLE OR + /READ DK ENABLE. +/ CLA +/ TAD P7540 /TOGGLE KW MODE 0 TO 1 TO +/ CLLR /CLR CLK COUNTER, OR SET + /DK ENABLE BITS, RATE FOR +/ CLA CMA /BOTH NOW=7=STOP. +/ CLZE /CLR ALL DK ENABLE BITS, +/ CLSA /CLR STATUS OF BOTH, ALL + CLA /IS NOW CLEAR. + TAD FCNTBL+1 /SET PTR TO CLKTBL FOR + /SETTING OF ENABLE REGS. + TAD CPTYP /=0 IF PDP8 =1 IF PDP12 + DCA FCNPTR /TBL ENTRIES ALTERNATE + /FOR 8 AND 12. CPTYP SETS + /PTR TO 1ST 8 OR 1ST 12 + /ENTRY + TAD IDOCLK /(AC=JMP AROUND). THE + /FOLLOWING IS ONCE ONLY + /CODE. THESE LOCS ARE + /SUBSEQUENTLY USED AS + /OPERANDS + DCA .-1 + /THE TAG "ISVBIT" MUST BE + /IN FRONT OF THE STRIG + /FLAGS (STFLG) TO COVER + /THE ILLEGAL CASE OF + /STRIG 0 IN A FORT CALL + /TO SYNC. +ISVBIT, TAD CPTYP /(AC=0,1) MAKE THE INST + /RAR CLL (FOR DK) OR THE + /INST RTR CLL FOR IDOCLK; +STFLG, RAL CLL /BECAUSE STATUS BITS FOR + TAD RARCLL /STRIGS DIFFER ON DK,KW. + DCA LOP2+1 /SEE SUB IDOCLK. + /THE ABOVE 3 LOCS ARE + /SCHMITT TRIGGER FLAGS. + /THE ORDER IS S1,S2,S3 + /FOR PDP8 AND S3,S2,S1 + /FOR PDP12. (CHK THE STATUS + /BITS FOR DK AND KW). + JMS% KONQI+1 /PUT CLOCK ON THE +ITMP0, CLSK /INTERRUPT QUE + /VIA ONQI. +CLENAB, ADDR IDOCLK /THIS LOC WILL HOLD THE + /ENABLE BITS FOR DK,KW +AROUND, TAD RATE /(AC=0,2,3,4,5,6) RATE IS + /SET BY FPP + RTR CLL /START TO POSITION RATE + RAR /BITS. B3-B5 FOR DK + /B0-B2 FOR KW + TAD CPTYP /(THIS IS TRICKY) NEED + RAR /CPTYP IN LNK BECAUSE + /POSITION OF RATE BITS + /DIFFER FOR DK KW. + TAD% FCNPTR /AC="STANDARD" + /ENABLE BITS FOR DK,KW. + SZL /IF ITS A KW THE RATE AND + /AND STND BITS ARE ALREADY + /POSITIONED AS FOLLOWS: + /RRR011000000 + /B0-B3 AND B5 WILL GO TO + /KW CONTROL. B4,B5 WILL + /GO TO ENABLE. B3 IS ADC + /ON OVRFLO AND MAY BE SET + /BELOW. B5 ON CONTROL IS + /MODE 1. B4 AND B5 ON + /ENABLE ARE BUFF PRESET TO + /CLOCK COUNTER AND INTRUPT + /ON OVRFLO RESPECTIVELY. + JMP NOBIT-1 /ITS KW GO PUT IN CLENAB. + RTR /ITS DK; POSITION RATE TO + RAR /B3-B5. NOTE THAT THE LNK + /(CPTYP=0) IS BEING USED. + CMA /NOTE ALSO THAT THE RATE + /AND STND BITS ARE THE 1S + /COMP. OF WHAT THEY SHOULD + /BE, IE CPTYP=LNK=0 + /BECOMES + /B2=1 OF ENABLE=BUFF + /PRESET TO CLK CNTR ON + /OVERFLO. LOOK AT THE RATE + /BITS IN THE HANDBOOK FOR + /BOTH DK,KW. R2,R5 + /FOR DK IS 100HZ, 100KHZ + /RESPECTIVELY. R2,R5 FOR + /KW IS 100KHZ,100HZ. + /1S COMP.OF 2=5 ETC. + /SMARTEN UP STEVE! + /THE FINAL VALUE OF THE + /STND DK ENABLE BITS (1ST + /ENTRY IN CLKTBL) IS LEFT + /AS AN EXERCISE FOR THE + /PROGRAMMER. + JMP NOBIT-1 /GO PUT IN CLENAB +LOP1, RAR CLL /ROT 1 FCN BIT INTO LNK. + /B7=EXT CLK AND IS + /IGNORED HERE. B8=ADC ON + /OVRFLO, B9-B11 ARE STRIG3 + /-STRIG1 RESP. BX=1=ENABLE + /FCN. 0=DISABLE + DCA FCNWD /PUT IT BACK (FCNWD IS + /SET BY FPP) + SNL /ENABLE FCN ? + JMP NOBIT /NO + TAD% FCNPTR /GET BITS FROM THE MAGIC + TAD CLENAB /TABLE. + DCA CLENAB /UPDATE ENABLE WORD. +NOBIT, ISZ FCNPTR /ADV TO NEXT + ISZ FCNPTR /TBL ENTRY. + TAD FCNWD /WHEN FCNWD GOES TO 0 + AND P17 /WE ARE ALL DONE. + /THE "AND" IS DONE TO + /PROTECT AGAINST A BAD + /ARG FROM THE FORT CALL. +P7540, SMA SZA /SMA IS SUPERFLOUS TO + /THE ROUT; BUT IT + /CREATES A NICE CONST. + JMP LOP1 /MORE TO DO + DCA STFLG /CLR THE SCHMITT + DCA STFLG+1 /TRIGGER FLAGS. + DCA STFLG+2 + TAD OVRFLO /SET BUFF PRESET + CIA /(FPP SET THIS ARG) +/ CLAB + CLA + TAD CLENAB /THIS IS FOR KW ONLY. + AND P377 /AC=3XX. 3= OR BUFF PRE + /INTO CLK CNTR AND ENAB + /INT ON OVRFLO. + /XX ARE THE STRIGS. +/ CLEN /SET KW ENABLE OR + CLA /READ DK ENABLE. + DCA OVRCNT+1 /CLR NUM OF CLK OVRFLOS + DCA OVRCNT /SINCE TIME 0. + TAD CPTYP /NEED TYPE IN ORDER TO +RARCLL, RAR CLL /ISOLATE CONTROL + TAD CLENAB /BITS FOR + SZL /KW ? + AND P7540 /YES, B0-B2 IS RATE, + /B3 IS ADC, B5 IS BUFF + /PRE TO CLK CNTR ON + /OVRFLO, B6 IS MOX NIX. + /IF DK ALL BITS MAY HAVE + /MEANING + CLA IAC /SET BIT 11 + CLLE /ENABLE THE CLOCK INTERRUPTS +/ CLLR /START THE CLOCK + CLA + CIF CDF + JMP% SETCLK /RTN TO RTS + DOSYNC, 0 /HERE TO DISPOSITION A + /A SCHMITT TRIGGER. + TAD CPTYP /DK AND KW FLAGS ARE IN + RAR CLL /REVERSE ORDER. IF DK + /ARG IS OK; IF KW THEN + /MUST SET 1=3, 2=2, 3=1 + /TO GET INDEX TO + /CORRECT FLAG. + TAD FCNWD /=REQUESTED STRIG=1,2,3 + /(SET BY FPP) + SZL /DK ? + CIA /NO KW + AND P3 /IE 1 GOES TO -1 GOES + /TO 3 ETC. "AND" ALSO + /INSURES RANGE IS 0-3. + /IF ARG IS 0 RESULT IS + /ALWAYS 0. + TAD KSTFLG+1 /GET PTR TO FLAG + DCA SETCLK + TAD% SETCLK /FLAG=0 IF TRIG HAS NOT + /TRIPPED SINCE THE LAST + /CALL TO SYNC; =1 + /OTHERWISE IE RTN 0=FALSE + DCA FCNWD /,1=TRUE (FPP WILL PICK + / UP FCNWD) + DCA% SETCLK /CLR FLAG ANYWAY + CIF CDF + JMP% DOSYNC /RTN TO RTS + IDOCLK, JMP AROUND /HERE ON CLOCK INTERRUPT + /(JMP AROUND IS A ONCE + /ONLY CONSTANT). + CLCL /JUST TO MAKE SURE! + TAD KSTFLG+1 /SET PTR TO STRIG FLAGS. + DCA ITMP0 +/ CLSA /GET CLOCK BITS. + CLA CLL CML RAR /SIMULATE TICK + DCAZ CSTAT /SAVE THEM FOR SOME + TADZ CSTAT /BODY ELSE. + SPA /OVER FLOW ? + ISZ OVRCNT+1 /YES BUMP LO ORD CNTR + SKP + ISZ OVRCNT /BUMP HI ORD + JMP DOTRIG /(HI ORD ISZ SKP IS + /HARMLESS) +LOP2, ISZ ITMP0 /ADV STRIG FLAG PTR. + RAR CLL /(OR RTR CLL IF KW) + /IE PUT STRIG BIT IN LNK. + /IF DK THE ORDER OF + /INTERROGATION IS S1,S2,S3 + /IF KW THE ORDER IS S3, + /S2,S1. THE STATUS BITS + /FOR DK ARE ADJACENT IE + / B9(S3),B10(S2),B11(S1) + /FOR KW ITS EVERY OTHER, + /B6(S1),B8(S2),B10(S3). + DCA ISVBIT /SAVE WHATS LEFT. + RAL /COPY LNK INTO FLAG IF=1 + SZA /IE DONT CLR FLAG WHEN + DCA% ITMP0 /ITS SET. + TAD ISVBIT +DOTRIG, AND P377 /THE "AND" INSURES THAT + /THE HI ORD BITS ARE + /CLRED SO THAT ISVBIT + /GOES TO 0 WHEN ALL + /STRIGS HAVE BEEN + /DISPOSITIONED. IE + /CLR OVRFLO BIT FOR DK,KW + /AND CLR PRE-EVENT BIT + /ON KW IF IT IS SET + SZA /DONE ? + JMP LOP2 /NO + TAD #CLINT /CALL USER EXTENDED + SZA CLA /CLOCK ROUT ? + JMS% #CLINT+1 /YES + JMP% IDOCLK /RTN TO IHANDL + FCNPTR, +OVRCNT, +KONQI, ADDR ONQI +P17, 17 +P377, 377 +FCNWD, 0 /FPP XRS +CPTYP, 0 +RATE, 0 +P1, 1 +P2, 2 +OVRFLO, +FCNTBL, ADDR CLKTBL +KSTFLG, ADDR STFLG-1 + ENTRY #CLINT +#CLINT, 0;0 + ENTRY TIME /FIGURE WHAT TIME IT IS +TIME, JSA SETUP + FLDA RPTR /=27;X;X IS USED TO FLOAT + STARTD + FLDA# OVRCNT /NUM OF CLK OVRFLOS SINCE + STARTF /TIME 0 + FNORM + FMUL TOVR /=NUM OF BASIC TICKS PER + /CLOCK OVER FLOW. + /FAC=NUM OF TICKS SINCE + /TIME 0. + FDIV% RPTR,RATE /DIV BY BASIC RATE IN HZ + /OR 1 IF EXTERNAL CLK. + FSTA% FTMP0 /GIVE ANS TO CALLER, ALSO + /LEAVE ANS IN FAC IN + /CASE TIME WAS A FCN + /CALL. ANS=ELAPSED TIME IN + /SECONDS SINCE TIME 0 OR + /NUM OF EXTERNAL UNIT + JA GOBAK /TICKS + diff --git a/sw/f4/FRTSRC/clock.ra b/sw/f4/FRTSRC/clock.ra new file mode 100644 index 0000000..a994281 --- /dev/null +++ b/sw/f4/FRTSRC/clock.ra @@ -0,0 +1,399 @@ +/ +/ VERSION 5A 4/26/77 MH +/ + EXTERN #DISP /SYSTEM PAGE 0,NEEDED TO + /PUT CLOCK STATUS ON PG0 + /(CSTAT) FOR USE BY GEN + /USER CLOCK SERVICE ROUTS + EXTERN #T812 /RTS CPTYP + EXTERN ONQI /INTERRUPT QUEUER + CLZE=6130 /CLOCK IOTS + CLSK=6131 + CLLR=6132 /ALSO CLOE + CLAB=6133 + CLEN=6134 + CLSA=6135 + CSTAT=157 /IDOCLK PUTS CLSA BITS + /IN HERE + BASE FTMP0 + INDEX FCNWD + FIELD1 SYNC + JSA SETUP /HERE TO READ A STRIG + /INITIALIZE ARGS + TRAP4 DOSYNC /FCNWD (XR) HOLDS STRIG + /TO READ + XTA FCNWD /=ANS=0,1 + FSTA% FTMP1 /GIVE ANS TO CALLER + JA GOBAK +FTMP0, F 0.0 /BASE PAGE +FTMP1, F 0.0 +RPTR, 27;ADDR RTBL /PTR TO RATE TBL, ALSO + /USED TO FLT OVRCNT (NOTE + /THAT THE EXPONENT=27) +MINRAT, F .02 /MIN ALLOWABLE RATE +TOVR, F 0.0 +NAME, TEXT +CLOCK + + ORG 10*3+FTMP0 + FNOP + JA NAME+3 + 0 +GOBAK, JA . +RTBL, F 16.0 /CONSTANT USED TO CHK FOR + /EXT CLK BIT IN FCNWD + /THIS CONST MUST BE NE 0 +MAXRAT, +F4096, F 4096.0 /USED TO GET OVRFLO COUNT + F 100000.0 /FASTEST RATE IN HERTZ + F 10000.0 /NEXT FASTEST RATE + F 1000.0 + F 100.0 /SLOWEST RATE + F 1.0 /USED BY TIME FOR EXT CLK + BASE 0 + +SETUP, 0;0 /HERE TO INIT ALL FPP SUBS + STARTD + FLDA 30 /PICK UP RTN TO CALLER + FSTA GOBAK + FLDA 0 /GET PTR TO CALLERS ARGS + SETX FCNWD /CLOCK XR AND BASE + SETB FTMP0 + BASE FTMP0 + FSTA FTMP1 + FLDA% FTMP1,P1 + FSTA FTMP0 /PTR TO 1ST ARG + FLDA% FTMP1,P2 + FSTA FTMP1 /PTR TO 2ND ARG + FLDA #T812 /TELLS PDP8,PDP12 + ATX CPTYP /0=8=DK8ES,1=12=KW12A + STARTF + FLDA% FTMP0 /=1ST ARG + ATX FCNWD /ALWAYS IN FCNWD + JA SETUP + ENTRY CLOCK +CLOCK, JSA SETUP /HERE FOR CLOCK START + FLDA% FTMP0 + FSUB RTBL /FCNWD IS IN FAC,IF GE 16 + JGE ITSEXT /(RTBL=16.0) THEN USER IS + /REQUESTING AN EXTERNAL + /CLOCK I.E. B8 OF FCNWD + /IS SET. + FLDA% FTMP1 /=REQUESTED RATE IN HERTZ + FSUB MINRAT /.LE. MINUMUM RATE + JLE GOTR-2 /MEANS STOP CLOCK. + FADD MINRAT + FSUB MAXRAT /CHK FOR TOO FAST + JGT GOTR-2 + LDX -4,OVRFLO /THERE ARE 4 BASIC RATES + LDX 1,RATE /=INDEX INTO RTBL; UPON + /TRAP(CLOCK) RATE=(0, + /2,3,4,5,6) 0=STOP, + /6=EXTERNAL + /2-5=PROGRAMMABLE RATES +LOP0, FLDA% RPTR,RATE+ + /GET NEXT SLOWEST RATE + FDIV% FTMP1 /=REQUESTED RATE IN HZ. + /FAC=OVRFLO COUNT; + FSUB F4096 /MUST BE MODULO 12 BITS. + JLE GOTR /FOUND IT + JXN LOP0,OVRFLO+ + LDX 0,RATE /RATE IS TOO SLOW, STOP + /CLOCK. +GOTR, FADD F4096 /RESTORE + FSTA TOVR + ATX OVRFLO /OVER FLOW COUNT + TRAP4 SETCLK /GO START CLOCK + JA GOBAK /RTN TO CALLER +ITSEXT, LDX 6,RATE /=RATE FOR EXT CLK + FLDA% FTMP1 /REQUESTED RATE IS + /INTERPRETED AS OVRFLO + JA GOTR+1 /WHEN RATE IS EXTERNAL + /MAGIC TABLE USED BY SETCLK TO SET CLOCK ENABLE +/BITS. EVEN NUMBERED ENTRIES ARE FOR THE DK8ES; +/ODD NUMBERED ONES ARE FOR THE KW12A. + +CLKTBL, 0675 /"STANDARD" DK BITS + 300 /STND KW BITS + 1 /DK STRIG1 BIT + 60 /KW STRIG1 BITS + 2 /DK S2 + 14 /KW S2 + 4 /S3 +P3, 3 /S3 + 40 /DK ADC ON OVR BIT + 400 /KW ADC ON OVR BIT + + /IF NOT NEXT PAGE DO ORG + IFNEG .-200 < ORG .-SYNC&7600+200+SYNC > + SETCLK, 0 /TRAP HERE TO START CLK + /THIS ROUT HANDLES BOTH + /DK8ES AND KW12A. + CLLR /STOP KW AND SET MODE 0; + /NOP FOR DK. + CLEN /CLR KW12 ENABLE OR + /READ DK ENABLE. + CLA + TAD P7540 /TOGGLE KW MODE 0 TO 1 TO + CLLR /CLR CLK COUNTER, OR SET + /DK ENABLE BITS, RATE FOR + CLA CMA /BOTH NOW=7=STOP. + CLZE /CLR ALL DK ENABLE BITS, + CLSA /CLR STATUS OF BOTH, ALL + CLA /IS NOW CLEAR. + TAD FCNTBL+1 /SET PTR TO CLKTBL FOR + /SETTING OF ENABLE REGS. + TAD CPTYP /=0 IF PDP8 =1 IF PDP12 + DCA FCNPTR /TBL ENTRIES ALTERNATE + /FOR 8 AND 12. CPTYP SETS + /PTR TO 1ST 8 OR 1ST 12 + /ENTRY + TAD IDOCLK /(AC=JMP AROUND). THE + /FOLLOWING IS ONCE ONLY + /CODE. THESE LOCS ARE + /SUBSEQUENTLY USED AS + /OPERANDS + DCA .-1 + /THE TAG "ISVBIT" MUST BE + /IN FRONT OF THE STRIG + /FLAGS (STFLG) TO COVER + /THE ILLEGAL CASE OF + /STRIG 0 IN A FORT CALL + /TO SYNC. +ISVBIT, TAD CPTYP /(AC=0,1) MAKE THE INST + /RAR CLL (FOR DK) OR THE + /INST RTR CLL FOR IDOCLK; +STFLG, RAL CLL /BECAUSE STATUS BITS FOR + TAD RARCLL /STRIGS DIFFER ON DK,KW. + DCA LOP2+1 /SEE SUB IDOCLK. + /THE ABOVE 3 LOCS ARE + /SCHMITT TRIGGER FLAGS. + /THE ORDER IS S1,S2,S3 + /FOR PDP8 AND S3,S2,S1 + /FOR PDP12. THE MAIN + /REASON FOR REVERSING + /THE ORDER IS BECAUSE + /ENGINEERS NEVER CONSULT + /PROGRAMMERS WHEN THEY + /ARE BUILDING NEW + /HARDWARE (CHK THE STATUS + /BITS FOR DK AND KW). + JMS% KONQI+1 /PUT CLOCK ON THE +ITMP0, CLSK /INTERRUPT QUE + /VIA ONQI. +CLENAB, ADDR IDOCLK /THIS LOC WILL HOLD THE + /ENABLE BITS FOR DK,KW +AROUND, TAD RATE /(AC=0,2,3,4,5,6) RATE IS + /SET BY FPP + RTR CLL /START TO POSITION RATE + RAR /BITS. B3-B5 FOR DK + /B0-B2 FOR KW + TAD CPTYP /(THIS IS TRICKY) NEED + RAR /CPTYP IN LNK BECAUSE + /POSITION OF RATE BITS + /DIFFER FOR DK KW. + TAD% FCNPTR /AC="STANDARD" + /ENABLE BITS FOR DK,KW. + SZL /IF ITS A KW THE RATE AND + /AND STND BITS ARE ALREADY + /POSITIONED AS FOLLOWS: + /RRR011000000 + /B0-B3 AND B5 WILL GO TO + /KW CONTROL. B4,B5 WILL + /GO TO ENABLE. B3 IS ADC + /ON OVRFLO AND MAY BE SET + /BELOW. B5 ON CONTROL IS + /MODE 1. B4 AND B5 ON + /ENABLE ARE BUFF PRESET TO + /CLOCK COUNTER AND INTRUPT + /ON OVRFLO RESPECTIVELY. + JMP NOBIT-1 /ITS KW GO PUT IN CLENAB. + RTR /ITS DK; POSITION RATE TO + RAR /B3-B5. NOTE THAT THE LNK + /(CPTYP=0) IS BEING USED. + CMA /NOTE ALSO THAT THE RATE + /AND STND BITS ARE THE 1S + /COMP. OF WHAT THEY SHOULD + /BE, IE CPTYP=LNK=0 + /BECOMES + /B2=1 OF ENABLE=BUFF + /PRESET TO CLK CNTR ON + /OVERFLO. LOOK AT THE RATE + /BITS IN THE HANDBOOK FOR + /BOTH DK,KW. R2,R5 + /FOR DK IS 100HZ, 100KHZ + /RESPECTIVELY. R2,R5 FOR + /KW IS 100KHZ,100HZ. + /1S COMP.OF 2=5 ETC. + /SMARTEN UP STEVE! + /THE FINAL VALUE OF THE + /STND DK ENABLE BITS (1ST + /ENTRY IN CLKTBL) IS LEFT + /AS AN EXERCISE FOR THE + /PROGRAMMER. + JMP NOBIT-1 /GO PUT IN CLENAB +LOP1, RAR CLL /ROT 1 FCN BIT INTO LNK. + /B7=EXT CLK AND IS + /IGNORED HERE. B8=ADC ON + /OVRFLO, B9-B11 ARE STRIG3 + /-STRIG1 RESP. BX=1=ENABLE + /FCN. 0=DISABLE + DCA FCNWD /PUT IT BACK (FCNWD IS + /SET BY FPP) + SNL /ENABLE FCN ? + JMP NOBIT /NO + TAD% FCNPTR /GET BITS FROM THE MAGIC + TAD CLENAB /TABLE. + DCA CLENAB /UPDATE ENABLE WORD. +NOBIT, ISZ FCNPTR /ADV TO NEXT + ISZ FCNPTR /TBL ENTRY. + TAD FCNWD /WHEN FCNWD GOES TO 0 + AND P17 /WE ARE ALL DONE. + /THE "AND" IS DONE TO + /PROTECT AGAINST A BAD + /ARG FROM THE FORT CALL. + /IN A FRIENDLY ENIVORN, + /ITS NOT NECESSARY. + /NEVER TRUST A FORTRAN + /"PROGRAMMER". +P7540, SMA SZA /SMA IS SUPERFLOUS TO + /THE ROUT; BUT IT + /CREATES A NICE CONST. + JMP LOP1 /MORE TO DO + DCA STFLG /CLR THE SCHMITT + DCA STFLG+1 /TRIGGER FLAGS. + DCA STFLG+2 + TAD OVRFLO /SET BUFF PRESET + CIA /(FPP SET THIS ARG) + CLAB + CLA + TAD CLENAB /THIS IS FOR KW ONLY. + AND P377 /AC=3XX. 3= OR BUFF PRE + /INTO CLK CNTR AND ENAB + /INT ON OVRFLO. + /XX ARE THE STRIGS. + CLEN /SET KW ENABLE OR + CLA /READ DK ENABLE. + DCA OVRCNT+1 /CLR NUM OF CLK OVRFLOS + DCA OVRCNT /SINCE TIME 0. + TAD CPTYP /NEED TYPE IN ORDER TO +RARCLL, RAR CLL /ISOLATE CONTROL + TAD CLENAB /BITS FOR + SZL /KW ? + AND P7540 /YES, B0-B2 IS RATE, + /B3 IS ADC, B5 IS BUFF + /PRE TO CLK CNTR ON + /OVRFLO, B6 IS MOX NIX. + /IF DK ALL BITS MAY HAVE + /MEANING + CLLR /START THE CLOCK + CLA + CIF CDF + JMP% SETCLK /RTN TO RTS + DOSYNC, 0 /HERE TO DISPOSITION A + /A SCHMITT TRIGGER. + TAD CPTYP /DK AND KW FLAGS ARE IN + RAR CLL /REVERSE ORDER. IF DK + /ARG IS OK; IF KW THEN + /MUST SET 1=3, 2=2, 3=1 + /TO GET INDEX TO + /CORRECT FLAG. + TAD FCNWD /=REQUESTED STRIG=1,2,3 + /(SET BY FPP) + SZL /DK ? + CIA /NO KW + AND P3 /IE 1 GOES TO -1 GOES + /TO 3 ETC. "AND" ALSO + /INSURES RANGE IS 0-3. + /IF ARG IS 0 RESULT IS + /ALWAYS 0. + TAD KSTFLG+1 /GET PTR TO FLAG + DCA SETCLK + TAD% SETCLK /FLAG=0 IF TRIG HAS NOT + /TRIPPED SINCE THE LAST + /CALL TO SYNC; =1 + /OTHERWISE IE RTN 0=FALSE + DCA FCNWD /,1=TRUE (FPP WILL PICK + / UP FCNWD) + DCA% SETCLK /CLR FLAG ANYWAY + CIF CDF + JMP% DOSYNC /RTN TO RTS + IDOCLK, JMP AROUND /HERE ON CLOCK INTERRUPT + /(JMP AROUND IS A ONCE + /ONLY CONSTANT). + TAD KSTFLG+1 /SET PTR TO STRIG FLAGS. + DCA ITMP0 + CLSA /GET CLOCK BITS. + DCAZ CSTAT /SAVE THEM FOR SOME + TADZ CSTAT /BODY ELSE. + SPA /OVER FLOW ? + ISZ OVRCNT+1 /YES BUMP LO ORD CNTR + SKP + ISZ OVRCNT /BUMP HI ORD + JMP DOTRIG /(HI ORD ISZ SKP IS + /HARMLESS) +LOP2, ISZ ITMP0 /ADV STRIG FLAG PTR. + RAR CLL /(OR RTR CLL IF KW) + /IE PUT STRIG BIT IN LNK. + /IF DK THE ORDER OF + /INTERROGATION IS S1,S2,S3 + /IF KW THE ORDER IS S3, + /S2,S1. THE STATUS BITS + /FOR DK ARE ADJACENT IE + / B9(S3),B10(S2),B11(S1) + /FOR KW ITS EVERY OTHER, + /B6(S1),B8(S2),B10(S3). + DCA ISVBIT /SAVE WHATS LEFT. + RAL /COPY LNK INTO FLAG IF=1 + SZA /IE DONT CLR FLAG WHEN + DCA% ITMP0 /ITS SET. + TAD ISVBIT +DOTRIG, AND P377 /THE "AND" INSURES THAT + /THE HI ORD BITS ARE + /CLRED SO THAT ISVBIT + /GOES TO 0 WHEN ALL + /STRIGS HAVE BEEN + /DISPOSITIONED. IE + /CLR OVRFLO BIT FOR DK,KW + /AND CLR PRE-EVENT BIT + /ON KW IF IT IS SET + SZA /DONE ? + JMP LOP2 /NO + TAD #CLINT /CALL USER EXTENDED + SZA CLA /CLOCK ROUT ? + JMS% #CLINT+1 /YES + JMP% IDOCLK /RTN TO IHANDL + FCNPTR, +OVRCNT, +KONQI, ADDR ONQI +P17, 17 +P377, 377 +FCNWD, 0 /FPP XRS +CPTYP, 0 +RATE, 0 +P1, 1 +P2, 2 +OVRFLO, +FCNTBL, ADDR CLKTBL +KSTFLG, ADDR STFLG-1 + ENTRY #CLINT +#CLINT, 0;0 + ENTRY TIME /FIGURE WHAT TIME IT IS +TIME, JSA SETUP + FLDA RPTR /=27;X;X IS USED TO FLOAT + STARTD + FLDA# OVRCNT /NUM OF CLK OVRFLOS SINCE + STARTF /TIME 0 + FNORM + FMUL TOVR /=NUM OF BASIC TICKS PER + /CLOCK OVER FLOW. + /FAC=NUM OF TICKS SINCE + /TIME 0. + FDIV% RPTR,RATE /DIV BY BASIC RATE IN HZ + /OR 1 IF EXTERNAL CLK. + FSTA% FTMP0 /GIVE ANS TO CALLER, ALSO + /LEAVE ANS IN FAC IN + /CASE TIME WAS A FCN + /CALL. ANS=ELAPSED TIME IN + /SECONDS SINCE TIME 0 OR + /NUM OF EXTERNAL UNIT + JA GOBAK /TICKS + diff --git a/sw/f4/FRTSRC/clog.ra b/sw/f4/FRTSRC/clog.ra new file mode 100644 index 0000000..995e613 --- /dev/null +++ b/sw/f4/FRTSRC/clog.ra @@ -0,0 +1,81 @@ +/ +/ C L O G +/ - - - - +/ +/ VERSION 5A 4-27-77 PT +/ +/COMPLEX LOG ROUTINE +/ +/ENTER + EXIT IN COMPLEX +/ +/Z=X+IY +/LOG(Z)=LOG(ABS(Z))+I*THETA +/ABS(Z)=SQRT(X*X+Y*Y) +/THETA=ATAN(Y/X) +/ +/CALLS REAL SQRT,LOG,ATAN2 +/ + SECT CLOG + JA #CLOG + DPCHK + TEXT +CLOG + +CLOGXR, SETX XR + SETB BP + JA .+3 +BP, F 0.0 +XR, F 0.0 + F 0.0 +ARG, F 0.0 + F 0.0 + ORG 10*3+BP + FNOP + JA CLOGXR + 0 +RT, JA . + BASE 0 +#CLOG, STARTD + FLDA 10*3 + FSTA RT + FLDA 0 + SETB BP + SETX XR + BASE BP + LDX 1,1 + FSTA BP + FLDA% BP,1 + FSTA BP + STARTE + FLDA% BP + FSTA ARG + STARTF + EXTERN ATAN2 + JSR ATAN2 + JA CL1 + JA ARG+3 /ATAN(Y/X) + JA ARG +CL1, FSTA ETEMP + FLDA ARG + FMULM ARG + FLDA ARG+3 + FMUL ARG+3 /X*X+Y*Y + FADD ARG + FSTA ARG + EXTERN SQRT + JSR SQRT /TAKE SQRT + JA CL2 + JA ARG +CL2, FSTA ARG + EXTERN ALOG /ALOG(ABS(Z)) + JSR ALOG + JA CL3 + JA ARG +CL3, FSTA ARG /REAL PART + FLDA ETEMP /IMAGINARY PART + FSTA ARG+3 + STARTE + FLDA ARG + FSTA #CAC + JA RT + EXTERN #CAC +ETEMP, F 0.0 + diff --git a/sw/f4/FRTSRC/cmplx.ra b/sw/f4/FRTSRC/cmplx.ra new file mode 100644 index 0000000..a1886ff --- /dev/null +++ b/sw/f4/FRTSRC/cmplx.ra @@ -0,0 +1,51 @@ +/ +/ C M P L X +/ - - - - - +/ +/ VERSION 5A 4-27-77 PT +/ +/ENTER IN REAL,EXIT IN COMPLEX +/CMPLX(X,Y) +/Z=X+IY +/ + SECT CMPLX + JA #CMPLX + DPCHK + TEXT +CMPLX + +CMPXR, SETX XR + SETB BP +BP, F 0.0 +XR, F 0.0 +PTR1, F 0.0 +ARG, F 0.0 + F 0.0 + ORG 10*3+BP + FNOP + JA CMPXR + 0 +RT, JA . + BASE 0 +#CMPLX, STARTD + FLDA 10*3 + FSTA RT + FLDA 0 + SETB BP + SETX XR + BASE BP + LDX 1,1 + FSTA BP + FLDA% BP,1 + FSTA PTR1 /ADDR OF X + FLDA% BP,1+ + FSTA BP /ADDR OF Y + STARTF + FLDA% PTR1 + FSTA ARG /X + FLDA% BP + FSTA ARG+3 /Y + STARTE + FLDA ARG /X+IY + FSTA #CAC /SAVE IN CMPLX AC + JA RT + EXTERN #CAC + diff --git a/sw/f4/FRTSRC/cos.ra b/sw/f4/FRTSRC/cos.ra new file mode 100644 index 0000000..2bc39bd --- /dev/null +++ b/sw/f4/FRTSRC/cos.ra @@ -0,0 +1,48 @@ +/ +/ +/ C O S +/ - - - +/ +/SUBROUTINE COS(X) +/ +/ VERSION 5A 4-27-77 PT +/ + SECT COS + JA #COS + TEXT +COS + +COSXR, SETX XRCOS + SETB BPCOS +BPCOS, FNOP + 0 + 0 +XRCOS, F 0.0 +COS1, F 0.0 +FPI2CS, 1 /PI DIVIDED BY 2 + 3110 + 3755 + ORG 10*3+BPCOS + FNOP + JA COSXR + 0 +COSRTN, JA . + BASE 0 +#COS, STARTD + FLDA 10*3 + FSTA COSRTN + FLDA 0 + SETX XRCOS + SETB BPCOS + BASE BPCOS + LDX 1,1 + FSTA BPCOS + FLDA% BPCOS,1 /ADDR OF X + FSTA BPCOS + STARTF + FLDA% BPCOS /GET X + FADD FPI2CS /ADD IN PI OVER 2 + FSTA COS1 + EXTERN SIN + JSR SIN /AND CALL THE SIN + JA COSRTN + JA COS1 + diff --git a/sw/f4/FRTSRC/cosd.ra b/sw/f4/FRTSRC/cosd.ra new file mode 100644 index 0000000..021d4fa --- /dev/null +++ b/sw/f4/FRTSRC/cosd.ra @@ -0,0 +1,51 @@ +/ +/ +/ +/ C O S D +/ - - - - +/ +/SUBROUTINE COSD(X) +/ +/ VERSION 5A 4-27-77 PT +/ + SECT COSD + JA #COSD + TEXT +COSD + +COSDXR, SETX XRCOSD + SETB BPCOSD +BPCOSD, FNOP + 0 + 0 +XRCOSD, F 0.0 +COSD90, F 90. +COSD91, 6 + 3451 + 3560 +COSD1, F 0.0 + ORG 10*3+BPCOSD + FNOP + JA COSDXR + 0 +CSDRTN, JA . + BASE 0 +#COSD, STARTD + FLDA 10*3 + FSTA CSDRTN + FLDA 0 + SETX XRCOSD + SETB BPCOSD + BASE BPCOSD + LDX 1,1 + FSTA BPCOSD + FLDA% BPCOSD,1 /ADDR OF X + FSTA BPCOSD + STARTF + FLDA% BPCOSD /GET X IN DEGREES + FADD COSD90 /ADD IN 90 + FDIV COSD91 /CONVERT TO REDIANS + FSTA COSD1 + EXTERN SIN + JSR SIN /CALL THE SINE + JA CSDRTN + JA COSD1 + diff --git a/sw/f4/FRTSRC/cosh.ra b/sw/f4/FRTSRC/cosh.ra new file mode 100644 index 0000000..3715b77 --- /dev/null +++ b/sw/f4/FRTSRC/cosh.ra @@ -0,0 +1,83 @@ +/ +/ VERSION 5A 4-27-77 PT +/ +/ C O S H +/ - - - - +/ +/SUBROUTINE COSH(X) +/ +/ VERSION 5A 4-27-77 PT + SECT COSH + JA #COSH +COSHE, FLDA COSHB /GIVE INFINITY IN CASE OF NO REC + EXTERN #ARGER + TRAP4 #ARGER + TEXT +COSH + +COSHXR, SETX XRCOSH + SETB BPCOSH +BPCOSH, FNOP + 0 + 0 +XRCOSH, F 0.0 +COSH7, F 0.0 +COSH8, F 0.0 +F1COSH, F 1. +F2COSH, F 2. + ORG 10*3+BPCOSH + FNOP + JA COSHXR + 0 +CSHRTN, JA . +/ +COSHLG, 0 + 2613 + 4412 +/ +COSHB, 3777 + 3777 + 7777 +/ +/ +COSH1, F 88.029 /LIMIT FACTOR. + BASE 0 +#COSH, STARTD + FLDA 10*3 + FSTA CSHRTN + FLDA 0 + SETX XRCOSH + SETB BPCOSH + BASE BPCOSH + LDX 1,1 + FSTA BPCOSH + FLDA% BPCOSH,1 /ADDR OF X + FSTA BPCOSH + STARTF + FLDA% BPCOSH /GET X + FSTA COSH8 /SAVE ARGUMENT + JGE .+3 /ABS(X) + FNEG + FSTA COSH7 + FSUB COSH1 /TEST FOR LIMITS. + JGE COSHBG + EXTERN EXP + JSR EXP /EXP(X) + JA .+4 + JA COSH8 + FSTA COSH7 + FLDA F1COSH /1. + FDIV COSH7 / 1./EXP(X) + FADD COSH7 / EXP(X)+1./EXP(X) + FDIV F2COSH / (EXP(X)+1./EXP(X))2. + JA CSHRTN /AND THAT IS THE DEFINITION OF COSH. +/ +/ +COSHBG, FSUB COSHLG /SEE IF TOO BIG + JGT COSHE /YEP. ERROR + FADD COSH1 /READD IN SUBTRACTION FACTOR. + FSTA COSH8 / EXP(ABS(X)-LN(2)) + EXTERN EXP + JSR EXP + JA .+4 + JA COSH8 + JA CSHRTN / A VERY GOOD APPROXIMATION. + diff --git a/sw/f4/FRTSRC/csin.ra b/sw/f4/FRTSRC/csin.ra new file mode 100644 index 0000000..cc2b02b --- /dev/null +++ b/sw/f4/FRTSRC/csin.ra @@ -0,0 +1,98 @@ +/ +/ C S I N +/ - - - - +/ +/ VERSION 5A 4-27-77 PT +/ +/COMPLEX SIN AND COS ROUTINE +/ +/CCOS(X+I*Y)=COS(X)*COSH(Y)-SIN(X)*SINH(Y) +/ +/CSIN(X+I*Y)=SIN(X)*COSH(Y)+COS(X)*SINH(Y) +/ +/CALLS SIN,COS,COSH,SINH +/ + SECT CSIN + JA #CSIN + DPCHK + TEXT +CSIN + +CSINXR, SETX XR + SETB BP + JA .+3 +BP, F 0.0 +XR, F 0.0 +ARG, F 0.0 + F 0.0 +C, F 0.0 +CH, F 0.0 +S, F 0.0 + ORG 10*3+BP + FNOP + JA CSINXR + 0 + +RT, JA . +SH, F 0.0 + BASE 0 +#CSIN, SETX XR + LDX 0,0 +COM, STARTD + FLDA 10*3 + FSTA RT + FLDA 0 + SETB BP + BASE BP + LDX 1,1 + FSTA BP + FLDA% BP,1 + FSTA BP + STARTE + FLDA% BP + FSTA ARG + STARTF + EXTERN COS + JSR COS + JA CSA + JA ARG /COS(X) +CSA, FSTA C + EXTERN SIN + JSR SIN + JA CSB + JA ARG +CSB, FSTA S /SIN(X) + EXTERN SINH + JSR SINH + JA CSC + JA ARG+3 +CSC, FSTA SH /SINH(Y) + EXTERN COSH + JSR COSH + JA CSD + JA ARG+3 +CSD, FSTA CH /COSH(Y) +/XR0 IS 0 FOR CSIN AND 1 FOR CCOS + JXN CALCOS,0 + FLDA S + FMUL CH + FSTA ARG /SIN*COSH + FLDA C +CSE, FMUL SH + FSTA ARG+3 /COS*SINH + STARTE + FLDA ARG + FSTA #CAC + JA RT + EXTERN #CAC +/DO COS +/ +CALCOS, FLDA C + FMUL CH + FSTA ARG + FLDA S + FNEG + JA CSE + ENTRY CCOS +CCOS, SETX XR + LDX 1,0 + JA COM + diff --git a/sw/f4/FRTSRC/csqrt.ra b/sw/f4/FRTSRC/csqrt.ra new file mode 100644 index 0000000..161769d --- /dev/null +++ b/sw/f4/FRTSRC/csqrt.ra @@ -0,0 +1,92 @@ +/ +/ C S Q R T +/ - - - - - +/ +/ VERSION 5A 4-27-77 PT +/ +/COMPLEX SQUARE ROOT ROUTINE +/ENTER+ EXIT IN COMPLEX +/Z=X+IX +/ +/SQRT(Z)=SQRT(R)*COS(THETA)+SIN(THETA)) +/ +/R=SQRT(X*X+Y*Y) +/THETA=ATAN2(Y/X)/2 +/ +/CALLS SQRT,ATAN2,SIN,COS +/ + SECT CSQRT + JA #CSQRT + DPCHK + TEXT +CSQRT + +CSQRTX, SETX XR + SETB BP + JA .+3 +BP, F 0.0 +XR, F 0.0 +ARG, F 0.0 + F 0.0 +THETA, F 0.0 +FP2, F 2.0 + ORG 10*3+BP + FNOP + JA CSQRTX + 0 +RT, JA . + BASE 0 +#CSQRT, STARTD + FLDA 10*3 + FSTA RT + FLDA 0 + SETB BP + SETX XR + BASE BP + LDX 1,1 + FSTA BP + FLDA% BP,1 + FSTA BP + STARTE + FLDA% BP + FSTA ARG + STARTF + EXTERN ATAN2 + JSR ATAN2 /ATAN(Y/X) + JA CSA + JA ARG+3 + JA ARG +CSA, FDIV FP2 /ATAN/2 + FSTA THETA + FLDA ARG + FMULM ARG /X*X + FLDA ARG+3 + FMUL ARG+3 /Y*Y + FADD ARG /X*X+Y*Y + FSTA ARG + EXTERN SQRT /SQRT(X*X+Y*Y) + JSR SQRT + JA CSB + JA ARG +CSB, FSTA ARG /R + EXTERN SQRT + JSR SQRT + JA CSC + JA ARG /SQRT(R) +CSC, FSTA ARG /SQRT(R) + EXTERN SIN + JSR SIN /SIN(THETA/2) + JA CSD + JA THETA +CSD, FMUL ARG /*SQRT(X) + FSTA ARG+3 + EXTERN COS + JSR COS /COS(THETA/2)*SQRT(R) + JA CSE + JA THETA +CSE, FMUL ARG + FSTA ARG + STARTE + FLDA ARG + FSTA #CAC + JA RT + EXTERN #CAC + diff --git a/sw/f4/FRTSRC/dabs.ra b/sw/f4/FRTSRC/dabs.ra new file mode 100644 index 0000000..fcdf597 --- /dev/null +++ b/sw/f4/FRTSRC/dabs.ra @@ -0,0 +1,21 @@ +/ +/ VERSION 5A 4-27-77 PT +/ + SECT DABS + BASE 0 + DPCHK +DPABS, FLDA 0 /GET RETURN ADDRESS + STARTD + FSTA RETRN + FADD TWO /GET ADDRESS OF ARG P7S + FSTA 3 + FLDA% 3 + FSTA 3 + STARTE + FLDA% 3 + JGE RETRN /POSITIVE, SKIP NEGATE + FNEG +RETRN, 0;0 +TWO, 0;2 + END + diff --git a/sw/f4/FRTSRC/datan.ra b/sw/f4/FRTSRC/datan.ra new file mode 100644 index 0000000..fcd488b --- /dev/null +++ b/sw/f4/FRTSRC/datan.ra @@ -0,0 +1,203 @@ +/ +/ +/ SUBROUTINE DATAN(X) +/ +/ VERSION 5A 4-26-77 (MH) +/ +/X,THE ARGUMENT, IS REDUCED TO +/01.0 THEN ATAN(X)=PI/2 - ATAN(1/X) +/IF .51? + FLDA DATFP1 /YES + FDIV X /X=1/X + LDX 0,1 /SET FLAG + FSTA X +DATB, FLDA X + FSUB DATP5 />= .5 + JLT DATC + FLDA X /X=(2X-1)/(X+2) + FADD DATFP2 + FSTA DT1 /TEMP + FLDA X + FMUL DATFP2 + FSUB DATFP1 + FDIV DT1 + FSTA X + FLDA ATN1S2 /C0=ATAN(1/2) + FSTA C0 +/COMPUTE ATAN USING ALGORITHM +DATC, FLDA X + FMUL X + FSTA Z /Z=X*X + FLDA Z + FADD DATB3 /Z+B3 + FSTA DT1 + FLDA DATA3 + FDIV DT1 /A3/(Z+B3) + FADD DATB2 + FADD Z /ADD Z+B2 + FSTA DT1 /TEMP + FLDA DATA2 /A2/TEMP + FDIV DT1 + FADD DATB1 + FADD Z /ADD Z +B1 + FSTA DT1 /TEMP + FLDA DATA1 /A1/TEMP + FDIV DT1 + FADD DATB0 /ADD Z+B0 + FADD Z + FSTA DT1 + FLDA LAMBDA /LAMBDA*X + FMUL X + FDIV DT1 /DIV BY THE REST + FADD C0 + FSTA X + JXN DATD,1 /WAS X>1 ORIGINALLY? + FLDA PIS2 /Y ATAN(X)=PI/2-ATAN(X) + FSUB X +DATD, JXN DATRTN,0 /WAS X<0? + FNEG /Y + JA DATRTN +DATGO, FLDA X + JA DATD + diff --git a/sw/f4/FRTSRC/datan2.ra b/sw/f4/FRTSRC/datan2.ra new file mode 100644 index 0000000..7ebae2c --- /dev/null +++ b/sw/f4/FRTSRC/datan2.ra @@ -0,0 +1,91 @@ +/ +/ +/ +/ D A T A N 2 +/ - - - - - - +/ +/SUBROUTINE DATAN2(Y,X) +/ +/ VERSION 5A 4-27-77 PT +/ + SECT DATAN2 + JA #DATN2 + DPCHK + TEXT +DATAN2+ +ATN2XR, SETX XRATN2 + SETB BPATN2 +BPATN2, FNOP + 0 + 0 +XRATN2, F 0.0 +YCOR, F 0.0 + 0;0;0 +XCOR, F 0.0 + 0;0;0 + ORG 10*3+BPATN2 + FNOP + JA ATN2XR + 0 +AT2RTN, JA . +FPIAT2, 2 + 3110 /PI + 3755 + 2421 + 0264 + 3016 +ATPI, 0001 + 3110 /PI/2 + 3755 + 2421 + 0264 + 3016 + BASE 0 +#DATN2, STARTD + FLDA 10*3 + FSTA AT2RTN + FLDA 0 + SETX XRATN2 + SETB BPATN2 + BASE BPATN2 + LDX 1,1 + FSTA BPATN2 + FLDA% BPATN2,1 /ADDR OF Y + FSTA YCOR + FLDA% BPATN2,1+ /ADDR OF X + FSTA XCOR + STARTE + FLDA% YCOR + FSTA YCOR /SAVE FOR A SECOND + LDX 1,2 /POSITIVE Y + JEQ ATN0 + JGT ATN1 + LDX 0,2 +ATN1, FLDA% XCOR /GET X - THE QUADRAND + FSTA XCOR /+MOVE IT TO A SAFE PLACE + JEQ ATASP + FLDA YCOR /Y/X + FDIV XCOR + FSTA YCOR + EXTERN DATAN + JSR DATAN /CALL ATAN + JA .+4 /TAKE ARCTAN OF Y/X + JA YCOR + FSTA YCOR /SAVE IT AWAY + JGE A2 /SKIP IF 1ST OR 3RD QUADS + FADD FPIAT2 /ADD PI FOR 4TH QUAD + FSTA YCOR +A2, JXN AT2RTN,2 /DONE IF 1 OR 4 Q + FLDA YCOR + FSUB FPIAT2 /2ND OR 3RD Q + JA AT2RTN +ATASP, FLDA ATPI /PI/2 + JXN ATNG,2 + FNEG +ATNG, JA AT2RTN +ATN0, FLDA% XCOR + JLT POSX + FCLA /X POS, ANS =0 + JA AT2RTN +POSX, FLDA FPIAT2 /X LT 0, ANS = PI + JA AT2RTN + diff --git a/sw/f4/FRTSRC/date.ra b/sw/f4/FRTSRC/date.ra new file mode 100644 index 0000000..875cd4d --- /dev/null +++ b/sw/f4/FRTSRC/date.ra @@ -0,0 +1,91 @@ +/ +/ VERSION 5A 4/28/77 PT +/ + SECT8 DATE + JA #ST + EXTERN #DATE +#XR, ORG .+10 + TEXT +DATE + +#RET, +#BASE, ORG .+3 +MONTH, ORG .+3 +DAY, ORG .+3 +YEAR, ORG .+3 +TEMP, ORG .+3 +DATADR, 0 + JA #DATE-1 /ADDRESS OF PS8 DATE WORD + ORG 10*3+#BASE + FNOP + JA #RET + 0 +DRTN, JA . + BASE 0 +NEWDAT, 0 + CDF 0 + TAD% BIPCCL + AND BITMSK + CLL RTR + RTR + DCA DATEMP + CDF CIF 0 + JMP% NEWDAT +BIPCCL, 7777 +BITMSK, 600 +#ST, STARTD + 0210 + FSTA DRTN + 0200 + BASE #BASE + SETX #XR + SETB #BASE + LDX 0,1 + FSTA #BASE + FLDA% #BASE,1+ + FSTA MONTH + FLDA% #BASE,1+ + FSTA DAY + FLDA% #BASE,1+ + FSTA YEAR + FLDA% DATADR /GET THE PS-8 DATE WORD + FSTA TEMP /SAVE IT + FCLA + FSTA TEMP,0 /ZERO EXPONENT AND HIGH HALF OF MANTISSA + LDX 10,1 /SHIFT COUNT + FLDA TEMP /GET IT BACK + ALN 1 /ISOLATE THE MONTH + ATX 1 /SAVE THE MONTH + LDX -4,2 /DAY SHIFT COUNT + FLDA TEMP /GET BACK THE DATE + ALN 2 /SHIFT MONTH BITS INTO + /HIGH HALF OF MANTISSA + FSTA TEMP /SAVE THIS + FCLA + FSTA TEMP,0 /ISOLATING DAY/YEAR BITS + FLDA TEMP /GET THEM BACK + LDX 7,2 /NOW ISOLATE DAY + ALN 2 + ATX 2 /AND SAVE IT IN 2 + FLDA TEMP /GET DAY/YEAR BITS + LDX -5,3 /PREPARE TO REMOVE DAY BITS + ALN 3 /BY SHIFTING THEM INTO HIGH HALF OF MANTISSA + FSTA TEMP /SAVE THEM + FCLA + FSTA TEMP,0 /ZERO DAY BITS + FLDA TEMP /RESTORE YEAR BITS + LDX 11,3 /SHIFT BACK + ALN 3 + ATX 3 /PUT THEM INTO XR 3 + TRAP4 NEWDAT + STARTF /RE-ENTER F MODE + XTA 1 /GET MONTH + FSTA% MONTH /RETURN IN ARG + XTA 2 /NOW DAY + FSTA% DAY + ADDX 3662,3 /MAKE IT + 1970 + ADDX 0,3 + DATEMP=.-1 + XTA 3 /NOW YEAR + FSTA% YEAR + JA DRTN /RETURN + END + diff --git a/sw/f4/FRTSRC/dble.ra b/sw/f4/FRTSRC/dble.ra new file mode 100644 index 0000000..46c42e8 --- /dev/null +++ b/sw/f4/FRTSRC/dble.ra @@ -0,0 +1,27 @@ +/ SUBROUTINE DBLE - REAL TO DBL PREC +/ +/ VERSION 5A 4-27-77 PT +/ + SECT DBLE + BASE 0 + DPCHK + FLDA 0 + STARTD + FSTA RETRN /SAVE RETURN + FADD TWO /ADDR OF ARG POINTER + FSTA 3 + FLDA% 3 /ADDR OF ARG + FSTA 3 + STARTF + FLDA% 3 /GET ARG + FSTA DTEMP + FCLA + FSTA DTEMP+3 /0 FOR LAST 3 WORDS + STARTE + FLDA DTEMP +RETRN, 0;0 /FLOAT IS A NOP +TWO, 0;2 +DTEMP, F 0.0 + F 0.0 + END + diff --git a/sw/f4/FRTSRC/dcos.ra b/sw/f4/FRTSRC/dcos.ra new file mode 100644 index 0000000..90fba9d --- /dev/null +++ b/sw/f4/FRTSRC/dcos.ra @@ -0,0 +1,57 @@ +/ +/ +/ D C O S +/ - - - - +/ +/SUBROUTINE DCOS(X) +/ +/ VERSION 5A 4-27-77 PT +/ + SECT DCOS + JA #DCOS + DPCHK + TEXT +DCOS + +COSXR, SETX XRCOS + SETB BPCOS +BPCOS, FNOP + 0 + 0 + 0 + 0 + 0 +XRCOS, F 0.0 + F 0.0 +COS1, F 0.0 + F 0.0 +FPI2CS, 1 /PI DIVIDED BY 2 + 3110 + 3755 + 2421 + 0264 + 3016 + ORG 10*3+BPCOS + FNOP + JA COSXR + 0 +COSRTN, JA . + BASE 0 +#DCOS, STARTD + FLDA 10*3 + FSTA COSRTN + FLDA 0 + SETX XRCOS + SETB BPCOS + BASE BPCOS + LDX 1,1 + FSTA BPCOS + FLDA% BPCOS,1 /ADDR OF X + FSTA BPCOS + STARTE + FLDA% BPCOS /GET X + FADD FPI2CS /ADD IN PI OVER 2 + FSTA COS1 + EXTERN DSIN + JSR DSIN /AND CALL THE SIN + JA COSRTN + JA COS1 + diff --git a/sw/f4/FRTSRC/dexp.ra b/sw/f4/FRTSRC/dexp.ra new file mode 100644 index 0000000..842162d --- /dev/null +++ b/sw/f4/FRTSRC/dexp.ra @@ -0,0 +1,266 @@ +/ +/ +/ SUBROUTINE DEXP +/ +/ VERSION 5A 4-26-77 MH +/ +/E^X=2^(X*LOG2(E)) +/E^X=2^(M+F) +/M=INTEGER; F=FRACTION +/ +/2^(M+F)=2^(M+N+R) +/WHERE 0 +/ +/RESTRICTIONS: +/X=0 IMPLIES E^X=1 +/ +/X>88.028 IMPLIES E^X=3377/3377/3777/7777/777/7777 +/ +/X<-88.028 IMPLIES E^X=0 +/ +/ +/ + SECT DEXP + JA #DEXP + DPCHK + TEXT +DEXP + +/ +DEXPXR, SETX XRDEXP + SETB BPDEXP +/ +/BEGINNING OF BASE PAGE +/ +BPDEXP, F 0.0 +XRDEXP, F 0.0 +X, F 0.0 + F 0.0 +/ + ORG 10*3+BPDEXP + FNOP + JA DEXPXR + 0 +DEXRTN, JA . +/ +TOPLIM, 3377 + 3377 + 3777 + 7777 + 7777 + 7777 +M, F 0.0 + F 0.0 +N, F 0.0 + F 0.0 +R, F 0.0 + F 0.0 +LOG2E, 0001 /1.4426950408889634 + 2705 + 2435 + 4512 + 7013 + 7603 +DFP125, 7775 /.125 + 3777 + 7777 + 7777 + 7777 + 7776 +DEXFP1, F 1.0 + F 0.0 +/ +DFR1S8, 0001 /2^1/8 + 2134 + 5340 + 7437 + 2505 + 7302 +DFP2S8, 0001 /2^2/8 + 2301 + 5770 + 1214 + 3334 + 2524 +DFP3S8, 0001 /2^3/8 + 2457 + 7553 + 2515 + 4250 + 4720 +DFP4S8, 0001 /2^4/8 + 2650 + 1171 + 4637 + 6357 + 1425 +DFP5S8, 0001 /2^5/8 + 3053 + 1625 + 0212 + 5174 + 3070 +DFP6S8, 0001 /2^6/8 + 3272 + 1176 + 3126 + 5516 + 5532 +DFP7S8, 0001 /2^7/8 + 3526 + 0143 + 3476 + 7222 + 0722 +/ +/ +DEXA4, 0006 /60.593191717336463 + 3622 + 7666 + 6462 + 2157 + 5534 +DEXB4, 0007 /87.417497202235527 + 2566 + 5341 + 0613 + 6705 + 7214 +DEXC4, 0005 /30.296595858668232 + 3622 + 7666 + 6462 + 2157 + 5546 +DEXD4, 0001 /1.0500 + 2063 + 1463 + 1463 + 1463 + 1462 +DEXH4, 0010 /214.17286814547704 + 3261 + 3040 + 4261 + 5654 + 0240 +DTEMP1, F 0.0 + F 0.0 +DFP2, F 2.0 + F 0.0 +/ + BASE 0 +#DEXP, STARTD + FLDA 10*3 + FSTA DEXRTN + FLDA 0 + SETX XRDEXP + SETB BPDEXP + BASE BPDEXP + LDX 1,1 + LDX 73,2 /FOR ALIGNING + FSTA BPDEXP + FLDA% BPDEXP,1 /ADDRESS OF X + FSTA BPDEXP + STARTE + FLDA% BPDEXP /GET X + LDX 0,0 + JGT DEX1 /CHECK SIGN + FNEG + LDX -1,0 /SET FLAG +DEX1, JNE DEX2 /X=0 + FLDA DEXFP1 /E^0=1 + JA DEXRTN +DEX2, FSTA X + JA DEX4 +DEX3, FCLA + JA DEXRTN /RETURN 0 FOR TOO SMALL +/ +/SET UP M+N+R=X*LOG2(E) +DEX4, FLDA LOG2E + FMULM X + FLDA X + ALN 2 /FIX + FNORM /FLOAT + FSTA M /INTEGER PART + FLDA X + FSUB M + FSTA N /FRACTION + JNE DEX50 /0 IS SPECIAL CASE + FLDA DEXFP1 /1.0 + FSTA N /N + FSTA R /R + JA DEX20 /SKIP +/ +/CALCULATE N+R +DEX50, LDX 0,1 + FLDA N + FSTA R /IF < .125 ALREADY +DEX5, FSUB DFP125 /-.125 + JLT DEX6 /DONE IF .LT. + FSTA R /STORE REMAINDER + ADDX 1,1 /NEXT POWER OF 2 + JA DEX5 /AND AGAIN +/ +/GET N FROM TABLE +DEX6, FLDA DEXFP1,1 + FSTA N +/ +/NOW CALCULATE R + FLDA R /IF R=0 + JNE DEX7 + FLDA DEXFP1 /2^R=1 + FSTA R + JA DEX20 /NO CALCULATION +/ +/ +DEX7, FLDA DEXB4 + FDIV R /(B4/R) + FSTA X + FLDA DEXD4 /D4*R + FMUL R + FADD X /+(B4/R) + FSUB DEXC4 /-C4 + FSTA DTEMP1 + FLDA R + FADD X /R+(B4/R) + FSTA R + FLDA DEXH4 + FDIV R /H4/(R+B4/R) + FADD DTEMP1 + FSTA DTEMP1 + FLDA DEXA4 + FDIV DTEMP1 + FADD DEXFP1 + FSTA R +/ +/CALCULATE 2^M +/ +DEX20, FLDA M + JNE DEX21 + FLDA DEXFP1 + FSTA M + JA DEX30 +DEX21, FNEG + ATX 1 + FLDA DEXFP1 + FSTA M + FLDA DFP2 +DEX22, FMULM M /M*2 + JXN DEX22,1+ +/CALCULATE M*N*R +DEX30, FLDA M + FMUL N + FMUL R + FSTA X + JXN DEX31,0 /WAS X MINUS + JA DEXRTN +DEX31, FLDA DEXFP1 /.1/X IF -X + FDIV X + JA DEXRTN +  diff --git a/sw/f4/FRTSRC/dexp3.ra b/sw/f4/FRTSRC/dexp3.ra new file mode 100644 index 0000000..7038be8 --- /dev/null +++ b/sw/f4/FRTSRC/dexp3.ra @@ -0,0 +1,70 @@ +/ +/ +/ +/ D E X P 3 +/ - - - - - +/ +/SUBROUTINE DEXP3(B,E) FOR DOUBLE TO DOUBLE +/ +/ VERSION 5A 4-26-77 MH +/ + SECT DEXP3 + JA #DEXP3 + DPCHK + EXTERN #ARGER +EXP3ER, TRAP4 #ARGER + TEXT +DEXP3 + +EXP3XR, SETX XREXP3 + SETB BPEXP3 + JA .+3 +BPEXP3, FNOP + 0 + 0 +XREXP3, F 0.0 +EXP31, F 0.0 + F 0.0 +EXP32, F 0.0 + F 0.0 + ORG 10*3+BPEXP3 + FNOP + JA EXP3XR + 0 +XP3RTN, JA . +FP1XP3, F 1. + F 0.0 + BASE 0 +#DEXP3, STARTD + FLDA 10*3 + FSTA XP3RTN + FLDA 0 + SETX XREXP3 + SETB BPEXP3 + BASE BPEXP3 + LDX 1,1 + FSTA BPEXP3 + FLDA% BPEXP3,1 /ADDR OF B + FSTA EXP31 + FLDA% BPEXP3,1+ /ADDR OF E + FSTA EXP32 + STARTE + FLDA% EXP31 /GET B + JEQ XP3RTN /0 ^ X = 0 + FSTA EXP31 /SAVE BASE + FLDA% EXP32 /GET E + JEQ EXP3ON /X ^ 0 = 1 + FSTA EXP32 /SAVE EXPONENT + FLDA EXP31 + JLT EXP3ER /ALL IS NOT WELL + EXTERN DLOG + JSR DLOG /CALL LOG + JA .+4 /TAKE LOG (B) + JA EXP31 + FMUL EXP32 /MULT BY EXPONENT-E + FSTA EXP31 + EXTERN DEXP + JSR DEXP /CALL EXP. + JA XP3RTN + JA EXP31 +EXP3ON, FLDA FP1XP3 + JA XP3RTN + diff --git a/sw/f4/FRTSRC/dim.ra b/sw/f4/FRTSRC/dim.ra new file mode 100644 index 0000000..88cf1c3 --- /dev/null +++ b/sw/f4/FRTSRC/dim.ra @@ -0,0 +1,32 @@ +/ +/ VERSION 5A 4-27-77 PT +/ + SECT DIM + ENTRY IDIM + JA #ST +#XR, ORG .+10 +#BASE, ORG .+3 +A, ORG .+3 +B, ORG .+3 + BASE #BASE +IDIM, +#ST, STARTD + 0210 + FSTA #RTN,0 + 0200 + SETX #XR + SETB #BASE + LDX 0,1 + FSTA #BASE + FLDA% #BASE,1+ + FSTA A + FLDA% #BASE,1+ + FSTA B + STARTF + FLDA% A + FSUB% B + JGE #RTN + FCLA +#RTN, JA . + END + diff --git a/sw/f4/FRTSRC/dlog.ra b/sw/f4/FRTSRC/dlog.ra new file mode 100644 index 0000000..00a6fe7 --- /dev/null +++ b/sw/f4/FRTSRC/dlog.ra @@ -0,0 +1,234 @@ +/ +/ +/ D L O G +/ - - - - +/ +/ VERSION 5A 4-27-77 PT +/ +/LOGE(X) +/ +/X=2^N*F +/ +/LOGE(X) + /= N*LOGE(2)+LOGE(F) +/ +/ + SECT DLOG + JA #DALOG + DPCHK +/ +/IF X<=0 - IT IS AN ERROR + EXTERN #ARGER +DALERR, TRAP4 #ARGER +/ + TEXT +DLOG + +DALXR, SETX XRDAL + SETB BPDAL +BPDAL, F 0.0 +XRDAL, F 0.0 + F 0.0 + ORG 10*3+BPDAL + FNOP + JA DALXR + 0 +DALRTN, JA . +N, F 0.0 + F 0.0 +F, F 0.0 + F 0.0 +DAL1, F 1.0 + F 0.0 +/ +DT7, 7776 /1/7 + 2222 + 2222 + 2222 + 2222 + 2221 +DT6, 7776 /-1/6 + 5252 + 5252 + 5252 + 5252 + 5252 +DT5, 7776 /1/5 + 3146 + 3146 + 3146 + 3146 + 3146 +DT4, 7776 /-1/4 + 4000 + 0 + 0 + 0 + 0 +DT3, 7777 /1/3 + 2525 + 2525 + 2525 + 2525 + 2524 +DT2, 7777 /-1/2 + 4000 + 0 + 0 + 0 + 0 +/ +A0, F 1.84375 + F 0.0 +A1, F 1.65625 + F 0.0 +A2, F 1.500 + F 0.0 +A3, F 1.375 + F 0.0 +A4, F 1.250 + F 0.0 +A5, F 1.1875 + F 0.0 +A6, F 1.09375 + F 0.0 +A7, F 1.03125 + F 0.0 +LA0, 0 /.6118015411059928976 + 2344 + 7603 + 2325 + 4250 + 3144 +LA1, 0 /.5045560107523952859 + 2011 + 2512 + 4551 + 3503 + 7657 +LA2, 7777 /.4054651081081643810 + 3174 + 6217 + 5457 + 7141 + 1370 +LA3, 7777 /.3184537311185346147 + 2430 + 3057 + 0207 + 0573 + 0232 +LA4, 7776 /.2231435513142097553 + 3443 + 7737 + 0746 + 5150 + 4146 +LA5, 7776 /.1718502569266592214 + 2577 + 6301 + 6051 + 7117 + 2356 +LA6, 7775 /.08961215868968712374 + 2674 + 1512 + 1271 + 2655 + 1272 +LA7, 7773 /.030771658666753687 + 3740 + 5154 + 1636 + 0313 + 7764 +D16, F 16.0 + F 0.0 +D8, F 8.0 + F 0.0 +CUM, F 0.0 + F 0.0 +DLOGE2, 0 + 2613 + 4413 + 7676 + 4347 + 5715 +/ +/PICK UP X + BASE 0 +#DALOG, STARTD + FLDA 10*3 + FSTA DALRTN + FLDA 0 + SETX XRDAL + SETB BPDAL + BASE BPDAL + LDX 1,1 + FSTA BPDAL + FLDA% BPDAL,1 /ADDRESS + FSTA BPDAL + STARTE + FLDA% BPDAL /AND X + JLE DALERR /X <= 0 IS ERROR + FSUB DAL1 /SUB 1.0 + JNE DALA + FCLA /LOG(1)=0 + JA DALRTN +/ +DALA, FADD DAL1 /ADD BACK + FSTA XRDAL /STORE AT X +/EXPONENT STORED IN XR0 +/MANTISSA STORED IN XR1-5 +/PICK UP EXP + MULTIPLY BY LOGE(2) +/ + XTA 0 + FMUL DLOGE2 + FSTA N /N*LOGE(2) +/XRDAL IS NOW FRACTION IN RANGE .5<=F<1.0 +/COMPUTE LOG(F) BY +/LOG(F)=LOG(A(K1)*A(K2)...(F))-(LOG(A(K1))+ +/ LOG(A(K2))...) +/FIT F IN A 1/16 RANGE +/I.E. 1/2-9/16,9/16-10/16,ETC. +/MULTIPLY F BY APPROPRIATE A(K) MULTIPLIER +/KEEP RUNNING SUM OF LOG(A(K)) +/CONTINUE UNTIL F>1 + +/ + LDX 0,0 + FLDA XRDAL + FSTA F + FCLA + FSTA CUM +DALB, FLDA F + FMUL D16 /16 REAL PARTS + FSUB D8 /NEED JUST 8 + ATX 1 + FLDA A0,1 /GET MULTIPLIER + FMULM F + FLDA LA0,1 /ADD LOG(A(K)) TO SUM + FADDM CUM + FLDA F + FSUB DAL1 + JLT DALB +/NOW F>1. USE TAYLOR SERIES +/LOG(T)=Z-(Z^2)/2+(Z^3)/3+... WHERE Z=T-1 + FLDA F + FSUB DAL1 /F-1.0 + FSTA F + FMUL DT7 + FADD DT6 + FMUL F + FADD DT5 + FMUL F + FADD DT4 + FMUL F + FADD DT3 + FMUL F + FADD DT2 + FMUL F + FADD DAL1 + FMUL F + FSUB CUM + FADD N + JA DALRTN + diff --git a/sw/f4/FRTSRC/dlog10.ra b/sw/f4/FRTSRC/dlog10.ra new file mode 100644 index 0000000..f08abc3 --- /dev/null +++ b/sw/f4/FRTSRC/dlog10.ra @@ -0,0 +1,56 @@ +/ +/ +/ D L O G 1 0 +/ - - - - - - +/ +/SUBROUTINE DPLOG10(X) +/ +/ VERSION 5A 4-26-77 (MH) +/ + SECT DLOG10 + JA #DLOG10 + DPCHK + TEXT +DLOG10+ +LOGXR, SETX XRLOG + SETB BPLOG + JA .+3 +BPLOG, FNOP + 0 + 0 + 0;0;0 +XRLOG, F 0.0 +LOG1, F 0.0 + 0;0;0 + ORG 10*3+BPLOG + FNOP + JA LOGXR + 0 +LOGRTN, JA . +ALOG1C, 7777 /DP .4342944819032518276 + 3362 + 6754 + 2511 + 5624 + 1612 + BASE 0 +#DLOG10, STARTD + FLDA 10*3 + FSTA LOGRTN + FLDA 0 + SETX XRLOG + SETB BPLOG + BASE BPLOG + LDX 1,1 + FSTA BPLOG + FLDA% BPLOG,1 /ADDR OF X + FSTA BPLOG + STARTE + FLDA% BPLOG /GET X + FSTA LOG1 + EXTERN DLOG + JSR DLOG /CALL ALOG + JA .+4 + JA LOG1 + FMUL ALOG1C /CORRECT FOR THE LOG BASE E. + JA LOGRTN + diff --git a/sw/f4/FRTSRC/dmax1.ra b/sw/f4/FRTSRC/dmax1.ra new file mode 100644 index 0000000..db589ee --- /dev/null +++ b/sw/f4/FRTSRC/dmax1.ra @@ -0,0 +1,42 @@ +/ +/ VERSION 5A 4-27-77 PT +/ + SECT DMAX1 + BASE 0 + DPCHK +DPMAX, SETX XR +MAXCOM, STARTD + FLDA 0 /ADDRESS OF JA .+2+2*N + FSTA 3 + FLDA 30 /RETURN ADDRESS + FSTA RETN + FLDA% 3 / JA .+2+2*N + FSUB 0 /-JA . + FSUB TWO /- 2 + LDX 1,1 + ALN 1 /DIVIDE BY TWO + FNEG /-N + ATX 1 + LDX 0,2 /FOR ARG PICKUP + FLDA% 0,2+ /ADDRESS OF FIRST ARG + FSTA 3 + STARTE +NEW, FLDA% 3 /SAVE NEW MAX + FSTA MAX +SAME, JXN MORMAX,1+ /ANY MORE ARGS ? + FLDA MAX /GET RESULT +RETN, JA . +MORMAX, STARTD /NEXT ARG ADDRESS + FLDA% 0,2+ + FSTA 3 + STARTE + FLDA MAX /COMPARE + FSUB% 3 + JGE SAME /SAME MAX + JA NEW /NEW MAX +TWO, 0;2 +MAX, 0;0;0 + 0;0;0 +XR, 0;0;0;0;0;0;0;0 + END + diff --git a/sw/f4/FRTSRC/dmin1.ra b/sw/f4/FRTSRC/dmin1.ra new file mode 100644 index 0000000..d28a86e --- /dev/null +++ b/sw/f4/FRTSRC/dmin1.ra @@ -0,0 +1,42 @@ +/ +/ VERSION 5A 4/26/77 MH +/ + SECT DMIN1 + BASE 0 + DPCHK +DPMIN, SETX XR +MINCOM, STARTD + FLDA 0 /ADDRESS OF JA .+2+2*N + FSTA 3 + FLDA 30 /RETURN ADDRESS + FSTA RETN + FLDA% 3 / JA .+2+2*N + FSUB 0 /-JA . + FSUB TWO /- 2 + LDX 1,1 + ALN 1 /DIVIDE BY TWO + FNEG /-N + ATX 1 + LDX 0,2 /FOR ARG PICKUP + FLDA% 0,2+ /ADDRESS OF FIRST ARG + FSTA 3 + STARTE +NEW, FLDA% 3 /SAVE NEW MIN + FSTA MIN +SAME, JXN MORMIN,1+ + FLDA MIN +RETN, JA . +MORMIN, STARTD /NEXT ARG ADDRESS + FLDA% 0,2+ + FSTA 3 + STARTE + FLDA MIN /COMPARE + FSUB% 3 + JLE SAME /SAME MIN + JA NEW /NEW MIN +TWO, 0;2 +MIN, 0;0;0 + 0;0;0 +XR, 0;0;0;0;0;0;0;0 + END + diff --git a/sw/f4/FRTSRC/dmod.ra b/sw/f4/FRTSRC/dmod.ra new file mode 100644 index 0000000..4b40494 --- /dev/null +++ b/sw/f4/FRTSRC/dmod.ra @@ -0,0 +1,79 @@ +/ +/ +/ +/ D M O D +/ - - - - +/ +/SUBROUTINE DMOD(X,Y) +/ +/ VERSION 5A 4-27-77 PT +/ + SECT DMOD + JA #DMOD + DPCHK + TEXT +DMOD + +AMODXR, SETX XRAMOD + SETB BPAMOD +STHREE, 0007 /73 + 2217 + 7777 + 7777 + 7777 + 7777 +BPAMOD, F 0.0 + F 0.0 +XRAMOD, 0;1;73 /73 FOR ALIGNING ON 59 +XSTOR, F 0.0 + F 0.0 +AMODX, F 0.0 + F 0.0 + ORG 10*3+BPAMOD + FNOP + JA AMODXR + 0 +AMDRTN, JA . + EXTERN #ARGER +AMODER, TRAP4 #ARGER + FCLA + JA AMDRTN + BASE 0 +#DMOD, STARTD + FLDA 10*3 + FSTA AMDRTN + FLDA 0 + SETX XRAMOD + SETB BPAMOD + BASE BPAMOD + FSTA BPAMOD + LDX 1,1 + FLDA% BPAMOD,1 /ADDR OF X + FSTA AMODX + FLDA% BPAMOD,1+ /ADDR OF Y + FSTA BPAMOD + STARTE + FLDA% BPAMOD /GET Y + JEQ AMODER /Y=0 IS ERROR + FLDA% BPAMOD + JGT .+3 /GET ABS VALUE + FNEG + FSTA BPAMOD + FLDA% AMODX /GET X + JGT .+5 + FNEG /GET ABS VALUE OF X + LDX 0,1 /NOTE THE SIGN + FSTA AMODX /SAV IN A TEMPORARY + FDIV BPAMOD /DIVIDE BY Y + FSTA XSTOR /SAVE X/Y + XTA 3 /GET EXPONENT + FSUB STHREE /CHECK SIZE + JGE AMODER /TOO BIG + FLDA XSTOR /ABS VALUE X/Y + ALN 2 /FIX IT UP NOW. + FNORM + FMUL BPAMOD /MULITPLY IT. + FNEG /NEGATE IT. + FADD AMODX /AND ADD IN X. + JXN AMR,1 + FNEG /RESTORE SIGN +AMR, JA AMDRTN + diff --git a/sw/f4/FRTSRC/dsign.ra b/sw/f4/FRTSRC/dsign.ra new file mode 100644 index 0000000..a84de31 --- /dev/null +++ b/sw/f4/FRTSRC/dsign.ra @@ -0,0 +1,39 @@ +/ +/ VERSION 5A 4-27-77 PT +/ + SECT DSIGN + JA #ST +#XR, ORG .+10 + TEXT 'DSIGN ' +#BASE, ORG .+6 +A, ORG .+6 +B, ORG .+6 + ORG #BASE+31 + JA #BASE +GOBACK, 0;0;0 + BASE #BASE + DPCHK +#ST, STARTD + 0210 /FLDA 10 + FSTA GOBACK+1,0 + 0200 + SETX #XR + SETB #BASE + LDX 0,1 + FSTA #BASE + FLDA% #BASE,1+ + FSTA A + FLDA% #BASE,1+ + FSTA B + STARTE + FLDA% B /NEG? + JLT #50 /B POS + FLDA% A + JLT #100 + JA GOBACK+1 /A+,B+ +#50, FLDA% A + JLT GOBACK+1 /A-,B- +#100, FNEG /OPP. SIGNS + JA GOBACK+1 + END + diff --git a/sw/f4/FRTSRC/dsin.ra b/sw/f4/FRTSRC/dsin.ra new file mode 100644 index 0000000..4e70550 --- /dev/null +++ b/sw/f4/FRTSRC/dsin.ra @@ -0,0 +1,214 @@ +/ +/ +/ D S I N +/ - - - +/ +/SUBROUTINE DSIN(X) +/ +/ VERSION 5A 4-27-77 PT +/ + SECT DSIN + JA #DSIN + DPCHK + TEXT +DSIN + +SINXR, SETX XRSIN + SETB BPSIN +FPI2SN, 1 /PI DIVIDED BY 2 + 3110 + 3755 + 2421 + 0264 + 3016 +FPISIN, 2 /PI + 3110 + 3755 + 2421 + 0264 + 3016 +F2PISN, 3 /TWO PI + 3110 + 3755 + 2421 + 0264 + 3016 +BPSIN, F 0.0 +XRSIN, F 0.0 +X, F 0.0 + F 0.0 + ORG 10*3+BPSIN + FNOP + JA SINXR + 0 +SINRTN, JA . +SIN1, F 0.0 + F 0.0 +F3PIB2, 0003 /4.71238898038468986 + 2266 + 2761 + 7714 + 6207 + 2212 +F1SIN, F 1.0 + F 0.0 +/ +SINC17, 7720 /1/17! + 3124 + 5435 + 6014 + 1265 + 1236 +SINC15, 7730 /-1/15! + 4506 + 0060 + 3063 + 0437 + 4133 +SINC13, 7740 /1/13! + 2604 + 4430 + 2352 + 0664 + 1151 +SINC11, 7747 /-1/11! + 4506 + 3352 + 3002 + 5354 + 3710 +SINC9, 7756 /1/9! + 2707 + 3616 + 4525 + 5434 + 6350 +/ +SINC7, 7764 /-1/7! + 4577 + 4577 + 4577 + 4577 + 4636 +/ +SINC5, 7772 /1/5! + 2104 + 2104 + 2104 + 2104 + 2104 +/ +SINC3, 7776 /-1/3! + 5252 + 5252 + 5252 + 5252 + 5244 +/ +SINTST, 7770 + 2000 + 0000 + 0000 + 0000 + 0000 +SEVTHR, 0007 + 2217 + 7777 + 7777 + 7777 + 7777 + BASE 0 +#DSIN, STARTD + FLDA 10*3 + FSTA SINRTN + FLDA 0 + SETX XRSIN + SETB BPSIN + BASE BPSIN + LDX 1,1 + LDX 73,2 + FSTA BPSIN + FLDA% BPSIN,1 /ADDR OF X + FSTA BPSIN + STARTE + FLDA% BPSIN /GET X + LDX -1,0 /SET SIGN TO POSITIVE. + JGT SINMOD /IF POSITIVE BYPASS FUDGE. + JEQ SINRTN /IF ZERO EXIT. + FNEG /NEGATIVE. NEGATE AC. SIN(-X)=-SIN(X) + LDX 0,0 /SET SIGN TO MINUS. +SINMOD, FSTA X + FDIV F2PISN /X/2PI + ALN 2 + FNORM + FMUL F2PISN /*2PI + FSTA SIN1 + FLDA X + FSUB SIN1 + FSTA SIN1 + FSTA X +/CHECK FOR QUADRANT +/1 0-PI/2 SIN(PI/2)=1 +/2 PI/2-PI SIN(PI)=0 +/3 PI-3PI/2 SIN(3PI/2)=-1 +/4 3PI/2-2PI SIN(2PI)=0 +/ + FLDA FPI2SN /PI/2 + FSUB SIN1 + JGT TAYLOR + JEQ SPIB2 /=PI/2 + FLDA FPISIN /PI + FSUB SIN1 + JLT S1 + JEQ SPI /=PI + FLDA FPISIN + FSUB SIN1 /SIN(X)=SIN(PI-X) + FSTA X + JA TAYLOR +S1, FLDA F3PIB2 /3PI/2 + FSUB SIN1 + JLT S2 + JEQ S3PIB2 /=3PI/2 + FLDA SIN1 + FSUB FPISIN + FNEG + FSTA X /SIN(X)=-SIN(X-PI) + JA TAYLOR +S2, FLDA F2PISN /2PI + FSUB SIN1 + JLT DSNER /ERROR + JEQ SPI + FNEG + FSTA X +/CALCULATE SIN VIA TAYLOR SERIES +TAYLOR, FLDA X /RECALL NUMBER TO BE WORKED ON. + FMUL X /MULTIPLY OUT. + FSTA SIN1 + FMUL SINC17 /NOW DO THE STANDARD ITERATION. + FADD SINC15 + FMUL SIN1 + FADD SINC13 + FMUL SIN1 + FADD SINC11 + FMUL SIN1 + FADD SINC9 + FMUL SIN1 + FADD SINC7 + FMUL SIN1 + FADD SINC5 + FMUL SIN1 + FADD SINC3 + FMUL SIN1 + FADD F1SIN /ADD IN 1 FOR SERIES + FMUL X /DO THE FINAL MULTIPLY. +SING, JXN SINRTN,0 /SHALL WE NEGATE + FNEG /YEP + JA SINRTN /AND RETURN. +SPIB2, FLDA F1SIN + JA SING +SPI, FCLA + JA SINRTN +S3PIB2, FLDA F1SIN + FNEG + JA SING + EXTERN #ARGER +DSNER, TRAP4 #ARGER + diff --git a/sw/f4/FRTSRC/dsqrt.ra b/sw/f4/FRTSRC/dsqrt.ra new file mode 100644 index 0000000..520a86d --- /dev/null +++ b/sw/f4/FRTSRC/dsqrt.ra @@ -0,0 +1,79 @@ +/ +/ +/ D S Q R T +/ +/ VERSION 5A 4-27-77 PT +/ + SECT DSQRT + JA #DSQRT + DPCHK + TEXT +DSQRT + +/ +DSQXR, SETX XRDSQ + SETB BPDSQ + JA .+3 +BPDSQ, F 0.0 +XRDSQ, F 0.0 +DARSAV, F 0.0 + F 0.0 +DSQ2, F 2.0 + F 0.0 +SNGL, F 0.0 + F 0.0 + ORG 10*3+BPDSQ + FNOP + JA DSQXR +/ + 0 +DSQRTN, JA . +DSQ1, F 0.0 + F 0.0 +/PICK UP ARGUMENTS + BASE 0 +#DSQRT, STARTD + FLDA 10*3 + FSTA DSQRTN + FLDA 0 + SETX XRDSQ + SETB BPDSQ + BASE BPDSQ + LDX 1,1 + FSTA BPDSQ + FLDA% BPDSQ,1 /ADDR OF X + FSTA BPDSQ +/ +/DO GENERAL TESTS ON THE ARGUMENT +/ + STARTE + FLDA% BPDSQ + JEQ DSQRTN /RETURN IF 0 + JLT DSQER /<0 ERROR + FSTA DARSAV /SAVE DOUBLE + STARTF /F MODE + ROUND + FSTA SNGL /SAVE +/ +/GET INITIAL APPROXIMATION BY CALLING +/SINGLE PRECISION ROUTINE +/ + EXTERN SQRT + JSR SQRT + JA .+4 + JA SNGL + FSTA SNGL /FIRST APPROX + STARTE /BACK TO E +/ +/TAKE N ITERATIONS OF +/X(K+1)=1/2(X(K)+X/X(K)) +/ + LDX -3,0 /3 TIMES +DSIT, FLDA DARSAV /GET X + FDIV SNGL /X(K) + FADD SNGL /X(K) + FDIV DSQ2 /DIVIDE BY 2 + FSTA SNGL /X(K+1) + JXN DSIT,0+ /ITERATE + FLDA SNGL /GET ANSWER + JA DSQRTN /RETURN + EXTERN #ARGER +DSQER, TRAP4 #ARGER + diff --git a/sw/f4/FRTSRC/exp.ra b/sw/f4/FRTSRC/exp.ra new file mode 100644 index 0000000..141e20e --- /dev/null +++ b/sw/f4/FRTSRC/exp.ra @@ -0,0 +1,109 @@ +/ +/ +/ E X P +/ - - - +/ +/SUBROUTINE EXP(X) +/ +/ VERSION 5A 4-27-77 PT +/ + SECT EXP + JA #EXP + 0 +EXPFUD, 0 + 0 + 0 +/ + EXTERN #ARGER +EXPER, TRAP4 #ARGER + TEXT +EXP + +EXPXR, SETX XREXP + SETB BPEXP +BPEXP, F 0.0 +XREXP, F 0.0 +EXP1, F 0.0 +EXP2, F 0.0 +EXP33, F 0.0 +EXP4, F 0.0 +F1EXP, F 1. +F2EXP, F 2. + ORG 10*3+BPEXP + FNOP + JA EXPXR + 0 +EXPRTN, JA . +/ +EXPAF, 4 + 2372 + 1402 +/ +EXPBF, 7774 + 2157 + 5157 +/ +EXPCF, 12 + 5454 + 343 +/ +EXPDF, 7 + 2566 + 5341 +/ +EXP2E, 1 + 2705 + 2435 + BASE 0 +#EXP, STARTD + FLDA 10*3 + FSTA EXPRTN + FLDA 0 + SETX XREXP + SETB BPEXP + BASE BPEXP + LDX 1,1 + FSTA BPEXP + FLDA% BPEXP,1 /ADDR OF X + FSTA BPEXP + STARTF + FLDA% BPEXP /GET X + LDX -1,0 /PRESERVE SIGN. + JGE .+5 + FNEG /IF NEGATIVE NEGATE IT. + LDX 0,0 /AND REMEMBER IT,BUBBY. + FMUL EXP2E /MULTIPLY TO BINARY TYPE. + FSTA EXP1 /AND SAVE IT AWAY. + JAL EXPER /CAN T FIX IT, ERROR. + ALN 0 /FIX IT UP. + FSTA EXP33 /AND SAVE IT. + FNORM /NOW NORMALIZE FOR OUR COMPUTATIONS. + FNEG /NEGATE THE FAC + FADD EXP1 /ADD IN BEFORE NORMAL. + FSTA EXP1 /AND STORE BACK. NO FADDM + FMUL EXP1 /NOW SQUARE IT. + FSTA EXP2 /AND SAVE IT. + FADD EXPDF /START THE ITERATION. + FSTA EXP4 /SAVE IN ANOTHER TEMP. + FLDA EXPCF /NEXT CONSTANT. + FDIV EXP4 /AND DIVIDE INTO IT. + FSUB EXP1 /SUBTRACT BACK NOW. + FADD EXPAF /NEXT CONSTANT. + FSTA EXP4 /AND SAVE AGAIN. KEEP THIS UP. + FLDA EXPBF + FMUL EXP2 + FADDM EXP4 + FLDA EXP1 + FDIV EXP4 + FMUL F2EXP + FADD F1EXP + FSTA EXPFUD /NOW FIDDLE THE EXPONENT. + STARTD + FLDA EXP33 + FADDM EXPFUD-1 /EXPONENT UPDATE. + STARTF + JXN EXPP,0 /NO INVERSION NECESSARY. RETURN. + FLDA F1EXP /INVERT IT + FDIV EXPFUD + JA EXPRTN +EXPP, FLDA EXPFUD /AN EXIT. + JA EXPRTN + diff --git a/sw/f4/FRTSRC/exp3.ra b/sw/f4/FRTSRC/exp3.ra new file mode 100644 index 0000000..67da383 --- /dev/null +++ b/sw/f4/FRTSRC/exp3.ra @@ -0,0 +1,65 @@ +/ +/ +/ +/ E X P 3 +/ - - - - +/ +/SUBROUTINE EXP3(B,E) +/ +/ VERSION 5A 4-26-77 MH +/ + SECT EXP3 + JA #EXP3 + EXTERN #ARGER +EXP3ER, TRAP4 #ARGER + TEXT +EXP3 + +EXP3XR, SETX XREXP3 + SETB BPEXP3 +BPEXP3, FNOP + 0 + 0 +XREXP3, F 0.0 +EXP31, F 0.0 +EXP32, F 0.0 +FP1XP3, F 1. + ORG 10*3+BPEXP3 + FNOP + JA EXP3XR + 0 +XP3RTN, JA . + BASE 0 +#EXP3, STARTD + FLDA 10*3 + FSTA XP3RTN + FLDA 0 + SETX XREXP3 + SETB BPEXP3 + BASE BPEXP3 + LDX 1,1 + FSTA BPEXP3 + FLDA% BPEXP3,1 /ADDR OF B + FSTA EXP31 + FLDA% BPEXP3,1+ /ADDR OF E + FSTA EXP32 + STARTF + FLDA% EXP31 /GET B + JEQ XP3RTN /0 ^ X = 0 + FSTA EXP31 /SAVE BASE + FLDA% EXP32 /GET E + JEQ EXP3ON /X ^ 0 = 1 + FSTA EXP32 /SAVE EXPONENT + FLDA EXP31 + JLT EXP3ER /ALL IS NOT WELL + EXTERN ALOG + JSR ALOG /CALL LOG + JA .+4 /TAKE LOG (B) + JA EXP31 + FMUL EXP32 /MULT BY EXPONENT-E + FSTA EXP31 + EXTERN EXP + JSR EXP /CALL EXP. + JA XP3RTN + JA EXP31 +EXP3ON, FLDA FP1XP3 + JA XP3RTN + diff --git a/sw/f4/FRTSRC/expcc.ra b/sw/f4/FRTSRC/expcc.ra new file mode 100644 index 0000000..691dc0c --- /dev/null +++ b/sw/f4/FRTSRC/expcc.ra @@ -0,0 +1,165 @@ +/ +/EXPCC +/COMPLEX RAISED TO COMPLEX +/ +/ VERSION 5A 4-26-77 MH +/ +/(A+I*B)^(C+I*D) +/A+B=0 YIELDS 0 +/B+D=0 MEANS USE EXP3 TO CALCULATTE A^C +/A+B=0,C+D=0 YIELDS 1.0 +/ENTER + EXIT IN STARTE + SECT #EXPCC + DPCHK + EXTERN #CAC + EXTERN EXP + EXTERN COS + EXTERN SIN + EXTERN ALOG + EXTERN EXP3 + EXTERN ATAN2 + EXTERN SQRT + BASE 0 +EXPCC, JA . + FSTA C,0 + FLDA 0 + FSTA A,0 + STARTF + BASE .+2000 + XTA 0 + FSTA T1 /SAVE XR 0 + FLDA A + JNE EX1 /A NOT 0 + FLDA B + JNE EX1 + STARTE /A=B=0 + FCLA +EX, FSTA #CAC /RESULT = 0 + JA EXPCC +EX1, FLDA C /C+D=0? + JNE EX2 + FLDA D + JNE EX2 + STARTE + FLDA FP1 /RESULT = 1 IF C=D=0 + JA EX +EX2, FLDA B + JNE EX3 /USE EXP3 IF B=D=0 + FLDA D + JNE EX3 + STARTF + JSR EXP3 + JA .+6 + JA A + JA C + FSTA A + STARTE + FLDA A /RETURN AS REAL PART + JA EX +EX3, STARTF +/TH=ATAN(B/A) + JSR ATAN2 + JA .+6 + JA B + JA A + FSTA TH +/ +/LOGR=ALOG(SQRT(A*A+B*B)) + FLDA A + FMUL A + FSTA LOGR + FLDA B + FMUL B + FADDM LOGR + JSR SQRT + JA .+4 + JA LOGR + FSTA LOGR + JSR ALOG + JA .+4 + JA LOGR + FSTA LOGR +/ARG=C*TH+D*LOGR + FLDA C + FMUL TH + FSTA ARG + FLDA D + FMUL LOGR + FADDM ARG +/ +/CALCULATE IN AND COS OF ARG. SAVE SIGN OF EACH + JSR SIN + JA .+4 + JA ARG + FSTA SINE + JSR COS + JA .+4 + JA ARG + FSTA CSINE +/CALL C*LOGR-D*TH + FLDA D + FMUL TH + FSTA REST + FLDA C + FMUL LOGR + FSUB REST + FSTA REST +/REAL = EXP(REST+ALOG(CSINE)) + FLDA CSINE /REAL + JLT .+6 + LDX 0,1 /=1 IF POSITIVE + JA .+3 + FNEG + JSA DO + JXN .+3,0 /SKIP IF POS + FNEG + FSTA A + FLDA SINE /IMAG + JLT .+6 + LDX 0,1 + JA .+5 + LDX 0,0 + FNEG + JSA DO + JXN .+3,0 + FNEG /RESTORE SIGN + FSTA B + FLDA T1 /RESTORE XR0 + ATX 0 + STARTE + FLDA A + FSTA #CAC + JA EXPCC +/ +DO, JA . + FSTA TH + JSR ALOG + JA .+4 + JA TH + FADD REST + FSTA ARG + JSR EXP + JA .+4 + JA ARG + FSTA ARG + FLDA TH /CHECK SIGN + JGE DOX + FLDA ARG + FNEG + FSTA ARG +DOX, FLDA ARG + JA DO +A, F 0.0 +B, F 0.0 +C, F 0.0 +D, F 0.0 +LOGR, F 0.0 +TH, F 0.0 +ARG, F 0.0 +SINE, F 0.0 +CSINE, F 0.0 +REST, F 0.0 +FP1, F 1.0 + F 0.0 +T1, F 0.0 + diff --git a/sw/f4/FRTSRC/expci.ra b/sw/f4/FRTSRC/expci.ra new file mode 100644 index 0000000..9b9b76b --- /dev/null +++ b/sw/f4/FRTSRC/expci.ra @@ -0,0 +1,88 @@ +/ +/EXPCI +/COMPLEX RAISED TO INTEGER OR REAL +/ +/ VERSION 5A 4-26-77 MH +/ +/ +/C=A+I*B +/C^D=R^D*EXP(D*I*THETA) +/ +/C IS IN #BASE +/D IS IN AC +/ +/ENTER IN STARTF,EXIT IN STARTE +/ + SECT #EXPCI + ENTRY #EXPCR + DPCHK + EXTERN SQRT + EXTERN ATAN2 + EXTERN SIN + EXTERN COS + EXTERN EXP3 + EXTERN #CAC + BASE 0 +#EXPCR, JA . + FSTA EXPON,0 + FLDA 0 /REAL + FSTA A,0 + FLDA 3 /IMAG + FSTA B,0 +/SET DUMMY BASE PAGE + BASE .+2000 +/ +/R=SQRT(A*A+B*B) + FLDA A + FMUL A + FSTA R + FLDA B + FMUL B + FADDM R + JSR SQRT + JA .+4 + JA R + FSTA R +/R^EXPON + JSR EXP3 + JA .+6 + JA R + JA EXPON + FSTA R +/THETA=ATAN(B/A) + JSR ATAN2 + JA .+6 + JA B + JA A +/THETA*EXPON + FMUL EXPON + FSTA A /PHASE ANGLE +/IMAG=R*SIN(PHASE) + JSR SIN + JA .+4 + JA A + FMUL R + FSTA B +/REAL=R*COS(PHASE) + JSR COS + JA .+4 + JA A + FMUL R + FSTA A + JGE .+3 /SKIP IF RESULT IS POS + FNEG /IF NOT,MAKE IT POS + FSUB LOWLIM /TEST FOR ZERO + JGE .+5 /JUMP IF NOT 0 + FCLA /ASSUME RESULT SHOULD BE 0 + FSTA A /AND STORE A 0 +/RETURN RESULT IN #CAC AND STARTE + STARTE + FLDA A + FSTA #CAC + JA #EXPCR +A, F 0.0 +B, F 0.0 +EXPON, F 0.0 +R, F 0.0 +LOWLIM, F 0.000009 /NUMBERS >= 1.E-5 OK + diff --git a/sw/f4/FRTSRC/expdd.ra b/sw/f4/FRTSRC/expdd.ra new file mode 100644 index 0000000..bdf0e51 --- /dev/null +++ b/sw/f4/FRTSRC/expdd.ra @@ -0,0 +1,22 @@ +/ +/ VERSION 5A 4-25-77 MH +/ + SECT #EXPDD + DPCHK + BASE 0 + EXTERN DEXP3 + JA . + FSTA EXPON,0 /EXPONENT + FLDA 0 /BASE + FSTA BASE,0 + JSR DEXP3 /EXP3(BASE,EXPON) + JA .+6 + JA BASE + JA EXPON + JA #EXPDD +BASE, F 0.0 + F 0.0 +EXPON, F 0.0 + F 0.0 + END + diff --git a/sw/f4/FRTSRC/expdi.ra b/sw/f4/FRTSRC/expdi.ra new file mode 100644 index 0000000..fb3f8ff --- /dev/null +++ b/sw/f4/FRTSRC/expdi.ra @@ -0,0 +1,63 @@ + SECT #EXPDI +/ B**E +/ WHERE E IS INTEGER +/ AND B IS DOUBLE PRECISION +/ +/ VERSION 5A 4-26-77 MH +/ + DPCHK + BASE 0 +EXPDI, JA . + FSTA SIGN /SAVE SIGN OF EXPONENT + JGE POSINT /ITS POSITIVE + FNEG +POSINT, FSTA EXP + XTA 1 /SAVE XR 1 + FSTA XR1 + LDX -27,1 /BIT COUNT + STARTE + FLDA ONE /START WITH ONE + FSTA PROD + STARTF + FLDA EXP +LOOP, JEQ YES /DONE IF ITS ZERO + FDIV TWO /DIVIDE BY TWO + ALN 0 /INTEGERIZE + FNORM + FSTA TEMP /SAVE AT + FMUL TWO /IS EXPONENT ODD ? + FSUB EXP + STARTE + JLT ODD /YES, JUMP + FLDA 0 /SQUARE BASE +SQUARE, FMULM 0 + STARTF + FLDA TEMP /EXPONENT OVER 2 + FSTA EXP + JXN LOOP,1+ /LOOP IF MORE BITS +YES, FLDA XR1 /DONE, RESTORE XR 1 + ATX 1 + FLDA SIGN /CHECK SIGN OF EXPONENT + JLT INVERT /IT WS NEGATIVE, INVERT RESULT + STARTE + FLDA PROD /RETURN ANSWER + JA EXPDI +INVERT, STARTE + FLDA ONE /RETURN WITH 1/PROD + FDIV PROD + JA EXPDI +ODD, FLDA 0 + FMULM PROD + JA SQUARE /GO SQUARE THE BASE +ONE, F 1.0 + F 0.0 +TWO, F 2.0 +PROD, F 0.0 + F 0.0 +SIGN, F 0.0 +TEMP, F 0.0 +XR1, F 0.0 +EXP, F 0.0 + F 0.0 + END + diff --git a/sw/f4/FRTSRC/expdr.ra b/sw/f4/FRTSRC/expdr.ra new file mode 100644 index 0000000..d0ec51c --- /dev/null +++ b/sw/f4/FRTSRC/expdr.ra @@ -0,0 +1,25 @@ +/ +/ VERSION 5A 4-26-77 MH +/ + SECT #EXPDR + DPCHK + BASE 0 + EXTERN DEXP3 + JA . + FSTA EXPON,0 /EXPONENT + FCLA + FSTA EXPON+3 /MUST BE 6 WDS + STARTE + FLDA 0 /BASE + FSTA BASE,0 + JSR DEXP3 /EXP3(BASE,EXPON) + JA .+6 + JA BASE + JA EXPON + JA #EXPDR +BASE, F 0.0 + F 0.0 +EXPON, F 0.0 + F 0.0 + END + diff --git a/sw/f4/FRTSRC/expic.ra b/sw/f4/FRTSRC/expic.ra new file mode 100644 index 0000000..7c2d22c --- /dev/null +++ b/sw/f4/FRTSRC/expic.ra @@ -0,0 +1,142 @@ +/ +/EXPIC +/INTEGER OR REAL RAISED TO COMPLEX +/ +/ VERSION 5A 4-26-77 MH +/ +/(A)^(C+I*D) +/A=0 YIELDS 0 +/D=0 MEANS USE EXP3 TO CALCULATE A^C +/C+D=0 YIELDS 1.0 +/ENTER + EXIT IN STARTE + SECT #EXPIC + DPCHK + EXTERN #CAC + EXTERN EXP + EXTERN COS + EXTERN SIN + EXTERN ALOG + EXTERN EXP3 + EXTERN SQRT + BASE 0 +EXPIC, JA . + FSTA C,0 + STARTF + FLDA 0 /BASE + FSTA A,0 + BASE .+2000 + XTA 0 + FSTA T1 /SAVE XR 0 + FLDA A + JNE EX1 /A NOT 0 + STARTE /A=B=0 + FCLA +EX, FSTA #CAC /RESULT = 0 + JA EXPIC +EX1, FLDA C /C+D=0? + JNE EX2 + FLDA D + JNE EX2 + STARTE + FLDA FP1 /RESULT = 1 IF C=D=0 + JA EX +EX2, FLDA D + JNE EX3 /USE EXP3 IF D=0 + JSR EXP3 + JA .+6 + JA A + JA C + FSTA A + STARTE + FLDA A /RETURN AS REAL PART + JA EX +/ +/LOGR=ALOG(SQRT(A*A)) +EX3, FLDA A + FMUL A + FSTA LOGR + JSR SQRT + JA .+4 + JA LOGR + FSTA LOGR + JSR ALOG + JA .+4 + JA LOGR + FSTA LOGR +/ARG=C+D*LOGR + FLDA D + FMUL LOGR + FADD C + FSTA ARG +/ +/CALCULATE SIN AND COS OF ARG. SAVE SIGN OF EACH + JSR SIN + JA .+4 + JA ARG + FSTA SINE + JSR COS + JA .+4 + JA ARG + FSTA CSINE +/CALL C*LOGR-D + FLDA C + FMUL LOGR + FSUB D + FSTA REST +/REAL = EXP(REST+ALOG(CSINE)) + FLDA CSINE /REAL + JLT .+6 + LDX 0,1 /=1 IF POSITIVE + JA .+3 + FNEG + JSA DO + JXN .+3,0 /SKIP IF POS + FNEG + FSTA C + FLDA SINE /IMAG + JLT .+6 + LDX 0,1 + JA .+5 + LDX 0,0 + FNEG + JSA DO + JXN .+3,0 + FNEG /RESTORE SIGN + FSTA D + FLDA T1 /RESTORE XR0 + ATX 0 + STARTE + FLDA C + FSTA #CAC + JA EXPIC +/ +DO, JA . + FSTA LOGR + JSR ALOG + JA .+4 + JA LOGR + FADD REST + FSTA ARG + JSR EXP + JA .+4 + JA ARG + FSTA ARG + FLDA LOGR /CHECK SIGN + JGE DOX + FLDA ARG + FNEG + FSTA ARG +DOX, FLDA ARG + JA DO +A, F 0.0 +C, F 0.0 +D, F 0.0 +LOGR, F 0.0 +ARG, F 0.0 +SINE, F 0.0 +CSINE, F 0.0 +REST, F 0.0 +FP1, F 1.0 + F 0.0 +T1, F 0.0 + diff --git a/sw/f4/FRTSRC/expid.ra b/sw/f4/FRTSRC/expid.ra new file mode 100644 index 0000000..e37ee9e --- /dev/null +++ b/sw/f4/FRTSRC/expid.ra @@ -0,0 +1,22 @@ +/ +/ VERSION 5A 4-26-77 MH +/ + SECT #EXPID + DPCHK + BASE 0 + EXTERN EXPID2 +EXPID, JA . + FSTA EXPON,0 /EXPONENT + STARTF + FLDA 0 /BASE + FSTA BASE,0 + JSR EXPID2 + JA .+6 + JA BASE + JA EXPON + JA EXPID +BASE, F 0.0 +EXPON, F 0.0 + F 0.0 + END + diff --git a/sw/f4/FRTSRC/expid2.ra b/sw/f4/FRTSRC/expid2.ra new file mode 100644 index 0000000..80f39a4 --- /dev/null +++ b/sw/f4/FRTSRC/expid2.ra @@ -0,0 +1,71 @@ +/ +/ +/ +/ E X P I D 2 +/ - - - - - - +/ +/SUBROUTINE EXPID2(B,E) +/WHERE B IS INTEGER AND E IS DOUBLE +/ +/ VERSION 5A 4-26-77 MH +/ + SECT EXPID2 + JA #EXID2 + EXTERN #ARGER +EXP3ER, TRAP4 #ARGER + TEXT +EXPID2+ +EXP3XR, SETX XREXP3 + SETB BPEXP3 +BPEXP3, FNOP + 0 + 0 +XREXP3, F 0.0 +EXP31, F 0.0 + F 0.0 +EXP32, F 0.0 +FP1XP3, F 1. + F 0.0 + ORG 10*3+BPEXP3 + FNOP + JA EXP3XR + 0 +XP3RTN, JA . + BASE 0 +#EXID2, STARTD + FLDA 10*3 + FSTA XP3RTN + FLDA 0 + SETX XREXP3 + SETB BPEXP3 + BASE BPEXP3 + LDX 1,1 + FSTA BPEXP3 + FLDA% BPEXP3,1 /ADDR OF B + FSTA EXP31 + FLDA% BPEXP3,1+ /ADDR OF E + FSTA EXP32 + STARTF + FLDA% EXP31 /GET B + JEQ XP3RTN /0 ^ X = 0 + JLT EXP3ER + FSTA EXP31 /SAVE BASE + FCLA + FSTA EXP31+3 + STARTE + LDX 73,1 + EXTERN DLOG + JSR DLOG /CALL LOG + JA .+4 /TAKE LOG (B) + JA EXP31 + FSTA EXP31 + FLDA% EXP32 /GET EXPONENT + JEQ EXP3ON /X^0=1 + FMULM EXP31 + EXTERN DEXP + JSR DEXP /CALL EXP. + JA XP3RTN + JA EXP31 +EXP3ON, STARTE + FLDA FP1XP3 + JA XP3RTN + diff --git a/sw/f4/FRTSRC/expii.ra b/sw/f4/FRTSRC/expii.ra new file mode 100644 index 0000000..02a5e33 --- /dev/null +++ b/sw/f4/FRTSRC/expii.ra @@ -0,0 +1,52 @@ + SECT #EXPII +/ B**E +/ WHERE E IS INTEGER +/ AND B IS REAL OR INTEGER +/ +/ VERSION 5A 4/26/77 MH +/ + BASE 0 + JA . + FSTA SIGN /SAVE SIGN OF EXPONENT + JGE POSINT /ITS POSITIVE + FNEG +POSINT, FSTA 3 /PUT IT INTO 3 + XTA 1 /SAVE XR 1 + FSTA XR1 + LDX -27,1 /BIT COUNT + FLDA ONE /START WITH ONE + FSTA PROD + FLDA 3 /GET EXPONENT +LOOP, JEQ YES /DONE IF ITS ZERO + FDIV TWO /DIVIDE BY TWO + ALN 0 /INTEGERIZE + FNORM + FSTA TEMP /SAVE AT + FMUL TWO /IS EXPONENT ODD ? + FSUB 3 + JLT ODD /YES, JUMP + FLDA 0 /SQUARE BASE +SQUARE, FMULM 0 + FLDA TEMP /EXPONENT OVER 2 + FSTA 3 + JXN LOOP,1+ /LOOP IF MORE BITS +YES, FLDA XR1 /DONE, RESTORE XR 1 + ATX 1 + FLDA SIGN /CHECK SIGN OF EXPONENT + JLT INVERT /IT WS NEGATIVE, INVERT RESULT + FLDA PROD /RETURN ANSWER + JA #EXPII +INVERT, FLDA ONE /RETURN 1/PROD + FDIV PROD + JA #EXPII +ODD, FLDA 0 /MULT PROD BY BASE + FMULM PROD + JA SQUARE /GO SQUARE THE BASE +ONE, F 1.0 +TWO, F 2.0 +PROD, F 0.0 +SIGN, F 0.0 +TEMP, F 0.0 +XR1, F 0.0 + END + diff --git a/sw/f4/FRTSRC/expir.ra b/sw/f4/FRTSRC/expir.ra new file mode 100644 index 0000000..3167ba4 --- /dev/null +++ b/sw/f4/FRTSRC/expir.ra @@ -0,0 +1,19 @@ +/ +/ VERSION 5A 4-26-77 MH +/ + SECT #EXPIR + BASE 0 + EXTERN EXP3 + JA . + FSTA EXPON,0 /EXPONENT + FLDA 0 /BASE + FSTA BASE,0 + JSR EXP3 /EXP3(BASE,EXPON) + JA .+6 + JA BASE + JA EXPON + JA #EXPIR +BASE, F 0.0 +EXPON, F 0.0 + END + diff --git a/sw/f4/FRTSRC/f4.pa b/sw/f4/FRTSRC/f4.pa new file mode 100644 index 0000000..8bebc29 --- /dev/null +++ b/sw/f4/FRTSRC/f4.pa @@ -0,0 +1,3661 @@ +/4 OS/8 FORTRAN (PASS ONE) +/ +/ VERSION 4A PT 16-MAY-77 +/ +/ OS/8 FORTRAN COMPILER - PASS 1 +/ +/ BY: HANK MAURER +/ UPDATED BY: R.LARY + M. HURLEY +/ +/ +/COPYRIGHT (C) 1974,1975 BY DIGITAL EQUIPMENT CORPORATION +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ +/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE +/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT +/CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY +/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. +/ +/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER +/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED +/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH +/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. +/ +/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE +/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY +/DIGITAL. +/ +/ +/ +VERSON=4 + /CHANGES FOR MAINTENANCE RELEASE (S.R.): + +/1. BUMPED VERSION NUMBER TO 304 +/2. INCLUDED PATCH SEQ #4 (OCT DSN) FOR SF ERROR FIX +/3. INCLUDED PATCH SEQ #6 (TEMP VARS IN ASF) +/4. FIXED PROBLEM IN DATA STATEMENT +/5. STOPPED HALT AFTER OT ERROR BY CONVERTING LOGICAL +/ VARS TO INTEGER IN ARITHMETIC IF STATEMENT +/6. FIXED BUG RE /A AND .RA EXTENSION + +/LAST MINUTE CHANGES: + +/7. ALLOWED PARITY INPUT +/8. IGNORE NULLS ON INPUT +/9. FIXED BUG RE IGNORING LAST LINE IF IN ERROR +/ OR IN FACT IGNORING ANY LAST LINE IF NO END STATEMENT +/10. ALLOW MULTIPLE INPUT FILES +/ +/ +/CHANGES FOR OS/8 V3D AND OS/78 BY P.T. +/ .PATCH LEVEL NOW CONTAINED IN LOCATION 1130 + *7 +LINENO, 1 /2.01/ LINE NUMBER +X10, 0 /AUTO INDEX REGISTERS +X11, 0 +X12, 0 +NEXT, FREE-1 /FREE SPACE POINTER +STACK, STACKS-1 /STACK POINTER +CHRPTR, 0 /INPUT BUFFER POINTER +X16, 0 +X17, 0 +STKLVL, STACKS-1 /STACK BASE LEVEL +BUCKET, 0 /FIRST CHAR OF NAME +WORD1, 0 /SIX WORD LITERAL BUFFER +WORD2, 0 +WORD3, 0 +WORD4, 0 +WORD5, 0 +WORD6, 0 +ACO, 0 /FLOATING AC OVERFLOW WORD +OP1, 0 /SEVEN WORD OPERAND FOR "NUMBER" +OP2, 0 +OP3, 0 +OP4, 0 +OP5, 0 +OP6, 0 +OPO, 0 +CHAR, 0 /ICHAR PUTS CHARACTER HERE +NOCODE, 0 /IS 1 IF CODE GENERATION OFF +NCHARS, 0 /SIZE OF INPUT LINE +NUMELM, 0 /NUMBER OF VARS IN TYPED LIST +TEMP, 0 +TEMP2, 0 +DECPT, 0 /SET 1 IF NUMBER CONTAINED . +ESWIT, 0 /1 FOR E 0 FOR D +NDIGIT, 0 /NUMBER OF DIGITS TO RIGHT OF . +HCHAR, HCOUNT /HOLLERITH GETTER ROUTINE +SNUM, 0 /POINTER TO ST ENTRY FOR STMT NUMBER +IFSWIT, 0 /=1 IF INSIDE LOGICAL IF +EXPON, 0 /HOLDS EXPONENT FOR CONVERSION +TMPFIL, 0617;2224;2216;2415 /PASS1 OUTPUT FILE + 0;0;0;0 /PASS2 OUTPUT FILE +DOEND, 0 /SET 1 IF THIS STMT WAS A IF, + /GOTO, RETURN, PAUSE, OR STOP +THSNUM, 0 /CURRENT STATEMENT NUMBER +DIMNUM, 0 /LINEARIZED SS FOR EQ +DPRDCT, 0 /HOLDS DIMENSION PRODUCT +EQTEMP, 0 /TEMP FOR EQUIVALENCE +MQ, 0 /MQ FOR 12 BIT MULTIPLY +MASTER, 0 /POINTER TO MASTER IN EQUIV GROUP +MNUM, 0 /LINEARIZED SS FOR MASTER +NSLAVE, 0 /NUMBER OF SLAVES IN GROUP +PASS2O, 0 /START OF PASS 2 OVERLAY SECTION +OUFILE, 0 /START OF PASS1 OUTPUT FILE +DSERES, 0 /MAGIC NUMBER +PROGNM, MAIN /POINTER TO PROG NAME +ARGLST, 0 /POINTER TO ARG LIST +FUNCTN, 0 /0=MAIN, 1=FUNCTION, -2=SUBROUTINE +SETBIT, 0 /TEMPS FOR DECLARATION SCANNER +BADBIT, 0 +DOINDX, 0 /POINTER TO DO INDEX FOR DO LOOPS +TLTEMP, 0 /TEMP FOR TYPE ROUTINE +OWTEMP, 0 /TEMP FOR OUTWRD +CNT72, -102 /72 COLUMN COUNTER +DPUSED, 0 /=1 IF DOUBLE HARDWARE USED +VERS, VERSON /VERSION NUMBER +M211, -211 +P211, 211 +P240, 240 +IXLNP5, LINE+5 /** +IXLINE, LINE +IXLINM, LINE-1 +STMJMP, 0 /FOR DEFINE FILE + / OPCODES AND EQUS + MAXHOL=100 /MAXIMUM HOLLERITH LITERAL + COMREG=4600 /INTER-PASS COMMUNICATION REGION + STACKS=4700 /STACK AREA + NAME1=6200 /NAME AND HOLLERITH BUFFER (WAS 6400)** + LINE=6300 /LINE BUFFER (WAS 6500)** + INBUF=6600 /INPUT BUFFER (FIELD 1) + OUBUF=7200 /OUTPUT BUFFER (DITTO) + INDEVH=7200 /INPUT DEVICE HANDLER (WAS 7400)** + PAUSOP=22 + DPUSH=PAUSOP+1 + BINRD1=DPUSH+1 /OPCODE DEFINITIONS + FMTRD1=BINRD1+1 + RCLOSE=FMTRD1+1 + DARD1=RCLOSE+1 + BINWR1=DARD1+1 + FMTWR1=BINWR1+1 + WCLOSE=FMTWR1+1 + DAWR1=WCLOSE+1 + DEFFIL=DAWR1+1 + ASFDEF=DEFFIL+1 + ARGSOP=ASFDEF+1 + EOLCOD=ARGSOP+1 + ERRCOD=EOLCOD+1 + RETOPR=ERRCOD+1 + REWOPR=RETOPR+1 + STOROP=REWOPR+1 + ENDOPR=STOROP+1 + DEFLBL=ENDOPR+1 + DOFINI=DEFLBL+1 + ARTHIF=DOFINI+1 + LIFBGN=ARTHIF+1 + DOBEGN=LIFBGN+1 + ENDFOP=DOBEGN+1 + STOPOP=ENDFOP+1 + ASNOPR=STOPOP+1 + BAKOPR=ASNOPR+1 + FMTOPR=BAKOPR+1 + GO2OPR=FMTOPR+1 + CGO2OP=GO2OPR+1 + AGO2OP=CGO2OP+1 + IOLMNT=AGO2OP+1 + DATELM=IOLMNT+1 + DREPTC=DATELM+1 + DATAST=DREPTC+1 + ENDELM=DATAST+1 + PRGSTK=ENDELM+1 + DOSTOR=PRGSTK+1 +/ ASSEMBLE STATEMENT + PAGE +RDLOOP, CIF 10 /FOR OS/8 2 PG HANDLERS** + JMS I [ICHAR /GET CHAR FROM INPUT FILE + JMP ENDLIN /END LINE OR CR + TAD M211 /CHECK FOR TAB** + SNA + TAD (240-211 /CONVERT TO BLANK + TAD P211 /** + DCA I CHRPTR /SAVE CHAR + ISZ CNT72 /PAST COLUMN 72 ? + SKP + JMP SKPLIN /SKIP 73 TO 80 + TAD CHRPTR + CIA CLL + TAD (LINE+670 + SZL CLA /TEST FOR TOO MANY CONTINUATIONS + JMP RDLOOP + JMS I [ERMSG /LINE TOO LONG + 1424 +SKPCOM, TAD X16 /RESTORE CHRPTR + DCA CHRPTR +SKPLIN, CIF 10 /** + JMS I [ICHAR /SKIP REST OF LINE + JMP ENDLIN + CLA + JMP SKPLIN +ENDLIN, TAD CHRPTR /SAVE CHAR POSITION + DCA X16 + TAD CHRPTR + DCA X10 /SAVE POSITION FOR COMMENT CHECK + TAD (-102 /SET COLUMN COUNT + DCA CNT72 + TAD M6 + DCA NCHARS +GET6, CIF 10 /** + JMS I [ICHAR /GET FIRST 6 CHARS + JMP SHORTL /IGNORE SHORT LINES + TAD M211 /IS CHAR A TAB ? ** + SZA CLA + JMP NOTAB /NO + TAD P240 /TREAT FIRST TAB AS SIX BLANKS + DCA I CHRPTR + ISZ NCHARS + JMP .-3 + TAD P240 /FAKE CONTINUATION CHECK + DCA CHAR + JMP CCHECK /GO TO COMMENT CHECK +SHORTL, TAD X16 /RESET CHAR POINTER + DCA CHRPTR /TO IGNORE SHORT LINES + JMP ENDLIN +NOTAB, TAD CHAR + DCA I CHRPTR + ISZ NCHARS + JMP GET6 /LOOP +CCHECK, TAD I X10 /IS IT A COMMENT ? + TAD (-303 + SNA CLA + JMP SKPCOM /COMMENT, SKIP REST +NOCMNT, TAD CHAR /WAS SIXTH CHAR A BLANK ? + TAD MMM240 + SNA CLA + JMP GOTLIN /YES, NO MORE CONTINUATIONS +CCARD, TAD X16 /IGNORE THESE SIX CHARACTERS + DCA CHRPTR + JMP RDLOOP /CONTINUE WITH THIS LINE +GOTLIN, TAD CHRPTR /COMPUTE -NCHARS-1 + CIA + TAD (LINE+4 + DCA NCHARS + TAD [LINE-1 /RESET CHAR POINTER + DCA CHRPTR + JMS I [CKCTLC /CHECK FOR CONTROL C +LINE1, DCA THSNUM /ZERO CURRENT STMT NUMBER + CLL CML RAR /SET LABEL DEFINE BIT + JMS I [STMNUM /GO LOOK FOR LABEL + JMP COMPIL /NONE THERE + TAD SNUM /SAVE STATEMENT NUMBER + DCA THSNUM + TAD (DEFLBL /OUTPUT DEFINITION FOR THIS LABEL + JMS I [OUTWRD + TAD SNUM + JMS I [OUTWRD /FOLLOWED BY THE LABEL ADDRESS +COMPIL, JMS I [SAVECP + ISZ LINENO /2.01/ PUT LINE NUMBER + TAD LINENO /2.01/ INTO MQ + 7421 /2.01/ + CLA IAC + DCA NOCODE /SET NOCODE SWITCH + JMS I [ERMSG /SET UP DEFAULT ERROR MESSAGE + 1513 + JMS I [LEXPR /IS IT ARITHMETIC ? + JMP NOTAR /NO + JMS I [GETC /LOOK FOR = + JMP NOTAR /NOT ARITHMETIC + TAD MMM275 /= + SNA CLA + JMS I [EXPR /SCAN LEFT PART + JMP NOTAR + JMS I [ERMSG /SET MESSAGE TO ILLEGAL OPERATOR + 1720 + ISZ NCHARS /SHOULD BE NOTHING LEFT + JMP NOTAR /IF THERE IS, ITS NOT ARITHMETIC +ITSAR, JMS I [RESTCP /RESTORE TO START OF LINE + DCA NOCODE /ALLON CODE + JMS I [LEXPR /GET LEFT SIDE +M6, -6 /V3C MUST BE HERE + JMS I [GETC /SKIP = +MMM240, -240 /SHOULD NEVER GET HERE + CLA + JMS I [EXPR /GET RIGHT SIDE +MMM275, -275 /SHOULD NEVER GET HERE + TAD (STOROP /OUTPUT STORE + JMS I [OUTWRD + JMP I [NEXTST /DO NEXT LINE +NOTAR, JMS I [RESTCP /RESTART LINE + DCA NOCODE + JMS I [SAVECP /RESAVE CHAR POSITION + TAD (CMDLST-1 + DCA X10 + JMP I (CMDLUP /GO SEARCH FOR KEYWORD + / KEYWORD SEARCH + PAGE +CMDLUP, CDF 10 /TABLE IN FIELD ONE + TAD I X10 /GET NEXT 2 CHARS OF KEYWORD + SZA + JMP CMDLP2 /NOT DONE YET + CLL CMA RAL /REMOVE CHAR POS FROM STACK + TAD STACK + DCA STACK + TAD I X10 /GET ROUTINE ADDRESS + CDF + DCA STMJMP + JMP I STMJMP /JUMP TO THE ROUTINE +CMDLP2, DCA TEMP /SAVE THE TWO CHARS + CDF + JMS I [GET2C /GET TWO CHARS FROM THE INPUT + JMP .+4 /NOT ENOUGH CHARS, CAN'T BE THIS ONE + TAD TEMP /COMPARE + SNA CLA + JMP CMDLUP /MATCHES, KEEP GOING + JMS I [RESTCP /RESTORE CHAR POS + ISZ STACK + ISZ STACK /AND SAVE IT AGAIN + CDF 10 + TAD I X10 /FIND END OF THIS COMMAND + SZA CLA + JMP .-2 + ISZ X10 /SKIP ROUTINE ADDRESS + TAD I X10 /IS THE LIST EXHAUSTED ? + SZA + JMP CMDLP2 /NO, GO AGAIN +BADCMD, JMS I [ERMSG /TREAT AS BAD ARITHMETIC STMT +ERCODE, 0 + / END OF STMT PROC +NEXTLN, +NEXTST, +DOENDR, TAD STKLVL /RESET STACK POINTER + DCA STACK + JMS I [POP /LOOK FOR DO END + CIA + TAD THSNUM /DOES THIS LINE END A DO LOOP ? + SZA CLA + JMP NODOND /NO, REPLACE STACK AND COMPILE STMT + TAD (DOFINI + JMS I [OUTWRD /OUTPUT DO END COMMAND + JMS I [POP /GET INDEX VARIABLE + JMS I [OUTWRD + TAD STACK /RESET STACK BASE LEVEL + DCA STKLVL + TAD DOEND /WAS THIS A LEGAL ENDING STMT ? + SZA CLA + JMS I [ERMSG + 0504 /DO END ERROR + DCA DOEND /KILL SWITCH + JMP DOENDR +NODOND, ISZ STACK /REPLACE STACK ENTRY + DCA DOEND /KILL SWITCH + TAD (EOLCOD /OUTPUT EOL CODE + JMS I [OUTWRD + DCA ERCODE /RESET ERROR CODE + DCA IFSWIT /KILL IF SWITCH + TAD (-6 /MOVE FIRST 6 CHARS + DCA NCHARS + TAD [LINE-1 /INTO START OF BUFFER + DCA CHRPTR + TAD I X16 + DCA I CHRPTR + ISZ NCHARS + JMP .-3 + JMP I (RDLOOP + / GOTO'S +GOTO, ISZ DOEND /DO END ILLEGAL + JMS I [STMNUM /IS IT A SIMPLE GOTO ? + JMP CMPGO2 /NO, SEE IF ITS A COMPUTED ONE + TAD (GO2OPR /OUTPUT GOTO OPERATOR + JMS I [OUTWRD + TAD SNUM /FOLLOWED BY STMT NUMBER + JMS I [OUTWRD + JMP I [NEXTST +CMPGO2, JMS I [GETC /LOOK FOR ( + JMP BADGO2 /BAD GOTO + TAD (-250 + SZA CLA + JMP ASNGO2 /NOT ( , MAYBE ITS AN ASSIGNED GOTO + TAD STACK /SAVE STACK POSITION + DCA X12 + DCA TEMP /ZERO BRANCH COUNTER +GO2LUP, JMS I [STMNUM /GET NEXT STMT NUMBER + JMP BADGO2 /MUST BE THERE + TAD SNUM + JMS I [PUSH /SAVE IT TEMPORARILY + ISZ TEMP /BUMP BRANCH COUNT + JMS I [COMARP /LOOK FOR COMMA OR RIGHT PAREN + JMP BADGO2 /NEITHER + JMP GO2LUP /COMMA, GO GET NEXT LABEL + JMS I [GETC /SKIP NEXT CHAR (ITS A COMMA) + JMP BADGO2 + CLA + TAD TEMP /SAVE COUNT + JMS I [PUSH /ON STACK + JMS I [EXPR /COMPILE INDEX EXPR + JMP I [NEXTST + TAD (CGO2OP /OUTPUT COMPUTED GOTO OPERATOR + JMS I [OUTWRD + JMS I [POP /GET COUNT + CIA + DCA TEMP /SAVE COMPLEMENT + TAD TEMP + CIA + JMS I [OUTWRD /OUTPUT COUNT + TAD X12 /RESTORE STACK POINTER + DCA STACK + TAD I X12 /MOVE STMT NUMBERS TO OUTPUT + JMS I [OUTWRD + ISZ TEMP + JMP .-3 + JMP I [NEXTST +ASNGO2, JMS I [BACK1 /PUT BACK NON ( + JMS I [LEXPR /GET ASSIGN VAR + JMP BADGO2 + TAD (AGO2OP /OUTPUT GOTO OPERATOR + JMS I [OUTWRD + JMP I [NEXTST +BADGO2, JMS I [ERMSG + 0724 + JMP I [NEXTST + / I/O STATEMENTS + PAGE +RDWR, 0 /SUBR FOR IO STATEMENTS + JMS I [CHECKC /LOOK FOR ( +M250, -250 + JMP BADRD + JMS I [EXPR /COMPILE UNIT + JMP I [BADCMD + JMS I [COMARP + JMP DAQUOT /LOOK FOR ' (DIRECT ACCESS I/O) + JMP RDFMT /, + TAD (BINRD1 /FORMATLESS READ/WRITE +IOSTRT, TAD I RDWR /ADD ADJUSTOR + JMS I [OUTWRD /OUTPUT BINARY READ +IOLIST, JMS I [PUSH /MARK STACK + JMS I [GETC /IS IT AN IMPLIED DO ? + JMP ENDIOL /NO, END OF LIST + TAD M250 + SZA CLA + JMP TRYIOE /NO, LOOK FOR IO ELEMENT + JMS I [SAVECP /SAVE CHAR POS AT START OF IDO + DCA IDOPAR /ZERO PAREN COUNTER +FINDND, JMS I [GETNAM /GET A NAME IF THERE IS ONE +XPURGE, PRGSTK /DON'T WORRY ITS A NOP + JMS I [GETC /GET A CHAR + JMP ENDIOL + TAD M251 /IS IT A ) ? + SNA + JMP RPIOL /YES + IAC /IS IT ( ? + SNA + JMP LPIOL /YES + TAD (250-275 /IS IT = ? + SZA CLA + JMP FINDND /NONE OF THESE + TAD IDOPAR /IS PAREN COUNT 0 ? + SZA CLA + JMP FINDND /NO, ITS FROM AN INNER LOOP + JMS I [LOOKUP /THIS ELEMENT IS THE DO INDEX + DCA DOINDX + JMS I (DOSTUF /COMPILE THE LOOP + JMP BADIOL /ERROR IN DO PARMS + JMS I [CHECKC /MUST HAVE ) + -251 + JMP BADIOL + TAD CHRPTR /SAVE CHAR POSITION + DCA TEMP + TAD NCHARS + DCA TEMP2 + JMS I [RESTCP /RESTORE TO START OF IMPLIED LOOP + TAD TEMP2 /NOW SAVE POS AFTER LOOP + JMS I [PUSH + TAD TEMP + JMS I [PUSH + TAD DOINDX /AND DO INDEX + JMP IOLIST +LPIOL, ISZ IDOPAR /( INCREASES COUNT + JMP FINDND +RPIOL, CMA /) DECREASES COUNT + TAD IDOPAR + SMA + JMP FINDND-1 + CLA +BADIOL, +BADRD, JMS I [ERMSG /BAD IO STMT + 2227 + JMP I [NEXTST +TRYIOE, JMS I [BACK1 /PUT BACK NON ( + JMS I [LEXPR /GET IOLIST ELEMENT + JMP BADRD /NOT THERE, ERROR + JMS I [GETC /LOOK FOR A COMMA + JMP .+4 /EOL + TAD (-254 + SZA + JMP NOTIOL /NOT AN ELEMENT + TAD (IOLMNT /OUTPUT OPCODE + JMS I [OUTWRD + JMP IOLIST+1 +NOTIOL, TAD (254-275 /IS IT AN = (END OF IDO) + SZA CLA + JMP BADIOL /NO, BAD + JMS I [POP /GET STUFF FROM THE STACK + SNA + JMP BADIOL /ZERO IS BAD + DCA DOINDX /THIS IS THE INDEX + JMS I [RESTCP /GET THE CHAR POSITION + TAD XPURGE /OUTPUT PURGE OPERATOR + JMS I [OUTWRD /BECAUSE AN EXTRA IS ON THE STK + TAD (DOFINI /END LOOP + JMS I [OUTWRD + TAD DOINDX + JMS I [OUTWRD + JMS I [GETC /END OF LIST ? + JMP ENDIOL + TAD (-254 + SZA CLA + JMP BADIOL /MUST BE A COMMA + JMP IOLIST+1 +IDOPAR, 0 +ENDIOL, JMS I [POP /IS THE MARK THERE ? + SZA CLA + JMP BADRD /NO, ERROR + TAD I RDWR + TAD (RCLOSE /END OF IO OPERATION + JMS I [OUTWRD + JMP I [NEXTST +RDFMT, JMS I [STMNUM /LOOK FOR FMT LINE NUMBER + JMP RTFMT + JMS I [OUTWRD /OUTPUT PUSH COMMAND + TAD SNUM /OUTPUT STMT NUMBER OF FORMAT + JMS I [OUTWRD +RDLIST, TAD (FMTRD1 /START OF FORMATTED READ + TAD I RDWR /ADD ADJUSTOR + JMS I [OUTWRD + JMS I [CHECKC /LOOK FOR ) +M251, -251 + JMP BADRD + JMP IOLIST /GO GET IO LIST +RTFMT, JMS I [LEXPR /GET R.T. FORMAT + JMP BADRD + JMP RDLIST /GET LIST + /DIRECT ACCESS I/O + PAGE +DAQUOT, JMS I [BACK1 + JMS I [CHECKC /LOOK FOR ' + -247 + JMP BADRD /SYNTAX IS NO GOOD + JMS I [EXPR /GET RECORD NUMBER EXPR + JMP BADRD + JMS I [CHECKC /LOOK FOR ) + -251 + JMP BADRD + TAD (DARD1 /DIRECT ACCESS OPEN + JMP IOSTRT +FIND, JMP I [NEXTST /COOL ISN'T IT ? +DFINFL, JMS I [EXPR /COMPILE UNIT + JMP BADDEF /BAD DEFINE STMT + DCA STMJMP /PERMIT VARIABLE FOR LOG UNIT + JMS I [CHECKC /( + -250 + JMP BADDEF + JMS I [EXPR /NUMBER OF RECORDS + JMP BADDEF + JMS I [CHECKC /, + -254 + JMP BADDEF + JMS I [EXPR /RECORD SIZE + JMP BADDEF + JMS I [CHECKC /, + -254 + JMP BADDEF + JMS I [CHECKC /U + -325 + JMP BADDEF + JMS I [CHECKC /, +MCOMA, -254 + JMP BADDEF + JMS I [GETNAM /GET INDEX VARIABLE + JMP BADDEF + JMS I [OUTWRD + JMS I [LOOKUP + JMS I [OUTWRD /OUTPUT INDEX VAR + TAD (DEFFIL /OUTPUT DEFINE OPERATOR + JMS I [OUTWRD + JMS I [CHECKC /) + -251 + JMP BADDEF + JMS I [GETC /ANOTHER DEFINE ? + JMP I [NEXTST + TAD MCOMA /, ? + SNA CLA + JMP DFINFL /YES, ANOTHER FILE +BADDEF, JMS I [ERMSG /BAD DEFINE FILE STMT + 0406 + JMP I [NEXTST +RESTCP, 0 /RESTORE CHAR POSITION FROM STACK + JMS I [POP + DCA CHRPTR + JMS I [POP + DCA NCHARS + JMP I RESTCP +INTEGE, JMS I [CHECKC /INTEGER STMT + -322 + JMP I [BADCMD + JMS I [TYPLST + 0101 + 0100 + NOP + JMP I [NEXTST +PAUZE, JMS I [CHECKC /LOOK FOR E + -305 + JMP I [BADCMD + JMS I [GETC /ANY EXPR ? + JMP NOARGP /MAKE IT PAUSE 1 + JMS I [BACK1 /PUT IT BACK + JMS I [EXPR /GET PAUSE NUMBER +XPAUZ, PAUSOP +OPAUZ, TAD XPAUZ /OUTPUT PAUSE OPERATOR + JMS I [OUTWRD + JMP I [NEXTST +NOARGP, JMS I [OUTWRD /PUSH 1.0 + TAD [ONE + JMS I [OUTWRD + JMP OPAUZ /GO PUT OPERATOR +READ, JMS I (RDWR /COMPILE READ STMT + 0 +WRITE, JMS I [CHECKC /LOOK FOR E + -305 + JMP I [BADCMD + JMS I (RDWR /COMPILE WRITE + BINWR1-BINRD1 +CKCTLC, 6401 /CHECK FOR CONTROL C + TAD (7600 + KRS + TAD (-7603 /^C + SNA CLA + KSF + JMP I CKCTLC + JMP I (7600 + +XOCTAL, DCA WORD1 /** + DCA WORD2 + DCA WORD3 /STATEMENT NUM LEFT THERE** + DCA WORD5 + DCA WORD6 +XCTAL1, DCA WORD4 + JMS I [DIGIT /GET NEXT DIGIT + JMP ENDOXT /NO DIGITS LEFT + AND [7 /THROW AWAY SOME BITS + DCA TEMP + JMS I (AL1 /MOVE WORD LEFT THREE + JMS I (AL1 + JMS I (AL1 + TAD WORD4 /ADD DIGIT TO WORD4 + TAD TEMP + JMP XCTAL1 /LOOP +ENDOXT, TAD WORD2 /PUT WORDS INTO THE LEFT PLACE + DCA WORD1 + TAD WORD3 + DCA WORD2 + TAD WORD4 + DCA WORD3 + JMP DATAFP /GO STUFF IT AWAY + / DIMENSION, COMMON, REAL + PAGE +DIMENS, JMS I [IFCHEK + JMS I [CHECKC /CHECK FOR "N" + -316 + JMP I [BADCMD /NO GOOD + JMS I [TYPLST /PROCESS LIST + 0000 /DIMENSION IS THE SIMPLEST CASE + 0000 + NOP /ERROR RETURN + JMP I [NEXTST +REAL, JMS I [IFCHEK /CHECK FOR INSIDE IF + JMS I [TYPLST /PROCESS LIST + 0102 /TYPE-REAL + 0100 + NOP + JMP I [NEXTST +COMPLE, JMS I [CHECKC /CHECK FOR "X" + -330 + JMP I [BADCMD + JMS I [IFCHEK + JMS I [TYPLST /PROCESS COMPLEX LIST + 0103 + 0100 + NOP + CLA IAC /SET DP SWITCH + DCA DPUSED + JMP I [NEXTST +COMMON, JMS I [IFCHEK /BAD INSIDE LOGICAL IF + JMS I [GETC /CHECK FOR SLASH + JMP I [BADCMD + TAD M257 + SZA CLA + JMP BLANKC /MUST BE BLANK COMMON + JMS I [GETNAM /GET NAME OF COMMON + JMP DBLSLS /MIGHT BE // + JMS I [CHECKC /LOOK FOR / +M257, -257 + JMP BADCOM + JMS I [LOOKUP /LOOKUP COMMON NAME + IAC + DCA COMNAM /SAVE ADDR OF TYPE WORD + CDF 10 + TAD I COMNAM /LOOK AT TYPE + SZA + TAD (-111 /MUST BE COMMON OR UNDEF. + SZA CLA + JMP BADCOM + TAD (111 /SET CORRECT BITS + DCA I COMNAM + CDF +DOCOMN, JMS I [TYPLST /HANDLE LIST + 4000 + 5460 + JMP I [NEXTST + TAD X12 + DCA STACK /RESET STACK + CDF 10 + ISZ COMNAM /POINTER TO COMMON INFO + DCA I NEXT /ZERO NEXT PTR WORD + TAD I COMNAM /LOOK FOR END OF LIST + SNA + JMP EOCL /THIS IS IT + DCA COMNAM /PROCEED DOWN LIST + JMP .-4 +EOCL, TAD NEXT /HOOK IN NEXT PART + DCA I COMNAM + TAD NUMELM + DCA I NEXT /NUMBER IN THIS PART + TAD NUMELM + CIA + DCA NUMELM + CDF + TAD I X12 /MOVE VARIABLE PTRS + CDF 10 + DCA I NEXT + ISZ NUMELM + JMP .-5 + CDF + JMS I [GETC /ANOTHER BLOCK ? + JMP I [NEXTST /NO + JMP COMMON+3 /MAYBE +DBLSLS, JMS I [CHECKC /LOOK FOR SECOND SLASH + -257 + JMP BADCOM + SKP +BLANKC, JMS I [BACK1 /PUT BACK NON SLASH + TAD (BLNKCN /USE BLANK COMMON + DCA COMNAM + JMP DOCOMN +BADCOM, JMS I [ERMSG /ERROR IN COMMON STMT + 0317 + JMP I [NEXTST +COMNAM, 0 + / EXTERNAL, FORMAT, BACKSPACE +EXTERN, JMS I [TYPLST /PROCESS LIST + 1000 + 6660 + NOP + JMP I [NEXTST +FORMAT, TAD (FMTOPR /OUTPUT FORMAT OPERATOR + JMS I [OUTWRD + TAD NCHARS /GET NUMBER OF WORDS + CIA + CLL RAR /NWORDS=(NCHARS+1)/2 +FMTLUP, JMS I [OUTWRD /OUTPUT IT + JMS I [GETCWB /GET THE CHARS + JMP I [NEXTST /NO MORE + AND [77 + CLL RTL /SHIFT LEFT 6 + RTL + RTL + DCA TEMP + JMS I [GETCWB /GET OTHER HALF + NOP /IGNORE END OF LINE + AND [77 + TAD TEMP /PUT THEM TOGETHER + JMP FMTLUP /LOOP + /NOTE : THE ENTIRE FORMAT INCLUDING PARENTHESIS () + / IS PASSED TO THE CODE +BACKSP, JMS I [CHECKC /CHECK FOR "E" + -305 + JMP I [BADCMD + JMS I [EXPR /COMPILE UNIT EXPR + JMP I [BADCMD + TAD (BAKOPR /OUTPUT BACKSPACE OPERATOR + JMS I [OUTWRD + JMP I [NEXTST + / OUTPUT ROUTINE + PAGE +OUPTR, OUBUF +OCOUNT, -401 +OUTWRD, 0 /OUTPUT ROUTINE + DCA OWTEMP /SAVE WORD + TAD NOCODE + SZA CLA + JMP I OUTWRD /COOL IT IF NOCODE + ISZ OCOUNT /TEST FOR BUFFER FULL + JMP NOWRIT /STILL SOME ROOM + JMS OUDUMP /DUMP THE BUFFER + TAD OUBLOK-1 /RESET BUFFER PARAMETERS + DCA OUPTR + TAD (-400 + DCA OCOUNT +NOWRIT, TAD OWTEMP /PUT WORD + CDF 10 + DCA I OUPTR /INTO BUFFER + CDF + ISZ OUPTR /MOVE POINTER + JMP I OUTWRD +OULEN, 0 /NUMBER OF BLOCKS LEFT IN HOLE +OUDUMP, 0 /DUMP OUT BUFFER + TAD OULEN /ANY ROOM LEFT ? + SNA + JMP OUERR + IAC + DCA OULEN + JMS I (7607 /CALL SYSTEM HANDLER + 4210 + OUBUF +OUBLOK, 0 + JMP OUERR + ISZ OUBLOK /INCREMENT BLOCK NUMBER + ISZ FILSIZ /ALSO SIZE OF FILE + JMP I OUDUMP +OUERR, JMS I [MESSAG /ERROR IN WRITING OR OPENING FILE + 317 + 306 + / END PASS ONE +XEND, JMS I [CHECKC /LOOK FOR "D" + -304 + JMP I [BADCMD + JMS I [GETC /END MUST BE ALL + JMP ENDX +L7700, SMA CLA /NEVER SKIPS + JMP I [BADCMD +ENDX, CDF 0 + TAD (ENDOPR /OUTPUT END OF FILE + JMS I [OUTWRD + JMS OUDUMP /DUMP BUFFER + CIF 10 + JMS I L7700 /LOCK MONITOR IN + 10 + CIF 10 + CLA IAC + JMS I L200 /CLOSE TEMP FILE + 4 + TMPFIL +FILSIZ, 0 + JMP OUERR + CIF 10 + CLA IAC + JMS I L200 /OPEN PASS 2 OUTPUT FILE +L3, 3 +OBLK, TMPFIL+4 /STARTING BLOCK + 0 /SIZE + JMP OUERR /ERROR + TAD (COMREG-1 /SAVE IMPORTANT STUFF + DCA X10 + TAD NEXT /ADDR OF FREE SPACE + DCA I X10 + TAD STKLVL /STACK LEVEL + DCA I X10 + TAD OUFILE /START OF PASS1 OUTPUT FILE + DCA I X10 + TAD FILSIZ /ALSO THE SIZE + DCA I X10 + TAD PASS2O /START OF PASS2 OVERLAY + DCA I X10 + TAD OBLK /START OF PASS2 OUTPUT FILE + DCA I X10 + TAD OBLK+1 /AND MAX SIZE + DCA I X10 + TAD PROGNM /POINTER TO PROG NAME + DCA I X10 + TAD ARGLST /AND ARG LIST + DCA I X10 + TAD FUNCTN /AND PROG SWITCH + DCA I X10 + TAD DPUSED /STORE THE DP SWITCH + DCA I X10 + TAD VERS /AND THE VERSION NUMBER + DCA I X10 + CIF 10 + JMS I L200 /CHAIN TO PASS TWO + 6 +PASS2B, 0 /FILLED BY ONCE ONLY CODE FOR PASS 1 +RETURN, TAD (RETOPR /OUTPUT RETURN CODE + JMS I [OUTWRD + ISZ DOEND /DO END ILLEGAL HERE + JMP I [NEXTST +COMARP, 0 /LOOK FOR COMMA OR RIGHT PAREN + JMS I [GETC + JMP I COMARP + TAD [-254 /COMMA ? + SNA + JMP .+5 + TAD L3 /RIGHT PAREN ? + SZA CLA + JMP I COMARP + ISZ COMARP + ISZ COMARP /COMMA INCR ONCE + JMP I COMARP +LOGICA, JMS I [CHECKC /LOOK FOR L + -314 + JMP I [BADCMD /NO GOOD + JMS I [TYPLST /PROCESS LIST + 0105 + 0100 +L200, 0200 /NOP + JMP I [NEXTST + / EQUIVALENCE (UGH!) + PAGE +EQUIV, JMS I [IFCHEK /BAD WITH IF + JMS I [CHECKC /LOOK FOR "E" + -305 + JMP I [BADCMD +EQVLUP, JMS I [CHECKC /LOOK FOR ( + -250 + JMP BADEQU + TAD STACK /SAVE STACK POS + DCA X17 + DCA NSLAVE /NUMBER OF SLAVES = 0 + JMS I [GETSS /GET THE MASTER + JMP BADEQU +SVMSTR, CDF 10 /1.03/ CHECK FOR ALREADY EQUIVALENCED + TAD I TEMP2 /1.03/ + CDF /1.03/ + AND (200 /1.03/ (AS A SLAVE) + SZA CLA /1.03/ + JMP DOFUNY /3.01/BACK UP TO ITS MASTER + TAD TEMP2 /SAVE THE MASTER TYPE ADDRESS + DCA MASTER + DCA SFUDGE /3.01/CLEAR OFFSET FUDGE + TAD DIMNUM /SAVE THE MASTER SUBSCRIPT + DCA MNUM +GETSLV, JMS I [COMARP /LOOK FOR , OR ) + JMP BADEQU + JMP DOSLAV /, + TAD NSLAVE /COMPLEMENT THE NUMBER OF SLAVES + SNA + JMP ENDGRP /NO SLAVES + CIA + DCA NSLAVE + TAD X17 /RESTACK THE STORE + DCA STACK +EQLOOP, TAD I X17 /GET NEXT SUBSCRIPT NUMBER + DCA TEMP + TAD I X17 /AND NEXT TYPE WORD ADDRESS + DCA TEMP2 + CDF 10 + TAD I TEMP2 /LOOK AT TYPE WORD + TAD (200 /SET EQUIVALENCE BIT + DCA I TEMP2 + ISZ TEMP2 /MOVE TO EQUIVALENCE/DIMENSION PTR + TAD I TEMP2 /PROPAGATE DIMENSION POINTER + DCA I NEXT /TO EQUIVALENCE INFO BLOCK + TAD NEXT /NOW STORE EQ INFO BLK ADDRESS + DCA I TEMP2 /INTO EQ-DIM POINTER WORD + CLA CMA + TAD MASTER /STORE S.T. ADDR OF MASTER + DCA I NEXT /INTO THE EQUIVALENCE BLOCK + TAD MNUM /OUTPUT NUMBERS + DCA I NEXT + TAD TEMP + DCA I NEXT + CDF + ISZ NSLAVE /ANY MORE SLAVES ? + JMP EQLOOP /YES, EQUIVALENCE NOT YET ATTAINED +ENDGRP, JMS I [GETC /FINI, ALL VARIABLES ARE CREATED + JMP I [NEXTST /EQUIVALENCED + TAD (-254 /IS NEXT CHAR A COMMA ? + SNA CLA + JMP EQVLUP /IF YES, DO NEXT GROUP +BADEQU, JMS I [ERMSG /SYNTAX ERROR IN EQUIVALENCE + 2123 + JMP I [NEXTST +EQUCOM, JMS I [ERMSG /MULTIPLE LEVELS OF EQUIVALENCE OR + 2114 /MORE THAN ONE COMMON VARIABLE + JMP I [NEXTST +DOSLAV, ISZ NSLAVE /ANOTHER SLAVE VARIABLE + JMS I [GETSS /GET THE GOODS + JMP BADEQU + CDF 10 + TAD I TEMP2 /LOOK AT THE TYPE + SMA CLA + JMP SVSLAV /IT ISN'T IN COMMON + TAD I MASTER /LOOK AT THE MASTERS TYPE + SPA CLA + JMP EQUCOM /MASTER IS IN COMMON TOO .. BAD + CDF + TAD MNUM /SAVE THE MAGIC NUMBER + JMS I [PUSH + TAD MASTER + JMS I [PUSH /AND THE S.T. ADDRESS + JMP SVMSTR /NOW GO MAKE THE NEW ONE MASTER +SVSLAV, TAD I TEMP2 /1.03/ PREVIOUSLY EQUIVALENCED ? + AND (200 /1.03/ + SZA CLA /1.03/ + JMP EQUCOM /1.03/ YES, ERROR + TAD DIMNUM /SAVE THE NEW SLAVE + TAD SFUDGE /3.01/ADD OFFSET FUDGE + CDF + JMS I [PUSH + TAD TEMP2 + JMS I [PUSH + JMP GETSLV /AND GO GET THE NEXT SLAVE + +SFUDGE, 0 + /ROUTINE TO HANDLE TRIVIAL CASES OF EQUIVALENCE CHAINING +/THIS WHOLE PAGE IS 3.01 + +DOFUNY, CLA IAC + TAD TEMP2 + DCA MASTER /GET POINTER TO EQUIVALENCE BLOCK + CDF 10 + TAD I MASTER + DCA X12 + CLA IAC + TAD I X12 /GET ADDRESS OF "REAL" MASTER'S + DCA MASTER /TYPE WORD + TAD I X12 + TAD DIMNUM + DCA MNUM /OFFSETS ARE ADDITIVE + TAD I X12 + DCA SFUDGE /SAVE OTHER HALF OF OFFSET TO ADD + CDF /TO SLAVES + JMP GETSLV / (PRAY) + PAGE + / EQUIVALENCE (UGH!) +O1420, 1420 /1.03/ MUST BE FIRST ON PAGE +GETSS, 0 /GET THE LINEARIZED SUBSCRIPT + DCA DIMNUM + JMS I [GETNAM /GET THE VARIABLE + JMP I GETSS + JMS I [LOOKUP + IAC /ADDRESS OF TYPE WORD + DCA TEMP2 + CDF 10 + TAD I TEMP2 + CDF +O200, AND O1420 /1.03/ EXT, STMTFUN, SUBARG ? + SZA CLA + JMP I GETSS + TAD STACK + DCA X12 /SAVE STACK POSITION + DCA TEMP /ZERO NUMBER OF DIMENSIONS + TAD TEMP2 + IAC + DCA EQTEMP /ADDRESS OF EQ-DIM POINTER + JMS I [GETC + JMP I GETSS + TAD (-250 /LOOK FOR ( + SNA CLA + JMP DIMGET-1 /OK + JMS I [BACK1 + JMP RGETSS + DCA DIMNUM /DATA CALLS GETSS WITH AC = 7777 +DIMGET, JMS I (SMLNUM /GET A SUBSCRIPT + CLA CMA + TAD EXPON /SS-1 + JMS I [PUSH /SAVE SS + ISZ TEMP /BUMP COUNT OF SS + JMS I [COMARP /LOOK FOR , OR ) + JMP I GETSS + JMP DIMGET /, + CLA IAC /) + DCA DPRDCT /SET DIMENSION PRODUCT TO 1 + TAD X12 /RESTORE STACK POSITION + DCA STACK + TAD TEMP /COMPLEMENT NUMBER OF SS + CIA + DCA TEMP + CDF 10 + CLL CML RTR /2000 + AND I TEMP2 /HAS VARIABLE BEEN DIMENSIONED ? + SNA CLA + JMP I GETSS /NO, THATS BAD + TAD I EQTEMP /GET ADDRESS OF DIMENSION BLOCK + DCA EQTEMP + TAD I EQTEMP /IS NUMBER OF DIMENSIONS + TAD TEMP /EQUAL TO NUMBER OF SUBSCRIPTS ? + SZA CLA + JMP TRY1SS /1.03/ SEE IF ITS ONE SUBSCRIPT + CLA CLL IAC /+1 V3C + TAD I EQTEMP /+ NUMBER OF DIMENSIONS + TAD EQTEMP /+ ADDRESS OF COUNT WORD + DCA EQTEMP /GIVES ADDRESS OF NEXT TO LAST DIMENSION +LINEAR, CDF + TAD I X12 /GET NEXT SS - 1 + DCA MQ + TAD DPRDCT /MULTIPLY BY THE DIMENSION PRODUCT + JMS MUL12 /WHERE D.P. = 1,D1,D1D2,D1D2D3,... + TAD DIMNUM /ACCUMULATE THE SUM + DCA DIMNUM + CDF 10 + TAD I EQTEMP /ADDR OF LITERAL + IAC + DCA X11 /WORKING POINTER TO VALUE + TAD I X11 /GET DIMENSION INTO FAC + DCA WORD1 + TAD I X11 + DCA WORD2 + TAD I X11 + DCA WORD3 + CDF + JMS I [FIXNUM /GO FIX IT + DCA MQ + TAD DPRDCT /OF THE D.P. SERIES (ABOVE) + JMS MUL12 + DCA DPRDCT + CLA IAC /V3C BUMP POSITION POINTER + TAD EQTEMP + DCA EQTEMP + ISZ TEMP /ANY MORE SS ? + JMP LINEAR /YES +RGETSS, ISZ GETSS + JMP I GETSS +TRY1SS, CLA IAC /1.03/ + TAD TEMP /1.03/ ONLY ONE SS ? + SZA CLA /1.03/ + JMP I GETSS /1.03/ MORE, THATS NO GOOD + CDF /1.03/ + TAD I X12 /1.03/ GET THE SUBSCRIPT + DCA DIMNUM /1.03/ AND RETURN IT + JMP RGETSS /1.03/ +MUL12, 0 /12 BIT UNSIGNED MULTIPLY + DCA OP2 /SAVE OPERAND + TAD (-15 /SET SHIFT COUNT + DCA SC + JMP STMUL +M12LUP, TAD AC + SNL + JMP .+3 + CLL + TAD OP2 + RAR +STMUL, DCA AC + TAD MQ + RAR + DCA MQ + ISZ SC + JMP M12LUP + TAD MQ /RETURN VALUE + JMP I MUL12 + AC=OP3 + SC=OP4 + / IF STATEMENTS + PAGE +IF, JMS I [EXPR /COMPILE CONDITION EXPRESSION + JMP I [BADCMD + JMS I [STMNUM /IS IT ARITHMETIC IF ? + JMP LOGIF + TAD (ARTHIF /START IF COMMAND + JMS I [OUTWRD + CLL CMA RTL + DCA TEMP + ISZ DOEND /DO END ILLEGAL HERE + JMP IFLABL /GET IF LABELS +IFLOOP, JMS I [CHECKC /LOOK FOR , + -254 + JMP I [NEXTST + JMS I [STMNUM /GET NEXT STMT NUMBER + JMP BADIF +IFLABL, TAD SNUM /OUTPUT LABEL + JMS I [OUTWRD + ISZ TEMP + JMP IFLOOP + JMP I [NEXTST +LOGIF, JMS IFCHEK /IF()IF()... NOT LEGAL + ISZ IFSWIT /CLEAR IF SWITCH + TAD (LIFBGN /START LOGICAL IF + JMS I [OUTWRD + JMP I (COMPIL /COMPILE THE STATEMENT +DOSWT, +IFCHEK, 0 /CHECK IF SWITCH + TAD IFSWIT + SNA CLA + JMP I IFCHEK +BADIF, JMS I [ERMSG + 1111 + JMP I [NEXTST + / CALL STMT +CALL, JMS I [SAVECP /SAVE CHAR POS + JMS I [GETNAM /GET SUBROUTINE NAME + JMP BADCAL /NO NAME HERE IS BAD + JMS I [LOOKUP /GET ADDRESS OF TYPE WORD + IAC + DCA TEMP + CDF 10 + TAD I TEMP /LOOK AT TYPE + AND (6640 /ANYTHING BUT EXT OR ARG ? + SZA CLA + JMP BADCAL /YES, BAD + TAD I TEMP /SET EXT BIT + AND (137 /LEAVE TYPE AND ARG BITS + TAD (1000 + DCA I TEMP + CDF + JMS I [RESTCP /RESTORE CHAR POS + CLA IAC /SIGNAL THAT THIS IS A CALL + JMS I [LEXPR /COMPILE IT +XSTORE, DOSTOR /DON'T WORRY VIRGINIA, ITS A NOP + TAD OWTEMP /WHAT WAS THE LAST THING OUT ? + CLL + TAD (-63 /IF LESS THAN 63 + SNL CLA + JMP I [NEXTST /IT WAS AN ARG COUNT + TAD [ARGSOP /OTHERWISE IT WAS AN ARG LESS CALL + JMS I [OUTWRD /SO TELL PASS 2 ABOUT IT + JMS I [OUTWRD + JMP I [NEXTST +BADCAL, JMS I [ERMSG + 2316 + JMP I [NEXTST + / DO DAH, DO DAH +DO, JMS I [IFCHEK /IF(...)DO IS ILLEGAL + JMS I [STMNUM /LOOK FOR ENDING STMT NUMBER + JMP I [BADCMD + JMS I [GETNAM /LOOKUP INDEX VARIABLE + JMP I [BADCMD + JMS I [LOOKUP + DCA DOINDX + JMS I [CHECKC /LOOK FOR = + -275 + JMP I [BADCMD + ISZ DOEND /CAN'T END DO LOOP ON A DO + JMS DOSTUF /GET DO PARAMETERS + JMP BADDO + TAD DOINDX /PUSH DO INDEX + JMS I [PUSH + TAD SNUM /PUSH ENDING STMT NUMBER + JMS I [PUSH + TAD STACK + DCA STKLVL /SAVE NEW STACK BASE + JMP I [NEXTST + +DOSTUF, 0 /SUBR FOR DO LOOP STUFF + JMS I [OUTWRD /OUTPUT DO INDEX + TAD DOINDX + JMS I [OUTWRD + JMS I [EXPR /GET EXPR FOR INITIAL VALUE + JMP I DOSTUF + TAD XSTORE /YES + JMS I [OUTWRD + JMS I [CHECKC /LOOK FOR COMMA +N254, -254 + JMP I DOSTUF + JMS I [EXPR /GET EXPR FOR FINAL VALUE + JMP I DOSTUF + JMS I [GETC /LOOK FOR A COMMA + JMP STEP1 /USE STEP OF 1 + TAD N254 + SZA CLA + JMP STEP1-1 + JMS I [EXPR /GET EXPR FOR STEP + JMP I DOSTUF +DORET, ISZ DOSTUF + TAD (DOBEGN /DO BEGIN OPERATOR + JMS I [OUTWRD + JMP I DOSTUF + JMS I [BACK1 /PUT BACK NON , (OFFICER BELOW LT.) +STEP1, JMS I [OUTWRD /OUTPUT A PUSH 1.0 + TAD (ONE + JMS I [OUTWRD + JMP DORET /FINISH DO STUFF +BADDO, JMS I [ERMSG /BAD DO COMMAND + 0417 + JMP I [NEXTST +BDERR, JMS I [ERMSG /ILLEGAL IN BLOCK DATA + 0223 + JMP I [NEXTST + / TYPE STATEMENT SUBROUTINE + PAGE +TYPLST, 0 /HANDLE LIST FOR TYPE DELL + TAD STACK + DCA X12 /SAVE STACK POINTER + DCA NUMELM + TAD I TYPLST /GET SET BITS + DCA SETBIT + ISZ TYPLST + TAD I TYPLST /AND ILLEGAL BITS + DCA BADBIT + ISZ TYPLST +LSTLUP, JMS I [GETNAM /GET VARIABLE + JMP BADLST + JMS I [LOOKUP /S.T. SEARCH + DCA TLTEMP /SAVE VAR ADDRESS + TAD TLTEMP /PUT IT ON THE STACK + ISZ TLTEMP /NOW POINT TO TYPE WORD + JMS I [PUSH /INCREMENT NUMBER + ISZ NUMELM /INCREMENT NUMBER + CDF 10 + TAD I TLTEMP /COMPARE TYPES + AND BADBIT /CHECK FOR ILLEGAL BITS + SZA CLA + JMP TYPAGN /ATTEMPT TO RE-TYPE + TAD SETBIT /GET SET BITS + CMA /GENERATE MASK + AND I TLTEMP + TAD SETBIT /DO THE SET + DCA I TLTEMP /BUT NOT DIMENSION BIT + CDF +GETDIM, JMS I [GETC + JMP EOL + TAD (-250 /LOOK FOR ( + SZA + JMP NOTDIM /NOT DIMENSIONED + CLA IAC /INITIALIZE MAGIC NUMBER + DCA DSERES + CLA IAC + DCA DPRDCT /AND DIMENSION PRODUCT + TAD STACK + DCA X17 /SAVE STACK POINTER + DCA TEMP2 /DIMENSION COUNT=0 + JMP I (DIMLUP /GET DIMENSIONS +PUTDIM, TAD X17 + DCA STACK /RESTORE STACK + CDF 10 + TAD (3400 /DIM, EXT, SF ? + AND I TLTEMP + SZA CLA + JMP DIMAGN /ATTEMPT TP RE-DIMENSION + CLL CML RTR + TAD I TLTEMP /SET DIMENSION BIT + DCA I TLTEMP + ISZ TLTEMP + TAD TEMP2 /NUMBER OF DIMS. + DCA I NEXT + TAD I TLTEMP /GET EQUIVALENCE POINTER + SZA + DCA TLTEMP + TAD NEXT /STORE POINTER TO + DCA I TLTEMP /DIMENSION INFORMATION + TAD DPRDCT /SAVE DIM PRODUCT + DCA I NEXT + TAD DSERES /AND MAGIC NUMBER + DCA I NEXT + DCA I NEXT /ZERO MAGIC LITERAL POINTER + TAD TEMP2 + CIA + DCA TEMP2 /LEAVE LAST DIM + CDF +MOVDIM, TAD I X17 /1.03/ GET THE DIMENSION + CDF 10 /1.03/ + DCA I NEXT /1.03/ INTO THE DIMENSION INFO BLOCK + CDF /1.03/ + ISZ TEMP2 /1.03/ + JMP MOVDIM /1.03/ +NEXTEL, JMS I [GETC /LOOK FOR , + JMP TLRETN + TAD (-254 + SNA CLA + JMP LSTLUP /OK, GET NEXT MEMBER +ENDLST, JMS I [BACK1 + ISZ TYPLST + JMP I TYPLST +BADDIM, JMS I [ERMSG /DIMENSION ERROR + 0204 + JMP I TYPLST +BADLST, JMS I [ERMSG /ERROR IN LIST + 2404 + JMP I TYPLST +TYPAGN, JMS I [ERMSG + 2224 /RE-TYPE + JMP GETDIM +DIMAGN, JMS I [ERMSG /ATTEMPT TO RE DIMENSION + 2204 + JMP NEXTEL +NOTDIM, TAD (250-254 /IS IT A COMMA? + SZA CLA + JMP ENDLST + JMP LSTLUP /GET NEXT ELEMENT +EOL, +TLRETN, ISZ TYPLST + JMP I TYPLST /TAKE OK EXIT +ENDFIL, JMS I [CHECKC /LOOK FOR "E" + -305 + JMP I [BADCMD + JMS I [EXPR /COMPILE UNIT + JMP I [BADCMD + TAD (ENDFOP /OUTPUT ENDFILE OPERATOR + JMS I [OUTWRD + JMP I [NEXTST +DOUBLE, JMS I [CHECKC /LOOK FOR N + -316 + JMP I [BADCMD + + JMS I [IFCHEK /NOT ON AN IF + JMS I [TYPLST /PROCESS LIST + 0104 + 0100 + NOP + CLA IAC /SET THE DP SWITCH + DCA DPUSED + JMP I [NEXTST + / SYMBOL TABLE LOOKERUPPER + PAGE +LOOKUP, 0 /SYMBOL TABLE LOOKUP FOR VARIABLE ENTRY + TAD NOCODE /IS THIS IN NOCODE MODE ? + SZA CLA + JMP I LOOKUP /YES, DO NOTHING + TAD BUCKET + TAD (ALIST-1 /GET START OF CORRECT BUCKET + CDF 10 +LOOK, DCA OLDN3 /SAVE ADDR OF PREVIOUS ENTRY + TAD I OLDN3 /GET ADDR OF NEXT ENTRY + SNA + JMP HOOKIN /NO NEXT ENTRY, ATTACH NEW ENTRY + TAD (2 /SKIP OVER TYPE AND DIM POINTER + DCA X10 + TAD (NAME1 + DCA PNAME /SETUP POINTER TO NAME + CDF +CHKNAM, TAD I PNAME /GET WORD NAME + CIA CLL + CDF 10 + TAD I X10 /COMPARE WITH THIS ENTRY + SZA CLA + JMP NOTSAM /DIFFERENT + CDF + TAD I PNAME + AND [77 /WAS THIS THE END OF NAME? + ISZ PNAME + SZA CLA + JMP CHKNAM /NO, KEEP COMPARING + CDF 10 +RLOOKU, TAD I OLDN3 /GET ADDR OF START OF ENTRY + CDF /AND RETURN IT IN THE AC + JMP I LOOKUP /RETURN ADDR OF SYMBOL +NOTSAM, SZL + JMP HOOKIN /NEW SYMBOL .NOT. + JMP .+3 /.TRUE. + TAD (NOTOPR /FALSE=.NOT.TRUE + JMS I [PUSH + JMS I [OUTWRD + TAD (TRUE + JMS I [OUTWRD + JMP I (NOSS +CKNOT, TAD BUCKET + TAD (-16 + SZA CLA + JMP OPRAND /MIGHT BE LITERAL .XXXXXX + TAD (NOTOPR /PUSH .NOT. OPERATOR + JMS I [PUSH + JMP UNOPR +UMINUS, TAD (UMOPR /PUSH UNARY MINUS + JMS I [PUSH + JMP UNOPR +OPRAND, JMS I [BACK1 /PUT BACK NON UNARY OPERATOR + JMS I [GETNAM /LOOK FOR VARIABLE REFERENCE + JMP NOTVAR /NOPE. + JMS I [LOOKUP /SYMBOL TABLE SEARCH + JMP I [OPR8R /GO OUTPUT PUSH-VAR +NOTVAR, JMS I [NUMBER /LOOK FOR A LITERAL + JMP NOTNUM /NO KIND OF NUMBER + JMP HOLCHK /INTEGER + JMP DPLIT /DOUBLE PRECISION +FPLIT, JMS I [LUKUP2 /FLOATING, ENTER INTO TABLE + FPLIST + -3 + JMP I [OPR8RL /PUSH VARIABLE, NO SUBSCRIPTS +DPLIT, JMS I [LUKUP2 /DOUBLE-PREC., ENTER IN TABLE + DPLIST + -6 + JMP I [OPR8RL +HOLCHK, JMS I [GETC /IS THIS HOLLERITH? + JMP .+5 + TAD (-310 + SNA CLA + JMP I (HFIELD /YES + JMS I [BACK1 + JMS I [LUKUP2 /FIND THE ENTRY + INTLST + -3 + JMP I [OPR8RL +NOTNUM, JMS I [GETC /LOOK FOR COMPLEX LITERAL + JMP MISARG /MISSING OPERAND + TAD (-250 /OPEN PAREN? + SZA + JMP QUOTE /GO LOOK FOR A STRING + JMS I [SAVECP /SAVE CHAR POSITION + JMS I [NUMBER /GET REAL PART + JMP I (NCMPLX /NO NUMBER + SKP /INTEGER-OK + JMP I (NCMPLX /DOUBLE-NOT LEGAL FOR COMPLEX + JMS I [CHECKC /LOOK FOR , + -254 + JMP I (NCMPLX /NO, CAN'T BE COMPLEX LIT. + TAD WORD1 /SAVE REAL PART + DCA TEMP + TAD WORD2 + DCA TEMP2 + TAD WORD3 + DCA CHAR + JMS I [NUMBER /GET IMAGINARY PART + JMP BADCL /NOT THERE, BAD + SKP /I + JMP BADCL /D-BAD + JMS I [CHECKC /LOOK FOR ) + -251 + JMP BADCL /NO ) BAD + TAD WORD1 /PUT IMAGINARY PART + DCA WORD4 + TAD WORD2 /INTO SECOND AHLF + DCA WORD5 + TAD WORD3 /OF COMPLEX LITERAL + DCA WORD6 + TAD TEMP /NOW RESTORE REAL PART + DCA WORD1 + TAD TEMP2 + DCA WORD2 + TAD CHAR + DCA WORD3 + CLL CMA RAL /REMOVE CHAR POS FROM STACK + TAD STACK /SINCE OTHERWISE IT GOES OUT + DCA STACK /AS CODE + JMS I [LUKUP2 /WHICH WE WILL NOW SEARCH + CMPLST /USE COMPLEX LIST + -6 + JMP I [OPR8RL +BADCL, JMS I [ERMSG /BAD COMPLEX LITERAL + 0314 + JMP I [BADEXP +MISARG, JMS I [ERMSG /MISSING OPERAND + 1517 + JMP I [BADEXP + / EXPRESSION ANALYZER + PAGE +HQUOTE, 0 /SUBR FOR QUOTE STRINGS + JMS I [GETCWB /GET CHAR + JMP BADH + TAD [-247 /IS IT ' + SZA + JMP NOTQ2 /NO + JMS I [GETCWB + JMP LUHOL + TAD [-247 /LOOK FOR '' + SNA CLA + JMP NOTQ2 /REPLACE '' BY ' + JMS I [BACK1 /ITS END OF STRING + JMP LUHOL +NOTQ2, TAD [247 /RESTORE CHAR + AND [77 + JMP I HQUOTE +HFIELD, JMS I [FIXNUM /INTEGERIZE NUMBER + SNA + JMP BADH /ZERO IS BAD + CMA CLL + DCA TEMP + TAD (HCOUNT /SET SUBR POINTER +DOHOL, DCA HCHAR + TAD (-MAXHOL /SET COUNTER FOR MAX + DCA HOLCTR + TAD (NAME1 /SET UP NAME POINTER + DCA TEMP2 +PAKHOL, DCA I TEMP2 /PACK HOLLERITH STRING + JMS I HCHAR + CLL RTL + RTL + RTL + DCA I TEMP2 + JMS I HCHAR + TAD I TEMP2 + DCA I TEMP2 + ISZ TEMP2 + ISZ HOLCTR /CHECK FOR TOO MANY + JMP PAKHOL +BADH, JMS I [ERMSG /BAD OR TOO BIG HOLLERITH FIELD + 1017 + JMP I [BADEXP +LUHOL, TAD (33 /LOOK UP THIS LITERAL + DCA BUCKET + JMS I [LOOKUP + JMP I [OPR8RL +HCOUNT, 0 + ISZ TEMP /CHECK COUNT + SKP + JMP LUHOL /EXPIRED + JMS I [GETCWB /GET CHAR + JMP BADH + AND [77 /6-BIT IZE IT + JMP I HCOUNT +HOLCTR, 0 /COUNTER FOR HOLLERITH FIELDS +NCMPLX, JMS I [RESTCP /NOT COMPLEX LITERAL + JMS I [EXPR /MUST BE SUB EXPRESSION + JMP BADEXP + JMS I [GETC /LOOK FOR ) + JMP PARMM + TAD (-251 + SNA CLA + JMP I (NOSS /NO SUBSCRIPT LEGAL AFTER SUB EXPR +PARMM, JMS I [ERMSG /MISSING ) + 1515 +BADEXP, JMS I [POP /BAD EXPRESSION, + SZA CLA + JMP BADEXP /LOOK FOR STACK MARKER + JMS I [POP + DCA TEMP /RETURN ADDR. + JMP I TEMP + JMS I [BACK1 /PUT BACK TEMINAL CHAR +ENDEXP, JMS I [POP /GET NEXT THING FROM STACK + SNA + JMP EXPDUN /IF ZERO, FINISH + IAC /GET ADDR OF OPERATION NUMBER + DCA TEMP + TAD I TEMP /GET OPERATOR VALUE + JMS I [OUTWRD /OUTPUT OPERATOR XXXXXX + JMP ENDEXP /LOOP +EXPDUN, JMS I [POP /GET RETURN ADDR + IAC + DCA TEMP + JMP I TEMP +LETTER, 0 /GET A LETTER + JMS I [GETC + JMP I LETTER + TAD (-301 + SPA + JMP NLETR + TAD (301-333 + SMA + JMP NLETR + TAD (33 + ISZ LETTER + JMP I LETTER +NLETR, JMS I [BACK1 + JMP I LETTER +QUOTE, TAD (250-247 /IS IT ' + SZA + JMP MISARG /NO, OPERAND IS MISSING + TAD (HQUOTE /SET SUBR POINTER + JMP DOHOL +CHECKC, 0 /CHECK FOR A SINGLE CHAR + TAD I CHECKC /GET THE CHAR + DCA CCTEMP + ISZ CHECKC /SKIP PAST THE CHAR + JMS I [GETC /GET CHAR FROM INPUT + JMP I CHECKC /DIDN'T MAKE IT + TAD CCTEMP /IS THIS IT ? + SNA CLA + ISZ CHECKC /YES + JMP I CHECKC +CCTEMP, 0 + / EXPRESSION ANALYZER + PAGE +BADFSS, JMS I [ERMSG + 2323 + JMP I [BADEXP +OPR8R, DCA TEMP + JMS I [OUTWRD /PUSH + TAD TEMP + JMS I [OUTWRD /OUTPUT OPERAND PTR + JMS I [GETC + JMP I [ENDEXP + TAD (-250 /IS IT S.S. OR FUNCTION + SZA + JMP NOTFSS + TAD STMJMP + TAD (-DFINFL + SNA CLA /FOR D.F.,PERMIT VARPARENS + JMP NOTFSS + ISZ TEMP /LOOK AT TYPE + CDF 10 + TAD (3420 /DIM, EXT, SF, OR ARG ? + AND I TEMP + SZA CLA + JMP NOTFUN /NOT A FUNCTION REFERENCE + TAD I TEMP + TAD (1000 /SET EXT BIT + DCA I TEMP +NOTFUN, CDF + SKP + JMS I [POP /PUT COUNT INTO AC +SSFUN, IAC /INCREMENT ARG COUNT + JMS I [PUSH /SAVE IT ON THE STACK + JMS I [EXPR /GET ARG (OR S.S.) + JMP I [BADEXP + JMS I [COMARP /LOOK FOR , OR ) + JMP BADFSS /NEITHER + JMP SSFUN-1 /, GET NEXT ARG (SUBSCRIPT?) + TAD (ARGSOP /YES, OUTPUT ARGLIST OPER + JMS I [OUTWRD + JMS I [POP /AND THE COUNT + JMS I [OUTWRD +NOSS, JMS I [GETC /GET NEXT CHAR + JMP I [ENDEXP + TAD (-253 /PREPARE IT + JMP NOTFSS+1 +OPR8RL, DCA TEMP /SAVE ADDR OF LITERAL + JMS I [OUTWRD + TAD TEMP + JMS I [OUTWRD + JMP NOSS + / TYPLST PART TWO +DIMLUP, JMS I [NUMBER /GET DIMENSION + JMP VARDIM /MAYBE ITS VAR DIM ? + JMP .+3 /OK, INTEGER + JMP BADDIM + JMP BADDIM /DP AND FP ARE BAD + JMS I [FIXNUM /FIX IT FOR SOME STUFF + DCA MQ + TAD DPRDCT /GET NEW DIMENSION PRODUCT + JMS I [MUL12 + DCA DPRDCT + ISZ TEMP2 /INCREMENT DIM COUNT + TAD WORD2 /IF WORD2 OR AC NON ZERO + TAD AC /DIM IS TOO BIG + SZA CLA /1.03/ + JMP BADDIM /1.03/ + JMS I (ANORM /1.03/ RENORMALIZE THE NUMBER + JMS I [LUKUP2 /1.03/ ENTER IT INTO LITERAL LIST + INTLST /1.03/ + -3 /1.03/ +PSHDIM, JMS I [PUSH /1.03/ AND SAVE ON THE STACK + JMS I [COMARP /LOOK FOR , OR ) + JMP BADDIM + SKP /COMMA MEANS ANOTHER DIM FOLLOWS + JMP PUTDIM /) MEANS END OF DIMS + TAD DSERES /FORM NEXT VALUE OF MAGIC NUMBER + TAD DPRDCT + DCA DSERES + JMP DIMLUP /NOW LOOP FOR NEXT DIM +VDTEMP, 0 +VARDIM, CDF 10 /IS ARRAY AN ARG ? + TAD I TLTEMP + CDF + AND (20 + SNA CLA + JMP BADDIM /NO, BAD DIMENSION + JMS I [GETNAM /OK, GET DIMENSION + JMP BADDIM + JMS I [LOOKUP + IAC + DCA VDTEMP /ADDR OF TYPE WORD + CDF 10 /IS THA VARIABLE AN ARG ? + TAD I VDTEMP + AND (20 + CDF + SNA CLA + JMP BADDIM /NO, THATS BAD + DCA DPRDCT /3.02 ZERO DIM PRODUCT + ISZ TEMP2 /INCREMENT DIM COUNT + CMA /1.03/ + TAD VDTEMP /1.03/ SAVE DIMENSION VARIABLE + JMP PSHDIM /3.02 SAVE DIM ON STACK +MESSAG, 0 /PRINT PASS1 IMMEDIATE ERROR + TAD I MESSAG /GET CHAR ONE + ISZ MESSAG + JMS I (TTYOUT + TAD I MESSAG /GET CHAR TWO + JMS I (TTYOUT + TAD (215 /CR + JMS I (TTYOUT + TAD (212 /LF + JMS I (TTYOUT + JMP I (7605 /EXIT TO MONITOR + / EXPRESSION ANALYZER REVISITED + PAGE +NOTFSS, TAD (250-253 /IS IT + + SZA + JMP .+3 + TAD (ADDOPR /YES + JMP GOTOPR + TAD (253-255 /IS IT - + SZA + JMP .+3 + TAD (SUBOPR /YES + JMP GOTOPR + TAD (255-252 /IS IT * + SZA + JMP NOTMUL /NO + JMS I [GETC + JMP NOTEXP + TAD (-252 /IS IT ** + SZA CLA + JMP .+3 + TAD (EXPOPR /YES + JMP GOTOPR + JMS I [BACK1 +NOTEXP, TAD (MULOPR /IT WAS * + JMP GOTOPR +NOTMUL, TAD (252-257 /IS IT / + SZA + JMP .+3 + TAD (DIVOPR /YES + JMP GOTOPR + IAC /IS IT . + SZA CLA + JMP I (ENDEXP-1 /NO, END OF EXPR + JMS CKEOPR /LOOK FOR EXTENDED OPERATOR + JMP BADOPR /NONE THERE + JMS I [CHECKC /CHECK FOR CLOSING . + -256 + JMP BADOPR /NOT THERE + CDF 10 /3.01/ + TAD I X10 /GET OPERATOR POINTER + CDF + JMP GOTOPR +CKEOPR, 0 /CHECK FOR EXTENDED OPERATOR + JMS I [GETNAM /GET NAME + JMP I CKEOPR /NONE + TAD (OPRLST-1 /PTR TO LIST + DCA X10 +OPRLUP, CDF 10 /3.01/ + TAD I X10 /COMPARE FIRST CHAR + CDF 0 + SNA + JMP I CKEOPR /END OF LIST + TAD BUCKET + SZA CLA + JMP NOTHIS /NOT THIS ONE + CDF 10 /3.01/ + TAD I X10 + CDF + TAD I (NAME1 /COMPARE 2ND AND 3RD + SZA CLA + JMP NOTHIS+1 /NOT THIS ONE + ISZ CKEOPR /BUMP RETURN + JMP I CKEOPR +NOTHIS, ISZ X10 /BUMP LIST PTR + ISZ X10 /AGAIN + JMP OPRLUP /KEEP GOING +BADOPR, JMS I [ERMSG /NOT LEGAL EXT. OPER. + 1720 + JMP I [BADEXP +GOTOPR, DCA NEWOP /SAVE NEWEST OPER. + JMS I [POP /GET STACK TOP + SNA + JMP PUSH2 /EMPTY + DCA OLDOP + TAD I OLDOP /COMPARE PREC. + CIA + TAD I NEWOP /NEW-OLD + SPA SNA CLA + JMP OUTOLD /OLD>NEW + TAD OLDOP +PUSH2, JMS I [PUSH /OLD < NEW + TAD NEWOP /GO PUSH BOTH + JMS I [PUSH + JMP I (UNOPR /GO LOOK FOR NEXT OPERAND +OUTOLD, ISZ OLDOP /OUTPUT OPERATOR + TAD I OLDOP + JMS I [OUTWRD + JMP GOTOPR+1 /TRY NEXT STACK ELEMENT + NEWOP=WORD1 + OLDOP=WORD2 + / UTILITIES +GETCWB, 0 /GET A CHARACTER (PRESERVE BLANKS) + ISZ NCHARS + JMP .+4 + CLA CMA + DCA NCHARS /RESET NCHARS + JMP I GETCWB + ISZ GETCWB + TAD I CHRPTR /GET THE CHAR + JMP I GETCWB +SAVECP, 0 /SAVE CHAR POSITION + TAD NCHARS + JMS I [PUSH + TAD CHRPTR + JMS I [PUSH + JMP I SAVECP +FIXNUM, 0 /FIX FAC (I'M MOVING IT AGAIN) + TAD WORD1 /IS IT FIXED ? + TAD (-27 + SNA + JMP RETFN /YES, EXPONENT IS 23 + SMA CLA + JMP I FIXNUM /BAD IF EXP IS >23 + JMS I (AR1 /RIGHT SHIFT ONE + JMP FIXNUM+1 /TEST AGAIN +RETFN, TAD WORD3 /RETURN LOWEST 12 BITS + JMP I FIXNUM + / UTILITIES + PAGE +GETC, 0 /GET A CHARACTER (IGNORING BLANKS) + ISZ NCHARS + JMP .+4 + CLA CMA + DCA NCHARS + JMP I GETC + TAD I CHRPTR + TAD (-240 /IS IT A BLANK + SNA + JMP GETC+1 /YES IGNORE IT + TAD (240 /FIX CHAR + ISZ GETC + JMP I GETC +ERMSG, 0 /ERROR MESSAGE HANDLER + CDF + TAD NOCODE /IS CODE GENERATION ON ? + SZA CLA + JMP NOTOUT /NO + TAD (ERRCOD /ERROR CODE TO OUTPUT FILE + JMS I [OUTWRD + TAD I ERMSG + ISZ ERMSG + JMS I [OUTWRD + JMP I ERMSG /RETURN +NOTOUT, TAD I ERMSG /SAVE THE ERROR CODE + ISZ ERMSG + DCA ERCODE + JMP I ERMSG +POP, 0 /PUT TOP OF STACK INTO AC + TAD STACK + DCA ERMSG + CLA CMA + TAD STACK + DCA STACK /DECREMENT STACK POINTER + TAD I ERMSG + JMP I POP +TRUFAL, 0 /CHECK FOR LOGICAL LITERALS + JMS I [GETNAM + JMP I TRUFAL + JMS I [CHECKC /LOOK FOR TERMINAL . + -256 + JMP I TRUFAL + TAD BUCKET /LOOK AT FIRST CHAR + TAD (-24 + SNA + JMP .+5 /ITS "T" + TAD (24-6 + SZA CLA + JMP I TRUFAL /ITS NEITHER + ISZ TRUFAL /ITS "F" + ISZ TRUFAL + JMP I TRUFAL + / LEFT HALF EXPRESSION ANALYZER +LEXPR, 0 /GET LEFT HAND EXPRESSION + DCA LETEMP /SAVE CALL SWITCH + JMS I [GETNAM /LOOK FOR VAR NAME + JMP MSNGOP /MUST BE THERE + JMS I [OUTWRD /OUTPUT A ZERO (PUSH) + JMS I [LOOKUP /SEEK OUT ENTRY FOR THIS VAR + DCA TEMP + TAD TEMP + JMS I [OUTWRD + JMS I [GETC /LOOK FOR DIMENSIONS + JMP LEXPOK /NO ( + TAD (-250 + SZA CLA + JMP LEXPOK-1 /NO ( + ISZ TEMP /LOOK AT TYPE + CDF 10 + CLL CML RTR /DIMENSIONED ? + AND I TEMP + TAD LETEMP /OR A CALL ? + TAD NOCODE /OR CODE OFF ? + SZA CLA + JMP NOTSF /YES, NOT AN ARITHMETIC S.F. + TAD I TEMP + AND (1420 /EXT, SF, OR ARG ? + SNA CLA /V3C + TAD [-M6 /SEE IF CALLED FROM SPECIAL PLACE + TAD LEXPR /V3C COMPARE WITH ENTRY PT + SZA CLA + JMP ASFERR /THIS IS BAD IF SO + TAD I TEMP + TAD (400 + DCA I TEMP /SET A.S.F. BIT + CDF + TAD (ASFDEF /DEFINE ASF + JMS I [OUTWRD +NOTSF, CDF + SKP + JMS I [POP /ARG COUNT TO AC +SSLOOP, IAC /INCREMENT SS COUNT + JMS I [PUSH /SAVE ON THE STACK + JMS I [EXPR /COMPILE SUBSCRIPT + JMP FSSBAD+2 /ERROR WITHIN SS + JMS I [COMARP /LOOK FOR , OR ) + JMP FSSBAD /NEITHER (THERE WAS A BUG HERE) + JMP SSLOOP-1 /, GET NEXT ARG/SS + TAD (ARGSOP /OUTPUT SS OPERATOR + JMS I [OUTWRD + JMS I [POP /THEN COUNT + JMS I [OUTWRD + SKP + JMS I [BACK1 /PUT BACK A CHARACTER +LEXPOK, ISZ LEXPR + JMP I LEXPR /RETURN +MSNGOP, JMS I [ERMSG /MISSING OPERAND + 1517 + JMP I LEXPR +FSSBAD, JMS I [ERMSG /MISSING COMMA OR CLOSE PARENTHESIS + 2323 + JMS I [POP /GET ARG COUNT OFF STACK + CLA + JMP I LEXPR +ASFERR, JMS I [ERMSG /BAD ARITHMETIC STMT FUNCTION + 2306 + JMP NOTSF /DO THE REST OF THE ASF DEF +LETEMP, 0 + /UTILITIES + PAGE +G2CTMP, +PUSH, 0 /PUT AC ONTO STACK + DCA I STACK /STORE + TAD (STACKS+100 /CHECK FOR STACK OVERFLOW + CIA CLL + TAD STACK + SNL CLA + JMP I PUSH /OK, RETURN + DCA NOCODE /SET CODE GENERATION ON + JMS I [ERMSG + 2004 + JMP I [NEXTST +GET2C, 0 /GET 2 SIX BIT CHARS INTO ONE WPRD + JMS I [GETC /GET FIRST CHAR + JMP I GET2C + AND [77 + CLL RTL + RTL + RTL + DCA G2CTMP + JMS I [GETC /GET SECOND CHAR + JMP I GET2C + ISZ GET2C /FIX RETURN ADDR + AND [77 + TAD G2CTMP + JMP I GET2C +STMNUM, 0 /PICK UP STATEMENT NUMBER + DCA WORD4 /SAVE DEFINED BIT (IF ANY) + DCA WORD2 /ZERO SOME STUFF + DCA WORD3 + JMS DIGIT /GET A DIGIT + JMP I STMNUM /NONE THERE, NO STMT NUMBER + TAD (-60 /IS IT A LEADING 0 ? + SNA + JMP .-4 /YES, IGNORE IT + TAD (60 + CLL RTL + RTL + RTL + DCA WORD1 + JMS DIGIT /GET SECOND DIGIT + JMP ENDNUM /END OF NUMBER + TAD WORD1 + DCA WORD1 /COMBINE FIRST AND SECOND + JMS DIGIT + JMP ENDNUM + CLL RTL + RTL + RTL + DCA WORD2 + JMS DIGIT + JMP ENDNUM /COMBINE THIRD AND FOURTH + TAD WORD2 + DCA WORD2 + JMS DIGIT /GET FIFTH DIGIT + JMP ENDNUM + CLL RTL + RTL + RTL + DCA WORD3 +ENDNUM, JMS I [LUKUP2 /LOOK UP IN S.T. + SNLIST /STMT NUMBER LIST + -3 + ISZ STMNUM + DCA SNUM /SAVE S.T. ADDRESS OF LABEL + CDF 10 /SET TYPE WORD + TAD SNUM /GET ADDR OF TYPE + IAC + DCA SNTEMP + TAD I SNTEMP /GET TYPE WORD + CLL + TAD WORD4 /PUT IN THE DEFINITION BIT + SNL + DCA I SNTEMP /RESTORE IT IF NOT MULTIPLE DEFN + CDF + SNL CLA + JMP I STMNUM + JMS I [ERMSG + 1514 + JMP I STMNUM +SNTEMP, +DIGIT, 0 /GET A DIGIT + JMS I [GETC /GET A CHAR + JMP I DIGIT + TAD (-272 /IS IT > 271 (9) + SMA + JMP NODIGT /YES, ITS GREATER + TAD (272-260 /IS IT < 260 (0) + SPA + JMP NODIGT /YES, ITS LESS + TAD (60 + ISZ DIGIT + JMP I DIGIT /TAKE SUCCESSFUL RETURN +NODIGT, JMS I [BACK1 /RESTORE NON DIGIT + JMP I DIGIT +ASSIGN, JMS I [STMNUM /GET STMT NUMBER + JMP BADASN + JMS I [GET2C /LOOK FOR "TO" + JMP BADASN + TAD (-2417 + SNA CLA + JMS I [LEXPR /GET ASSIGN VARIABLE + JMP BADASN + TAD (ASNOPR /OUTPUT ASSIGN OPERATOR + JMS I [OUTWRD + TAD SNUM /NOW STMT NUMBER + JMS I [OUTWRD + JMP I [NEXTST +BADASN, JMS I [ERMSG + 0123 + JMP I [NEXTST +TTYOUT, 0 /TTY OUTPUT ROUTINE + TLS + TSF + JMP .-1 + CLA + JMP I TTYOUT + / PRECEDENCE TABLE + PAGE +ADDOPR, 100 + 1 +SUBOPR, 100 + 2 +MULOPR, 200 + 3 +DIVOPR, 200 + 4 +EXPOPR, 500 + 5 +NOTOPR, 30 + 6 +UMOPR, 400 + 7 +EQOPR, 40 + 16 +NEOPR, 40 + 17 +GEOPR, 40 + 10 +GTOPR, 40 + 11 +LEOPR, 40 + 12 +LTOPR, 40 + 13 +ANDOPR, 20 + 14 +OROPR, 10 + 15 +XOROPR, 7 + 20 +EQVOPR, 7 + 21 + / UTILITY ROUTINES +BACK1, 0 /BACK UP ONE CHAR + CLA CMA + TAD NCHARS + DCA NCHARS + CLA CMA + TAD CHRPTR + DCA CHRPTR + JMP I BACK1 +OADD, 0 /ADD OPERAND TO FAC + CLL + TAD OPO + TAD ACO + DCA ACO + RAL + TAD OP6 + TAD WORD6 + DCA WORD6 + RAL + TAD OP5 + TAD WORD5 + DCA WORD5 + RAL + TAD OP4 + TAD WORD4 + DCA WORD4 + RAL + TAD OP3 + TAD WORD3 + DCA WORD3 + RAL + TAD OP2 + TAD WORD2 + DCA WORD2 + JMP I OADD + / FLOATING POINT DIVIDE ROUTINE + PAGE +FPDIV, 0 + JMS I DAR1 /UNNORMALIZE AC BY ONE + TAD OP1 /COMPUTE FINAL EXPONENT + CIA + TAD WORD1 + DCA OP1 /AND SAVE IT + TAD DM74 /SET ITERATION COUNTER + DCA DITCNT + TAD WORD2 + RAL /INITIALIZE LINK +FPDVLP, CLA RAR /COMPARE SIGNS + TAD OP2 + SPA CLA + JMP .+3 + TAD OPMAC /NEGATE OPERAND + JMS I DFNEG + JMS I DOADD /ADD OPERAND AND FAC + TAD D6 /RIGHT SHIFT QUOTIENT + RAL /PRESERVING ADD OVERFLOW BIT + DCA D6 + TAD D5 + RAL + DCA D5 + TAD D4 + RAL + DCA D4 + TAD D3 + RAL + DCA D3 + TAD D2 + RAL + DCA D2 + JMS I DAL1 /LEFT SHIFT FAC ONE + ISZ DITCNT /TEST ITERATION COUNT + JMP FPDVLP + TAD OP1 /PUT QUOTIENT INTO FAC + DCA WORD1 + TAD D2 + DCA WORD2 + TAD D3 + DCA WORD3 + TAD D4 + DCA WORD4 + TAD D5 + DCA WORD5 + TAD D6 + DCA WORD6 + DCA ACO + JMS I DNORM /NORMALIZE + JMP I FPDIV +D2, 0 +D3, 0 +D4, 0 +D5, 0 +D6, 0 +DITCNT, 0 +DAR1, AR1 +DAL1, AL1 +DM74, -74 +OPMAC, OPO-ACO +DFNEG, NEGFAC +DOADD, OADD +DNORM, ANORM + *STACKS-1 + -1 /TO PREVENT SPURIOUS DO ENDS + / NUMERIC CONVERSION ROUTINE + PAGE +NUMBER, 0 /GENERAL NUMBER CONVERSION ROUTINE + DCA ESWIT /ZERO E/D SWITCH + DCA DECPT /ZERO DECIMAL POINT SWITCH + DCA WORD1 /ZERO FAC + DCA WORD2 + DCA WORD3 + DCA WORD4 + DCA WORD5 + DCA WORD6 + DCA ACO + DCA SIGN /CLEAR SIGN SWITCH + JMS I [GETC /GET A CHAR + JMP I NUMBER /NO CHAR IS NO NUMBER + JMS CHKSGN /CHECK FOR SIGN +SIGN, 0 /THIS SWITCH GETS SET + DCA NDIGIT /ZERO DIGIT COUNT +CONVLP, JMS I [DIGIT /GET A DIGIT + JMP TRYDEC /IS THERE A DECIMAL POINT ? + AND [17 + DCA NXTDGT /SAVE THE DIGIT + ISZ NDIGIT /INCR NUMBER OF DIGITS + TAD WORD2 /PREPARE TO MULT BY 10 + DCA OP2 + TAD WORD3 + DCA OP3 + TAD WORD4 + DCA OP4 + TAD WORD5 + DCA OP5 + TAD WORD6 + DCA OP6 + TAD ACO + DCA OPO + JMS I (AL1 /DOUBLE FAC + JMS I (AL1 /DOUBLE AGAIN + JMS I (OADD /TIMES FIVE + JMS I (AL1 /ONE MORE DOUBLING IS TIMES 10 + DCA OP2 + DCA OP3 /PUT NEWEST DIGIT INTO OPERAND + DCA OP4 + DCA OP5 + DCA OP6 + TAD NXTDGT + DCA OPO + JMS I (OADD /ADD IN NEWEST DIGIT + JMP CONVLP +TRYDEC, TAD DECPT /DECIMAL ALREADY ? + SZA CLA + JMP TRYE2 /YES, LOOK FOR EXPONENT + JMS I [GETC /LOOK FOR . + JMP DIGTST /SEE IF THERE WAS ANYTHING + TAD (-256 + SZA + JMP TRYE1 /TRY FOR E + JMS I [SAVECP /SAVE CHAR POS + JMS I (CKEOPR /CHECK FOR SPECIAL CASE OF LIT.RE. + JMP NOLDRE /NOT LIT.RE. + JMS I [RESTCP + JMS I [BACK1 /PUT BACK . IT BELONGS TO RELATIONAL +DIGTST, TAD NDIGIT /ANY DIGITS ? + SNA CLA + JMP I NUMBER /NO, NO NUMBER + JMP INTEGR /TAKE INTEGER EXIT +NOLDRE, ISZ DECPT /SET DECIMAL POINT SW + JMS I [RESTCP /RESTORE CHAR POS + JMP CONVLP-1 /LOOP FOR OTHER DIGITS +TRYE1, JMS I [BACK1 /PUT BACK NON . + TAD NDIGIT /ANY DIGITS YET ? + SNA CLA + JMP I NUMBER /NO, NO NUMBER + JMS EORD /LOOK OR E OR D + JMP INTEGR +TRYE2, JMS EORD /LOOK FOR E OR D +FPNUM, ISZ NUMBER + ISZ NUMBER + DCA EXPON /ZERO EXPONENT + JMS I (DODEC /HANDLE DIGITS RIGHT OF . + JMP DOSIGN-1 /GO DO SIGN +INTEGR, TAD (107 /PUT IN EXPONNT + DCA WORD1 + JMS I (ANORM /NORMALIZE + ISZ NUMBER /BUMP RETURN +DOSIGN, TAD SIGN /CHECK THE SIGN + SZA CLA + JMS I (NEGFAC /NEGATE IF NEGATIVE + JMP I NUMBER /RETURN +CHKSGN, 0 /CHECK FOR SIGN + TAD (-255 /IS IT - ? + SNA + ISZ I CHKSGN /YES, SET SWITCH + SZA + TAD (255-253 /IS IT + ? + SZA CLA + JMS I [BACK1 /RETURN CHAR OTHERWISE + JMP I CHKSGN +EORD, 0 /LOOK FOR E OR D + JMS I [GETC /LOOK FOR E OR D + JMP I EORD + TAD (-304 + CLL RAR + SZA CLA /E OR D? + JMP NOEORD /NO + SZL + ISZ ESWIT /SET SWITCH IF E + SNL + ISZ DPUSED /SET D.P. SWITCH IF D + JMP I (GETEXP /OK, GET EXPONENT +NOEORD, JMS I [BACK1 /PUT IT BACK CAUSE ITS NOT OURS + JMP I EORD +NXTDGT, 0 +REWIND, JMS I [EXPR /COMPILE UNIT + JMP I [NEXTST + TAD (REWOPR /OUTPUT REWIND OPERATOR + JMS I [OUTWRD + JMP I [NEXTST + / NUMERIC CONVERSION ROUTINE + PAGE +SMLNUM, 0 /INPUT A NUMBER <= 4095 +EXPLUP, DCA EXPON /ZERO THE EXPONENT + JMS I [DIGIT /GET THE NEXT DIGIT + JMP I SMLNUM /NUMBER DONE + AND [17 + DCA OPO /SAVE THE DIGIT + TAD EXPON /MULT BY 10 + CLL RAL + CLL RAL + TAD EXPON + CLL RAL + TAD OPO /ADD IN DIGIT + JMP EXPLUP /STORE BACK INTO EXPONENT +GETEXP, DCA ESIGN /ZERO EXPONENT SIGN SWITCH + JMS I [GETC /GET A CHAR + JMP I (FPNUM+1 + JMS I (CHKSGN /IS IT A SIGN +FPRTNE, +ESIGN, 0 /THIS IS THE SWITCH TO SET + JMS SMLNUM /GO GET THE EXPONENT +FIXEXP, TAD ESIGN /CHECK EXPONENT SIGN + SNA CLA + JMP .+4 + TAD EXPON /COMPLEMENT EXPONENT + CIA + DCA EXPON + JMS DODEC /GO HANLE EXPONENT + CLL CML RTL /BUMP RETURN BY TWO (DP) OR 3 (FP) + TAD ESWIT /DEPENDING ON E/D SWITCH + TAD I [NUMBER + DCA I [NUMBER + JMP I (DOSIGN /CHECK THE SIGN +DODEC, 0 + TAD DO107 /NORMALIZE THE NUMBER + DCA WORD1 + JMS I (ANORM + TAD DECPT /WAS THERE A DECIMAL POINT ? + SZA CLA + TAD NDIGIT /HOW MANY DIGITS TO THE RIGHT ? + CIA + TAD EXPON /SUBTRACT THAT NUMBER FROM EXP + SMA + JMP POSEXP /EXPONENT IS POSITIVE + CIA + DCA EXPON /ONLY NEED ABS VALUE + TAD (FPDIV /DO DIVIDES + JMP .+3 +POSEXP, DCA EXPON + TAD (FPMUL /DO MULTIPLIES + DCA FPRTNE /MULTIPLY/DIVIDE ROUTINE + TAD (PETABL-1 /POWERS OF TEN TABLE + DCA X17 +EXPMUL, TAD EXPON /LOOK AT THE EXPONENT + SNA + JMP I DODEC /IF 0 ITS THRU + CLL RAR + DCA EXPON /PUT LOWEST BIT INTO LINK + SNL + JMP SKPEXP /THIS ONE DOESN'T COUNT + CDF 10 /3.01/ + TAD I X17 /MOVE FACTOR INTO OPERAND + DCA OP1 + TAD I X17 + DCA OP2 + TAD I X17 + DCA OP3 + TAD I X17 + DCA OP4 + TAD I X17 + DCA OP5 + TAD I X17 + DCA OP6 + DCA OPO + CDF + JMS I FPRTNE /MULTIPLY OR DIVIDE BY THIS FACTOR + JMP EXPMUL /CHECK NEXT BIT +SKPEXP, TAD X17 /SKIP OVER THIS FACTOR + TAD (6 + JMP EXPMUL-1 +AR1, 0 /SHIFT FAC RIGHT ONE + TAD WORD2 + CLL RAR + DCA WORD2 + TAD WORD3 + RAR + DCA WORD3 + TAD WORD4 + RAR + DCA WORD4 + TAD WORD5 + RAR + DCA WORD5 + TAD WORD6 + RAR + DCA WORD6 + TAD ACO + RAR + DCA ACO + ISZ WORD1 +DO107, 107 + JMP I AR1 + +AL1, 0 /SHIFT FAC LEFT ONE + TAD ACO + CLL RAL + DCA ACO + TAD WORD6 + RAL + DCA WORD6 + TAD WORD5 + RAL + DCA WORD5 + TAD WORD4 + RAL + DCA WORD4 + TAD WORD3 + RAL + DCA WORD3 + TAD WORD2 + RAL + DCA WORD2 + JMP I AL1 + / NUMERIC CONVERSION ROUTINE + PAGE +FPMUL, 0 /FLOATING MULTIPLY ROUTINE + TAD WORD1 /COMPUTE NEW EXPONENT + TAD OP1 + DCA OP1 + TAD WORD2 /SAVE AC MANTISSA + DCA TW2 + TAD WORD3 + DCA TW3 + TAD WORD4 + DCA TW4 + TAD WORD5 + DCA TW5 + TAD WORD6 + DCA TW6 + TAD (-74 /SET ITERATION COUNTER + DCA ITRCNT + DCA WORD2 /ZERO FAC MANTISSA + DCA WORD3 + DCA WORD4 + DCA WORD5 + DCA WORD6 + DCA ACO +MULLUP, JMS I (AR1 /SHIFT FAC RIGHT ONE + TAD TW2 /SHIFT MULTIPLIER RIGHT + CLL RAR + DCA TW2 + TAD TW3 + RAR + DCA TW3 + TAD TW4 + RAR + DCA TW4 + TAD TW5 + RAR + DCA TW5 + TAD TW6 + RAR + DCA TW6 + SZL + JMS I (OADD /ADD IF LINK IS ONE + ISZ ITRCNT /BUMP COUNT + JMP MULLUP /LOOP + TAD OP1 /PUT IN CORRECT EXPONENT + DCA WORD1 + JMS I (ANORM /NORMALIZE THE RESULT + JMP I FPMUL +TW2, 0 +TW3, 0 +TW4, 0 +TW5, 0 +TW6, 0 +ANORM, 0 /NORMALIZE FAC + TAD WORD2 /IS MANTISSA 0 ? + SNA + TAD WORD3 + SNA + TAD WORD4 + SNA + TAD WORD5 + SNA + TAD WORD6 + SNA + TAD ACO + SNA CLA + JMP ZEXP /YES, ZERO EXPONENT +NORMLP, CLA CLL CML RTR /IS HIGH ORDER MANTISSA = 6000 + TAD WORD2 + SZA + JMP NO6000 /NO, SKIP THIS STUFF + TAD WORD3 /YES, IS THE REST 0 ? + SNA + TAD WORD4 + SNA + TAD WORD5 + SNA + TAD WORD6 + SNA + TAD ACO + SZA CLA /SKIP IF 600000 ... 0000 +NO6000, SPA CLA + JMP I ANORM /NORM IS DONE WHEN BITS DIFFER + JMS I (AL1 /SHIFT LEFT ONE + CLA CMA /DECREMENT EXPONENT + TAD WORD1 + DCA WORD1 + JMP NORMLP /LOOP +ZEXP, DCA WORD1 + JMP I ANORM +NEGFAC, 0 /NEGATE FAC + TAD (ACO /GET POINTER TO OPERAND + DCA NFPTR + TAD (-6 /SIX WORD NEGATE + DCA NFCNT + CLL +NFLOOP, RAL + TAD I NFPTR /GET NEXT WORD + CLL CML CIA + DCA I NFPTR /RESTORE AFTER COMPLEMENTING + CML CLA CMA /LINK GETS COMPLEMENTED ONCE HERE + TAD NFPTR /AND ONCE AGAIN HERE + DCA NFPTR /RESTORE DECREMENTED POINTER + ISZ NFCNT + JMP NFLOOP + JMP I NEGFAC +NFPTR, 0 +NFCNT, 0 +ITRCNT, +DHLRTH, 0 /HOLLERITH IN DATA SUBR + ISZ TEMP + SKP + JMP I DHLRTH + ISZ DHLRTH + JMS I [GETCWB + JMP DHOLER + JMP I DHLRTH + / VARIABLE SCANNER + PAGE +GETNAM, 0 /GET VARIABLE NAME + JMS LETTER /FIRST CHAR MUST BE ALPHABETIC + JMP I GETNAM /NO VARIABLE + DCA BUCKET /FIRST ONE IS THE BUCKET + TAD (NAME1 + DCA NPTR /POINTER TO NAME BUFFER + CLL CMA RTL /SIX CHARS MAX (3 WORDS) + DCA NCNT +PAKLUP, JMS LETTER /GET A LETTER + SKP + JMP .+3 /WE GOT IT + JMS I [DIGIT /NO LETTER, IS IT A DIGIT ? + JMP NDONE /NO, NAMES OVER + CLL RTL + RTL + RTL /MOVE CHAR TO A HIGHER PLACE + DCA I NPTR /STORE IT + ISZ NCNT /BUMP COUNTER + JMP MORNAM /MORE TO COME + SKP +NDONE, DCA I NPTR /ZERO NEXT WORD + ISZ GETNAM /FIX RETURN ADDR + JMP I GETNAM +MORNAM, JMS LETTER /GET NEXT CHAR + SKP + JMP .+3 /ITS A LETTER + JMS I [DIGIT + JMP NDONE+1 /NO GOOD, NAMES OVER + TAD I NPTR + DCA I NPTR /COMBINE TWO CHARS + ISZ NPTR + JMP PAKLUP +NPTR, 0 + NCNT=OADD + / DATA STATEMENT +DATA, JMS I [IFCHEK /IF(..)DATA ???? + TAD (DATAST /START DATA STATEMENT + JMS I [OUTWRD +DATLUP, CLA CMA /SET DIMNUM = -1 IF NO SUBSCRIPTS + JMS I [GETSS /GET LIST ELEMENT + JMP DATAER + TAD (DPUSH /OUTPUT DPUSH OPERATOR + JMS I [OUTWRD + CMA + TAD TEMP2 /FOLLOWED BY POINTER + JMS I [OUTWRD + TAD DIMNUM /FOLLOWED BY NUMBER + JMS I [OUTWRD + CDF 10 + TAD I TEMP2 /LOOK AT TYE TYPE + AND (20 /IS IT AN ARG ? + CDF + SZA CLA + JMP DATAER /YES, THATS BAD + JMS I [GETC /, ? + JMP DATAER + TAD (-254 + SNA + JMP DATLUP /LOOK FOR MORE + TAD (254-257 // ? + SZA CLA + JMP DATAER + JMP DLOOP2 /GO LOOK FOR ELEMENT +DATA3, TAD (WORD1-1 + DCA X10 /POINTER TO THE GOODS + TAD I X10 /THEN STUFF + JMS I [OUTWRD + ISZ TEMP + JMP .-3 +NXTDE, TAD (ENDELM /OUTPUT END OF ELEMENT + JMS I [OUTWRD + JMS I [GETC /LOOK FOR COMMA + JMP DATAER + TAD (-254 + SNA + JMP DLOOP2 /YES, GET MORE DATA + TAD (254-257 /SLASH ? + SZA CLA + JMP DATAER /NO, ERROR + JMS I [GETC /ANOTHER DATA GROUP ? + JMP I [NEXTST /NO + TAD (-254 /COMMA ? + SNA CLA + JMP DATA+1 /START A NEW DATA STMT +DATAER, JMS I [ERMSG + 0401 /OK WHEN THIS IS AN AND + JMP I [NEXTST +DHOLER, JMS I [ERMSG + 0410 /HOLLERITH DATA ERROR + JMP I [NEXTST +DQUOTE, 0 /GET CHAR FOR QUOTED DATA + JMS I [GETCWB + JMP DHOLER + TAD [-247 + SZA + JMP DNOTQ2 + JMS I [GETCWB + JMP I DQUOTE + TAD [-247 + SNA CLA + JMP DNOTQ2 /REPLACE '' BY ' + JMS I [BACK1 + JMP I DQUOTE +DNOTQ2, TAD [247 /FIX CHAR + ISZ DQUOTE + JMP I DQUOTE +OUT3WD, 0 /2.02/ OUTPUT 3 WORDS + TAD [DATELM /2.02/ OUTPUT ELEMENT HEAD + JMS I [OUTWRD /2.02/ + TAD (3 /2.02/ AND SIZE + JMS I [OUTWRD /2.02/ + TAD WORD1 /2.02/ NOW THREE WORDS + JMS I [OUTWRD /2.02/ + TAD WORD2 /2.02/ + JMS I [OUTWRD /2.02/ + TAD WORD3 /2.02/ + JMS I [OUTWRD /2.02/ + JMP I OUT3WD /2.02/ + / DATA STATEMENT + PAGE +DLOOP2, JMS I [GETC + JMP DATAER + TAD (-250 /IS CHAR ( ? + SZA + JMP NOCMPD /NO, NOT COMPLEX DATA + JMS I [NUMBER /GET REAL PART + JMP DATAER + SKP + JMP DATAER /DP IS NG WITH COMPLEX + JMS OUT3WD /2.02/ OUTPUT 3 WORDS + JMS I [CHECKC /LOOK FOR COMMA + -254 + JMP DATAER /BAD IF NOT THERE + JMS I [NUMBER /GET IMAGINARY PART + JMP DATAER + SKP + JMP DATAER + JMS I [CHECKC /LOOK FOR ) + -251 + JMP DATAER /NOT THERE + JMP DATAFP /GO MOVE IMAGINARY PART +NOCMPD, IAC /IS IT QUOTED STRING ? + SZA + JMP NQUOTD /NO + TAD (DQUOTE /GET SUBR ADDRESS + JMP HOLDAT /GO HANDLE IT +NQUOTD, TAD (247-317 /IS IT AN O (OCTAL) + SNA + JMP I (XOCTAL /YES + TAD (317-256 /IS IT . + SNA CLA + JMS I (TRUFAL /CHECK FOR TRUE OR FALSE + JMP NOTF /NO TRUE-FALSE, TRY NUMBER + CLL CML RTR /2000 + DCA WORD2 + TAD WORD2 + SZA CLA + IAC + DCA WORD1 /TRUE=1.0 FALSE=0.0 + DCA WORD3 + JMP DATAFP /GO PUT IT +NOTF, JMS I [BACK1 /PUT BACK CHAR + JMS I [NUMBER /TRY FOR A NUMBER + JMP DATAER /ELEMENT MISSING + JMP TRYHOS /IF INTEGER, TRY FOR H OR * + TAD (-3 +DATAFP, TAD (-3 /FP DATA + DCA TEMP /SIZE OF ITEM + TAD [DATELM /DATA ELEMENT SIGNAL + JMS I [OUTWRD + TAD TEMP /THEN SIZE + CIA /ALWAYS POSITIVE + JMS I [OUTWRD + JMP DATA3 /GO OUTPUT THE DATA +TRYHOS, JMS I [GETC /LOOK FOR H + JMP DATAER + TAD (-310 + SZA + JMP TRYSTR /NOT H, MAYBE ITS * + JMS I [FIXNUM /INTEGERIZE IT + SNA + JMP DHOLER /HOLLERITH DATA ERROR + CMA + DCA TEMP /SAVE COUNT + TAD (DHLRTH /GET SUBR POINTER +HOLDAT, DCA HCHAR + CLL CMA RTL /2.02/ COUNT + DCA TEMP2 /2.02/ BY THREES + TAD (WORD1-1 /2.02/ + DCA X10 /2.02/ POINTER +HDLOOP, JMS I HCHAR /GET A CHAR + JMP EOHD /2.02/ + AND [77 /6 BITIZE IT + CLL RTL + RTL + RTL /UPPER-PART-OF-WORDIZE + DCA WORD3 /2.02/ STORAGIZE IT + JMS I HCHAR /GET ANOTHER + JMP LASTHD /LAST HALF WORD MUST GO OUT + AND [77 + TAD WORD3 /2.02/ COMBINIZE THE TWO HALVES + DCA I X10 /2.02/ STORE IT + ISZ TEMP2 /2.02/ THREE AT A TIME + JMP HDLOOP /2.02/ + JMS OUT3WD /2.02/ OUTPUT THREE + JMP HOLDAT+1 /2.02/ GO DO NEXT THREE WDS +EOHD, CLL CML RTL /2.02/ ANY CHARS IN THIS SET ? + TAD TEMP2 /2.02/ + SPA CLA /2.02/ + JMP NXTDE /2.02/ NO, DO NEXT ELEMENT + JMP .+4 /2.02/ YES, FILL IT OUT +LASTHD, TAD WORD3 /2.02/ FILL OUT LOWER CHAR + TAD (40 /2.02/ WITH A BLANK + DCA I X10 /2.02/ + TAD (4040 /2.02/ THEN FILL REST + DCA I X10 /2.02/ WITH BLANKS + TAD (4040 /2.02/ + DCA I X10 /2.02/ + JMP DATAFP /2.02/ GO OUTPUT IT +TRYSTR, TAD (310-252 /* + SNA CLA + JMP .+3 + JMS I [BACK1 /PUT BACK THAT CHAR + JMP DATAFP /ITS JUST AN INTEGER + TAD (DREPTC /REPETITION COUNT + JMS I [OUTWRD + JMS I [FIXNUM + JMS I [OUTWRD /OUTPUT COUNT + JMP DLOOP2 /LOOP + / INITIALIZE READ IN + *6400 +INITLN, TAD IX7772 /READ FIRST SIX CHARS + DCA TEMP + TAD IXLINM + DCA CHRPTR +INITLP, CIF 10 + JMS I [ICHAR /READ A CHAR + JMP INITLN + TAD IXM211 /TAB ? + SZA CLA + JMP NIXTAB /NO THIS ONE + TAD IX0240 + DCA I CHRPTR + ISZ TEMP + JMP .-3 + JMP CHKCOM /DO COMMENT CHECK +NIXTAB, TAD CHAR + DCA I CHRPTR /STORE THE CHAR + ISZ TEMP + JMP INITLP +CHKCOM, TAD I IXLINE /COMMENT ? + TAD IXM303 + SNA CLA + JMP IGNORE /IGNORE IT + TAD I IXLNP5 /CONTINUATION ? + TAD IXM240 + SZA CLA + JMP IGNORE + TAD IX7700 /FIX CALL + CDF 10 /SEE WHAT HAPPENS WHEN YOU MOVE A ROUTINE** + DCA I IXINCL + CDF /** + CIF 10 + JMS I IX200 /REMOVE MONITOR + 11 + CDF 10 /FIX FIELD ONE STUFF + TAD I MOV1 + DCA I MOV2 + ISZ MOV1 + ISZ MOV2 + ISZ MOVCNT + JMP .-5 + CDF + JMP I IXRDFS /LOOK FOR PROG HEADER +MOV1, 2020 +MOV2, 20 +MOVCNT, -160 +IGNORE, CIF 10 /** + JMS I [ICHAR /SKIP TILL CARRIAGE RETURN + JMP INITLN + CLA + JMP IGNORE +IXRDFS, RDFRST +IXINCL, INCALL +IXM240, -240 +IXM303, -303 +IX0240, 0240 +IX200, 200 +IX7600, 7600 +IX7772, 7772 +IXM211, -211 +IX7700, 7700 /V3C + / SEARCH FOR PROGRAM HEADER + PAGE +RDFRST, CIF 10 /** + JMS I [ICHAR /THIS IS A DUPLICATE OF THE CODE + JMP ENDLNF /AT LABEL 'RDLOOP' , ONLY THE + TAD (-211 + SNA + TAD (240-211 + TAD (211 + DCA I CHRPTR /NAMES HAVE BEEN CHANGED TO + ISZ CNT72 + SKP + JMP SKPFL2 + TAD CHRPTR /PROTECT THE ASSEMBLY + CIA CLL /(IT GETS THE FIRST LINE + TAD (LINE+270 /WHICH MAY BE SUBROUTINE OR +/FUNCTION. 1ST LINE SHORTER THAN REST BEC OF BUFFER OVERWRITES** + SZL CLA /OR SOMETHING ELSE, IN WHICH CASE + JMP RDFRST /ITS THE MAIN PROGRAM) + JMS I [ERMSG /LINE TOO LONG + 1424 + JMP SKPFL /SKIP REST +SKPFL2, CIF 10 /** + JMS I [ICHAR + JMP ENDLNF + CLA + JMP SKPFL2 +SKPCMF, TAD X16 /BY ORDER OF THE EMPEROR + DCA CHRPTR /MARIO DE NOBILI +ENDLNF, TAD CHRPTR + DCA X16 + TAD CHRPTR + DCA X10 + TAD (-102 + DCA CNT72 + TAD (-6 + DCA NCHARS +GET6F, CIF 10 /** + JMS I [ICHAR + JMP SKPCMF + TAD (-211 + SZA CLA + JMP NOTABF + TAD (240 + DCA I CHRPTR + ISZ NCHARS + JMP .-3 + TAD (240 + DCA CHAR + JMP CCHEKF +NOTABF, TAD CHAR + DCA I CHRPTR + ISZ NCHARS + JMP GET6F +CCHEKF, TAD I X10 + TAD (-303 + SZA CLA + JMP NOCMTF +SKPFL, CIF 10 /** + JMS I [ICHAR + JMP SKPCMF + CLA + JMP SKPFL +NOCMTF, TAD CHAR + TAD (-240 + SNA CLA + JMP GOTFST +CCARDF, TAD X16 + DCA CHRPTR + JMP RDFRST +GOTFST, TAD CHRPTR + CIA + TAD (LINE+4 + DCA NCHARS + TAD [LINE-1 + DCA CHRPTR + JMS I [SAVECP + TAD (HDRLST-1 + DCA X10 /PREPARE TO SEARCH THE LIST +CLOOP1, CDF 10 /(FNC NAMES UP IN FLD 1)** + TAD I X10 /OF LEGAL HEADER LINES + CDF + SZA /CODE IS AS UNDER 'CMDLUP' + JMP CLOOP2 + CLA CMA RAL + TAD STACK + DCA STACK + CDF 10 /** + TAD I X10 + CDF + DCA TEMP + JMP I TEMP +CLOOP2, DCA TEMP + JMS I [GET2C + JMP BADCMF + CIA + TAD TEMP + SNA CLA + JMP CLOOP1 +SEARCH, CDF 10 /** + TAD I X10 + CDF + SZA CLA + JMP SEARCH + ISZ X10 + JMS I [RESTCP + ISZ STACK + ISZ STACK + CDF 10 /** + TAD I X10 + CDF + SZA + JMP CLOOP2 +BADCMF, JMS I [RESTCP /NOT A FUNCTION OR SUBROUTINE + JMP I (LINE1 /SO GO TO MAIN PART OF COMPILER +BADDIE, JMS I [MESSAG /SOMETHING MISSING FROM SYS + 323 /S + 331 /Y + / ANALYZE PROGRAM HEADER + PAGE +SUBRTN, CLA CMA /SET TO -1 FOR SUBR + JMP XXXFUN+1 +REAFUN, TAD (102 /SET TYPE TO REAL + DCA TYPE + JMP XXXFUN +LOGFUN, IAC /SET TYPE OF FUN +DBLFUN, IAC /WITH DOUBLEMINT GUM ! +CMPFUN, IAC + IAC +INTFUN, TAD (101 + DCA TYPE + JMS I [CHECKC /LOOK FOR 'N' + -316 + JMP BADBGN +XXXFUN, CLA IAC + DCA FUNCTN /SET SWITCH + CDF 10 /1.05/ KILL ENTRY FOR 'MAIN' + DCA I (ALIST+14 /1.05/ BUT DO IT BEFORE THE M BUCKET + CDF /1.05/ CONTAINS ANYTHING USEFULL + JMS I [GETNAM /GET FUNC/SUBR NAME + JMP BADBGN + JMS I [LOOKUP /PUT INTO SYMBOL TABLE + DCA PROGNM + TAD PROGNM /SET UP TYPE + IAC + DCA TEMP + TAD STACK + DCA X12 /SAVE POINTER + DCA TEMP2 /ZERO ARG COUNTER + CDF 10 + TAD TYPE /PUT IN THE TYPE BITS + TAD (1000 + DCA I TEMP + CDF + JMS I [CHECKC /LOOK OFR ( + -250 + JMP ISITFN /IS IT A FUNCTION ? +ARGLUP, JMS I [GETNAM /GET THE ARG + JMP BADBGN + JMS I [LOOKUP + IAC + DCA TEMP /ADDR OF TYPE WORD + CDF 10 + TAD I TEMP + SZA CLA + JMP BADBGN /ALREADY AN ARG + TAD (20 + DCA I TEMP + CDF + CMA + TAD TEMP /OUTPUT ADDR OF ARG + JMS I [PUSH + ISZ TEMP2 /KEEP COUNT + JMS I [COMARP /LOOK FOR , OR ) + JMP BADBGN /NEITHER + JMP ARGLUP /, + TAD TEMP2 /) HOW MANY ARGS ? + CDF 10 + DCA I NEXT /INTO ARG LIST + TAD TEMP2 + CIA + DCA TEMP2 + TAD NEXT /SAVE ADDR OF ARG LIST + DCA ARGLST + CDF + TAD X12 /RESTORE THE STACK + DCA STACK +MOVARG, TAD I X12 /PUT ARGS INTO ARG LIST + CDF 10 + DCA I NEXT + CDF + ISZ TEMP2 + JMP MOVARG + JMP I [NEXTST /DO NEXT LINE + TYPE=WORD6 +ISITFN, TAD FUNCTN /IS IT A FUNCTION + SPA SNA CLA /WITH NO ARGS ? + JMP I [NEXTST /NO, WE'RE OK +BADBGN, JMS I [ERMSG + 2010 + JMP I [NEXTST +BDATA, JMS I [CHECKC /LOOK FOR A + -301 + JMP BADBGN + CLL CMA RAL /SET FUNCTION SWITCH + DCA FUNCTN /2.02/ STORE IT DUMMY!! + TAD (BDLIST-1 /POINTER TO LIST OF PATCHES + DCA X10 +BDLOOP, CDF 10 + TAD I X10 /GET PATCH LOCATION + CDF + SNA + JMP I [NEXTST /NO MORE PATCHES + DCA TEMP /SAVE PATCH ADDRESS + TAD BADJMP /GET ERROR JUMP + DCA I TEMP /STORE IT + JMP BDLOOP /LOOP +BADJMP, JMP I [BDERR + / INITIAL SYMBOL TABLE + FIELD 1 + *2020 + NOPUNC + *20 + ENPUNC + 0 +BLNKCN, 111;0 /BLANK COMMON SLOT +ALIST, 0;0;0;0;0;0;0;0;0;0;0;0;MAIN;0;0;0;0;0;0;0;0;0;0;0;0;0 +HOLIST, 0 +FPLIST, 0 +DPLIST, 0 +INTLST, ONE +CMPLST, 0 +SNLIST, 0 +ONE, THREE;0;1;2000;0 +THREE, SIX;0;2;3000;0 +SIX, 0;0;3;3000;0 +TRUE, 0;0145;0 +MAIN, 0;1000;0;0111;1600 +FREE, 0 + / BLOCK DATA PATCH LIST +BDLIST, IF /BLOCK DATA PATCH LIST + DOUBLE + DO + GOTO + CALL + READ + REWIND + ENDFIL + FORMAT + WRITE + BACKSP + ASSIGN + STOP + PAUZE + DFINFL + FIND + ITSAR + 0 + / INITIALIZATION + *2200 +START, SKP /NON-CHAINED ENTRY POINT + JMP .+5 /CCL ENTRY + CIF CDF 10 /START HERE + JMS I (200 /COMMAND DECODE + 5 + 0624 /DEFAULT EXT IS .FT + TAD I L7600 /IS AN OUTPUT FILE GIVEN ? + SNA CLA + JMP MYFILE /NO, USE FORTRN.TM +MOVOFN, TAD I OFNAME /MOVE NAME INTO PAGE 0 + CDF + DCA I NAMEOF + CDF 10 + ISZ NAMEOF + ISZ OFNAME + ISZ OFNSIZ + JMP MOVOFN +EXTEST, TAD I (7604 /SET DEFAULT EXTENSIONS + SZA + JMP EXTSET + TAD I (7643 + SPA + JMP GETRA /A WAS SET.USE RA + AND L41 /CHECK FOR L+G + SNA CLA + TAD (0610 /USE RL + TAD (1404 /USE LD +EXTSET, DCA I (7604 + TAD I (7604 + CDF 0 + DCA I NAMF + CDF 10 + TAD I (7611 + SNA + TAD (1423 /.LS FOR LISTING + DCA I (7611 + TAD I (7616 + SNA + TAD (1520 /.MP FOR LOAD MAP + DCA I (7616 +EFILE, CLA IAC /OPEN PASS1 OUTPUT FILE + JMS I (200 + 3 +OBLOK, TMPFL2 +OSIZE, 0 + JMP OBAD /BADDIE + CDF + TAD OBLOK /SAVE STARTING BLOCK + DCA OUBLOK + TAD OBLOK + DCA I (OUFILE + TAD OSIZE + DCA OULEN + CDF 10 + CLA IAC + JMS I (200 /GET PASS2 + 2 +SPASS2, PASS2N + 0 + JMP OBAD + CLA IAC + JMS I (200 + 2 +SP2O, PAS2ON /GET PASS2 OVERLAY + 0 + JMP OBAD + CDF /SAVE PASS2 AND PASS2O BLOCKS + TAD SPASS2 + DCA PASS2B + TAD SP2O /SKIP FIRST BLOCK + IAC /ITS THE CORE TABLE + DCA I (PASS2O + CIF + JMP INITLN /GO START COMPILE +MYFILE, CDF /PUT DEFAULT INTO 17600 + TAD I NAMOF + DCA I NAMEOF + TAD I NAMOF /ALSO INTO PAGE 0 + CDF 10 + DCA I OFNAME + ISZ NAMOF + ISZ NAMEOF + ISZ OFNAME + ISZ OFNSIZ + JMP MYFILE + CLA IAC /SET DEV TO SYS + DCA I L7600 + JMP EXTEST /GO OPEN FILE +OBAD, CIF CDF + JMP BADDIE +OFNAME, 7601 /IGNORE DEVICE (ALWAYS USE SYS) +NAMEOF, TMPFIL+4 +NAMOF, TMPFIL +OFNSIZ, -3 +TMPFL2, 0617;2224;2216;2415 /FORTRN.TM +PASS2N, 2001;2323;6200;2326 /PASS2.SV +PAS2ON, 2001;2323;6217;2326 /PASS2O.SV +NAMF, TMPFIL+7 +L7600, +GETRA, 7600 /CLA + TAD (2201 /V3C USE RA + JMP EXTSET +L41, 41 + PAGE +/ PROGRAM HEADER LIST +HDRLST, TEXT 'INTEGERFUNCTIO' + INTFUN + TEXT 'REALFUNCTION' + REAFUN + TEXT 'COMPLEXFUNCTIO' + CMPFUN + TEXT 'DOUBLEPRECISIONFUNCTIO' + DBLFUN + TEXT 'LOGICALFUNCTIO' + LOGFUN + TEXT 'FUNCTION' + XXXFUN + TEXT 'SUBROUTINE' + SUBRTN + TEXT 'BLOCKDAT' + BDATA + 0 + / PS-8 FILE INPUT ROUTINES +/NEED TWO PAGES BEC. MOVING ICHAR OUT OF FIELD 1 REQUIRES +/ALOT OF FIELD DIDDLING. + *5400 +MORCHR, TAD (214 /FIX CHAR + CDF 0 /** + DCA I QCHAR + CDF 10 + TAD I (ICHAR + IAC /UPDATE ADDR + DCA TCHAR + CIF CDF 0 + TAD I QCHAR /RETURN VALUE IN AC + JMP I TCHAR +TCHAR, 0 +QCHAR, CHAR +/ EXTENDED OPERATOR LIST +OPRLST, -01;-1604;ANDOPR + -17;-2200;OROPR + -05;-2100;EQOPR + -16;-0500;NEOPR + -07;-0500;GEOPR + -07;-2400;GTOPR + -14;-0500;LEOPR + -14;-2400;LTOPR + -30;-1722;XOROPR + -05;-2126;EQVOPR + 0 +/ EXPONENT TABLE +PETABL, 0004;2400;0000 /1E1 + 0000;0000;0000 + 0007;3100;0000 /1E2 + 0000;0000;0000 + 0016;2342;0000 /1E4 + 0000;0000;0000 + 0033;2765;7020 /1E8 + 0000;0000;0000 + 0066;2160;6744 /1E16 + 6770;1000;0 + 0153;2356;1326 /1E32 + 6501;2670;2655 + 0325;3023;6017 /1E64 + 5117;7747;6466 + 0652;2235;6443 /1E128 + 7114;0164;6145 + 1523;2523;7565 /1E256 + 7734;7374;7357 + 3245;3430;6320 /1E512 + 2565;1407;2176 +ENDSTM, 211;"E;"N;"D;215;211;215;232 /V3C +/FAKE END STATEMENT USED IF PROGRAM HAS NONE + PAGE + /MAIN PART OF OS/8 INPUT ROUTINES + +ICHAR, 0 /READ CHAR FROM INPUT FILE + CDF 10 + ISZ INJMP /BUMP THREE WAY UNPACK SWITCH + ISZ INCHCT +INJMPP, JMP INJMP +/ CDF ** + TAD INEOF /DID LAST READ YEILD END OF FILE ? + SNA CLA + JMP INGBUF /NO, DO ANOTHER READ +GETNEW, JMS INNEWF /OPEN A NEW INPUT FILE + JMP ENDIN /END OF INPUT +INGBUF, TAD INCTR /BUMP RECORD COUNTER + CLL IAC + SNL + DCA INCTR /RESTORE IF IT HASN'T OVERFLOWED + SZL + ISZ INEOF /SET END OF FILE SWITCH + CDF 10 /** + CIF 0 /** + JMS I INHNDL /DO THE READ + 0210 /ONE BLOCK TO FIELD 1 +INBUFP, INBUF +INREC, 0 + JMP INERR /HANDLER ERROR +INBREC, ISZ INREC /BUMP RECORD NUMBER + TAD INBUFP /RESET BUFFER POINTER +SVIBPT, DCA INPTR /V3C + TAD (-601 /SET CHAR COUNT + DCA INCHCT + TAD INJMPP /RESET THREE WAY JUMP SWITCH + DCA INJMP + JMP ICHAR+1 /GO AGAIN +INERR, ISZ INEOF /EITHER EOF OR BADDIE + SMA CLA + JMP INBREC /END OF FILE, DO NEXT FILE + JMP TERR /INPUT ERROR, GIVE I F AND EXIT +ENDIN, TAD (ENDSTM /V3C IF NO END STATEMENT, FORCE ONE + JMP SVIBPT + +/ENDIN, TAD INCALL /END OF INPUT IS USR IN CORE ? +/ TAD (-200 +/ CIF 0 /** +/ SZA CLA +/ JMP I (ENDX /NO, ITS END OF PROG +TERR, JMS I (MESSAG /YES, BAD INPUT. WAS SQ.BRCK** + 311 + 306 +INJMP, HLT /3 WAY CHAR UNPACK BRANCH + JMP ICHAR1 + JMP ICHAR2 +ICHAR3, TAD INJMPP /RESET JUMP SWITCH + DCA INJMP + TAD I INPTR + AND (7400 /COMBINE THE HIGH ORDER BITS + CLL RTR /OF THE TWO WORDS + RTR + TAD INTMP /TO FORM THE THIRD CHAR + RTR + RTR + ISZ INPTR /BUMP WORD POINTER + JMP ICHAR1+1 /DO SOME COMMON STUFF +ICHAR2, TAD I INPTR /SAVE THE HIGH ORDER BITS + AND (7400 + DCA INTMP /FOR THE THIRD CHAR + ISZ INPTR /GO TO THE SECOND WORD +ICHAR1, TAD I INPTR /GET THE LOW 8 BITS +/ CDF + AND (177 /AND I MEAN ONLY 8 !! + SNA /V3C YOU WERE WRONG - YOU MEANT ONLY 7 + JMP ICHAR+1 + TAD (-32 /IS IT ^Z (END OF FILE) + SNA + JMP GETNEW /YES, LOOK FOR THE NEXT FILE + TAD (232-212 + SNA + JMP ICHAR+1 /IGNORE LINE FEEDS + TAD (212-215 + SNA + JMP ICHARN /RETURN ON CARRIAGE RETURN ** + IAC + SNA + JMP ICHAR+1 /IGNORE FORM FEEDS + JMP I (MORCHR /** +ICHARN, CIF CDF 0 + JMP I ICHAR +INTMP, 0 +INFPTR, 7617 /POINTER TO INPUT FILE LIST +INEOF, 1 +INCHCT, +INNEWF, -1 /FETCH HANDLER FOR NEXT FILE + CDF 0 /** + TAD (INDEVH+1 /THIS IS WHERE IT GOES ** + DCA INHNDL + CDF 10 + TAD I INFPTR /GET NEXT INPUT FILE INFO + SNA + JMP I INNEWF /NO MORE FILES + CDF 10 /WAS CIF 10** + JMS I INCALL /CALL MONITOR + 1 /FETCH HANDLER +INHNDL, 0 /ENTRY ADDR GOES HERE + JMP INERR+3 /THIS CAN'T HAPPEN HERE + TAD I INFPTR /GET LENGTH + AND (7760 + SZA /A ZERO HERE MEANS >=256 BLOCKS + TAD (17 /PUT IN SOME MORE BITS + CLL CML RTR + RTR + DCA INCTR /STORE LENGTH OF FILE + ISZ INFPTR + TAD I INFPTR /GET STARTING RECORD NUMBER + DCA INREC + ISZ INFPTR + DCA INEOF /CLEAR EOF FLAG + ISZ INNEWF + JMP I INNEWF +INCTR, 0 +INCALL, 200 /CHANGED TO 7700 AFTER FIRST TIME +INPTR, 0 + PAGE + / KEYWORD LIST +CMDLST, -1106;0;IF /IF + -0417 + -2502 + -1405 + -2022 + -0503 + -1123 + -1117;0;DOUBLE /DOUBLE PRECISION + -0417;0;DO /DO + -0717 + -2417;0;GOTO /GOTO + -0317 + -1515 + -1716;0;COMMON /COMMON + -0317 + -1520 + -1405;0;COMPLE /COMPLEX + -0317 + -1624 + -1116 + -2505;0;NEXTST /CONTINUE + -0301 + -1414;0;CALL /CALL + -2205 + -0114;0;REAL /REAL + -2205 + -0104;0;READ /READ + -2205 + -2711 + -1604;0;REWIND /REWIND + -2205 + -2425 + -2216;0;RETURN /RETURN + -0516 + -0406 + -1114;0;ENDFIL /ENDFILE + -0516;0;XEND /END + -0411 + -1505 + -1623 + -1117;0;DIMENS /DIMENSION + -0401 + -2401;0;DATA /DATA + -0617 + -2215 + -0124;0;FORMAT /FORMAT + -2722 + -1124;0;WRITE /WRITE + -0521 + -2511 + -2601 + -1405 + -1603;0;EQUIV /EQUIVALENCE + -0405 + -0611 + -1605 + -0611 + -1405;0;DFINFL /DEFINEFILE + -1116 + -2405 + -0705;0;INTEGE /INTEGER + -1417 + -0711 + -0301;0;LOGICA /LOGICAL + -0530 + -2405 + -2216 + -0114;0;EXTERN /EXTERNAL + -0201 + -0313 + -2320 + -0103;0;BACKSP /BACKSPACE + -0123 + -2311 + -0716;0;ASSIGN /ASSIGN + -2001 + -2523;0;PAUZE /PAUSE + -2324 + -1720;0;STOP /STOP + -0611 + -1604;0;FIND /FIND + 0 /END OF LIST + $ + diff --git a/sw/f4/FRTSRC/fcomp.bi b/sw/f4/FRTSRC/fcomp.bi new file mode 100644 index 0000000..6f0f1a5 --- /dev/null +++ b/sw/f4/FRTSRC/fcomp.bi @@ -0,0 +1,168 @@ +$JOB FORTRAN IV ASSEMBLY +/ +.DATE +/ +/ +/ +/ ******************************************************************* +/ ******************************************************************* +/ +/ PAL-8 ASSEMBLY +/ +/ ******************************************************************* +/ ******************************************************************* +/ +/ +.PAL LIBRA +.LOAD LIBRA +.SAVE SYS LIBRA=0;200 +.DELETE LIBRA.BN +/ +/ ******************************************************************* +/ +.PAL LOAD +.LOAD LOAD +.SAVE SYS LOAD=0;200 +.DELETE LOAD.BN +/ +/ ******************************************************************* +/ +.PAL PASS2 +.LOAD PASS2 +.SAVE SYS PASS2 +.DELETE PASS2.BN +/ +/ ******************************************************************* +/ +.PAL PASS2O4 BLOCKS LEFT ONLY DO 4 + TAD [4 + CLL RTR + RTR + RTR + TAD LDRIOC /ADD READ/WRITE + CDF 0 + TAD I (OUTFLD + TAD (-CDF + DCA LDRIOC /STORE R/W + BLOCK COUNT + FLD BITS + TAD BLKBEG + DCA LDRIOA + JMS I [IOHAN /DF MUST BE 0 HERE! + LIMGU /LOADER IMAGE FILE +LDRIOC, 0 +LDRIOA, 0 +LDRIOB, 0 + CDF 10 +LDRIOR, CLA + JMP I LDRIO + SETBGX, 0 + CLA IAC + TAD GPTR + JMS SETBPT /EXTREMELY COMMON SEQUENCE + JMP I SETBGX + +SETBPT, 0 + DCA BPTR /STORE BPTR + CLA IAC + TAD BPTR + DCA BPT2 /AND PTR TO NEXT WD + JMP I SETBPT +ORGMSG, TEXT /ILLEGAL ORIGIN/ +SYMMSG, TEXT /OVER SYMB/ +IOMSG, TEXT %LOADER I/O ERROR% +ENTMSG, TEXT %OS/8 ENTER ERROR% + PAGE + /TTYHAN- TTY HANDLER FOR OUTPUT OF ANY MESSAGE IN ANY FIELD. +/ MESSAGE MUST BE FIELD CONTAINED & TERMINATE WITH 0 +/ HANDLER CAN BE CALLED ACROSS FLDS WITH AC CLR. +/ RTN WITH"IF & DF" SET TO CALLING FLD. +/ +/ CALL CDF X /X=FLD OF CALLER*10 +/ CIF Y /Y=FLD OF TTYHAN*10 +/ JMS TTYHAN +/ CDF Z /Z=FLD OF MESS.BUF +/ BUFADR /MESS BUF. ADDR. +/ +TTYHAN, 0 + TAD (6203 /SETUP MICRO INSTR + RDF /CDF & CIF FOR RTN + DCA CRLFF+1 + TAD I TTYHAN /SET UP FLD OF + DCA TTYCDF /MESS BUF + ISZ TTYHAN + CMA + TAD I TTYHAN /SET UP MESS BUFF ADDR-1 + DCA MESADR + ISZ TTYHAN + DCA MESADR+1 +TTYCDF, 0 + JMS CRLF +TTYLP, ISZ MESADR+1 + JMP .+3 + TAD I MESADR + JMP HAF + ISZ MESADR + CLA CMA + DCA MESADR+1 + TAD I MESADR + RTR + RTR + RTR +HAF, AND [77 + SNA + JMP CRLFF + TAD [240 + AND [77 + TAD [240 + JMS TTYO + JMP TTYLP +CRLFF, JMS CRLF + 0 + JMP I TTYHAN +MESADR, 0 + 0 + RTNOS8, 0 /HERE ON PASS1 FATAL ERROR + STA + CDF 10 + DCA I (OVLTBL /PRINT SYMBOL MAP W/O OVERLAY LENGTH TABLE +DOMAP, JMS I (SYMMAP + CDF + TAD I RTNOS8 /ADDR OF TTY + DCA .+3 /MSG + JMS I [TTYHAN + CDF + 0 + TAD (TTYO + DCA PPACK /FAKE OUT SYMBOL PRINTER + TAD LNONUM + DCA GTYP /PUT LEVEL AND OVERLAY IN GTYP + JMS I (CVLOVL /OUTPUT LEVEL AND OVERLAY + AC7775 + DCA TMP5 /PRINT 3 DIGIT FILE-WITHIN-OVERLAY + TAD MCNT + TAD MBGCNT + IAC + CLL RTL + RAL + JMS I (CVRT + JMS CRLF /OUTPUT CRLF AFTERWARDS + JMP I .+1 /RTN TO + 7605 /OS8 + +LDRNAM, 1;0617;2224;2216;1404 /SYS:FORTRN.LD + ZBLOCK 5 /NO DEFAULT SYMBOL MAP DEVICE + +TTYO, 0 + TLS + TSF + JMP .-1 + CLA + JMP I TTYO +/ +CRLF, 0 + TAD (215 + JMS TTYO + TAD (212 + JMS TTYO + JMP I CRLF + /OS8ER- USED WHEN AN OS/8 ERROR OCCURS WHICH IS FATAL + +OS8ER, 0 + CDF 0 + JMS I [TTYHAN + CDF 0 /FLD OF MESS BUF + SYSERR /ADR OFMESS BUF + JMP I [7605 /RTN TO OS8 + +SYSERR, TEXT /SYSTEM ERROR/ +TYTBL, 4040 /CHARS FOR SMAP + 0530 /EX (EXTERN) + 4040 /GOOD TYPES ARE + 4040 /SPACES + 1505 /ME (MUL ENTRY) + 1523 /MS (MUL SECTN) + 4040 /GEN 8MOD SECT + 4040 /8MOD COM SECT + 4040 /8MOD F1 SECT + PAGE + /IOHAN- I/O HANDLER 1)FETCHES A OS8 DEVICE HANDLER; +/ 2)CHKS FOR E.O.FILE;3)ISSUES CALL TO THE HANDLER. +/ RTN TO CALLER WITH "IOFLG" SET IF +/ NUM OF BLKS TRANSF LESS THAN REQ AMT. +/ CAN BE CALLED FROM ANY FLD +/ IF AC=0,DO ALL OF THE ABOVE. +/ IF AC=DEV NUM,DO ONLY "FETCH"PART +/ +/ CALL CDF X +/ CIF Y +/ JMS IOHAN +/ ADDR /PTR TO UNIT,LEN,STBLK OF FILE IN FLD 1 +/ ARG(1)/OS8 ARG: FCN CTRL WD +/ ARG(2)/ " : TRNASF BUF ADR +/ ARG(3)/ " : REL STBLK OF TRANSF +/ +IOHAN, 0 + DCA UNITSV /SAV DEV NUM IF ONE + DCA IOFLG /CLR FLG + RDF + TAD P6201 + DCA GETCDF+1 + TAD P6203 /SETUP CIF & CDF FOR + RDF /RTN JMP + DCA RTNIO +/FETCH A DEV HANDLER OR LOOKUP ENTRY PT +/IF DESIRED HANDLER IS IN CORE + TAD UNITSV /GET DEV NUM IF ONE + SNA CLA /JUST A FETCH? + JMP .+3 /NO + JMS INQIRE /YES + JMP RTNIO + TAD I IOHAN /GET PTR TO UNIT(DEV NUM) + DCA ULSADR + CDF 10 + TAD I ULSADR /GET DEV NUM + AND [17 + SNA + JMS I [OS8ER + DCA UNITSV + JMS INQIRE +/CHK FOR E.O.FILE + ISZ IOHAN + JMS GETCDF + TAD I IOHAN /GET FCN CTRL WD + CLL RTL /NUM OF PAGES IS CONVRTED + RTL /TO NUM BLKS & PUT + RTL /IN BITS 8-11 + AND [17 + DCA TMP0 /NUM BLKS TO TRANSF + /SETUP FCN CTRL WD; TRANSF BUF ADR; & ABS STBLK OF TRANSF +/FOR OS8 CALL TO HANDLER + TAD I IOHAN /FCN CTRL WD + DCA FCNWD + ISZ IOHAN + TAD I IOHAN /TRANSF BUF ADR + DCA FCNWD+1 + ISZ IOHAN + TAD I IOHAN /GET REL STBLK & BUILD + TAD TMP0 /ABS STBLK + CIA CLL + ISZ ULSADR + CDF 10 + TAD I ULSADR /FILE LEN-(REL STB+NUM BLKS) + SNL SZA /E.O.FILE CONDITION? + JMP .+3 /YES + CLA /NO + JMP SETSBN + TAD TMP0 + SMA SZA /ANY BLKS TO TRANSF? + JMP IOH /YES + CLA /NO +/CHK IF FILE LEN=0; IF SO DO SEQ STUFF + TAD I ULSADR + SNA CLA /SEQ DEV? + JMP IOH+1 /YES + CMA /NO,=-1 IF NUM BLKS TRANSF L.T. REQ + DCA IOFLG + JMP RTNIO +IOH, DCA TMP0 /THIS NUM OF BLKS +/UPDATE FCN CTRL WD IN OS8 CALL + TAD FCNWD + AND (4077 /REMOVE REQ NUM OF PGS + DCA FCNWD /& PUT IN THE + TAD TMP0 /ALTERED NUM + CLL RTR + RTR + RTR + TAD FCNWD + DCA FCNWD + CMA /=-1 IF NUM BLKS TRANSF L.T. REQ + DCA IOFLG +/SETUP STARTING BLK NUMBER +/ +SETSBN, ISZ ULSADR + CDF 10 + TAD I ULSADR /GET ABS STBLK + JMS GETCDF /GET DF + TAD I IOHAN /ADD REL STBLK + DCA FCNWD+2 + TAD I IOHAN /UPDATE REL STBLK + TAD TMP0 /BY NUM BLKS OF TRANSF + DCA I IOHAN + /CALL TO THE HANDLER +P6203, CIF CDF 0 /IOHAN & OS8 DEV HAN IN FLD 0 + KSF /CHK FOR CTRLC + JMP .+5 + KRS + TAD (-203 + SNA CLA + JMP I [7605 + JMS I IOENT +FCNWD, 0 + 0 + 0 + JMP HNDERR /ERROR RETURN OF CALL + ISZ IOHAN +RTNIO, 0 /CIF INSTR + JMP I IOHAN +IOENT, 0 +ULSADR, 0 +UNITSV, 0 +/ +GETCDF, 0 + 0 + JMP I GETCDF + +HNDERR, JMS I [RTNOS8 + IOMSG + /INQIRE- DETERMINE IF DESIRED DEV HANDLER IS IN CORE +/ & IF SO,GET ITS ENTRY PT + DVTBL=7647 +INQIRE, 0 + CDF 10 + TAD UNITSV + TAD (DVTBL-1 + DCA IOENT /ADR OF ENRTY PT IN RESID. TBL + TAD I IOENT /GET ENTRY PT IF ONE + DCA IOENT + TAD IOENT + SZA CLA /DEV HAN WAS IN CORE? + JMP I INQIRE /YES + TAD (7201 /NO + DCA P6201+4 + TAD UNITSV /GET DEV NUM BK +P6201, CDF 0 + CIF 10 + JMS I USR + 1 + 0 + JMS I [OS8ER + TAD .-2 + DCA IOENT + JMP I INQIRE + PAGE + NXTESD, 0 + ISZ EPTR /ADV PTR TO + ISZ EPTR /WD 0 OF + TAD EPTR /NEXT ENTRY + AND [377 /IF AT BLK + SNA CLA /BOUNDARY + TAD [4 /BUMP IT FOUR + TAD EPTR + JMS I [SETEPT + TAD [3 /CHECK FOR + TAD EPTR /END OF + DCA TMP0 /ESD + TAD I TMP0 /TYPE WD + AND [17 /TO AC B8-B11 + SZA /LAST ESD? + ISZ NXTESD /NO + DCA ETYP /SAVE TYPE + JMP I NXTESD + ADVOVR, 0 /UPDATE PASS1 PASS2 ARGS + ISZ MCNT /MORE MODS IN THIS OVR? + JMP SAMOVR /YES + JMS NXTOVR /SET ARGS FOR NEXT OVER + JMP EOLVL /RTN HERE= END OF LEVEL + TAD P2FLG /DOING PASS2 ? + SMA CLA + JMP BY10 /NO + TAD (2 /GET NEW LDR + TAD BSECTP /IMAGE REL BLK + DCA TMP0 /FOR NEXT OVR + TAD TMP0 + DCA NDX0 + TAD I NDX0 /LENGTH OF OVERLAY + TAD I TMP0 /PLUS OLD RELATIVE BLOCK + DCA I TMP0 /EQUALS NEW RELATIVE BLOCK +BY10, TAD LNONUM /ADD 1 TO BITS + TAD (20 /4-7 OF LEVEL + DCA LNONUM /AND OVR LAY NUM + JMP SAMOVR +EOLVL, JMS NXTOVR /GET NXT OVR NEW LEVEL + JMP SAMOV4 /HERE=END OF ALL LEVELS + TAD LNONUM /ADD 1 TO + AND [3400 /THE LEVEL + TAD (400 /BITS (1-3) + DCA LNONUM /AND CLEAR THE OVR BITS + TAD P2FLG + SMA CLA /DOING PASS2 ? + JMP BY7 /NO + TAD [4 + TAD BSECTP /UPDATE BIN SECTION PTR + DCA BSECTP + JMP SAMOVR + BY7, ISZ I (LEVSYM+2 /SET THE INTERNAL LEVEL SYMBOL TO LEVLN+1 + TAD (LEVSYM /ENTER NEW + JMS I [LOOK /LEVEL SYMBOL INTO GST + TAD [4 + TAD LNONUM /SET TYPE + DCA I GPTR /TO PROG SECTION + IAC /SET PTR TO + TAD GPTR /NEW LEVEL + DCA I [LVPTR +LEVRND, TAD I BPT2 + CLL + TAD [377 /ROUND UP OLD LEVEL + AND [7400 /TO A BLOCK BOUNDARY + SZL + ISZ I BPTR /MIND THE CARRIES! + DCA I BPT2 +SAMOVR, TAD [3 /ADV PTR TO + TAD RFPTR1 /NXT RALF + DCA RFPTR1 /MODULE + JMP I ADVOVR +SAMOV4, ISZ ADVOVR /BUMP RETURN + TAD P2FLG + SPA CLA + JMP SAMOVR /SKIP ROUNDUP IF PASS 2 + JMS I (LEVLUP /MERGE OVERLAY SIZE INTO LEVEL SIZE + JMP LEVRND /AND RND UP LAST LEVEL + NXTOVR, 0 /HERE AT END OF OVERLAY + ISZ MTBL /GET NUM OF + TAD I MTBL /MOD IN NXT + SNA /OVR + JMP I NXTOVR /=END OF LEVEL + DCA MBGCNT + TAD MBGCNT + CIA + DCA MCNT + TAD P2FLG + SMA CLA + JMS I (LEVLUP /SET CUR. LEVL =MAX (CUR LEVL, CURNT OVR) + ISZ NXTOVR /RTN P+1 IF + JMP I NXTOVR /NOT END OF LEVEL + + +SETCNT, 0 + TAD (MCTTBL+1 /PTR TO MOD + DCA MTBL /COUNT TBL + TAD I MTBL /-NUM IN + DCA MBGCNT + TAD MBGCNT + CIA /MAIN + DCA MCNT + TAD (MODTBL+3 /PTR TO TOP + DCA RFPTR1 /OF MOD TBL + DCA I (OVRSIZ + DCA I (OVRSIZ+1 + JMP I SETCNT +MTBL, 0 + PAGE + /LOOKUP OR ENTER A SYMBOL INTO +/GLOBAL SYMBOL TABLE (GST). PTR +/TO SYMBOL IN FIELD 1 IS IN +/AC. USUALLY ITS AN ESD. +/RTN P+1=NO MATCH +/RTN P+2=MATCH + +LOOK, 0 + DCA TMP0 /PTR TO SYM + CDF 10 + TAD I TMP0 /SELECT + RTR /BUCKET + RTR /A-Z, SPACE + RTR /OR POUND + AND [77 + TAD (BUCKET-1 /PTR TO BUCKET +LOP5, DCA TMP1 /PTR TO PREV ENTRY + TAD I TMP1 /PTR TO NEXT ENTRY + SNA /0=BUCKET BOTTOM + JMP HOOKIN /NO MATCH + IAC /APPEND SYMBOL + DCA GPTR /LOOK FOR + AC7775 /3 WORD MATCH + DCA TMP2 + TAD TMP0 + DCA EPTR +YUCCH, TAD I EPTR + CIA CLL + TAD I GPTR + SZA CLA + JMP YECCH /SYMBOLS DIFFER + ISZ EPTR + ISZ GPTR + ISZ TMP2 /ALL MATCH? + JMP YUCCH /NO + ISZ LOOK /BUMP RTN +SETTYP, TAD I EPTR /GET ESD TYPE + AND [17 + DCA ETYP + CLA IAC + TAD EPTR + JMS I [SETEPT /BUMP EPTR AND SET EPT2 + TAD I EPTR /GET ESD NUM + RTR /IN B1-B7 + RTR /AND SET + AND (177 /REFERENCE + TAD (ESDPG /POINTER + DCA REFPTR + TAD I GPTR /SET GST + AND [17 /TYPE + DCA GTYP /FIELD BITS OF + TAD I EPTR /VALUE WORDS + AND [7 /CLR + DCA I EPTR /HI 9 + JMP I LOOK + YECCH, SZL /IS NEW GUY LESS THAN GST ENTRY? + JMP HOOKIN /YES HOOK-IN HERE + TAD I TMP1 + JMP LOP5 /TRY NEXT +HOOKIN, TAD I TMP1 /GET FWD LINK + DCA I NDX4 /TO NEXT INTO + TAD NDX4 /NEW. PUT FWD + DCA I TMP1 /LINK TO NEW INTO PREV. + TAD TMP0 /3 SYM + DCA EPTR /INTO GST + AC7775 + DCA TMP2 + TAD I EPTR + DCA I NDX4 + ISZ EPTR + ISZ TMP2 + JMP .-4 + ISZ NDX4 /SET PTR TO + TAD NDX4 /WORD 4 (TYPE) + DCA GPTR /OF GST + ISZ NDX4 /SET PTR TO NEXT + ISZ NDX4 /FREE ENTRY + TAD [7 /SEE IF + TAD NDX4 /GST IS FULL + TAD ENDSYM /END OF GST + SPA SNA CLA + JMP SETTYP /ITS OK + JMS I [RTNOS8 /SYMBOL TABLE + SYMMSG /OVER FLOW +ENDSYM, 1-OVLTBL + +SETEPT, 0 + DCA EPTR + CLA IAC + TAD EPTR + DCA EPT2 /SET PTR TO BOTH WDS OF DBLWD + JMP I SETEPT + GETTYP, 0 /ADV GST PTR + TAD [7 /TO WD 4 OF + TAD GPTR /ENTRY + DCA GPTR /CHECK FOR + TAD GPTR + TAD ENDSYM + SMA CLA + JMP I GETTYP + TAD I GPTR /END OF GST. + SZA CLA /IF NOT END, + ISZ GETTYP /ISZ RETURN. + JMP I GETTYP + +OLINE, 0 /OUTPUT A LINE OF TEXT TO THE SYMBOL MAP + DCA TMP5 +OLINLP, TAD I TMP5 + JMS I (HAFWD + TAD I TMP5 + ISZ TMP5 + AND [77 + SZA CLA + JMP OLINLP + JMS I [PCRLF /DOUBLE SPACE AFTERWARDS + JMS I [PCRLF + JMP I OLINE + PAGE + /HERE TO OUTPUT SYMBOL MAP +/EACH SYMBOL IN GST IS 7 WORDS LONG +/THE FORMAT IS: +/WD0 PTR TO NEXT ALPHABETICAL SYMBOL +/WD1 SYMBOL NAME IN PACKED SIX BIT +/WD2 ASCII. 00 IS INTERPRETED AS SPACE +/WD3 SIX CHARS MAX PER SYMBOL +/WD4 B0=1=TRAP VECT SYMBOL ON PASS1 OR +/ B0=1=PASS2 ERROR, B1-B3=LEVEL NUM +/ (0-7) B4-B7=OVERLAY NUM (0-17) +/ B8-B11=TYPE. TYPE FORMAT IS: +/ 0=END OF ESD TBL (NA TO LDR) +/ 1=ENTRY POINT +/ 2=EXTERN +/ 3=COMMON SECTION +/ 4=PROGRAM SECTION +/ 5=MULTIPLE ENTRY POINT +/ 6=MULTIPLE SECTION +/ 7=GENERAL 8-MODE SECTION +/ 10=FIELD1 8-M0DE SECTION +/ 11=COMMON PG0 8-MODE SECTION +/ 12-17=UNDEFINED +/ +/WD5 B0-B8=PTR TO PARENT SYMBOL (0R 0) +/ ON PASS1 =TRAP VECTOR DISPLACEMENT +/ ON PASS2 +/ B9-B11=FIELD BITS OF SYMBOL +/WD6 ADDR BITS OF SYMBOL + +/OUTPUT FORMAT OF MAP IS: +/ +/SYMBOL VALUE LEVEL OVRNUM TYPE(*) +/ +/THE TYPE COLUMN IS EITHER 2 BLANKS OR +/EX=EXTERN +/ME=MULTIPLE ENTRY POINT +/MS=MULTIPLE SECTION +/ASTERISK MEANS SOME TYPE OF ILLEGAL +/REFERENCE TO A SYMBOL AND USUALLY +/MEANS A LOADER ORIGINATED TRAP HAS +/BEEN GENERATED SOMEWHERE IN THE BINARY +/E.G. SUBR GROG AT LEVEL 2 CALLS SUBR +/COLUMBO AT LEVEL 1. A USER 7 TRAP +/WOULD BE GENERATED IN SUBR GROG, AND +/THE SYMBOL COLUMBO WOULD HAVE AN +/ASTERISK ASIDE OF IT IN THE TYPE +/COLUMN + SYMMAP, 0 + CDF + TAD I (LDRNAM+5 /MAP UNIT + SNA /IS IT 0 ? + JMP NOMAP /YES, NO MAP TO OUTPUT + JMS I [IOHAN /FETCH HANDLER + TAD I (LDRNAM+5 /ENTER OUTPUT + CIF 10 + JMS I USR + 3 +MPBLK, LDRNAM+6 + 0 + JMP ENTERR /WHOOPS WE HAVE AN ENTER ERROR + TAD I (LDRNAM+5 + AND [17 + CDF 10 + DCA I (SMAPU /STORE SYMBOL MAP UNIT + TAD (SMAPU /SYMMAP ARGS + DCA NDX0 /FOR I/O + TAD MPBLK+1 /LENGTH + CIA + DCA I NDX0 + TAD MPBLK + DCA I NDX0 + TAD (BUCKET /START AT 1ST + DCA RLEN /BUCKET (A) + TAD (-42 /DO UP UNTIL BUT NOT INCL. + DCA RBLK /POUND SIGN + AC7775 /INIT PACK ARGS + DCA FATAL + TAD (RALFBF + DCA TMP4 + TAD SM600 + DCA BLKCNT + JMS I [PCRLF + TAD (TLINE + JMS I (OLINE + TAD (STLINE + JMS I (OLINE /OUTPUT TITLE AND SUBTITLE + TAD I RLEN /1ST SYM +LOP10, DCA GPTR + TAD GPTR /ANY MORE IN + SZA /THIS BUCKET ? + JMP JOUSYM /YES + ISZ RLEN /NXT BUCKET + ISZ RBLK /DONE ALL + JMP LOP10-1 /NO + ISZ SWITZ /BEEN HERE BEF? + JMP DUNMP /YES ALL DONE + CLA CMA /SET FOR JUST + DCA RBLK /POUND SYMS + TAD SVMAIN + SNA /DO ONLY #MAIN? + JMP LOP10-1 /NO - DO ALL # SYMBOLS +PRMAIN, CLA /** REPLACED WITH JMS I (OUTSYM ** + DUNMP, TAD [-4 /OUT PUT + DCA TMP5 /THE HIGHEST LOCATION + TAD A1 /USED BY THE PROGRAM + TAD (4060 /FLD BITS + JMS HAFWD + TAD A1+1 + JMS I (CVRT + TAD (HLINE + JMS I (OLINE /PRINT " = HIGHEST LOC USED" + JMS I (PROVLY /PRINT OVERLAY TABLE +SM600, CLA /** AC NOT 0 ON RETURN** + TAD (214 + JMS I PPACK + TAD (232 /CTRL Z +OUFILP, JMS I PPACK + TAD BLKCNT /HAVE WE FILLED + TAD [600 /A BLOCK UP COMPLETELY? + SZA CLA + JMP OUFILP /NO + CDF /CLOSE SYMMAP + TAD I (SYLST /AC=LENGTH + DCA SMPCLN + TAD I (LDRNAM+5 /MAP UNIT + CIF 10 + JMS I USR + 4 + LDRNAM+6 +SMPCLN, 0 + JMS I [OS8ER +NOMAP, CDF 10 + JMP I SYMMAP +JOUSYM, JMS I (OUTSYM + TAD I GPTR /NEXT SYM TO DO + JMP LOP10 + HAFWD, 0 /OUTPUT THE 2 6 BIT ASCII CHARS IN AC + DCA TMP3 + TAD TMP3 /LEFT HALF 1ST + RTR + RTR + RTR + JMS SIXTO8 + TAD TMP3 + JMS SIXTO8 + JMP I HAFWD + +SIXTO8, 0 /CVRT AC FROM + AND [77 /6 TO 8 BIT ASCII + SZA + TAD [240 /TURN ZEROS TO BLANKS + AND [77 + TAD [240 + JMS I PPACK /PUT IN BUFF IN PS/8 FORMAT + JMP I SIXTO8 + +ENTERR, DCA I (DOMAP /CANCEL SYMBOL MAP FROM RTNOS8 + JMS I [RTNOS8 /AS WE MASY HAVE COME FROM SYMMAP + ENTMSG + PAGE + /PACK ASCII IN AC INTO OUTPUT BUFF IN +/OS/8 3 WORD FORMAT TO 2 12 BIT WORDS + +PACK, 0 + ISZ FATAL /3RD WORD ? + JMP ONEOR2 /NO + DCA TMP0 /SAVE CHAR + AC7776 /BU BUFF PTR + TAD TMP4 + DCA TMP4 + AC7775 + DCA FATAL /RESET CNTR + JMS ROL /POSITION HI + DCA I TMP4 + ISZ TMP4 + JMS ROL /POSITION LO +ONEOR2, DCA I TMP4 + ISZ TMP4 + ISZ BLKCNT /BLOCK FULL ? + JMP I PACK /NO + JMS WRBUF + TAD SBPTR + DCA TMP4 /RESET ARGS + TAD (-600 + DCA BLKCNT + JMP I PACK + +ROL, 0 + TAD TMP0 /3RD CHAR + RTL /POSITION + RTL /BITS + DCA TMP0 /SAV FOR NXT CALL ON LO + TAD TMP0 + AND [7400 + TAD I TMP4 /ADD IN OLDY + JMP I ROL + +WRBUF, 0 /WRITE OUT + CDF /SYM MAP + JMS I [IOHAN /BUFFER + SMAPU /ADDR OF SYM U + 200^1!4000!10 /1 BLK OF FLD 1 +SBPTR, 7000 /1ST ADDR +SYLST, 0 /REL BLK + CDF 10 + JMP I WRBUF + CVRT, 0 /CONVERT AC TO + DCA CVRTMP /ASCII NUM + TAD TMP5 /-NUM OF DIGITS + DCA TMP1 /TO CONVERT +LOP7, TAD CVRTMP /CVRT LEFT TO + RTL /RIGHT + RAL /3 BITS PER + DCA CVRTMP /DIGIT + TAD CVRTMP + RAL + AND [7 + TAD (260 + JMS I PPACK + ISZ TMP1 /ENOUGH ? + JMP LOP7 /NO + JMS I (HAFWD /OUTPUT A PAIR + JMP I CVRT /OF SPACES + +OUTSYM, 0 /DO ONE SYMBOL + DCA NDX1 /ADDRESS IN AC ON ENTRY + AC7775 + DCA TMP2 + TAD I NDX1 /SYMBOL IS 1ST + JMS I (HAFWD + ISZ TMP2 + JMP .-3 + TAD I NDX1 /SAVE + DCA GTYP /TYPE + TAD I NDX1 /FLD OF SYMBOL + JMS PR15 + JMS CVLOVL /CONVERT ADDR, LEVEL, OVERLAY + TAD GTYP /NOW DO TYPE + AND (17 /ITS B8-B11 + TAD (TYTBL-1 /PTR TO TBL OF + DCA TMP0 /CHAR PAIRS FOR + CDF 0 + TAD I TMP0 /TYPE EG EX FOR + CDF 10 + JMS I (HAFWD /EXTERN + TAD GTYP /IF ERROR WAS + SPA CLA /FOUND DURING PASS2 B0 OF TYPE=1 EG ILLEGAL SUBR CALL. * ON MAP INDICATES + TAD (12 /PASS2 ERROR + TAD [240 + JMS I PPACK + JMS PCRLF + JMP I OUTSYM + +CVRTMP, 0 + CVLOVL, 0 + CLA CMA + DCA TMP5 /DO LEVEL NUM + TAD GTYP /ITS B1-B3 OF + RAL /OF TYPE WORD + JMS CVRT + AC7776 /DO OVER NUM + DCA TMP5 /ITS B4-B7 OF + TAD GTYP /TYPE WORD + RTL /POSITION INTO + AND (1700 /HI 2 DIGITS + JMS CVRT + JMP I CVLOVL + +PCRLF, 0 + TAD (215 /EOL + JMS I PPACK + TAD (212 + JMS I PPACK + JMP I PCRLF + +PR15, 0 + AND [7 + TAD (4060 + JMS I (HAFWD + TAD [-4 /NOW DO ADDR OF + DCA TMP5 /SYMBOL + TAD I NDX1 + JMS CVRT + JMP I PR15 + PAGE + /PASS 2 OF LOADER - TRANSFORMS BINARIES INTO LOADER IMAGE FILE + +PASS2, DCA LNONUM /SET FOR MAIN + JMS I (BLDTV /BUILD TRAP VECTOR + TAD LBCNT /PROCESS LIBR + CIA /MODULES 1ST + SNA /ANY TO DO? + JMP BY12 /NO + DCA LBCNT /=-NUM TO DO + TAD LBPTR /PTR TO 1ST + DCA RFPTR1 /LIBR MOD + JMS SETREF /INIT RELOC ARGS AND PROCESS TXT + TAD [3 /ADV TO NXT + TAD RFPTR1 /LIBR MOD. + DCA RFPTR1 + ISZ LBCNT /DONE LIBR? + JMP .-5 /NO +BY12, JMS I (SETCNT /SET ARGS TO PROCESS USER MODS. + JMS SETREF /DO 1 MOD + JMS I (ADVOVR /ADVANCE ARGS + JMP .-2 /RTN HERE IF MORE TO DO + JMS I (WRALL /WRITE OUT ALL THE RESIDENT BIN BLOCKS + /END OF PASS 2 - RETURN TO OS8 OR CHAIN TO RSYS + + TAD (7616 + DCA NDX0 + TAD I (LIMGU /SAVE UNIT AND BLOCK OF LOADER IMAGE + DCA I NDX0 /FILE IN CD AREA IN CASE WE CHAIN + TAD I (LIMGU+2 + DCA I NDX0 /TO THE RUN-TIME-SYSTEM + DCA I NDX0 /A PRECAUTION + CDF 0 + CIF 10 + JMS I USR + 10 /LOCK USR IN + TAD (200 + DCA USR + TAD I (LDRNAM + CIF 10 + JMS I USR + 4 + LDRNAM+1 /CLOSE LOADER IMAGE FILE +LDCLEN, 0 + JMS I [OS8ER /OOPS! + JMS I (SYMMAP /PRINT SYMBOL TABLE IF REQUESTED + TAD I (OS8SWS + CDF 0 + AND (40 /TEST /G SWITCH + SNA CLA + JMP I [7605 /NOT ON - RETURN TO OS8 + CLA IAC +CHAIN, CIF 10 + JMS I USR +CHCODE, 2 + RTSNAM /LOOKUP RTS + 0 + JMP NORTS + TAD (6 + DCA CHCODE /CHANGE LOOKUP TO CHAIN + JMP CHAIN + +NORTS, DCA I (LDRNAM+5 /KILL SECOND STORAGE MAP + JMS I [RTNOS8 + RTSMSG +RTSNAM, 0622;2423;0000;2326 /FRTS.SV + SETREF, 0 + JMS I (RDRLES /GET MODULE ESD TABLE + AC7776 + DCA EPTR +LOP12, JMS I .+4 /GET NXTESD + JMP BY11 /ALL DONE + TAD EPTR /LOOK UP + JMS I [LOOK /SYMBOL + NXTESD + CLA CMA /IGNORE ESD IF + TAD ETYP /ITS AN ENTRY + SNA CLA /POINT + JMP LOP12 /IGNORE + TAD GPTR /PUT ADDR OF + DCA I REFPTR /GST SYM IN + JMP LOP12 /ESD REF. PAGE +BY11, CDF 0 /COMPUTE 1ST + TAD EPTR /TEXT BLK + AND [7400 + CLL RTL + RTL + RAL + IAC + DCA I (TXTBLK + CLA CMA /SET CNT TO -1 + DCA BLKCNT /TO KICK OFF 1ST TXT READ + TAD RFPTR1 /PTR TO + DCA I (TXTBLK-3 /RALF MOD + CDF 10 + JMS I (TXTSCN /RELOCATE + JMP I SETREF /TEXT + PAGE + BLDTV, 0 /BUILD UP + TAD TRPCNT /TRAP VECTOR + SNA CLA /ANY TO DO? + JMP I BLDTV /NO + TAD .+2 /GET BASE + JMS I [LOOK /ADDR OF + TRPSYM /TRAP VECT + ISZ GPTR + TAD I GPTR + DCA TMP0 + ISZ GPTR + TAD I GPTR + DCA TMP1 + TAD TMP0 /FOR SUBR + DCA TRAPV /TRPVEC + TAD TMP1 + DCA TRAPV+1 + JMS NEWORG /PROCESS NEW ORIGIN + DCA TRPCNT /WILL BE USED TO MARK GST SYMS + TAD .+2 /THAT HAVE A VECTOR ENTRY + JMS I [LOOK /GET SWAPPER + SWPSYM /ADDR + ISZ GPTR + ISZ GPTR + TAD I GPTR + DCA RFPTR1 + TAD SYMTM3 /SCAN GST +LOP11, DCA GPTR /FOR ALL + JMS I [GETTYP /TRAP SYMS + JMP I BLDTV /ALL DONE + TAD I GPTR /IF TYPE WD + SMA CLA /B0=1, THEN SYMBOL NEEDS A VECTOR ENTRY + JMP LOP11+1 /TRY NEXT 1ST WD OF ENTRY IS + TAD (3000 /TRAP3 + JMS I [PUTBIN + TAD RFPTR1 /NXT IS + JMS I [PUTBIN /SWAP ADDR + CLL CML CLA RAR /CLR B0 + TAD I GPTR /OF TYPE WD + DCA I GPTR + TAD I GPTR + ISZ GPTR + RTL + RTL + DCA TMP0 /HAVE TO MUSH SOME BITS AROUND: + TAD TMP0 /OVERLAY NUMBER MOVES FROM B4-7 TO B0-3 + AND [7400 + DCA TMP1 /LEVEL NUMBER MOVES FROM B1-3 TO B6-8 + TAD TMP0 + RTL + RTL + AND (70 + TAD TMP1 + TAD I GPTR /ADD FLD BITS TO MESS + JMS I [PUTBIN + TAD TRPCNT /ADV VECT + TAD (10 /ENTRY NUM + DCA TRPCNT /COUNTER + TAD I GPTR /TAG HI 9 + TAD TRPCNT /OF GST SYM + DCA I GPTR /WD5 WITH TV ENTRY NUMBER + ISZ GPTR + TAD I GPTR /ENTER + JMS I [PUTBIN /ADDR + AC7776 + TAD GPTR + JMP LOP11 /FOR THIS SYM + NEWORG, 0 + TAD BSECTP + JMS I [SETEPT /SET PTR TO CURRENT SECTION + TAD I EPT2 + CIA CLL + TAD TMP1 + DCA TMP3 + TAD TMP3 + AND (6000 + DCA TMP2 /DO A DOUBLE PRECISION SUBTRACT + CML RAL + TAD I EPTR + CIA CLL + TAD TMP0 + SPA + JMP BADORG /OUT OF RANGE + CLL RAR + TAD TMP2 /COMBINE AND SHIFT RIGHT 8 + RAL + RTL + RTL /(I.E. LEFT 5) + DCA TMP2 + TAD TMP2 + ISZ EPT2 + TAD I EPT2 /ADD TO RELATIVE BLOCK OF SECTION + DCA NEWBLK + ISZ EPT2 + TAD TMP2 + CIA + TAD I EPT2 + SPA + JMP BADORG /ORIGIN OUT OF RANGE + DCA NEWLEN + JMS I (NEWBB /GET BUFFER USING NEWBLK AND NEWLEN + TAD TMP3 + AND (1777 + TAD BLKBEG + DCA BLKSIZ /FORM POINTER INTO PROPER BUFFER + JMP I NEWORG +BADORG, JMS I [RTNOS8 + ORGMSG /ORIGIN OUT OF CURRENT FILE LIMITS + JMP I NEWORG + PAGE + PROVLY, 0 /ROUTINE TO PRINT OVERLAY INFO IN SYMBOL MAP + JMS I [PCRLF + TAD (OTLINE + JMS I (OLINE + TAD (OVLTBL-1 + DCA NDX1 +PROVLP, TAD I NDX1 /GET ENTRY + SPA /TEBLE ENDS WITH -1 + JMP I PROVLY + DCA GTYP + TAD [240 + JMS I PPACK + JMS I (CVLOVL /PRINT LEVEL AND OVERLAY + TAD GTYP + JMS I (PR15 /PRINT 15-BIT LENGTH + JMS I [PCRLF + JMP PROVLP + +RDRLES, 0 /READ A + TAD RFPTR1 /PTR TO RALF + DCA RLARG-1 /MOD + DCA RLARG+2 /STRT AT BLK 0 + CDF /AND READ + JMS I [IOHAN /3 BLKS INTO + 0 /10000-11400 +RLARG, 200^3!10 + 0 + 0 + CDF 10 + JMP I RDRLES + /STARTING WITH THE LATEST, +/WRITE OUT ALL CORE RESIDENT +/BINARY BUFFERS + +WRALL, 0 + TAD BP + IAC /PTR TO + DCA TMP0 /CURNT BLK + TAD I TMP0 + SNA CLA /ALL DONE ? + JMP I WRALL /YES + AC4000 + JMS I (LDRIO /WRITE IT + TAD I BP + SNA + JMP I WRALL + DCA BP + JMP WRALL+1 + +NOTREL, JMS I [RTNOS8 + RELMSG + +RELMSG, TEXT /BAD INPUT FILE/ + +RTSMSG, TEXT /NO FRTS/ + MERGE, 0 + JMS I (GETTXT /COMBINE TXT + DCA FTMP0 /PAIR WITH + JMS I (GETTXT /PAIR WHOSE + DCA FTMP0+1 /ADDR IS IN BPTR + CLL + TAD I BPT2 + TAD FTMP0+1 + DCA TMP1 + RAL + TAD I BPTR + TAD FTMP0 + AND [7 + DCA TMP0 + TAD FTMP0 /GET THE OPCODE OR WHATEVER + AND [7770 /IS IN THE HIGH 9 BITS + TAD TMP0 /AND COMBINE THEM WITH THE RELOCATED ADDRESS + JMS I [PUTBIN /AND OUTPUT THE MESS + TAD TMP1 + JMS I [PUTBIN /DON'T FORGET WORD 2 + JMP I MERGE + +GETCTL, 0 /GET TEXT + JMS I (GETTXT /CTRL WORD + DCA TMP0 /B4-B11 + TAD TMP0 /IS TYPE + AND [377 /INDICATOR + DCA REFPTR /SOMETIMES + TAD REFPTR /ITS AN ESD. + TAD (ESDPG /WHEN IT IS, + DCA GPTR /GPTR PNTS + TAD I GPTR /TO THE + DCA GPTR /CORRESPONDING GST SYM (WORD 4) + JMS I [SETBGX /AND BPTR POINTS TO THE VALUE + TAD TMP0 /TEXT TYPE + RTL /IS IN + RTL /B0-B3 + RAL /PUT IN + AND [17 /AC8-AC11 + TAD GETCTL + DCA GETCTL /USE IT TO BUMP RETURN ADDRESS + JMP I GETCTL + PAGE + /COME HERE ON ORIGIN OR WHEN CROSSING +/AN AREA BOUNDARY TO SELECT A BINARY +/CORE BUFFER FOR A NEW LOADER IMAGE +/AREA. THE BINARY BUFFER TABLE +/ASSOCIATES CORE BUFFERS TO LOADER +/IMAGE AREAS. + +/EACH ENTRY HAS FOUR WORDS - THEY CONTAIN: + +/WORD 1 POINTER TO BUFFER OF NEXT EARLIEST REFERENCE +/WORD 2 RELATIVE BLOCK NUMBER (0 IF UNUSED) +/WORD 3 NUMBER OF BLOCKS LEFT UNTIL END OF SECTION +/WORD 4 BUFFER ADDRESS AND FIELD + +/EACH ENTRY MAPS FROM 1 TO 4 BLOCKS (400 TO 2000 OCTAL WORDS) FROM THE +/ADDRESSES GENERATED BY THE LOADER ONTO THE LOADER IMAGE FILE. +/THE RELATIVE BLOCK NUMBERS ARE ALWAYS OF THE FORM S+4N, WHERE +/S IS THE RELATIVE BLOCK NUMBER OF THE NEAREST BINARY SECTION +/ (A BINARY SECTION IS AN OVERLAY OR "MAIN"). + +/THE BUFFERS ARE ORGANIZED AS A CHAIN IN ORDER OF REFERENCE, +/WITH WORD 1 BEING THE LINK TO THE NEXT EARLIEST BUFFER. IN CASE +/A BUFFER NEEDS TO BE WRITTEN THE CHAIN IS TRAVERSED AND THE LAST BUFFER +/WRITTEN OUT, SINCE IT WAS THE LEAST RECENTLY ACCESSED. + NEWBB, 0 /ENTER WITH NEW + TAD BP + DCA NDX5 /SAVE CURRENT "MOST RECENT" BUFFER + TAD I NDX5 + CIA + TAD NEWBLK /CHECK WHETHER THE BUFFER WE WANT + SNA CLA /IS THE CURRENT BUFFER + JMP QUIKIE /YES - SAVE GRIEF +NEWBB4, TAD BP /MAKE THE CURNT + DCA BPPREV /BUFFER THE PREVIOUS BUFF + TAD I BP /MAK THE BUF OF + DCA BP /NEXT EARLIEST REFERENCE THE NEW CURNT BUFF + TAD BP /GET THE PTR TO + IAC /LDR IMAGE BLK + DCA CURBLK /IN THIS BUFF + TAD I CURBLK /HAVE WE SCANNED + CIA /IS NEWBLK + TAD NEWBLK /IN CORE + SNA CLA /? + JMP GOTBLK /YES + TAD I BP /ARE WE AT THE + SZA CLA /BUFFER OF EARLIEST REF? + JMP NEWBB4 /NO DO NEXT + STL /INITIALIZE LINK AS FLAG + TAD I CURBLK /IS THERE A + SNA CLA /BLK TO WRITE? + JMP VIRGIN /NO - NONE TO READ, EITHER + AC4000 + JMS I (LDRIO /YES WRITE IT + CLL /SET FLAG THAT BUFFER WAS WRITTEN +VIRGIN, TAD NEWBLK + DCA I CURBLK + ISZ CURBLK + TAD NEWLEN /STORE NEW BLOCK # AND LENGTH + DCA I CURBLK /IN BUFFER CONTROL WORD + RAR /GET "VIRGIN FLAG" + DCA NEWBUF + TAD MAXBLK + CMA CLL + TAD NEWBLK /CHECK IF THE BLOCK WE'RE MAPPING + SNL CLA /IS LARGER THAN ANY OTHER SO FAR - + JMP .+3 /IF SO WE DON'T HAVE TO READ IT + TAD NEWBLK + DCA MAXBLK /UPDATE MAXBLK + TAD NEWBUF /LINK = MAX FLAG, SIGN = VIRGIN FLAG + SNL SMA CLA /IF NEITHER IS ON, + JMS I (LDRIO /READ THE BLOCKS INTO THE BUFFER +GOTBLK, TAD I BP + DCA I BPPREV /BREAK NEW BUFFER OUT OF THE CHAIN + STA + TAD NDX5 /NDX5 CONTAINS PTR TO OLD "MOST RECENT" + 1 + DCA I BP /MAKE NEW BUFFER THE BUFFER OF LATEST REFERENCE +QUIKIE, JMS NEWBUF /SET UP FOR PUTBIN + JMP I NEWBB /AND RETURN + /COME HERE TO CUMPUTE A 15 BIT +/BUFFER ADDRESS FROM AN ENTRY +/IN THE BINARY BUFFER TABLE. + +NEWBUF, 0 + TAD [3 + TAD BP + DCA OUTFLD + TAD I OUTFLD /LOAD ADRESS AND FIELD + AND (7600 + DCA BLKBEG + TAD I OUTFLD + AND (70 + TAD (CDF + DCA OUTFLD /DECOMPOSE INTO ADDRESS AND CDF + JMP I NEWBUF + +BPPREV, 0 +MAXBLK, 0 + /COME HERE TO STORE 1 WORD +/IN SOME BINARY OUTPUT BUFFER + +PUTBIN, 0 + DCA TMP2 /SAVE DATA + TAD ORGFLG /N.E. 0 MEANS + SZA CLA /INHIBIT + JMP I PUTBIN /BINARY OUTPUT BECAUSE OF NEW ORIGIN + TAD OUTINH /N.E. 0 MEANS + SNA CLA /INHIBIT BIN OUT BECAUSE OF BAD ORIGIN + JMP OUTFLD /ITS OK + TAD I OUTINH /SET B0 OF + RAL /OFFENDING GST + CLL CML RAR /SYMBOL + DCA I OUTINH /SEE SUBR REORG + JMP I PUTBIN /FOR DEFINITION OF C(OUTINH) +OUTFLD, 0 /CDF X + TAD TMP2 /STORE IT + DCA I BLKSIZ /AWAY + CDF 10 /RESTORE FLD + ISZ BLKSIZ /BUMP PTR + TAD BLKBEG + CIA + TAD BLKSIZ /HAVE WE + AND (1777 /CROSSED A + SZA CLA /BLK BOUND? + JMP I PUTBIN /NO + TAD NEWBLK + TAD [4 + DCA NEWBLK + TAD NEWLEN + TAD [-4 + DCA NEWLEN /BUMP BLOCK NUMBER AND REMAINING BLOCKS + JMS NEWBB /SELECT A NEW BUFFER + TAD BLKBEG + DCA BLKSIZ /RE-INITIALIZE WORD POINTER + JMP I PUTBIN +CURBLK, 0 + PAGE + /COME HERE TO SCAN AND RELOCATE +/THE TEXT OF AN ENTIRE MODULE + +TXTSCN, 0 /SET CTRL WD + JMS I (GETCTL /ARGS. RTN TO .+1,2,3, OR 4 + JMP RELC2 /SPECIAL TYPE + JMP RELC6 /DIRECT COPY + JMP REORG /NEW ORIGIN + TAD I GPTR /RELOCATE FPP + AND [17 /PAIR + DCA TMP0 /GST SYM TYPE + AC7776 /IS RELOCATION + TAD TMP0 /WITH RESPECT + SZA CLA /TO GST EXTERN? + JMP BY2 /NO +SETTRP, JMS GETTXT /BAD TEXT. + CLA + JMS GETTXT /IGNORE RELOCATION AND MAKE AN ERROR TRAP + CLA + TAD (3000 /=TRAP3 + JMS I [PUTBIN + TAD (JUERR /RTS ERROR + JMS I [PUTBIN /TRAP SUBR +BY2M5, TAD I GPTR /SET ILLEGAL + RAL /REFERENCE + CLL CML RAR /BIT IN + DCA I GPTR /GST TYPE WD + JMP TXTSCN+1 /DO NEXT +BY2, TAD (-5 /RELOCATE TO + TAD TMP0 /A MULTIPLE + SNA CLA /ENTRY? + JMP SETTRP /YES + TAD I GPTR /CHECK FOR LEGALITY OF REFERENCE + AND (0360 /WITH RESPECT TO LEVEL AND OVERLAY NUMBER + DCA TMP1 / = GST OVER NUM + TAD LNONUM /=CURNT MOD + AND [3400 /LEVEL NUM + DCA TMP2 + TAD I GPTR + AND [3400 + SNA /RELOCATE TO MAIN? + JMP RELC /YES, ITS OK + CIA /IS RELOCATION + TAD TMP2 /ACROSS LEVELS + SZA /? + JMP TSTTRP /YES + TAD LNONUM /=CURRENT MOD + AND (0360 /OVER NUM + CIA + TAD TMP1 /WITHIN LEVL CALL IS LEGAL ONLY + SNA CLA /IF WITHIN OVR ALSO. + JMP RELC /ITS OK + /** TSTTRP REPLACED BY "SKP CLA" IF /U SPECIFIED +TSTTRP, SMA CLA /NOT OK - IS X LEVL LO TO HI? + JMP SETTRP /NO + TAD I BPTR /TRAP VECT + TAD [7770 /SUBTRACT 1 FROM ENTRY NUM + AND [7770 /IN HIGH 9 BITS OF GST WD 5 + CLL RAR /DIV BY 2 TO GET ENTRY NUM * 4 + TAD TRAPV+1 /LINK IS 0 + DCA I (SYMX+1 /STORE VECTOR ENTRY ADDRESS + RAL + TAD TRAPV /IN SYMX AS A DOUBLEWORD + DCA I (SYMX + TAD (SYMX + JMS I [SETBPT /COMBINE IT WITH TXT PAIR + JMS I (MERGE /I.E. RELOCATE TO TRAP VECT + TAD FTMP0 + AND [7 + SNA + TAD FTMP0+1 + SNA CLA /WERE LOW ORDER 15 BITS OF TXT=0? + JMP TXTSCN+1 /YES, ITS OK + JMP BY2M5 /SET ILL REF BIT. NOTE TRAP IS NOT GENERATED + +RELC, JMS I (MERGE /MAKE FPP PAIR AND STORE IN BIN BUFFER + JMP TXTSCN+1 /DO NEXT +RELC2, TAD REFPTR /CHK IND. + SNA CLA /FOR SPECIAL TYPE + JMP I TXTSCN /0=END OF TEXT + JMP TXTSCN+1 /1=IGNORE 1 WORD OF TEXT +RELC6, TAD REFPTR /IND HOLDS + CIA /NUM OF WDS + DCA REFPTR /TO COPY + JMS GETTXT + JMS I [PUTBIN + ISZ REFPTR + JMP .-3 + JMP TXTSCN+1 +REORG, ISZ ORGFLG /SET INHIBIT BIN OUT FLG + JMS I (MERGE /GET NEW ORIGIN + TAD I GPTR /SEE IF + AND (3760 /ORIGIN IS + CIA /TO A DIFFERENT + TAD LNONUM /BINARY SECTION + SZA CLA /? + TAD GPTR /YES - SET INHIBIT/ERROR FLAG + SNA + JMS I (NEWORG /NO - SET UP NEW ORIGIN + DCA OUTINH + DCA ORGFLG + JMP TXTSCN+1 + GETTXT, 0 /GET ONE WORD OF TEXT FROM THE BUFFER + ISZ BLKCNT + JMP RDTCDF + CDF /TO READ IN + JMS I [IOHAN /RALF TEXT + 0 /PTR TO UNIT + 200^4!10 /OR 200^17!20 + 0 +TXTBLK, 2 + TAD .-2 /SET TXT + DCA RBLK /BUF PTR + TAD TXTWDS /-NUM OF + DCA BLKCNT /WDS-1 IN +RDTCDF, CDF 10 /OR CDF 20 + TAD I RBLK + CDF 10 + ISZ RBLK + JMP I GETTXT /RETURN +TXTWDS, -2000 /OR -7400 + PAGE + /ENTER A SYMBOL INTO GST. PTR TO ESD +/SYMBOL IS IN AC + + JMP I PUTSYM /FOR XPAGE RTN +PUTSYM, 0 + JMS I [LOOK /LOOKUP SYMBOL + JMP I (NOMAT /NEW SYMBOL DISPOSITION +/TYPE OF MATCH 2 EXTERNS, 2 COMMONS, ETC. +/ETYP HOLDS SYM TYPE FOR ESD GTYP HOLDS GST TYPE + + TAD (5 + DCA TMP0 /FOR ME,MS + TAD ETYP + TAD (-7 + SPA + TAD (2 + TAD [4 + RAR CLL + CMA + DCA TMP2 + CML CMA /GET -1 + TAD GTYP /RESTR LNK, GET GST TYP-1 + RAL + TAD (MYSTIC /GET ADDR OF 4 CODES + DCA TMP1 + CDF 0 + TAD I TMP1 /GET 4 CODES + CDF 10 +CTST, ISZ TMP2 /WHICH CODE ? + JMP SHFT3 /NOT THIS 1 + AND [7 + TAD T2J /PICK UP JMP I + DCA .+1 + 0 +T2J, JMP I .+1 + ISCOM3 /FORT COMM N FLD1 SECTION + PUTSYM-1 /ESD IS EXT JUST EXIT + REP /GST IS EXT GO REPLACE + MULENT /MULTIPLE ENTS + ISCOM /2 F COMMS OR 2 COMMZS OR 2 FLD1S + BADDY /MULTIPLE SECTS + BADDY /UNDEF TYPES + BADDY + BADDY +SHFT3, RAR + RTR + JMP CTST + BADDY, TAD MCNT + TAD MBGCNT + DCA MTMCNT /SAVE PARAMS FOR ERROR MESSAGE LATER + CLA IAC + TAD LNONUM /MULTIPLE SECTION + DCA FATAL + ISZ TMP0 /IS FATAL +MULENT, TAD I GPTR /SET TYPE TO + AND (7760 /5 FOR MUL ENT + TAD TMP0 /OR 6 FOR + DCA I GPTR /MUL. SECTION + JMP I PUTSYM + +ISCOM3, TAD (11 /F COMM N FLD1 (RITE9=11) + DCA I GPTR /SET TYP TO F1 + ISZ F1FLG +ISCOM, JMS I [SETBGX + TAD BPTR /UPDATE + DCA I REFPTR /ESD REFERENCE PTR + JMS I (MAXCOM /PUT LARGER OF 2 COMMONS INTO + JMP I PUTSYM /GST WORDS 5 AND 6 +MTMCNT, 0 + /THE FOLOWING TABLE IS USED TO +/DISPOSITION SYMBOL MATCHES BETWEEN +/A RALF ESD AND A GST SYMBOL +/EACH DIGIT IN THE TABLE IS AN INDEX +/INTO A TABLE THAT IS USED TO CALL +/ROUTINES TO HANDLE THE VARIOUS TYPES +/OF MATCHES: +/ 0=FORT COMMON AND FLD1 SECTION +/ 1=ANY MATCH WITH ESD EXTERN +/ 2=ANY MATCH WITH GST EXTERN +/ 3=MULTIPLE ENTRY POINTS +/ 4=2 FORT COMMONS OR 2 FIELD1 +/ SECTIONS OR 2 COMMZ SECTS +/ 5=MULTIPLE SECTIONS +/ 6-7=UNDEFINED AND HALT +/ +/THE FIRST 2 WORDS COVER ALL POSSIBLE +/MATCHES WITH GST TYPE 1, THE SECOND +/TWO WORDS ARE FOR GST TYPE 2 ETC +/THE 4 DIGITS IN THE FIRST WORD OF +/ANY PAIR CORRESPOND TO ESD TYPES +/11,7,3,1 RESPECTIVELY +/ESD CORRESPONDENCE FOR THE 2ND WORD +/IS 12,10,4,2 +/ESD TYPE 12 IS UNDEFINED + +MYSTIC, 5553 /G1 E(11,7,3,1) + 7551 /E(12,10,4,2) + 2222 /G2 E(11,7,3,1) + 7221 /E(12,10,4,2) + 0545 /G3 + 7551 + 5555 /G4 + 7551 + 5553 /G5 + 7551 + 5555 /G6 + 7551 + 5555 /G7 + 7551 + 5555 /G10 + 7451 + 4505 /G11 + 7551 + +ESDSCN, 0 + CLL STA RTL /-3 + TAD I (0 + SZA CLA + JMP I (NOTREL /NOT RALF MODULES - NASTY! + TAD I (2 /CHK FOR DP + SPA CLA /HARDWARE REQUIRED + ISZ DPFLG /ISZ=YES + AC7776 /ENTER ESD OF MODULE + DCA EPTR /INTO GST. ESD STARTS AT 10000 + JMS I (NXTESD /GET NXT 1 + JMP I ESDSCN /NO MORE + TAD EPTR + JMS PUTSYM /ENTER IT + JMP .-4 /DO ANOTHER + +MSMSG, TEXT /MULT SECT/ +CORMSG, TEXT /OVER CORE/ +LIMSG, TEXT /OVER IMAG/ +MNMSG, TEXT /NO MAIN/ + PAGE + /CONTINUATION OF SUB PUTSYM + +REP, DCA GTYP + AC7775 /REPLACE GST + TAD ETYP /EXTERN + SNA /IS IT A REF TO COMMON? + JMP MNSECN /YES + TAD M4 /IS IT A REF + SMA CLA /8 MODE SECN ? + JMP NOMAT + TAD I GPTR /NO CHK FOR + AND [3400 /CROSS LEVEL + CIA /REFERENCE + DCA TMP0 /COMPARE WITH + TAD LNONUM /CURNT LEVEL + AND [3400 + SNA /DOING MAIN ? + JMP NOMAT /YES DONT CHK FOR TRAP ENTRY + TAD TMP0 + SNA CLA /X LEVEL? + JMP NOMAT + ISZ TRPCNT /YES BUMP TRAP VECTOR COUNTER + AC4000 /SET B0=1, GST SYM WILL GO IN TRAP VECTOR +NOMAT, DCA GTYP + TAD ETYP /ENTER GST + TAD (.+3-1 /WORDS 4,5,6. + DCA TMP0 /DISPATCH ESD + JMP I TMP0 /TYPE 1,2,3,4 + JMP ENTMN2 /ENTRY POINT + JMP ENTMN /EXTERN + JMP MNSECN /COMMON SECN + JMP PRGSCN /PROGRAM SECN +M4, -4 +M7, -7 + JMP MNS8 /GEN 8 MODE SCT + JMP MNCZ /COMM 8 MODE + JMP MNF1 /FLD1 8 MODE + PRGSCN, TAD LNONUM + AND [3400 /IS IT A MAIN + SNA CLA /? + JMP MNSECN /YES + TAD I [OVRSIZ + DCA TMP0 + TAD I [OVRSIZ+1 + DCA TMP1 /SAVE OLD OVERLAY SIZE + CLL + TAD I EPT2 + TAD TMP1 + DCA I [OVRSIZ+1 + RAL + TAD I EPTR + TAD TMP0 + DCA I [OVRSIZ /SET OVLY SIZE = OVLY SIZE + SECTION SIZE + TAD TMP0 + DCA I EPTR + TAD TMP1 + DCA I EPT2 /SET SECTION SIZE = OLD OVERLAY SIZE + TAD GPTR /PUT ADDR OF + IAC /GST WD5 OF + DCA I REFPTR /SECTION SYM INTO ESD REFERENCE PAGE +ENTM2, TAD [LVPTR /SET REFERENCE + DCA REFPTR /TO PARENT SYM =WD5 OF #YLVLN +ENTMN, TAD LNONUM /=CURNT OVRLAY AND CURNT LEVEL NUM + JMP MNSEC5 + ENTMN2, TAD LNONUM /SEE IF ENTRY + AND [3400 /POINT IS IN + SNA CLA /MAIN? + JMP ENTMN /YES + TAD I REFPTR /IS PARENT + JMS I [SETBPT /REFERENCE TO + CLA CMA /COMMON? + TAD REFPTR /LOOK FOR + DCA TMP0 /TYPE CODE 3 + AC7775 + TAD I TMP0 + SNA + JMP ENTMN /YES, HANDLE LIKE A MAIN ENTRY POINT + TAD M4 /IS IT A REF + SNA CLA /TO AN 8 SECT? + JMP MNSEC5 /YES HANDLE LIKE MAIN + CLL + TAD I BPT2 + TAD I EPT2 + DCA I EPT2 /SET OVR ENT = OVR ENT + OVR + RAL + TAD I BPTR + AND [7 /WATCH HIGH-ORDER BITS + TAD I EPTR + DCA I EPTR + JMP ENTM2 /SIZE OF SECTION +MNF1, ISZ F1FLG /SET FOR NE TO + JMP MNSECN /0 SO DO8S WILL +MNCZ, ISZ CZFLG /KNOW THESE + JMP MNSECN /TYPES OF SECTS + MNS8, ISZ S8FLG /EXIST AND WILL FIT THEM INTO CORE +MNSECN, TAD GPTR /PUT ADDR OF + IAC /GST WD5 OF + DCA I REFPTR /SECTION SYM INTO ESD REFERENCE PAGE + TAD (SYMX+1 /THIS VALUE + DCA REFPTR /YIELDS 0 IN HI 9 WD 5 OF GST SYM +MNSEC5, TAD ETYP /SYM TYPE TO AC8-11. AC MAY HAVE + TAD GTYP /LEVEL AND OVR BITS (AC1-7) ALREADY SET + DCA I GPTR /GST WD4 HOLDS SYMBOL TYPE + JMS I [SETBGX /SET BPTR TO GST WORD + DCA TMP0 /PREPARE FOR DIVISION BY 7 + TAD I REFPTR + TAD (2-SYMTBL /GET OFFSET FROM SYMTBL + TAD M7 + ISZ TMP0 + SMA + JMP .-3 /DIVIDE BY REPEATED SUBTRACTION + STA /AC IS NOT NECESSARILY ZERO! + TAD TMP0 + CLL RTL /ROTATE SYMBOL NUMBER INTO AC BITS 0-8 + RAL + TAD I EPTR /AND INSERT IT INTO THE ADDRESS + DCA I BPTR /DOUBLEWORD TO FORM THE GST + TAD I EPT2 /ADDRESS DOUBLEWORD + DCA I BPT2 + JMP I .+1 + PUTSYM-1 + PAGE + STPAS1, DCA I NDX0 /ZERO OUT GST + ISZ STCNT /NDX0 SET UP BY PASS0 + JMP STPAS1 + JMS I (SETCNT /SET MOD CNTS + JMS I (RDRLES /READ A RALF ESD + JMS I (ESDSCN /PROCESS IT + JMS I (ADVOVR /UPDATE COUNTS + JMP .-3 /DO NEXT + TAD LIBRSW + SNA CLA /LIBRARY SEARCH POSSIBLE? + JMP I (DOCORE /NO - SKIP IT + TAD SYMTM3 /TOP OF + DCA GPTR /GST + TAD RFPTR1 /1ST FREE + DCA LBPTR /ENTRY IN MODULE TBL THIS IS WHERE LIBR MODULES WILL GO + JMS I (GETEXT /GET AN + JMP .+3 /EXTERN +LOP4, JMS I (GETEXT + TAD RESFLG /=1 IF + DCA IOFLG /LIBR CAT IS ENTIRELY CORE RES + DCA LBREC /SET I/O FOR + DCA LSTBLK /BLK 0 OF LIBRARY + DCA RBLK /SET REL BLK + DCA RLEN /AND LENGTH + JMP BY3 /TO 0 +NXTENT, TAD NDX1 /ADV TO + AND [-4 /NXT ENTRY + TAD (2 /BUT GET + DCA NDX1 /LENGTH OF + JMS I (GETLEN /PREV ONE 1ST + ISZ NUMENT /MORE IN CORE? + JMP BY3+1 /YES + TAD IOFLG /END OF + SZA CLA /CATALOGUE? + JMP LOP4 /YES, NO MATCH ON THIS EXTERN +BY3, JMS RDLBR /GET NEXT + TAD [-4 /CAT. BLKS + TAD GPTR /LOOK FOR + DCA NDX0 /LIBR MATCH + AC7775 + DCA TMP0 + LBFLD, CDF 0 /CDF 20 IF GREATER THAN 8K CORE + TAD I NDX1 + CDF 10 + CMA /IS IT THE END + SNA /OF CAT ? + JMP LOP4 /YES + IAC + TAD I NDX0 + SZA CLA /MATCH 1? + JMP NXTENT /NO TRY NXT LIBR ENTRY + ISZ TMP0 /ALL MATCH? + JMP LBFLD /NO + JMS I (GETLEN /UPDATE RBLK, + CLA CMA /RLEN + TAD RFPTR1 /ENTER MOD + DCA NDX0 /INTO TBL + TAD I (MODTBL /LIBR UNIT + DCA I NDX0 + TAD RLEN /LENGTH OF + DCA I NDX0 /MODULE + TAD I (MODTBL+2 /STARTING BLOCK OF LIBRARY, + + TAD RBLK / RELATIVE BLOCK OF MODULE = + DCA I NDX0 / ABSOLUTE BLK OF MOD + ISZ LBCNT /=NUM OF LIBR MOD IN MAIN + TAD GPTR /SAVE GST + DCA LSTBLK /PTR + JMS I (RDRLES /READ IN ESD + DCA LNONUM /SET FOR MAIN + JMS I (ESDSCN /PROCESS ESD + TAD [3 /ADV MODULE + TAD RFPTR1 /TBL PTR + DCA RFPTR1 + TAD LSTBLK + DCA GPTR + ISZ MLEFT /MOD TBL FULL? + JMP LOP4 /NO DO SOME MORE + JMP I (DOCORE + +LIBRSW, 0 /NON-ZERO IF LIBRARY SEARCH POSSIBLE +STCNT, SYMTBL-OVLTBL + RDLBR, 0 + TAD IOFLG /IS THIS + SZA CLA /THE END + JMP ENDLB /OF CAT.? + CDF /NO + JMS I [IOHAN /READ SOME + MODTBL /MORE +LBARG, 200^5 /OR 200^17!20 + LB0BUF /OR 0 +LBREC, 0 /REL CAT BLK + TAD LBREC /GET -NUM OF + CIA /BLKS READ, + TAD LSTBLK /AND COMPUTE + DCA TMP0 /THE NUM OF + TAD (-100 /ENTRIES IN + ISZ TMP0 /CORE. THERE + JMP .-2 /ARE 100 PER + DCA OLDCNT /BLOCK + TAD LBREC /UPDATE + DCA LSTBLK /LSTBLK +ENDLB, TAD OLDCNT + DCA NUMENT + CLA CMA /SET PTR TO + TAD LBARG+1 /1ST ENTRY + DCA NDX1 + CDF 10 + JMP I RDLBR +LSTBLK, 0 +MLEFT, 0 +RESFLG, 1 +NUMENT, 0 +OLDCNT, 0 + PAGE + + /END OF PASS 1 - FIT EVERYTHING INTO CORE + +DOCORE, TAD TRPCNT + SNA CLA + JMP LOP3-3 /NO OVRS + TAD (TRPSYM /ENTER TRAP + JMS I [LOOK /VECT. SYM + TAD [4 /ITS A + DCA I GPTR /MAIN SECN + ISZ GPTR /GST WD6 + ISZ GPTR /HOLDS LENGTH + TAD TRPCNT /GET SIZE OF + RTL CLL /TRAP VECTOR + DCA I GPTR /= NUMBER OF ENTRIES * 4 + JMS I (DO8S /GO DO ALL 8 MODE SECTIONS + TAD SYMTM3 /ALLOCATE + DCA GPTR /CORE FOR +LOP3, JMS I [GETTYP /ALL MAIN NON 8 MODE + JMP DUNMN /SECTIONS + AC7775 /4=PROG + TAD I GPTR /SECN, 3=COMMON + RAR CLL + SNA CLA + JMS I (FIT /GO FIT SECN + JMP LOP3 + DUNMN, STA + DCA I NDX7 /TERMINATE OVERLAY LENGTH LIST + TAD A1 + DCA I (OVLTBL /STORE ENTRY FOR LEVEL 0 + TAD A1+1 + DCA I (OVLTBL+1 + TAD A1+1 + CLL + TAD [377 + AND [7400 + SZL + ISZ A1 /(WATCH CARRY!) + DCA A1+1 /DITTO FOR NON-FIELD 0 + CLA IAC /WILL HOLD + DCA BLKCNT /SIZE OF LOADER IMAGE + TAD (1460 /RESET INT. + DCA I (LEVSYM+2 /#YLVLN SYM + TAD (QUSRLV-1 /WHERE OVRLAY + DCA NDX3 /DSRN INFO GOES IN LHDR + CLA IAC + DCA I NDX3 /USER MAIN IS LEVEL 0 + TAD (10 + DCA I NDX3 /SET UP LOADING INFORMATION FOR USER MAIN + STA /IN THE USRLV TABLE JUST LIKE + TAD A1 /ANY OTHER OVERLAY LEVEL + CLL RAR + TAD A1+1 /LENGTH HAS TO BE COMPUTED FROM + RAL /CORE LENGTH + RTL + RTL + DCA TMP0 + CLA IAC + DCA I NDX3 /USER MAIN FIRST THING IN LDR IMAGE + TAD TMP0 + DCA I NDX3 + TAD TMP0 + LOP6, TAD BLKCNT /UPDATE LENGTH + DCA BLKCNT /OF LDR IMAGE + ISZ I (LEVSYM+2 /NEXT LEVEL + TAD (LEVSYM /LOOKUP + ISZ NLVL + JMS I [LOOK /#YLVLN + JMP DUNLVL /DONE ALL OVR LEVELS + JMS I (FIT /FIT LEVEL + ISZ GPTR /IN CORE + TAD I NDX3 /NUMBER OF OVERLAYS ON THIS LEVEL - ALSO + CIA /SERVES AS AN INDICATOR TO THE RUN-TIME + DCA TMP0 /SYSTEM THAT THIS LEVEL IS INITIALLY + TAD I GPTR /UNINHABITED. + AND [7 /GET FIELD BITS + CLL RTL + RAL + ISZ GPTR + TAD I GPTR /AND ADDRESS BITS + DCA I NDX3 /PUT-EM OUT + TAD BLKCNT /STARTING BLOCK OF LEVEL + DCA I NDX3 + TAD BLKSIZ + DCA I NDX3 /LENGTH OF A SINGLE OVERLAY IN THE LEVEL + TAD BLKSIZ /(NUM OF OVRS)* + ISZ TMP0 /NUM OF BLKS + JMP .-2 /AC=LENGTH OF LEVEL + JMP LOP6 /DO NEXT LEVEL +NLVL, 0 + DUNLVL, CLA /AC NOT ZERO! + TAD SYMTM3 /NOW RESOLVE + DCA GPTR /ALL OTHER SYMBOLS +LP1, JMS I [GETTYP + JMP I (ALLDN1 /ALL DONE + JMS I [SETBGX /SET BPTR TO GST WD5 + TAD I BPTR + AND [7770 + SNA + JMP LP1 /NO RELATIVE SYMBOL - DON'T RELOCATE + DCA EPTR + TAD EPTR /FIGURE OUT THE SYMBOL TABLE ADDRESS + CLL RTR /OF THE RELATIVE SYMBOL BY + STL CMA RAR /TAKING 7 * THE RELATIVE SYMBOL NUMBER + TAD EPTR /IN BITS 0-8 AND ADDING IN THE BASE + TAD (SYMTBL-1 /ADDRESS OF THE SYMBOL TABLE + JMS I [SETEPT + TAD I EPT2 + CLL + TAD I BPT2 + DCA I BPT2 + RAL + TAD I BPTR + AND [7 /THROW AWAY THE OLD RELATIVE SYMBOL # + TAD I EPTR + DCA I BPTR /AND PERFORM THE RELOCATION + JMP LP1 /DO AGAIN + PAGE + ALLDN1, TAD A1 + DCA I (QHGHAD /SAVE HIGHEST PROGRAM ADDRESS + TAD A1+1 /SO THAT RTS WILL KNOW HOW MUCH ROOM + DCA I (QHGHAD+1 /IT HAS FOR BUFFERS & THINGS + TAD FATAL /ANY MULTIPLE + SNA /SECTIONS? + JMP NOMSCT /NO + DCA LNONUM + CDF 0 + TAD I (MTMCNT + DCA MBGCNT /RESTORE ERROR PARAMETERS + CDF 10 + JMS I [RTNOS8 + MSMSG +NOMSCT, TAD (SASYM /GET STRT + JMS I [LOOK /ADDR MAIN + SKP /NO MAIN + JMP .+3 + JMS I [RTNOS8 + MNMSG + TAD SVMAIN /IF .NE. SET TO + SZA /POINT TO GST + TAD GPTR /FOR PND MAIN + DCA SVMAIN /FOR /S THINGS IN SYMMAP RT. + CDF 0 + TAD I (JOUSYM + DCA I (PRMAIN /ENABLING PRINTING OF #MAIN ON ERRORS + CDF 10 + ISZ GPTR + TAD I GPTR /MAKE SWAPPER CONTROL WORD + DCA I (QRTSWP /LEVEL 0, OVERLAY 0 IS MAIN + ISZ GPTR + TAD I GPTR /12 BIT ADDR + DCA I (QRTSWP+1 + TAD DPFLG /N.E. MEANS LDR IMAGE NEEDS DP HRDWRE + DCA I (QDPFLG /RETAIN INFO IN LHDR FOR PASS3 + CDF 0 /FETCH LDR + TAD I (LDRNAM /IMAGE + JMS I [IOHAN /HANDLER + TAD BLKCNT + CLL RTL /SINCE WE KNOW THE LENGTH OF THE + SZL SPA /LDR IMAGE FILE, TELL IT TO THE USR + CLA /(UNLESS ITS >255) + RTL + SZL + CLA + TAD I (LDRNAM /OPEN LDR + CIF 10 /IMAGE + JMS I USR + 3 +LDRBLK, LDRNAM+1 +LDRLEN, 0 + JMP I (ENTERR + TAD BLKCNT /SEE IF LDR + STL /IMAGE WILL + TAD LDRLEN /FIT ON + SZL SNA CLA /TENTATIVE FILE + JMP .+3 /IT FITS + JMS I [RTNOS8 /OUTPUT FILE + LIMSG /TOO SMALL + TAD BLKCNT /CLOSE LDR + DCA I (LDCLEN /IMAGE FILE + TAD (LIMGU-1 /PASS2 + DCA NDX0 + TAD I (LDRNAM + CDF 10 + AND [17 + DCA I NDX0 /UNIT + TAD BLKCNT + DCA I NDX0 /LENGTH + TAD LDRBLK + DCA I NDX0 /STRT BLK + CDF 0 + JMS I [IOHAN + LIMGU /WRITE OUT LOADER IMAGE HEADER BLOCK + 4210 + LHDR + 0 /IN RELATIVE BLOCK 0 OF LOADER IMAGE FILE + CDF 10 + /SET UP TABLE THAT RELATES +/BINARY SECTINS TO LDR +/IMAGE RELATIVE BLOCK NUMS. +/1 DBL WD AND 2 SINGLE-WD ARGUMENTS PER +/SECTION (15 BIT ADDR, RELATIVE +/BLOCK, AND LENGTH). THERE ARE +/8 SECTIONS +/(MAIN, LEVL1,....,LEVL7) +/TABLE STARTS AT LHDR AND +/IS USED BY SUBR NEWORG + + TAD (LHDR-1 + DCA NDX1 + TAD (QUSRLV /NOW DO THE + DCA NDX0 /8 LEVELS + TAD [-10 + DCA TMP0 +SETSLP, TAD I NDX0 + DCA BSECTP + TAD BSECTP + CLL RTR + RAR + AND [7 + DCA I NDX1 /FIRST COMES 15-BIT ADDRESS + TAD BSECTP + AND [7400 + DCA I NDX1 + TAD I NDX0 + DCA I NDX1 /THEN RELATIVE BLOCK NUMBER + TAD I NDX0 + DCA I NDX1 /THEN LENGTH + ISZ NDX0 /SKIP OVER NEXT OVERLAY COUNT + ISZ TMP0 + JMP SETSLP + TAD (LHDR /PTR TO TOP + DCA BSECTP /OF TABLE + CLA CMA /SET FLG + DCA P2FLG /FOR SUBR ADVOVR + JMP I .+1 + PASS2 + PAGE + DO8S, 0 /DO 8 SECTIONS + TAD CZFLG /ANY 8 MODE + SZA CLA /COMMONS ? + JMS FIT8S /GO FIT IT + TAD F1FLG /ANY 8 MODE + SNA CLA /FIELD 1 ? + JMP .+3 /NO + STA + JMS FIT8S + TAD S8FLG /ANY GEN 8 MODE + SNA CLA /SECTIONS ? + JMP I DO8S /NO ALL DONE + TAD [7770 /THIS WILL + DCA OVRFLO /INHIBIT FLD1 OVER FLOW ERR + CLA IAC + JMS FIT8S + JMP I DO8S + +/FIT 8 MODE SECTIONS + +FIT8S, 0 + TAD [7770 + DCA STYPE /-8M0DE SECT TYPE (7-11) + TAD SYMTM3 /SEARCH GST FOR + DCA GPTR /8 MODE SECTNS +F8SECT, JMS I [GETTYP + JMP I FIT8S /ALL DONE + TAD STYPE + TAD I GPTR + SZA CLA /8 SECTION ? + JMP F8SECT /NO + JMS I [SETBGX + TAD I BPT2 + TAD (177 /ROUND SECTION LENGTH + AND (7600 /TO A PAGE BOUNDARY + DCA I BPT2 + JMS I (FIT /NOW FIT IT + TAD OVRFLO /SEE IF FLD1 + TAD A1 /IS OVR FLOWED **** + SPA SNA CLA /? + JMP F8SECT /DO ANOTHER +TOOBIG, JMS I [RTNOS8 + CORMSG /PRINT ERROR & GO AWAY +STYPE, 0 + FIT, 0 /FIT SECTION + JMS I [SETBGX /SET BPTR TO POINT TO GST WD5 + TAD I BPT2 + AND [7400 + CLL RAL + TAD I BPTR + RTL + RTL /GET LENGTH OF SEGMENT IN BLOCKS + DCA BLKSIZ + TAD I BPT2 + CLL + TAD A1+1 + DCA TMP5 + TAD A1+1 + DCA I BPT2 + TAD TMP5 + DCA A1+1 /SET BPTR = A1 + RAL /WHILE SETTING A1 = A1 + BPTR + TAD I BPTR + TAD A1 + DCA TMP5 + TAD TMP5 + AND [7770 + SZA CLA /IF NEW ADDRESS IS > 77777, + JMP TOOBIG /THE THING WILL NEVER FIT + TAD A1 + DCA I BPTR + TAD TMP5 + DCA A1 + JMP I FIT /RETURN + LEVLUP, 0 /LEVEL = MAX (LEVEL, OVRSIZ); OVRSIZ=0 + TAD I [OVRSIZ + TAD LNONUM + DCA I NDX7 /RECORD THE SIZE OF THIS OVERLAY + TAD I [OVRSIZ+1 /FOR THE SYMBOL MAP PRINTOUT + DCA I NDX7 + TAD [OVRSIZ + JMS I [SETEPT + TAD I [LVPTR + JMS I [SETBPT + JMS MAXCOM + DCA I EPT2 + DCA I EPTR + JMP I LEVLUP + +MAXCOM, 0 /BPTR = MAX (EPTR, BPTR) + TAD I EPTR + CIA CLL + TAD I BPTR + SZA CLA /CHECK HIGH-ORDER WORDS FIRST + JMP .+4 /THEY DIFFER + TAD I EPT2 + CIA CLL + TAD I BPT2 /USE LOW ORDER WORDS IF HIGH ORDERS ARE = + SZL CLA /IS EPTR > BPTR? + JMP I MAXCOM /NO - EXIT + TAD I EPTR + DCA I BPTR + TAD I EPT2 + DCA I BPT2 /YES - BPTR=EPTR + JMP I MAXCOM + GETLEN, 0 + CDF 0 /OR CDF 20 + TAD I NDX1 /LEN OF ENTRY + CDF 10 + SNA /=0 MEANS LENGTH HAS ALREADY + JMP I GETLEN /BEEN COMPUTED. NE 0 MEANS + DCA TMP0 /ENTRY POINT IS THE 1ST IN A NEW MODULE + TAD RLEN /UPDATE REL + TAD RBLK /BLOCK AND + DCA RBLK /LENGTH OF + TAD TMP0 /NEW MODULE + DCA RLEN + JMP I GETLEN + +GETEXT, 0 /LOOK FOR GST + JMS I [GETTYP /EXTERN + JMP I (DOCORE /END OF GST + TAD I GPTR /TYPE WD TO AC + AND [17 /B8-B11 + RTR CLL /2=EXTERN + SZA CLA /GOT ONE? + JMP .-6 /NO, RETRY + JMP I GETEXT + PAGE + +LB0BUF= . + /START OF PROGRAM + +START, ISZ XSTRT /IF CHAINED TO + CIF CDF 10 + CLL STA RAL + AND I (7643 /AND OUT THE /L SWITCH + DCA I (7643 + JMP I .+1 +XSTRT, PASS0 + /THIS SUBROUTINE SHOULD RESIDE IN THE +/FIELD 0 I/O BUFFER SINCE IT +/EXECUTES ONLY ONCE +/SUBROUTINE TO DETERMINE CORE SIZE +/ +/THIS WORKS ON ANY PDP-8 FAMILY COMPUTER. +/THE VALUE,FROM 1 TO 10(OCTAL) OF THE 1ST NON-EXISTENT +/MEMORY FLD IS RETURNED IN THE AC. +/ +/NOTE--THIS ROUTN MUST BE PLACED IN FLD 0 +/ +CORE, 0 + TAD (6203 + RDF + DCA CORTN + CDF 0 + TAD I (7777 + AND COR70 + SNA + JMP CORELP + CLL RTR + RAR + JMP CORTN +CORELP, CDF 0 /NEEDED FOR PDP-8L + TAD TRYFLD /GET FLD TO TST + CLL RTL + RAL + AND COR70 /MASK USEFUL BITS + TAD CORELP + DCA .+1 /SET UP CDF TO FLD + 0 + TAD I CORLOC /SAV CURRENT CONTENTS + NOP /HACK FOR PDP-8 + DCA .-3 + TAD .-2 /7000 IS A GOOD PATTERN + DCA I CORLOC +COR70, 70 /HACK FOR PDP-8.,NO-OP + TAD I CORLOC /TRY TO READ BK 7000 + 7400 /HACK FOR PDP-8,.NO-OP + TAD .-1 /GUARD AGAINST WRAP AROUND + TAD CORLOC+1 /TAD 1400 + SZA CLA + JMP .+5 /NON EXISTENT FLD EXIT + TAD COR70-6 /RESTORE CONTENS DESTROYED + DCA I CORLOC + ISZ TRYFLD /TRY NXT HIGHER FLD + JMP CORELP + TAD TRYFLD + TAD (-1 +CORTN, 0 + JMP I CORE +CORLOC, COR70+2 /ADR TO TST IN EACH FLD + 1400 /7000+7400+1400=0 +TRYFLD, 1 /CURRENT FLD TO TST + PAGE + *6600 +DATCHG, 0 /FIND THE MONTH/YEAR + CLL RTR /THIS CODE FINDS THE MONTH + RAR /BY CALCULATING THE ADDRESS + AND (777 /OF THE CORRECT MONTH + CLL RTR /IN THE TABLE OF MONTHS + RTR + AND (36 + TAD (MONTHS-3 /HAVE THE ADDRESS OF MONTH-1 + DCA NDX2 /SAVE IT IN FIELD 0, PAGE 0 + CDF 0 /CHANGE DATA FIELD TO 0 + TAD I NDX2 /GET FIRST 2 CHARS. OF MONTH + CDF 10 /CHANGE DATA FIELD TO 1 + DCA I (LDATE+2 /INSERT INTO THE TEXT LINE + CDF 0 /CHANGE DATA FIELD TO 0 + TAD I NDX2 /GET LAST 2 CHARS. OF MONTH + CDF 10 /CHANGE DATA FIELD TO 1 + DCA I (LDATE+3 /INSERT INTO THE TEXT LINE + TAD I (OSDATE /GET THE DATE--FIND THE YEAR + AND (7 /GET THE YEAR OFFSET BITS + DCA I (YRTEMP /STORE THEM AWAY + CDF 0 /CHANGE DATA FIELD TO 0 + TAD I (7777 /GET THE DATE EXTENSION BITS + CDF 10 /CHANGE DATA FIELD TO 1 + AND (600 /MASK TO GET BITS 3 AND 4 + CLL RTR /ROTATE TO GET THEM INTO + RTR /BIT POSITIONS 7 AND 8 + TAD (106 /GET THE NEW BASE YEAR + TAD I (YRTEMP /ADD THE YEAR OFFSET BITS + CIF 10 /CHANGE THE DATA FIELD TO 1 + JMP I DATCHG /HAVE THE YEAR + GETDAT, 0 + TAD I (YRTEMP /GET THE YEAR + AND (7700 /MASK AND ROTATE + CLL RTR /TO GET THE FIRST + RTR /DIGIT (IN SIXBIT) + RTR + TAD (5500 /STICK A HYPHEN IN FRONT + DCA I (LDATE+4 /PUT IN THE TEXT LINE + TAD I (YRTEMP /GET THE YEAR AGAIN + AND (77 /MASK AND ROTATE TO + CLL RTL /GET THE SECOND DIGIT + RTL /(IN SIXBIT) + RTL + TAD (40 /STICK A SPACE AFTER IT + CIF 10 /CHANGE INSTRUCTION FIELD TO 1 + JMP I GETDAT + MONTHS, 5512;0116 /-JAN + 5506;0502 /-FEB + 5515;0122 /-MAR + 5501;2022 /-APR + 5515;0131 /-MAY + 5512;2516 /-JUN + 5512;2514 /-JUL + 5501;2507 /-AUG + 5523;0520 /-SEP + 5517;0324 /-OCT + 5516;1726 /-NOV + 5504;0503 /-DEC + PAGE + FIELD 1 +/PAGE 0 FLD1 TAGS FOR PASS0 +/(PASS 0 LIVES WITH THE USR RESIDENT) + +NMCTS= 20 +MODCNT= 21 +LVLCNT= 22 +OVRCNT= 23 +PTRULS= 24 +MXFLD= 25 + *2000 + +/START OF GLOBAL SYMBOL TABLE +/BUCKET COMES FIRST, INTERNAL +/SYMBOLS AND FIELD 1 CONSTANTS ARE +/HERE ALSO. GST RUNS FROM +/SYMTBL TO OVLTBL-1 + +BUCKET, AAAAAA;0;0;0;EEEEEE;0 /A,B,C,D,E,F + 0;0;0;0;0;0 /G-L + 0;0;0;0;0;0 /M-R + 0;0;0;0;0;0 /S-X + 0;0 /Y,Z + 0;0;0;0;0 /UNUSED BUCKETS MUST BE 0 + 0 /SPACE (FOR BLANK COMMON) + 0;0 + POUND /POUND SIGN FOR INTERNAL SYMBOLS, ALL ARE OF THE FORM (POUND XXXXX) + TRPSYM, TEXT '#YTRAP' + 0 /TRAP VECTOR +LEVSYM, TEXT '#YLVL0' + 0 /OVERLAY LEVEL +SWPSYM, TEXT '#SWAP' + 0;0 +SASYM, TEXT '#MAIN' + 0;0 /STARTING ADDRESS + +/TITLE LINE FOR LOADER MAP + +TLINE, TEXT 'LOADER V' + *.-1 +LXX, VERNUM&70^7+VERNUM+6060 /VERNUM IN SIXBIT + PATCH&77^100+40 /PATCH LEVEL +LDATE, TEXT ' NO-DA -TE ' +STLINE, TEXT 'SYMBOL VALUE LVL OVLY' +HLINE, TEXT '= 1ST FREE LOCATION' +OTLINE, TEXT 'LVL OVLY LENGTH' +SMAPU, ZBLOCK 3 /SYMMAP UNIT, LENGTH, ST BLK # +LIMGU, ZBLOCK 3 /LDR IMG " +OVRSIZ, 0;0 +LVPTR, OVRSIZ +SYMX, 1;SYMTBL-2 + /SYSTEM SYMBOL TABLE + +AAAAAA, 0 + TEXT /ARGERR/ + *.-1 + 1;0 + JARGER + +EEEEEE, 0 + TEXT /EXIT/ + 1;0 + JEXIT + +POUND, .+7 + TEXT /#ARGER/ + *.-1 + 1;0 + JARGER + .+7 + TEXT /#BAK/ + 1;0 + JBAK + .+7 + TEXT /#DATE/ + 1;0 + JDATE + .+7 + TEXT /#DEF/ + 1;0 + JDEF + .+7 + TEXT /#DISMS/ + *.-1 + 1;0 + JDISMS + .+7 + TEXT /#ENDF/ + 1;0 + JENDF + .+7 + TEXT /#EOFSW/ + *.-1 + 1;0 + JEOFSW + .+7 + TEXT /#EXIT/ + 1;0 + JEXIT + .+7 + TEXT /#HANG/ + 1;0 + JHANG + .+7 + TEXT /#IDLE/ + 1;0 + JIDLE + .+7 + TEXT /#INT/ + 1;0 + JINT + .+7 + TEXT /#RDAO/ + 1;0 + JRDAO + .+7 + TEXT /#READO/ + *.-1 + 1;0 + JREADO + .+7 + TEXT /#RENDO/ + *.-1 + 1;0 + JRENDO + .+7 + TEXT /#RETRN/ + *.-1 + 1;0 + JRETRN + .+7 + TEXT /#REW/ + 1;0 + JREW + .+7 + TEXT /#RSVO/ + 1;0 + JRSVO + .+7 + TEXT /#RUO/ + 1;0 + JRUO + .+7 + TEXT /#SWAP/ + 1;0 + JSWAP + .+7 + TEXT /#T812/ + 1;0 + JT812 + .+7 + TEXT /#UE/ + 0 + 1;0 + JUERR + .+7 + TEXT /#WDAO/ + 1;0 + JWDAO + .+7 + TEXT /#WRITO/ + *.-1 + 1;0 + JWRITO + 0 /LAST ONE + TEXT /#WUO/ + 1;0 + JWUO +SYMTBL, 0 /START OF GST + /PASS0- THIS IS THE BEGINNING OF PASS0 + +PASS0, JMP .+4 /NORMAL ENTRY PT + DCA CDSW /CHAINED TO ENTRY PT - NO DECODE 1ST TIME + TAD (7616 + DCA PTRIO + TAD (-10 + DCA LVLCNT /SET LEVEL AND OVERLAY COUNTERS + DCA OVRCNT + CIF 0 + JMS I (CORE /DETERMINE CORE SIZE + DCA MXFLD + JMS I (CORMOV + CDF 0 + 0-1 + CDF 0 + LB0BUF-1 /MOVE LOWER FIELD 0 TO A SAFE PLACE + -2000 + CDF 0 + TAD I (OSJSWD /GET JOB STATUS WORD + AND (376 /CLEAR DESIRED FLAGS + TAD (3403 /SET NO RESTART, USR AND CD AREAS CLEAR + DCA I (OSJSWD /AS WELL AS BATCH FLAG + CDF 10 + TAD I (OSDATE + SNA + JMP NODATE + CLL RTR /ROTATE AND MASK TO GET THE DAY + RAR + AND (37 + JMS MAKSXB /CONVERT TO SIXBIT + DCA I (LDATE+1 /PUT THE DAY INTO THE TEXT LINE + TAD I (OSDATE /GET THE DATE---FIND MONTH + CIF 0 /CHANGE DATA FIELD TO 0 + JMS I (DATCHG /FIND THE MONTH/YEAR + JMS MAKSXB /CONVERT THE YEAR TO SIXBIT + DCA YRTEMP /STORE IT AWAY + CIF 0 /CHANGE INSTRUC. FIELD TO 0 + JMS I (GETDAT /PRINT THE YEAR + DCA I (LDATE+5 /PUT REST OF YEAR IN TEXT LINE + /SET UP OTHER POINTERS TO MODULE TABLES + +NODATE, TAD (-NUMMOD + DCA I (MCTTBL + TAD (MCTTBL+1 + DCA NMCTS /INITIALIZE MODULE CT TBL PTR + TAD (MODTBL+2 + DCA PTRULS /INITIALIZE MODULE TBL PTR + DCA MODCNT + DCA I (MODTBL /CLEAR LIBRARY UNIT + DCA I NMCTS /CLEAR FOR 1ST LEVEL MODULE COUNTS +CDSW, JMP I (RALFLP /ZEROED IF CHAINED TO + JMP I (DECO + +MAKSXB, 0 + DCA TMP0 + DCA TMP1 + TAD TMP0 + TAD (-12 + ISZ TMP1 + SMA + JMP .-3 /SUBTRACT 10 IN A LOOP + TAD (5772 /AS GOOD A NUMBER AS ANY + DCA TMP0 + TAD TMP1 + CLL RTL + RTL + RTL /GET THE TENS DIGIT INTO POSITION + TAD TMP0 + JMP I MAKSXB +YRTEMP, 0 + PAGE + /DECODE COMMAND DECODER INPUT + +RALFLP, JMS I (200 + 5 /COMMAND DECODE + 2214 /.RL DEFAULT EXTENSION + TAD (7616 + DCA PTRIO + TAD I (OS8SWS+1 + AND (40 + CDF 0 + SZA CLA /IS /S SWITCH ON? + DCA I (SVMAIN+LB0BUF /CLEAR (RELOCATED) SVMAIN +DECO, CDF 10 /FOR FULL SYMBOL MAP LISTING + TAD I (7600 /CHK FOR LOADER IMAGE FILE + SNA /OUTPUT FILE? + JMP SM /NO + AND (0017 /MUST BE AN "MS" DEV + TAD (OS8DCB-1 + DCA TMP0 + TAD I TMP0 + SPA CLA /IS IT? + JMP .+4 /YES +SM1, TAD (DEVERR /NO,ERR + JMS I (ERORR + JMP RALFLP + TAD I P7604 + SNA + TAD (1404 /.LD + DCA I P7604 /INTO EXTENSION IF NONE SPECIFIED + JMS I (CORMOV /MOVE LOADER IMAGE FILE NAME + CDF 10 + 7600-1 + CDF 0 /INTO FIELD 0 + LDRNAM+LB0BUF-1 + -5 +SM, TAD I (7605 /CHK FOR SYM MAP FILE + SNA + JMP SM2 /NONE + AND (17 + TAD (OS8DCB-1 + DCA TMP0 + TAD I TMP0 + RAL /LOOK AT "READ ONLY" BIT IN DCB + SPA CLA + JMP SM1 /ERROR - NO GOOD FOR OUTPUT + TAD I (7611 + SNA + TAD (1423 /.LS DEFAULT MAP EXTENSION + DCA I (7611 + JMS I (CORMOV /MOVE SYMMAP FILE NAME INTO FIELD 0 + CDF 10 +P7604, 7605-1 + CDF 0 + LDRNAM+LB0BUF+4 + -5 + /COLLECT INPUT FILES + +SM2, TAD I (OS8SWS + CLL RAR + SZL CLA / IS /L SWITCH ON? + JMP LIBRAR /YES - THIS IS A LIBRARY FILE +FILELP, TAD I PTRIO + SNA + JMP FINLIN /NO MORE INPUT FILES + DCA TMP0 + TAD TMP0 + AND (17 + ISZ PTRULS + DCA I PTRULS /STORE UNIT NUMBER + TAD TMP0 + AND (7760 + CLL RTR + RTR + TAD (7400 + CIA + ISZ PTRULS + DCA I PTRULS /STORE LENGTH + TAD I PTRIO + ISZ PTRULS + DCA I PTRULS /STORE STARTING BLOCK NUMBER + ISZ MODCNT + JMP FILELP /CONTINUE + +FINLIN, JMS I (CORDSW /CHECK C AND O SWITCHES + TAD I (OS8SWS + AND (40 + SZA CLA /IF THE /G SWITCH IS ON + JMP I (EOPAS0 /ITS THE END + TAD I (OS8SWS-1 + SPA CLA /IF AN ALTMODE TERMINATED THE LINE, + JMP I (EOPAS0 /DITTO + TAD (-MCTTBL-1 + TAD NMCTS + SZA CLA /ARE WE STILL IN THE MAIN SECTION? + JMS I (UPDMOD /NO - UPDATE OVERLAY & MODULE COUNTS + JMP RALFLP + LIBRAR, TAD I PTRIO + AND (17 + DCA I (MODTBL /STORE LIBRARY PARAMETERS + TAD I PTRIO /NEGLECTING LENGTH, WHICH WILL + DCA I (MODTBL+2 /BE FILLED IN LATER + TAD I PTRIO + SNA CLA + JMP FINLIN /ONLY ONE FILE ALLOWED ON THE LINE + TAD (MIERR + JMP SM1+1 /OTHERWISE ITS MIXED INPUT + PAGE + /UPDMOD- UPDATE MODULE COUNT TBL + +UPDMOD,0 + CLL + TAD MODCNT /UPDATE -NUM OF + TAD I (MCTTBL /UNUSED MODULES + DCA I (MCTTBL + SZL + JMP MAXRLF /MAX NUMBER EXCEEDED + ISZ OVRCNT /BUMP OVERLAY NUMBER +SKPCLA, SKP CLA + JMP MAXOVL /MORE THAN 16 OVERLAYS IN A LEVEL + TAD MODCNT /UPDATE +NUM OF + TAD I NMCTS /MODULES IN LAST LEVEL + SNA /**** + JMP I UPDMOD + DCA I NMCTS + ISZ NMCTS /ADV PTR TO NXT LOC + DCA I NMCTS /ZERO THE NXT LOC IN PREPARATION + DCA MODCNT /CLR CNT FOR NXT LEVEL + JMP I UPDMOD + +/CORDSW- LOOK FOR SWS C AND O + +CORDSW, 0 + TAD I (OS8SWS+1 + AND (10 + SNA CLA /CHECK FOR /U SWITCH + JMP CHKCSW + CDF 0 + TAD SKPCLA /INHIBIT LEVEL CHECKING + DCA I (TSTTRP + CDF 10 +CHKCSW, TAD I (OS8SWS + RTL + SPA CLA + JMP I (RALFLP + TAD I (OS8SWS+1 + RTL + SMA CLA + JMP I CORDSW + +/O-SWITCH + + JMS UPDMOD + ISZ NMCTS /ADV PTR FOR NXT GUY + DCA I NMCTS /CLR FOR NXT LEVEL MOD CNT + TAD (-21 + DCA OVRCNT + ISZ LVLCNT /BUMP LEVEL COUNTER + JMP I (RALFLP + TAD (MXLERR + JMP MAXRLF+1 /TOO MANY LEVELS + MAXRLF, TAD (MXRERR + JMS ERORR + CDF CIF 0 + JMP I (7605 +MAXOVL, TAD (MXOERR + JMP MAXRLF+1 + +/ERORR- PRINTS OUT ERROR MESSAGES OF A +/ BUFR LOCATED IN FLD1 +/ ENTER WITN ADR OF BUFR IN AC +/ +ERORR, 0 + DCA BFADR + CDF 10 /CALL TTYHAN + JMS I (CORMOV + CDF 0 + LB0BUF-1 /MOVE LOWER FIELD 0 BACK + CDF 0 /SO WE CAN USE THE MESSAGE HANDLER + 0-1 + -2000 + CIF 0 + JMS I (TTYHAN + CDF 10 +BFADR, 0 + JMP I ERORR + MIERR, TEXT /MIXED INPUT/ +DEVERR, TEXT /BAD OUTPUT DEVICE/ +MXRERR, TEXT /TOO MANY RALF FILES/ +MXLERR, TEXT /TOO MANY LEVELS/ +MXOERR, TEXT /TOO MANY OVERLAYS/ + PAGE + /PASS1, PASS2 INITIALIZATION + +EOPAS0, JMS I (UPDMOD /BUMP COUNTS FOR LAST LINE OF INPUT + ISZ NMCTS + DCA I NMCTS /PUT IN A DOUBLE ZERO AT THE END + JMS I (CORMOV + CDF 0 + LB0BUF-1 + CDF 0 + 0-1 /MOVE LOWER FIELD 0 BACK INTO PLACE + -2000 + TAD I (MODTBL + SZA CLA /USER-SPECIFIED LIBRARY? + JMP RDLIBH /YES + CLA IAC + JMS I (200 + 2 /LOOKUP + LIBRY + 0 + JMP NOLIB /FORLIB.RL NOT FOUND + TAD .-3 /GET STARTING BLOCK + DCA I (MODTBL+2 + CLA IAC + DCA I (MODTBL /STORE UNIT AND BLOCK # +RDLIBH, STL RTR + DCA I (MODTBL+1 /JUST TO BE CAREFUL + CIF 0 + JMS I (IOHAN /READ BLOCK 0 OF THE LIBRARY CATALOG + MODTBL + 0210 +PLB, RALFBF + 0 + STA + TAD I PLB + SNA CLA /IS IT AN HONEST - TO - GOD LIBRARY? + JMP .+4 /YES +NOLIB, DCA I (MODTBL + DCA I (MODTBL+2 + DCA I (RALFBF+3 /ZERO COUNT WORD IN BUFFER + TAD I (RALFBF+3 + DCA I (MODTBL+1 /STORE LENGTH OF CATALOGUE + TAD (LHDR-1 + DCA NDX0 + TAD (-400 + DCA TMP0 + DCA I NDX0 /0 OUT + ISZ TMP0 /LDR HDR + JMP .-2 /GET PAGE 0 + /PASS1 INITIALIZATION CONTINUED + + TAD I (MCTTBL /UNUSED + DCA TMP2 /MODULES + TAD (MCTTBL+2 /GET NUMBER OF OVERLAYS + DCA NDX0 / IN EACH LEVEL + TAD (QUSRLV+4 /WHERE THE + DCA TMP0 /CNTS GO IN + JMP BY0 /LDR HDR BLK +LOP0, ISZ I TMP0 /INCREMENT NUMBER OF OVERLAYS IN THIS LEVEL + TAD I NDX0 + SZA CLA /END OF LEVEL? + JMP LOP0 /NO + TAD (4 /THIS LEVEL + TAD TMP0 + DCA TMP0 +BY0, DCA I TMP0 /RESET CNT + TAD I NDX0 /0,0 ENDS + SZA CLA /MOD CNT TBL + JMP LOP0 /DO MORE PTR TO + TAD I (MODTBL+1 /GET LENGTH OF LIBRARY CATALOG + DCA TMP4 /BLOCKS + TAD TMP2 /CHK FOR MAX + SZA CLA /NUM OF RALFS 0=MOD TBL IS FULL + TAD I (MODTBL /CHK FOR NO + CDF + DCA I (LIBRSW /LIBRARY AND SET SWITCH ACCORDINGLY + TAD TMP2 /-NUM LEFT + DCA I (MLEFT /OF RALF MODS + TAD (SYMTBL-1 /PTR TO TOP + DCA I (NDX4 /OF GST + TAD I (OSJSWD + AND (7377 /KILL "BATCH PROTECTED" FLAG + DCA I (OSJSWD + AC7776 /IS THERE + TAD MXFLD /GREATER THAN 12K OF CORE + SPA SNA CLA /? + JMP LS16K /NO + TAD (200^12!30 /SET TXT I/O + DCA I (TXTBLK-2 /BUFFS UP IN FLD 3 + TAD (-5000 /-WDCNT (12 + DCA I (TXTWDS /BLKS) + TAD (6231 /CDF 30 + DCA I (RDTCDF +LS16K, TAD (7700 /USR IS NOT + DCA I (USR /IN CORE + CDF 10 + JMP I (INIBFS +LIBRY, 0617;2214;1102;2214 /FORLIB.RL + PAGE + /THIS IS THE INITIAL BINARY BUFFER TABLE + +R= LDBUFS-BUFTAB + +BUFTAB, .+4+R; 0; 0; 3200 /03200-05177 +B8KPT, .+4+R; 0; 0; 5200 /05200-07177 + .+4+R; 0; 0; 0020 /20000-21777 +B12KPT, .+4+R; 0; 0; 2020 /22000-23777 +B16KPT, .+4+R; 0; 0; 4020 /24000-25777 + .+4+R; 0; 0; 0040 /40000-41777 +B20KPT, .+4+R; 0; 0; 2040 /42000-43777 + .+4+R; 0; 0; 4040 /44000-45777 + .+4+R; 0; 0; 0050 /5000-51777 + 0; 0; 0; 2050 /52000-53777 + INIBFS, TAD MXFLD + TAD (JMP STBPTR-1 + DCA .+1 + HLT /DISPATCH ON NUMBER OF FIELDS +STBPTR, DCA B8KPT + DCA B12KPT + DCA B16KPT + DCA B20KPT + NOP + NOP /NOT SET UP TO USE MORE THAN 24K + NOP + JMS I (CORMOV + CDF 10 + BUFTAB-1 /MOVE THE BINARY BUFFER TABLE + CDF 10 + LDBUFS-1 /INTO A SAFE PLACE + -50 + CDF 0 + TAD LVLCNT /SET -NUM OF + TAD (11 /LEVELS + CIA + DCA I (NLVL + TAD (-5 /NUM OF LIBR + DCA TMP2 /BLKS FOR 8K + CLA CMA + TAD MXFLD + SNA CLA /GREATER THAN 8K CORE? + JMP TO8K /NO SET LIBR ARGS + DCA I (LBARG+1 + TAD (200^12!20 /12 BLKS FLD2 + DCA I (LBARG + TAD (6221 /CDF 20 + DCA I (LBFLD + TAD (6221 + DCA I (GETLEN+1 + TAD (-12 + DCA TMP2 +TO8K, TAD TMP2 /WILL LIBR + TAD TMP4 /BE CORE + SMA SZA CLA /RESIDENT? + DCA I (RESFLG /NO + TAD (SYMTBL-1 + DCA I (NDX0 + CDF 10 + TAD (ESDPG-1 /ENTER DEFAULT + DCA NDX0 /VALUES FOR + TAD (-200 /ESD REF PAGE + DCA TMP0 /IT SAVES + TAD (SYMTBL+5 /PROBLEMS WITH + DCA I NDX0 /EXTERNS + ISZ TMP0 + JMP .-3 + CLA STL RTL + DCA I (LHDR /STORE LOADER IMAGE CODE IN HEADER + TAD (VERNUM + DCA I (QVERNO /STORE LOADER VERSION NUMBER + CIF 0 + JMP I (STPAS1 + PAGE + /CORMOV- A CORE MOVE FOR A CHUNK OF CORE IN +/ ANY FLD TO ANY FLD. +/ +/ CALL JMS CORMOV +/ CDF Z1 /Z1=FROM FLD +/ ADDR1 /ADDR OF (1ST LOC-1) +/ CDF Z2 /Z2=TO FLD +/ ADDR2 /ADDR OF (1ST LOC-1) +/ -N /-OCT NUM OF WDS TO MOV +/ +CORMOV, 0 + CLA CMA + TAD CORMOV + DCA NDX0 + TAD I NDX0 + DCA TOCDF-2 + TAD I NDX0 + DCA NDX1 + TAD I NDX0 + DCA TOCDF + TAD I NDX0 + DCA NDX2 + TAD I NDX0 + DCA TMP0 + 0 + TAD I NDX1 +TOCDF, 0 + DCA I NDX2 + ISZ TMP0 + JMP TOCDF-2 + CDF 10 + JMP I NDX0 /RTN + + $$$$$ + diff --git a/sw/f4/FRTSRC/ltr.ra b/sw/f4/FRTSRC/ltr.ra new file mode 100644 index 0000000..0951798 --- /dev/null +++ b/sw/f4/FRTSRC/ltr.ra @@ -0,0 +1,50 @@ +/ LTR (LOAD TRUTH) EMULATION ROUTINES +/ +/ VERSION 5A 4-26-77 MH +/ + SECT #LTR + ENTRY #EQ + FLDA TRUE + STARTF +#EQ, JA . + JEQ #EQ-3 + FCLA + JA #EQ-1 + ENTRY #NE +#NE, JA . + JEQ .+4 + FLDA TRUE + STARTF + JA #NE + ENTRY #GE + FLDA TRUE + STARTF +#GE, JA . + JGE #GE-3 + FCLA + JA #GE-1 + ENTRY #LE + FLDA TRUE + STARTF +#LE, JA . + JLE #LE-3 + FCLA + JA #LE-1 + ENTRY #GT + FLDA TRUE + STARTF +#GT, JA . + JGT #GT-3 + FCLA + JA #GT-1 + ENTRY #LT + FLDA TRUE + STARTF +#LT, JA . + JLT #LT-3 + FCLA + JA #LT-1 +TRUE, F 1.0 + F 0.0 + END + diff --git a/sw/f4/FRTSRC/onqib.ra b/sw/f4/FRTSRC/onqib.ra new file mode 100644 index 0000000..2357697 --- /dev/null +++ b/sw/f4/FRTSRC/onqib.ra @@ -0,0 +1,102 @@ +/ +/ VERSION 5A 4/28/77 PT +/ + FIELD1 ONQI + 0 + JMP SETINT /SET UP #INT INITIALLY + ISZ ONQI /BUMP ARG POINTER + ISZ INTQ+1 /BUMP INTERRUPT Q POINTER + IOF /** + DCA% INTQ+1 /STICK IOT ONTO INT Q + TAD XSKP /FOLLOWED BY A SKIP + ISZ INTQ+1 + DCA% INTQ+1 /ONTO INT Q + ISZ ONQI /SKIP FIRST WORD OF ADDR + ISZ INTQ+1 +ONQISW, TAD% ONQI /GET INT HANDLER ADDRESS + ISZ ONQI + DCA% INTADR+1 /ONTO ADDRESS STACK + TAD INTADR+1 /NOW MAKE JMS% + AND L177 + TAD L4600 + DCA% INTQ+1 /ONTO INT Q + ISZ INTADR+1 + ION /:: + ISZ IQSIZE /ROOM FOR MORE ? + JMP% ONQI /YES + TAD .-1 /NO, CLOSE OUT THESUBR + DCA ONQI+1 + JMP% ONQI +SETINT, TAD ONQISW /DO THIS PART ONLY ONCE + DCA ONQI+1 + CDF + IOF /** + TAD XSKP /FIX UP #INT + DCA% XINT+1 + ISZ XINT+1 + TAD INTQ+1 + DCA% XINT+1 + ISZ XINT+1 + TAD CIFCDF + DCA% XINT+1 + ION /** +CIFCDF, CDF CIF 10 + JMP ONQI+1 /BACK TO ONQI + EXTERN #INT +XINT, ADDR #INT +INTQ, ADDR IHANDL +INTADR, ADDR IHADRS +IQSIZE, -5 +XSKP, SKP +L177, 177 +L4600, 4600 + CDF CIF + JMP% IHANDL +IHANDL, 0 + REPEAT 16 + JMP IHANDL-2 +IHADRS, 0;0;0;0;0 + + ENTRY ONQB +ONQB, 0 + JMP SETBAK /SETUP #IDLE + TAD% ONQB /GET ADDRESS OF IDLE JOB +ONQBSW, ISZ ONQB + DCA% BAKADR+1 /STORE ONTO BACKROUND JOB Q + TAD BAKADR+1 /MAKE A JMS% + ISZ BAKADR+1 + AND L177 + TAD L4600 + ISZ BAKQ+1 + DCA% BAKQ+1 + ISZ BQSIZE /MORE ROOM ? + JMP% ONQB /YES + TAD .-1 /NO, CLOSE THE DOOR + DCA ONQB+1 + JMP% ONQB +SETBAK, TAD ONQBSW /CLOSE OFF #IDLE INITIALIZATION + DCA ONQB+1 + CDF + TAD XSKP /FIX UP #IDLE + DCA% XIDLE+1 + TAD BAKQ+1 + ISZ XIDLE+1 + DCA% XIDLE+1 + ISZ XIDLE+1 + TAD CIFCDF + DCA% XIDLE+1 + CIF CDF 10 + JMP ONQB+1 + EXTERN #IDLE +XIDLE, ADDR #IDLE +BAKQ, ADDR BAKRND +BAKADR, ADDR BHADRS +BQSIZE, -5 + CDF CIF + JMP% BAKRND +BAKRND, 0 + REPEAT 6 + JMP BAKRND-2 +BHADRS, 0;0;0;0;0 + END + diff --git a/sw/f4/FRTSRC/p2ocfg.pa b/sw/f4/FRTSRC/p2ocfg.pa new file mode 100644 index 0000000..f9db3cf --- /dev/null +++ b/sw/f4/FRTSRC/p2ocfg.pa @@ -0,0 +1,2 @@ +/ CONFIGURATION FILE TO GENERATE PASS2O (PH, APR 2008) +OVERLY=1 diff --git a/sw/f4/FRTSRC/pass2.pa b/sw/f4/FRTSRC/pass2.pa new file mode 100644 index 0000000..0a6b273 --- /dev/null +++ b/sw/f4/FRTSRC/pass2.pa @@ -0,0 +1,4679 @@ +/3 OS/8 FORTRAN (PASS TWO) +/ +/ VERSION 4A PT 16-MAY-77 +/ +/ OS/8 FORTRAN COMPILER - PASS 2 +/ +/ BY: HANK MAURER +/ UPDATED BY: R. LARY + M. HURLEY +/ +/ +/COPYRIGHT (C) 1974,1975 BY DIGITAL EQUIPMENT CORPORATION +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ +/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE +/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT +/CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY +/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. +/ +/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER +/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED +/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH +/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. +/ +/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE +/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY +/DIGITAL. +/ +/ +/ +VERSON=4 + /SEE F4.PA FOR LIST OF MAINTENANCE RELEASE CHANGES -S.R. +/ALSO, ADDED SAFETY CDF 0 TO BUMP ROUTINE TO FIX BUG +/MASSAGED LINK IN THAT AREA TO GET ROOM +/ALSO, +/ FIXED BUG RE DN ERROR PRINTING WRONG LINE NUMBER +/ +/ +/CHANGES FOR OS/8 V3D AND OS/78 BY P.T. +/.PATCH LEVEL FOR PASS2 IS IN LOCATION 327 + + IFNDEF OVERLY + IFNZRO OVERLY + *2 /V3C +TEM, 1 /V3C +LINENO, 1 /LINE NUMBER +VERS, -VERSON /VERSION NUMBER +ERRPTR, 5001 /POINTER TO THE ERROR LIST +FILDEV, 0 /THIS IS THE FILE DESCRIPTOR +FILBLK, 0 /FOR RALF +X10, COMREG-1 /INTER PASS COM REGION +X11, 0 +X12, 0 +X13, 0 +X14, 0 +X15, 0 +X16, 0 +X17, 0 /AUTO INDEX REGISTERS +ENTRY, 0 /THINGS USED BY SYMBOL + /TABLE FIDDLER +OENTRY, 0 +BUCKET, 0 +TYPE, 0 +TEMP, 0 /GENERAL TEMPS +TEMP2, 0 +ARG1, 0 /ARGS AND TYPES +BASE1, 0 +TYPE1, 0 +ARG2, 0 +BASE2, 0 +TYPE2, 0 +TMPCNT, 1 /TEMP COUNT +TMPMAX, 0 /MAX TEMP COUNT +LITNUM, 0 /LITERAL DISPLACEMENT + TMPBLK=2 + OUBUF=4400 + COMREG=4600 + STACK1=4700 + OVRLAY=5000 + NPOVLY=700 + XRBUFR=6600 + STACK=7000 /STACK-5 CAN'T BE 0 + INBUF=7200 + NPPAS3=1600 +ARG, 0 /TEMP FOR CODE +AC, 0 /AC FOR MULTIPLY ROUTINE +XR, 0 /XR CHAR FOR OADDR +MQ, 0 /MQ FOR MULTIPLY ROUTINE +XRNUM, 0 /TEMP USED IN XR STUFF +WHATAC, 0 /POINTER TO VAR +WHATBS, 0 /JUST STORED +FREEXR, 0 /NUMBER OF FREE + /INDEX REG +DIMPTR, 0 /POINTER TO DIM INFO + /AFTER GETSS +NARGS, 0 /ARG COUNT FOR SS VAR + /COMPILE +GLABEL, 1 /GENERATED LABEL COUNTER +STKLVL, STACK /STACK LEVEL (CHANGED + /BY DO) +COMMA, 254 /, +PLUS, 253 /+ +IFLABL, 0 /HOLDS LABEL FOR LOG IF +DOTEMP, 7000 /DO LOOP TEMP COUNTER +BINARY, 0 /BINARY IO=1, FORMATTED=0 +INPUT, 0 /INPUT=1 OUTPUT=0 FOR IO STMTS +PROGNM, 0 /POINTER TO PROG/FUNC NAME +FUNCTN, 0 /0=MAIN, 1=FUNC, -2=SUBR +ARGLST, 0 /POINTER TO ARG LIST +DATASW, 0 /=1 IF THIS IS A DATA STMT +GCTEMP, 0 /TEMP USED BY GENCAL +EXTLIT, 0 /EXTERNAL LITERALS LIST +ELCNT, 0 /AND COUNT +IOLOOP, 0 /IO LOOP SWITCH +ARGIO, 0 /ARG IO SWITCH +F1LNAM, 0617;2224;2216;2415 /FILE NAME FORTRN.TM +DEVH, 7607 /DEVICE HANDLER ADDRESS +ACSWIT, 0 /IS NON ZERO IF CALLING AN ARG +IOSTMT, 0 /SET 1 IF IN IO STMT + /(FOR IMPLIED LOOPS) +FMODE, 1 /1 IF IN F OR D MODE (0 IF E) +ASFSWT, 0 /1 IF ASF PROLOG, -1 IF + /ASF END, 0 OTHER +JSRLBL, 0 /LABEL NUMBER FOR CALLS TO ARGS +DPUSED, 0 /=1 IF DP HARDWARE USED +QM4, -4 +Q260, 260 +QTTYOU, TTYOUT +QERMSG, ERMSG +QNEXT, NEXT +QNEXTM, NEXT-2 +QUCODE, UCODE +QCODE, CODE +QINWOR, INWORD +QONUMB, ONUMBR +QSAVEA, SAVEAC +Q6M3, +Q5, 5 +QGENCO, GENCOD +QM6, -6 +QOPCOD, OPCOD +QOPCDE, OPCODE +QOADDR, OADDR +Q17, 17 +QTTYMS, TTYMSG +QXRTBL, XRTABL +QCHKXR, CHEKXR +QGENSF, GENSTF +QGENSE, GENSTE +QOSNUM, OSNUM +QCRLF, CRLF +QOTAB, OTAB +QOUTSY, OUTSYM +QGARG, GARG +Q20, 20 +Q40, 40 +QOUTNA, OUTNAM +QLITRL, LITRL +Q200, 200 +Q255, 255 +Q3, 3 +QOLABE, OLABEL +QGETSS, GETSS +Q256, 256 +QSAVAC, SAVACT +QSKPIR, SKPIRL +QGENCA, GENCAL +QLOADA, LOADA +QMUL12, MUL12 +QGARGS, GARGS +QOINS, OINS +QOCHAR, OCHAR +QNUMBR, NUMBRO +QXRBUF, XRBUFR +QTTYP2, TTYP2C +QTTCRL, TTCRLF +QM63, -63 +Q7605, 7605 +RELCD, 0 +QLABEL, NLABEL +P0F1, 5274 /101-2605 +P0F2, VERROR + / OUTPUT UTILTIY ROUTINES + PAGE +OCNT, +CRLF, 0 /OUTPUT CR LF + TAD (215 + JMS I QOCHAR + TAD (212 + JMS I QOCHAR + TAD (200 + KRS + TAD (-203 + SNA CLA + KSF /CHECK FOR ^C + JMP I CRLF + JMP I (7605 +NCHAR, +OSNUM, 0 /PRINT STMT NUMBER + IAC /SKIP POINTER WORD + DCA NAMPTR + TAD (6211 /ALWAYS IN FIELD 1 + DCA NAMCDF + TAD OSNUM /SAVE ENTRY POINT + DCA OUTNAM + TAD (243 /GET FIRST CHAR (ALWAYS #) + JMP L6201 /GO PRINT NAME +TTCHAR, +OUTSYM, 0 /PRINT OPCODE + DCA NAMPTR /SAVE POINTER TO STUFF + TAD L6201 /ALWAYS FIELD 0 + DCA NAMCDF + TAD OUTSYM /SAVE ENTRY + DCA OUTNAM + JMP NAMCDF /PRINT REST +ONUMT, +OUTNAM, 0 /OUTPUT NAME + DCA NAMPTR /SAVE ADDRESS OF NAME + RDF /GET FIELD OF NAME + TAD L6201 + DCA NAMCDF /SAVE AS CDF + TAD I NAMPTR /GET FIRST CHAR (ALREADY ASCII) + ISZ NAMPTR /SKIP OVER TYPE AND DIM PTR + ISZ NAMPTR +L6201, CDF + JMS I QOCHAR /OUTPUT CHAR + ISZ NAMPTR +NAMCDF, 0 + TAD I NAMPTR /GET NEXT TWO CHARS + CDF + SNA /IS NAME DONE ? + JMP I OUTNAM /YES + DCA NCHAR /SAVE TWO CHARS + TAD NCHAR + RTR /GET UPPER CHAR + RTR + RTR + TAD (240 + AND (77 + TAD (240 + JMS I QOCHAR /OUTPUT IT + TAD NCHAR /NOW DO LOWER + AND (77 + SNA + JMP I OUTNAM /NAME DONE + TAD (240 + AND (77 + TAD (240 + JMP L6201+1 /GO AND OUTPUT IT +ONUMBR, 0 /OUTPUT OCTAL NUMBER + DCA ONUMT /SAVE TEMPORARILY + TAD QM4 /4 DIGITS + DCA OCNT +OLOOP, TAD ONUMT + CLL RTL + RAL + DCA ONUMT + TAD ONUMT + RAL + AND (7 + TAD Q260 + JMS I QOCHAR + ISZ OCNT + JMP OLOOP + JMP I ONUMBR +TTYP2C, 0 /PRINT 2 CHARS ON THE TTY + DCA TTCHAR + TAD TTCHAR + RTR + RTR + RTR + JMS CONVRT + TAD TTCHAR + JMS CONVRT + JMP I TTYP2C +NAMPTR, +CONVRT, 6401 /CONVERT TO ASCII + AND (77 + SZA + TAD (240 + AND (77 + TAD (240 + JMS I QTTYOUT + JMP I CONVRT +TTCRLF, 0 + TAD (215 + JMS I QTTYOUT + TAD (212 + JMS I QTTYOUT + JMP I TTCRLF +TTYMSG, 0 /PRINT 2 CHAR ERROR MESSAGE + CDF + TAD I TTYMSG + ISZ TTYMSG /PRINT ERROR MESSAGE + JMS I QERMSG +FATAL, JMP I QNEXT /FATAL ERROR MESSAGE + TAD I FATAL + JMS I QERMSG + JMP I Q7605 /RETURN TO PS8 +DP2C1, TEXT '.+2,1' +NEG, JMS I QUCODE /NEGATE CODE + NEGTBL-1 + JMP I QNEXT + PAGE + / OPCODE JUMP TABLE + + TAD TEMP2 + SKP /CODE ALREADY READ +NEXT, JMS I QINWORD /GET NEXT INPUT WORD + TAD (XPUSH /INDEX INTO JUMP TABLE + DCA TEMP2 + CDF 10 + TAD I TEMP2 + CDF 0 + DCA TEMP2 /GET JUMP ADDRESS + JMP I TEMP2 /GO THERE + /OPTIMIZING RELATIONAL CODE FOR OS/8 F4 +/COMPLIMENTS OF R.L. + +LE, STL RTL /2 +LT, TAD QM4 /GENERATE -4 FOR LT, -2 FOR LE + JMP GE+1 /GO TO COMMON RELATIONAL CODE +GT, STL RTL +GE, IAC /GENERATE 1 FOR GE, 3 FOR GT + DCA RELCD /ALL THIS FUNNY STUFF IS BECAUSE SOME + JMS I QCODE /OF THE RELATIONAL SKELETONS OPTIMIZE BY + LETABL-6;5 /PERFORMING THE RELATIONAL ON THE NEGATIVE + TAD RELCD /OF THE FAC - WHEN THIS HAPPENS SPECIAL + SPA /CODE IN THE SKELETON DOES AN "ISZ RELCD", + CIA /CHANGING ABS(RELCD) TO ITS OPPOSITE RELATIONAL + JMP RELGEN /E.G. GE(1) TO LE(2), LE(-2) TO GE(-1) + +EQ, CLA IAC /SINCE EQ AND NE ARE SIGN-INDEPENDENT, +NE, DCA RELCD /WE DON'T NEED THAT KLUDGE BUT FOR COMPATIBILITY + JMS I QCODE /WITH RTPS THE OS/8 FORTRAN SYSTEM FUNCTION + EQTABL-6;5 /"#CEQ" WORKS THE WRONG WAY - IT PRODUCES + CLA IAC /A 1.0 IF THE COMPLEX AC WAS (0.,0.) + AND RELCD /AND A 0.0 OTHERWISE - SO WE HAVE TO REVERSE + SZA CLA /THE SENSE OF COMPLEX .EQ. AND .NE. RELATIONS. +RELGM1, TAD Q5 +RELGEN, DCA RELCD /STORE "FINAL" RELCD + JMS I QINWORD /GENTLY PROBE AHEAD IN THE INPUT + DCA TEMP2 + TAD TEMP2 + TAD (XPUSH-XLOGIF + SNA CLA /IF THIS WAS THE TOP RELATION OF A LOGICAL IF, + JMP LIFOPT /WE'RE IN A POSITION TO OPTIMIZE + TAD RELCD /OTHERWISE OUTPUT A CALL TO THE + CLL RAL /ROUTINE CORRESPONDING TO THE RELATIONAL + TAD (LTRNE + DCA .+3 + CLA IAC + JMS I (OJSR /GENERATE A JSA #XX + 0 + JMP I QNEXTM2 /PROCESS THE WHATCHIMACALLIT + +LIFOPT, TAD TYPE1 /SEE IF WE SHOULD GENERATE A "STARTF" FIRST + AND Q17 /ONLY WORRY ABOUT D.P. + TAD QM4 /SINCE THE ROUTINE #CEQ DOES A STARTF + DCA FMODE /FMODE=0 ONLY IF ARGS WERE D.P. + JMS I QGENSF /GENERATE STARTF IF NECESSARY + JMP I .+1 + LIFBGN+1 /GO TO LOGICAL IF PROCESSOR + +EQV, JMS I QCODE /.EQV. LOGICAL OPERATOR + EQVTBL-6;0 + JMP RELGM1 + / PASS TWO OUTPUT ROUTINE +OCHAR, 0 /OUTPUT A CHAR TO THE + /RALF INPUT FILE + AND (377 + DCA OUTEMP /SAVE CHAR + ISZ OUJUMP /BUMP THREE WAY SWITCH +OUJUMP, JMP . + JMP CHAR1 + JMP CHAR2 + TAD OUTEMP /HIGH FOUR BITS GO INTO + CLL RTL /THE HIGH ORDER BITS OF THE + RTL /FIRST WORD OF THE TWO WORD PAIR + AND (7400 /SEE NOTE * BELOW + TAD I OUPOLD /COMBINE WITH OTHER BITS + DCA I OUPOLD + TAD OUTEMP /THE OTHER FOUR BITS OF THIS CHAR + CLL RTR /GO INTO THE HIGH ORDER FOUR + RTR /BITS OF THE SECOND + /WORD OF THE PAIR + RAR + AND (7400 + TAD I OUPTR + DCA I OUPTR + TAD OUJMP /RESET 3 WAY BRANCH + DCA OUJUMP + ISZ OUPTR /BUMP BUFFER POINTER + ISZ OUWDCT /AND DOUBLE WORD COUNTER + JMP I OCHAR /BUFFER NOT FULL + JMS OUDUMP /DUMP IT + JMP I OCHAR +CHAR2, TAD OUPTR /SAVE FIRST WORD POINTER + DCA OUPOLD + ISZ OUPTR /GO TO SECOND WORD +CHAR1, TAD OUTEMP /STORE CHAR 1 OR 2 + DCA I OUPTR + JMP I OCHAR +OUTEMP, +OUDUMP, 0 /BUMP THE DUFFER + TAD OSIZE /ANY ROOM LEFT ? + SNA + JMP OUERR + IAC + DCA OSIZE /YES, ITS OK + JMS I DEVH /WRITE + 4200 /CONTROL WORD + OUBUF /BUFFER POINTER +OBLOCK, 0 /BLOCK NUMBER + JMP OUERR /ERROR + ISZ OBLOCK /INCREMENT BLOCK NUMBER + ISZ FILSIZ /AND FILE SIZE + TAD OBLOCK-1 /SET BUFFER POINTER + DCA OUPTR + TAD (-200 /SET DOUBLE WORD COUNT + DCA OUWDCT + JMP I OUDUMP +OUERR, JMS I (FATAL /FATAL OUTPUT ERROR + 1706 +/ * THE PONY EXPRESS STARTED IN 1860 AND ONLY RAN +/ FOR 19 MONTHS WHILE LOSING $200,000. +OUPOLD, 0 +OUPTR, OUBUF +OUJMP, JMP OUJUMP +OUWDCT, -200 +OSIZE, 0 +DD1, TEXT '1' + PAGE + / READ FROM FORTRN.TM + +INWORD, 0 /READ A WORD FROM INPUT FILE + ISZ INBCNT /ANYTHING LEFT IN BUFFER ? + JMP NOREAD /YES + ISZ INRCNT /ANYTHING LEFT IN FILE? + SKP + JMP I (END /NO, END OF PROG + JMS I DEVH /READ NEXT BLOCK +X200, 0200 + INBUF +INBLOK, 0 + JMP INERR /INPUT ERROR + ISZ INBLOK /BUMP BLOCK NUMBER + TAD (-400 /RESET COUNTER + DCA INBCNT + TAD INBLOK-1 /RESET POINTER + DCA INBPTR +NOREAD, TAD I INBPTR /GET WORD FROM BUFFER + ISZ INBPTR /BUMP BUFFER POINTER + JMP I INWORD +INERR, JMS I (FATAL /FATAL INPUT ERROR + 1105 +INBCNT, -1 /FORCE READ FIRST TIME +INBPTR, 0 +INRCNT, 0 + / CODE UTILITIES +GETSS, 0 /GET POINTER TO DIM INFO + CDF 10 + IAC + DCA DIMPTR /ADDR OF TYPE WORD + TAD I DIMPTR + ISZ DIMPTR /MOVE TO DIM/EQUIV POINTER + AND X200 /EQUIV INFO ? + SNA CLA + JMP .+3 /NONE + TAD I DIMPTR /SKIP EQUIV INFO + DCA DIMPTR + TAD I DIMPTR /ADDRESS OF DIM INFO + JMP I GETSS +NUMBRO, 0 /OUTPUT 15 BIT OCTAL NUMBER + TAD AC /IS HIGH DIGIT 0 ? + SNA + JMP .+3 /YES, PRINT 4 DIGITS ONLY + TAD Q260 /MAKE IT ASCII + JMS I QOCHAR /PUT IT + TAD MQ /NOW LOW FOUR DIGITS + JMS I QONUMBR + JMP I NUMBRO +UCODE, 0 /GEN CODE FOR UNARY OPERATORS + JMS I QSAVEAC /SAVE AC IF NEEDED + JMS GARG + JMP OTERR /OPERATOR/TYPE ERROR + TAD ARG1 /IS ARG IN AC ? + SNA CLA + TAD Q5 /YES, USE SECOND HALF OF TABLE + TAD TYPE1 + TAD I UCODE /PLUS TABLE ADDRESS + DCA USKEL + CDF 10 + TAD I USKEL /ADDR OF SKELETON + SNA + JMP OTERR /0 MEANS BAD + /OPERATOR/TYPE COMBO + DCA USKEL /SAVE SKELETON ADDR + JMS I QGENCOD /GO DO THE CODE +USKEL, 0 + DCA I X16 /RESULT IN AC + ISZ X16 /BUMP STACK POINTER + ISZ X16 /TYPE IS ALREADY THERE + ISZ UCODE /FIX RET ADDR + JMP I UCODE +GARG, 0 /GET ONE ARG + CLL CMA RTL /BACK UP ONE ENTRY + TAD X16 + DCA X16 + TAD X16 /USABLE POINTER + DCA X15 + TAD I X15 /GET OPERAND + DCA ARG1 + TAD I X15 + DCA TYPE1 + TAD I X15 + DCA BASE1 + TAD TYPE1 /CHECK TYPE + TAD QM6 + SMA CLA + JMP I GARG /TAKE ERROR EXIT + ISZ ARG2 /MAKE SURE ARG2 ISN'T ZERO + JMS I (MPTRA1 /MOVE THE POINTER IF + /THERE IS ONE + ISZ GARG + JMP I GARG + +TTYOUT, 0 /OUTPUT TO THE TTY + TLS + TSF + JMP .-1 + CLA + KSF + JMP I TTYOUT /NO KEYBOARD FLAG + KRB + AND (177 /ACCEPT PARITY ASCII + TAD (-3 /^C ? + SNA + JMP I Q7605 /YES, BACK TO PS8 + TAD (3-17 /^O ? + SZA CLA + JMP I TTYOUT /NO, RETURN + DCA TTYOUT+1 /KILL OUTPUT STUFF + DCA TTYOUT+2 + DCA TTYOUT+3 + JMP I TTYOUT /RETURN + LTRNE, TEXT '#NE' + TEXT '#GE' + TEXT '#LE' + TEXT '#GT' + TEXT '#LT' + TEXT '#EQ' + PAGE + / SOME TEXT + +P2, TEXT '+2' +XVAL, TEXT '#VAL' +DP4, TEXT '.+4' +FADD, TEXT 'FADD' +FLDA, TEXT 'FLDA' +FSUB, TEXT 'FSUB' + / SAVE AC ROUTINES +SAVACT, 0 /SAVE TOP OF STACK IF + /NECESSARY + TAD SAVACT /SAVE RETURN ADDR + DCA SAVEAC + CLL CMA RAL + JMP SAVEAC+2 /BACK UP ONLY ONE ENTRY +SAVEAC, 0 /STORE AC IF NEEDED + TAD (-5 /LOOK AT STACK TWO DOWN + TAD X16 + DCA SATEMP + TAD I SATEMP /IF 0, RESULT WAS LEFT IN AC + SZA CLA + JMP I SAVEAC /NO, NO STORE NEEDED + TAD TMPCNT /STORE TEMP NUMBER + DCA I SATEMP + ISZ SATEMP /MOVE TO TYPE WORD + TAD I SATEMP /GET TYPE + JMS SAVE /GO DO ACTUAL STORE + JMP I SAVEAC +SAVE, 0 /SAVE AC + DCA ACSTOR /THIS IS THE TYPE + TAD ACSTOR /IS IT COMPLEX OR DOUBLE? + TAD QM4 + SNA + JMP NOC /ITS DOUBLE + IAC + SZA CLA + JMP NOCORD /NO + JMS I QGENCOD /STARTE; FLDA #CAC + SEGCAC-1 +NOC, JMS ACSTOR /%FSTA #TMP+XXXX + JMS TMPBMP /THIS USE TWO TEMPS + JMP I SAVE +NOCORD, JMS ACSTOR /%FSTA #TMP+XXXX + JMP I SAVE + SATEMP, +ACSTOR, 0 /GENERATES FSTA TEMP+XXXX + JMS I QOPCOD /OUTPUT %FSTA %TEMP+XXXX + FSTA + JMS I QOADDR + TMPCNT /TMPCNT CONTAINS THE + /ARG NUMBER + JMS TMPBMP /BUMP TEMPORARY NUMBER + JMP I ACSTOR + +TMPBMP, 0 /ROUTINE TO BUMP TEMPORARIES + TAD TMPCNT /BIGGER THAN MAX? + CIA CLL + TAD TMPMAX + SZL CLA + JMP .+3 /GO BUMP TEMP CNT + TAD TMPCNT /NEW TEMP MAX + DCA TMPMAX + ISZ TMPCNT /INCR TEMP COUNT + JMP I TMPBMP + / PUSH ARG ONTO STACK +PUSH, JMS SAVEAC /GO SAVE AC IF NEEDED + JMS I QINWORD /GET ADDR OF NEW VAR + DCA TEMP /SAVE IT + TAD TEMP /PUSH IT + DCA I X16 + ISZ TEMP /GO TO TYPE + CDF 10 + TAD I TEMP /GET TYPE + CDF + AND Q17 /PUSH TYPE + DCA I X16 /ONTO STACK +CKPDL, DCA I X16 /ZERO BASE WORD + TAD X16 /IS STACK FULL ? + CIA CLL + TAD (STACK+177 + SZL CLA + JMP I QNEXT /NO, OK + TAD STKLVL /RESET STACK LEVEL + DCA X16 + JMS I QTTYMSG /PRINT MESSAGE + 2004 +DPUSH, JMS I QINWORD /GET THE VAR NAME PTR + DCA I X16 /PUSH IT + JMS I QINWORD /NOW GET THE DISPLACEMENT + JMP CKPDL-1 /GO CHECK FOR OVERFLOW +STARTF, TEXT 'STARTF' + / ARITHMETIC IF +ARTHIF, JMS I QUCODE /GET ARG INTO AC + AIFTBL-1 + JMS I QGENSF /DO ALL TRANSFERS IN FMODE + TAD (JLT /FIRST OPCODE + DCA AJUMP +AIFLUP, JMS I QINWORD /GET NEXT INPUT + DCA TEMP2 /SAVE IT IN CASE ITS NOT LABEL + TAD TEMP2 + CLL + TAD (XPUSH-XLAST /IS IT A LABEL ? + SNL CLA + JMP I QNEXTM2 /NO, PROCEED + JMS I QOPCDE +AJUMP, 0 /OUTPUT CORRECT JUMP + TAD TEMP2 + CDF 10 + JMS I QOSNUM /NOW THE LABEL + JMS I QCRLF + ISZ AJUMP /MOVE TO NEXT OPCODE + ISZ AJUMP + JMP AIFLUP +DOT, TEXT '.' +DP8, TEXT '.+10' + PAGE + / PICK UP TOP TWO ARGS + +GARGS, 0 /GET TOP 2 ARGS FROM STACK + TAD X16 + TAD QM6 /BACK TWO OPERANDS + DCA X15 + TAD X15 + DCA X16 /AND OFFICIALLY POP THE STACK + TAD I X15 /GET FIRST ARG + DCA ARG1 + TAD I X15 /AND TYPE + DCA TYPE1 + TAD I X15 + DCA BASE1 /AND FIRST BASE (IN + /CASE OF SS) + TAD I X15 /NOW SECOND ARG + DCA ARG2 + TAD I X15 + DCA TYPE2 + TAD I X15 + DCA BASE2 + TAD TYPE1 /TYPES MUST BE LT 6 + TAD QM6 + SMA CLA + JMP I GARGS /RETURN BAD + TAD TYPE2 + TAD QM6 + SPA CLA + ISZ GARGS /FIX RETURN + JMS MPTRA1 /GET ARG1 POINTER IF NEEDED + TAD ARG2 /IS ARG2 A POINTER + TAD (-61 + SZA CLA + JMP I GARGS /NO, RETURN + TAD ARG1 /IS ARG1 IN THE AC ? + SZA CLA + JMP .+5 /NO + TAD TMPCNT /YES, STORE THE AC + DCA ARG1 + TAD TYPE1 /GET TYPE + JMS I (SAVE + TAD BASE2 /MOVE POINTER FROM TEMP + /TO BASE+3 + DCA ARG2 + JMS I QGENCOD + MPTR3-1 + TAD (62 /ARG IS NOW POINTED TO + /BY BASE+3 + DCA ARG2 + JMP I GARGS +MPTRA1, 0 /MOVE ARG1 POINTER TO BASE + TAD ARG1 + TAD (-61 + SZA CLA + JMP I MPTRA1 + TAD ARG2 + SZA CLA + JMP .+5 + TAD TMPCNT + DCA ARG2 + TAD TYPE2 /GET THE TYPE + JMS I (SAVE + TAD BASE1 + DCA ARG1 + JMS I QGENCOD + MPTR0-1 + TAD (61 + DCA ARG1 /SET ARG1 TO IND0 + JMP I MPTRA1 + / BINARY OPERATORS +CODE, 0 /GENERATE CODE FOR + /BINARY OPERATORS + JMS GARGS /GET OPERANDS + JMP OTERR /BAD TYPE OPERATOR COMBO + TAD TYPE1 /INDEX INTO TYPE CHECK TABLE + CLL RTL + TAD TYPE1 + TAD TYPE2 + CLL RAL + TAD (TYPMIX-14 /POINTER TO CORRECT ENTRY + DCA SKEL + CDF 10 + TAD I SKEL /RESULTING TYPE + SNA + JMP TYPERR /THIS MIX IS ILLEGAL + DCA TYPE1 /SAVE RESULT TYPE + ISZ SKEL /GET INDEX INTO + /SKELETON TABLE + TAD I SKEL + CDF + TAD I CODE /PLUS BASE GIVES ADDR + /OF M,AC CASE + DCA SKEL + CDF 10 + TAD I SKEL /IS THIS TYPE OPER + /COMBO LEGAL ? + SNA CLA + JMP OTERR /NO + ISZ CODE /POINTS TO RESULTING TYPE + TAD ARG2 + SZA CLA + ISZ SKEL /SECOND ARG IS IN MEMORY + TAD ARG1 + SNA CLA /SKIP ON M,M CASE + ISZ SKEL /MOVE TO AC,M CASE + TAD I SKEL /PICK UP POINTER TO SKELETON + DCA SKEL + JMS I QGENCOD /GO DO THE CODE +SKEL, 0 + DCA I X16 /RESULT IS IN THE AC + TAD I CODE + SNA /IS TYPE SAME AS ARGS ? + TAD TYPE1 /YES + DCA I X16 /STORE IT + DCA I X16 /ZERO BASE WORD + TAD I CODE /IS TYPE SAME AS ARGS ? + SZA + DCA FMODE /NO, WE'RE NOW IN FMODE + JMP I CODE +TYPERR, JMS BUMP /PUT FALSE VALUE ONTO STACK + JMS I QTTYMSG /OUTPUT ERROR + 1524 +OTERR, JMS BUMP /PUT FALSE VALUE ONTO STACK + JMS I QTTYMSG + 1724 +XDPP6, TEXT '#DPT+6' +XFIX, TEXT '#FIX' + PAGE + / CODE GENERATOR (FROM SKELETONS) + +GENCOD, 0 /CODE GENERATOR ROUTINE + CDF + TAD X14 + DCA TEMP14 /FIX COMPLEX FUNCTION BUG + TAD I GENCOD /GET SKELETON ADDRESS + ISZ GENCOD +MPOPUP, DCA X14 /HERE ON MACRO END + DCA MRETN +CODLUP, CDF 10 /STUFF IS IN FIELD 1 + TAD I X14 /GET OPCODE + CDF + SNA + JMP ENDM /IS IT END OF A MACRO ? + SPA + JMP MACRO /ITS A MACRO REFERENCE + DCA .+2 /SAVE OPCODE + JMS I QOPCOD /OUTPUT IT + 0 + CDF 10 + TAD I X14 /ADDRESS ? + CDF + SNA + JMP NOADDR /NO OPERAND FOR THIS INSTR + SPA + JMP DOADDR /ADDRESS IS AN OPERAND + DCA TEMP + JMS I QOTAB /ADDRESS IS A SPECIFIC + TAD TEMP + JMS I QOUTSYM +NOADDR, JMS I QCRLF + JMP CODLUP /DO NEXT LINE +DOADDR, IAC /IS IT ARG1 ? + SZA CLA + JMP ITSA2 /NO, ITS ARG2 + JMS I QOADDR /OUTPUT ARG1 ADDRESS FIELD + ARG1 + JMP CODLUP +ITSA2, JMS I QOADDR /OUTPUT ARG2 ADDRESS + ARG2 /FIELD + JMP CODLUP +MACRO, TAD Q5 /CODES BETWEEN -1 AND -5 ARE SPECIAL + SPA + JMP .+4 /NOT ONE OF THEM + TAD (JMP MJTBL + DCA .+1 + HLT /GO TO PROPER ROUTINE + DCA MSTART /SAVE START OF MACRO + TAD X14 /SAVE RETURN ADDRESS + DCA MRETN + TAD MSTART /GO DO MACRO + DCA X14 + JMP CODLUP + ENDM, TAD MRETN /WAS THIS A MACRO ? + SZA + JMP MPOPUP /YES - GET OUT OF IT + TAD TEMP14 + DCA X14 /RESTORE X14 FOR FUNCAL + JMP I GENCOD /AND EXIT + +LOADA1, JMS I (LOADA /GENERATE LOAD + ARG1 /IF NECESSARY + JMP CODLUP +LOADA2, JMS I (LOADA /GENERATE LOAD + ARG2 /IF NECESSARY + JMP CODLUP +DOSTE, JMS I QGENSE /STARTE IF IN F MODE + JMP CODLUP +SGNNEG, ISZ RELCD /CHANGE SIGN OF RELATIONAL OPERATOR + JMP CODLUP + MSTART=TEMP +MRETN, 0 /MACRO RETURN ADDRESS +TEMP14, 0 + +MJTBL, JMP SGNNEG /-5 - NEGATE RELATIONAL SIGN + JMP LOADA2 /-4 - LOAD ARG 2 + JMP LOADA1 /-3 - LOAD ARG 1 + JMP DOSTE /-2 - START E MODE + JMS I QGENSF /-1 - START F MODE + JMP CODLUP + +XSET, TEXT 'SETX' +ZEROC1, TEXT '0,1' + / GOTO'S AND ASSIGN +CGOTO, JMS GTSTUF /LOOK AT INDEX + JMS I QGENCOD /OUTPUT COMPUTED GOTO CODE + CGTCOD-1 + JMS I QINWORD /GET COUNT + CIA + DCA TEMP2 +CGTLUP, JMS JAGEN + ISZ TEMP2 + JMP CGTLUP + JMP I QNEXT +GOTO, JMS I QGENSF /ALL TRANSFERS IN F MODE + JMS JAGEN + JMP I QNEXT + +JAGEN, 0 + JMS I QOPCDE /OUTPUT JA'S + JA + JMS I QINWORD /GET THE LABEL + CDF 10 + JMS I QOSNUM /OUTPUT IT AS THE ADDRESS + JMS I QCRLF + JMP I JAGEN + +GTSTUF, 0 + JMS I QGARG /GET THE ARG + JMP GTTYPE + CLL CMA RTL /CHECK THE TYPE + TAD TYPE1 + SMA CLA + JMP GTTYPE /NOT INTEGER OR REAL + TAD ARG1 /IS IT IN THE AC ? + SNA CLA + JMP I GTSTUF /YES ALREADY + JMS I QGENCOD + GI-1 /LOAD THE INDEX + JMP I GTSTUF +GTTYPE, JMS I QTTYMSG /GOTO TYPE ERROR + 0726 +JAC, TEXT 'JAC' +FSTA, TEXT 'FSTA' +FNEG, TEXT 'FNEG' + PAGE + / ADDRESS FIELD OUTPUT +OADDR, 0 /OUTPUT ADDRESS FIELD + TAD I OADDR /GET ADDRESS OF PARAMETERS + DCA ARG + ISZ OADDR + TAD I ARG /GET VALUE OF ARG + CLL + TAD (-52 /IS IT A TEMP REFNCE + SNL + JMP TMPREF /YES, 1-51 + TAD (52-61 /IS IT AN ARRAY REFERENCE ? + SZL + JMP SSREF /YES, 52-60 IS XR1-XR7 + SNA + JMP IND0 /INDIRECT THROUGH 0 + TAD (61-7000 /CHECK FOR DO TEMP + SZL + JMP DOTMP + TAD (7000-62 + SNA + JMP IND3 /INDIRECT THROUGH 3 + TAD (63 + DCA TEMP + CDF 10 + TAD I TEMP /IS THIS AN ARG ? + AND Q20 + CDF + SZA CLA + JMP INDARG /YES, REF IT INDIRECTLY + JMS I QOTAB + CDF 10 + TAD I TEMP /LOOK AT TYPE WORD + AND (50 /IS IT LIT OR STMT NO.? + SNA + JMP OUTA /NO, JUST OUTPUT ADDRESS + AND Q40 + SNA CLA + JMP OUTSN /OUTPUT STMT NUMBER + JMP OUTLIT /OUTPUT LITERAL +OUTA, TAD PROGNM /IS THIS THE FUNCTION NAME ? + CIA + TAD TEMP + SNA CLA + JMP FUNNAM /YES, REFERENCE #VAL INSTEAD +OUTA2, CLA CMA /SIMPLE LOCAL VARIABLE REFNCE + TAD TEMP /ADDRESS OF VAR + JMS I QOUTNAM /INTO ADDR FIELD + JMS I QCRLF + JMP I OADDR /END OF ADDRESS +OUTLIT, ISZ TEMP /MOVE TO LITERAL NUMBER + TAD I TEMP + DCA TEMP /DISPLACEMENT FROM %LITRL + CDF + TAD QLITRL /OUTPUT #LIT+ + JMS I QOUTSYM + TAD TEMP /DISPLACEMENT + JMS I QONUMBR + JMP OADRET-1 +FUNNAM, TAD (XVAL /#VAL + JMS I QOUTSYM + JMP OADRET-1 +SSREF, TAD (270 /MAKE IT AN ASCII DIGIT + DCA XR + ISZ ARG /POINT TO THE BASE WORD + TAD I ARG /GET THE ADDR OF THE BASE + DCA ARG + CDF 10 + TAD ARG + IAC /GO TO TYPE OF BASE VAR + DCA TEMP2 + TAD I TEMP2 /IS IT AN ARG TO THE SUBR ? + AND Q20 + SNA CLA + JMP NOTARG /NO, NO INDIRECT STUFF + CDF + JMS SIT + TAD ARG /VAR NAME + CDF 10 + JMS I QOUTNAM + TAD COMMA + JMS I QOCHAR + TAD XR /XR NUMBER + JMS I QOCHAR + JMS I QCRLF +OADRET, JMP I OADDR +IND3, TAD (XBASP3-XBASE /INDIRECT THRU #BASE+3 +IND0, TAD (XBASE /INDIRECT THRU #BASE + DCA TEMP + JMS SIT + TAD TEMP + JMP FUNNAM+1 +OUTSN, CLA CMA /OUTPUT STMT NUMBER + TAD TEMP + JMS I QOSNUM /OUTPUT THE NUMBER + TAD (P2 /+2 (HACK FOR FORMAT) + JMP FUNNAM+1 +INDARG, JMS SIT /INDIRECT INDICATOR + CDF 10 + JMP OUTA2 /OUTPUT ARG NAME +SIT, 0 + TAD (245 /% (INDIRECT) + JMS I QOCHAR + JMS I QOTAB + JMP I SIT +CEQ, TEXT '#CEQ' +XBAC1P, TEXT '#BASE,1+' +XUE, TEXT '#UE' + PAGE + / ADDRESS FIELD OUTPUT + +NOTARG, TAD I TEMP2 /GET TYPE WORD + DCA TEMP /SAVE IT + TAD TEMP + ISZ TEMP2 + AND Q200 /EQUIVALENCED ? + SNA CLA + JMP .+3 + TAD I TEMP2 /SKIP EQUIV INFO BLOCK + DCA TEMP2 + CLL CML RTL + TAD I TEMP2 /ADDRESS OF MAGIC NUMBER + DCA TEMP2 + TAD I TEMP2 /MAGIC NUMBER ITSELF + DCA TEMP2 + CDF + JMS I QOTAB /TAB + TAD ARG /OUTPUT VARIABLE MINUS CONST + JMS VMC + TAD COMMA + JMS I QOCHAR + TAD XR /N + JMS I QOCHAR + JMS I QCRLF /END OF LINE + JMP OADRET +DOTMP, DCA TEMP /ADDRESS RELATIVE TO %DOTMP + JMS I QOTAB + TAD (DOTMPN /OUTPUT #DOTMP + JMS I QOUTSYM + JMP PLUSN /GO OUTPUT +XXXX +TMPREF, CLA + TAD I ARG /BUMP TEMPS BACK CORRECTLY (?) + DCA TMPCNT + JMS I QOTAB /TAB + CLA CMA + TAD I ARG /GET NUMBER + DCA TEMP /INTO TEMP + IFNZRO TMPBLK-2 + CLL STA RAL /V3C -2 (-TMPBLK) + /V3C LINK SET + TAD TEMP /V3C (SAVES A LITERAL) + SNL /V3C + DCA TEMP /YES, SAVE ALTERED DISPLACEMENT + SNL CLA /V3C + TAD (TEMPN2-TEMPN /USE %TEMPX + TAD (TEMPN /USE %TEMP + JMS I QOUTSYM +PLUSN, TAD PLUS /PLUS CONSTANT + JMS I QOCHAR + TAD TEMP /DISPLACEMENT TIMES THREE + CLL RAL + TAD TEMP + JMS I QONUMBR /OUT IT + JMS I QCRLF + JMP OADRET + / UTILITIES +VMC, 0 /OUTPUT VARIABLE MINUS CONST + CDF 10 + JMS I QOUTNAM /PUT VAR NAME + TAD Q255 /- + JMS I QOCHAR + TAD TEMP /THIS CONTAINS THE TYPE + JMS SKPIRL /SKIP ON I,R OR L + TAD Q3 /USE SIX WORDS PER ENTRY + TAD Q3 /REAL, INTEGER, OR + /LOGICAL 3 WORDS + DCA MQ + TAD TEMP2 + JMS MUL12 /DO MULTIPLY + JMS I QNUMBRO /OUTPUT 15 BIT NUMBER + JMP I VMC +SC, +SKPIRL, 0 /SKIP ON TYPE I R OR L + AND Q17 /ISOLATE TYPE CODE + TAD QM4 /IS IT DOUBLE ? + SZA + IAC /NO, IS IT COMPLEX ? + SZA CLA + ISZ SKPIRL /NEITHER, SKIP + JMP I SKPIRL /RETURN +MUL12, 0 /12 BIT MULTIPLY + DCA OPRND + TAD (-15 + DCA SC + JMP STMUL +M12LUP, TAD AC + SNL + JMP .+3 + CLL + TAD OPRND + RAR +STMUL, DCA AC + TAD MQ + RAR + DCA MQ + ISZ SC + JMP M12LUP + JMP I MUL12 +OPRND, +BUMP, 0 /PUT FALSE ENTRY ONTO STACK + CDF 0 /V3C IMPORTANT PROTECTION + DCA I X16 + ISZ X16 + ISZ X16 /THIS PREVENTS UNDER + /FLOWING THE STACK + JMP I BUMP /AFTER SOME ERRORS +EXTERN, TEXT 'EXTERN' +CADD, TEXT '#CAD' +CNEG, TEXT '#CNG' +CMUL, TEXT '#CML' +JLE, TEXT 'JLE' +ORG, TEXT 'ORG' +STARTE, TEXT 'STARTE' +XDPTMP, TEXT '#DPT' + PAGE + / RANDOM CODE GENERATORS + +ERROR, JMS I QINWORD /GET ERROR CODE + JMS I QERMSG /PRINT IT + JMP I QNEXT +EOSTMT, TAD DATASW /WAS THIS A DATA STMT ? + SNA CLA + JMP OPTMYZ /NO + DCA DATASW /KILL SWITCH + JMS I QOPCDE + ORG /ORIGIN BACK TO THE PROGRAM + TAD GLABEL + JMS I QOLABEL + JMS I QCRLF + ISZ GLABEL /BUMP LABEL GENERATOR +OPTMYZ, CLA /CHANGED TO CLA IAC IF /O + JMS I QXRTBL /CLEAR TABLE OR RESET FLAGS + ISZ LINENO /BUMP LINE NUM + TAD LINENO /DISPLAY IN MQ + 7421 /FOR COOLNESS + CLA /FOR NON-EAE FOLKS + TAD STKLVL /RESET STACK LEVEL + DCA X16 + JMS IFEND /LOOK FOR END OF LOGICAL IF + JMS I (ASFEND /END OF A.S.F. DEFINITION ? +DEBUG, JMP I QNEXT /OVERLAYED IF NO /N SWITCH + JMS I QOPCDE /OUTPUT LDX NNNN,0 + LDX + TAD LINENO /THIS IS THE CURRENT ISN + JMS I QONUMBR + TAD COMMA + JMS I QOCHAR + TAD Q260 + JMS I QOCHAR + JMS I QCRLF + JMP I QNEXT +IFEND, 0 /OUTPUT IF END LABEL IF + TAD IFLABL /WAS THIS END OF LOG IF + SNA + JMP I IFEND /OUTPUT DEBUG STUFF + JMS I QLABEL /OUPTUT THE LABEL + JMS I QGENSF /ALL LOGICAL IFS MUST + /END IN FMODE + DCA WHATAC /CAN'T DEPEND ON + /AC HERE + JMS I QXRTBL /OR XR'S EITHER + DCA IFLABL /KILL THE SWITCH + JMP I IFEND +OPCOD, 0 /TAB OPCODE + DCA WHATAC /AC HAS JUST BEEN + /MODIFIED + JMS I QOTAB + TAD I OPCOD + ISZ OPCOD + JMS I QOUTSYM + JMP I OPCOD +DIV, JMS I QSAVACT /IF SECOND OPERAND IN AC, SAVE IT + JMS I QCODE /DIVIDE + DIVTBL-6;0 + CLA CMA /WERE BOTH VARS INTEGER? + TAD TYPE1 + SZA CLA + JMP I QNEXT /NO + JMS I QGENCOD + A0FN-1 /ALN 0;FNORM + JMP I QNEXT +LIFBGN, DCA RELCD /ENTER HERE IF LAST OPCODE NOT A RELATIONAL + JMS I QGARG /ENTER HERE FROM RELATIONAL OPTIMIZER + JMP NOTLOG + TAD TYPE1 /MUST BE LOGICAL + TAD (-5 + SZA CLA + JMP NOTLOG + TAD ARG1 /IS IT IN AC ? + SNA CLA + JMP .+3 + JMS I QGENCOD + GI-1 + JMS I QINWORD /IS IT IF(...)GOTO XX ? + DCA TEMP2 + TAD TEMP2 + TAD (XPUSH-XGOTO + SNA CLA + JMP IFGOTO /YES, TREAT AS SPECIAL CASE + TAD GLABEL /SET IF LABEL + DCA IFLABL + TAD RELCD + CIA + TAD Q5 /GENERATE THE OPPOSITE JUMP + JMS RELJMP /AROUND THE TARGET OF THE IF + TAD GLABEL + JMS I QOLABEL + ISZ GLABEL /INCREMENT LABEL GENERATOR + JMS I QCRLF + JMP I QNEXTM2 +IFGOTO, TAD RELCD + JMS RELJMP /GENERATE TRUE RELATIONAL JUMP IF "IF()GOTO" + JMS I QINWORD /GET THE LABEL + CDF 10 + JMS I QOSNUM + JMS I QCRLF + JMP I QNEXT +NOTLOG, JMS I QTTYMSG + 1411 + +RELJMP, 0 + CLL RAL + TAD (JNE + DCA .+2 + JMS I QOPCDE + 0 + JMP I RELJMP + +FMUL, TEXT 'FMUL' +FDIV, TEXT 'FDIV' +CAC, TEXT '#CAC' +LITRL, TEXT '#LIT+' +TEMPN, TEXT '#TMP' + PAGE + / DO LOOP COMPILER + +DOBEGN, JMS I QSAVACT /FOR EXPR IN LOOP PARAMS + TAD X16 /SET NEW STACK LEVEL + DCA STKLVL + JMS I QGARGS /GET LIMIT AND STEP + JMP DPERR /ERROR IN DO PARMS + JMS DOPARM /DO PARAMETER STUF FOR LIMIT + ARG1 + JMS DOPARM + ARG2 /AND THEN FOR STEP + TAD ARG1 /REPLACE ALTERRED STACK + /ENTRIES + DCA I X16 + ISZ X16 /REST OF ARG1 OK + TAD GLABEL /SAVE LOOP LABEL + DCA I X16 + TAD ARG2 + DCA I X16 + ISZ X16 + ISZ X16 + JMS I QCRLF /CRLF BEFORE LABL + TAD GLABEL + JMS I QLABEL /OUPTUT LOOP LABEL + ISZ GLABEL /INCR LABEL GENERATOR + DCA WHATAC /FORGET AC AND + JMS I QXRTBL /XR'S AT DO BEGIN + JMP I QNEXT +DOSTOR, JMS I QGARGS /LOOK AT INDEX AND + JMP DPERR /INITIAL VALUE + CLL CMA RTL /MUST BE INTEGER OR + TAD TYPE1 /REAL (L=1 AC=-3) + SZL CLA /SKIP IF >2 + CLL CMA RTL /L=1 AC=-3 + TAD TYPE2 + SZL CLA /L=0 IS BAD + JMP I (STORE+2 /DO STORE IF OK +DPERR, JMS I QTTYMSG /ERROR IN LIMITS + 0420 /DP +DOFINI, JMS I QXRTBL /DON'T OPTIMIZE XR USAGE + /IN SUCCESSIVE IMPLIED DO LOOPS + TAD IOSTMT /INSIDE IO STMT ? + SNA CLA + JMS IFEND /IF NOT, END IF FIRST + JMS I QINWORD /GET THE INDEX + DCA ARG1 + TAD ARG1 /GET THE TYPE WORD ADR + IAC + DCA TYPE1 + CDF 10 + TAD I TYPE1 + CDF + AND Q17 + DCA TYPE1 /TYPE OF INDEX VAR + TAD QM6 + TAD STKLVL /BACK UP THE STACK + DCA X16 + TAD X16 /RESET THE STACK LEVEL + DCA STKLVL + TAD I X16 /GET THE FINAL VALUE + DCA DOARG + ISZ X16 + TAD I X16 /GET THE LOOP LABEL + DCA DARG + TAD I X16 /GET THE STEP + DCA ARG2 + TAD I X16 /WHICH DO FIN CODE ? + CLL CML RAL + TAD TYPE1 + TAD QM6 + SNA CLA + TAD (DOFIN1-DOFIN0 /INDEX=I, STEP=R + TAD (DOFIN0-1 /ALL OTHER CASES + DCA .+2 + JMS I QGENCOD /DO FINISH CODE + 0 + JMS I QOPCOD /SUBTRACT UPPER LIMIT + FSUB + JMS I QOADDR + DOARG + JMS I QOPCDE /NOW THE JLT %%LOOP + JLE + TAD DARG /OUTPUT LABEL + JMS I QOLABEL + JMS I QCRLF + TAD STKLVL /FIX X16 INCASE MULTIPLE DO ENDER + DCA X16 + JMP I QNEXT +DOARG, +DOPARM, 0 /SUBR FOR DO PARAMETERS + TAD I DOPARM + ISZ DOPARM /GET THE PARM POINTER + DCA DARG + CLL CML RTL /GET ADDR OF TYPE WORD + TAD DARG + DCA TYPE + CLL CMA RTL /CHECK TYPE + TAD I TYPE + SMA CLA + JMP DPERR /NOT I OR R + TAD I DARG + SNA + JMP STRTMP /ARG ALREADY IN AC + TAD QM63 /IS IT ARRAY REF? + SPA CLA + JMP SVLIMT /YES, SAVE LIMIT + TAD I DARG /REGET SYM ADDR + DCA X10 /ADR OF TYPE WORD + CDF 10 + TAD I X10 /MAYBE ITS A LIT? + CDF + AND Q40 + SZA CLA + JMP I DOPARM /YES, ITS LITERAL + /WE'RE ALWAYS IN F MODE HERE + /SINCE THE LAST THING + /WAS A DO STORE +SVLIMT, JMS I QOPCOD /OTHERWISE LOAD IT + FLDA + JMS I QOADDR +DARG, 0 +STRTMP, TAD DOTEMP /SET ARG TO NEXT DO TEMP + DCA I DARG + JMS I QOPCOD /GENERATE STORE + FSTA + ISZ DOTEMP /BUMP DO TEMP + TAD DARG + DCA .+2 + JMS I QOADDR /DO TEMP ADDRESS FIELD + 0 + JMP I DOPARM + PAGE + / SUBSCRIPT REFERENCE COMPILER + +ARGS, JMS I QINWORD /COMPILE ARGUMENT LIST + CMA + DCA NARGS /NUMBER OF ARGS + TAD NARGS /GET ADDRESS OF SUBSCRIPTED VAR + CLL RAL + TAD NARGS /ENTRY ON THE STACK + TAD X16 + DCA X15 + TAD X15 /SAVE POINTER TO START + /OF THIS ENTRY + DCA X14 /FOR POSSIBLE FUTURE USE + ISZ NARGS /NOW ITS THE 2'S COMPLEMENT + NOP + TAD I X15 /FETCH SS VARIABLE + DCA BASE1 + TAD I X15 /ITS TYPE + DCA TYPE1 + TAD BASE1 /STORE BASE WORD + DCA I X15 + TAD BASE1 /GET ADDR OF TYPE WORD + IAC + DCA TEMP + CDF 10 /GET TYPE WORD + CLL CML RTR /TEST DIM BIT + AND I TEMP + SNA CLA + JMP TRYCAL /SOME KIND OF CALL + TAD BASE1 /NOW GET ADDRESS OF DIM INFO + JMS I QGETSS + DCA ARG1 /RETURNS WITH FIELD SET + TAD I ARG1 /CORRECT NUMBER OF DIMENSIONS? + TAD NARGS + CDF + SZA CLA + JMP DIMERR /NO + ISZ ARG1 /SKIP TOTAL SIZE + ISZ ARG1 /SKIP MAGIC NUMBER + ISZ ARG1 /AND ASSOCIATED LITERAL + DCA XRNUM /START WITH XR 1 + TAD (-10 /SEVEN XRS + DCA XRCNT /COUNT FOR SEARCH + DCA FREEXR /ZERO FREE XR INDICATOR +XRCHEK, CDF + ISZ XRCNT /ANY MORE XR EXPRS TO TEST ? + SKP /YES, GO CHECK THEM + JMP COMPSS /NO, MUST COMPILE + /XR ERPRESSION + ISZ XRNUM /BUMP XR NUMBER + TAD XRNUM + CLL RTL /TIMES 16 + CLL RTL + TAD (XRBUFR-1 /PLUS BASE (-1) + DCA X13 + TAD I X13 /LOOK AT THE + SPA /INDICATOR + JMP .+3 /-1=USED BY THIS STMT + SZA CLA /IF ZERO GO TO + /MTXR (EVENTUALLY) + TAD FREEXR /ANY FREE BEFORE THIS ONE ? + SZA CLA + JMP NOTMT /YES, ALREADY FOUND ONE + TAD XRNUM /THIS WILL BE + DCA FREEXR /THE XR WE USE + JMP XRCHEK /GO LOOK AT NEXT +NOTMT, TAD X13 /SAVE FLAG ADDRESS + DCA XRFLAG /IN CASE WE NEED IT LATER + TAD I X13 /POINTER TO THE DIM INFO + DCA TEMP2 + CDF 10 + TAD I TEMP2 /SAME NUMBER OF DIMS ? + TAD NARGS + SZA CLA + JMP XRCHEK /NO, THIS XR WONT DO + TAD NARGS /SET COUNTER + DCA DCNT + TAD ARG1 /POINTER TO DIM FACTORS + DCA X12 + ISZ TEMP2 /SKIP THREE WORDS + ISZ TEMP2 + ISZ TEMP2 +DCHEK, ISZ DCNT /ANY MORE ? + SKP + JMP SSCHEK /DIMS OK, CHECK SS + ISZ TEMP2 /GET TO NEXT DIM + TAD I TEMP2 /ARE THEY EQUAL ? + CIA + TAD I X12 + SZA CLA + JMP XRCHEK /NO, GO TRY NEXT ONE + JMP DCHEK +SSCHEK, TAD NARGS /COUNT AGAIN + CDF + DCA DCNT + CLL CMA RAL /-2 + TAD X16 /ADDR OF START OF TOP + /SS ON STACK + JMP .+3 +SSC2, CLL CMA RTL /-3 + TAD XTMP /BACK UP TO NEXT LOWER SS + DCA XTMP /LINK IS ALWAYS ZERO HERE + TAD I XTMP /GET NEXT SS (WORKING + /RIGHT TO LEFT) + TAD (-61 /IS IT A VAR OR LITERAL? + SNL CLA + JMP XRCHEK /WE'RE JUST + /LOOKING FOR AN EMPTY + TAD I XTMP /RE GET SS POINTER + CIA + TAD I X13 /ARE THEY THE SAME ? + SZA CLA + JMP XRCHEK /NO + ISZ DCNT + JMP SSC2 /KEEP CHECKING + TAD XRNUM /THEY MATCH, STICK IN + /THE XR NUMBER + TAD (51 + DCA I X14 + CLL CML RTL + TAD X14 /PURGE SS FROM STACK + DCA X16 + CLA CMA /SET FLAG TO + /'USED BY THIS STMT' + DCA I XRFLAG + JMP I QNEXT +DCNT, 0 +XRFLAG, 0 +XTMP, 0 + PAGE + / SUBSCRIPT REFERENCE COMPILER + +COMPSS, TAD FREEXR /GET XR EXPR AREA + CLL RTL /BY MULTIPLYING + /THE NUMBER + CLL RTL /BY 16 + TAD (XRBUFR /AND ADDING THE + /BASE ADDRESS + DCA XREPTR /THIS IS IT + CLA CMA /SET USED BY THIS + /STMT FLAG + DCA I XREPTR + ISZ XREPTR + CLL CMA RTL /STORE THE DIB POINTER + TAD ARG1 + DCA I XREPTR + TAD NARGS /GET ADDR OF POINTER TO LAST + CMA /DIMENSION FACTOR + TAD ARG1 + DCA ARG1 /SINCE WE USE THEM IN + /REVERSE ORDER + JMS I QSAVEAC /STORE AC IF NEEDED + /FOLLOWING INSTRUCTION REMOVED FOR OPTOMIZATION +/ JMS I QGENSF /ALL SUBSCRIPTS AR I OR R + TAD (FLDA /LOAD FIRST SS + SKP +CSSLUP, TAD (FADD /ADD ALL SUBSEQUENT ONES + DCA OPC + CLL CMA RTL /BACK UP STACK BY ONE ENTRY + TAD X16 + DCA X16 + TAD X16 /GET A WORKING POINTER + DCA X15 + TAD I X15 /GET THE NEXT SUBSCRIPT + DCA ARG2 + CLL CMA RAL /MUST BE INTEGER + TAD I X15 + SMA CLA + JMP DIMERR + TAD I X15 + DCA BASE2 + TAD ARG2 /STORE THE SS INTO THE + /XR EXPR + ISZ XREPTR /INCREMENT FIRST + DCA I XREPTR + TAD ARG2 /IS ARG2 THE AC (ONLY + /POSSIBLE IF + SNA CLA /ITS THE RIGHTMOST + /SUBSCRIPT) + JMP NLODSS /YES, DON'T LOAD IT + JMS I QOPCOD /OUTPUT LOAD OR ADD +OPC, 0 /THIS LOCATION TELLS + /THE STORY + JMS I QOADDR /FOLLOWED BY THE OPERAND + ARG2 /POINTED TO BY ARG2 +NLODSS, ISZ NARGS /ANY MORE SUBSCRIPTS ? + JMP MORESS /YES, GO COMPILE THEM + TAD FREEXR /ANY FREE INDEX REG? + SZA CLA + JMP ASGNXR /YES, GO USE IT + TAD (61 /ITS A SPECIAL POINTER ENTRY + DCA I X14 + ISZ X14 + TAD TMPCNT /SAVE TEMP NUMBER + DCA I X14 /BEFORE WE BLOW X14 + JMS I (GENPTR /GENERATE POINTER TO THE ARG + JMS I QGENCOD /BACK TO FMODE + SF-1 + JMS I (ACSTOR /GENERATE STORE AC + JMP I QNEXT +DIMERR, JMS I QTTYMSG /SS NOT OF CORRECT NUMBER + 2323 +XRCNT, 0 +TRYCAL, TAD ASFSWT /ASF DEFINITION + SMA SZA CLA + JMP DEFASF /YES, GO OUTPUT PROLOG + TAD I TEMP /IS IT A FUNCTION OR AN ARG? + CDF + AND (1420 + SNA + JMP DIMERR /NO, SOME KIND OF ERROR + AND Q20 + DCA ACSWIT /SAVE THE AC SWITCH + JMP FUNCAL /STANDARD FUNCTION CALL +MORESS, JMS I QGENSF /MUST USE SINGLE PRECISION FOR MULTIPLY + JMS I QOPCOD /MULTIPLY BY DIM FACTOR + FMUL + CDF 10 + TAD I ARG1 /PICK UP FACTOR ADDRESS + CDF + DCA ARG2 + CLA CMA + TAD ARG1 /MOVE BACK ONE + DCA ARG1 + JMS I QOADDR /OUTPUT MULTIPLY ADDRESS + ARG2 + JMP CSSLUP /LOOP ON NEXT SS +ASGNXR, JMS I QOPCDE /OUTPUT ATX N + ATX + TAD FREEXR /GET NUMBER OF FREE XR + TAD Q260 + JMS I QOCHAR + JMS I QCRLF + TAD FREEXR + TAD (51 /COMPUTE PROPER NUMBER + DCA I X14 /PUT IT INTO TOP OF STACK + JMP I QNEXT +XREPTR, 0 + / RANDOM TEXT +OTAB, 0 + TAD (211 + JMS I QOCHAR + JMP I OTAB +FCLA, TEXT 'FCLA' +STARTD, TEXT 'STARTD' +TEMPN2, TEXT '#TMPX' +CSUB, TEXT '#CSB' +CDIV, TEXT '#CDV' + PAGE + / GENERAL CALL GENERATOR + +GENCAL, 0 /GENERATE A CALL; ALL ARGS ON STACK + /X15 POINTS TO START OF STACK INFO + /NARGS IS NEG NUMBER OF ARGS + /FUNCTION NAME IS FIRST ON STACK + TAD I GENCAL /GET FUN NAME SWITCH + DCA FNSWIT + TAD X15 /NEW STACK VALUE + DCA X16 + TAD X15 /WORKING POINTER + DCA ARG2 + TAD NARGS /WORKING COUNTER + SNA + JMP OUTJSR /NO ARGS, PUT JSR + DCA TYPE2 +CHKPTR, ISZ ARG2 /MOVE TO NUMBER + TAD ARG2 + IAC /ADDR OF TYPE WORD + DCA BASE2 + TAD I BASE2 /GET TYPE + DCA TYPE1 /TYPE OF ARG FOR GENPTR + ISZ BASE2 /POINT TO BASE WORD + TAD I BASE2 + DCA BASE1 /FOR GENPTR + TAD I ARG2 /GET ARG NUMBER + CLL + TAD (-52 /IS IT INDEXED ? + SNL + JMP NOTINX /NO, ITS A TEMP + TAD (52-61 /IS IT INDIRECT ? + SZL + JMP INXR /NO, ITS IN AN XR + SNA + JMP INTMP /POINTER IN A TEMP + TAD (62 /GET TO TYPE WORD + DCA GCTEMP + CDF 10 + TAD I GCTEMP /IS IT AN ARG + CDF + AND (1020 /ARG OR EXTERNAL ? + SNA + JMP NOTINX+1 /NEITHER + AND Q20 + SZA CLA + JMP ARGARG /ARG SQUARED + JMP EXTARG /EXTERNAL ARG +NOTINX, CLA + ISZ ARG2 /BUMP POINTER + ISZ ARG2 + ISZ TYPE2 /INCR COUNT + JMP CHKPTR +OUTJSR, TAD JSRLBL /DOES IT GET A LABEL ? + SNA + JMP .+3 /NO + JMS I QLABEL /OUPTUT THE LABEL+COMMA + DCA JSRLBL /KILL SWITCH + TAD X16 /ADDR OF POINTER TO FUN NAME + DCA TEMP +FNSWIT, 0 /REAARANGED** + JMP I (IOFUN /IO FUNCTION CALL + JMS I QOPCDE /OUTPUT THE JSR + JSR + TAD I TEMP /NOW THE SUBR NAME + CDF 10 + JMS I QOUTNAM + JMS I QCRLF + TAD NARGS /ANY ARGS ? + SNA CLA + JMP I GENCAL /NO, END OF CALL + JMS I QOPCDE /JUMP AROUND THE ARGS + JA + TAD Q256 + JMS I QOCHAR /. + TAD PLUS + JMS I QOCHAR /+ + CLL CLA CMA RAL /-2 + TAD NARGS /-N-2 + CLL CMA RAL /2*N+2 + JMS I QONUMBR +IOONLY, JMS I QCRLF + TAD X16 /WORKING POINTER + DCA X15 +PTRLST, TAD I X15 /GET NEXT ARG + SZA + JMP SARG /SIMPLE ARG + CLL CML RTL + TAD X15 /ADDR OF GENERATED + /LABEL NUMBER + DCA TEMP + TAD I TEMP /OUTPUT #GXXXX (THE + /GENERATED LABEL) + JMS I QLABEL /OUPTUT THE LABEL + JMS I QGENCOD + JADP2-1 /GENERATE A DUMMY JA + JMP BARGLP +SARG, DCA ARG2 /STORE THE ARG NUMBER + JMS I QOPCOD /OUTPUT JA ARG + JA + JMS I QOADDR /NOW ADDRESS FIELD + ARG2 +BARGLP, ISZ X15 /BUMP POINTER + ISZ X15 + ISZ NARGS /BUMP COUNT + JMP PTRLST + JMP I GENCAL +INTMP, TAD I BASE2 /GET TEMP NUMBER + DCA ARG1 /THAT PTR IS STORED IN + JMS I QGENCOD /PICK UP POINTER + LDASTD-1 +STRPTR, JMS I QOPCDE /NOW STORE THE POINTER + FSTA + TAD GLABEL /OUTPUT THE LABEL + JMS I QOLABEL + JMS I QCRLF + TAD GLABEL /SAVE THE LABEL NUMBER + DCA I BASE2 + DCA I ARG2 /ZERO ARG NUMBER + ISZ GLABEL /INCREMENT LABEL NUMBER + JMS I QGENCOD /BACK TO F MODE + SF-1 + JMP NOTINX /CONTINUE LOOP +NLABEL, 0 + JMS I QOLABEL + TAD COMMA + JMS I QOCHAR + JMP I NLABEL + PAGE + / GENERATE SUBROUTINE CALL + +FUNCAL, JMS I QSAVEAC /SAVE NEXT TO LAST IF NEEDED + JMS I QSAVACT /SAVE LAST IF NEEDED + JMS I QGENSF /ALL CALLS DONE IN F MODE + DCA I X14 /RESULT RETURNED IN AC + TAD ACSWIT /IS THE SUBR AN ARG ? + SNA CLA + JMP MAKCAL /NO, ITS EASIER + JMS I QOPCOD /GET THE JSR TO THE SUBR + FLDA + JMS I QOADDR + BASE1 /BY GETTING THE VALUE + /OF THE ARG + JMS I QGENCOD /STARTD + SD-1 + JMS I QOPCDE /STORE IT AHEAD + FSTA + TAD GLABEL /INTO THE JSR + ISZ GLABEL + DCA JSRLBL /SET THE SWITCH + TAD JSRLBL + JMS I QOLABEL + JMS I QCRLF + JMS I QGENCOD /STARTF + SF-1 +MAKCAL, ISZ BASE1 /MOVE TO TYPE WORD + CDF 10 + TAD I BASE1 /GET TYPE OF FUNCTION + CDF + JMS I QSKPIRL /WHAT MODE WILL WE LEAVE IN? + DCA FMODE /PROBABLY E + JMS I QGENCAL /GO GENERATE THE CALL + SKP + 0 /THIS IS A FREE LOCATION + JMP I QNEXT +ARGARG, JMS I QOPCDE /%FLDA + FLDA + TAD I ARG2 /POINTER + CDF 10 + JMS I QOUTNAM + JMS I QCRLF + JMS I QGENCOD /%SD + SD-1 + CDF 10 + CLL CML RTR /IS IT AN ARRAY ? + AND I GCTEMP + CDF + SNA CLA + JMP STRPTR /GO STORE THE POINTER + TAD I ARG2 /GET THE LITERAL NUMBER + JMS I QGETSS + TAD Q3 + DCA GCTEMP + TAD I GCTEMP + DCA OLABEL /SAVE IT + CDF + JMS I QOPCDE /%FADD LITERAL + FADD + TAD QLITRL + JMS I QOUTSYM + TAD OLABEL /XXXX + JMS I QONUMBR + JMS I QCRLF + JMP STRPTR /GO STORE THE POINTER +INXR, TAD (270 /MAKE AN ASCII CHAR + DCA XR + JMS I QOPCDE /XTA + XTA + TAD XR + JMS I QOCHAR /N + JMS I QCRLF + TAD BASE1 /FIND ADDR OF MAGIC + /NUMBER LITERAL + JMS I QGETSS + CDF + TAD Q3 + DCA ARG1 + JMS I (GENPTR /GENERATE THE POINTER + JMP STRPTR /GO STORE THE POINTER +EXTARG, TAD I ARG2 /MAKE AN ENTRY IN THE EXT + CDF 10 /LITERAL LIST + DCA I X17 + TAD DOTEMP /USE DO TEMPS FOR THIS + DCA I X17 + CDF + TAD DOTEMP /SINCE OADDR CAN HANDLE THEM + DCA I ARG2 + ISZ DOTEMP /BUMP COUNT + ISZ ELCNT /ALSO EXT LIT COUNT + JMP NOTINX /BACK TO PROCESSING ARGS + / UTILITY ROUTINES +OLABEL, 0 /OUTPUT #GXXXX FOR GEN'D LABELS + DCA TEMP + TAD (243 + JMS I QOCHAR + TAD (307 + JMS I QOCHAR + TAD TEMP + JMS I QONUMBR + JMP I OLABEL +OPCODE, 0 /TAD OPCODE TAB + DCA WHATAC /THIS INSTRUCTION ZAPS AC + JMS I QOTAB + TAD I OPCODE + ISZ OPCODE + JMS I QOUTSYM + JMS I QOTAB + JMP I OPCODE +M1C2, TEXT '-1,2' +GENSTE, 0 /GENERATE STARTE IF IN + /F MODE + TAD FMODE /LOOK AT THE SWITCH + SNA CLA + JMP I GENSTE /ALREADY IN E MODE + DCA FMODE /CLEAR THE SWITCH + JMS I QOPCOD /GENERATE THE STARTE + STARTE + JMS I QCRLF /CAN'T USE GENCOD FOR THAT + JMP I GENSTE +D0, TEXT '0' +DOTMPN, TEXT '#DOTMP' + PAGE + / OPCODES AND OTHER TEXT + +XBASE, TEXT '#BASE' +XBASP3, TEXT '#BASE+3' +DP3C0, TEXT '.+3,0' +JXN, TEXT 'JXN' +ALN, TEXT 'ALN' +ATX, TEXT 'ATX' +XTA, TEXT 'XTA' +LDX, TEXT 'LDX' +XREW, TEXT '#REW' +XENDF, TEXT '#ENDF' +XBAK, TEXT '#BAK' +XEXIT, TEXT '#EXIT' +XRTN, TEXT '#RTN' + JNE, TEXT 'JNE' + TEXT 'JGE' + TEXT 'JLE' + TEXT 'JGT' +JLT, TEXT 'JLT' /MUST BE IN THIS ORDER!! + TEXT 'JEQ' +JA, TEXT 'JA' + +JSR, TEXT 'JSR' +JSA, TEXT 'JSA' /MUST BE IN THIS ORDER! +TRAP3, TEXT 'TRAP3' + / POINTER GENERATOR +GENPTR, 0 /GENERATE A POINTER + JMS I QOPCOD /MULTIPLY BY 3. OR 6. + FMUL + TAD TYPE1 /D OR C ? + JMS I QSKPIRL /SKIP ON I, R, OR L + TAD Q6M3 + TAD (THREE + DCA TEMP /POINTER TO CORRECT LITERAL + JMS I QOADDR + TEMP + JMS I QGENCOD /ALN 0; STARTD + A0SD-1 + JMS I QOPCDE /FADD THE BASE LITERAL + FADD + ISZ BASE1 /GET ADDR OF TYPE WORD + CDF 10 + TAD I BASE1 /GET TYPE WORD + AND Q20 + SNA CLA + JMP NIARG /NOT AN ARG + CMA + TAD BASE1 + JMS I QOUTNAM /IF AN ARG, THE LITERAL + /IS THE ARG + JMP OSF +NIARG, CDF + TAD QLITRL /OTHERWISE ITS IN THE + /LITERAL BLOCK + JMS I QOUTSYM + CDF 10 + TAD I ARG1 /LITERAL NUMBER + CDF + JMS I QONUMBR +OSF, JMS I QCRLF + JMP I GENPTR + / MORE RANDOM CODE GENERATORS +STOP, JMS I QGENCOD /CALL EXIT + STPCOD-1 + JMP I QNEXT +FORMAT, JMS I QINWORD /NUMBER OF WORDS OF TEXT + CMA + DCA TEMP + JMS I QOPCDE /JA AROUND THE STUFF + JA + TAD Q256 + JMS I QOCHAR /. + TAD PLUS + JMS I QOCHAR + CLL CMA RAL /.+2+NWORDS + TAD TEMP + CMA + JMP .+3 +FMTLUP, JMS I QOTAB /TA + JMS I QINWORD /GET NEXT WORD + JMS I QONUMBR /OUTPUT IT + JMS I QCRLF + ISZ TEMP + JMP FMTLUP + JMP I QNEXT + +DFRTTM, 0 /ROUTINE TO DELETE "SYS:FORTRN.TM" + CLA IAC + CIF 10 + JMS I Q200 + 4 + FTRNTM + 0 + NOP + JMP I DFRTTM + +EQUDOT, TEXT '=.' +XPAUSE, TEXT '#PAUSE' + PAGE + /REWIND, ENDFILE, BACKSPACE + +REWIND, TAD (XREW-XENDF +ENDFIL, TAD (XENDF-XBAK +BAKSPC, TAD (XBAK + DCA REBSUB + JMS I QUCODE + AIFTBL-1 /GET UNIT INTO FAC + JMS I QGENSF /FORCE F MODE + CLA STL RTL + JMS I (OJSR +REBSUB, 0 + JMP I QNEXT + / DATA STATEMENT STUFF +DATAST, TAD X16 /SAVE STACK + DCA DSTACK + TAD DATASW /MULTIPLE DATA STMT ? + SZA CLA + JMP FIXDAT-2 /YES, DON'T OUTPUT LABEL + ISZ DATASW /SET DATA SWITCH + JMS I QOTAB /DEFINE ORIGIN SYMBOL + TAD GLABEL + JMS I QOLABEL + TAD (EQUDOT /#GXXXX=. + JMS I QOUTSYM + JMS I QCRLF + CLA CMA /SET VAR TO NONE LEFT + DCA NUMELM +FIXDAT, TAD QXRBUFR /USE XR BUFFER FOR DATA BUFFER + DCA DATPTR + CMA + DCA RCOUNT /SET REPETITION COUNT TO 1 + JMP I QNEXT +DREPTC, JMS I QINWORD /GET REPETITION COUNT + CIA + DCA RCOUNT + JMP I QNEXT +DATELM, JMS I QINWORD /GET SIZE OF ELEMENT + CIA + DCA TEMP + JMS I QINWORD /GET ELEMENT + DCA I DATPTR + ISZ DATPTR /INTO DATA BUFFER + ISZ TEMP + JMP .-4 + JMP I QNEXT +ENDELM, TAD QXRBUFR /SETUP POINTER + DCA TEMP +MORELM, ISZ NUMELM /ANY MORE FOR THIS VAR? + JMP SAMVAR /YES + TAD DSTACK /CHECK FOR MISMATCH + CIA + TAD X16 + SNA CLA + JMP DLERR /OOOPS + ISZ DSTACK /GET TO NEXT VAR + JMS I QOPCDE /%ORG VAR + ORG + TAD I DSTACK /GET VAR + DCA TEMP2 + TAD TEMP2 + ISZ DSTACK /MOVE TO THE DISPLACEMENT + CDF 10 /OUTPUT VAR + JMS I QOUTNAM + CMA + DCA NUMELM /ASSUME UNDIMENSIONED + CDF 10 + ISZ TEMP2 /MOVE TO TYPE WORD + TAD I TEMP2 /GET TYPE + JMS I QSKPIRL /SKIP ON I R L + CLL CMA RTL /YES + TAD (-3 + DCA ELMSIZ /NUMBER OF WORDS PER ELEMENT + CLL CML RTR + AND I TEMP2 + CDF + SNA CLA + JMP GOTSIZ /NOT DIMENSIONED + CLA IAC /IF DISP = 7777 , WHOLE ARRAY + TAD I DSTACK /LOOK AT DISPLACEMENT + SZA CLA + JMP GOTSIZ+1 /ONLY ONE ELEMENT OF THE ARRAY + CMA + TAD TEMP2 /GET TOTAL SIZE + JMS I QGETSS + IAC + DCA TEMP2 + TAD I TEMP2 + CIA /THIS IS THE NUMBER OF ELEMENTS + DCA NUMELM + CDF +GOTSIZ, DCA I DSTACK /ZERO DISPLACEMENT + TAD PLUS /OUTPUT +XXXX + JMS I QOCHAR + TAD ELMSIZ /MULTIPLY DISP BY 3 OR 6 + CIA + DCA MQ + TAD I DSTACK /GET DISP + JMS I QMUL12 + JMS I QNUMBRO /OUTPUT THE ORG ALTERATION + JMS I QCRLF + ISZ DSTACK /MOVE TO NEXT ENTRY +SAMVAR, TAD ELMSIZ /GET SET TO PICK UP AN ELEMENT + DCA NARGS + JMS I QOTAB + JMP .+3 /SKIP ; FIRST TIME +ELMLUP, TAD (273 /SEMICOLON + JMS I QOCHAR + TAD I TEMP /GET A WORD FROM THE BUFFER + ISZ TEMP + JMS I QONUMBR + ISZ NARGS /ONE DATA LIST ELEMENT MUST FILL + JMP ELMLUP /ONE VARIABLE LIST ELEMENT + JMS I QCRLF /I.E. ONE ARRAY ELEMENT + TAD DATPTR /IS THIS DATA ELEMENT EXHAUSTED? + CIA CLL + TAD TEMP + SNL CLA + JMP MORELM /MORE LEFT + ISZ RCOUNT /REPEAT ? + JMP ENDELM /YES + JMP FIXDAT /NO, BACK FOR MORE DATA +DLERR, JMS I QTTYMSG /DATA LIST ERROR + 0414 + ELMSIZ=ARG1 + NUMELM=TYPE1 + DSTACK=BASE1 + DATPTR=ARG2 + RCOUNT=TYPE2 + PAGE + / END STATEMENT PROCESSING + +END, TAD FUNCTN /WHAT WAS IT ? + SZA CLA + JMP .+3 /SUBR, RETURN + TAD (STPCOD-1 /MAIN PROG, CALL EXIT + DCA .+2 + JMS I QGENCOD + RTNCOD-1 + TAD DOTEMP /ANY DO TEMPS ? + TAD M7000 + SPA SNA + JMP .+3 /NO + JMS OTMPS /OUTPUT THEM +XDOTMP, DOTMPN + CLA + TAD TMPMAX /ANY EXTRA TEMPS ? + TAD (-TMPBLK + SPA SNA + JMP .+4 + IAC /OUTPUT THEM + 1 + JMS OTMPS + TEMPN2 + CLA + TAD ELCNT /ANY EXTERNAL LITERALS? + SNA + JMP END2 /NO + CIA + DCA ELCNT + TAD EXTLIT /PICK UP THE POINTER + DCA X17 +ELLOOP, CDF 10 + TAD I X17 /GET SYMBOL NAME + DCA TEMP + TAD I X17 /AND DO TEMP NUMBER + CDF + TAD (-7000 /MINUS BASE + DCA TEMP2 + JMS I QOPCDE /ORIGIN + ORG + TAD XDOTMP /OUTPUT #DOTMP + JMS I QOUTSYM + TAD PLUS /+ + JMS I QOCHAR + TAD TEMP2 /DISP + CLL CML RAL /*2+1 + TAD TEMP2 /*3+1 + JMS I QONUMBR + JMS I QCRLF + JMS I QOPCDE /NOW OUTPUT JSR NAME + JSR + TAD TEMP + CDF 10 + JMS I QOUTNAM + JMS I QCRLF + ISZ ELCNT + JMP ELLOOP +END2, TAD (232 /^Z + JMS I QOCHAR + JMS I (OUDUMP /DUMP BUFFER + CIF 10 + JMS I (7700 /GET USR + 10 + CIF 10 + CLA IAC + JMS I Q200 /CLOSE OUTPUT FILE + 4 + F1LNAM +FILSIZ, 0 + JMP OUERR /BADDDDIE + TAD FILSIZ /FIX INPUT LIST + CLL RTL + RTL + JMP FINAL +ERMSG, 0 /PRINT ERROR MESSAGE ON THE TTY + DCA TEMP /SAVE THE CODE + TAD QM4 /BACK UP THE ERROR + TAD ERRPTR /POINTER + DCA X10 + CDF 10 + DCA I X10 /ZERO END OF LIST + TAD TEMP /NOW STICK IN THE CODE + DCA I X10 + TAD X10 /SAVE THE NEW POINTER + DCA ERRPTR + TAD LINENO /NOW THE LINE NUMBER + DCA I X10 + CDF + TAD TEMP /PRINT ERROR CODE + JMS I QTTYP2C + JMS I QTTYP2C /NOW SOME SPACES + TAD QTTYOUT /FUDGE THE OUTPUT + /ROUTINE POINTER + DCA QOCHAR /SO THAT ONUMBR GOES TO + /THE TTY + TAD LINENO /PRINT THE LINE NUMBER + JMS I QONUMBR + TAD (OCHAR /FIXUP OUTPUT POINTER + DCA QOCHAR + JMS I QTTCRLF + JMS I QGENCOD /TRAP IF ERROR EXECUTED + ERCODE-1 + JMP I ERMSG +M7000, +OTMPS, -7000 /OUTPUT TEMP BLOCK + DCA TEMP /SAVE SIZE + TAD I OTMPS + ISZ OTMPS + JMS I QOUTSYM /OUTPUT NAME + TAD COMMA + JMS I QOCHAR + JMS I QOPCDE /ORG + ORG + TAD Q256 /. + JMS I QOCHAR + TAD PLUS + JMS I QOCHAR + TAD TEMP + CLL RAL + TAD TEMP /SIZE TIMES THREE + JMS I QONUMBR + JMS I QCRLF + JMP I OTMPS + PAGE + / CHAIN TO RALF +/ PASS2O VERSION 4A PT 16-MAY-77 +/CHANGES FOR OS/8 V3D AND OS/78 BY P.T. +/FIXED THE Q OPTION +/PATCH LEVEL IS IN LOCATION 26131 + IFZERO OVERLY < /ANOTHER SCORE FOR PAL8 + *OVRLAY + NOPUNCH> + IFNZRO OVERLY < /TO TAKE THE LEAD + FIELD 2 + ENPUNCH + *OVRLAY> /LATE IN THE FINAL QUARTER +GORALF, TAD FILDEV /GET SIZE AND DEVICE WORD + DCA I (7617 /PUT IT AWAY + ISZ (7617 /BUMP POINTER + TAD FILBLK /GET ORIGIN OF FIE + DCA I (7617 /STORE IT + ISZ (7617 + DCA I (7617 /ZERO END OF LIST + TAD I RALFSV + CDF 0 + SPA CLA /WAS /A SPECIFIED? + JMP I (7605 /YES - GET OUT + CLA IAC +CHNLKP, CIF 10 + JMS I Q200 + 2 /LOOKUP RALF.SV + RALFNM +RALFSV, 7643 + JMP I (7605 + TAD (6 /** + DCA CHNLKP+2 + JMP CHNLKP +RALFNM, 2201;1406;0000;2326 /RALF.SV +PASS3N, 2001;2323;6300;2326 /PASS3.SV + +ADD, JMS I QCODE /GENERATE CODE FOR ADD + ADDTBL-6;0 + JMP I QNEXT + / EXP OPERATOR +ETYPE, 0 +EXP, JMS I QSAVACT /SAVE AC IF ITS SECOND ARG + JMS I QGARGS /GET THE TWO ARGS + JMP I (OTERR /TYPE/OPERATOR ERROR + TAD TYPE1 /GET PLACE IN TABLE + CLL RTL + TAD TYPE1 /TYPE1 TIMES TEN + TAD TYPE2 /** + CLL RAL + TAD (EXPTBL-15 /POINTER TO ENTRY MINUS ONE + DCA X10 + CDF 10 + TAD I X10 /GET RESULTING TYPE + SNA + JMP I (OTERR /BAD IF THIS WORD IS ZERO + DCA ETYPE /SAVE THE TYPE + TAD I X10 /GET THE SUBR NAME + CDF + DCA I (ESUBR+2 /PUT IT INTO ITS PLACE + TAD TYPE1 /GET INTO CORRECT MODE + JMS SETMOD + TAD ARG1 /IS ARG 1 ALREADY IN THE AC + SNA CLA + JMP .+5 /YES, SKIP THE LOAD + JMS I QOPCOD /OTHERWISE LOAD IT + FLDA + JMS I QOADDR + ARG1 + JMS I QOINS /FSTA #BASE + FSTA;XBASE + TAD TYPE2 /SET MODE FOR ARG 2 + JMS SETMOD + JMS I QOPCOD /NOW LOAD IT + FLDA + JMS I QOADDR + ARG2 + JMS I QOINS /EXTERN FOR THE SUBR + EXTERN;ESUBR + JMS I QOINS /JSA TO THE SUBR + JSA;ESUBR + DCA I X16 /RESULT IS THE AC + TAD ETYPE /WITH THIS AS THE TYPE + DCA I X16 + DCA I X16 + TAD ETYPE /SET FMODE CORRECTLY + JMS I QSKPIRL + SKP + CLA IAC /RETURNED IN F MODE + DCA FMODE + JMP I QNEXT +SETMOD, /SET MODE TO CORRESPOND + /TO THE ARG +VOVER, VERSON /VERSION NUMBER FOR OVERLAY + JMS I QSKPIRL /SKIP IF WE WANT F MODE + JMP .+3 /SET TO E MODE + JMS I QGENSF /SET TO F MODE + JMP I SETMOD + JMS I QGENSE + JMP I SETMOD +FINAL, CIA + IAC + DCA FILDEV /SAVE RALF INPUT SPEC + CMA + DCA I X7746 /DON'T SAVE CORE ARROUND CHAIN + JMS I (DFRTTM /DELETE FORTRN.TM + CDF 10 + TAD I Q7605 /IS THERE A LISTING FILE? + SNA CLA + JMP GORALF /NO, JUST CHAIN TO RALF + CIF 10 + CDF + CLA IAC + JMS I Q200 /FIND PASS 3 + 2 + PASS3N +PAS3SV, 0 + JMP I Q7605 + TAD PAS3SV-1 /MOVE BLOCK TO CHAIN COMMAND + IAC /SKIP OVER CORE CONTROL BLOCK + DCA X7746 + JMS I DEVH /READ IN PASS 3 + NPPAS3 +SPASS3, 400 +X7746, 7746 + JMP I Q7605 + JMP I SPASS3 /GO DO PASS 3 + PAGE + / I/O OPEN AND CLOSE + +STRTIO, 0 /ROUTINE FOR STARTING IO STMT + ISZ IOSTMT /SET IOSTMT SWITCH + /(INCASE OF IMPLIED LOOPS) + JMS I QSAVEAC /SAVE AC + JMS I QSAVACT /IF NECESSARY + TAD I STRTIO /GET NUMBER OF ARGS + DCA NARGS /SAVE IT + ISZ STRTIO /MOVE TOHE NME + TAD NARGS /BACKUP STACK BY THIS MUCH + TAD NARGS /THREE OR SIX + TAD NARGS + TAD X16 + DCA X15 + TAD X15 + DCA TEMP /FUNCTION NAME GOES HERE + JMS I QOPCDE /EXTERN FOR SUBR + EXTERN + TAD I STRTIO /GET SUBROUTINE NAME + JMS I QOUTSYM /OUTPUT IT + JMS I QCRLF + TAD I STRTIO /PUT NAME + DCA I TEMP /ONTO STACK + JMS I QGENSF /ALL CALLS IN F MODE + JMS I QGENCAL /GENERATE THE CALL + NOP + JMP I QNEXT /NOTHING FOR R CLOSE +FMTRD1, IAC /START FORMATTED READ + DCA INPUT /SET INPUT = 1 + DCA BINARY /AND BINARY = 0 + JMS STRTIO /GO MAKE THE CALL + -2;XREADO +FMTWR1, DCA INPUT /SET SWITCHES + DCA BINARY + JMS STRTIO + -2;XWRITO +BINRD1, CLA IAC + DCA BINARY + CLA IAC + DCA INPUT + JMS STRTIO + -1;XRUO +BINWR1, DCA INPUT + CLA IAC + DCA BINARY + JMS STRTIO + -1;XWUO +WCLOSE, CLA STL RTL /TRAP3 HERE TOO** + JMS OJSR /OUTPUT TRAP3 #WUC + XWUC + DCA IOSTMT /KILL IO SWITCH + JMP I QNEXT +OJSR, 0 /OUTPUT EXTERN THEN JSR OR TRAP3 + CLL RAL /AC ON ENTRY IS 0 (JSR), 1 (JSA) OR 2 (TRAP3). + TAD (JSR + DCA OJSROP + JMS I QOPCDE /FIRST EXTERN + EXTERN + TAD I OJSR + JMS I QOUTSYM + JMS I QCRLF + JMS I QOPCDE /THEN JSR +OJSROP, 0 + TAD I OJSR + ISZ OJSR + JMS I QOUTSYM + JMS I QCRLF + JMP I OJSR + +XWUC, TEXT '#RENDO' /** +XREADO, TEXT '#READO' +XWRITO, TEXT '#WRITO' +XRUO, TEXT '#RUO' +XWUO, TEXT '#WUO' +RDRTNE, TEXT /#RSVO/ +RDDRTN, TEXT /#RFDV/ +FTRNTM, 0617;2224;2216;2415 /FORTRN.TM + DNA, JMS I QCODE /AND CODE + ANDTBL-6;0 + JMP I QNEXT +PURGE, JMS I QGARG /LOOK AT THE TOP OF STACK + JMP I (IOTYPE /BAD TYPE + TAD ARG1 /IT MUST BE A SCALAR REFNCE + CLL + TAD QM63 + SNL CLA + JMP I (IOTYPE /BAD TYPE + JMP I QNEXT +PAUZE, JMS I QUCODE /GET ARG INTO FAC + AIFTBL-1 + JMS I QGENCOD /OUTPUT JSR + PAZCOD-1 + JMP I QNEXT + PAGE + /DIRECT ACCESS I/O + +DARD1, CLA IAC /SET SWITCHES + DCA INPUT + CLA IAC + DCA BINARY /SAME AS UNFORMATTED + JMS I (STRTIO /GENERATE CALL + -2;XRDAO +DAWR1, DCA INPUT /SAME AS UNFORMATTED WRITE OPEN + CLA IAC + DCA BINARY + JMS I (STRTIO /CALL + -2;XWDAO +DEFFIL, TAD XDFARG /FAKE A CALL + DCA I (STRTIO /TO SKIP THE ISZ IOSTMT + JMP I (STRTIO+2 +XDFARG, .+1 + -4;XDEF +XDEF, TEXT '#DEF' +XRDAO, TEXT '#RDAO' +XWDAO, TEXT '#WDAO' + / RANDOM UNFITTING STUFF +RETURN, JMS I QGENCOD /JA #RTN + RTNCOD-1 + JMP I QNEXT +GENSTF, 0 /GENERATE STARTF IF IN E MODE + TAD FMODE /LOOK AT THE SWITCH + SZA CLA + JMP I GENSTF /ALREADY THERE + ISZ FMODE /SET SWITCH + JMS I QOPCOD /OUTPUT STARTF + STARTF + JMS I QCRLF + JMP I GENSTF /RETURN +NOT, JMS I QUCODE /.NOT. + NOTTBL-1 + JMP I (RELGM1 +SUB, JMS I QCODE /SUBTRACT + SUBTBL-6;0 + JMP I QNEXT +MUL, JMS I QCODE /MULTIPLY + MULTBL-6;0 + JMP I QNEXT +ASFDEF, CLA IAC /SET SWITCH FOR ASF PROLOG + DCA ASFSWT + JMP I QNEXT +OINS, 0 /OUTPUT TAB OPCODE TAB + /ADDRESS CRLF + DCA WHATAC /ZAPS AC + JMS I QOTAB + TAD I OINS /GET OPCODE + ISZ OINS + JMS I QOUTSYM + JMS I QOTAB + TAD I OINS /GET ADDRESS + SZA + JMS I QOUTSYM + JMS I QCRLF /END LINE + ISZ OINS + JMP I OINS + / CODE GENERATOR FOR STORE +STORE, JMS I QGARGS /GET ARGS FOR STORE + JMP I (OTERR + TAD ARG1 /KILL ANY XR + /EXPRS. INVOLVING + JMS I QCHKXR /THE VARIABLE BEING STORED + TAD ARG2 /IS SECOND ARG IN AC ? + SNA CLA + TAD Q5 /YES, ADD 5 TO TYPE2 + TAD TYPE2 + DCA TYPE2 + TAD TYPE1 /TYPE1 TIMES TEN + CLL RTL + TAD TYPE1 + CLL RAL + TAD TYPE2 /PLUS TYPE2 + TAD (STRTBL-13 /PLUS TABLE BASE + DCA SSKEL /GIVES ENTRY ADDRESS + CDF 10 + TAD I SSKEL /POINTER TO SKELETON + DCA SSKEL + JMS I QGENCOD /GENERATE CODE +SSKEL, 0 + TAD ASFSWT /IS THIS END OF ASF ? + SZA CLA + JMP I QNEXT /YES, DON'T DO A STORE + TAD TYPE1 /MODE IS THE SAME + JMS I QSKPIRL /AS THE VARIABLE STORED IN + SKP + CLA IAC + DCA FMODE + JMS I QOPCOD /OUTPUT STORE + FSTA + JMS I QOADDR /ADDRESS FIELD + ARG1 + TAD ARG1 /REMEMBER THE AC + CIA + DCA WHATAC /(REMEMBER THE + TAD BASE1 /ALAMO ?) + CIA /(WOULD YOU + DCA WHATBS /BELIEVE THE MAINE ???) + ISZ ARG1 /GO TO TYPE WORD + CDF 10 + CLL /IF ARG1 IS + TAD ARG1 /A SS'D REFNCE + TAD QM63 /DON'T + SZL CLA /BOTHER CHECKING + TAD I ARG1 /LOOK AT SOME BITS + CDF + AND (3400 /DIM,EXT, OR ASF ? + SNA CLA + JMP I QNEXT + JMS I QTTYMSG /ATTEMPT TO STORE IN + 1720 /EXTERNAL OR ASF +FLDAP, TEXT 'FLDA%' + PAGE + /ARITHEMTIC STATEMENT FUNCTIONS (BLAH!) + +DEFASF, CDF /A.S.F. PROLOG + TAD FMODE /SAVE CPU MODE + DCA ASFMOD /SINCE WE JUMP ARROUND + TAD X14 /SET STACK POINTER + TAD (3 /SO THAT ASF NAME STAYS + DCA X16 + CLA CMA /SET ASF SWITCH + DCA ASFSWT + TAD TMPMAX /USE UNIQUE TEMPS + IAC + DCA TMPCNT /FOR ALL ASF'S + JMS I QXRTBL /AND FORGET XR'S + JMS I QOPCDE /JA AROUND + JA + TAD GLABEL /SAVE ARROUND LABEL + DCA ASFSKP + ISZ GLABEL /BUMP LABEL GENERATOR + TAD ASFSKP /PUT LABEL AS ADDRESS OF JA + JMS I QOLABEL + JMS I QCRLF + TAD GLABEL /FUNCTIONS XR'S O HERE + JMS I QLABEL /OUPTUT THE LABEL + JMS I QOINS /#GXXXX, ORG .+10 + ORG;DP8 + TAD BASE1 /NOW OUTPUT FUNCTION NAME + CDF 10 + JMS I QOUTNAM + TAD COMMA /AS TAG + JMS I QOCHAR /OF START OF FUNCTION + JMS I QOPCDE /SETX + XSET + TAD GLABEL /TO THE GENERATED LABEL + ISZ GLABEL + JMS I QOLABEL + JMS I QCRLF + JMS I QOINS /LDX 0,1 + LDX;ZEROC1 + JMS I QGENCOD /STARTD + SD-1 /JUST LIKE A SUBROUTINE + /ISN'T IT ? + JMS I QOINS /FLDA #BASE + FLDA;XBASE /GET RETURN JUMP + JMS I QOPCDE /STORE IT AHEAD + FSTA + TAD GLABEL /USING GENERATED LABEL + JMS I QOLABEL + JMS I QCRLF +ASFARG, JMS I QOINS /FLDA% #BASE,1+ + FLDAP;XBAC1P /GET ARG POINTER + JMS I QOINS /FSTA #BASE+3 + FSTA;XBASP3 /SAVE IT + TAD I X15 /GET PARAMETER + DCA ARG2 + TAD I X15 + DCA TYPE2 + ISZ X15 + TAD TYPE2 /IS IT SINGLE OR DOUBLE? + JMS I QSKPIRL + JMP ASFASE /DOUBLE + JMS I QGENCOD /STARTF + SF-1 + CLA IAC +ARGSV, DCA FMODE /SET FMODE APPROPRIATELY + JMS I QOINS /FLDA% #BASE+3 + FLDAP;XBASP3 /GET THE VALUE + JMS I QOPCOD + FSTA /AND SAVE IT + JMS I QOADDR + ARG2 + ISZ NARGS /ANY MORE ARGS ? + SKP + JMP I QNEXT /NO, END OF ASF PROLOG + JMS I QGENCOD /STARTD + SD-1 + JMP ASFARG /NEXT ARG +ASFASE, JMS I QGENCOD /STARTE + SE-1 + JMP ARGSV +ASFEND, 0 /HANDLE END OF A.S.F. + TAD ASFSWT /IS THIS END OF ASF ? + SNA CLA + JMP PTCH /V3C NO + DCA ASFSWT /CLEAR SWITCH + JMS I QOINS /RESET XR'S + XSET;ZXR + TAD GLABEL /OUTPUT SPACE FOR RETURN ADDR + ISZ GLABEL + JMS I QLABEL /OUPTUT THE LABEL + JMS I QOINS /ORG .+2 + ORG;DOTP2 + TAD ASFSKP /OUTPUT SKIP ARROUND LABEL + JMS I QLABEL /OUPTUT THE LABEL + JMS I QCRLF + TAD ASFMOD /RESET MODE SWITCH + DCA FMODE + TAD TMPMAX /UNIQUE TEMPS + IAC + DCA TEM /V3C MUST BE USED + JMS I QXRTBL /AND XR'S LOST +PTCH, TAD TEM /V3C + DCA TMPCNT /V3C + JMP I ASFEND /RETURN +ASFMOD, 0 +ASFSKP, 0 +IOFUN, JMS I QOPCDE /CALLED BY TRAP3,NOT JSR** + TRAP3 + TAD I TEMP + JMS I QOUTSYM /OUTPUT THE IO FUNCTION NAME + JMP I (IOONLY /DO SOME OTHER STUFF +ESUBR, TEXT '#EXPXX' /THIS WILL BE THE CORRECT NAME + PAGE + / I/O LIST ELEMENT + +IOLMNT, JMS I QGARG /GET THE ARG + JMP IOTYPE /TYPE ERROR + DCA IOLOOP /CLEAR LOOP SWITCH + CLL STA RTL /-3 + TAD TYPE1 + DCA TYPE1 /TYPE1 = 0 IF COMPLEX, 1 IF D.P. + TAD ARG1 /ADDR OF TYPE WD + CLL IAC + DCA ARG2 + TAD ARG1 /LOOK AT ARG + TAD QM63 + SNL CLA + JMP NOLOOP /NOT ARRAY OUTPUT + CDF 10 + CLL CML RTR /IS IT DIMENSIONED ? + AND I ARG2 + CDF + SNA CLA + JMP NOLOOP /NO, NO LOOP + ISZ IOLOOP /SET SWITCH + TAD ARG1 /GET TO SS + JMS I QGETSS + IAC /TOTAL SIZE WORD + DCA BASE1 + TAD I ARG2 /IS THIS ARRAY AN ARG ? + AND Q20 + DCA ARGIO /SET SWITCH + TAD I BASE1 /IS IT VARIABLY DIMENSIONED ? + SNA + JMP I (VDAIO /YES, MUST COMPUTE SIZE + DCA BASE2 /SAVE SIZE + CDF + JMS I QOPCDE /PUT SIZE IN XR 1 + LDX + TAD Q255 + JMS I QOCHAR /- + TAD BASE2 + JMS I QONUMBR + TAD COMMA + JMS I QOCHAR + TAD (261 + JMS I QOCHAR + JMS I QCRLF + TAD ARGIO /IS IT AN ARG ? + SZA CLA + JMP I (ARGIOA /YES +OLLABL, TAD GLABEL /OUTPUT LABEL + JMS I QOLABEL + DCA I (XRBUFR+20 /KILL XR1 ENTRY + TAD COMMA + JMS I QOCHAR +NOLOOP, TAD INPUT /INPUT OR OUTPUT ? + SNA CLA + JMP OUTV /OUTPUT + JMS FIXCAL /SET PTR FOR OJSR** + JMS I (DUMSUB /NOW THE STORE + FSTA + TAD ARG1 /KILL ASSOCIATED + JMS I QCHKXR /XR EXPRESSIONS +CDSFLP, TAD TYPE1 /IS IT C OR D ? + CLL RAR + SZA CLA + JMP ENDLUP /NO, NO STARTE + JMS I QGENCOD + SF-1 +ENDLUP, TAD IOLOOP /IS THERE A LOOP ? + SNA CLA + JMP I QNEXT /NO, DO NEXT LIST ELEMENT + JMS I QOPCDE /YES, OUTPUT JXN + JXN + TAD GLABEL + ISZ GLABEL /OUTPUT LABEL + JMS I QLABEL /OUPTUT THE LABEL + TAD (261 + JMS I QOCHAR + TAD PLUS /OUTPUT PLUS (FOR + /INCREMENT DUMMY) + JMS I QOCHAR + JMS I QCRLF + JMP I QNEXT /DO NEXT LIST ELEMENT +OUTV, TAD TYPE1 /D OR C ? + CLL RAR + SZA CLA + JMP .+3 /NO, NO STARTF NECCESSARY + JMS I QGENCOD + SE-1 + JMS I (DUMSUB /OUTPUT FLDA + FLDA + JMS FIXCAL + JMP CDSFLP /THEN STARTF AND JXN IF ANY +FIXCAL, 6401 + TAD TYPE1 /IF VARIABLE IS COMPLEX, + CIA /OR IF VARIABLE IS DOUBLE AND + SZA /I/O IS BINARY, + TAD BINARY /GENERATE A JSR #RFDV + SNA CLA /ELSE GENERATE A TRAP3 #RSVO + JMP BINDIO + CLA STL RTL /SET PTR + JMS I (OJSR /NOW GO DO IT + RDRTNE /HERE'S THE NAME + JMP I FIXCAL +BINDIO, JMS I (OJSR + RDDRTN + JMP I FIXCAL + +IOTYPE, JMS I QTTYMSG /IO TYPE ERROR + 1124 +DEFLBL, JMS I QCRLF /CRLF BEFORE LABL + JMS I QGENSF /ENTER F MODE BEFORE ALL LABELS + JMS I QINWORD /GET THE LABEL + CDF 10 + JMS I QOSNUM /OUTPUT IT + TAD COMMA + JMS I QOCHAR + JMS I QXRTBL /KILL XR TABLE + DCA WHATAC /AND AC AT LABEL + JMP I QNEXT + PAGE + / I/O LIST ELEMENT + +VDAIO, CLL CMA RAL /GET ADDR OF NUMBER OF DIMS + TAD BASE1 + DCA X10 + TAD I X10 /GET DIM COUNT + CIA + DCA NARGS + ISZ X10 /SKIP SIZE + ISZ X10 /AND MAGIC NUMBER + ISZ X10 /AND LITERAL NUMBER + TAD (FLDA /LOAD FIRST DIM + SKP +GSIZLP, TAD (FMUL /MULTIPLY THE REST + DCA OPCIO + CDF 10 + TAD I X10 /GET THE NEXT DIMENSION + DCA TYPE2 + CDF + JMS I QOPCOD /OUTPUT OPCODE +OPCIO, 0 + JMS I QOADDR /NOW THE DIMENSION + TYPE2 + ISZ NARGS + JMP GSIZLP /KEEP GOING + JMS I QOPCOD /NEGATE THE FAC + FNEG + JMS I QCRLF + JMS I QGENCOD /PUT THE COUNT INTO XR1 + ATX1-1 +ARGIOA, JMS I QGENCOD /PUT -1 INTO XR 2 + LXM1C2-1 + JMS I QOPCDE /LOAD THE ARG POINTER - + FLDA /CONST + DCA I (XRBUFR+40 /KILL XR 2 ENTRY + TAD ARG1 + CDF 10 + JMS I QOUTNAM + JMS I QCRLF + JMS I QOPCDE /NOW ADD THE MAGIC NUMBER + FADD + TAD QLITRL /OUTPUT #LIT+XXXX + JMS I QOUTSYM + CDF 10 + ISZ BASE1 + ISZ BASE1 + TAD I BASE1 + CDF + JMS I QONUMBR + JMS I QCRLF + JMS I QOPCDE + FSTA /NOW STORE IN #BASE+3 + TAD (XBASP3 + JMS I QOUTSYM + JMS I QCRLF + JMS I QGENCOD /STARTF + SF-1 + JMP I (OLLABL /NOW THE INSIDE OF THE LOOP +DUMSUB, 0 /OUTPUT FLDA OR FSTA + /WITH SE IF NEEDED + TAD I DUMSUB /GET THE OPCODE + DCA LDASTA + ISZ DUMSUB + TAD TYPE1 /MUST WE SE ? + CLL RAR /TYPE1 IS 0 IF C, 1 IF D + SNA CLA + TAD Q3 /MULTIPLIER IS 6 + TAD Q3 /OR 3 + DCA MQ + JMS I QOPCOD /FLDA OR FSTA +LDASTA, 0 + TAD IOLOOP /IS IT A LOOP ? + SNA CLA + JMP EZVAR /NO + TAD ARGIO /IS IT AN ARG ? + SZA CLA + JMP IBASP3 /YES, INDIRECT THROUGH #BASE+3 + JMS I QOTAB + TAD ARG1 + CDF 10 /OUTPUT NAME + JMS I QOUTNAM + TAD (255 /- + JMS I QOCHAR + TAD BASE2 /NEGATIVE OF SIZE + CIA + JMS I QMUL12 /TIMES 6 OR 3 + JMS I QNUMBRO + TAD COMMA /COMMA SEVEN + JMS I QOCHAR + TAD (261 + JMS I QOCHAR + JMS I QCRLF + JMP I DUMSUB /RETURN +EZVAR, JMS I QOADDR /ITS A SCALAR + ARG1 + JMP I DUMSUB +IBASP3, TAD (245 /INDIRECT THROUGH #BASE+3 + JMS I QOCHAR + JMS I QOTAB + TAD (XBPC2P /FLDA% #BASE+3,2+ + JMS I QOUTSYM + JMS I QCRLF + JMP I DUMSUB +XBPC2P, TEXT '#BASE+3,2+' +OR, JMS I QCODE + ORTABL-6;0 + JMP I (RELGEN +XOR, JMS I QCODE + EQVTBL-6;0 + JMP I (RELGEN +DOTP2, TEXT '.+2' +ZXR, TEXT '#XR' + PAGE + / ASSIGNED GOTO AND ASSIGN + +AGOTO, JMS GTSTUF /LOOK AT THE ASSIGNED VAR + JMS I QGENCOD /GENERATE A JAC + AGTCOD-1 + JMP I QNEXT +ASSIGN, JMS I QGARG /GET THE ASSIGN VAR + JMP GTTYPE + CLL CMA RTL /MUST BE I OR R + TAD TYPE1 + SMA CLA + JMP GTTYPE /GOTO TYPE ERROR + JMS I QGENCOD /GENERATE THE ASSIGN CODE + ASNCOD-1 + JMS I (JAGEN + JMS I QGENCOD /NOW STORE IT + ASTOR-1 + JMP I QNEXT + / OPTIMIZER SUBROUTINES +CHEKXR, 0 /KILL XR EXPRS + CIA /ASSOCIATED WITH THIS VAR + DCA KILVAR /SINCE IT HAS + /JUST BEEN CHANGED + TAD (-7 /LOOK AT XR 1 THRU 7 + DCA TEMP /COUNT + TAD (XRBUFR+20 /POINTER + DCA TEMP2 +KILLUP, TAD I TEMP2 /GET NEXT XR + /EXPR. INDICATOR + SNA CLA + JMP EOKL /NOTHING HERE + TAD TEMP2 /GET POINTER + DCA X13 /INTO AN XR + TAD I X13 /GET ADDR OF DIB + DCA DIMPTR /SAVE IT + CDF 10 /FIELD OF SYMBOL TABLE + TAD I DIMPTR /GET NUMBER OF + /DIMENSIONS + CMA /COMPLIMENTED + DCA NARGS /SAVE IT + CDF /BACK TO FIELD OF XRBUFR +CHKKIL, ISZ NARGS /CHECK 1 LESS + /THAN THE NUMBER + SKP /OF DIMENSIONS + JMP EOKL + TAD I X13 /LOOK AT NEXT + /ELEMENT OF EXPR + TAD KILVAR /IS IT THE VAR + /JUST CHANGED ? + SNA CLA + DCA I TEMP2 /YES, KILL THIS EXPRESSION + JMP CHKKIL /LOOP +EOKL, TAD TEMP2 /DO NEXT XR + TAD Q20 + DCA TEMP2 /BUMP POINTER BY 16 + ISZ TEMP + JMP KILLUP + JMP I CHEKXR /RETURN +KILVAR, +XRTABL, 0 /CLEAR OR RESET + /XR TABLE FLAGS + DCA TYPE /0=CLEAR 1=RESET + TAD (-7 /DO XR1 THRU 7 + DCA TEMP /COUNT + TAD (XRBUFR+20 /POINTER + DCA TEMP2 +XRTLUP, TAD I TEMP2 /GET INDICATOR + SNA CLA + JMP .+3 /DON'T CHANGE IF ZERO + TAD TYPE /OTHERWISE SET TO + DCA I TEMP2 /'USED BY + /PREVIOUS STMT' + TAD TEMP2 /GET TO NEXT ONE + TAD Q20 + DCA TEMP2 /BUMPING BY 16 + ISZ TEMP + JMP XRTLUP /LOOP + JMP I XRTABL /DONE +LOADA, 0 /GENERATE AN FLDA + TAD I LOADA /IF NECESSARY + DCA LODARG /GET ARG POINTER + ISZ LOADA /BUMP RETURN + TAD I LODARG /DOES AC MATCH ? + TAD WHATAC + SZA CLA + JMP DOLOAD /NO, MUST LOAD + TAD LODARG /GET ADDRESS + IAC /OF BASE + DCA ARG /IN CASE SS'D + TAD I ARG /DOES BASE MATCH? + TAD WHATBS + SNA CLA + JMP I LOADA /OK, DON'T LOAD +DOLOAD, JMS I QOPCOD /GENERATE FLDA + FLDA + JMS I QOADDR /ADDRESS +LODARG, 0 + JMP I LOADA + PAGE + / INTER PASS EQUATES + BLNKCN=21 + ALIST=23 + INTLST=60 + FPLIST=56 + DPLIST=57 + CMPLST=61 + HOLIST=55 + SNLIST=62 + ONEI=63 + THREE=70 + SIX=75 + TRUE=102 + / START PASS 2 (INTER PASS COMMUNICATION) + IFNZRO OVERLY < + FIELD 0 + NOPUNCH + *OVRLAY> + IFZERO OVERLY < + FIELD 0 + ENPUNCH + *OVRLAY> +START2, JMP I Q7605 /RETURN BUT DON'T SAVE CORE + TAD I X10 /PICK UP NEXT FROM PASS 1 + DCA X17 + TAD X17 /SAVE POINTER TO + /EXTERNAL LITERALS + DCA EXTLIT + TAD I X10 /PASS ONE STACK LEVEL + DCA X11 + TAD I X10 /TEMP FILE START + DCA INBLOK + TAD I X10 /AND SIZE + CMA + DCA INRCNT + TAD I X10 /START OF PASS2O.SV + DCA PASS2O + TAD I X10 /START OF OUTPUT FILE + DCA FILBLK /SAVE IT FOR CHAINING TO RALF + TAD FILBLK + DCA OBLOCK + TAD I X10 + DCA OSIZE /ALSO MAX SIZE + TAD I X10 /PICK UP PROG NAME + DCA PROGNM + TAD I X10 + DCA ARGLST /AND ARG LIST ADDR + TAD I X10 /AND + /FUNCTION/SUBROUTINE/MAIN SWITCH + DCA FUNCTN + TAD I X10 /GET DP HARDWARE SWITCH + DCA DPUSED + TAD I X10 /CHECK FOR CROSSED VERSIONS + TAD VERS + SZA CLA + JMP VERROR /VERSION ERROR + STA STL /V3C +DCLOOP, TAD X11 /V3C THIS ADD CLEARS THE LINK + DCA X11 /V3C + TAD X11 + TAD (-STACK1 + SNL CLA + JMP PSN /GO DO STMT NUMBERS + TAD I X11 /GET DO LOOP ENDING STMT NUMBER + IAC + DCA X10 + CDF 10 + TAD (0416 /DN DO END MISSING + JMS NPRNT /GO PRINT THE MESSAGE + /AND THE NUMBER + CDF + CLL CMA RTL + JMP DCLOOP /V3C BACK UP 2 +PSN, TAD (SNLIST /PROCESS STMT NUMBERS + CDF 10 +SNCLUP, DCA ENTRY /SAVE NEW ENTRY ADDR + TAD I ENTRY /GET ADDR OF NEXT ENTRY + SNA + JMP SNDONE /NO MORE STMT NUMBERS + IAC + DCA TEMP /ADDR OF TYPE WORD + TAD I TEMP /WAS STMT NUMBER DEFINED? + SPA CLA + JMP SNDEFN /YES + TAD TEMP + DCA X10 + TAD (2523 /PRINT US MESSAGE + JMS NPRNT +SNDEFN, TAD (0110 /SET TYPE WORD + DCA I TEMP + TAD I ENTRY /PROCEED + JMP SNCLUP +SNDONE, CDF +FIXELP, JMS I (TYPRTN + NEGSLV /FIX UP NEGATIVE EQUIVALENCE OFFSETS + CLL CML RTL /CHECK FOR BLOCK DATA + TAD FUNCTN /(FUNCTN=-2) + SNA CLA + JMP BDSTUF /IT IS + JMS I (TYPRTN /DO IMPLICIT TYPING + IMPLCT + JMS I (TYPRTN /REMOVE SUB ARGS FROM LIST + SUBARG + JMS I (TYPRTN /EXTERNALS + EXTRNL + JMP I (PROLG1 /MORE PROLOG +BDSTUF, TAD I (BDSWIT /SET UP SWITCH + DCA I (PROLG2 + TAD (END2 /ALTER END CODE + CDF 10 + DCA I (XEND + CDF 0 + DCA NODBUG /NO ISN'S + JMP I (HOLDUN /DO SOME STUFF +SUBARG, 0 /REMOVE ARGS FROM ST + TAD I TYPE + AND Q20 /CHECK ARG BIT + SNA CLA + JMP I SUBARG + JMS UNHOOK + JMP TFUDGE + +UNHOOK, 0 + TAD I ENTRY + DCA I OENTRY + TAD BUCKET + DCA I ENTRY + JMP I UNHOOK + +VERROR, TAD (2605 /PRINT VE (VERSION ERROR) + JMS I QTTYP2C + JMS I QTTCRLF + JMP I Q7605 + PAGE + / GENERATE ARGUMENT STORAGE + +PROLG1, JMS I (INS2 / %JA #ST + JA;XST + JMS I (INS /#XR, %ORG .+10 + XXR;ORG;DP8 + JMS I QOPCDE / %TEXT #NAMEXX# + TEXTX + TAD PLUS + JMS I QOCHAR + CDF 10 + TAD PROGNM + JMS I QOUTNAM + JMS I (FILL /FILL WITH BLANKS + TAD PLUS + JMS I QOCHAR + ISZ PROGNM + JMS I QCRLF + JMS I (INS /#RET, %SETX #XR + XRET;SETX;XXR + JMS I (INS2 / %SETB #BASE + SETB;XBASE + JMS I (INS2 / %JA .+3 + JA +XDP3, DP3 + JMS I (INS /#BASE, %ORG .+6 + XBASE;ORG;DP6 + TAD ARGLST /ANY ARGS ? + SNA + JMP NOARGS /NO, SKIP THIS STUFF + DCA X10 /SAVE POINTER TO ARG LIST + CDF 10 /HOW MANY ? + TAD I ARGLST + CIA + DCA NARGS /THIS MANY + DCA TEMP2 /ARRAY ARG COUNTER +ARGLP1, JMS PLSUB1 /OUTPUT DEFS FOR ARRAY + /ARGS FIRST + SNA CLA /SINCE THEY MUST BE + /INDIRECTABLY + JMP NOARAY /REFERENCABLE + ISZ TEMP2 +NOARAY, ISZ NARGS + JMP ARGLP1 /PROCESS ENTIRE ARG LIST + CDF 10 + TAD I ARGLST /GO THRU ARGS AGAIN + CIA CLL + DCA NARGS + TAD ARGLST + DCA X10 + TAD TEMP2 /HOW MANY ARRAY ARGS ? + TAD QM6 + SNA + JMP NISA /NO INDIRECT LOCS LEFT + /FOR SCALARS + DCA TEMP2 + SZL CLA + JMP TOOMNY /TOO MANY ARRAY ARGS (>6) +ARGLP2, JMS PLSUB1 /NOW OUTPUT AS MANY INDIRECT + SZA CLA /SCALAR ARGS AS POSSIBLE + JMP NOSCLR /TO REDUCE THE PROLOG + ISZ TEMP2 /ROOM FOR ANY MORE + SKP + JMP NISA2 /NO, THE REST MUST MOVE VALUES +NOSCLR, ISZ NARGS /LOOP SOME MORE + JMP ARGLP2 + JMS I (PLSUB2 /OUTPUT SOME TRACEBACK STUFF + JMP I (MORE /GENERATE SCALAR, + /LITERAL AND TEMP STORAGE +NISA2, JMS I (PLSUB2 + JMP NDLP3 /OUTPUT TRACEBACK + /STUFF,THEN REST +NISA, JMS I (PLSUB2 /GET PAST THE TRACEBACK STUFF +ARGLP3, TAD XM3 /GENERATE ORG .+6 FOR D OR C + DCA XNOP + JMS PLSUB1 /OUTPUT REMAINING + /SCALAR ARG SPACE + SZA CLA + JMP NDLP3 + CDF 10 + TAD I TEMP /TURN OFF SUBARG BIT + AND (7757 /(THATS THE + /SECOND TIME I FIXED THIS) + + DCA I TEMP +NDLP3, ISZ NARGS + JMP ARGLP3 + CDF + JMP I (MORE /GENERATE SCALAR, + /LITERAL AND TEMP STORAGE + +NOARGS, JMS I (PLSUB2 /NO ARGS, OUTPUT TRACEBACK STUFF + JMP I (MORE /GENERATE SCALAR, + /LITERAL AND TEMP STORAGE +PLSUB1, 0 + CDF + TAD I PLSUB1 /GET THE SKIP + DCA PLSKIP + ISZ PLSUB1 + CDF 10 + TAD I X10 /GET THE NEXT ARG + IAC + DCA TEMP /TYP WORD ADDR + CLL CML RTR /2000=DIM BIT + AND I TEMP +PLSKIP, 0 /ARRAYS OR SCALARS ? + JMP I PLSUB1 + ISZ PLSUB1 + CLA CMA + TAD TEMP /DEFINE THIS VAR + JMS I QOUTNAM + TAD COMMA + JMS I QOCHAR + CDF 10 + TAD I TEMP /LOOK AT THE TYPE + CDF + JMS I QSKPIRL /SKIP IF NOT C OR D +XNOP, NOP /THIS IS CHANGED LATER (MAYBE) + TAD XDP3 /.+3 OR .+6 + DCA .+3 + JMS I (INS2 /ORG FOR THE VALUE + ORG;0 + JMP I PLSUB1 +TOOMNY, TAD P0F1 /TOO MANY ARRAY ARGS + JMP I P0F2 +XM3, CLL CML RTL + PAGE + / SCALARS, LITERALS & TEMPS + +HOLLIT, +MORE, JMS I (TYPRTN /OUTPUT SCALARS + SCALAR + TAD (TEMPS /OUTPUT FIRST FIVE TEMPS + JMS I (OUTVAR + TAD (LITRL2 + JMS I QOUTSYM + TAD COMMA /OUTPUT %LITRL, + JMS I QOCHAR + JMS I (DOLIST + INTLST +O141, 0141;-3 /OUTPUT INTEGER LITERALS + JMS I (DOLIST + FPLIST + 0142;-3 /OUTPUT FP LITERALS + JMS I (DOLIST + DPLIST + 0144;-6 /DOUBLE LITERALS + JMS I (DOLIST + CMPLST + 0143;-6 /COMPLEX LITERALS + JMS I (TYPRTN /OUTPUT DIMENSION FACTORS + DFLIT + JMS I (ADFLIT /OUTPUT ARG DIM FACTOR LITERALS + TAD (HOLIST /OUTPUT HOLLERITH LITERALS + DCA ENTRY +HOLLUP, CDF 10 + TAD I ENTRY + SNA + JMP HOLDUN + DCA ENTRY /SAVE NEW ENTYR + TAD ENTRY + DCA X10 + TAD O141 /SET TYPE INFO + DCA I X10 + TAD LITNUM + DCA I X10 /SAVE LIT DISP + CLL CMA RTL /SET UP COUNTER + DCA HOLLIT /BY THREES +HOLOOP, CDF 10 /OUTPUT LITERAL AS OCTALS + TAD I X10 + CDF + SNA + JMP HOFILL /FILL OUT REST + DCA ARG + TAD ARG + AND (77 /IS THIS LAST WORD? + SZA CLA + JMP .+4 /NO + TAD ARG /YES, STICK IN + TAD Q40 /BLANK + JMP HOFILL+1 /AND OUTPUT IT + TAD ARG /OUTPUT CHAR PAIR + JMS ONUM + ISZ HOLLIT + JMP HOLOOP + JMP HOLOOP-2 +HOFILL, TAD (4040 /FILL WITH BLANKS + JMS ONUM + ISZ HOLLIT + JMP HOFILL + JMP HOLLUP /DO NEXT HOLLERITH LITERAL +HOLDUN, CDF + JMS I (TYPRTN /DO ARRAYS + ARRAYS + JMS I (TYPRTN /REMOVE COMMON VARS FROM S.T. + COMVAR + JMS I QOTAB + TAD (XLBLE /#LBL=. + JMS I QOUTSYM + JMS I QCRLF + CDF 10 /LOOK AT THE BLANK COMMON LIST + TAD I (ONEI+2 /MAKE TRUE=INTEGER ONE + DCA I (TRUE+2 + TAD I (BLNKCN+1 + CDF + SNA + JMP NOBC /NO BLANK COMMON + DCA TYPE /POINTER TO VARIABLE LIST + JMS I QOPCOD + COMMON + JMS I QCRLF + CDF 10 +BCLOOP, TAD TYPE /PROCESS THIS HUNK OF + /BLANK COMMON + DCA X10 + TAD I X10 + SNA + JMP NXTBC /EMPTY HUNK + CIA /SIZE OF HUNK + DCA TEMP + TAD I X10 /OUTPUT HUNK + JMS I (OUTVAR + CDF 10 + ISZ TEMP + JMP .-4 +NXTBC, TAD I TYPE /ADDR OF NEXT HUNK + SNA + JMP NOBC /THAT WAS THE LAST HUNK + DCA TYPE + JMP BCLOOP /DO NEXT HUNK +NOBC, CDF + JMS I (TYPRTN /DO NAMED COMMONS + COMNAM + JMS I (TYPRTN /NOW EQUIVALENCES + EQUIVS + JMS INS2 + ORG;XLBL /%ORG #LBL + JMP I (PROLG2 /COMPLETE PROLOG + PAGE + / ARGUMENT PICKUP GENERATOR + +PROLG2, TAD FUNCTN /SECOND PART OF PROLOG + SZA CLA + JMP DORETN /NOT A MAIN PROG + JMS I (INS /#ST, BASE #BASE + XST;BASE;XBASE + JMS I (INS2 / SETB #BASE + SETB;XBASE + JMS I (INS2 / SETX #XR + SETX;XXR +BDSWIT, JMP I (FINIST /GO GET OVERLAY +DORETN, JMS I (INS /#RTN, BASE #BASE + XRTN;BASE;XBASE + TAD ARGLST /ANY ARGS ? + SNA + JMP JAGOBK /NO + DCA X10 /POINTER TO THE LIST + CDF 10 + TAD I ARGLST /NUMBER OF ARGS + CIA + DCA NARGS + DCA TEMP2 /ZERO ARG COUNTER + CDF + TAD NARGS /WILL WE RESTORE ANY ? + TAD (6 + SMA CLA + JMP JAGOBK /NO + JMS I (INS2 / FLDA #ARGS + FLDA;XARGS + JMS I (INS2 / FSTA #BASE + FSTA;XBASE +RSLOOP, CDF 10 + TAD I X10 /GET NEXT ARG + IAC + DCA TEMP /ADDR OF TYPE WORD + ISZ TEMP2 /INCR COUNT + TAD I TEMP /IS IT A VALUE TRANSMISSION ? + AND Q20 + CDF + SZA CLA + JMP NOREST /NO, DON'T RESTORE IT + JMS I QOPCDE / %LDX XXXX,1 + LDX + TAD TEMP2 + JMS I QONUMBR + TAD (C1 + JMS I QOUTSYM + JMS I QCRLF + JMS I QGENCOD /STARTD + SD-1 + JMS I (INS2 /GET POINTER TO ARG + FLDAI;XBASC1 + JMS I (INS2 /AND SAVE IN #BASE+3 + FSTA;XBASP3 + JMS STFORE /INTO CORRECT MODE + JMS I QOPCDE /FLDA VAR + FLDA + CMA + TAD TEMP + CDF 10 + JMS I QOUTNAM + JMS I QCRLF + JMS I (INS2 / FSTA% #BASE+3 + FSTAI;XBASP3 +NOREST, ISZ NARGS + JMP RSLOOP + JMS I QGENCOD /MAKE SURE WE'RE IN F MODE +QSFM1, SF-1 +JAGOBK, TAD FUNCTN /WHAT WAS THIS ? + SPA CLA + JMP NOFVAL /NOT A FUNCTION + CDF 10 /GET TYPE + TAD I PROGNM + AND Q17 + TAD (FVAL-1 /PLUS TABLE ADDRESS + DCA GVSKEL /GIVES POINTER TO + /SKELETON ADDRESS + TAD I GVSKEL /GET SKELETON ADDRESS + DCA GVSKEL + JMS I QGENCOD /PICK UP FUNCTION VALUE +GVSKEL, 0 +NOFVAL, JMS I (INS2 / JA #GOBAK + JA;XGOBAK + JMS I (INS /#ST, %STARTD + XST;STARTD;0 + JMS I QOTAB + TAD (210 / %FLDA' 10 + JMS I QONUMBR + JMS I QCRLF + JMS I (INS2 / %FSTA #GOBAK,0 + FSTA;XGOBC0 + JMP I (MORPLG + +STFORE, 0 /START F OR E + CDF 10 + TAD I TEMP /GET TYPE + CDF + JMS I QSKPIRL /SKIP ON I R OR L + TAD (SE-SF /SE + TAD QSFM1 /SF + DCA .+2 + JMS I QGENCOD + 0 + JMP I STFORE /DON'T FORGET TO + /RETURN DUMMY +XARGS, TEXT '#ARGS' + PAGE + / ENTRY AND EXIT CODE + +MORPLG, JMS I QOTAB + TAD Q200 / FLDA' 0 + JMS I QONUMBR + JMS I QCRLF + JMS I (INS2 / %SETX #XR + SETX;XXR + JMS I (INS2 / %SETB #BASE + SETB;XBASE + TAD ARGLST /ANY ARGS ? + SNA + JMP I (ENDPLG /NO, JUST STARTF + DCA ARG /SAVE POINTER TO THEM + JMS I (INS2 / %LDX 0,1 + LDX;ZC1 + JMS I (INS2 / %FSTA #BASE + FSTA;XBASE + JMS I (INS2 / %FSTA #ARGS + FSTA;XARGS + CDF 10 + TAD I ARGLST /NUMBER OF ARGS + CIA + DCA NARGS +GALOOP, CDF + JMS I (INS2 / %FLDA I #BASE,1+ + FLDAI;XBAC1P + DCA TYPE /CLEAR THE SD SWITCH + CDF 10 + ISZ ARG /GET TO NEXT ARG + TAD I ARG /LOOK AT ITS TYPE WORD + IAC + DCA TEMP + CLL CML RTR + AND I TEMP /WAS IT DIMENSIONED ? + SNA CLA + JMP I (TSTABT /NO, SEE IF ITS VALUE + CMA + TAD TEMP /GET ADDR OF DIM INFO + JMS I QGETSS + IAC /ADDR OF SIZE + DCA TEMP2 + TAD I TEMP2 + ISZ TEMP2 + ISZ TEMP2 + SNA CLA + JMP OUFSTA+1 /IT HAS A VARIABLE DIMENSION + TAD I TEMP2 /GET MAGIC NUMBER LIT DISP + DCA TEMP2 + CDF + JMS I QOPCDE / %FSUB #LIT+XXXX + FSUB + TAD QLITRL + JMS I QOUTSYM + TAD TEMP2 + JMS I QONUMBR + JMS I QCRLF + CDF 10 +OUFSTA, DCA I ARG /IT ISN'T VARIABLY DIMENSIONED + CDF + JMS I QOPCDE / %FSTA ARGN + FSTA + CDF 10 + CMA + TAD TEMP + JMS I QOUTNAM + JMS I QCRLF + ISZ NARGS + SKP + JMP I (ENDPLG /END OF PROLOG + TAD TYPE /DID WE LEAVE D MODE + SNA CLA + JMP GALOOP /NO + JMS I QGENCOD /YES, OUTPUT AN %SD + SD-1 + JMP GALOOP +FINIST, CDF 10 + TAD FUNCTN /WAS THIS A FUNCTION ? + SPA SNA CLA + JMP .+4 /NO, SKIP THIS + TAD I PROGNM /YES, TURN OFF EXT BIT + AND (6777 /ALLOWING STORING IN FUN NAME + DCA I PROGNM + TAD (2200 /CHECK /N /Q + AND I (7644 + CDF + SNA CLA +NODBUG, DCA I (DEBUG /IF NOT SET, PUT ISN'S + CDF 10 /INTO CODE + TAD I (7644 /IS /Q SET ? + CDF + AND (0200 + SZA CLA + ISZ I (OPTMYZ /MAKE A CLA IAC FROM A CLA +GFNAME, CDF 10 + TAD I FNAME /MOVE FILE NAME + CDF + DCA I NAMEF /INTO PAGE + ISZ FNAME + ISZ NAMEF + ISZ NFCNT + JMP GFNAME + JMP I (RDOVLY /GO WHERE ? + /CALIFORNIA OF COURSE!!!! +FNAME, 7601 +NAMEF, F1LNAM +NFCNT, -4 + +ONUM, 0 + ISZ LITNUM /BUMP LITERAL COUNTER + DCA ARG + JMS I QOTAB + TAD ARG + JMS I QONUMBR + JMS I QCRLF + JMP I ONUM + PAGE + / ENTRY AND EXIT CODE + +TSTABT, TAD I TEMP /VALUE TRANSMISSION ? + AND Q20 + SZA CLA + JMP I (OUFSTA /NO + CDF + JMS I (INS2 / %FSTA #BASE+3 + FSTA;XBASP3 + JMS I (STFORE /ENTER CORRECT MODE + JMS I (INS2 / %FLDA% #BASE+3 + FLDAI;XBASP3 + ISZ TYPE /SET SWITCH + JMP I (OUFSTA-1 +ENDPLG, JMS I QGENCOD /%SF + SF-1 + TAD ARGLST /ANY VARIABLY + /DIMENSIONED ARRAYS ? + SNA + JMP I (FINIST /NO ARGS AT ALL + DCA X10 + CDF 10 + TAD I ARGLST /NUMBER OF ARGS + CIA + DCA NSARGS +VDIMLP, CDF 10 + TAD I X10 /GET NEXT ARG + SNA + JMP NDVDIM /NOT A VARIABLY + /DIMENSIONED ARRAY + DCA VDTEMP + TAD VDTEMP /GET ADDR OF DIMENSION INFO + JMS I QGETSS + DCA VDTMP2 + TAD I VDTMP2 /NUMBER OF DIMENSIONS + CIA + DCA NARGS + ISZ VDTMP2 /MOVE TO MAGIC NUMBER LITERAL + ISZ VDTMP2 + ISZ VDTMP2 + TAD I VDTMP2 /GET IT + CDF + DCA MNL /SAVE MAGIC NUMBER LITERAL + TAD (FLDA /JUST LOAD FIRST DIM + DCA MNOPC + TAD NARGS /GET ADDRESS + CIA /OF THE LAST + TAD VDTMP2 /DIMENSION + DCA VDTMP2 /FOR THE SIZE GETTER + JMP CMPMN3 /SKIP MULTIPLY FIRST TIME +CMPMN1, TAD (FMUL /NEXT TIME USE A MULTIPLY + DCA MNOPC + JMS I QOPCOD /NEXT SUBSCRIPT (ALWAYS (1.0) + FADD + JMS I QOADDR /NOW ADDRESS + (ONEI +CMPMN3, ISZ NARGS /ANY MORE SS ? + JMP CMPMN2 /YES + ISZ VDTEMP /GET TO TYPE + CDF 10 + TAD I VDTEMP + CDF + JMS I QSKPIRL /SKIP ON I R L + TAD Q6M3 /YES + TAD (THREE + JMS LDAMUL /3.02 + JMS I (INS2 /ALN 0 + ALN;D0 + JMS I QOPCDE + FSTA + TAD QLITRL /SAVE IN THE MAGIC + /NUMBER LITERAL + JMS I QOUTSYM + CLA CMA + TAD MNL + JMS I QONUMBR + JMS I QCRLF + JMS I (INS2 /FNEG + FNEG;0 + JMS I (INS2 /ENTER D MODE + STARTD;0 + JMS I QOPCDE + FADDM /NOW MODIFY THE POINTER + CMA + TAD VDTEMP + CDF 10 + JMS I QOUTNAM + JMS I QCRLF + JMS I (INS2 /RETURN TO F MODE + STARTF;0 +NDVDIM, ISZ NSARGS /ANY MORE ARGS TO CHECK? + JMP VDIMLP /YES + CDF + JMP I (FINIST +CMPMN2, CLA CMA /BACK UP THE POINTER + TAD VDTMP2 /BY ONE + DCA VDTMP2 + CDF 10 + TAD I VDTMP2 /GET IT + CDF + JMS LDAMUL /3.02 + JMP CMPMN1 /LOOP +VDTEMP, 0 +VDTMP2, 0 +NSARGS, 0 +MNL, 0 +DP12, TEXT '.+14' +LDAMUL, 0 /3.02 + DCA MNADR + JMS I QOPCOD +MNOPC, 0 + JMS I QOADDR + MNADR + JMP I LDAMUL +MNADR, 0 + PAGE +/ RANDOM PROLOG STUFF + +ARRAYS, 0 /OUTPUT ARRAYS + TAD I TYPE + AND (6220 /IS IT AN ARRAY + SNA + JMP I ARRAYS + AND (4220 /NOT COMMON, EQUIV OR ARG + SZA CLA + JMP I ARRAYS + JMS I (UNHOOK /REMOVE FROM BUCKET + TAD ENTRY /OUTPUT VARIABLE + JMS I (OUTVAR + JMP TFUDGE-1 +FILL, 0 /FILL SUB NAME WITH BLANKS + CLL CML RTL + TAD PROGNM /PROGNM+2 + CIA /-PROGNM-2 + TAD I XNAMP /1,2,3 + TAD QM4 /-3,-2,-1 + DCA TEMP + JMP .+5 + TAD (240 /TWO BLANKS FOR EACH WORD + JMS I QOCHAR + TAD (240 + JMS I QOCHAR + ISZ TEMP /MORE ? + JMP .-5 /YES + JMP I FILL +XNAMP, NAMPTR +NPRNT, 0 + JMS I QTTYP2C + JMS I QTTYP2C + TAD I X10 /NOW NUMBER + JMS I QTTYP2C + TAD I X10 + JMS I QTTYP2C + TAD I X10 + JMS I QTTYP2C + JMS I QTTCRLF + JMP I NPRNT + /ROUTINE TO FIX UP NEGATIVE EQUIVALENCE OFFSETS + +NEGSLV, 0 + TAD I TYPE + AND Q200 + SNA CLA /IS VARIABLE A SLAVE? + JMP I NEGSLV /NO + TAD TYPE + DCA X10 + TAD I X10 /GET POINTER TO EQUIV BLOCK + DCA X10 + CLA IAC + TAD I X10 /GET POINTER TO MASTER + DCA OLDM /TYPE WORD + TAD I X10 /OFFSET FROM MASTER + CMA STL + TAD I X10 /SUBTRACT FROM SLAVE OFFSET + DCA SFUDGE /SAVE IN CASE WE NEED IT + TAD I OLDM /IF MASTER IS IN COMMON FORGET THE NEXT TEST: + SZL SPA CLA /IF MASTER OFFSET < SLAVE OFFSET THEN + JMP I NEGSLV /SLAVE WILL ORIGIN BEFORE MASTER - + TAD I TYPE /THEREFORE THE SLAVE MUST BECOME THE MASTER + AND (7577 /UNSLAVE THE SLAVE + DCA I TYPE + ISZ TYPE + TAD I TYPE + DCA TYPE1 /TYPE1 POINTS TO EQUIV BLOCK + CLA IAC + TAD TYPE1 + DCA X10 /USE AUTO-XR TO CLEAR OFFSETS + TAD ENTRY + DCA NEWM + TAD I OLDM /GET OLD MASTER'S TYPE WD + TAD Q200 + DCA I OLDM /MAKE IT A SLAVE + ISZ OLDM + TAD I TYPE1 /GET POINTER TO SLAVE DIMENSION BLOCK + DCA I TYPE /PUT IT IN SYMTAB AS BEFITTING A NEW MASTER + TAD I OLDM /GET OLD MASTERS DIM PTR + DCA I TYPE1 /PUT IT IN EQUIV BLOCK AS BEFITTING A NEW SLAVE + TAD TYPE1 /NOW ASSOCIATE THE EQUIV BLOCK + DCA I OLDM /WITH THE NEW SLAVE + DCA I X10 /AND MAKE BOTH OFFSETS 0 + DCA I X10 /("FIXSLV" WILL ADJUST IT - NOTE THE "MASTER" + CDF 0 /WD OF THE BLOCK STILL POINTS TO THE OLD MASTER) + JMS I (TYPRTN /** RECURSIVE CALL ** - ACTUALLY WE DON'T CARE + FIXSLV /SINCE WE AREN'T RETURNING ANYWAY + JMP I (FIXELP /TRY AGAIN FROM SCRATCH + /ROUTINE TO ADJUST ALL SLAVES OF THE OLD MASTER +/TO BE SLAVES OF THE NEW MASTER + +FIXSLV, 0 /THROUGHOUT + TAD I TYPE + AND Q200 + SNA CLA /IS IT A SLAVE? + JMP I FIXSLV /NO + ISZ TYPE + CLA IAC + TAD I TYPE + DCA TYPE /TYPE NOW POINTS TO THE EQUIV BLOCK + CLA IAC + TAD I TYPE /GET PTR TO THIS SLAVES MASTER (+1) + CMA + TAD OLDM /COMPARE MASTERS + SZA CLA + JMP I FIXSLV /NOT UNDER SAME MASTER - LEAVE + TAD NEWM + DCA I TYPE /"MEET THE NEW BOSS..... + ISZ TYPE / SAME AS THE OLD BOSS...." + TAD I TYPE / (THE WHO) + + TAD SFUDGE /ADD IN THE DIFFERENCE BETWEEN OLD AND NEW + IAC /MASTERS TO THE MASTER OFFSET + DCA I TYPE + JMP I FIXSLV /THE SLAVE IS NOW -- A SLAVE! + +OLDM, 0 +NEWM, 0 +SFUDGE, 0 + PAGE + / ENTRY AND EXIT CODE + +PLSUB2, 0 /DUMB SUBR FOR PROLOG + CDF + JMS INS2 / %ORG #BASE+30 + ORG;XBAP30 + JMS INS2 / %FNOP + FNOP;0 + JMS INS2 / %JA #RET + JA;XRET + JMS INS2 / FNOP + FNOP;0 + JMS INS /#GOBAK,ORG .+2 + XGOBAK;DBLZRO;0 /**TO INSURE IT'S 0 + TAD DPUSED /WAS DOUBLE PRECISSION USED ? + SNA CLA + JMP NDPUSD /NO, NO NEED FOR TEMP + JMS INS + XDPTMP;ORG;DP12 /#DPT, ORG .+12 + JMS INS2 + DPCHK;0 +NDPUSD, TAD FUNCTN /FUNCTION OR SUBR ? + SNA + JMP I PLSUB2 /ITS #MAIN, NO #VAL OR #ARGS + SPA CLA + JMP .+5 /ITS A SUBROUTINE, NO #VAL + JMS INS /#VAL, %ORG .+6 + XVAL;ORG;DP6 + JMS INS /#ARGS, %ORG .+3 + XARGS;ORG;DP3 + JMP I PLSUB2 +INS2, 0 / %OPCOD ADDR + TAD INS2 /COMMONIZE RETURNS + DCA INS + JMP INS3 +INS, 0 /TAG, %OPCOD ADDR + TAD I INS /GET TAG FIELD + ISZ INS + JMS I QOUTSYM /OUTPUT IT + TAD COMMA + JMS I QOCHAR +INS3, JMS I QOTAB + TAD I INS /GET OPCODE + ISZ INS + JMS I QOUTSYM + TAD I INS /GET ADDR + SNA CLA + JMP .+4 /NO ADDRESS + JMS I QOTAB + TAD I INS + JMS I QOUTSYM + ISZ INS + JMS I QCRLF + JMP I INS +SECT, TEXT 'SECT' +XRET, TEXT '#RET' +XXR, TEXT '#XR' +XGOBAK, TEXT '#GOBAK' +XST, TEXT '#ST' +XGOBC0, TEXT '#GOBAK,0' +XBAP30, TEXT '#BASE+30' +FNOP, TEXT 'FNOP' +SETX, TEXT 'SETX' +SETB, TEXT 'SETB' +TEXTX, TEXT 'TEXT' +XBASC1, TEXT '#BASE,1' +DP3, TEXT '.+3' +DP6, TEXT '.+6' +ZC1, TEXT '0,1' +FLDAI, TEXT 'FLDA%' +FSTAI, TEXT 'FSTA%' +XLBLE, TEXT '#LBL=.' +C1, TEXT ',1' +XLBL, TEXT '#LBL' /STACK-5 CAN'T BE 0 +DBLZRO, TEXT '0;0' + PAGE + / SYMBOL TABLE PROCESSING ROUTINES + +IMPLCT, 0 /DO IMPLICIT TYPING + TAD I TYPE + AND O100 /WAS IT EXPLICITLY TYPED + SZA CLA + JMP I IMPLCT /YES + TAD BUCKET /IS IT INTEGER ? + TAD M317 + CLL + TAD M006 + SNL CLA + ISZ I TYPE /TYPE IT REAL + ISZ I TYPE /TYP IT INTEGER + JMP I IMPLCT +O100, +DFLIT, 100 /GENERATE FACTORS FOR CALLS + CLL CML RTR /DIMENSIONED ? + AND I TYPE + SNA CLA + JMP I DFLIT /NO + TAD I TYPE + DCA TEMP /SET PROPER WDS/ENTRY FOR VMC + TAD ENTRY /GET ADDR OF MAGIC NUMBER + JMS I QGETSS + TAD (2 + DCA TYPE + TAD I ENTRY /SAVE LINK + DCA DFTEMP + TAD BUCKET /FIX NAME + DCA I ENTRY + TAD I TYPE /GET MAGIC NUMBER + DCA TEMP2 + ISZ TYPE + CDF + JMS I (ONUM /OUTPUT A ZERO WORD + JMS I QOPCDE + JA + TAD ENTRY /OUTPUT VAR MINUS CONST + JMS I (VMC + JMS I QCRLF /END LITERAL + CDF 10 + TAD LITNUM /SAVE NUMBER IN DIM INFO + DCA I TYPE + ISZ LITNUM /THEN BY 2 MORE + ISZ LITNUM + TAD DFTEMP /RESTORE ENTRY + DCA I ENTRY + JMP I DFLIT +M006, +DFTEMP, +EXTRNL, 6 /DO EXTERNALS + TAD I TYPE + AND O1000 /IS IT EXT ? + SNA CLA + JMP I EXTRNL + JMS I (UNHOOK /REMOVE THIS SYMBOL + TAD PROGNM /IS IT THE PROG NAME ? + CIA + TAD ENTRY + SZA CLA + JMP .+5 /NO, OUTPUT EXTERN + TAD FUNCTN /IS IT A MAIN PROG ? + SNA CLA + JMP TFUDGE-1 /YES, NO SECT + TAD (SECT-EXTERN /NOT MAIN, OUTPUT SECT + TAD XTRN + DCA M317 + CDF + JMS I QOPCDE +M317, -317 + TAD ENTRY /NOW VAR NAME + CDF 10 + JMS I QOUTNAM + JMS I QCRLF + JMP TFUDGE-1 +O1000, +EQUIVS, 1000 /OUTPUT EQUIVALENCES + TAD I TYPE + AND Q200 /IS THIS A SLAVE ? + SNA CLA + JMP I EQUIVS /NO + JMS I (UNHOOK /UNHOOK THE ENTRY + TAD I TYPE /SAVE THE TYPE WORD + DCA TYPE1 + ISZ TYPE /POINT TO EQUIVALENCE BLOCK + TAD I TYPE + DCA X10 + CDF + JMS I QOPCDE /OUTPUT ORG + ORG + CDF 10 + TAD I X10 /MASTER NAME + DCA X11 /SAVE IT + TAD X11 + JMS I QOUTNAM /OUTPUT IT + TAD PLUS /+ + JMS I QOCHAR + CDF 10 + TAD I X11 /MASTER SS + JMS SUBRX + TAD Q255 /MINUS + JMS I QOCHAR + CDF 10 + TAD TYPE1 /SLAVE SS + JMS SUBRX + JMS I QCRLF /EOL + CDF 10 + TAD ENTRY /NOW OUTPUT SLAVE + JMS I (OUTVAR + JMP TFUDGE-1 +XTRN, +SUBRX, EXTERN + JMS I QSKPIRL /SIZE OF THING + TAD Q3 + TAD Q3 /TIMES 3 OR 6 + DCA MQ + TAD I X10 + CDF + JMS I QMUL12 /MAKE THE PRODUCT + JMS I QNUMBRO /OUT WITH IT + JMP I SUBRX +DPCHK, TEXT 'DPCHK' +FADDM, TEXT 'FADDM' + PAGE + / SYMBOL TABLE PROCESSING ROUTINES + +BASE, TEXT 'BASE' +OUTVAR, 0 /ALLOCATE STORAGE FOR A VARIABLE + DCA VARADR + RDF /GET FIELD OF VAR + TAD X6201 + DCA OVFLD1 + TAD OVFLD1 + DCA OVFLD2 + TAD VARADR /OUTPUT NAME, + JMS I QOUTNAM + TAD COMMA + JMS I QOCHAR + JMS I QOPCDE /OUTPUT ORG + ORG + ISZ VARADR /POINT TO TYPE WROD +OVFLD1, 0 + TAD I VARADR /GET TYPE +X6201, CDF + JMS I QSKPIRL + TAD Q3 /PER ENTRY + TAD Q3 /INTEGER, REAL, AND + /LOGICAL 3WORDS + DCA MQ + DCA AC +OVFLD2, 0 + CLL CML RTR /CHECK DIM BIT + AND I VARADR + SNA CLA + JMP PLSDOT /NOT DIMENSIONED + TAD I VARADR /LOOK AT TYPE + ISZ VARADR /MOVE TO EQ DIM POINTER + AND Q200 /EQUIVALENCED ? + SNA CLA + JMP .+3 /NO + TAD I VARADR /YES, SKIP EQUIV INFO + DCA VARADR + TAD I VARADR /ADDRESS OF DIM INFO + IAC + DCA VARADR /ADDRESS OF SIZE + TAD I VARADR /GET TOTAL SIZE + CDF + JMS I QMUL12 +PLSDOT, CDF + TAD Q256 + JMS I QOCHAR + TAD PLUS + JMS I QOCHAR + JMS I QNUMBRO + JMS I QCRLF + JMP I OUTVAR +SCALAR, 0 /OUTPUT SCALARS + TAD I TYPE /IS IT A SCALAR ? + AND (7630 /COM, DIM, EXT, ASF, + /EQV, ARG, COMMONNAME + SZA CLA + JMP I SCALAR /NO + JMS I (UNHOOK /DELETE THIS FROM THE LIST + TAD ENTRY /OUTPUT THIS VARIABLE + JMS OUTVAR + JMP TFUDGE-1 +VARADR, +DOLIST, 0 /PROCESS A LITERAL LIST + TAD I DOLIST /GET LIST START + DCA ENTRY + ISZ DOLIST + TAD I DOLIST + DCA TYPE /GET TYPE BITS + ISZ DOLIST + TAD I DOLIST + ISZ DOLIST + DCA LSIZE /GET LITERAL SIZE + CDF 10 +DLLOOP, TAD I ENTRY /GET NEXT ENTRY + SNA + JMP DLRETN /NO MORE + DCA ENTRY + TAD ENTRY + DCA X10 /ADDRESS OF TYPE WORD + TAD TYPE /PUT IN TYPE + DCA I X10 + TAD X10 /SAVE THIS ADDR + DCA X11 + TAD LSIZE /SIZE OF LITERAL + DCA TEMP +LITLUP, CDF + JMS I QOTAB + CDF 10 + TAD I X10 + CDF + JMS I QONUMBR + JMS I QCRLF + ISZ TEMP + JMP LITLUP + CDF 10 + TAD LITNUM /SAVE LITERAL NUMBER + DCA I X11 + TAD LSIZE /INCREMENT LITERAL NUMBER + CIA + TAD LITNUM + DCA LITNUM + JMP DLLOOP +DLRETN, CDF + JMP I DOLIST +TEMPS, 243;2000;TMPSIZ;2415;2000 +TMPSIZ, 1;TMPBLK+1 +LSIZE, +COMVAR, 0 /REMOVE COMMON VARS FROM ST + TAD I TYPE + AND (4400 /ALSO ASF NAMES + SNA CLA + JMP I COMVAR + JMS I (UNHOOK + JMP TFUDGE-1 +LITRL2, TEXT '#LIT' +COMMON, TEXT 'COMMON' + PAGE + / SYMBOL TABLE PROCESSING ROUTINES + +TYPRTN, 0 /PROCESS ENTIRE SYMBOL TABLE + TAD I TYPRTN /GET ROUTINE ADDRESS + DCA ROUTNE + ISZ TYPRTN + TAD O301 /START WITH 'A' + DCA BUCKET + TAD M32 /BUCKET COUNT + DCA BCNT +TYPLP2, TAD BUCKET /GET START OF NEXT LIST + TAD ALM301 +TYPLUP, DCA OENTRY /SAVE OLD ENTRY ADDRESS + CDF 10 +TFUDGE, TAD I OENTRY /GET ADDR OF NEXT ENTRY + SNA + JMP EOL /0 MEANS END OF LIST + DCA ENTRY + IAC + TAD ENTRY /ADDR OF TYPE WORD + DCA TYPE + JMS I ROUTNE /CALL ROUTINE + TAD I OENTRY /CONTINUE DOWN THE LIST + JMP TYPLUP +EOL, ISZ BUCKET /DO NEXT LETTER + ISZ BCNT + JMP TYPLP2 + CDF + JMP I TYPRTN /END OF PASS + BCNT=ARG1 +COMNAM, 0 /OUTPUT A COMMON BLOCK + TAD I TYPE /IS THIS A COMMON BLOCK NAME + TAD M111 + SZA CLA + JMP I COMNAM /NO + CDF + JMS I QOPCDE + COMMON + CDF 10 + JMS I (UNHOOK /REMOVE THE COMMON + /BLOCK FROM S.T. + TAD ENTRY + JMS I QOUTNAM /OUTPUT NAME + JMS I QCRLF + ISZ TYPE /GET TO COMMON STUFF POINTER +CNLOOP, CDF 10 + TAD I TYPE /GET ADDR OF NEXT HUNK + /OF COMMON + SNA + JMP TFUDGE /END OF IT + DCA TYPE + TAD TYPE /GET A WORKING POINTER + DCA X10 + TAD I X10 /GET COUNT + SNA + JMP CNLOOP /NONE IN THIS HUNK + CIA + DCA TEMP2 + TAD I X10 /GET VARIABLE ADDRESS + JMS I (OUTVAR /OUTPUT IT + CDF 10 + ISZ TEMP2 + JMP .-4 /DO NEXT ONE FROM THIS HUNK + JMP CNLOOP /DO NEXT HUNK +O301, 301 +M32, -32 +ALM301, ALIST-301 +M111, -111 +ROUTNE, +ADFLIT, 0 /OUTPUT ARG DF LITS + TAD ARGLST /ANY ARGS + SNA + JMP I ADFLIT + DCA X10 + CDF 10 + TAD I ARGLST /NUMBER OF ARGS + CIA + DCA NARGS +ADFLUP, CDF 10 + TAD I X10 /GET ARG ADDR + IAC + DCA TEMP /TYPE WORD ADDR + TAD I TEMP /GET TYPE INFO + DCA TEMP2 + CLL CML RTR + AND I TEMP /DIMENSIONED ? + SNA CLA + JMP NDADFL /NO + ISZ TEMP /ADDR OF DIM INFO + CLL CML RTL + TAD I TEMP /ADDR OF MAGIC NUMBER + DCA TEMP + TAD I TEMP /MAGIC NUMBER + DCA MQ /PREPARE TO MULTIPLY + ISZ TEMP /ADDR OF LITERAL GOES HERE + TAD LITNUM /STICK IN THE ADDRESS + IAC + DCA I TEMP + CDF + JMS I (ONUM /OUTPUT A ZERO + TAD TEMP2 /LOOK AT TYPE + JMS I QSKPIRL /SKIP ON I R L + TAD (3 /DOUBLE OR COMPLEX + TAD (3 + JMS I QMUL12 + TAD AC /OUTPUT 2 WORD LITERAL + JMS I (ONUM + TAD MQ + JMS I (ONUM +NDADFL, ISZ NARGS + JMP ADFLUP + JMP I ADFLIT +RDOVLY, JMS I (7607 /READ IN OVERLAY + NPOVLY + OVRLAY +PASS2O, 0 + JMP I (INERR + TAD I (VOVER /CHECK VERSION OF OVERLAY + TAD VERS + SZA CLA + JMP I (VERROR /ERROR, MIXED VERSIONS + JMP I (EOSTMT /START PASS2 PROPER + PAGE + FIELD 1 + *5000 + 0 /THIS IS THE START OF + /THE ERROR MESSAGE LIST + /WHICH WORKS BACKWARDS + /OS/8 F4 COMPILER CODE SKELETONS + + MAC=-6 + NEGSGN=-5 + FLDAA2=-4 + FLDAA1=-3 + ENTERE=-2 + ENTERF=-1 +CGTCOD, ATX;DD1;STARTD;0;FLDA;DP2C1;STARTF;0 +AGTCOD, JAC;0;0 +ASNCOD, ENTERF;FLDA;DP3C0;JA;DP4;0 +ERCODE, EXTERN;XUE;TRAP3;XUE;0 +A0FN, EXTERN;XFIX;JSA;XFIX;0 +A0SD, ALN;D0 +SD, STARTD;0;0 +SE, STARTE;0;0 +SF, STARTF;0;0 +MPTR0, ENTERF;FLDAA1;FSTA;XBASE;0 +MPTR3, ENTERF;FLDAA2;FSTA;XBASP3;0 +JADP2, JA;DOT;0 +DOFIN0, ENTERF;FLDAA1;FADD;-2 +ASTOR, FSTA;-1;0 +DOFIN1, ENTERF;FLDAA1;FADD;-2;MAC+A0FN;FSTA;-1;0 +LDASTD, FLDAA1;STARTD;0;0 + /CHALK UP ONE FOR PAL8 +ATX1, ATX;DD1;0 +LXM1C2, LDX;M1C2;STARTD;0;0 +FVAL, FVI-1;FVI-1;FVC-1;FVD-1;FVI-1 +FVI, FLDA;XVAL;0 +FVC, STARTE;0;FLDA;XVAL;MAC+PCAC;0 +FVD, STARTE;0;FLDA;XVAL;0 +RTNCOD, RTNX+MAC;JA;XRTN;0 +PAZCOD, ENTERF;EXTERN;XPAUSE;JSR;XPAUSE;0 +STPCOD, RTNX+MAC;EXTERN;XEXIT;JSR;XEXIT;0 +GIRL1, ENTERF;FLDAA1;ENTERE;0 +GIRL2, ENTERF;FLDAA2;ENTERE;0 +SEGCAC, +GCAC, ENTERE;EXTERN;CAC;FLDA;CAC;0 +PCAC, EXTERN;CAC;FSTA;CAC;0 +GC1C2, ENTERE;FLDAA1;EXTERN;CAC;FSTA;CAC;FLDAA2;0 +GC1, ENTERE;FLDAA1;0 +GC2, ENTERE;FLDAA2;0 +JSACEQ, EXTERN;CEQ;JSA;CEQ;NEGSGN;0 +JSACNG, EXTERN;CNEG;JSA;CNEG;0 +JSACAD, EXTERN;CADD;JSA;CADD;0 +JSACSB, EXTERN;CSUB;JSA;CSUB;0 +JSACML, EXTERN;CMUL;JSA;CMUL;0 +JSACDV, EXTERN;CDIV;JSA;CDIV;0 + / ADD, SUBTRACT, MULTIPLY, AND DIVIDE SKELETONS +ADDTBL, AS-1;AS+2;AS+4 + AX-1;AX+2;AX+5 + AS-1;AD-1;AS+4 + ASC-1;ASC+2;ASC+3 + ASD-1;ASD+7;ASD+10 + ACS-1;ACS+4;ACS+6 + ADS-1;ADS+3;ADS+7 + 0 + FNEG;0 +AS, FADD;-1;0 + ENTERF;FLDAA1 + FADD;-2;0 + JSACNG+MAC +AX, GC1+MAC;JSACAD+MAC;0 + GC1C2+MAC;JSACAD+MAC;0 + GC2+MAC;JSACAD+MAC;0 +AD, ENTERE;FLDAA1;FADD;-2;0 + JSACNG+MAC +ASC, GIRL1+MAC;JSACAD+MAC;0 + GIRL1+MAC + ENTERE;PCAC+MAC;GC2+MAC;JSACAD+MAC;0 + FNEG;0 +ASD, FSTA;XDPTMP;ENTERF;FLDAA1;ENTERE;FADD;XDPTMP;0 + GIRL1+MAC + ENTERE;FADD;-2;0 + JSACNG+MAC +ACS, ENTERE;PCAC+MAC;GC1+MAC;JSACAD+MAC;0 + GC1+MAC;PCAC+MAC + GIRL2+MAC;JSACAD+MAC;0 + FNEG;0 +ADS, ENTERE;FADD;-1;0 + GIRL2+MAC;FADD;-1;0 + FSTA;XDPTMP;GIRL2+MAC;FADD;XDPTMP;0 +SUBTBL, AS-3;SS-1;SS+1 + AX-2;SX-1;SX+2 + AS-3;SDBL-1;SS+1 + ASC-2;SSX-1;SSX + ASD-3;SSD-1;SSD + ACS-2;SCS-1;SCS+1 + ADS-3;SDS-1;SDS5-1 + 0 +SS, ENTERF;FLDAA1 + FSUB;-2;0 +SX, GC1C2+MAC;JSACSB+MAC;0 + GC2+MAC;JSACSB+MAC;0 +SDBL, ENTERE;FLDAA1;FSUB;-2;0 +SSX, GIRL1+MAC + ENTERE;PCAC+MAC;GC2+MAC;JSACSB+MAC;0 +SSD, GIRL1+MAC + ENTERE;FSUB;-2;0 +SCS, GC1+MAC;PCAC+MAC + GIRL2+MAC;JSACSB+MAC;0 +SDS, GIRL2+MAC;FNEG;0;FADD;-1;0 +SDS5, FSTA;XDPTMP;GIRL2+MAC;FNEG;0;FADD;XDPTMP;0 +MULTBL, M1-1;M1+3-1;M1+5-1 + M4-1;M4+3-1;M4+6-1 + M1-1;M7-1;M7+2-1 + M8-1;M8+3-1;M8+4-1 + M11-1;M11+6-1;M11+7-1 + M14-1;M14+5-1;M14+7-1 + M18+1-1;M18-1;M18+5-1 + 0 +M1, FMUL;-1;0 + ENTERF;FLDAA1 + FMUL;-2;0 +M4, GC1+MAC;JSACML+MAC;0 + GC1C2+MAC;JSACML+MAC;0 + GC2+MAC;JSACML+MAC;0 +M7, ENTERE;FLDAA1;FMUL;-2;0 +M8, GIRL1+MAC;JSACML+MAC;0 + GIRL1+MAC + ENTERE;PCAC+MAC;GC2+MAC;JSACML+MAC;0 +M11, FSTA;XDPTMP;GIRL1+MAC;FMUL;XDPTMP;0 + GIRL1+MAC + ENTERE;FMUL;-2;0 +M14, ENTERE;PCAC+MAC;GC1+MAC;JSACML+MAC;0 + GC1+MAC;PCAC+MAC + GIRL2+MAC;JSACML+MAC;0 +M18, GIRL2+MAC + ENTERE;FMUL;-1;0 + FSTA;XDPTMP;GIRL2+MAC;FMUL;XDPTMP;0 +DIVTBL, 1;D2-1;D2+2-1 + 1;D5-1;D5+3-1 + 1;D7-1;D7+2-1 + 1;D9-1;D10-1 + 1;D12-1;D13-1 + 1;D14-1;D15-1 + 1;D16-1;D17-1 + 0 +D2, ENTERF;FLDAA1 + FDIV;-2;0 +D5, GC1C2+MAC;JSACDV+MAC;0 + GC2+MAC;JSACDV+MAC;0 +D7, ENTERE;FLDAA1;FDIV;-2;0 +D9, GIRL1+MAC +D10, ENTERE;PCAC+MAC;GC2+MAC;JSACDV+MAC;0 +D12, GIRL1+MAC +D13, ENTERE;FDIV;-2;0 +D14, GC1+MAC;PCAC+MAC +D15, GIRL2+MAC;JSACDV+MAC;0 +D16, GIRL2+MAC;FSTA;XDPTMP;FLDAA1;FDIV;XDPTMP;0 +D17, FSTA;XDPP6;GIRL2+MAC;FSTA;XDPTMP;FLDA;XDPP6;FDIV;XDPTMP;0 + / RELATIONALS AND LOGICALS SKELETON TABLES +EQTABL, EQ1-1;EQ2-1;EQ3-1 + EQ4-1;EQ5-1;EQ6-1 + EQ1-1;EQ7-1;EQ3-1 + EQ8-1;EQ9-1;EQ10-1 + EQ11-1;EQ12-1;EQ13-1 + EQ14-1;EQ15-1;EQ16-1 + EQ17-1;EQ18-1;EQ19-1 + EQ1-1;EQ2-1;EQ3-1 +EQ1, FSUB;-1;0 +EQ2, ENTERF;FLDAA1 +EQ3, FSUB;-2;0 +EQ4, GC1+MAC;JSACEQ+MAC;0 +EQ5, GC1C2+MAC;JSACEQ+MAC;0 +EQ6, GC2+MAC;JSACEQ+MAC;0 +EQ7, ENTERE;MAC+EQ2+1;0 +EQ8, GIRL1+MAC;JSACEQ+MAC;0 +EQ9, GIRL1+MAC +EQ10, ENTERE;PCAC+MAC;GC2+MAC;JSACEQ+MAC;0 +EQ11, MAC+ASD-2;0 +EQ12, GIRL1+MAC +EQ13, MAC+SSD+1;0 +EQ15, GIRL2+MAC +EQ14, ENTERE;PCAC+MAC;GC1+MAC;JSACEQ+MAC;0 +EQ16, GIRL2+MAC;JSACEQ+MAC;0 +EQ18, GIRL2+MAC +EQ17, MAC+ADS-2;0 +EQ19, MAC+SDS5;0 + LETABL, LE1-1;LE2-1;LE3-1 + 0;0;0 + LE1-1;LE4-1;LE3-1 + 0;0;0 + LE11-1;LE12-1;LE13-1 + 0;0;0 + LE17-1;LE18-1;LE19-1 + 0 +LE1, FSUB;-1;NEGSGN;0 +LE2, ENTERF;FLDAA1 +LE3, FSUB;-2;0 +LE4, ENTERE;MAC+LE2+1;0 +LE11, MAC+ASD-2;0 +LE12, GIRL1+MAC +LE13, MAC+SSD+1;0 +LE18, GIRL2+MAC +LE17, MAC+ADS-2;0 +LE19, MAC+SDS5;0 + ANDTBL, 0;0;0 + 0;0;0 + 0;0;0 + 0;0;0 + 0;0;0 + 0;0;0 + 0;0;0 + M1-1;M1+3-1;M1+5-1 +ORTABL, 0;0;0 + 0;0;0 + 0;0;0 + 0;0;0 + 0;0;0 + 0;0;0 + 0;0;0 + AS-1;AS+2;AS+4 + EQVTBL, 0;0;0 + 0;0;0 + 0;0;0 + 0;0;0 + 0;0;0 + 0;0;0 + 0;0;0 + EQ1-1;EQ2-1;EQ3-1 + /CONVERSION-FOR-STORE-OPERATOR SKELETONS +STRTBL, SIIM-1;SIRM-1;SICM-1;SIDM-1;SIIM-1 + SIIA-1;SIRA-1;SICA-1;SIDA-1;SIIA-1 + SIIM-1;SIIM-1;SRCM-1;SRDM-1;SIIM-1 + SIIA-1;SIIA-1;SRCA-1;SRDA-1;SIIA-1 + SCIM-1;SCIM-1;SCCM-1;SCDM-1;SCIM-1 + SCIA-1;SCIA-1;SCCA-1;SCDA-1;SCIA-1 + SDIM-1;SDIM-1;SDCM-1;SDDM-1;SDIM-1 + SDIA-1;SDIA-1;SDCA-1;SDDA-1;SDIA-1 + SLIM-1;SLIM-1;SLCM-1;SLDM-1;SIIM-1 + SLIA-1;SLIA-1;SLCA-1;SLDA-1;SIIA-1 +SIIM, ENTERF;FLDAA2 +SIIA, 0 +SIRM, ENTERF;FLDAA2 +SIRA, A0FN+MAC;0 +SICM, GC2+MAC;PCAC+MAC +SICA, ENTERF;GCAC+1+MAC;A0FN+MAC;0 +SRCM, GC2+MAC;PCAC+MAC +SRCA, ENTERF;GCAC+1+MAC;0 + SCCM=GC2 +SCIM, ENTERF;FLDAA2 +SCIA, ENTERE;0 + SCCA=GCAC +SLIM, ENTERF;FLDAA2 +SLIA, JSA;LTRNE;0 +SLCM, GC2+MAC;ENTERF;SLIA+MAC;0 +SLCA, ENTERF;GCAC+1+MAC;SLIA+MAC;0 +SIDM, ENTERE;FLDAA2 +SIDA, ENTERF;SIRA+MAC;0 +SRDM, ENTERE;FLDAA2 +SRDA, ENTERF;0 +SCDM, ENTERE;FLDAA2 +SCDA, FSTA;TEMPN;ENTERF;FLDA;TEMPN;ENTERE;0 +SDIM, ENTERF;FLDAA2 +SDIA, ENTERE;0 +SDCM, ENTERE;FLDAA2;PCAC+MAC +SDCA, ENTERF;GCAC+1+MAC;ENTERE;0 +SDDM, ENTERE;FLDAA2 +SDDA, 0 +SLDM, ENTERE;FLDAA2 +SLDA, JSA;LTRNE;0 + / UNARY MINUS AND .NOT. SKELETONS +NEGTBL, NIM-1;NIM-1;NCM-1;NDM-1;0 + NIA-1;NIA-1;NCA-1;NIA-1;0 +NIM, ENTERF;FLDAA1 +NIA, FNEG;0;0 +NCM, GC1+MAC;PCAC+MAC;JSACNG+MAC;0 + NCA=JSACNG +NDM, ENTERE;NIM+1+MAC;0 +NOTTBL, 0;0;0;0;NOTM-1 + 0;0;0;0;NOTA-1 +NOTM, ENTERF;FLDAA1 +NOTA, 0 + / ARITHMETIC IF SKELETONS +AIFTBL, GI-1;GI-1;GC-1;GD-1;GI-1 /V3C + GI+1;GI+1;GC+1;GD+1;GI+1 /V3C +GI, ENTERF;FLDAA1;0 +GC, GC1+MAC;0 +GD, ENTERE;FLDAA1;0 + /OPERATOR DISPATCH TABLE + +XPUSH, PUSH + ADD + SUB + MUL + DIV + EXP + NOT + NEG + GE + GT + LE + LT + DNA + OR + EQ + NE + XOR + EQV + PAUZE + DPUSH + BINRD1 + FMTRD1 + WCLOSE /** + DARD1 + BINWR1 + FMTWR1 + WCLOSE + DAWR1 + DEFFIL + ASFDEF + ARGS + EOSTMT + ERROR + RETURN + REWIND + STORE +XEND, END + DEFLBL + DOFINI + ARTHIF +XLOGIF, LIFBGN + DOBEGN + ENDFIL + STOP + ASSIGN + BAKSPC + FORMAT +XGOTO, GOTO + CGOTO + AGOTO + IOLMNT + DATELM + DREPTC + DATAST + ENDELM + PURGE +XLAST, DOSTOR + / EXPONENTIATION TABLE (NOT A STANDARD SKELETON TABLE) +EXPTBL, 1;1111;2;1122;3;1103;4;1104;0;0 /I**D=D + 2;1111;2;1122;3;1103;4;1104;0;0 /R**D=D + 3;0311;3;0322;3;0303;0;0;0;0 + 4;0411;4;0422;0;0;4;0404;0;0 + 0;0;0;0;0;0;0;0;0 + / TYPE MIXING TABLE +TYPMIX, 1;6;2;6;3;17;4;22;0;0 + 2;6;2;6;3;17;4;22;0;0 + 3;25;3;25;3;11;0;0;0;0 + 4;30;4;30;0;0;4;14;0;0 + 0;0;0;0;0;0;0;0;5;33 +RTNX, ENTERF;EXTERN;LTRNE;0 + $ + diff --git a/sw/f4/FRTSRC/pass3.pa b/sw/f4/FRTSRC/pass3.pa new file mode 100644 index 0000000..62dac35 --- /dev/null +++ b/sw/f4/FRTSRC/pass3.pa @@ -0,0 +1,816 @@ +/3 OS/8 FORTRAN (PASS THREE) +/ +/ VERSION 4A PT 16-MAY-77 +/ +/ OS/8 FORTRAN IV COMPILER-PASS 3 +/ +/ BY: HANK MAURER +/ UPDATED BY: R. LARY + M. HURLEY +/ +/ +/COPYRIGHT (C) 1974,1975 BY DIGITAL EQUIPMENT CORPORATION +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ +/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE +/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT +/CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY +/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. +/ +/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER +/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED +/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH +/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. +/ +/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE +/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY +/DIGITAL. +/ +/ +/ +VERSON=4 + / PAGE ZERO STUFF + OUDEVH=7000 /PUT OUDEVH AND OUBUF IN DIFFERENT + INDEVH=6400 + INBUF=6000 + OUBUF=5400 /SEGMENTS, STAN KNOWS WHY + X10=10 + X11=11 + X12=12 + NCHARS=20 + CHAR=21 + TEMP=22 + FILDEV=6 + FILBLK=7 + DEV1CE=173 /THROUGH 177 + DEVH=23 + LINENO=24 + SEVCHR=25 /THROUGH 33 + + +/ OS/8 V3C MAINTENANCE RELEASE FIXES: + +/1. EXTENDED RANGE OF PAGE NUMBERS TO 99 +/2 INTERCHANGED CR/LF FOR HASSINGER +/3 CHANGED VERSION NO. TO 305 +/5. ADDED 'I' TO JMP (OFOO3 +/ +/ +/ CHANGES FOR OS/8 V3D AND OS/78 BY P.T. +/ .CHANGED VERSION NUMBER TO 4A +/ .PUT IN NEW DATE ALGORITHM +/ +/ + /START OF PASS 3 + *400 /DON'T LOAD INTO 0-377 +SPASS3, CDF 10 + TAD I (7666 /GET DATE + DCA TEMP + TAD I LSTFIL /COPY FILE NAME + CDF + DCA I FILLST + ISZ LSTFIL + ISZ FILLST + ISZ OFSIZE + JMP SPASS3 + TAD DEV1CE /FETCH HANDLER FOR OUTPUT FILE + CIF 10 + JMS I (200 /USR IS IN CORE + 1 +OH, OUDEVH+1 /TWO PAGE HANDLER IS OK + JMP I (OFOO3 + CIF 10 + TAD DEV1CE /OPEN THE LISTING FILE + JMS I (200 + 3 +OB, DEV1CE+1 +OS, 0 + JMP I (OFOO3 + TAD OB /SAVE BLOCK NUMBER + DCA OBLOCK + TAD OS + DCA OSIZE /AND SIZE OF HOLE + TAD OH /SAVE HANDLER ADDRESS + DCA DEVH + TAD (NUMS-1 /SET UP NUMBER POINTER + DCA I (NUM + TAD TEMP /GET THE DATE--FOR YEAR ROUTINE + SNA + JMP I (PAJE /NO DATE + AND (7 /MASK OUT ALL BUT YEAR OFFSET BITS + DCA YRTEMP /INCREMENT FROM THE BASE YEAR + DCA TEMP1 /HOLDS THE FIRST DIGIT OF THE YEAR + TAD I (7777 /GET THE DATE EXTENSION BITS + AND (600 /MASK TO GET THE EXTENSION BITS + CLL RTR /ROTATE THEM INTO BIT + RTR /POSITIONS 7 AND 8 + TAD (106 /ADD IN 70---OLD BASE YEAR + TAD YRTEMP /ADD IN THE YEAR OFFSET BITS + /TO FIND THE NEW BASE YEAR +CONVYR, CLL /FIND THE YEAR IN DECIMAL + TAD (-12 /KEEP SUBTRACTING 12 + SNL /ALMOST DONE + JMP SECDIG /FIND THE SECOND DIGIT OF THE YEAR + ISZ TEMP1 /FIND THE FIRST DIGIT OF THE YEAR + JMP CONVYR /TRY AGAIN +SECDIG, TAD (72 /GET THE SECOND DIGIT OF THE YEAR + RTL /AND MAKE IT SIXBIT + RTL + RTL + DCA I (YEAR+1 /PUT IT IN THE PRINT LINE + TAD TEMP1 /GET THE FIRST DIGIT + TAD (5560 /MAKE IT SIXBIT + DCA I (YEAR /PRINT IT + TAD TEMP /GET THE DATE--NOW FIND THE MONTH/DAY + CLL RTR + RAR + AND (777 + DCA TEMP +SIMPLE, TAD TEMP /GET THE DAY + AND (37 + TAD (DAYS-1 /THIS IS THE LAZY WAY + DCA NCHARS + TAD I NCHARS + DCA I (DAY + TAD TEMP /GET THE MONTH + CLL RTR + RTR + AND (36 + TAD (MONTHS-3 + DCA X10 + TAD I X10 + DCA I (MONTH + TAD I X10 + DCA I (MONTH+1 + JMP I (PAJE /WE GOT THE DATE +LSTFIL, 7605 +FILLST, DEV1CE +OFSIZE, -5 +YRTEMP, 0 +TEMP1, 0 + PAGE +PAJE, JMP I (PRHDR /PRINT THE FIRST HEADING + CLL CML RTL /INITIALIZE LINE NUMBER + DCA LINENO + DCA TABCNT /** +RDLUPE, TAD (SEVCHR-1 /SEVEN CHAR BUFFER + DCA X10 + TAD (-6 + DCA NCHARS +RDLOOP, JMS I (ICHAR + JMP RDACHO /ECHO & IGNORE SHORT LINES + TAD (-211 /IS IT A TAB ? + SZA CLA + JMP NOTAB /NO + TAD (-2 + DCA TABCNT /SET POINTER TO DO EXTRA SPACES LATER** + TAD (240 + DCA I X10 /DO A TAB + ISZ NCHARS + JMP .-3 + JMP WHAT /GO LOOK AT THE LINE +NOTAB, TAD CHAR + DCA I X10 /SAVE THE CHAR + ISZ NCHARS + JMP RDLOOP +WHAT, TAD SEVCHR /IS IT A COMMNET + TAD (-303 + SNA CLA + JMP NOISN /YES, NO INTERNAL STMT NUMBER + TAD SEVCHR+5 /IS IT A CONTINUATION ? + TAD (-240 + SZA CLA + JMP NOISN /YES, NO ISN + TAD LINENO /NEITHER OF THESE + JMS I (ONUMBR /PRINT ISN + TAD LINENO /2.01/ PUT LINE NUM + 7421 /2.01/ INTO MQ + CLA /2.01/ CLA IF NO EAE + ISZ LINENO /BUMP LINE NUMBER +NOISN, TAD (211 /TAB + JMS I (OCHAR + TAD (SEVCHR-1 /PRINT FIRST SEVEN + DCA X10 + TAD (-6 + DCA NCHARS + TAD I X10 + JMS I (OCHAR + ISZ NCHARS + JMP .-3 + TAD TABCNT /SEE IF A TAB WAS 1ST + SMA CLA /IF YES,NEED 2 MORE SPACES + JMP NOTTAB + DCA TABCNT /WAS A TAB + TAD (240 + JMS I (OCHAR + TAD (240 + JMS I (OCHAR +NOTTAB, JMS I (ICHAR /PRINT REST OF LINE + JMP ENDLIN + JMS I (OCHAR + JMP .-3 +ENDLIN, JMS I (CRLF /END LINE + JMS I (ERRCHK /CHECK ERROR LIST + JMP RDLUPE /DO NEXT LINE +TABCNT, 0 + +HEADER, TEXT ' FORTRAN IV 4AAAA ' + *.-1 +DAY, 4040 +MONTH, 4040;4040 +YEAR, TEXT ' PAGE ' + *.-1 +PAGENO, TEXT 'ONE' + ZBLOCK 7 /V3C ROOM FOR LARGE PAGE NUMBERS +RDACHO, TAD (211 + JMS I (OCHAR + JMP I (RDECHO + PAGE + TEXT " " +LOS, TEXT "ONE " +NUMS,/ 2427;1740;4040 +/ 2410;2205;0540 +/ 0617;2522;4040 +/ 0611;2605;4040 +/ 2311;3040;4040 +/ 2305;2605;1640 +/ 0511;0710;2440 +/ 1611;1605;4040 +/ 2405;1640;4040 +/ 0514;0526;0516 +/ 2427;0514;2605 + TEXT "TWO@@@@@" + TEXT "THREE@@@" + TEXT "FOUR@@@@" + TEXT "FIVE@@@@" + TEXT "SIX@@@@@" + TEXT "SEVEN@@@" + TEXT "EIGHT@@@" + TEXT "NINE@@@@" + TEXT "TEN@@@@@" + TEXT "ELEVEN@@" + TEXT "TWELVE@@" + TEXT "THIRTEEN" + TEXT "FOURTEEN" + TEXT "FIFTEEN@" + TEXT "SIXTEEN@" + TEXT "SEVENTEEN" + TEXT "EIGHTEEN" + TEXT "NINETEEN" +HIS, TEXT " TWENTY " + *.-1 + TEXT " THIRTY " + *.-1 + TEXT " FORTY " + *.-1 + TEXT " FIFTY " + *.-1 + TEXT " SIXTY " + *.-1 + TEXT "SEVENTY " + *.-1 + TEXT " EIGHTY " + *.-1 + TEXT " NINETY " + *.-1 + TEXT "HUNDRED " + *.-1 +DAYS, 4061;4062;4063;4064;4065;4066;4067;4070;4071 + 6160;6161;6162;6163;6164;6165;6166;6167;6170;6171 + 6260;6261;6262;6263;6264;6265;6266;6267;6270;6271 + 6360;6361 +MONTHS, 5512;0116 /-JAN + 5506;0502 /-FEB + 5515;0122 /-MAR + 5501;2022 /-APR + 5515;0131 /-MAY + 5512;2516 /-JUN + 5512;2514 /-JUL + 5501;2507 /-AUG + 5523;0520 /-SEP + 5517;0324 /-OCT + 5516;1726 /-NOV + 5504;0503 /-DEC + IFZERO .&100 + ENDX, TAD (-601 /2.02/ CLEAR END OF BUFFER + DCA LINENO /2.01/ FOR TV: REASONS + TAD X232 /2.01/ OUTPUT ^Z + JMS I (OCHAR /2.01/ + ISZ LINENO /2.01/ + JMP .-3 /2.01/ + CIF 10 /CLOSE THE OUTPUT FILE + TAD DEV1CE + JMS I (200 + 4 + DEV1CE+1 +FILSIZ, 0 + JMP (OFOO3 + CDF 10 /LOOK AT OPTIONS + TAD I X7643 + CDF +M70, SPA CLA + JMP I (7605 //A MEANS DON'T CHAIN TO RALF + CIF CDF 10 + TAD FILDEV /SET UP RALF INPUT LIST + DCA I (7617 /FILE SIZE AND DEVICE CODE + ISZ (7617 + TAD FILBLK /FILE START + DCA I (7617 + ISZ (7617 /ZERO END OF LIST + DCA I (7617 + TAD I X7643 /IS IT /F (FULL LIST) ? + AND (100 + CIF 0 + SZA CLA /** + JMP LISTIT + CIF 10 + TAD I (7644 + AND (20 /LET /T SWITCH THRU ALSO + SNA CLA + DCA I (7605 /NO, INHIBIT RALF LISTING +LISTIT, CIF 10 + CLA IAC + CDF + JMS I (200 /LOOKUP RALF.SV + 2 + RALFNM +X7643, 7643 + JMP (OFOO3 + TAD .-3 + DCA .+4 + CIF 10 /CHAIN TO RALF + JMS I (200 + 6 +X232, 232 +NCNT, 0 +ONUMBR, 0 + DCA TEMP /OUTPUT ISN IN OCTAL + TAD (-4 + DCA NCNT +OLOOP, TAD TEMP + CLL RTL /ANYONE WHO CAN'T FOLLOW THIS + RAL /SHOULDN'T BE A PROGRAMMER + DCA TEMP + TAD TEMP + RAL + AND (7 + TAD (260 + JMS I (OCHAR + ISZ NCNT + JMP OLOOP + JMP I ONUMBR +CONVRT, 0 /CONVERT TO ASCII AND PRINT + AND (77 + SZA + TAD (-40 + SPA + TAD (100 + TAD (240 + JMS I (OCHAR + JMP I CONVRT +LINECT, -1 /EJECT FIRST TIME +CRLF, PAJE+1 + TAD (215 /CR LF + JMS I (OCHAR + TAD (212 + JMS I (OCHAR + ISZ LINECT + JMP I CRLF + TAD (214 + JMS I (OCHAR +PRHDR, TAD M70 /RESET COUNT + DCA LINECT + TAD (HEADER /COPY HEADER OUT + DCA TEMP +OHDR, TAD I TEMP + CLL RTR + CLL RTR + CLL RTR + JMS CONVRT + TAD I TEMP + JMS CONVRT + TAD I TEMP /END YET ? + ISZ TEMP + AND (77 + SZA CLA + JMP OHDR + TAD (215 /V3C SKIP EXTRA LINE AFTER TITLE + JMS I (OCHAR + TAD (212 /V3C + JMS I (OCHAR /FOR CENTRONICS + JMP PUTNUM /GET NEW PAGE NUMBER + / OS/8 FILE INPUT ROUTINES + PAGE +ICHAR, 0 /READ CHAR FROM INPUT FILE + ISZ INJMP /BUMP THREE WAY UNPACK SWITCH + ISZ INCHCT +INJMPP, JMP INJMP + TAD INEOF /DID LAST READ YEILD END OF FILE ? + SNA CLA + JMP INGBUF /NO, DO ANOTHER READ +GETNEW, JMS INNEWF /OPEN A NEW INPUT FILE + JMP I (ENDX /NO FILE TO OPEN +INGBUF, TAD INCTR /BUMP RECORD COUNTER + CLL IAC + SNL + DCA INCTR /RESTORE IF IT HASN'T OVERFLOWED + SZL + ISZ INEOF /SET END OF FILE SWITCH + JMS I INHNDL /DO THE READ +INCALL, 200 +INBUFP, INBUF +INREC, 0 + JMP INERR /HANDLER ERROR +INBREC, ISZ INREC /BUMP RECORD NUMBER + TAD (-601 /SET CHAR COUNT + DCA INCHCT + TAD INJMPP /RESET THREE WAY JUMP SWITCH + DCA INJMP + TAD INBUFP /RESET BUFFER POINTER + DCA INPTR + JMP ICHAR+1 /GO AGAIN +INERR, ISZ INEOF /EITHER EOF OR BADDIE + SMA CLA + JMP INBREC /END OF FILE, DO NEXT FILE + JMP OFOO3 +INJMP, HLT /3 WAY CHARACTER UUPACK SWITCH + JMP ICHAR1 + JMP ICHAR2 +ICHAR3, TAD INJMPP /RESET JUMP SWITCH + DCA INJMP + TAD I INPTR + AND (7400 /COMBINE THE HIGH ORDER BITS + CLL RTR /OF THE TWO WORDS + RTR + TAD INTMP /TO FORM THE THIRD CHAR + RTR + RTR + ISZ INPTR /BUMP WORD POINTER + JMP ICHAR1+1 /DO SOME COMMON STUFF +ICHAR2, TAD I INPTR /SAVE THE HIGH ORDER BITS + AND (7400 + DCA INTMP /FOR THE THIRD CHAR + ISZ INPTR /GO TO THE SECOND WORD +ICHAR1, TAD I INPTR /GET THE LOW 8 BITS + AND (377 /AND I MEAN ONLY 8 !! + DCA CHAR + TAD CHAR + TAD (-232 /IS IT ^Z (END OF FILE) + SNA + JMP GETNEW /YES, LOOK FOR THE NEXT FILE + TAD (232-212 + SNA + JMP ICHAR+1 /IGNORE LINE FEEDS + TAD (212-215 + SNA + JMP I ICHAR /RETURN ON CARRIAGE RETURN + IAC + SNA CLA + JMP ICHAR+1 /IGNORE FORM FEEDS + TAD CHAR + ISZ ICHAR + JMP I ICHAR /RETURN TO THE CALLING WORLD +INTMP, 0 +INFPTR, 7617 /POINTER TO INPUT FILE LIST +INEOF, 1 +INCHCT, +INNEWF, -1 /FETCH HANDLER FOR NEXT FILE + TAD (INDEVH+1 /THIS IS WHERE IT GOES + DCA INHNDL + CDF 10 + TAD I INFPTR /GET NEXT INPUT FILE INFO + CDF + SNA + JMP I INNEWF /NO MORE FILES + CIF 10 + JMS I INCALL /CALL MONITOR + 1 /FETCH HANDLER +INHNDL, 0 /ENTRY ADDR GOES HERE + JMP OFOO3 + CDF 10 + TAD I INFPTR /GET LENGTH + AND (7760 + SZA /A ZERO HERE MEANS >=256 BLOCKS + TAD (17 /PUT IN SOME MORE BITS + CLL CML RTR + RTR + DCA INCTR /STORE LENGTH OF FILE + ISZ INFPTR + TAD I INFPTR /GET STARTING RECORD NUMBER + DCA INREC + ISZ INFPTR + DCA INEOF /CLEAR EOF FLAG + ISZ INNEWF + CDF + JMP I INNEWF +INCTR, 0 +INPTR, 0 +/PUTNUM, TAD (PAGENO-1 /COPY THE NEW NUMBER +/ DCA X10 +/ TAD I NUM +/ ISZ NUM +/ DCA I X10 +/ TAD I NUM +/ ISZ NUM +/ DCA I X10 +/ TAD I NUM +/ ISZ NUM +/ DCA I X10 +/ JMP CRLF+1 +RDECHO, /KEEP LINES WITH L.T. 6 CHARS OUT OF ISN COLUMN + TAD (SEVCHR-1 + DCA X12 +RDECLP, TAD X12 + CIA + TAD X10 + SNA CLA + JMP ENDLIN /ONLY ECHO WHAT YOU READ + TAD I X12 + JMS I (OCHAR + JMP RDECLP + PAGE +OUDUMP, 0 /BUMP THE DUFFER + TAD OSIZE /ANY ROOM LEFT ? + IAC + SNA + JMP OFOO3 + DCA OSIZE /YES, ITS OK + JMS I DEVH /WRITE + 4200 /CONTROL WORD + OUBUF /BUFFER POINTER +OBLOCK, 0 /BLOCK NUMBER + JMP OFOO3 + ISZ OBLOCK /INCREMENT BLOCK NUMBER + ISZ FILSIZ /AND FILE SIZE + TAD OBLOCK-1 /SET BUFFER POINTER + DCA OUPTR + TAD (-200 /SET DOUBLE WORD COUNT + DCA OUWDCT + JMP I OUDUMP +OCHAR, 0 /OUTPUT A CHAR TO THE RALF INPUT FILE + AND (377 + DCA OUTEMP /SAVE CHAR + KSF /^C TEST + JMP NOSTOP + KRB + AND (177 + TAD (-3 + SNA CLA + JMP I (7605 /YES +NOSTOP, ISZ OUJUMP /BUMP 3 WAY SWITCH +OUJUMP, JMP . + JMP CHAR1 + JMP CHAR2 + TAD OUTEMP /HIGH FOUR BITS GO INTO + CLL RTL /THE HIGH ORDER BITS OF THE + RTL /FIRST WORD OF THE TWO WORD PAIR + AND (7400 /SEE NOTE * BELOW + TAD I OUPOLD /COMBINE WITH OTHER BITS + DCA I OUPOLD + TAD OUTEMP /THE OTHER FOUR BITS OF THIS CHAR + CLL RTR /GO INTO THE HIGH ORDER FOUR + RTR /BITS OF THE SECOND WORD OF THE PAIR + RAR + AND (7400 + TAD I OUPTR + DCA I OUPTR + TAD OUJMP /RESET 3 WAY BRANCH + DCA OUJUMP + ISZ OUPTR /BUMP BUFFER POINTER + ISZ OUWDCT /AND DOUBLE WORD COUNTER + JMP I OCHAR /BUFFER NOT FULL + JMS OUDUMP /DUMP IT + JMP I OCHAR +CHAR2, TAD OUPTR /SAVE FIRST WORD POINTER + DCA OUPOLD + ISZ OUPTR /GO TO SECOND WORD +CHAR1, TAD OUTEMP /STORE CHAR 1 OR 2 + DCA I OUPTR + JMP I OCHAR +OUTEMP, 0 +OUPOLD, 0 +OUPTR, OUBUF +OUJMP, JMP OUJUMP +OUWDCT, -200 +OSIZE, 0 +ERRPTR, 5000 +ERRCHK, 0 + CDF 10 + TAD I ERRPTR /ANY ERRORS FOR THIS LINE + CDF + CMA + TAD LINENO + SZA CLA + JMP I ERRCHK /NO + CLL CMA RAL /BACK UP POINTER + TAD ERRPTR + DCA ERRPTR + TAD ERRPTR + IAC + DCA TEMP + CDF 10 + TAD I TEMP /GET CODE + CDF + CIA + DCA TEMP /SAVE NEGATIVE + TAD (ERRLST-1 + DCA X10 +FIND, TAD I X10 /LOOK FOR ERROR MESSAGE + SZA + TAD TEMP + SNA CLA + JMP .+3 + ISZ X10 + JMP FIND /SKIP POINTER WORD + CLA CMA + TAD I X10 + DCA X10 /POINTER TO MESSAGE +PMLOOP, TAD I X10 /GET TWO CHARS + DCA TEMP + TAD TEMP + RTR + RTR + RTR + JMS CONVRT /PRINT FIRST + TAD TEMP + JMS CONVRT /PRINT SECOND + TAD TEMP + AND (77 /END OF MESSAGE ? + SZA CLA + JMP PMLOOP /NO, LOOP + JMS I (CRLF + JMP ERRCHK+1 /SEE IF ANY MORE FOR THIS LINE +RALFNM, FILENAME RALF.SV + PAGE +X304, 304 +X305, 305 +X7605, 7605 +OFOO3, TAD X304 /FATAL ERROR IN PASS 3 + JMS TTY + TAD X305 + JMS TTY + JMP I X7605 +TTY, 0 /PRINT ON TTY + TLS + TSF + JMP .-1 + CLA + JMP I TTY +/ERROR MESSAGES +ERRLST, 0724;GT + 1124;IT + 0504;ED + 2227;RW + 0317;CO + 0530;EX + 2123;QS + 2114;QL + 1106;IF + 0417;DO + 2316;SN + 2404;TD + 0204;BD + 2224;RT + 2204;RD + 2324;ST + 0314;CL + 1517;MO + 1017;HO + 1515;MM + 2323;SS + 1720;OP + 0123;AS + 0401;DA + 0410;DH + 1514;ML + 0405;DE + 0223;BS + 1424;LT + 1105;IE + 2010;PH + 1513;MK + 1724;OT + 2004;PD + 1524;MT + 0726;GV + 1411;LI + 0420;DP + 0414;DL + 0101;AA + 2306;SF + 0406;DF + 1111;II + 0;SYSERR +SYSERR, TEXT 'UNDEFINED ERROR' +II, TEXT 'ILLEGAL USE OF IF' +GT, TEXT 'BAD GOTO STATEMENT' +RW, TEXT 'BAD READ OR WRITE STATEMENT' +CO, TEXT 'ARGS IN COMMON OR VAR IN TWO COMMONS OR SYNTAX BAD' +IT, TEXT 'BAD IO LIST ELEMENT' +EX, TEXT 'BAD EXTERNAL STMT' +QS, TEXT 'SYNTAX ERROR IN EQUIVALENCE' +QL, TEXT 'VARIABLE IS EQUIVALENCED MORE THAN ONCE' +IF, TEXT 'THIS KIND OF STATEMENT NOT LEGAL AFTER LOGICAL IF' +DO, TEXT 'BAD SYNTAX IN DO OR IMPLIED DO' +SN, TEXT 'NOT LEGAL AS SUBROUTINE NAME' +TD, TEXT 'SYNTAX ERROR IN TYPE STATEMENT' +BD, TEXT 'DIMENSIONS TOO BIG, OR SYNTAX ERROR IN DIMENSION LIST' +ED, TEXT 'ILLEGAL AS DO ENDING STATEMENT' +RT, TEXT 'ATTEMPT TO RE-TYPE A VARIABLE' +RD, TEXT 'ATTEMPT TO RE-DIMENSION A VARIABLE' +ST, TEXT 'INTERNAL COMPILER ABORT NUMBER ONE' +CL, TEXT 'ERROR IN COMPLEX LITERAL' +MO, TEXT 'OPERAND EXPECTED, NONE PRESENT' +HO, TEXT 'HOLLERITH COUNT WRONG, OR MISSING QUOTES' +MM, TEXT 'MISMATCHED PARENTHESIS' +SS, TEXT 'SUBSCRIPT OR ARGUMENT LIST ERROR' +OP, TEXT 'ILLEGAL OPERATOR' +AS, TEXT 'ASSIGN ???' +DA, TEXT 'DATA STATEMENT ?' +DH, TEXT 'HOLLERITH COUNT OR QUOTE ERROR IN DATA STATEMENT' +ML, TEXT 'THIS LINE NUMBER IS ALREADY DEFINED' +DE, TEXT "WRONG WAY TO END A DO LOOP" +BS, TEXT 'ILLEGAL IN BLOCK DATA' +LT, TEXT 'LINE TOO BIG' +IE, TEXT 'INPUT FILE ERROR, TAKEN AS END STATEMENT' +PH, TEXT 'THIS FUNCTION / SUBROUTINE STATEMENT IS UNACCEPTABLE' +MK, TEXT 'YOU MISPELED A KEYWURD' +OT, TEXT 'ILLEGAL OPERAND TYPE FOR THIS OPERATOR' +PD, TEXT 'INTERNAL COMPILER ABORT NUMBER TWO' +MT, TEXT "ILLEGAL VARIABLE TYPE MIXING" +GV, TEXT 'VARIABLE IN ASSIGNED OR COMPUTED GOTO MUST BE INTEGER OR REAL' +LI, TEXT 'EXPRESSION IN LOGICAL IF IS NOT TYPED LOGICAL' +DP, TEXT 'DO PARAMETERS MUST BE INTEGER OR REAL' +DL, TEXT "YOUR DATA AND VARIABLE LISTS ARE OF DIFFERENT LENGTHS" +AA, TEXT 'SUBROUTINES MAY ONLY HAVE SIX ARGUMENTS THAT ARE DIMENSIONED' +SF, TEXT 'BAD STATEMENT FUNCTION' +DF, TEXT 'BAD DEFINE FILE' + PAGEN, 1 + +PUTNUM, ISZ PAGEN /BUMP PAGE NUMBER + TAD PAGEN + TAD (-24 /LT 20? + SMA CLA + JMP OVER19 /YES + TAD (-5 /NO + JMS MOVE /MOVE IN NUMBER +NUM, 0 + PAGENO-1 + TAD NUM + TAD (5 + DCA NUM /PT TO NEXT ONE + JMP I (CRLF+1 + +TENS, 0 +ONES, 0 +KNT, 0 + +OVER19, DCA TENS /CONVERT + TAD PAGEN /PAGE NUMBER TO ONES AND TENS +O1, TAD (-12 /DIVIDE BY TEN + SPA + JMP .+3 + ISZ TENS + JMP O1 + TAD (12 + DCA ONES + TAD TENS + CLL RTL + TAD (HIS-10-1 + DCA HIP /POINT TO HIGH PART + TAD ONES + CLL RTL + TAD ONES + TAD (LOS-5-1 + DCA LOP + TAD (-4 + JMS MOVE +HIP, 0 + PAGENO-1 + TAD (-5 + JMS MOVE +LOP, 0 + PAGENO+4-1 + JMP I (CRLF+1 + MOVE, 0 + DCA KNT + TAD I MOVE + DCA X11 + ISZ MOVE + TAD I MOVE + DCA X12 + ISZ MOVE + TAD I X11 + DCA I X12 + ISZ KNT + JMP .-3 + JMP I MOVE + $ + diff --git a/sw/f4/FRTSRC/pause.ra b/sw/f4/FRTSRC/pause.ra new file mode 100644 index 0000000..76419a4 --- /dev/null +++ b/sw/f4/FRTSRC/pause.ra @@ -0,0 +1,43 @@ +/ +/ VERSION 5A 4-26-77 MH +/ + SECT8 #PAUSE /FORTRAN PAUSE HANDLER + EXTERN #WRITO + EXTERN #RSVO + EXTERN #RENDO + BASE 0 + FSTA PNUM /SAVE ARGUMENT + STARTD + FLDA 0 /GET RETURN ADDRESS + FSTA PAURET + STARTF + TRAP3 #WRITO + JA ZERO + JA PAUFMT + FLDA PNUM /PRINT A MESSAGE "PAUSE N" + TRAP3 #RSVO + TRAP3 #RENDO + TRAP4 OPAUSE /DO ACTUAL PAUSE +PAURET, JA . /RETURN + +OPAUSE, 0 + AND% 0 + AND% 0 /WASTE SOME TIME SO THAT THE LAST + AND% 0 /TWO CHARS OF THE MESSAGE WILL PRINT. + AND% 0 + AND% 0 + ISZ ZERO + JMP OPAUSE+1 +DPAUSE, IOF + KSF + JMP .-1 + KRB + CLA + ION + CDF CIF 0 + JMP% OPAUSE + +PNUM, F 0.0 +ZERO, F 0.0 +PAUFMT, TEXT %(' PAUSE'I6/)% + END diff --git a/sw/f4/FRTSRC/real.ra b/sw/f4/FRTSRC/real.ra new file mode 100644 index 0000000..9fed56c --- /dev/null +++ b/sw/f4/FRTSRC/real.ra @@ -0,0 +1,73 @@ +/ +/ R E A L +/ - - - - +/ +/ A I M A G +/ - - - - - +/ +/ C O N J G +/ - - - - - +/ +/ VERSION 5A 4-27-77 PT +/ +/REAL,AIMAG - ENTER IN COMPLEX,EXIT IN REAL +/CONJG - ENTER + EXIT IN COMPLEX +/ + SECT REAL + JA #REAL + DPCHK + TEXT +REAL + +REALXR, SETX XRREAL + SETB BPREAL +BPREAL, F 0.0 +XRREAL, F 0.0 +ARG, F 0.0 + F 0.0 + ORG 10*3+BPREAL + FNOP + JA REALXR + 0 +REALRT, JA . + BASE 0 +#REAL, SETX XRREAL + LDX 0,2 + LDX 1,0 +COMM, STARTD + FLDA 10*3 + FSTA REALRT + FLDA 0 + SETB BPREAL + BASE BPREAL + LDX 1,1 + FSTA BPREAL + FLDA% BPREAL,1 + FSTA BPREAL + STARTE + FLDA% BPREAL /GET ARG + FSTA ARG + JXN REAM,0 + STARTF + FLDA ARG+3 + FNEG + FSTA ARG+3 + STARTE + FLDA ARG + FSTA #CAC + JA REALRT +REAM, STARTF +CON, FLDA ARG,2 + JA REALRT + EXTERN #CAC +/ + ENTRY AIMAG +AIMAG, SETX XRREAL + LDX 1,2 + LDX 1,0 + JA COMM +/ + ENTRY CONJG +CONJG, SETX XRREAL + LDX 0,2 + LDX 0,0 + JA COMM + diff --git a/sw/f4/FRTSRC/realtm.ra b/sw/f4/FRTSRC/realtm.ra new file mode 100644 index 0000000..b721892 --- /dev/null +++ b/sw/f4/FRTSRC/realtm.ra @@ -0,0 +1,284 @@ +/ A-D CLOCKED, BUFFERED SAMPLING ROUTINE +/ +/ VERSION 5A 4-27-77 PT +/ + ADSK=6534 + ADRB=6533 + ADST=6532 + ADLM=6531 + ADLE=6536 + ADCL=6530 + CLZE=6130 + ESF=4 + LINC=6141 + PDP=2 + SAM=100 + CLEN=6134 + FIELD1 SAMPLE + 0 /INTERRUPT TIME AD SAMPLER + IFNSW 8 < + JMS LNCSAM /INITIATE SAMPLE +NEXTCH, ISZ SAMINS /UPDATE SAM INST FOR NEXT CHAN + JMS LNCSAM /SAM AND INITIATE NEXT CHANNEL + > + TAD SAMPTR /SAVE THE OLD SAM BUFFER POINTER + DCA OLDPTR + TAD BUFFLD /AND THE FIELD + DCA OLDFLD + ISZ SAMPTR /BUMP BUFFER POINTER + JMP FLDOK /FIELD IS OK + TAD BUFFLD /BUMP FIELD + TAD L10 + DCA BUFFLD +FLDOK, ISZ SAMCNT /BUMP BUFFER COUNT + JMP BUFFLD /NOT END OF BUFFER + TAD ARRAY+2 /RESET POINTER TO START OF BUFFER + DCA SAMPTR + TAD FLDBUF /RESET BUFFER FIELD + DCA BUFFLD + TAD BUFSIZ /RESET COUNT + DCA SAMCNT +BUFFLD, HLT /GET FIELD OF NEW ADB STOP CODE + TAD% SAMPTR /IS THIS THE SAM STOP CODE ? + TAD M3776 /(ILLEGAL AS A SAMPLE) + SZA CLA + JMP NOERR + ISZ TOOFAS /SET TOO FAST SWITCH +SAMPLD, CDF 10 + DCA% XCLINT+1 /STOP SAMPLING + JMP% SAMPLE +NOERR, CLL CMA RAR /SET ADB STOP CODE + DCA% SAMPTR +OLDFLD, HLT /GET TO FIELD OF SAMPLE + IFSW 8 < + ADRB /READ SAMPLE + > + IFNSW 8 < + TAD SAMTMP /GET PREVIOUSLY READ SAMPLE + > + DCA% OLDPTR /INTO BUFFER + ISZ NPOINT+2 /ANY MORE SAMPLES + SKP /YES + ISZ NPOINT+1 /MORE THAN 7777 ? + SKP /YES + JMP SAMPLD /NO + ISZ NCHANL+1 /ANY MORE CHANNELS TO SAMPLE ? + JMP NEXTCH /YES GO START SAMPLING + TAD CSTART+2 /STARTING CHANNEL + IFSW 8 < + ADLM + > + IFNSW 8 < + DCA SAMINS + JMS LNCSAM /SET CHANNEL TO START + /IN CASE CLOCK INITIATED + > + TAD NCHANL+2 /NUMBER OF CHANNELS + DCA NCHANL+1 /INTO COUNTER + CDF 10 + JMP% SAMPLE + IFSW 8 < +NEXTCH, ADST /SAMPLE NEXT CHANNEL + ADSK /WAIT FOR SAMPLE + JMP .-1 + JMP SAMPLE+1 + > + IFNSW 8 < +LNCSAM, 0 /LINC SAM SUBROUTINE + LINC +SAMINS, SAM 0 /SAMPLE AND SELECT NEXT CHANNEL + PDP + DCA SAMTMP /SAVE IT + JMP% LNCSAM + > +ADSETU, 0 /SET UP ROUTINE + DCA TOOFAS /CLEAR TOO FAST SWITCH + TAD ARRAY+1 /GET FIELD OF BUFFER + AND L7 + CLL RTL + RAL + TAD CDF0 + DCA FLDBUF + TAD FLDBUF + DCA BUFFLD /SAVE IN SAMPLER CODE + TAD ARRAY+2 /SET SAMPLER BUFFER POINTER + IAC + DCA SAMPTR + TAD LENGTH+2 /SIZE OF BUFFER + CLL RAL + TAD LENGTH+2 /TIMES THREE + DCA BUFSIZ /SAVE IT + TAD BUFSIZ /SET INITIAL COUNT + IAC + DCA SAMCNT + TAD NCHANL+2 /SET CHANNEL COUNT + DCA NCHANL+1 + IFSW 8 < + CLA CMA /STOP THE CLOCK + CLZE + CLA + ADCL /CLEAR AD LOGIC JUST IN CASE + TAD L300 /SET AD ENABLE BITS + ADLE + TAD CSTART+2 /STARTING CHANNEL NUMBER + ADLM + > + IFNSW 8 < + CLEN /STOP THE CLOCK + TAD CSTART+2 /SET UP INITIAL SAM INSTRUCTION + TAD L100 + DCA CSTART+2 + TAD CSTART+2 + DCA SAMST /STARTING SAM + TAD SAMST /ALSO INTERRUPT TIME SAM + DCA SAMINS + TAD L100 /SET FAST SAM BIT + IOF /TURN OFF INTERRUPTS IN LINC MODE + LINC /ENTER LINC MODE + ESF +SAMST, SAM 0 /SET INITIAL SAM CHANNEL + PDP + ION + CLA + > + CIF CDF + JMP% ADSETU +BASEX, FNOP +M3776, -3776 +L10, 10 +SAMPTR, +ARRAY, 0;0;0 +LENGTH, 0;0 +BUFSIZ, 0 +SAMCNT, +CSTART, 0 +OLDPTR, 0;0 +SAMTMP, +NCHANL, 0;0;0 +NPOINT, 0;0;0 +FLDBUF, +XCLINT, ADDR #CLINT + IFSW 8 < +L300, 300 + > + IFNSW 8 < +L100, 100 + > +SAMXR, 0;0 +TOOFAS, 0 + ORG 10*3+BASEX + 0 + JA NAME+3 + 0 +SAMRTN, JA . +CDF0, CDF +L7, 7 + SECT REALTM + BASE 0 + STARTD + FLDA 30 /GET RETURN ADDR + FSTA SAMRTN + FLDA 0 /GET ARG POINTER + BASE BASEX + SETB BASEX + SETX SAMXR + FSTA NPOINT /SAVE ARG POINTER + FCLA + EXTERN #CLINT + FSTA #CLINT /STOP ANY SAMPLING NOW! + LDX 1,1 + FLDA% NPOINT,1 /GET BUFFER ADDRESS + FSTA ARRAY + FLDA% NPOINT,1+ /GET ADDR OF LENGTH + FSTA LENGTH + FLDA% NPOINT,1+ /ADDR OFHANNEL START + FSTA CSTART + FLDA% NPOINT,1+ /ADDR OF # CHANNELS + FSTA NCHANL + FLDA% NPOINT,1+ /ADDR OF NUMBER OF POINTS + FSTA NPOINT + FLDA ARRAY /CREATE SETX INS + FADD STXMJA + FSTA BUFSTX + FSTA ADBSTX /AND SAVE IT IN TWO PLACES + STARTF + FLDA% LENGTH /INTEGERIZE AND NEGATE SOME ARGS + FNEG + ALN 0 + FSTA LENGTH + FNORM + ATX 1 /SET BUFFER COUNT + FLDA% CSTART /GET STARTING CHANNEL + ALN 0 + FSTA CSTART + FLDA% NCHANL + FNEG + ALN 0 + FSTA NCHANL + FLDA% NPOINT + FNEG + ALN 0 + FSTA NPOINT + LDX -1,2 /SET UP FOR BUFFER CLEAR + FCLA +CLRBUF, FSTA% ARRAY,2+ + JXN CLRBUF,1+ + TRAP4 ADSETU /SET UP AD STUFF + FLDA LENGTH /RE-GET BUFFER SIZE + FNORM + ATX 1 /BUT NOW ITS TIMES THREE + FLDA STPCOD /STORE STOP CODES + FSTA% ARRAY /INTO FIRST 3 WORD + STARTD + FLDA SAMADR /SET UP SAMPLER INTERRUPT HANDLER + FSTA #CLINT + STARTF + JA SAMRTN /RETURN +NAME, TEXT +RTMADB+ +SAMADR, ADDR SAMPLE +STPCOD, 3776;3777;0 +STXMJA, 1100-1030;0 +L2047, F 2047. +L511, F 511. + ENTRY ADB +ADB, BASE 0 /FETCH SAMPLE FROM BUFFER + STARTD + FLDA 30 /SAVE REUTRN + FSTA SAMRTN + SETB BASEX + SETX SAMXR + BASE BASEX + JXN SPEEDK,2 /CLOCK TOO FAST + FLDA ADBSTX /SAVE OLD SETX + FSTA OLDSTX + FADD L1 /ADD ONE TO IT + FSTA ADBSTX /AND SAVE IT BACK + JXN NORINQ,1+ /END OF BUFFER ? + FLDA BUFSTX /YES, RESTART + FSTA ADBSTX + FLDA LENGTH /RESET COUNT + ATX 1 +NORINQ, STARTF +ADBSTX, SETX 0 /SET XR0 TO NEXT SAMPLE +WAIT, XTA 0 /GET THE NEXT SAMPLE + FSUB L2047 /IS IT THE STOP CODE + JEQ WAIT /YES + XTA 0 /NO, FETCH THE SAMPLE + LDX 3776,0 /SET SAMPLE STOP CODE +OLDSTX, SETX 0 /SET XR0 TO PREVIOUS STOP CODE + LDX 0,0 /NOW ZERO IT + JA SAMRTN /RETURN +SPEEDK, EXTERN #WRITO /USE FORTRAN I/O + TRAP3 #WRITO /TO WRITE A MESSAGE + JA TTYUNT /ON THE TTY + JA MESSAG + EXTERN #RENDO + TRAP3 #RENDO /CLOSE THE RECORD + LDX 0,2 /KILL TOO FAST SWITCH + JA SAMRTN /RETURN FROM ADB +TTYUNT, F 0. +MESSAG, TEXT '(" SAMPLING TOO FAST")' +BUFSTX, SETX 0 +L1, 0;1 + END + diff --git a/sw/f4/FRTSRC/rfcv.ra b/sw/f4/FRTSRC/rfcv.ra new file mode 100644 index 0000000..48c509b --- /dev/null +++ b/sw/f4/FRTSRC/rfcv.ra @@ -0,0 +1,49 @@ +/ +/ VERSION 5A 4/26/77 MH +/ + SECT #RFCV /READ FORMATTED COMPLEX VARIABLE + ENTRY #WFCV + EXTERN #RFSV + EXTERN #WFSV + JA START + DPCHK + TEXT "#CIO " +RETN, FNOP + FNOP + SETB BP + JA .+3 +BP, 0;0;0 +CVAL, 0;0;0;0;0;0 + ORG BP+30 + 0;JA RETN + 0 +GOBAK, JA . +START, BASE 0 + STARTD + 0210 + FSTA GOBAK,0 + STARTF + SETB BP + BASE BP + JSR #RFSV + FSTA CVAL + JSR #RFSV + FSTA CVAL+3 + STARTE + FLDA CVAL + JA GOBAK + BASE 0 +#WFCV, FSTA CVAL,0 + STARTD + 0210 + FSTA GOBAK,0 + SETB BP + BASE BP + STARTF + FLDA CVAL + JSR #WFSV + FLDA CVAL+3 + JSR #WFSV + JA GOBAK + END + diff --git a/sw/f4/FRTSRC/rfdv.ra b/sw/f4/FRTSRC/rfdv.ra new file mode 100644 index 0000000..b864b16 --- /dev/null +++ b/sw/f4/FRTSRC/rfdv.ra @@ -0,0 +1,30 @@ +/DOUBLE PRECISION BINARY AND DIRECT ACCESS I/O +/FOR OS/8 FORTRAN +/ +/ VERSION 5A 4-26-77 MH +/ +/I/O CALLS ARE: +/ TRAP3 #RSVO ALL SINGLE PRECISION I/O +/ TRAP3 #RSVO ALL DOUBLE PRECISION FORMATTED I/O +/ JSR #RFDV DOUBLE PRECISION BINARY + DIRECT ACCESS I/O +/ TREATED AS 2 SINGLE PRECISION FORMATTED JOBS + SECT #RFDV + EXTERN #RSVO + BASE 0 + STARTE + FSTA FTEMP3 /SAVE 6 WDS FOR A WRITE + STARTD + FLDA 0 /RETURN ADDRESS + FSTA RFDVRT /SAVE FOR EXIT + STARTF + FLDA FTEMP3 /PASS 1ST 3 WDS FOR A WRITE + TRAP3 #RSVO /DO THE READ OR WRITE + FSTA FTEMP3 /SAVE 1ST 3 WDS FROM A READ + FLDA FTEMP3+3 /GET 2ND 3 WDS FOR A WRITE + TRAP3 #RSVO /DO THE READ OR WRITE + FSTA FTEMP3+3 /SAVE 2ND 3 WDS FROM A READ + STARTE + FLDA FTEMP3 /GET ALL 6 WORDS FOR A READ +RFDVRT, JA . + +FTEMP3, E 0.0 diff --git a/sw/f4/FRTSRC/rsw.ra b/sw/f4/FRTSRC/rsw.ra new file mode 100644 index 0000000..d824a4f --- /dev/null +++ b/sw/f4/FRTSRC/rsw.ra @@ -0,0 +1,141 @@ +/ +/ VERSION 5A 4-26-77 MH +/ +/THE FOLLOWING IS A SET OF 8 MODE (RALF TYPE) +/ROUTINES THAT ENABLE PDP 12(8) HARDWARE OPTIONS +/THESE ROUTINES ARE CALLABLE AT THE FORTRAN LEVEL +/THE FOLLOWING OPTIONS ARE SUPPORTED: +/ +/ 1 READ A BIT IN THE RIGHT SWITCHES +/ 2 READ A BIT IN THE LEFT SWITCHES +/ 3 READ A SENSE SWITCH +/ 4 READ AN EXTERNAL LEVEL +/ 5 OPEN OR CLOSE A RELAY +/ +/IF THE REQUESTED BIT OR SWITCH IS SET THE +/SUBROUTINE RETURNS WITH THE CALLERS ARG SET TO +/A 1,OTHERWISE IT IS SET TO A 0 +/ +/ + SECT8 RSW + INDEX P17 + BASE 0 + JSA SETUP /CHECK ONE RSW BIT + TRAP4 DORITE /CALL 8 MODE ROUT USER + /ARG IS IN FPP XR3 +CONT, STARTD /ANSWER IS IN XR3 + FLDA% 0,XR2 /GET PTR TO CALLER ANS + FSTA 3 + STARTF + XTA XR3 + FSTA% 3 /GIVE ANS TO CALLER +GOBAK, FLDA 30 /RTN TO CALLER + JAC + ENTRY LSW +LSW, JSA SETUP /READ 1 LSW BIT + TRAP4 DOLEFT /CALL 8MODE ROUT + JA CONT + ENTRY SSW +SSW, STARTD /READ A SENSE SWITCH + FLDA ANSNSI + JA ESSW + ENTRY ROPEN +ROPEN, STARTD /OPEN A RELAY + FLDA ABCLI +ERCLOS, FSTA MASK /PLANT A BCLI OR BSEI IN + /8 MODE ROUTINE + JSA SETUP + TRAP4 RELAY + FLDA 30 + JAC + ENTRY EXTLVL +EXTLVL, STARTD /READ AN EXTERNAL LEVEL + FLDA ANSXL +ESSW, FSTA LSKP /PLANT SXLI OR SNS IN + JSA SETUP /8 MODE ROUTINE + TRAP4 DOSXL + JA CONT + ENTRY RCLOSE +RCLOSE, STARTD /CLOSE A RELAY + FLDA ABSEI + JA ERCLOS +SETUP, 0;0 /GET ARGS AND SETUP RTN + STARTD + SETX P17 + FLDA% 0,XR1 /GET PTR TO 1ST USER ARG + FSTA 3 + STARTF + FLDA% 3 /USER ARG TO FAC + ATX XR3 /PUT IN XR FOR 8 MODE + JA SETUP + DORITE, 0 /READ RIGHT SWITCHES + LAS + DCA MASK + JMS SETBIT /GET REQUESTED BIT + AND MASK /MASK RSW + SZA CLA /IF BIT IS SET,SET XR3=1 + ISZ XR3 + CIF CDF /RTN TO RTS + JMP% DORITE +DOLEFT, 0 /READ LEFT SWITCHES + TAD DOLEFT + DCA DORITE + IOF + 6141 /LINC + 517 /LSW + 2 /PDP + ION + JMP DORITE+2 +DOSXL, 0 /READ SENSE SWITCH + /OR EXTERNAL LEVEL + TAD XR3 /=SSW OR LVL TO DO + AND P17 + TAD LSKP + DCA LSKP + CLL CML /SET LNK=COND MET + IOF + 6141 +LSKP, 0 /=SNS I N OR SXL N + 261 /IF SKP FAILS THEN COND + /IS MET SO ROTATE LNK + /INTO AC(11) (261=ROL I 1) + 2 /PDP + ION + DCA XR3 /SAVE ANSWER + CIF CDF + JMP% DOSXL /RTN TO RTS +RELAY, 0 /OPEN A RELAY + TAD CONT /=6 + JMS SETBIT /GO SET RELAY BIT + DCA MASK+1 + IOF + 6141 + 15 /GET RELAYS +MASK, 0 /BCL I OR BSE I + 0 /SET OR CLR 1 RELAY BIT + 14 /ATR PUT RELAYS BACK + 2 + ION + CLA + CIF CDF + JMP% RELAY +SETBIT, 0 /COME HERE TO POSITION + TAD XR3 /BIT IN AC ACCORDING TO + /C(AC)+XR3 + CMA CLL CML /ROTATE BIT INTO POSITION + DCA XR3 /XR3 MUST=0 UPON EXIT + RAR /ROTATE LINK UNTIL + ISZ XR3 /XR3=0 + JMP .-2 + JMP% SETBIT /RTN WITH AC SET +ABCLI, 1560 /BCL I +ABSEI, 1620 /BSE I +P17, 17 /FPP XR0 +XR1, 1 +XR2, 2 +XR3, 0 +ANSXL, 400 /SXL + 261 /ROL I 1 +ANSNSI, 460 /SNS I + 261 + diff --git a/sw/f4/FRTSRC/rtl.pa b/sw/f4/FRTSRC/rtl.pa new file mode 100644 index 0000000..13c43ea --- /dev/null +++ b/sw/f4/FRTSRC/rtl.pa @@ -0,0 +1,1753 @@ +/FORTRN 4 RTS LOADER +/ +/ VERSION 5A PT 16-MAY-77 +/ +/ +/ +/ +/ +// +/ +/ +/ +/ +/COPYRIGHT (C) 1974, 1975 +/DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. +/ +/ +/ +/THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A +/SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU- +/SION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANT OTHER +/COPIES THEREOF, MAY NOT BR PROVIDED OR OTHERWISE MADE AVAILABLE +/TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO +/AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE +/SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC. +/ +/ +/THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT +/NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL +/EQUIPMRNT COROPATION. +/ +/DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS +/SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. +/ +/ +/ +/ +/ +/ + /FORTRAN 4 RTS LOADER - RL +/WITH DOUBLE PRECSION - MKH +/AND RTS-8 SUPPORT - R. LARY + +/LAST EDITED 5/21/74 +/ +/ CHANGES FOR OS/78 AND OS/8 V3D BY P.T. 5/1/77 +/ .FIXED THE D AND B FORMAT (FPP) BUG +/ .FIXED FIELD OVERFLOW BUG(NO. OF ASTERISKS PRINTED) +/ + +/PAGE 0 LOCATIONS FOR RTS LOADER + +X0= 10 +X1= 11 +X2= 12 +X3= 13 + +HADR= 20 +UNIT= 21 +HCWORD= 22 +MXFLD= 23 +HLDADR= 24 +HGHFLD= 25 +HGHADR= 26 +RLTMP= 27 +HDIFF= 30 +CFLAG= 31 + +/DURING MOST OF THE LOAD OPERATION A SECTION OF FIELD 0 RTS +/IS MOVED UP INTO FIELD 1 AND THE VACATED AREA OF FIELD 0 IS USED +/TO RUN THE COMMAND DECODER AND TO ACCUMULATE DEVICE HANDLERS. + +/*K* THEREFORE, IF THE RTS LOADER IS TO MODIFY ANY CODE BETWEEN +/"F0HBEG" AND "F0HEND" IT MUST MODIFY IT IN FIELD 1 IN THE "F0TO" AREA. + +F0HBEG= 0 +F0HEND= 3000 +F0HSAV= 7000 /400 WORDS WHERE DEVICE HANDLERS ARE TEMPORARILY SAVED + /SO THAT THEY WON'T INITIALIZE THEMSELVES WRONG + /RTS LOADER TABLES + + *2000 + +IONTBL, ZBLOCK 100 /INTERRUPT ENABLE TABLE - LOW BIT ONLY +HCWTBL, ZBLOCK 14 /HANDLER CONTROL WORD - ONE PER PAGE (LOTSA WASTE) +TFTABL, ZBLOCK 45 /TENTATIVE FILE SAVE TABLE +DVTEMP, ZBLOCK 17 /HANDLER ENTRY TABLE SAVE AREA + + *IONTBL+5 /RK8 / RK8E + 1 + *IONTBL+16 /DTA + 1 + *IONTBL+6 /RF08 IN 4 FLAVORS + 1;1;1;1 + *IONTBL+0 /TTY + 2 /FORMS CONTROL ON TTY + *IONTBL+4 /LPT + 2 /FORMS CONTROL ON LPT + *IONTBL+23 + 1 + *IONTBL+25 + 1 + PAGE + /RTS LOADER + +RTSLDR, JMS I (RTINIT + JMS I (RTINIT /INITIALIZE WHETHER CHAINED TO OR NOT + JMP NOCD +LICD, JMS I (200 + 5 + 1404 /.LD DEFAULT EXTENSION +NOCD, JMS I (TSTSWS /TEST /E,/P,/V AND /H SWITCHES + TAD I (7617 + SNA + JMP LICD + AND (17 + JMS I (GETHAN /GET HANDLER TO LOAD WITH + 0 /DON'T PUT IT ANYWHERE + TAD I (7620 + DCA LIBLK + JMS I (SVHND /COPY HANDLER TO AVOID BAD INITIALIZATION + CIF 0 + JMS I HLDADR + 0100 +LHDR, QLHDR +LIBLK, 0 + JMP LDIOER + JMS I (RSTHND /RESTORE VIRGIN COPY OF HANDLER + CDF 0 + TAD HADR + DCA I (OVHND + TAD HCWORD + DCA I (OVHCDW + TAD (QUSRLV-1 + DCA X0 + AC7776 + TAD I LHDR + SZA CLA /VERIFY LOADER IMAGE INPUT + JMP NOTLI /GOOD THING WE CHECKED! + TAD DPFPP + TAD I (QDPFLG /CHECK IF TRYING TO USE D.P. WITHOUT OPTION + SMA CLA + JMP .+3 + JMS I (RLERR /YES - PRINT WARNING MESSAGE + NODPMS /BUT LET THE FOOL GO ON + /SET UP RTS TABLES FROM LOADER IMAGE + + CDF 0 + TAD (OVLYTB-1 + DCA X1 + TAD (-10 + DCA RLTMP +OVRELP, TAD I X0 + DCA I X1 /MOVE USER OVERLAY INFO INTO SWAP TABLE, + TAD I X0 + DCA I X1 + TAD I X0 + TAD LIBLK /RELOCATING THE BLOCK NUMBERS + DCA I X1 + TAD I X0 + DCA I X1 + ISZ RLTMP + JMP OVRELP + TAD I (QRTSWP + AND (7770 /TURN THE LOADER INITIAL SWAP WORD + DCA I (STSWAP+2 + TAD I (QRTSWP /INTO A DUMMY SWAP WORD AND A JUMP WORD + AND (7 /SO THAT WE CAN HALT BETWEEN + TAD (JA /LOADING AND STARTING USERS PROGRAM. + DCA I (STJUMP + TAD I (QRTSWP+1 + DCA I (STJUMP+1 + TAD I (QHGHAD + DCA HGHFLD + CLA IAC + TAD HGHFLD + CMA + DCA I (FCNT + TAD I (QHGHAD+1 + DCA HGHADR + JMS I (GETFIL /GET USER I/O FILES IF ANY + TAD I (OS8DAT /SALT AWAY OS/8 DATE WORD + DCA I (VDATE-F0HBEG+F0TO + STL CLA + 6141 /TEST IF WE ARE ON A PDP-12 + 0261 /ROL I 1 - PUTS LINK IN AC11 + 0002 /PDP + DCA I (V8OR12+1-F0HBEG+F0TO + JMS I (MOVE + CDF 10 + SPSTRT-1 /MOVE SPECIAL /P START CODE TO LOC 200 + CDF 10 + 200-F0HBEG+F0TO-1 /(RELOCATED 200, THAT IS) + -3 + JMP I (MOVCOR + +DPFPP, 3777 /0 IF D.P. FPP AVAILABLE + NOTLI, JMS I (RLERR + NOLI + JMP LICD + +LDIOER, JMS I (RLERR + LIOEMS + CDF CIF 0 + JMP I (7605 + PAGE + /FIGURE OUT CORE LIMITS AND WRITE OUT PG 17600 + +MOVCOR, TAD I (HTOP + TAD HDIFF /GET BOTTOM OF HANDLER AREA + CIA + CLL /LENGTH OF HANDLER AREA IN AC + TAD HGHADR + SZL /TRICKY CODE - IF (L,AC)=0, AC GETS -1 + STA /IF (L,AC) =0XXXX, AC GETS 0 + SNA CLA /IF (L,AC) =1XXXX, AC GETS 1 + STL STA /THERE OUGHTA BE A SHORTER WAY - + RAL /I'D APPRECIATE HEARING ONE. + TAD HGHFLD /USE MAGIC NUMBER TO ADJUST HGHFLD + CIA /BEFORE WE COMPARE IT TO TOP-OF-CORE + TAD MXFLD + SPA CLA + JMP TOOBIG /ALL THAT WORK FOR NOTHING! + TAD MXFLD + CLL RTL + RAL + TAD (CDF + DCA HCDF /PREPARE TO TRANSFER THE HANDLERS + JMS I (MOVE /BEFORE WE MOVE THE HANDLERS WE SHOULD WRITE + CDF 10 /OUT PAGE 17600 AND THE RTS CLEANUP CODE + TFTABL-1 /SINCE THE HANDLERS MAY OVERLAY THEM. + CDF 10 /SO FIRST MOVE THE TENTATIVE FILE TABLE + 7600-1 /INTO PAGE 17600 WHERE IT'S SAFE. + -45 + CIF 0 + JMS I (7607 + 4210 + 7400 + 37 /SUITABLE SCRATCH BLOCK + JMP SYSERR + TAD HDIFF + TAD (F0HEND /CHANGE HDIFF FROM AN OFFSET + DCA HDIFF /TO THE FIRST LOC ABOVE THE HANDLERS. + /SHUFFLE CORE AROUND AND START UP RTS + +HLOOP, STA + TAD HDIFF /WE HAVE TO MOVE THE HANDLERS IN A COCKEYED + DCA HDIFF /WAY SINCE WE MIGHT BE PARTIALLY SWAPPING + CDF 0 /CORE BETWEEN FIELD 0 (THE HANDLERS) AND + STA /FIELD 1 (WHERE WE SAVED FIELD 0) IN 8K SYSTEMS. + TAD HPTR1 + DCA HPTR1 + STA + TAD HPTR2 + DCA HPTR2 + TAD I HPTR1 +HCDF, HLT /MOVE A HANDLER WORD FROM FIELD 0 + DCA I HDIFF /TO FIELD N + CDF 10 + TAD I HPTR2 /MEANWHILE RESTORE FIELD 0 + CDF 0 + DCA I HPTR1 /FROM FIELD 1 + ISZ HMCT + JMP HLOOP /DO MORE THAN WE HAVE TO - IT CAN'T HURT + CDF CIF 0 + TAD (5606 + DCA I (7605 /SET UP OS/8 RETURN SEQUENCE TO TRAP TO RTS + TAD (PDPXIT + DCA I (7606 /AS RANDOM RESTARTS COULD BE FATAL. + FPICL /RE-INITIALIZE FPP (IF ANY) + FPCOM /CLEAR APT POINTER FIELD BITS (IF FPP) + CLA IAC + 6654 /LOAD PRINTER BUFFER ON ANALEX PRINTER + SZA CLA /IS ANALEX PRESENT? + JMP I (FPSTRT /NO - START UP + DCA I (LPTEST /IF ANALEX TAKE OUT LPT INTERNAL HANDLER +LP6652, 6652 /ALSO CLEAR ALL ANALEX FLAGS + DCA I (LPTSNA + 6662 /CLEAR BUFFER ON ANALEX + TAD (6651 + DCA I (LPTERR /REPLACE LP08 ERROR CODE BY ANALEX + TAD LP6652 /TO AVOID HANGING ON ANALEX POWER OFF. + DCA I (LPTERR+2 + JMP I (FPSTRT + +TOOBIG, JMS I (RLERR + TOOMCH +OS8RTN, CDF CIF 0 + JMP I (7605 + +SYSERR, JMS I (RLERR + SYSMSG + JMP OS8RTN + +HPTR1, F0HEND +HPTR2, F0TO+F0HEND-F0HBEG +HMCT, F0HBEG-F0HEND + /MOVE ROUTINE + +MOVE, 0 /GENERAL MOVE SUBROUTINE + CDF 10 + CLA + TAD MOVE + DCA X2 + TAD I MOVE + DCA FRMFLD + TAD I X2 + DCA X3 + TAD I X2 + DCA TOFLD + TAD I X2 + DCA X1 + TAD I X2 + DCA MVC +FRMFLD, HLT + TAD I X3 +TOFLD, HLT + DCA I X1 + ISZ MVC + JMP FRMFLD + CDF 10 + JMP I X2 +MVC, 0 + +HNDERR, JMS I (RLERR + TOMNYH + JMP OS8RTN + PAGE + /INITIALIZATION + +RTINIT, 0 + ISZ RTINIT /SKIP RETURN + JMS I (BAKTST /SEE IF WE'RE RUNNING IN BACKGROUND UNDER RTS-8 + CIF 0 + JMS I (CORE + DCA MXFLD + CLA IAC + JMS I (GETION /GET ION BIT FOR SYS HANDLER + DCA I (HCWTBL+13 /SAVE IT + SWAB /SET EAE MODE TO B (IF 8/E) + CLA IAC +EAEKIL, SHL /ZERO THIS LOCATION TO INHIBIT EAE + CLA IAC /LOW ORDER BITS 01 + TAD (-2 + SNA CLA /TEST FOR 8/E EAE + JMS I (MOVEAE /YES - SUBSTITUTE PACKAGES + TAD (APT + FPST /START FPP ON "STARTE;FEXIT" + JMP NOFPP /DIDN'T START + JMS I (MOVE + CDF 10 + FPPINT-1 /THE FPP HANDLER AND D.P. I/O PKG IS IN THE + CDF 0 /SAME LOCATIONS IN FIELD 1 AS THE + FPPINT-1 /FPP INTERPRETER IN FIELD 0. + -1000 /COUNT FOR DBL PREC SPACE + FPRST /FPP HAD BETTER BE DONE BY NOW!! + AND (4 /GET D.P. STATUS BIT + SNA CLA + JMP NOFPP /NO DOUBLE PRECISION + DCA I (DPFPP /SET FLAG TO INDICATE D.P. AVAILABLE + CDF 0 + TAD (DFMT + DCA I (DF /ENABLE D FORMAT + TAD (BFMT + DCA I (BF /AND B FORMAT + CDF 10 + NOFPP, JMS I (MOVE +RICDF0, CDF 0 + F0HBEG-1 + CDF 10 + F0TO-1 /MOVE LOWER F0 INTO F1 FOR SAFEKEEPING + F0HBEG-F0HEND + CDF 0 + TAD I (OSJSWD /GET OS/8 STATUS WORD + AND (6374 /FORCE BITS ON INDICATING NON-RESTARTABLE JOB + TAD (1003 /AND DESTRUCTIVE CALLS TO CD AND USR + DCA I (OSJSWD /MEANWHILE FORCING "BATCH SAVED" BIT OFF + TAD I (7612 + TAD (-3 /CHECK FOR IN-CORE TD8E'S + SZA CLA + JMP NOTDSY + TAD MXFLD + CLL RTL + RAL + TAD RICDF0 + DCA TD8EFG /SET TD8E FLAG WHICH IS ALSO CDF + TAD I (7642 + AND (70 + TAD RICDF0 /GET THE FIELD WE'RE COMING FROM + DCA TD8EFL + TAD TD8EFG + IAC + JMS I (TDSET /REDO THE CDF'S IN F0 + JMS I (MOVE +TD8EFL, CDF 20 + 7577 +TD8EFG, 0 + 7577 + -174 /SPARE BATCH PARAMETERS IN TOP FIELD + TAD MXFLD /SET FLAG IN CLEANUP ROUTINE + DCA I (TDEXFG /TO RESTORE TD8E HANDLER TO FIELD 2 +NOTDSY, CDF 10 + TAD MXFLD + TAD (-7 + SNA /32K? + JMP TAKCAR /YES - UNIQUE PROBLEMS + TAD (6 + SNA CLA /8K? + JMP ONLY8K /YES - IGNORE BATCH & TD8E CRAP + JMS I (GBFLG /GET BATCH FLAG + TAD TD8EFG + SNA CLA /IF NO BATCH OR TD8E'S, +ONLY8K, TAD (200 /USE ALL OF THE LAST FIELD. +STOHDF, TAD (-F0HEND-200 + DCA HDIFF /OTHERWISE USE ONLY UP TO 7600 + JMP I RTINIT + TAKCAR, JMS I (GBFLG /GET BATCH FLAG + SNA CLA + JMP NO32KB /NO BATCH - USE UP TO 77400 (TD8E ROM) + TAD (6 /BATCH - USE UP TO 67600 + DCA MXFLD + JMP STOHDF +NO32KB, TAD TD8EFG + SNA CLA /IF IN-CORE TD8E'S + TAD (7600 /LIMIT IS 77600 ELSE 77400 + JMP STOHDF + PAGE + GETHAN, 0 /GET HANDLER SUBROUTINE + AND (17 + DCA UNIT + DCA H1 + TAD UNIT + JMS I (200 + 12 /INQUIRE +H1, 0 + NOP /ERROR RETURN ALWAYS SKIPPED + TAD H1 + SNA + JMP NOTLDD /NOT IN CORE - MUST LOAD + JMS HCWTBA /IN CORE +GHEXIT, TAD I HCWPTR /GET CONTROL WORD FOR HANDLER PAGE + DCA HCWORD + TAD HLDADR + DCA HADR /ASSUME HANDLER PERMENANTLY RESIDENT + TAD (-4 + AND HCWORD + SNA CLA /WERE WE RASH? + JMP RESHAN /NO + TAD HADR + AND (177 + TAD (HPLACE /YES - I APOLOGIZE + DCA HADR +RESHAN, TAD I GETHAN /GET DSRN NUMBER + SNA + JMP I GETHAN /NO DSRN NUMBER + CLL RTL + RAL + TAD I GETHAN + TAD (DSRN-12 + DCA X0 /XR POINTS TO DSRN ENTRY + CDF 0 + TAD HADR + DCA I X0 /SEE PG 0, FLD 0 FOR DSRN FORMAT + TAD HCWORD + TAD CFLAG /THE C BIT REVERSES THE FORMS CTL BIT ON THIS FILE + AND (7773 /KILL ANY OVERFLOW + DCA I X0 + TAD HGHFLD + CLL RTL + RAL + TAD HGHADR + DCA I X0 /SAVE BUFFER ADDRESS, FIELD + TAD HGHADR + DCA I X0 /INITIALIZE WORD POINTER + TAD HGHADR + TAD (400 + SNA + ISZ HGHFLD /BUMP DOUBLEWORD BUFFER ADDRESS + DCA HGHADR + AC7775 + DCA I X0 /INITIALIZE CHAR CTR + CDF 10 + JMP I GETHAN /RETURN + /LOAD A NON-RESIDENT HANDLER + +NOTLDD, JMS GH + CLA IAC + JMS GH /TRY 1-PAGE AND THEN 2-PAGE ASSIGN + HLT /ARRRGHHHH!!! + +GH, 0 + DCA TPFLG + TAD HTOP + TAD (7600 /BUMP HANDLER CEILING DOWN + SNA + JMP I (HNDERR /CAN'T PUT HANDLER IN PAGE 0 + DCA HTOP + TAD TPFLG + TAD HTOP + DCA GHADR + TAD UNIT + JMS I (200 + 1 /FETCH HANDLER +GHADR, 0 + JMP I GH /FAILED! + TAD GHADR /SAVE ACTUAL LOAD ADDRESS + JMS HCWTBA /INDEX INTO HCW TABLE + TAD GHADR + AND (7600 + TAD HDIFF + DCA GHADR /SAVE RELOCATED HANDLER PAGE ADDRESS + TAD MXFLD /PUT ADDR IN BITS 0-3 AND FIELD IN BITS 6-8 + CLL RTL + RAL + TAD GHADR + DCA GHADR + TAD UNIT + JMS I (GETION /ION BIT INTO BIT 11, FORMS CTL BIT INTO BIT 10 + TAD GHADR + DCA I HCWPTR /STORE POINTER FOR THIS PAGE + JMP GHEXIT + HCWTBA, 0 + DCA HLDADR + TAD HLDADR + AND (7600 + CLL RTL + RTL + RTL /GET PAGE NUMBER + TAD (HCWTBL-24 + DCA HCWPTR /SAVE POINTER INTO TABLE + JMP I HCWTBA + +HTOP, F0HEND +HCWPTR, 0 +TPFLG, 0 + +SPSTRT, RELOC 200 / /P STARTUP CODE + SWAB /MAKE SURE EAE IS IN MODE B + JMP I .+1 /EXECUTES AT 200 + FPSTRT /START UP IN FLAG CLEARING CODE + RELOC + PAGE + /ROUTINE TO ACCEPT FILE SPECIFICATIONS + +GETFIL, 0 + CDF 10 + TAD I (OS8SWS-1 + SPA CLA /ALTMODE MEANS NO MORE SPECS + JMP I GETFIL +GETFCD, JMS I (SPMDCD /CALL CD IN SPECIAL MODE + TAD I (7600 + STL CIA + SNA /OUTPUT FILE? + TAD I (7605 + SNA /IN OR OUT FILE? + TAD I (OS8SWS+3 /NEITHER - HOW ABOUT INTERNAL HANDLER? + SNA CLA + JMP GETFIL+1 /NONE OF THE ABOVE + RAR /LINK MAGICALLY TELLS DIRECTION + DCA DIR + DCA DSRNUM + TAD I (OS8SWS+2 + AND (777 /SWITCHES 1-9 + SNA + JMP NONUM + CLL RTL +DNUMLP, ISZ DSRNUM + RAL + SMA + JMP DNUMLP /TRANSLATE SWITCH INTO NUMBER + TAD DIR /** AC IS NEGATIVE ** + SPA CLA + TAD (5 + TAD (7600 + DCA FPTR /POINT TO FILE UNIT + TAD I FPTR + SNA + JMP INTHND /NO FILE - GET HANDLER FROM INTERNAL LIST + JMS I (GETHAN /GET HANDLER - XR10 POINTS INTO DSRN +DSRNUM, 0 /DSRN ENTRY NUMBER + TAD DIR + STL RTL /GENERATE 2 OR 3 (LOOKUP OR ENTER) + DCA LKPNTR + TAD I FPTR /GET UNIT AND REQUESTED BLOCK COUNT (IF ENTER) + ISZ FPTR /BUMP POINTER SO IT POINTS TO THE FILE NAME + DCA FUNIT /SAVE UNIT NUMBER A SEC + TAD I FPTR /WATCH OUT FOR NULL FILE NAMES + SNA CLA /AS THEY WILL FAIL ON LOOKUPS + JMP NONAME /ON OUTPUT-ONLY NON-DIRECTORY DEVICES + JMS I (SVHND /SAVE HANDLER + TAD FUNIT + JMS I (200 +LKPNTR, 0 /LOOKUP OR ENTER +FPTR, 0 /FILE NAME +FUNIT, 0 /GETS LENGTH + JMP FILERR /SOMETHING NOT KOSHER + JMS I (RSTHND /RESTORE VIRGIN COPY OF HANDLER + STDSRN, TAD FPTR + CDF 0 + DCA I X0 /SAVE STARTING BLOCK + DCA I X0 /RELATIVE BLOCK + TAD FUNIT + SNA + IAC /FUDGE NON-DIRECTORY DEVICES VERY LARGE + CIA /TURN NEGATIVE COUNT TO POSITIVE + DCA I X0 /LENGTH + TAD X0 + DCA FPTR /SAVE PTR TO LENGTH WORD + CDF 10 + TAD DIR + SMA CLA /TENTATIVE FILE? + JMP GETFIL+1 + TAD FPTR /YES - STORE POINTER TO LENGTH WORD OF DSRN + DCA I TFPTR /IN TENTATIVE FILE TABLE ENTRY + JMS I (MOVE + CDF 10 + 7600-1 + CDF 10 +TFPTR, TFTABL /SAVE FILE NAME AND UNIT IN + -5 /TENTATIVE FILE TABLE + TAD TFPTR + TAD (6 + DCA TFPTR /BUMP PTR TO NEXT 6-WORD ENTRY + JMP GETFIL+1 + NONUM, JMS I (RLERR + NONMSG + JMP GETFCD +FILERR, JMS I (RLERR + FILMSG + JMP GETFCD + +DIR, 0 + +NONAME, DCA FPTR + DCA FUNIT /ZERO BLOCK # AND LENGTH + JMP STDSRN /USE ENTIRE DEVICE AS FILE + +INTHND, STA + TAD I (OS8SWS+3 + AND (3 /ONLY USE LOW ORDER 2 BITS OF NUMBER + TAD (IHTBL + DCA HADR /SAVE PTR INTO TABLE OF INTL HANDLERS + TAD DSRNUM + CLL RTL + RAL + TAD DSRNUM /MULTIPLY DSRN NUMBER BY 9 + TAD (DSRN-11 /ADD TABLE BASE + DCA DSRNUM + TAD I HADR + CDF 0 + DCA I DSRNUM + ISZ DSRNUM + AC7776 + TAD CFLAG /DEPENDING ON THE C FLAG, + CIA + DCA I DSRNUM /DISABLE OR ENABLE FORMS CONTROL + JMP GETFIL+1 + PAGE + TSTSWS, 0 /ROUTINE TO TEST CD SWITCHES E AND H + TAD I (OS8SWS + AND (20 + CDF 0 + SNA CLA /TEST FOR /H SWITCH + JMP .+3 + TAD (HLT + DCA I (HLTNOP /SET TO HALT BEFORE STARTING PROGRAM + CDF 10 + TAD I (OS8SWS+1 + AND (4 + SNA CLA /TEST FOR /V SWITCH + JMP .+3 /NO + JMS I (RLERR /YES - PRINT VERSION NUMBER MESSAGE + XVERMS + TAD I (OS8SWS + AND (200 + CDF 0 + SZA CLA /TEST FOR /E SWITCH + ISZ I (ERRFLG /MAKE USER ERRORS NON-FATAL + CDF 10 /(USER ERROR = MISSING SUBROUTINE, ETC) + TAD I (OS8SWS+1 + AND (400 + CDF 0 + SNA CLA /TEST FOR /P SWITCH + JMP .+3 /NO, PRAISE BE! + TAD (SKP /GIVE THE DUMMY WHAT HE WANTS + DCA I (HLTNOP + CDF 10 + TAD I (OS8SWS + RTL + SMA CLA + AC0002 + DCA CFLAG /SAVE C FLAG IN PAGE0 + JMP I TSTSWS + +MOVEAE, 0 + TAD (EFFNOR /SUBSTITUTE A POINTER TO THE EAE NORMALIZE + CDF 0 /ROUTINE FOR THE POINTER TO THE NON-EAE + DCA I (NORMX /NORMALIZE ROUTINE + JMS I (MOVE + CDF 10 + FPPKG-1 /THE EAE PKG IS IN THE SAME PAGE IN FIELD 1 + CDF 0 + FPPKG-1 /AS THE NON-EAE PKG IN FIELD 0 + -600 + JMS I (MOVE + CDF 0 /SUBSTITUTE FAST FIX AND FLOAT + EFXFLT-1 + CDF 0 + EAEFIX-1 + -FXFLTC + JMP I MOVEAE + SPMDCD, 0 /SUBR TO DO A SPECIAL MODE COMMAND DECODE + JMS I (MOVE + CDF 10 + OS8DVT-1 + CDF 10 + DVTEMP-1 /MOVE OS/8 DEVICE HANDLER TABLE + -17 /SINCE C.D. CLEARS IT AND WE ARE USING IT + TAD I (HTOP /GET LOWEST HANDLER LOADED + RAL + SZL SPA CLA /DID WE LOAD ANY BELOW 02000? + JMP .+4 /NO + CDF 0 + ISZ I (OSJSWD /YES - MAKE CD CALLS DESTRUCTIVE + ISZ I (OSJSWD + CDF 10 + JMS I (200 + 5 /COMMAND DECODE + 5200 /SPECIAL MODE - WROUGHT WITH PERIL + 0 /DON'T CLEAR TENTATIVE FILES + JMS I (MOVE + CDF 10 + DVTEMP-1 + CDF 10 + OS8DVT-1 + -17 /MOVE DEVICE HANDLER TABLE BACK + JMS TSTSWS /CHECK FOR /E, /H, /P + JMP I SPMDCD + +IHTBL, PTR;PTP;LPT;TTY /INTERNAL HANDLER TABLE + PAGE + GETION, 0 + TAD (OS8DCB-1 + DCA GMADR + TAD I GMADR /GET DCB WORD + CLL RTR + RAR + AND (77 /INDEX INTO TABLE + TAD (IONTBL /WHICH INDICATES IF HANDLER CAN EXECUTE + DCA GMADR /WITH INTERRUPTS ON + TAD I GMADR /ION BIT INTO BIT 11, FORMS CONTROL INTO BIT 10 + JMP I GETION + +GBFLG, 0 + CDF 0 + TAD I (7777 /SPECIAL FLAGS LOC + CDF 10 + RTL + CLA RAL + JMP I GBFLG + +SVHND, 0 /ROUTINE TO SAVE HANDLER IN F1 + JMS GMADR /GET MOVE FROM ADDRESS + JMP I SVHND /NO HANDLER TO MOVE + DCA SVMOVE + JMS I (MOVE + CDF 0 +SVMOVE, 0 + CDF 10 + F0HSAV-1 + -400 + JMP I SVHND + +RSTHND, 0 /ROUTINE TO RESTORE HANDLER FROM F1 + JMS GMADR + JMP I RSTHND /HANDLER IS SYS: + DCA RSTMOV + JMS I (MOVE + CDF 10 + F0HSAV-1 + CDF 0 +RSTMOV, 0 + -400 + JMP I RSTHND + +GMADR, 0 + TAD HLDADR + SPA /CHECK THAT WE'RE NOT TRYING + JMP RESHND /TO SAVE A RESIDENT HANDLER - + AND RESHND /THAT COULD BE TRICKY + TAD (-1 /ECCH + ISZ GMADR + JMP I GMADR +RESHND, 7600 + JMP I GMADR + /RTS LOADER ERROR MESSAGE ROUTINE & MESSAGES + +RLERR, 0 /ERROR MESSAGES ARE IN FIELD 0 + CLA + CDF 10 + TAD I RLERR + CDF 0 + DCA RLTMP +RELP, TAD I RLTMP + RTR + RTR + RTR + AND (77 + JMS LTTY + TAD I RLTMP + AND (77 + JMS LTTY + ISZ RLTMP + JMP RELP +EOMSG, TAD (7515 + JMS LTTY + TAD (7512 + JMS LTTY + ISZ RLERR + CDF 10 + JMP I RLERR /SOME MESSAGES ARE NOT FATAL + +LTTY, 0 + SNA + JMP EOMSG + TAD (240 + SMA + AND (77 /CONVERT SIXBIT TO EIGHTBIT + TAD (240 + TLS + CLA + TSF + JMP .-1 + JMP I LTTY + /ROUTINE TO DETERMINE WHETHER WE ARE RUNNING IN THE +/BACKGROUND UNDER RTS-8, AND MODIFY THE RUN-TIME SYSTEM IF WE ARE. +/RUNS AT INITIALIZATION TIME, BEFORE LOWER FIELD 0 IS MOVED + +BAKTST, 0 + FPICL /FIRST INITIALIZE FPP (IF ANY) + FPCOM /INCLUDING CLEARING EXTENDED APT POINTER + TCF /TEST FOR RTS-8 BACKGROUND BY CLEARING THE + TSF /TTY FLAG AND THEN TESTING IT - IF IT IS + JMP I BAKTST /STILL SET, WE ARE RUNNING UNDER SRT-8. + CDF 0 /MODIFY LIST AND MODIFICATIONS ARE IN FIELD 0 +BAKLP, TAD I BKRPTR /GET POINTER TO BLOCK TO BE MODIFIED + SNA + JMP BAKRTN /ZERO - WE'RE DONE + DCA X0 /STORE IN AUTO-XR + ISZ BKRPTR +BAKWLP, TAD I BKRPTR /GET NEXT WORD TO STORE + ISZ BKRPTR + SNA + JMP BAKLP /ZERO MEANS END OF GROUP + DCA I X0 + JMP BAKWLP +BAKRTN, CDF 10 /RESET DATA FIELD TO 10 + DCA I (EAEKIL /EAE USES SGT WHICH IS NOT EMULATED, SO KILL IT + JMP I BAKTST /AND RETURN + +BKRPTR, BKRLST + PAGE + +F0TO= . + /FLOATING POINT PROCESSOR HANDLER + *FPPINT + +RETURN, JMP FPPRTN /MUST BE AT 0 IN PAGE + +FPGO, 0 /FPP STARTUP ROUTINE - MUST BE AT 1 IN PAGE + CDF 0 + DCA STEFLG + TAD PC + DCA FSAVPC /SAVE OLD PC FOR ONE LEVEL + TAD APT + DCA SAVAPT /OF RE-ENTRANTNESS + TAD I FPGO + DCA PC + TAD APT + AND (7770 + DCA APT /SET UP ADDRESS IN APT +FPREST, TAD (400 /ENABLE FPP INTERRUPTS + FPCOM /LOAD AND STORE ENTIRE APT + CLA /NECESSARY? + TAD STEFLG /0 OR 4000?(STARTF OR STARTE) + SZA + 6567 /A MNEMONIC? + CLA + TAD (APT + IOF + FPST /START UP FPP + JMP .-1 /I HAVE NO IDEA WHY IT DIDN'T START + CLA /NECESSARY? + JMS I (HANG /EXECUTE BACKGROUND + FPUHNG + FPRST /READ FPP STATUS + FPICL /RESET FPP + ION + RTL + SZL /TEST TRAP BIT + JMP TRAP /YUP - GO EXECUTE IT + AND (7400 + SZA /ANY ERRORS? + JMP FPPER + TAD FSAVPC + DCA PC /RESTORE OLD PC + TAD SAVAPT + DCA APT + ISZ FPGO + JMP I FPGO + /FLOATING POINT TRAP PROCESSOR + +TRAP, AC7775 + TAD PC + DCA PC /BACK UP PC TO BEFORE THE TRAP + SZL + STA + TAD APT /INCLUDING THE FIELD BITS + DCA APT + TAD APT /SET UP "FETPC" TO FETCH POSSIBLE TRAP ARGS + JMS I MCDF + DCA I (PCCDF + JMS I (FETPC + DCA T + TAD T /GET TRAP WORD + JMS I MCDF + IAC /MAKE A "CDF CIF N" + IAC + DCA TRPCIF + JMS I (FETPC + DCA ADR /STORE PDP8-CODE ROUTINE ADDRESS + TAD T +TRPCIF, HLT /SET DATA AND INSTRUCTION FIELDS + SMA CLA /TRAP3 OR TRAP4? + JMP I ADR /TRAP3 - GO TO ADR + JMS I ADR /TRAP4 - CALL ADR +FPPRTN, DCA STEFLG + ISZ PC /RESTORE PC FROM BEFORE TRAP + SKP + ISZ APT /INCLUDING FIELD + CDF 0 + JMP FPREST /RESTART FPP + +FPPER, SPA + JMP I (FPPERR /FPHALT - FATAL ERROR + RTL + ISZ FATAL /DIVIDE BY 0 AND OVERFLOW ARE NON-FATAL + SZL + JMP FPDVER +FPOVER, JMS I ERR + SKP +FPDVER, JMS I ERR + TAD . /I ALWAYS WANTED TO INCLUDE ONE OF THESE! + DCA ACX + AC2000 + DCA ACH + JMP FPREST + +FSAVPC, 0 +SAVAPT, 0 +STEFLG, 0 + /RANDOM FPP CODE FOR D.P. I/O +DFSTM2, FSTA+LONG + DFTMP2 + FEXIT + + PAGE + /THIS IS DOUBLE PRECISION FORMATTED OUTPUT. +/ITS A LOT LIKE SINGLE PRECISION,WITHOUT ALL THE G + I STUFF +/AND, OH JOY!, NO PAGE 0 LITERALS. +DNXT, TAD RWFLAG /READ OR WRITE? + SMA CLA + AC4000 /ITS INPUT SO LEAVE IN STARTE MODE + JMS I (GETLMN + JMP .+3 +DFMT, STA +BFMT, DCA EFLG + TAD D + DCA OD /SAVE COUNT OF DIGITS AFTER DEC PT + TAD PFACT + DCA PFACTX + DCA SCALE + JMS I (SKPOUT /DONE? + JMP I (DPIN /ITS INPUT + STA /ITS OUTPUT + DCA I (FFNEG /USE THIS LOCN AS SIGN FLAG + TAD EFLG + CLL RAL + CLL RAL + TAD W /GIVE ROOM FOR EXP FIELD (IF ANY) + CLL /NECESSARY? + DCA I (OW + TAD ACH + SNA + JMP SKPZRO /IF AC 0,SKIP ALOT OF THIS + SMA CLA + JMP DSCLUP + JMS I (DFNEG /AC<0-NEGATE IT + DCA I (FFNEG / 0 <> 7777 +DSCLUP, DCA SCALE + TAD ACX + SMA SZA CLA /AC<1.0? + JMP DGT1 /NO + AC4000 /STARTE + JMS I (FPGO /Y-MULT BY 10. + FMUL10 + STA + TAD SCALE /BUMP POWER OF TEN + JMP DSCLUP +DGT1, JMS I (DSCLDN /NUMBER IS >=1.;NOW DECREASE IT TO (0,1) + AC4000 + JMS I (FPGO /SAVE IT + FSTTMP + TAD (22 + JMS I (OSCALE + AC4000 + JMS I (FPGO + FADTMP + JMS I (DSCLDN + SKPZRO, JMS I (DIGCNT /NO NEED FOR ALL THE G STUFF TO BE + /INCLUDED IN THE SINGLE PREC ROUTINE + /MAKE NOTG ROUTINE A SUBROUTINE + SMA /EQUIV TO OUTNUM IN SINGLE PREC + JMP DASTRS + JMS I (OBLNKS + AC7775 + ISZ I (FFNEG /IF SIGN IS NEG, + JMS I (DIGIT /PRINT A MINUS + CLA + TAD ACX + SNA /ALIGN FAC MANTISSA INTO A + JMS I (DAL1 /FRACTION (.1,1) + IAC + SPA + JMS I (DACSR + CLA + TAD EAC3 + DCA AC1 /MOVE FAC DOWN SO OVERFLOW FROM + TAD EAC2 /MULT BY 10 IN HIGH ORDER WORD + DCA EAC3 + TAD EAC1 + DCA EAC2 + TAD ACL + DCA EAC1 + TAD ACH + DCA ACL + TAD SCALE + SPA SNA /ANY DIGITS TO LEFT OF DEC PT? + JMP I (DPRZRO /N-PRINT A 0 +/JUST AS CHEAP TO DUPLICATE CODE + JMS I (DBLDIG /Y- PRINT THEM + DRDCPT, AC7776 + JMS I (DIGIT /PRINT A DEC PT + TAD SCALE + SMA CLA /NEED LEADING ZEROS? + JMP DNOLZR /NO + TAD SCALE + DCA T +DLZERO, STA CLL + TAD OD /DECREASE D VALUE + SNL + JMP DNOMAC /NO MORE FIELD WIDTH AVAILABLE + DCA OD + JMS I (DIGIT /PRINT A 0 + ISZ T /CONT UNTIL COUNT OR WIDTH RUNS OUT + JMP DLZERO +DNOLZR, TAD OD + SZA + JMS I (DBLDIG /PRINT REMAINING DIGITS +DNOMAC, CLA + TAD EFLG + SZA /IF EFLG IS NOT ZERO IT IS -1, + JMS I (EXPFLD /SO WE WILL PRINT A D INSTEAD OF AN E + JMP I (DNXT + +DASTRS, CLA + TAD W + JMS I (ASTRSK + JMP I (DNXT + PAGE + DBLDIG, 0 /OUTPUT DIGITS + CIA + DCA T +DBDLOP, DCA ACH /0 THE HI WORD FOR OVERFLO + TAD AC1 + DCA AC2 /START TO COPY THE FAC.THIS IS + TAD ACL /EAC3 SHIFTED DOWN 1 WORD + DCA OPL + TAD EAC1 + DCA L1 /ACL + TAD EAC2 + DCA DACSR /EAC1 + TAD EAC3 + DCA DSCLDN /EAC2 + JMS DAL1 + JMS DAL1 + CLL + TAD AC2 + TAD AC1 + DCA AC1 /THIS IS FAC*5 COMING UP + RAL + TAD DSCLDN + TAD EAC3 + DCA EAC3 + RAL + TAD DACSR + TAD EAC2 + DCA EAC2 + RAL + TAD L1 + TAD EAC1 + DCA EAC1 + RAL + TAD OPL + TAD ACL + DCA ACL + RAL + TAD ACH + DCA ACH + JMS DAL1 + TAD ACH + JMS I (DIGIT + ISZ T + JMP DBDLOP + JMP I DBLDIG + DSCLDN, 0 /USED AS A TEMP TOO + TAD ACX + SPA SNA CLA + JMP I DSCLDN /DONE IF FAC<1. + AC4000 + JMS I (FPGO + FDIV10 + ISZ SCALE + 0 /A FREE LOCN! + JMP DSCLDN+1 + +DPRZRO, CLA + JMS I (DIGIT + JMP I (DRDCPT +/6 WORD FAC LEFT SHIFT +DAL1, 0 + TAD AC1 /GET OVERFLO BIT + CLL RAL /SHIFT LEFT + DCA AC1 + TAD EAC3 /CONTINUE WORKING WAY UP THRU MANTISSA + RAL + DCA EAC3 + TAD EAC2 + RAL + DCA EAC2 + TAD EAC1 + RAL + DCA EAC1 + TAD ACL + RAL + DCA ACL + TAD ACH + RAL + DCA ACH + JMP I DAL1 + +DFLTM2, FLDA+LONG + DFTMP2 + FEXIT +DFTMP2, 0;0;0;0;0;0 + /6 WORD FAC RIGHT SHIFT. ENTER WITH COUNT-1 IN AC +/ +DACSR, 0 /USED AS A TEMP BY DBDLOP + DCA AC0 /STORE COUNT +DLOP1, TAD ACH + CLL + SPA /PROPOGATE SIGN + CML + RAR + DCA ACH /SHIFT RIGHT 1,PROPOGATE SIGN + TAD ACL /DO SHIFTING FOR EACH WORD OF MANTISSA + RAR + DCA ACL + TAD EAC1 + RAR + DCA EAC1 + TAD EAC2 + RAR + DCA EAC2 + TAD EAC3 + RAR + DCA EAC3 + ISZ ACX /INCREMENT EXPONENT + NOP + ISZ AC0 /DONE? + JMP DLOP1 /NOPE + RAR /YUP + DCA AC1 /SAVE 1 BIT OF OVERFLOW + JMP I DACSR +L1, 0 + PAGE + /THIS IS DOUBLE PRECISION INPUT (WITH FPP ONLY) +/IT IS A LOT LIKE SINGLE PRECISION INPUT, BUT USES +/ITS OWN FPP ROUTINES. +DPIN, STA + DCA DDPSW /INITIALIZE DEC. PT. SWITCH + STA + DCA DINESW /AND EXPONENT SWITCH + TAD W + CMA + DCA FMTNUM /CHAR COUNT +DINESM, DCA ACX /CLEAR FLOATING AC + DCA ACH + DCA ACL + DCA EAC1 + DCA EAC2 + DCA EAC3 + STA +DINMIN, DCA DFNEG +DINLOP, ISZ FMTNUM + JMP DINGCH /LOOP UNTIL WIDTH EXHAUSTED +DINENM, ISZ I (DFNEG /IS SIGN NEGATIVE? + JMS I (DFNEG /YES-NEGATE + ISZ DINESW /SEEN A D YET? + JMP DFIXUP /YES-THIS IS EXP,NOT NUMBER + TAD PFACTX /NO D- SCALE WITH P FACTOR +DSCLIN, TAD OD /GET SCALING FACTOR + STL + SNA + JMP I (DNXT /NO SCALING NEEDED + SMA + CIA CLL /AC CONTAINS MAGNITUDE,LINK CONTAINS SIGN + DCA OD + RTL + RAL + TAD (FDIV10 + DCA DIGFOP + AC4000 + JMS I (FPGO /MULT OR DIVIDE BY 10 +DIGFOP, 0 + ISZ OD + JMP DIGFOP-2 /MULT OR DIV CORRECT NUMBER OF TIMES + JMP I (DNXT /GET MORE +DIND, ISZ DINESW /IS THERE A 2ND D? + JMP DINER /Y-A NO-NO + ISZ DDPSW /FORCE DEC. PT. SWITCH ON + TAD OD /USE SCALE FACTOR IF SEEN DEC. PT + DCA SCALE /SAVE SCALE FACTOR + ISZ DFNEG + JMS DFNEG /GET SIGN OF NUMBER + AC4000 + JMS I (FPGO /SAVE IT TEMPORARILY + DFSTM2 + JMP DINESM /GO COLLECT EXP + DFIXUP, JMS I (FFIX /IS THIS OK FOR DBL PREC??? + TAD ACI + CIA + TAD SCALE /ADD EXP TO DEC PT SCALE FACTOR + DCA OD + AC4000 + JMS I (FPGO + DFLTM2 /GET NUMBER BACK IN FAC + JMP DSCLIN +DINGCH, JMS I (FMTIN /GET A CHAR + JMS I (CHTYPE /CLASSIFY IT + 1234; DDIGIT + -56; DIDCPT /. + -53; DINLOP /+ + -55; DINMIN /- + -4; DIND /D + -5; DIND /E - BE FORGIVING + -40; DINLOP /BLANK + -54; DINENM /, + 0 +DINER, JMP I (INER + +DIDCPT, DCA OD /ZERO COUNT OF DIGITS AFTER DEC PT + ISZ DDPSW /TEST + SET DEC PT SWITCH + JMP DINER /2 DEC. PT. IS NO GOOD + JMP DINLOP +DDIGIT, TAD CHCH + DCA I (DGT+1 /SAVE DIGIT + AC4000 + JMS I (FPGO + ACMDGT + TAD DDPSW + SNA CLA + ISZ OD /BUMP DIGIT IF DEC PT SEEN + JMP DINLOP +DDPSW, 0 + /6 WORD FLOATING NEGATE + +DFNEG, 0 + TAD EAC3 + CLL CMA IAC /NEGATE LOW ORDER WORD OF MANTISSA + DCA EAC3 /STORE IT BACK + CML RAL /ADJUST OVERFLOW+CARRY + TAD EAC2 /CONTINUE WITH REST OF MANTISSA + CMA IAC + DCA EAC2 + CML RAL + TAD EAC1 + CMA IAC + DCA EAC1 + CML RAL + TAD ACL + CMA IAC + DCA ACL + CML RAL + TAD ACH + CLL CMA IAC + DCA ACH + JMP I DFNEG +DINESW, 0 + PAGE + *FPPKG /EAE PKG LOADS OVER REGULAR PKG + +LPBUF2, ZBLOCK 16 + LPBUF5 + +AL1BMP, 0 /*K* MUST BE AT SAME LOC AS NON-EAE VERSION + STA + TAD ACX + DCA ACX + JMS I (AL1 + JMP I AL1BMP + +/EAE FLOATING POINT INTERPRETER +/FOR PDP8/E WITH KE8-E EAE + +/W.J. CLOGHER, MODIFIED BY R.LARY FOR FORTRAN + +/FLOATING MULTIPLY--DOES 4 SINGLE MULTIPLIES WITH EAE +/THIS USES THE FACT THAT IF AC IS NON-ZERO WHEN YOU DO +/A MUY INSTR, THE AC IS ADDED TO RESULT OF THE MULTIPLY. +/(IN THE LOW ORDER, NATCHERLY) + +DDMPY, JMS I (DARGET + SKP +FFMPY, JMS I (ARGET + JMS EMDSET /SET UP FOR MULT + CLA MUY /MULTIPLY-LOW ORDER FAC STILL IN MQ + OPH /THIS IS PRODUCT OF LOW ORDERS + MQL /ZAP LOW ORDER RESULT-INSIGNIFICANT + TAD ACH /GET LOW ORDER(!) OF FAC + SWP MUY /TO MQ-HIGH ORD. RESLT OF LAST MPY + OPL /TO AC-WILL BE ADDED TO RESLT-THIS + DST /IS PRODUCT-LOW ORD FAC,HI ORD OP + AC0 /STORE RESULT + CLA + TAD ACL /HIGH ORDER FAC TO MQ + MQL + TAD OPX /GET OPERAND EXPONENT + TAD ACX /ADD FAC EXPONENT-GET SUM OF EXPS. + DCA ACX /STORE RESULT + MUY /MUL. HIGH ORDER FAC BY LOW ORD OP. + OPH /HIGH ORDER FAC WAS IN MQ + DAD /ADD IN RESULT OF SECOND MULTIPLY + AC0 + DCA ACH /STORE HIGH ORDER RESULT + TAD ACL /GET HIGH ORDER FAC + SWP /SEND IT TO MQ AND LOW ORD. RESULT + DCA AC0 /OF ADD TO AC-STORE IT + RAL /ROTATE CARRY TO AC + DCA ACL /STORE AWAY + MUY /NOW DO PRODUCT OF HIGH ORDERS + OPL /FAC HIGH IN MQ, OP HIGH IN OPL + DAD /ADD IN THE ACCUMULATED # + ACH + /MULTIPLIES DONE - MASSAGE RESULT + + SNA /ZERO? + JMP RTZRO /YES-GO ZERO EXPONENT + NMI /NO-NORMALIZE (1 SHIFT AT MOST!) + DCA ACH /STORE HIGH ORDER RESULT + CLA SCA /GET STEP CNTR-DID WE NEED A SHIFT? + SNA CLA + JMP SNCK /NO-JUST CHECK SIGN + TAD AC0 /YES - WATCH OUT FOR LOST ACCURACY! + RAL + DCA AC0 + SZL /IF HIGH ORDER BIT OF OVERFLOW WORD WAS ON, + DPIC /TURN MQ11 ON (IT WAS 0 FROM THE NMI) + CLA CMA /MUST DECREASE EXP. BY 1 + TAD ACX +RTZRO, DCA ACX /STORE BACK +SNCK, TAD AC0 + SPA CLA /IS HIGH ORDER OF OVERFLO WD. 1? + DPIC /YES-ADD 1 TO LOW ORDER-STILL IN MQ + TAD ACH + SMA + JMP EMDONE /WE DIDN'T OVERROUND - GOODY + LSR + 1 /BUT OVERROUNDING IS EASILY CORRECTED! + ISZ ACX / (OVERCORRECTED??) + NOP + +/COMMON CLEANUP ROUTINE FOR MULTIPLY AND DIVIDE + +EMDONE, ISZ EMSIGN /SHOULD SIGN BE MINUS? + SKP /NO + DCM /YES-DO IT + SNA + DCA ACX /FORCE EXPONENT 0 IF MANTISSA = 0 + DCA ACH /STORE IT BACK + SWP + DCA ACL + TAD DFLG + SMA SZA CLA + TAD ACX /IF D.P. INTEGER MODE AND ACX LESS THAN 0, + SNA /GO TO UNNORMALIZE RESULT + JMP I FPNXT /OTHERWISE BUMP RETN. AND RETN. + CMA + JMS I (ACSR + JMP I FPNXT +EMSIGN, 0 + /ROUTINE TO SET UP FOR MULTIPLY AND DIVIDE + +EMDSET, 0 + CLA CLL CMA RAL /MAKE A MINUS TWO + DCA EMSIGN /AND STORE IN EMSIGN. + DLD /GET HIGH ORDER MANTISSA OF OP. + OPH + SWP + SMA /NEGATIVE? + JMP .+3 /NO + DCM /YES-NEGATE IT + ISZ EMSIGN /BUMP SIGN COUNTER + SHL /SHIFT OPRND LEFT 1 TO AVOID OVRFLO + 1 + DST /STORE BACK-OPH CONTAINS LOW ORDER + OPH / OPL CONTAINS HIGH ORDER + DLD + ACH + SWP + SMA /FAC LESS THAN 0? + JMP .+4 /NO + DCM + ISZ EMSIGN + NOP /EMSIGN MAY BUMP TO 0 + DST /STORE BACK - ACH CONTAINS LOW ORDER + ACH / ACL CONTAINS HIGH ORDER + JMP I EMDSET + PAGE + /FLOATING DIVIDE-BY-0 ROUTINE - MUST BE AT 0 IN PAGE + +DBAD, ISZ FATAL /DIVIDE BY 0 NON-FATAL + JMS I ERR + TAD DBAD + DCA ACX /SET AC TO A LARGE POSITIVE NUMBER + AC2000 + JMP I (EMDONE + +/FLOATING DIVIDE + +DDDIV, JMS I (DARGET + SKP +FFDIV, JMS I (ARGET + JMS I (EMDSET /GET ARG. AND SET UP SIGNS + DVI /DIVIDE-ACH AND ACL IN AC,MQ + OPL /THIS IS HI (!) ORDER DIVISOR + DST /QUOT TO AC0,REM TO AC1 + AC0 + SZL CLA /DIVIDE ERROR? + JMP DBAD /YES - HANDLE IT + TAD OPX /DO EXPONENT CALCULATION + CMA IAC /EXP. OF FAC - EXP. OF OP + TAD ACX + DCA ACX + DPSZ /IS QUOT = 0? + SKP /NO-GO ON + DCA ACX /YES-ZERO EXPONENT +DVLP, MUY /NO-THIS IS Q*OPL*2**-12 + OPH + DCM /NEGATE IT + TAD AC1 /SEE IF GREATER THAN REMAINDER + SNL + JMP EDVOPS /YES-ADJUST FIRST DIVIDE + DVI /NO-DO Q*OPL*2**-12/OPH + OPL + SZL CLA /DIV ERROR? + JMP DBAD /YES +EDVLP1, TAD AC0 /NO-GET QUOT OF FIRST DIV. + SMA /NEGATIVE? + JMP I (EMDONE /NO-REMEMBER-QUOT OF 2ND DIV. IN MQ + LSR /YES-MUST SHIFT IT RIGHT 1 + 1 + ISZ ACX /ADJUST EXPONENT + NOP + SGT /TEST SHIFTED OUT BIT + JMP I (EMDONE /ZERO - NO ROUND + DPIC /BUMP AC FRACTION + JMP EDVLP1+1 /MAYBE SHIFT AGAIN + /CONTINUATION OF DIVIDE ROUTINE +/WE ARE ADJUSTING THE RESULT OF THE +/FIRST DIVIDE. + +EDVOPS, CMA IAC + DCA AC1 /ADJUST REMAINDER + TAD OPL /WATCH FOR OVERFLOW + CLL CMA IAC + TAD AC1 + SNL + JMP EDVOP1 /DON'T ADJUST QUOT. + DCA AC1 + CMA + TAD AC0 + DCA AC0 /REDUCE QUOT BY 1 +EDVOP1, CLA CLL + TAD AC1 /GET REMAINDER + SNA /ZERO? + CAM /YES-ZERO EVERYTHING + DVI /NO + OPL + SZL CLA /DIV. OVERFLOW? + JMP DBAD /YES + DCM /NO-ADJUST HI QUOT (MAYBE) + JMP EDVLP1 /GO BACK + +/ROUTINE TO NORMALIZE THE FAC + +EFFNOR, 0 + CDF 0 + DLD /PICK UP MANTISSA + ACH + SWP /PUT IT IN CORRECT ORDER + NMI /NORMALIZE IT + SNA /IS THE # ZERO? + DCA ACX /YES-INSURE ZERO EXPONENT + DCA ACH /STORE HIGH ORDER BACK + SWP /STORE LOW ORDER BACK + DCA ACL + CLA SCA /STEP COUNTER TO AC + CMA IAC /NEGATE IT + TAD ACX /AND ADJUST EXPONENT + DCA ACX + JMP I EFFNOR /RETURN + +ADDRS, OPH + ACH + +LPBUF5, ZBLOCK 50 + LPBUF7 + PAGE + /"OPNEG" MUST BE AT 0 IN PAGE + +OPNEG, 0 /ROUTINE TO NEGATE OPERAND + DLD + OPH + SWP + DCM + DCA OPH + MQA + DCA OPL + JMP I OPNEG + +/FLOATING ADD AND SUBTRACT-IN ORDER NOT TO LOSE BITS, +/WE DO NOT SHIFT BOTH NUMBERS RIGHT 1 BIT BEFORE ADD- +/ONLY SHIFTS DONE ARE TO ALIGN EXPONENTS. + +FFSUB, JMS I (ARGET + JMS OPNEG /NEGATE OPERAND + SKP +FFADD, JMS I (ARGET /PICK UP ARGUMENTS + TAD OPH + SNA CLA /IF OPERAND IS 0, + JMP I FPNXT /RESULT IS ALREADY IN AC. + TAD ACH + SZA CLA /CHECK FOR AC=0 + JMP BOTHN0 /NO + DLD + OPH /YES - ANSWER IS OPERAND + SWP + DCA ACH + JMP FADND /JUMP INTO CLEANUP CODE +BOTHN0, TAD OPX /PICK UP EXPONENT OF OPERAND + MQL /SEND IT TO MQ FOR SUBTRACT + TAD ACX /GET EXPONENT OF FAC + SAM /SUBTRACT-RESULT IN AC + SPA /NEGATIVE RESULT? + CMA IAC /YES-MAKE IT POSITIVE + DCA CNT /STORE IT AS A SHIFT COUNT + TAD CNT /COUNT TOO BIG?(CAN'T BE ALIGNED) + TAD (-27 + SPA SNA CLA + CMA /NO-OK + DCA AC0 /YES-MAKE IT A LOAD OF LARGEST # + DLD /GET ADDRESSES TO SEE WHO'S SHIFTED + ADDRS + SGT /WHICH EXP GREATER(GT FLG SET + /BY SUBTR. OF EXPS.) + SWP /OPERAND'S-SHIFT THE FAC + DCA SHFBG /STORE ADDRESS OF WHO GETS SHIFTED + SWP /GET ADDRESS OF OTHER (0 TO MQ) + DCA DADR /THIS ONE JUST GETS ADDED + TAD ACX /GET FAC EXP.INTO AC + SGT /WHICH EXPONENT WAS GREATER? + DCA OPX /FAC'S-STORE FINAL EXP. IN OPX + DLD /GET THE LARGER # TO AC,MQ +DADR, 0 + SWP /PUT IN THE RIGHT ORDER + ISZ AC0 /COULD EXPONENTS BE ALIGNED? + JMP LOD /NO-JUST LEAVE LARGER IN AC,MQ + DST /YES-STORE THIS TEMPORARILY + AC0 /(IF ONLY FAC STORAGE WAS REVERSED) + DLD /GET THE SMALLER # +SHFBG, 0 + SWP /PUT IT IN RIGHT ORDER + ASR /DO THE ALIGNMENT SHIFT +CNT, 0 + DAD /ADD THE LARGER # + AC0 + DST /STORE RESULT + AC0 + SZL /OVERFLOW?(L NOT = SIGN BIT) + CMA /NOTE-WE DIDN'T SHIFT BOTH RIGHT 1 + SMA CLA + JMP NOOV /NOPE + CLA CLL CML RAR /MAYBE-SEE IF 2 #S HAD SAME SIGN + AND ACH + TAD OPH + SMA CLA /SIGNS ALIKE? + JMP OVRFLO /YES-OVERFLOW +NOOV, AC4000 /NO-GET HIGH ORDER RESULT BACK + TAD AC1 /CHECK FOR 4000 0000 MANTISSA + DPSZ /IT WILL BE SET TO 0 BY NMI + JMP .+3 /OK-RESTORE NUMBER + AC2000 /GOT A 4000 0000-SET TO 6000 0000 + JMP DOIT /AND INCREMENT EXPONENT + TAD (4000 /RESTORE NUMBER +LOD, NMI /NORMALIZE (LOW ORDER STILL IN MQ) + DCA ACH /STORE FINAL RESULT + SCA /GET SHIFT COUNTER(# OF NMI SHIFTS) + CMA /NEGATE IT +ADON, IAC +FADND, TAD OPX /AND ADJUST FINAL EXPONENT + DCA ACX + SWP /GET AND STORE LOW ORDER + DCA ACL + JMP I FPNXT /RETURN +OVRFLO, TAD AC1 /OVERFLOW-GET HIGH ORDER RESLT BACK + ASR /SHIFT IT RIGHT 1 + 1 +DOIT, TAD (4000 /REVERSE SIGN BIT + DCA ACH /AND STORE + JMP ADON /DONE + +LPBUF7, ZBLOCK 34 + LPBUFE + PAGE + *7400 /RTS CLEANUP ROUTINE - SAVED WITH PG 17600 + +CLNUP, DCA I CFPTR /ENTER HERE ON ^C OR ERROR +TDEXFG, JMP CTMP /ENTER HERE ON "STOP" OR "CALL EXIT" + TAD TDEXFG /TDEXFG CONTAINS TOP MEM FIELD + CLL RTL /IF WE ARE ON AN IN-CORE TD8E CONFIGURATION + RAL + TAD (CDF + DCA TDGTDF +TDGTDF, HLT + TAD I TDPTR /MOVE THE TD8E ROUTINE + CDF 20 + DCA I TDPTR /DOWN TO FIELD 2 + ISZ TDPTR + JMP TDGTDF + CDF 0 + TAD (CIF 20 + JMS TDSET /RESET THE F0 CDF'S TO POINT TO FIELD 2 +CTMP, CDF 0 + TAD (6213 + DCA I (7605 + TAD (5267 + DCA I (7606 /RESTORE PAGE 7600 + AC7776 + AND I (OSJSWD + IAC + DCA I (OSJSWD /MARK 10000-11777 AS USELESS + AND I 0 + AND I 0 /DELAY A WHILE IN CASE ITS AN LA30 + AND I 0 + AND I 0 + AND I 0 + TSF + SKP + JMP WTOVR + ISZ ZERO + TAD I (TOCHR /IF TTY IS NOT IDLE, + SZA CLA /DELAY LONG ENOUGH TO AVOID GARBLE. + JMP CTMP +WTOVR, TAD I (7777 + CLL RAL + SMA CLA /IS BATCH EXECUTING? + JMP NOBTCH /NO - RELAX + TAD (212 /TO PREVENT OVERPRINTING, POP UP A LINE + TLS /ON THE TELETYPE + LLS /AND ON THE LINE PRINTER + TSF + JMP .-1 /WAIT FOR THE SLOWER ONE (I HOPE) + CLA + NOBTCH, CDF 10 +CLOSLP, TAD I CFPTR + SNA /ANY MORE ENTRIES IN THE TENTATIVE + JMP GOAWAY /FILE TABLE? + DCA CTMP /YES - SAVE FILE LENGTH PTR + CDF 0 + TAD I CTMP + CDF 10 + SNA + JMP IGNORC /UNWRITTEN FILES AREN'T CLOSED + DCA FLEN + JMS I USR + 10 /BRING USR IN + TAD (200 + DCA USR /KEEP IT IN + TAD (HPLACE+1 + DCA CHAND + JMS I USR + 13 /RESET DEVICE HANDLER TABLE + 0 /BUT NOT TENTATIVE FILES! + ISZ CFPTR + TAD I CFPTR /GET UNIT NUMBER + JMS I USR + 1 +CHAND, 0 /FETCH HANDLER + JMP CLSERR + TAD I CFPTR /GET UNIT AGAIN + ISZ CFPTR /BUMP PTR TO NAME + JMS I USR +C4, 4 +CFPTR, 7600 /CLOSE THE FILE +FLEN, 0 + JMP CLSERR + SKP +IGNORC, AC0002 + TAD CFPTR + TAD C4 + DCA CFPTR + JMP CLOSLP /LOOK FOR MORE + +TDSET, 0 + DCA I (7721 + TAD I (7721 + DCA I (7727 + TAD I (7721 + IAC + DCA I (7642 + JMP I TDSET + GOAWAY, CDF CIF 0 + JMP I (7605 /RETURN TO OS/8 AQAP +CLSERR, JMS I USR /"IMPOSSIBLE" ERROR - GIVE "USER ERROR 2" + 7 + 2 /IT'S BETTER THAN HALTING + +TDPTR, 7600 +ZERO, 0 +USR, 7700 + $$$-$$$-$$$ + diff --git a/sw/f4/FRTSRC/rts.pa b/sw/f4/FRTSRC/rts.pa new file mode 100644 index 0000000..7fd43cf --- /dev/null +++ b/sw/f4/FRTSRC/rts.pa @@ -0,0 +1,3789 @@ +/FORTRAN IV RUNTIME SYSTEM, V5A +/ +/ +/ +/ +/ +/ +/ +// +/ +/ +/ +/ +/COPYRIGHT (C) 1974,1975 +/DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. +/ +/ +/ +/THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A +/SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU- +/SION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANT OTHER +/COPIES THEREOF, MAY NOT BR PROVIDED OR OTHERWISE MADE AVAILABLE +/TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO +/AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE +/SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC. +/ +/ +/THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT +/NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL +/EQUIPMRNT COROPATION. +/ +/DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS +/SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. +/ +/ +/ +/ +/ +/ + /FORTRAN 4 RUNTIME SYSTEM - R.LARY +/AND NOW WITH DOUBLE PRECISION! - MKH +/RTS-8 SUPPORT ADDED 5/20/74 - RL +/LAST EDITED 5/19/74 + +XVERSN=5 /UPDATE WITH EVERY RELEASE! +XPATCH="A /PATCH LEVEL A + +/NOTES TO MAINTAINERS: + +/THIS PROGRAM IS DESIGNED TO SUPPORT MANY DIFFERENT HARDWARE +/CONFIGURATIONS IN A MINIMAL AMOUNT OF SPACE. IT ACHIEVES THIS GOAL +/BY "TAILORING" ITSELF AT INITIALIZATION TIME +/BASED ON A SURVEY OF ITS HARDWARE/SOFTWARE ENVIRONMENT. THIS MAKES +/THIS PROGRAM DIFFICULT TO MODIFY UNLESS THE MODIFYING PROGRAMMER +/KNOWS WHAT IS GOING ON. IT IS THEREFORE SUGGESTED THAT YOU READ THIS +/LISTING THOROUGHLY AND UNDERSTAND THE MAJOR ROUTINES BEFORE +/MAKING EVEN "TRIVIAL" CHANGES. + +/ALL SYMBOLS BEGINNING WITH THE LETTER "Q" ARE ENTRIES IN THE +/HEADER BLOCK OF THE LOADER-IMAGE (.LD) FILE. + +/ALL SYMBOLS BEGINNING WITH THE LETTER "Y" DENOTE THE BEGINNING OF +/A BLOCK OF CODE WHICH WILL BE REPLACED BY DIFFERENT CODE IF FRTS +/IS RUNNING IN THE BACKGROUND UNDER RTS-8. THE REPLACEMENT CODE +/CAN BE FOUND IN THE TABLE "BKRLST". + +/ALL SYMBOLS BEGINNING WITH THE LETTER "V" ARE DEFINED IN THE LOADER +/SYMBOL TABLE AND CANNOT BE MOVED WITHOUT CHANGING THE LOADER. ONLY +/A VERY FEW OF THESE SYMBOLS OCCUR IN PLACES OTHER THAN +/PAGE 200 OR THE FIRST LOCATION OF OTHER PAGES. + +/CODE WHICH CONTAINS THE CHARACTER SEQUENCE "*K*" IN THE COMMENT FIELD +/IS PARTICULARLY SUBTLE/OBSCURE (THE "K" IS FOR "KLUDGE"). THE REST OF THE +/COMMENT SHOULD INDICATE WHAT IS GOING ON. +/ +/ +/ FIXES FOR V4 J.K. 1975 +/ +/ .SCALE FACTOR PRINTED BY P FORMAT OPERATOR +/ .FRTS /P +/ .RK8E HANDLER TO RUN WITH INTERRUPTS ON +/ .SLASH AT END OF FORMAT STATEMENT +/ +/ +/ CHANGES FOR OS/78 AND OS/8 V3D BY P.T. +/ .CHANGED THE VERSION NUMBER TO 5A +/ .FIXED THE FIELD OVERFLOW PROBLEM +/ .FIXED THE "K=K+1" PROBLEM + /DEFINITIONS: + +AC7775= STA CLL RTL +AC7776= STA CLL RAL +AC4000= CLA STL RAR +AC3777= STA CLL RAR +AC2000= CLA STL RTR +AC0002= CLA STL RTL + +/DEFINITIONS OF KE-8/E INSTRUCTIONS + +MQL= 7421 +MQA= 7501 +CAM= CLA MQL +SWP= MQA MQL +SWAB= 7431 +SCA= 7441 +MUY= 7405 +DVI= 7407 +NMI= 7411 +SHL= 7413 +ASR= 7415 +LSR= 7417 +ACS= 7403 +SAM= 7457 +DAD= 7443 +DLD= 7663 +DST= 7445 +DPIC= 7573 +DCM= 7575 +DPSZ= 7451 +SGT= 6006 + +/DEFINITIONS OF FPP IOT'S + +FPINT= 6551 +FPICL= 6552 +FPCOM= 6553 +FPHLT= 6554 +FPST= 6555 +FPRST= 6556 + /FPP OPCODES: + +FLDA= 0000 +FADD= 1000 +FSUB= 2000 +FDIV= 3000 +FMUL= 4000 +FADDM= 5000 +FSTA= 6000 +FMULM= 7000 + LONG= 400 /TWO-WORD ADDRESSING + BASE= 200 /BASEPAGE ADDRESSING + IND= 600 /INDIRECT ADDRESSING + +FEXIT= 0000 +FNORM= 0004 +STARTF= 0005 +STARTD= 0006 +JAC= 0007 +XTA= 0030 +STARTE= 0050 +LDX= 0100 + +JA= 1030 +JNE= 1040 +TRAP3= 3000 + +/OS8 EQUIVALENCES: + +OS8SWS= 7643 +OSJSWD= 7746 +OS8DVT= 7647 +OS8DCB= 7760 +OS8DAT= 7666 + +/VARIOUS OTHER IOT'S: + +LSF= 6661 +LCF= 6662 +LSE= 6663 +LIE= 6665 +LLS= 6666 +LIF= 6667 + /PAGE ZERO FOR FORTRAN IV RTS + + *0 /INTERRUPT STUFF + 0 + JMP I .+1 + INTRPT +LPGET, LPBUFR /LINE PRINTER RING BUFFER FETCH POINTER +TOCHR, 0 /TELETYPE STATUS WORD +KBDCHR, 0 /KEYBOARD INPUT CHARACTER +POCHR, 0 /P.T. PUNCH COMPLETION FLAG +RDRCHR, 0 /P.T. READER STATUS +FMTPXR, 0 /XR USED TO INDEX FORMAT PARENTHESIS ARRAY +INXR, INBUFR-1 /XR USED TO GET CHARS FROM INPUT LINE +XR, 0 +XR1, 0 + +*16 +VEOFSW, 0 /USED BY "EOFCHK" TO STORE VARIABLE ADDRESS + 0 /*K* MUST BE IN AUTO - XR +T, 0 /TEMPORARY +DFLG, 0 /0 = F.P., 1 = D.P. +INST, 0 /CURRENT INSTRUCTION WORD + +/IOH PAGE ZERO LOCATIONS + +RWFLAG, 0 /READ/WRITE FLAG +FMTTYP, 0 /TYPE OF CONVERSION BEING DONE +EOLSW, 0 /EOL SW ON INPUT - CHAR POS ON OUTPUT +N, 0 /REPEAT FACTOR +W, 0 /FIELD WIDTH +D, 0 /NUMBER OF PLACES AFTER DECIMAL POINT + +DATCDF, 0 /SUBROUTINE TO CHANGE DATA FIELD +DATAF, 0 /CONTAINS VARIOUS CDF'S + JMP I DATCDF /RETURN + +ERR, ERROR /POINTER TO ERROR ROUTINE +FATAL, 0 /FATAL ERROR FLAG - 0=FATAL +MCDF, MAKCDF + +/FPP PARAMETER TABLE LOCATIONS: + +APT, 0 /VARIOUS FIELD BITS FOR FPP +PC, DPTEST /FPP PROGRAM COUNTER +XRBASE, 0 /FPP INDEX REGISTER ARRAY ADDRESS +BASADR, 0 /FPP BASE PAGE ADDRESS +ADR, 0 /ADDRESS TEMPORARY +ACX, 0 +ACH, 0 /*** FLOATING ACCUMULATOR *** +ACL, 0 +EAC1, 0 +EAC2, 0 /** FOR EXTENDED PRECISION OPTION ** +EAC3, 0 + /FLOATING POINT PACKAGE LOCATIONS + +AC0, 0 +AC1, 0 /FLOATING AC OVERFLOW WORD +AC2, 0 /OPERAND OVFLOW WORD +OPX, 0 +OPH, 0 /*** FLOATING OPERAND REGISTER *** +OPL, 0 + +/RTS I/O CONVERSION SYSTEM LOCATIONS + +FMTBYT, 0 /FORMAT BYTE POINTER +IFLG, 0 /I FOEMAT FLAG +GFLG, 0 /G FORMAT FLAG +EFLG, 0 /E FORMAT FLAG - SOMETIMES ON FOR G FMT +OD, 0 +SCALE, 0 +PFACT, 0 /P-SCALE FACTOR +PFACTX, 0 /TEMP FOR PFACT +ACI, 0 /INTEGERIZED FAC FROM "FFIX" SUBR +CHCH, 0 +FMTNUM, 0 /CONTAINS ACCUMULATED NUMERIC VALUE +CTCINH, 0 /^C INHIBIT FLAG +LOGUNT, 0 /DSRN POINTER - ONLY USED FROM ONE PAGE! +PTTY, TTY /POINTER TO TTY HANDLER - USED BY LDDSRN + 0 / SO FORMS CONTROL WILL WORK ON UNIT 0 +FPNXT, ICYCLE /USED AS INTERPRETER ADDRESS IF NO FPP + +/DSRN IMAGE + +HAND, 0 /HANDLER ENTRY POINT +HCODEW, 0 /HANDLER LOAD ADDR & FIELD + IOFFLG + FORMS CTL FLG +BADFLD, 0 /BUFFER ADDRESS AND FIELD +CHRPTR, 0 /ACTUALLY A WORD POINTER +CHRCTR, 0 /COUNTER - RANGES FROM -3 TO -1 +STBLK, 0 /STARTING BLOCK OF FILE +RELBLK, 0 /CURRENT RELATIVE BLOCK NUMBER +TOTBLK, 0 /LENGTH OF FILE +FFLAGS, 0 /FILE FLAGS: + /BIT 0 - "HAS BEEN WRITTEN" FLAG + /BITS 1-2 - FORMATTED/UNFORMATTED FLAGS + /BIT 11 - "END-FILED" FLAG + +BUFFLD, 0 /ROUTINE TO SET DF TO BUFFER FIELD +BUFCDF, HLT + JMP I BUFFLD + +FADD1, FADD+LONG /FPP CODE TO ADD 1.0 TO FAC + ONE /AND FALL INTO STORE CODE +FGPBF, 0 /THESE THREE WORDS ARE USED +BIOPTR, 0 /TO FETCH AND STORE FLOATING POINT NUMBERS + FEXIT /FROM RANDOM MEMORY + PAGE + /STARTUP CODE + +FTEMP2, ISZ .+3 /ALSO USED AS I/O F.P. TEMPORARY + CDF CIF 10 + JMP I .+1 +VDATE, RTSLDR /USED TO STORE OS/8 DATE + +/RTS ENTRY POINTS - "VERSION INDEPENDENT" + +VUERR, JMP I (USRERR /USER ERROR + /** LOADER MUST DEFINE #ARGER AS VARGER-1 ** +VARGER, JMS I ERR /LIBRARY ARGUMENT ERROR +VRENDO, ISZ RWFLAG /END OF I/O LIST +VRFSV, JMP I GETLMN /I/O LIST ARG ENTRY - COROUTINE WITH GETLMN +VBAK, JMP I (BKSPC /"BACKSPACE" ROUTINE +VENDF, JMP I (ENDFL /"END FILE" ROUTINE +VREW, JMP I (RWIND /"REWIND" ROUTINE +VDEF, JMP I (DFINE /"DEFINE FILE" ROUTINE +VWUO, AC4000 /UNFORMATTED WRITE +VRUO, JMP I (RWUNF /UNFORMATTED READ +VWDAO, AC4000 /DIRECT ACCESS WRITE +VRDAO, JMP I (RWDACC /DIRECT ACCESS READ +VWRITO, AC4000 /FORMATTED (ASCII) WRITE +VREADO, JMP I (RWASCI /FORMATTED (ASCII) READ +VSWAP, JMP I (SWAP /OVERLAY PROCESSOR +VEXIT, TRAP3; CALXIT /"STOP" ROUTINE - ENTERED IN FPP MODE +V8OR12, 0;0 /0;1 IF CPU IS A PDP-12 +VBACKG, JMP I (NULLJB /BACKGROUND JOB DISPATCHER + 0 + CDF CIF 0 /USED BY ROUTINE "ONQB" IN LIBRARY + JMS I .-2 + JMP VBACKG + +/IOH GET VARIABLE ROUTINE. +/THIS ROUTINE MAKES THE FORMATTED I/O PROCESSOR AND THE USER'S +/PROGRAM CO-ROUTINES (DEF(COROUTINE)= 2 ROUTINES EACH THINKING THE OTHER +/ IS A SUBROUTINE). ON ENTRY FAC=INPUT NUMBER +/IF I/O IS A READ, ON RETURN FAC=OUTPUT NUMBER IF I/O IS A WRITE. + +GETLMN, 0 +VRETRN, JMP I [RETURN /SHORT ROUTINE FOR ALL THOSE COMMENTS, NO? + /INTERRUPT DRIVEN I/O HANDLERS + +LPT, 0 /RING-BUFFERED - LP08 OR LS8E + AND [377 /JUST IN CASE +LPTSNA, SNA + JMP I (IOERR /CANNOT BE USED FOR INPUT +YLPT, IOF + DCA I LPPUT + TAD LPGET + CIA + TAD LPPUT + SZA CLA /IS LPT QUIET? + JMP .+3 /NO + TAD I LPPUT + LLS /YES - START 'ER UP + CLA IAC + LIE /ENABLE LPT INTERRUPTS + TAD LPPUT /1 IN AC, REMEMBER? + DCA LPPUT + TAD I LPPUT + SPA + JMP .-3 /NEGATIVE NUMBERS ARE BUFFER LINKS + SZA CLA /ANY ROOM LEFT IN BUFFER? + JMS I (HANG + LPUHNG /WAIT FOR LINE PRINTER + ION /TURN INTERRUPTS BACK ON + JMP I LPT /RETURN + +LPPUT, LPBUFR + +PTP, 0 /PAPER TAPE PUNCH HANDLER +YPTP, SNA + JMP I (IOERR /INPUT IS ERROR + DCA LPT /SAVE CHAR + IOF + TAD POCHR /IF PUNCH IS NOT IDLE, + SZA CLA /WE DISMISS JOB + JMS I (HANG + PPUHNG /WAIT FOR PUNCH INTERRUPT + TAD LPT + PLS /OUTPUT CHAR + DCA POCHR /SET FLAG NON-ZERO + ION + JMP I PTP + +/*K* THE FOLLOWING ADDRESSES GET FALLEN INTO & MUST BE SMALL + + IFNZRO PPUHNG&7000 <__ERROR__> + IFNZRO TTUHNG&7000 <__ERROR__> + IFNZRO KBUHNG&7000 <__ERROR__> + IFNZRO RDUHNG&7000 <__ERROR__> + IFNZRO LPUHNG&7000 <__ERROR__> + /INTERRUPT-DRIVEN PTR AND TELETYPE HANDLER + +PTR, 0 /CRUDE READER HANDLER +YPTR, SZA CLA + JMP I (IOERR /OUTPUT ILLEGAL TO PTR + IOF + RFC /START READER + JMS I (HANG + RDUHNG /HANG UNTIL COMPLETE + TAD RDRCHR /GET CHARACTER + ION + JMP I PTR /RETURN + +TTY, 0 /BUFFERS 2 CHARS ON OUTPUT, 1 ON INPUT +YTTY, IOF /DELICATE CODE AHEAD + SNA /INPUT OR OUTPUT? + JMP KBD /INPUT + DCA LPT /OUTPUT - SAVE CHAR + TAD TOCHR /GET TTY STATUS + SMA SZA CLA /G.T. 0 MEANS A CHAR IS BACKED UP + JMS I (HANG + TTUHNG /WAIT FOR LOG JAM TO CLEAR + TAD TOCHR /NO CHAR BACKED UP - SEE IF TTY BUSY + CLL RAL /"BUSY" FLAG IN LINK - INTERRUPTS ARE OFF! + CLA CML RAR /COMPLEMENT OF BUSY IN SIGN + TAD LPT /GET CHAR + SPA /IF TTY NOT BUSY, + TLS /OUTPUT CHAR + DCA TOCHR /STORE POS OR NEG, BACKED UP OR BUSY +TTYRET, ION /TURN INTERRUPTS BACK ON + JMP I TTY /AND LEAVE + KBD, TAD KBDCHR /HAS A CHARACTER BEEN INPUT? + SNA CLA + JMS I (HANG + KBUHNG /NO - RUN BACKGROUND UNTIL ONE IS + TAD KBDCHR /GET CHARACTER + DCA LPT + DCA KBDCHR /CHEAR CHARACTER BUFFER + TAD LPT + JMP TTYRET /RETURN WITH INTERRUPTS ON + +KILFPP, FPHLT /BRING FPP TO A SCREECHING HALT + ISZ .-1 + JMP .-1 /WAIT FOR IT TO STOP + FPICL /CLEAN UP MESS HALT HAS MADE IN FPP +BEEORC, SZL /^C OR ^B? + JMP I (7600 /^C - HIYO SILVER, AWAY! + KCC /CLEAR KBD FLAG ON ^B +CTLBER, JMS I ERR /*** THIS MAY BE DANGEROUS! ** + PAGE + /INTERRUPT SERVICE ROUTINES + +INTRPT, DCA INTAC + RAR + DCA INTLNK +VINT, JMP .+4 /** MUST BE AT 403 ** + IFNZRO VINT-403 <___ CHANGE LOADER!!!> + 0 + CDF CIF 0 /USER INTERRUPT ROUTINE GOES HERE + JMS I .-2 + + FPINT /CHECK FOR FPP DONE + JMP LPTEST +FPUHNG, JMP DISMIS /ALWAYS GOES TO RESTRT + +VDISMS, JMP DISMIS /FOR USE BY USERS + JMP DISMIS + JMP DISMIS + +LPTEST, LSF + JMP NOTLPT +LPTLCF, LCF /CLEAR FLAG + TAD I LPGET + SNA CLA /CHECK FOR SPURIOUS INTERRUPT +JMPDIS, JMP DISMIS /GO AWAY IF SO + DCA I LPGET /ZERO CHAR JUST OUTPUT + ISZ LPGET + TAD I LPGET + SPA + DCA LPGET /TAKE CARE OF BUFFER LINKS + SNA + TAD I LPGET /MAKE SURE CHAR IS IN AC + SZA /IS THERE A CHARACTER? + LLS /YES - PRINT IT + CLA + LSF /CHECK FOR IMMEDIATE FLAG +LPUHNG, JMP DISMIS /NO - MAYBE RESTART PROGRAM + JMP LPTLCF /YES - LOOP + +NOTLPT, TSF /CHECK TTY + JMP NOTTTY + TCF /CLEAR FLAG + TAD TOCHR /GET TTY STATUS + SMA SZA /IF THERE IS A CHARACTER WAITING, + TLS /OUTPUT IT. + SMA SZA CLA /CHANGE "WAITING" TO "BUSY", + STL RAR /"BUSY" TO "IDLE". + DCA TOCHR +TTUHNG, JMP DISMIS + /KBD AND PTP INTERRUPTS + +NOTTTY, KSF + JMP NOTKBD + TAD [200 + KRS /USE KRS TO FORCE PARITY BIT + DCA KBDCHR /AND ALSO SO THAT ^C WILL STILL BE IN BUFFER IN OS/8 + TAD KBDCHR + TAD (-202 /CHECK FOR ^C OR ^B + CLL RAR + SNA CLA + JMP CTCCTB /YUP - TAKE SOME DRASTIC ACTION + KCC /DATA CHARACTER - CLEAR FLAG +KBUHNG, JMP DISMIS + +CTCCTB, TAD CTCINH + SNA CLA /ARE WE IN A HANDLER? + JMP NOTINH /NO + TAD INTLNK + CLL RAL /YES - RETURN WITH INTERRUPTS OFF + TAD INTAC /TRUST IN GOD AND RTS + RMF + JMP I 0 + +NOTKBD, PSF + JMP NOTPTP + PCF /P.T. PUNCH INTERRUPT - CLEAR FLAG + DCA POCHR /CLEAR SOFTWARE FLAG +PPUHNG, JMP DISMIS + +NOTPTP, RSF + JMP LPTERR + TAD [200 + RRB /GET RDR CHAR + DCA RDRCHR +RDUHNG, JMP DISMIS + +LPTERR, LSE /TEST FOR LP08 ERROR FLAG + SKP + LIF /DISABLE LP08 INTERRUPTS IF ERROR FLAG ON +DISMIS, TAD INTLNK + CLL RAL + TAD INTAC /RESTORE AC AND LINK + RMF + ION + JMP I 0 /RETURN FROM THE INTERRUPT + +INTAC, 0 +INTLNK, 0 + /BACKGROUND INITIATE/TERMINATE ROUTINE + +HANG, 0 /ALWAYS CALLED WITH INTERRUPTS OFF! + TAD I HANG /GET POINTER TO UNHANGING LOCATION + DCA UNHANG + RDF /GET FIELD CALLED FROM + TAD HCIDF0 + DCA HNGCDF /SAVE FOR RETURN +HCIDF0, CDF CIF 0 + TAD (JMP RESTRT /CHANGE THE "JMP DISMIS" AT THAT LOC + DCA I UNHANG /TO A "JMP RESTRT" + TAD BACKLK + CLL RAL + TAD BACKAC /SET UP BACKGROUND AC AND LINK +BAKCIF, CIF 0 +BAKCDF, CDF 0 + ION + JMP I BACKPC /INITIATE BACKGROUND + +/ COME HERE WHEN THE HANG CONDITION HAS GONE AWAY + +RESTRT, TAD JMPDIS /RESTORE THE UNHANG LOCATION + DCA I UNHANG + TAD INTAC /SUSPEND THE BACKGROUND + DCA BACKAC + TAD INTLNK + DCA BACKLK + TAD 0 + DCA BACKPC + RIB + AND [70 + TAD HCIDF0 + DCA BAKCIF + RIB + JMS I MCDF /*K* OK SINCE BACKGROUND DOESN'T USE MAKCDF + DCA BAKCDF + ISZ HANG +HNGCDF, HLT + JMP I HANG /INTERRUPTS ARE OFF - RETURN + +NOTINH, TAD JMPDIS /IN CASE WE WERE HUNG, WE DON'T WANT + DCA I UNHANG /TO GET "UNHUNG" OUT OF THE ERROR ROUTINE! + JMP I (KILFPP /KILL FPP AND GO TO EXIT OR ERROR + +UNHANG, 0 +BACKAC, 0 +BACKLK, 0 +BACKPC, VBACKG +VHANG= HANG + IFNZRO VHANG-0524 <__ CHANGE LOADER!> + PAGE + /I-O CONVERSION ROUTINES - STARTUP CODE + +RWASCI, JMS I [RWINIT /"READ(N,FMT)" OR "WRITE(N,FMT)" + 2000 /"FORMATTED" BIT + JMS I [FETPC /GET ADDRESS OF FORMAT STMT + DCA FMTDF + JMS I [FETPC + DCA FMTADR + DCA FMTTYP + DCA PFACT /CLEAR SCALE FACTOR + JMS I [GETLMN /EXIT TO MAIN PROGRAM TO GET 1ST VARIABLE + + TAD (FMTPDL-1 +FMTSET, DCA FMTPXR /STORE NEW FORMAT PUSHDOWN POINTER + TAD I FMTPXR + DCA FMTBYT /GET NEW BYTE POINTER (NOTE-FMTPDL CONTAINS A 0) + /MAIN FORMAT DECODING LOOP + +FMTFLP, TAD FMTBYT + DCA FMPBYT /SAVE CURRENT BYTE PTR FOR PARENTHESES HACK +FMTDLP, DCA FMTNUM /ZERO ACCUMULATED NUMBER +FMTCLP, JMS FMTGCH /GET A CHARACTER + ISZ FMTBYT /BUMP BYTE POINTER + JMS I [CHTYPE /CLASSIFY CHAR + 1234; FMTDIG /DIGIT + -42; DBLQOT /" + -44; ABORTO /$ + -55; FMINUS /- + -56; FMTPER /. + -57; SLASH // + -54; COMMA /, + -50; LPAREN /( + -51; RPAREN /) + -47; KWOTE /' + -40; FMTCLP /SPACE + 0 /ANYTHING ELSE + + TAD FMTTYP + SZA CLA /CHECK THAT WE DO NOT HAVE A FIELD OUTSTANDING + JMP I (FMTERR /IF WE DO - ERROR + TAD CHCH /GET FIELD CHARACTER + DCA FMTTYP + TAD FMTNUM + SNA /IF REPEAT COUNT WAS MISSING OR ZERO + IAC /MAKE IT ONE + CMA + DCA N /STORE -(REPEAT COUNT +1) + DCA W /CLEAR WIDTH INITIALLY + ISZ FMTNUM /PRECLUDE "FORMAT ERROR" ON X,P, OR H FORMATS + TAD FMTTYP + AND [7 /IS THE CHARACTER P, X, OR H? + SNA CLA /IF SO, DON'T WAIT +COMMA, JMS I (DOFMT /EXECUTE THE STORED FIELD SPECIFICATION + JMP FMTFLP /BACK FOR MORE + +FMTADR, 0 /ADDRESS OF FORMAT + FMTGCH, 0 /GET CHARACTER FROM FORMAT + JMS FMTGAD /GET WORD CONTAINING CHAR AND L/R SWITCH + CDF 0 + JMS I (FMTGLR /EXTRACT CHARACTER + JMP I FMTGCH + +FMTGAD, 0 /SUBR TO GET A WORD FROM A CHARACTER OFFSET + TAD FMTBYT /GET OFFSET + CLL RAR + CLL + TAD FMTADR /COMPUTE BASE ADDR + [OFFSET/2] + DCA D + RAL + TAD FMTDF + JMS I MCDF /SET UP PROPER DATA FIELD + DCA .+1 + HLT + TAD FMTBYT + RAR + CLA /LEAVE L/R SWITCH IN LINK + TAD I D + JMP I FMTGAD /RETURN WITH WORD IN AC + +FMTDF, 0 /FIELD OF 1ST CHAR OF FORMAT IN BITS 9-11 + +FMTDIG, TAD FMTNUM /DIGIT PROCESSOR + CLL RTL + TAD FMTNUM + CLL RAL /MULTIPLY FMTNUM BY 10 + TAD CHCH /ADD IN THE DIGIT + JMP FMTDLP /STORE IT BACK AND CONTINUE + /PARENTHESIS AND DIGIT ROUTINES + +LPAREN, TAD FMTPXR + TAD (2-FMTPDL + SZA /ARE WE AT PARENTHESIS LEVEL 1? + JMP .+3 /NO + TAD FMPBYT /YES - STORE A POINTER TO THE FIRST DIGIT OF THE + DCA I (FMTPDL-2 /GROUP COUNT PRECEDING THIS PAREN + /AS THE LOOP POINTER FOR LEVEL 1 + TAD [7 + SPA CLA /PUSHDOWN OVERFLOW? +FPOERR, JMS I ERR /YES + AC7775 + TAD FMTPXR + DCA FMTPXR /BUMP PARENTHESIS PUSHDOWN POINTER + TAD FMTBYT + DCA I FMTPXR /SAVE BYTE POINTER + TAD FMTNUM + SNA + IAC /NO GROUP COUNT MEANS COUNT = 1 + CIA + DCA I FMTPXR /SAVE LOOP COUNT + DCA I (FMTPDL-1 /INITIAL GROUP COUNT IS INFINITE! +RPLOOP, AC7776 /COME HERE ON RIGHT PAREN ALSO + TAD FMTPXR /BACK UP FORMAT PDL POINTER + JMP FMTSET /RESTORE FMTBYT FROM TOP OF LIST + +FMPBYT, 0 + +RPAREN, JMS I (DOFMT /EXECUTE PREVIOUS SPEC IF ANY + TAD FMTPXR + TAD (2-FMTPDL /IS THIS THE FINAL RIGHT PAREN? + SNA CLA + JMS I [ENDREC /YES - CHECK FOR END OF FORMAT + ISZ I FMTPXR /BUMP COUNT + JMP RPLOOP /DIDN'T OVERFLOW - LOOP TO BYTE AFTER ( + ISZ FMTPXR /POP UP PARENTHESES STACK + JMP FMTFLP /CONTINUE PAST RIGHT PAREN + PAGE + /QUOTE AND HOLLERITH FORMAT PROCESSORS + +KWOTE, TAD MINUS5 /APOSTROPHE PROCESSOR +DBLQOT, TAD (-42 /QUOTE PROCESSOR + DCA KWODEL /SAVE TERMINATOR + JMS DOFMT /PROCESS PRECEDING FIELD , IF ANY + SKP +KWOTLP, JMS FMTHCV /PROCESS ONE CHARACTER + JMS I [FMTGCH /GET THE NEXT FORMAT CHAR + TAD KWODEL + SZA CLA /IS IT THE TERMINATOR? + JMP KWOTLP /NO - PROCESS IT AND CONTINUE + ISZ FMTBYT /BUMP OVER TERMINATOR + JMS I [FMTGCH + TAD KWODEL + SNA CLA /IS THIS ANOTHER TERMINATOR? + JMP KWOTLP /TWO TERMINATORS PRINT AS ONE + JMP I (FMTFLP /OTHERWISE GO BACK TO FORMAT LOOP + +HFMT, JMS MORE /MORE CHARACTERS? + JMS FMTHCV /YES - PROCESS ONE + JMP HFMT /AND LOOP + +FMTHCV, 0 /ROUTINE COMMON TO H AND QUOTED FORMATS + TAD RWFLAG /PROCESSES ONE CHAR IN OR OUT OF THE FORMAT +H7700, SMA CLA /IN OR OUT? + JMP FMTHIN /IN + JMS I [FMTGCH /OUT - GET THE CHAR + JMS I [FMTOUT /PRINT IT + JMP FMTHCR /RETURN +FMTHIN, JMS I [FMTIN /INPUT - GET THE CHAR FROM THE INPUT LINE + DCA W /SAVE IT + JMS I (FMTGAD + SZL /WHICH SIDE? + JMP FHRGHT /RIGHT SIDE + AND [77 /LEFT - KEEP RIGHT CHAR + DCA MORE + TAD W + CLL RTL + RTL + RTL + TAD MORE /ADD NEW CHAR IN ON THE LEFT + JMP .+3 +FHRGHT, AND H7700 /KEEP THE CHAR ON THE LEFT + TAD W /ADD NEW CHAR IN ON THE RIGHT + DCA I D /RESTORE ALTERED WORD + CDF 0 +FMTHCR, ISZ FMTBYT /BUMP BYTE POINTER + JMP I FMTHCV + +KWODEL, 0 /MUST BE UNIQUE! + MORE, 0 /SUBR TO BUMP REPEAT COUNT AND EXIT ON OVFLO + ISZ N + JMP I MORE +DOFRTN, DCA FMTTYP /INDICATE NO SPECIFICATION COLLECTED + JMP I DOFMT /RETURN FROM "DOFMT" + +DOFMT, 0 /ROUTINE TO PROCESS A FORMAT SPECIFICATION + TAD FMTNUM /GET THE CURRENT NUMBER + DCA D /STORE IT AS DECIMAL POINT SPEC + DCA IFLG + DCA EFLG + DCA GFLG /ZERO CONVERSION FLAGS + TAD FMTTYP + SNA CLA /ANY SPECIFICATION WAITING? + JMP I DOFMT /NO - JUST RETURN + TAD W + TAD D /IF THERE WAS NO W OR D SPECIFICATION, + SNA CLA + JMP FMTERR /ITS AN ERROR + TAD FMTTYP + JMS I [CHTYPE /YES - WHICH ONE? + -30; XFMT /X + -24; TFMT /T + -20; PFMT /P + -14; LFMT /L + -11; IFMT /I + -10; HFMT /H + -7; GFMT /G + -6; FFMT /F +MINUS5, -5; EFMT /E + -4;DF, EFMT /D - EQUIVALENT TO E IF NO D.P. FPP + -2;BF, FFMT /B - EQUIVALENT TO F IF NO D.P. FPP + -1; AFMT /A + 0 /NONE OF THE ABOVE - ERROR +FMTERR, JMS I ERR + ENDREC, 0 /ROUTINE TO END A LINE AND MAYBE THE I/O + JMS I [EOLINE + CLA IAC + AND RWFLAG /LO BIT OF RWFLAG IS "I/O LIST EXHAUSTED" FLAG + SNA CLA /SKIP IF NO MORE ELEMENTS IN I/O LIST + JMP I ENDREC + JMP I [ENDIO /NOW FINISH UP AND LEAVE + +SLASH, JMS DOFMT /EXECUTE THE FIELD SPEC IF ANY + JMS I [EOLINE /TERMINATE CURRENT LINE + JMP I (FMTFLP + +PFMT, CLA CMA + TAD FMTNUM + ISZ MINFLG /P FORMAT - CHECK FOR NEGATIVE SCALE + CIA + DCA PFACT + STA /FALL INTO CODE TO CLEAR MINFLG + DCA MINFLG /SET FLAG ON MINUS + JMP DOFRTN + +FMINUS, JMS DOFMT /EXECUTE PRECEDING SPEC + DCA MINFLG /CLEAR MINUS FLAG + JMP I (FMTFLP + +MINFLG, -1 + +FMTPER, TAD FMTNUM /PERIOD PROCESSOR + DCA W /STORE WIDTH + JMP I (FMTFLP + +ABORTO, JMS DOFMT /$ - SPECIAL HACK TO ALLOW PROMPTS + DCA EOLSW /FAKE BEGINNING OF LINE + DCA I (TTYLF /INHIBIT LF BEFORE NEXT TTY INPUT + JMP I [ENDIO /GO AWAY + PAGE + CHTYPE, 0 /ROUTINE TO CLASSIFY CHARACTERS + DCA CHCH /SAVE CHAR + JMP CHLOOP+1 +CDIGIT, TAD CHCH /CHECK FOR DIGIT + TAD (-72 + CLL + TAD [12 + SZL /IS CHAR A DIGIT? + JMP JMPOUT /YES +CHLOOP, ISZ CHTYPE /SKIP OVER ADDRESS + CLA + TAD I CHTYPE + ISZ CHTYPE + SMA /END OF LIST? + JMP JMPOTX /MAYBE - JUMP WITH CODE IN AC + TAD CHCH + SZA CLA /DOES CHAR MATCH CHAR ON LIST? + JMP CHLOOP /NO - KEEP LOOKING +JMPOUT, DCA CHCH /ZERO CHAR + TAD I CHTYPE + DCA CHTYPE /SET UP TO RETURN INDIRECTLY +JMPOTX, SZA CLA /IS THIS THE END? + JMP CDIGIT /NO - GO CHECK FOR DIGIT + JMP I CHTYPE /GO TO SPECIFIED ADDRESS + + +SKPOUT, 0 /ROUTINE USED BY DATA-HANDLING SPECIFICATIONS + JMS I [MORE /CHECK FOR REPEAT COUNT EXHAUSTED + TAD RWFLAG + CLL RAR + SZA CLA /IF OUTPUT, + ISZ SKPOUT /SKIP RETURN + SZL CLA /IF END OF I/O LIST, + JMS I [ENDREC /DON'T RETURN AT ALL - GO AWAY + JMP I SKPOUT + /A FORMAT PROCESSOR + +AINPUT, TAD (4040 + DCA ACH + TAD (4040 + DCA ACL /INITIALIZE LOW-ORDER WORDS TO BLANKS +AINPTL, JMS GADR + SZL /LEFT OR RIGHT? + JMP AINPTR /RIGHT + JMS I [FMTIN + STL RTL /INPUT CHAR GOES IN HIGH-ORDER + RTL /WITH BLANK IN LOW-ORDER + RTL + JMP AINPTC +AINPTR, JMS I [FMTIN + TAD I FMTGLR /COMBINE INPUT CHAR AND OLD LEFT HALF + TAD [-40 /DELETE PREVIOUS RIGHT-HALF SPACE +AINPTC, DCA I FMTGLR /STORE WORD + ISZ W + JMP AINPTL /LOOP AROUND WIDTH +ANXT, JMS I [GETLMN /GET NEXT ELEMENT +AFMT, TAD D + CIA + DCA W /SAVE FIELD WODTH AS A COUNT + JMS I [SKPOUT /CHECK FOR REPEAT COUNT OVFLO AND I/O DIR + JMP AINPUT +AOTPUT, JMS GADR /OUTPUT - GET ADDRESS OF BYTE + TAD I FMTGLR + JMS FMTGLR /GET BYTE + JMS I [FMTOUT /PRINT IT + ISZ W + JMP AOTPUT /LOOP ON WIDTH + JMP ANXT + +FMTGLR, 0 /SUBR TO EXTRACT A CHAR FROM A WORD + SZL + JMP .+4 /RIGHT HALF + RTR + RTR + RTR /LEFT HALF - ROTATE INTO RIGHT HALF + AND [77 + JMP I FMTGLR + +GADR, 0 /BYTE ADDRESS ROUTINE FOR A FORMAT PROCESSOR + TAD D + TAD W /FORM BYTE OFFSET IN THE RANGE 0 THRU D-1 + CLL RAR + TAD (ACX + DCA FMTGLR + JMP I GADR /LEAVE WITH L/R FLAG IN LINK + /"STOP" ROUTINE - TERMINATES JOB + +CALXIT, TAD EXDVNO + CIA + DCA ACI /GO THROUGH THE FORTRAN UNIT NUMBERS. + DCA I (ENDFLS /*K* TURN "ENDFL" INTO A SUBROUTINE + JMS I (LDDSRN /IF WE FIND A UNIT WHICH IS BEING USED + SNA CLA /AND HAS NOT BEEN ENDFILED, + JMP XITISZ /WE WILL DUMP THE CURRENT BUFFER (IF IT + CLA IAC /IS A FORMATTED OUTPUT FILE) AND + AND FFLAGS /END-FILE IT + SNA CLA + JMS I (ENDFL +XITISZ, ISZ EXDVNO + JMP CALXIT +LPTTWT, TAD I LPGET /WAIT FOR LINE PRINTER AND TELETYPE TO + TAD TOCHR /GO QUIET. + SZA CLA + JMP LPTTWT + ISZ CLNADR /SET UP TO CLOSE OUTPUT FILES +PDPXIT, IOF /ENTER HERE FROM 7605 + CDF 0 /TO PROTECT CLODS WITH PDP 8/E'S + JMS I (7607 + 0210 + 7400 /READ IN CLEANUP ROUTINE + 37 /AND OS/8 PAGE 17600 + JMP .-5 /AYEEEE!! SYSTEM DEVICE GONZO! + CDF CIF 10 + JMP I CLNADR /CLOSE TENTATIVE FILES AND EXIT +CLNADR, CLNUP +EXDVNO, -11 + +ARGLD, 0 /ROUTINE TO GET VALUE OF AN ARG + JMS I [FETPC + AND [7 /THROW AWAY OPCODE (JA) + TAD FLDTM2 + DCA FGPBF + JMS I [FETPC /CONSTRUCT AN FPP INSTRUCTION + DCA BIOPTR + JMS I [FPGO + FGPBF + JMP I ARGLD + +FLDTM2, FLDA+LONG + FTEMP2 + FEXIT + PAGE + /SUBROUTINE TO OPEN A UNIT FOR I/O + +RWINIT, 0 + DCA RWFLAG /DIRECTION IN AC ON ENTRY + AC7776 + AND I RWINIT /IF CALLED FROM BACKSPACE, REWIND OR ENDFILE + SZA CLA /UNIT NUMBER IS IN FAC + JMS I [ARGLD /OTHERWISE, GET UNIT NUMBER + JMS I [FFIX + TAD ACI + CLL CMA + TAD [12 + SZL CLA /CHECK DEVICE NUMBER IN RANGE 0-9 + JMS LDDSRN /LOAD DSRN ENTRY INTO PAGE 0 + SNA CLA /IS UNIT INITIALIZED? +UNTERR, JMS I ERR /NO - ERROR + TAD RWFLAG + SPA /IF WE ARE WRITEING FOR THE FIRST TIME + TAD FFLAGS /ON A UNIT WHICH WAS BEING READ, + CMA RAL /WE MUST BUMP THE RELATIVE BLOCK NUMBER DOWN + SNL SMA CLA /ONE BECAUSE OF A PHILOSOPHICAL DIFFERENCE + JMS I (RD2WR /BETWEEN READ AND WRITE + TAD I RWINIT + TAD RWFLAG /OR THE I/O TYPE AND + CMA + AND FFLAGS /DIRECTION BITS INTO THE FLAG WORD + TAD I RWINIT + TAD RWFLAG + DCA FFLAGS + TAD FFLAGS + CMA RTL + SNL SMA CLA /IT IS ILLEGAL TO ACCESS A FILE IN + JMP UNTERR /FORMATTED AND UNFORMATTED MODES + ISZ RWINIT + TAD ACI + CLL RAL + TAD ACI + TAD (DATABL-4 + DCA XR /STORE POINTER INTO DIRECT-ACCESS TABLE + JMP I RWINIT + /REWIND AND END FILE + +RWIND, JMS RWINIT /GET THE DSRN ENTRY + 0 /DON'T PLAY WITH MODES + AC2000 + TAD FFLAGS + SNA CLA /IF FORMATTED OUTPUT FILE AND NOT EOF'D + JMS DMPBUF /DUMP LAST BUFFER AS A FAVOR +ATLDMK, CLA IAC + AND FFLAGS /KILL ALL FLAG BITS + DCA FFLAGS /EXCEPT "END-FILED" BIT + TAD BADFLD + AND [7400 + DCA CHRPTR + AC7775 + DCA CHRCTR /INITIALIZE BUFFER POINTERS + DCA RELBLK /AND RELATIVE BLOCK # + JMP I [ENDIO /RESTORE DSRN AND EXIT + +ENDFL, JMS RWINIT /*K* USED AS A SUBROUTINE BY CALXIT + 1 /GET DSRN, SET "END FILE" FLAG + TAD FFLAGS /IF THE FILE IS UNFORMATTED, + CMA RAL /OR WAS NOT OUTPUT ONTO, + SNL SMA CLA /THEN ENDFILE DOES NOTHING. + JMS DMPBUF /ELSE DUMP THE FINAL BUFFER + AC3777 + AND FFLAGS /CLEAR WRITE BIT SO WE WILL NOT TRY +SETTOT, DCA FFLAGS /ANYTHING ON A SUBSEQUENT ENDFILE + TAD RELBLK /SET NEW LENGTH OF FILE IN CASE ITS TENTATIVE, + DCA TOTBLK /AND SO WE WON'T READ PAST EOF. +ENDIO, JMS INITMV /SET UP DSRN POINTERS + TAD I XR1 + DCA I XR /STORE BACK THE DSRN ENTRY + ISZ T /FOR THIS LOGICAL UNIT + JMP .-3 + DCA VEOFSW /CLEAR EOFSW AT END OF EVERY READ +ENDFLS, JMP I [RETURN /RETURN TO THE CALLING PROGRAM + JMP I ENDFL /*K* OR RETURN TO CALXIT + +INITMV, 0 /ROUTINE TO SET UP STUFF +ICDF0, CDF 0 + TAD LOGUNT + DCA XR + TAD (HAND-1 + DCA XR1 + TAD (-11 + DCA T + JMP I INITMV + /ROUTINE TO DUMP CURRENT OUTPUT BUFFER WITH ^Z AT THE END + +DMPBUF, 0 + ISZ EOLSW /FORCE COLUMN 1 SWITCH OFF + TAD (7712 /OUTPUT A LINE FEED + JMS I [FMTOUT + TAD HAND /IF THE FILE IS BEING OUTPUT VIA + SMA CLA /AN OS/8 HANDLER, + JMP CLREOL /WE MUST TERMINATE THE BUFFER PROPERLY. + TAD (32 +CTZLP, TAD Z7700 /OUTPUT A ^Z AND FILL BUFFER WITH ZEROES. + JMS I [FMTOUT /NEGATIVE NUMBERS TURN INTO CONTROL CHARS + TAD CHRPTR + AND [377 + TAD CHRCTR /FILL THE BUFFER UNTIL CHRPTR POINTS TO + IAC /A BLOCK BOUNDARY AND CHRCTR = -3 +Z7700, SMA CLA /WE ARE THEN AT BUFFER-END + JMP CTZLP +CLREOL, DCA EOLSW /RESET TO BEGINNING OF LINE + JMP I DMPBUF /RETURN + +/ROUTINE TO MOVE THE PROPER DSRN ENTRY INTO PAGE 0 + +LDDSRN, 0 + TAD ACI / READ/WRITE INIT SINGS THIS SONG, + CLL RTL / (DOO DAH, DOO DAH,) + RAL / DSRN ENTRIES 9 WORDS LONG + TAD ACI / (OH, DEE DOO DAH DAY). + + SNA /DEVICE NUMBER 0 IS SPECIAL - + TAD (PTTY+11-DSRN /IT'S ALWAYS THE TELETYPE + TAD (DSRN-12 + DCA LOGUNT + JMS INITMV /SET UP FOR MOVE + TAD I XR + DCA I XR1 /PUT DSRN ENTRY IN PAGE 0 + ISZ T + JMP .-3 + TAD BADFLD + AND [70 + TAD ICDF0 + DCA BUFCDF /SAVE BUFFER FIELD AS A CDF + TAD HAND + JMP I LDDSRN + PAGE + /BACKSPACE ROUTINE - WORKS ON BINARY OR ASCII FILES + +BKSPC, JMS I [RWINIT + 0 /GET THE DSRN ENTRY WITHOUT ALTERING MODE + TAD HAND + SMA CLA + JMP I [UNTERR /UNIT MUST BE BLOCK ORIENTED + AC2000 + AND FFLAGS + SZA CLA /IS FILE FORMATTED? + JMP BKASCI /YES - PAIN IN NECK + JMS BMPBLK /UNFORMATTED FILE - REREAD LAST BLOCK + TAD CHRPTR + TAD [377 + DCA T + JMS BUFFLD /SET DATA FIELD TO FIELD OF BUFFER + TAD I T /LOOK AT LAST WORD IN BUFFER + CIA /REGARD IT AS THE NUMBER OF BLOCKS/RECORD + TAD RELBLK + DCA RELBLK /RELBLK POINTS TO FIRST BLOCK OF PREV. REC + JMP I [ENDIO + +BMPBLK, 0 /SUBR TO BUMP BLOCK # BACK AND READ + CMA CLL /AC MAY NOT BE 0 ON ENTRY + TAD RELBLK + DCA RELBLK /BUMP BLOCK BACK + SNL + JMP I (ATLDMK /BACKSPACED TOO FAR - CALL IT QUITS + DCA CHRPTR /ZERO CHRPTR TO FORCE A READ FROM MASSIO + JMS I [MASSIO /READ A BLOCK + JMP I BMPBLK + +/**** NULL JOB GOES HERE FOR LACK OF A BETTER PLACE **** + +NULLJB, TAD N2525 +NULLLP, ISZ N2525 /PUT THE FAMOUS "POLY BASIC PATTERN" + JMP NULLLP /IN THE AC LIGHTS + ISZ NUMISZ + JMP NULLLP + CML CMA RAR + DCA N2525 + TAD [-4 + DCA NUMISZ + JMP I (VBACKG /GOT SOMETHING MORE USEFUL TO DO? +N2525, 2525 +NUMISZ, -4 + /BACKSPACE FOR FORMATTED FILES + +BKLORD, TAD I CHRPTR + ISZ CHRPTR + NOP + AND [177 /GET 7 BITS + TAD (-15 /COMPARE WITH C.R. - SINCE WE SKIPPED + SNA CLA /THE FIRST ONE THIS WILL BELONG TO THE PREVIOUS + JMP I [ENDIO /LINE AND WE WILL BE DONE (HAH!) +BKASCI, JMS I (MASBMP /A COMPLICATED MESS - FIRST BUMP THE + SKP /CHARACTER POINTER BACK TWO PLACES + JMP BKGTCH /AND THEN FETCH A CHARACTER. THIS WILL IGNORE + TAD BADFLD /THE LAST CHAR READ/WRITTEN (WHICH SHOULD + AND [7400 /BE A CARRIAGE RETURN). + CIA + TAD CHRPTR + CLL RAR + SZA CLA /TEST WHETHER WE HAVE TO READ AN OLD BUFFER + JMP BKNORD /NO + TAD CHRCTR /SAVE POSITION IN CURRENT DOUBLEWORD + DCA GETCH3 + DCA CHRPTR + AC4000 /IF WE ARE BACKSPACING AN OUTPUT FILE, + TAD FFLAGS /WE MUST SAVE THE INFORMATION IN THE + SPA /CURRENT BUFFER BY WRITING IT OUT. + JMP .+4 + DCA FFLAGS /ALSO CHANGE THE UNIT TO AN INPUT FILE + AC4000 /(RWINIT TAKES CARE OF SWITCHING BACK TO OUTPUT) + JMS I [MASSIO + CLA IAC /WE DON'T WANT THE LAST BLOCK READ/WRITTEN, + JMS BMPBLK /THAT'S IN CORE - WE WANT THE ONE + TAD GETCH3 /BEFORE THAT. + DCA CHRCTR + TAD CHRCTR + TAD (401 + SKP /COMPUTE WORD POINTER FROM CHAR POINTER +BKNORD, STA + TAD CHRPTR + DCA CHRPTR /BUMP WD PTR BACK 1 +BKGTCH, JMS I (MASBMP /NOW GET A CHARACTER - THIS LOOKS A LOT + JMP BKLORD /LIKE THE INPUT ROUTINE + JMS GETCH3 + JMP BKLORD+1 + GETCH3, 0 /COMMON CODE BETWEEN BACKSPACE AND INPUT + TAD I CHRPTR + AND [7400 + DCA BMPBLK /HANDY TEMPORARY + ISZ CHRPTR + TAD I CHRPTR + AND [7400 + CLL RTR + RTR /COMBINE TWO 4-BIT QUANTITIES + TAD BMPBLK /INTO A CHARACTER + CLL RTR + RTR + JMP I GETCH3 + +DATABL, ZBLOCK 33 /DIRECT ACCESS TABLE + PAGE + /I,E,F,AND G FORMAT CONVERSIONS + +IFMT, TAD D + DCA W /SET WIDTH PROPERLY + DCA D /FOR SCALING PURPOSES + STA + DCA IFLG + JMP FFMT + +GFMT, STA + DCA GFLG /SET G AND E FLAGS + +EFMT, STA + DCA EFLG /SET E FLAG + JMP FFMT + +IGEF, JMS I [GETLMN /MAIN LOOP FOR CONVERSIONS - SKIPPED 1ST TIME +FFMT, TAD D + DCA OD /SAVE COUNT OF POST-D.P. DIGITS + TAD IFLG + SNA CLA /APPLY THE P-SCALE FACTOR + TAD PFACT /ONLY IF THE FORMAT IS NOT I + DCA PFACTX + DCA SCALE /DON'T LOOK FOR TROUBLE + JMS I [SKPOUT /CHECK IF MORE AND TEST DIRECTION + JMP I (IGEFIN /INPUT + STA + DCA I [FFNEG /USE NEGATE ROUTINE HEADER AS SIGN FLAG + TAD EFLG + CLL RAL + CLL RAL /0 IF NOT E, -4 IF E + TAD W /THIS PROVIDES FOR THE EXP. FIELD (IF E FMT) + DCA OW /OR THE 4 TRAILING SPACES (IF G FMT) + TAD ACH + SNA + JMP SKPSHT /AC IS ZERO - SKP A LOT OF SHT + SPA CLA + JMS I [FFNEG /AC<0 - NEGATE IT AND SET FLAG (CLEVER) +SCALUP, DCA SCALE + TAD ACX + SMA SZA CLA /AC<1.0? + JMP GT1 /NO + JMS I [FPGO /YES - MULTIPLY BY 10.0 + FMUL10 + STA + TAD SCALE /BUMP POWER OF TEN + JMP SCALUP + /I,G,E,F, OUTPUT CONVERSIONS - NUMBER IS NOW =>1.0 + +GT1, JMS I (SCALDN /NOW DECREASE IT TO THE INTERVAL [0,1) + JMS I [FPGO /SAVE IT AWAY + FSTTMP + TAD [7 + JMS OSCALE + JMS I [FPGO /USE IT TO ROUND THE NUMBER TO BE OUTPUT + FADTMP + JMS I (SCALDN /WE COULD HAVE ROUNDED FROM .999... TO 1.000... +SKPSHT, TAD GFLG /ENTER HERE IF NUM WAS 0 - SCALE=0 + SNA CLA + JMP NOTG /NOT G FORMAT + TAD SCALE /G FORMAT - TEST FOR OUT OF F FORMAT RANGE + TAD PFACTX + CIA CLL /F FORMAT RANGE IS [.1,10**(D VALUE)) + TAD OD + SNL + JMP USEE /IF OUT OF BOUNDS USE E FORMAT (FLAG IS SET) + DCA OD /REDUCE D VALUE BY SCALE FACTOR + DCA EFLG /TO RETAIN CORRECT # OF SIG. DIGITS +USEE, CLA + JMP NOTG + +/SET UP TO PRINT DIGITS + + +DIGCNT, 0 + TAD PFACTX /COMPUTE EXPONENT JUST IN CASE E FORMAT + CIA + TAD SCALE + DCA FMTNUM + TAD EFLG + SNA CLA /NOW COMPUTE THE NUMBER OF DIGITS BEFORE THE D.P. + TAD SCALE /TAKE SCALE FACTOR INTO ACCOUNT IF NOT E FORMAT + TAD PFACTX /TAKE P FACTOR INTO ACCOUNT IF NOT I OR F/G + DCA SCALE /STORE THE NUMBER OF DIGITS BEFORE THE D.P. + TAD I [FFNEG /INCREASE NUMBER OF LEADING BLANKS BY 1 + SPA CLA /IF THE NUMBER IS POSITIVE. THIS DEPENDS ON + ISZ OW /THIS LOCATION BEING BELOW 4000. + TAD SCALE /GET THE NUMBER OF PRE-D.P. DIGITS (AS NEGATIVE #) + SPA SNA + CLA IAC /IF NONE, PRINT A 0 SO COUNT AS 1 + TAD OD /REDUCE THE WIDTH BY THIS NUMBER + CMA + TAD OW /REDUCE IT AGAIN BY THE POST-D.P. DIGIT COUNT + CIA + TAD IFLG /AND AGAIN BY 1 FOR THE D.P. (IF NOT I FORMAT) + JMP I DIGCNT +OW, 0 + /I,G,E,F FORMAT - ROUTINE TO SCALE ROUNDING FACTOR + +OSCALE, 0 /SUBR TO SCALE .5 THE CORRECT # OF TIMES + DCA NPLCS /MAX IN AC ON ENTRY + DCA ACX + AC2000 /FORM A FLOATING 0.5 IN ORDER + DCA ACH /TO ROUND THE NUMBER BEFORE PRINTING. + DCA ACL + TAD EFLG /FIGURE OUT HOW TO SCALE IT - + SNA CLA /THE THEORY IS THAT IT SHOULD BE SCALED + TAD SCALE /DOWN BY THE NUMBER OF SIGNIFICANT + DCA T /PRINTING DIGITS. THIS CAN BE + TAD SCALE /EXPRESSED AS: + CIA CLL /(P FACTOR) * (NOT (G FMT PRINTING AS F)) + TAD OD / + (SCALE FACTOR) * (NOT E FMT) + (D VALUE). + SZL CLA /THE SCALE FACTOR IS < 0 FOR + TAD GFLG /NUMBERS < .1, WHICH REDUCES + SNA CLA /THE # OF SIG. DIGITS VIA LEADING ZEROS. + TAD PFACTX /IF THERE ARE < 0 SIG. DIGITS + TAD T /IT DOESN'T MATTER WHAT WE DO + TAD OD /SINCE THE NUMBER WILL PRINT AS + SMA /0.00000 ANYWAY. + CMA /IF THERE ARE >NPLCS SIG. PRINTING DIGITS + TAD NPLCS /THE ROUNDING GETS MEANINGLESS SO MAKE + SPA /THE EXCESS DIVISIONS DIVIDES BY 2 INSTEAD + DCA ACX / OF BY 10. THIS FUDGE WORKS QUITE WELL + CIA /FOR NUMBERS OF UP TO NPLCS+2 + TAD NPLCS /SIGNIFICANT DIGITS. + CIA + DCA T + JMP .+3 +FDIVLP, JMS I [FPGO /SCALE THE .5 DOWN THE CORRECT NUMBER OF TIMES + FDIV10 + ISZ T + JMP FDIVLP + JMP I OSCALE +NPLCS, 0 +ONE, 1;2000;0 + PAGE + /I,G,E,F OUTPUT CONVERSION - ACTUAL OUTPUT SECTION + +OUTNUM, SMA /CHECK FOR FIELD OVERFLOW + JMP ASTSK1 /YES - PRINT ******* + JMS OBLNKS /PRINT LEADING BLANKS - AC IS NOT 0! + /***IMPORTANT - OBLNKS CLEARS AC1 *** + AC7775 + ISZ I [FFNEG /IF SIGN IS NEGATIVE, + JMS DIGIT /OUTPUT A MINUS SIGN + CLA /OTHERWISE OUTPUT NOTHING + TAD ACX + SNA /ALIGN THE FAC MANTISSA INTO A DOUBLEWORD + JMS I [AL1 /FRACTION IN THE RANGE [.1,1) + IAC /THIS INVOLVES SHIFTING THE MANTISSA + CMA /RIGHT BY (-ACX-1) PLACES + SMA /WHERE A NEGATIVE NUMBER MEANS A LEFT SHIFT. + JMS I [ACSR + CLA + TAD ACL /NOW MOVE THE FAC DOWN A WORD SO THAT + DCA AC1 /WHEN WE MULTIPLY BY 10 THE OVERFLOW APPEARS + TAD ACH /IN THE HIGH-ORDER WORD + DCA ACL + TAD SCALE + SPA SNA /DO WE HAVE DIGITS TO THE LEFT OF THE D.P.? + JMP PRZERO /NO - PRINT A ZERO THERE + JMS DIGITS /YES - PRINT THEM +PRDCPT, TAD IFLG + SZA CLA + JMP I (IGEF /IF I FORMAT, WE'RE DONE NOW + AC7776 + JMS DIGIT /OTHERWISE PRINT DECIMAL POINT + TAD SCALE + SMA CLA /CHECK WHETHER WE NEED TO PRINT LEADING ZEROS + JMP NOLZRO /NO + TAD SCALE + DCA T +LZLOOP, STA CLL + TAD OD /BUMP D VALUE DOWN BY ONE + SNL /IF IT GOES NEGATIVE, + JMP NOMOAC /WE'VE RUN OUT OF FIELD WIDTH + DCA OD + JMS DIGIT /PRINT A ZERO + ISZ T /UNTIL THE COUNT (OR THE WIDTH) RUNS OUT + JMP LZLOOP +NOLZRO, TAD OD + SZA /IF THERE ARE ANY DIGITS YET TO BE PRINTED, + JMS DIGITS /PRINT THEM + /I,G,E,F OUTPUT CONVERSION - FINISH UP + +NOMOAC, CLA + TAD EFLG + SNA CLA /E FORMAT? + JMP CHKG /NO - CHECK FOR G FORMAT OUTPUT AS F + JMS EXPFLD + JMP I (IGEF +EXPFLD, 0 + TAD (5 + JMS I [FMTOUT /OUTPUT "E" + TAD FMTNUM /GET EXPONENT + CLL + SPA + CML CIA /SEPARATE INTO MAGNITUDE AND SIGN + DCA FMTNUM /SAVE MAGNITUDE + RTL + TAD (-5 /PRINT + OR - + JMS DIGIT + DCA T /INITIALIZE QUOTIENT OF DIVISION +DVELP, TAD FMTNUM /SUBTRACT 10 FROM EXPONENT + TAD [-12 + SPA /DID IT GO NEGATIVE? + JMP PRNTXP /YES - DONE + DCA FMTNUM /NO - STORE IT BACK + ISZ T /BUMP QUOTIENT + JMP DVELP /LOOP +PRNTXP, CLA + TAD T + TAD [-12 + SMA CLA + JMP ASTSK3 + TAD T + JMS DIGIT + TAD FMTNUM + JMS DIGIT /PRINT TWO DIGITS OF EXPONENT + JMP I EXPFLD + +CHKG, TAD GFLG + SNA /WAS IT G FORMAT? + JMP I (IGEF /NO - F OR I - DONE + DCA EFLG /RE-SET EFLG SINCE WE ZEROED IT BEFORE + TAD (-5 + JMS OBLNKS /OUTPUT 4 BLANKS + JMP I (IGEF /DONE WITH G FORMAT OUTPUT + +PRZERO, CLA /COME HERE IF NO SIG. DIGITS LEFT OF D.P. + JMS DIGIT /PRINT A ZERO + JMP PRDCPT /CONTINUE + +ASTSK3, AC0002 + JMP .+3 +ASTSK1, CLA /CLEAR THE AC + TAD W /GET THE FIELD WIDTH + JMS I [ASTRSK + JMP I (IGEF + /I,G,E,F OUTPUT CONVERSION - OUTPUT SUBROUTINES + +OBLNKS, 0 /SUBROUTINE TO PRINT A STRING OF BLANKS + DCA AC1 /MUST LEAVE AC1 ZERO ON EXIT SO THAT + JMP .+3 /FAC LEFT SHIFT WON'T SHIFT IN GARBAGE LATER ON + TAD [40 + JMS I [FMTOUT /OUTPUT A BLANK + ISZ AC1 + JMP .-3 /LOOP + JMP I OBLNKS /RETURN + +DIGITS, 0 /ROUTINE TO OUTPUT A STRING OF DECIMAL DIGITS + CIA + DCA T +DGLOOP, TAD AC1 + DCA AC2 /COPY AC INTO OPERAND FOR ADDITION LATER ON + TAD ACL + DCA OPL + DCA ACH /CLEAR "OVERFLOW WORD" + JMS I [AL1 + JMS I [AL1 /FAC=FAC*4 + DCA OPH + JMS I [OADD + JMS I [AL1 /FAC=ORIGINAL FAC*10 + TAD ACH /GET OVERFLOW + JMS DIGIT /PRINT IT + ISZ T /LOOP FOR SPECIFIED NUMBER + JMP DGLOOP + JMP I DIGITS /RETURN + +DIGIT, 0 /ROUTINE TO OUTPUT A DIGIT + TAD [60 + JMS I [FMTOUT /TRIVIAL, ISN'T IT? + JMP I DIGIT + PAGE + /I,G,E,F INPUT CONVERSION + +IGEFIN, STA /OD CONTAINS SCALING IF NO D.P. IN INPUT + DCA DPSW /INITIALIZE D.P. SW + STA + DCA INESW /DITTO EXPONENT SWITCH + TAD W + CMA + DCA FMTNUM /GET CHAR COUNT +INERSM, DCA ACX /RE-ENTER HERE AFTER SEEING "E" + DCA ACH /CLEAR FLOATING AC + DCA ACL + STA + JMP INMINS /SET SIGN PLUS + +INGCH, JMS I [FMTIN /GET A CHAR + JMS I [CHTYPE /CLASSIFY IT + 1234; IDIGIT /DIGIT + -56; INDCPT /. + -53; INLOOP /+ + -55; INMINS /- + -5; INE /E + -40; IBLDIG /BLANK - TREAT LIKE 0 IN FORTRAN STANDARD + -54; INEONM /, + 0 /OTHER - ERROR +INER, JMS I ERR + +INDCPT, DCA OD /ZERO COUNT OF DIGITS AFTER D.P. + ISZ DPSW /TEST AND SET D.P. SWITCH + JMP INER /WHOOPS - TWO D.P.S IN A NUMBER + JMP INLOOP /KEEP GOING + +IBLDIG, TAD EOLSW /SINCE THE BLEEPING STANDARD DOESN'T COVER + SZA CLA /TELETYPE I/O, WE KEEP SOME COOL BY IGNORING + JMP INLOOP /BLANKS CREATED BY EARLY LINE TERMINATION. + +IDIGIT, TAD CHCH + DCA DGT+1 /SAVE THE DIGIT + JMS I [FPGO /FORM 10*FAC + DIGIT IN FAC + ACMDGT + TAD DPSW + SNA CLA + ISZ OD /BUMP DIGIT COUNT IF D.P. SEEN + JMP INLOOP + INMINS, DCA I [FFNEG /SET SIGN NEGATIVE + +INLOOP, ISZ FMTNUM + JMP INGCH /LOOP UNTIL WIDTH EXHAUSTED +INEONM, ISZ I [FFNEG /CHECK IF SIGN NEGATIVE + JMS I [FFNEG /YES - NEGATE + ISZ INESW /SEE IF "E" SEEN + JMP FIXUPE /YES - WE HAVE EXPONENT, NOT NUMBER + TAD PFACTX /NO "E" SEEN - SCALE USING P FACTOR + +SCALIN, TAD OD /GET SCALING FACTOR + STL + SNA + JMP I (IGEF /NO SCALING NECESSARY + SMA + CIA CLL /AC CONTAINS MAGNITUDE, LINK CONTAINS SIGN + DCA OD + RTL + RAL /AC CONTAINS 0 IF DIVIDE, 4 IF MULTIPLY + TAD (FDIV10 + DCA IGEFOP + JMS I [FPGO /MULTIPLY OR DIVIDE BY 10.0 +IGEFOP, 0 + ISZ OD + JMP IGEFOP-1/MULT OR DIV APPROPRIATE NUMBER OF TIMES + JMP I (IGEF /RETURN FOR MORE + +INE, ISZ INESW /SEE IF THIS IS THE SECOND "E" + JMP INER /YES - ERROR + ISZ DPSW /FORCE DP SW ON (TO INHIBIT D.P. AFTER E) + TAD OD /USE SCALE FACTOR ONLY IF D.P. SEEN + DCA SCALE /SAVE SCALE FACTOR + ISZ I [FFNEG + JMS I [FFNEG /GET SIGN OF NUMBER CORRECT + JMS I [FPGO /SAVE IT TEMPORARILY + FSTTM2 + JMP INERSM /GO COLLECT EXPONENT + +FIXUPE, JMS I [FFIX + TAD ACI /GET EXPONENT + CIA + TAD SCALE /ADD IN EXPONENT TO D.P. SCALE FACTOR + DCA OD + JMS I [FPGO /GET NUMBER BACK IN FAC + FLDTM2 + JMP SCALIN + +DPSW, 0 +DGT, 13;0;0;0;0;0 +NOTG, JMS I (DIGCNT + DCA SCALDN + TAD IFLG + SNA CLA + JMP NOTI + TAD SCALE + TAD (-7 + SPA CLA +NOTI, TAD SCALDN + JMP I (OUTNUM + SCALDN, 0 /SUBROUTINE TO SCALE THE FAC LESS THAN 1.0 + TAD ACX + SPA SNA CLA /IS THE FAC => 1.0? + JMP I SCALDN /NO - WE'RE DONE + JMS I [FPGO /DIVIDE BY TEN + FDIV10 + ISZ SCALE /BUMP POWER OF TEN + 0 /BACKUP FOR WIDTH + JMP SCALDN+1 /LOOP + +ASTRSK, 0 + CIA + DCA T + TAD (52 + JMS I [FMTOUT + ISZ T + JMP .-3 + JMP I ASTRSK /GET NEXT ELEMENT + +INESW, 0 /"E SEEN" SWITCH ON INPUT + PAGE + /L AND X FORMATS , T FORMAT INPUT + +TFMTIN, JMS I [FMTIN /FORCE INPUT BUFFER NON-EMPTY + CLA /BY FETCHING AND WASTING A CHARACTER + TAD (INBUFR + DCA INXR + DCA EOLSW /SET TO BEGINNING OF LINE + JMP XFMT +XFMTIN, JMS I [FMTIN +H7600, 7600 /WASTE AN INPUT CHAR +XFMT, JMS I [MORE /ANY MORE CHARS? + TAD RWFLAG /YES - IN OR OUT? + SMA CLA + JMP XFMTIN /IN +TPPLBL, TAD [40 /HERE WITH AC=13 TO OVERPRINT ON T OUTPUT + JMS I [FMTOUT /OUT + JMP XFMT + +LINGCH, JMS I [FMTIN + JMS I [CHTYPE /GET AND CLASSIFY CHARACTER + -40; LINLP /BLANK + -24; LINTRU /T + -6; LINFLS /F + 0 /OTHER - ERROR + JMP I (INER + +LINTRU, TAD (4001 +LINFLS, CLL RAR /PUT EITHER 0.0 OR 1.0 IN THE FAC + DCA ACH + DCA ACL + RAL + DCA ACX +LINLP, ISZ W + JMP LINGCH /LOOP ON FIELD WIDTH + +LNXT, JMS I [GETLMN /GET NEXT ELEMENT FOR I/O +LFMT, TAD D + CMA + DCA W /SAVE WIDTH AS A COUNT + JMS I [SKPOUT /IN OR OUT? + JMP LINFLS /IN + CLA IAC + TAD W + JMS I (OBLNKS /OUTPUT W-1 BLANKS + TAD ACH + SZA CLA + TAD (16 + TAD (6 /NON-ZERO IS TRUE, ZERO FALSE + JMS I [FMTOUT /OUTPUT T OR F + JMP LNXT /NEXT VICTIM + /T FORMAT OUTPUT AND RANDOM SUBROUTINES + +TFMT, TAD D + CIA + DCA N /USE N TO FAKE OUT "X" FMT ROUTINE + TAD RWFLAG + SMA CLA + JMP TFMTIN /INPUT + TAD N + TAD EOLSW /COMPARE DESIRED POSITION WITH CURRENT ONE + SPA + JMP TPBLNK /AFTER - SPACE TO IT + JMS EOLINE /OUTPUT CR AND ZERO EOLSW + JMS I [MORE /KLUDGE FOR "T1" FORMAT + TAD (13 /FAKE X FORMAT INTO PRINTING + JMP TPPLBL /A + AND (N-1) SPACES +TPBLNK, DCA N /SAVE DIFFERENCE BETWEEN POSITIONS + JMP XFMT /GO SPACE OUT + +EOLINE, 0 /SUBROUTINE TO TERMINATE I/O LINE + TAD RWFLAG /CAUTION - AC LO-ORDER BITS MAY NOT BE 0 + SPA CLA /INPUT OR OUTPUT? + JMP EOOUTL /OUTPUT + JMS I [FMTIN /FORCE INPUT BUFFER NON-EMPTY + CLA + TAD (INBUFR-1 + DCA INXR /SET XR TO NEGATIVE WORD AT THE + JMP .+3 /BEGINNING OF THE INPUT BUFFER +EOOUTL, TAD (7715 + JMS I [FMTOUT /OUTPUT A CARRIAGE RETURN + DCA EOLSW /CLEAR EOLSW FOR INPUT AND OUTPUT + JMP I EOLINE + /ROUTINE TO MOVE A HANDLER INTO FIELD 0 + +GETHND, 0 /HANDLER CODE WORD IN AC ON ENTRY + DCA HCW /SAVE HANDLER CODE WORD + TAD [7774 + AND HCW /KNOCK OUT ION AND FORMS CTL BITS + CIA + SZA /IF HANDLER IS NOT RESIDENT, + TAD HKEY /SEE IF THE HANDLER IS ALREADY + SNA CLA /IN THE HANDLER AREA IN FIELD 0 + JMP HINF0 /YES + TAD HCW /NO - PUT IT THERE + AND [70 + TAD HCDF0 + DCA HNDCDF /GET CDF TO FIELD IN WHICH HANDLER RESIDES + TAD HCW + AND H7600 + TAD (-1 /GET POINTER TO HANDLER ADDRESS + DCA XR1 /IN THAT FIELD + TAD (HPLACE-1 + DCA XR /ALSO TO HANDLER AREA IN FIELD 0 + TAD [7400 /SET UP COUNT OF 7400 + DCA HKEY /INDEPENDENT OF HANDLER SIZE +HNDCDF, HLT + TAD I XR1 +HCDF0, CDF 0 + DCA I XR /MOVE HANDLER INTO HANDLER AREA + ISZ HKEY + JMP HNDCDF + TAD [7774 + AND HCW + DCA HKEY /SET NEW KEY CODE WORD +HINF0, CLA IAC + AND HCW + SNA CLA /INTERRUPTS ALLOWED? +YHIOF, IOF /NO - TOO BAD + ISZ CTCINH /INHIBIT ^C DURING HANDLER CALL + JMP I GETHND +HKEY, 0 +HCW, 0 + PAGE + /CHARACTER INPUT ROUTINE - LINE AT A TIME + +FMTIN, 0 + TAD EOLSW + SNA /END OF LINE ALREADY FOUND? + TAD I INXR /NO - GET CHAR FROM LINE BUFFER + SPA /TIME TO READ A NEW LINE? + JMP READLN /YES + SNA /END OF LINE? + JMP INEOL /YES - SET INDICATOR + AND [77 /CONVERT TO SIXBIT + JMP I FMTIN /RETURN WITH IT +INEOL, TAD [40 +UNPKLN, DCA EOLSW /SET EOL INDICATOR TO A BLANK + JMP FMTIN+1 /AND RETURN BLANKS FROM HERE ON IN +READLN, DCA EOLSW /USE EOLSW AS A COUNT SO IT WINDS UP 0 + TAD HAND + TAD (-TTY + SNA CLA /IS IT TELETYPE INPUT? + STA /YES - SET TTY FLAG + DCA TTYFLG + JMS ECHO +TTYLF, 12 /ECHO LF IF TTY INPUT + TAD [12 /TTYLF IS ZEROED BY ABORTO + DCA TTYLF + +READLP, CLA + TAD HAND + SPA CLA /CHARACTER ORIENTED DEVICE? + JMP MASSIN /NO - UNPACK CHAR FROM BUFFER + JMS I HAND /GET A CHARACTER +GOTCHR, AND [177 /STRIP OFF PARITY + JMS I [CHTYPE /CLASSIFY IT + -15; INCRET /CARRIAGE RETURN + -177; RUBOUT /RUBOUT + -11; INTAB /TAB + -25; CTRLU /^U + -32; INEOF /^Z + 0 /ANYTHING ELSE + TAD CHCH + TAD [-40 + SMA /IF CHARACTER IS >37, + JMS INPUTC /STORE IT AND ECHO IT IF TTY + JMP READLP + /CHARACTER INPUT ROUTINE - SPECIAL CHARACTER HANDLERS + +INTAB, JMS INPUTC /TAB - INSERT (AND ECHO) BLANKS + TAD INXR + AND [7 + SZA CLA /UNTIL A COLUMN MULTIPLE OF 8 IS REACHED + JMP INTAB + JMP READLP + +RUBOUT, TAD EOLSW + CIA + TAD I (INBUFR /IGNORE RUBOUTS IF LINE EMPTY + AND TTYFLG + SNA CLA + JMP READLP /OR IF NON-TTY INPUT + JMS ECHO + 134 /ECHO A BACKSLASH +IBAKUP, STA + TAD INXR + DCA INXR /BACK UP LINE POINTER + STA + TAD EOLSW + DCA EOLSW /AND CHAR COUNTER + JMP READLP + +INEOF, TAD VEOFSW /CHECK SWITCH SET BY "CHKEOF" LIBRARY ROUTINE + SNA /WAS HE EXPECTING AN EOF? +EOFERR, JMS I ERR /NO + JMS I MCDF + DCA .+1 + HLT /CDF TO FIELD OF INDICATOR VARIABLE + AC2000 + DCA I VEOFSW+1 /SET VARIABLE TO .5 + CDF 0 /FALL INTO CARRIAGE RETURN CODE + +INCRET, DCA I INXR /CARRIAGE RETURN - ZERO OUT REST OF LINE + SKP +CTRLU, STA /SNEAKY, SNEAKY! + TAD (INBUFR + DCA INXR /RESET XR TO FETCH LINE CHARS + JMS ECHO + 15 /ECHO THE C.R. + JMP UNPKLN /BACK TO FETCH FIRST CHAR + +INPUTC, 0 /ROUTINE TO STORE AND ECHO A CHAR + TAD [40 + DCA INTMP + JMS ECHO +INTMP, 0 /ECHO CHAR IF TTY INPUT + TAD INTMP + DCA I INXR /STORE CHAR IN LINE BUFFER + ISZ EOLSW + JMP I INPUTC /RETURN IF NO OVERFLOW + JMP IBAKUP /IGNORE CHAR IF OVERFLOW + ECHO, 0 /ROUTINE TO ECHO CHAR IF TTY INPUT + TAD I ECHO /GET CHAR + AND TTYFLG + SZA /SHOULD WE ECHO? + JMS I HAND /YES + JMP I ECHO /RETURN TO CHARACTER - ITS SMALL +TTYFLG, 0 + +/CHARACTER INPUT ROUTINE - MASS STORAGE SECTION + +MASSIN, JMS MASBMP /GET BUFFER FIELD AND CHAR NUMBER + JMP INLORD /CHAR 1 OR 2 - STRAIGHTFORWARD + JMS I (GETCH3 /USE COMMON SUBROUTINE + JMP MASICM /GO TO COMMON CODE + +INLORD, JMS I [MASSIO /CHECK IF WE SHOULD READ IN A BUFFERLOAD + JMS BUFFLD /SET FIELD OF BUFFER + TAD I CHRPTR +MASICM, ISZ CHRPTR /GET THE CHAR (IN LOW 8 BITS) AND BUMP PTR + NOP /WATCH END OF FIELD FUNNYBUSINESS! + CDF 0 /RESET DATA FIELD + JMP GOTCHR /GO EXTRACT SEVEN BIT CHARACTER + +MASBMP, 0 + JMS BUFFLD /SET TO BUFFER'S DATA FIELD + ISZ CHRCTR /BUMP CHAR COUNTER + JMP I MASBMP /CHAR 1 OR 2 - NO SWEAT + AC7775 + DCA CHRCTR /CHAR 3 - RESET CHAR CTR + AC7776 + TAD CHRPTR /BUMP BACK CHAR PTR + DCA CHRPTR + ISZ MASBMP + JMP I MASBMP /SKIP RETURN + PAGE + /CHARACTER OUTPUT ROUTINE + +FMTOUT, 0 + TAD [40 /FIRST CONVERT SIXBIT TO ASCII + SMA /CTL CHARS COME IN NEGATIVE + AND [77 + TAD (240 + DCA OCHAR /SAVE ASCII CHAR (WITHOUT PARITY BIT) + TAD EOLSW + SZA CLA + JMP NOT1ST /FIRST CHAR IS DECODED FOR FORMS CONTROL + AC0002 /CHECK TO SEE IF THIS UNIT + AND HCODEW /SHOULD RECEIVE FORMS CONTROL + SZA CLA + JMP LFPLCH /NO - JUST PRINT A LINE FEED AND THE CHAR + TAD OCHAR + JMS I [CHTYPE /CLASSIFY CONTROL CHAR + -261; OUTFFX /1 - TOP OF FORM + -260; OUT2LF /0 - DOUBLE SPACE + -253; NOLF /+ - OVERPRINT + 0 /ANYTHING ELSE - SINGLE SPACE + JMP OUTLF + +OUTFFX, TAD HAND + TAD (-TTY /IF HANDLER IS TTY OUTPUT TWO LINE FEEDS + SZA CLA /INSTEAD OF A FORM FEED + JMP OUTFF +OUT2LF, TAD [12 + DCA OCHAR /SET 2ND CHAR TO LINE FEED +LFPLCH, STA + DCA EOLSW /SET SWITCH FOR 2ND CHAR + TAD OCHAR + DCA CHCH /SAVE CHARACTER AWAY +OUTLF, AC7776 +OUTFF, TAD F214 /SUBSTITUTE THE APPROPRIATE FORM CONTROL + DCA OCHAR /FOR THE CHARACTER +NOT1ST, TAD HAND + SPA CLA /CHARACTER ORIENTED DEVICE? + JMP MASOUT /NO - PACK CHAR INTO BUFFER + TAD OCHAR + JMS I HAND /OUTPUT CHAR +NOLF, ISZ EOLSW /BUMP CHAR CTR + JMP I FMTOUT /NO - RETURN + TAD CHCH /AHA - ANOTHER CHARACTER SHOULD BE OUTPUT + JMP OUTFF+1 /GO TO IT + /CHARACTER OUTPUT - MASS STORAGE OUTPUT + +MASOUT, JMS I (MASBMP /GET BUFFER FIELD AND CHAR NUMBER + JMP OULORD /CHAR 1 OR 2 - STRAIGHTFORWARD + JMS OSUBR /CHAR 3 - PACK FIRST HALFBYTE + JMS OSUBR /PACK SECOND HALFBYTE + AC4000 + JMS MASSIO /CHECK IF WE SHOULD DUMP THE BUFFER +MASOCM, CDF 0 + JMP NOLF /GO RETURN OR REENTER + +OULORD, TAD OCHAR + DCA I CHRPTR /STORE CHAR, ZAPPING HIGH-ORDER BITS + ISZ CHRPTR /BUMP CHAR PTR +F214, 214 /GUARD AGAINST OVFLO + JMP MASOCM /RETURN + +OSUBR, 0 /ROUTINE TO PACK A HALFBYTE + TAD OCHAR + CLL RTL + RTL /SHIFT CHAR 4 LEFT + DCA OCHAR + TAD I CHRPTR /CLEAR OUT ANY RESIDUE + AND [377 /FROM HIGH-ORDER OF BUFFER WORD + DCA I CHRPTR /IN CASE WE ARE WRITING AFTER A BACKSPACE. + TAD OCHAR + AND [7400 /GET 4 BITS + TAD I CHRPTR + DCA I CHRPTR /ADD INTO HIGH-ORDER OF BUFFER WORD + ISZ CHRPTR /BUMP POINTER + 200 /OVERFLOW! + JMP I OSUBR + +MASSIO, 0 /SUBROUTINE TO READ/WRITE BUFFER IF NECESSARY + CDF 0 + TAD BUFCDF /ADD BUFFER CDF TO R/W BIT IN AC + TAD (-6001 /TAKE AWAY CDF, LEAVE BIT 4 ON + DCA IOCTL /STORE I/O CONTROL WORD + TAD CHRPTR + AND [377 + SZA CLA /SEE IF POINTER IS AT BUFFER BOUNDARY + JMP I MASSIO /YES - RETURN DOING NOTHING + TAD RELBLK + TAD STBLK /STORE BLOCK # IN HANDLER CALL + DCA BLOCK + TAD BADFLD + AND [7400 + DCA BUFFER /STORE BUFFER ADDRESS IN HANDLER CALL + /CHARACTER OUTPUT - BUFFER I/O ROUTINE CONTINUED + + TAD TOTBLK + CIA CLL + TAD RELBLK + SZL CLA /CHECK FOR FILE OVERFLOW +IOVFLO, JMS I ERR /YES - ERROR + TAD HCODEW + JMS I (GETHND /GET HANDLER INTO FIELD 0 + JMS I HAND /CALL HANDLER +IOCTL, 0 +BUFFER, 0 +BLOCK, 0 + SMA CLA /HANDLER ERROR - ABORT + SKP /IF NOT EOF +IOERR, JMS I ERR + JMS I (RECOVR /CLEAR ANY FLAGS SET BY OS8 HANDLER + ISZ RELBLK /BUMP RELATIVE BLOCK NUMBER + TAD BUFFER + DCA CHRPTR /RESET CHAR PTR + JMP I MASSIO /RETURN +/FPP CODE FOR I/O CONVERSION + +FDIV10, FDIV+LONG + TEN + FEXIT +OCHAR, 0 /*** NEEDED FOR PADDING *** +FMUL10, FMUL+LONG /FMUL10 MUST BE AT FDIV10+4 + TEN + FEXIT + +FWTOBL, FSUB+LONG + ONE + FDIV+LONG + FLTG85 + FEXIT + PAGE + /UNFORMATTED (BINARY) INPUT-OUTPUT + +RWUNF, JMS I [RWINIT /"READ(N)" OR "WRITE(N)" + 1000 /"UNFORMATTED" BIT + TAD SZLCLA /ENABLE SEQUENCE CHECKING +UNFIO, DCA SEQCHK /*** SET SEQCHK TO "SZL CLA" OR "CLA" + DCA RECCTR /ENTER HERE FROM DIRECT ACCESS + TAD HAND + SMA CLA /CHECK FOR MASS-STORAGE HANDLER + JMP I [UNTERR /NO - ERROR + JMS I [GETLMN /GET FIRST VARIABLE + TAD RWFLAG + SPA CLA +RSETBP, TAD (125 /INITIALIZE COUNT TO -86 FOR WRITE, + CMA /-1 FOR READ + DCA CHRCTR + TAD BADFLD + AND [7400 + DCA BIOPTR /INITIALIZE BUFFER POINTER + TAD BADFLD + AND [70 + IAC + CLL RTR /AC BIT 0 NOW ON + TAD RWFLAG /AC BIT 0 CONTAINS COMP. OF R/W FLAG + CLL RAR /AC=(.NOT.RW)*2000+BUFFER FIELD + TAD (FSTA+LONG /AC=(FSTA OR FLDA) + BUFFLD + DCA FGPBF + JMP UIOVLP /SKIP FIRST VARIABLE FETCH/STORE +BFINCR, JMS I [FPGO + FGPBF /LOAD OR STORE A BUFFER ENTRY + ISZ BIOPTR + ISZ BIOPTR /INCREASE BUFFER POINTER + ISZ BIOPTR + JMS I [GETLMN /GET A VARIABLE FROM THE CALLING PROGRAM +UIOVLP, TAD RWFLAG + CLL RAR /LOWORDER BIT OF RWFLAG = END LIST FLAG + SZL CLA + JMP ENDUIO /NO MORE VARIABLES - TERMINATE + ISZ CHRCTR /BUMP COUNTER + JMP BFINCR /ROOM IN BUFFER - MOVE VARIABLE + JMS UDOIO /GET A NEW BUFFER + JMP RSETBP /RESET BUFFER POINTERS AND COUNTERS + +ENDUIO, TAD RWFLAG /COME HERE WHEN I/O LIST EXHAUSTED + SPA CLA /WRITE? + JMS UDOIO /YES - WRITE OUT THE LAST BUFFER + JMP I [ENDIO /RESTORE DSRN ENTRY AND QUIT + +RECCTR, 0 + /DIRECT-ACCESS I/O + +RWDACC, JMS I [RWINIT /"READ(N'R)" OR "WRITE(N'R)" + 1000 /DIRECT ACCESS IS UNFORMATTED I/O + TAD I XR + DCA T /GET BLOCKS/RECORD FACTOR FROM D.A. TABLE + JMS I [ARGLD /GET RECORD NUMBER + JMS I [FFIX /CONVERT TO INTEGER + TAD T + TAD ACI + ISZ T /MULTIPLY RECORD NUMBER BY BLOCKS/RECORD + JMP .-2 /TO GET RELATIVE BLOCK NUMBER + DCA RELBLK + TAD I XR + SNA /THIS LOC SHOULD NOT BE ZERO! +DAERR, JMS I ERR + DCA FGPBF /IT SHOULD BE AN FSTA + THE FIELD + TAD I XR /IN WHICH THE CONTROL VARIABLE IS + DCA BIOPTR /STORED. THE NEXT WORD IS THE ADDRESS + JMS I [FPGO /OF THE CONTROL VARIABLE IN THAT FIELD + FADD1 /ADD 1 TO RECORD # AND STORE IN CONTROL VAR + TAD DUMPIT /*K* "DCA T" SAME AS "CLA" HERE + JMP UNFIO /NOW GO DO A REGULAR BINARY READ/WRITE + +UDOIO, 0 + ISZ RECCTR /BUMP NUMBER OF RECORDS TRANSFERRED + TAD BADFLD + AND [7400 + TAD [377 /FORM POINTER TO LAST WORD IN BUFFER + DCA BIOPTR + TAD RECCTR + JMS BUFFLD + DCA I BIOPTR /FOR WRITE, PUT RECORD NUMBER IN 256TH WORD +UDOIOL, DCA CHRPTR + AC4000 + AND RWFLAG + JMS I [MASSIO /DO I/O (CHRPTR=0 TO FORCE I/O) + JMS BUFFLD + TAD RECCTR + CMA STL /FOR READ, CHECK THE INPUT + TAD I BIOPTR /SEQUENCE NUMBER TO MAKE SURE IT IS + CDF 0 /NO LARGER THAN THE ONE WE EXPECT. +SEQCHK, SZL CLA /*K* IF IT IS LARGER THIS IMPLIES THAT WE + JMP I UDOIO /ARE STILL IN THE MIDDLE OF THE LAST + JMP UDOIOL /RECORD AND SO WE READ AGAIN. + /DEFINE FILE PROCESSOR + +DFINE, JMS I [RWINIT /SET UP A POINTER INTO THE D.A. TABLE + 1000 /DIRECT ACCESS I/O IS UNFORMATTED + JMS I [ARGLD /GET NUMBER OF RECORDS + JMS I [FFIX + TAD ACI + CIA +DUMPIT, DCA T /SAVE IT FOR MULTIPLY + JMS I [ARGLD /GET THE NUMBER OF WORDS/RECORD + JMS I [FPGO /CONVERT WORDS TO BLOCKS + FWTOBL + JMS I [FFIX /CONVERT TO INTEGER + ISZ ACI + TAD ACI /MULTIPLY THE NUMBER OF BLOCKS/RECORD + ISZ T /BY THE NUMBER OF RECORDS + JMP .-2 + DCA RELBLK /TO GET THE FILE LENGTH IN BLOCKS + TAD ACI + CIA + DCA I XR /STORE NUMBER OF BLOCKS/RECORD + JMS I [ARGLD /GET POINTER TO CONTROL VARIABLE + TAD FGPBF + TAD (FSTA-FLDA /CHANGE A LOAD TO A STORE + DCA I XR /SAVE "FSTA CONTROL-VARIABLE" + TAD BIOPTR + DCA I XR + TAD TOTBLK + CMA CLL + TAD RELBLK /MAKE SURE WE HAVE ROOM FOR THE FILE +SZLCLA, SZL CLA +DFERR, JMS I ERR /WE DON'T + AC7776 + AND FFLAGS + IAC /FORCE "END-FILED" BIT FOR CLOSE + JMP I (SETTOT /SET LENGTH AND EXIT + PAGE + /SWAPPER AND ERROR ROUTINE + +SWAP, JMS I [FETPC /SWAPPER CALLING SEQUENCE: + DCA T / TRAP3 SWAP + TAD T / ADDR OVLY*4000000+LVL*100000+ENTRYADR + AND [7 + TAD (JA + DCA STRTUP /STORE JA TO ENTRY POINT + JMS I [FETPC + DCA STRTUP+1 + TAD T + AND [70 + CLL RAR /FORM 4*LVL + TAD (OVLYTB /INDEX INTO LEVEL TABLE + DCA ADR + TAD T + AND [7400 + DCA T /T CONTAINS OVERLAY NUMBER IN BITS 0-3 + CDF 0 /WATCH D.F.! + TAD I ADR + TAD T /SEE IF THIS OVERLAY IS IN CORE + SNA CLA + JMP ITSIN /YES - DON'T LOAD + TAD T + CIA + DCA I ADR /MARK THIS OVERLAY IN CORE (OPTIMIST) + ISZ ADR + TAD I ADR + AND [7400 + DCA OVADR /SAVE INITIAL OVERLAY LOAD ADDRESS + TAD I ADR + AND [70 + DCA OVIOW /AND FIELD + ISZ ADR + TAD I ADR /GET STARTING BLOCK OF THIS LEVEL + DCA OVBLK + ISZ ADR + TAD I ADR + DCA OVLEN /STORE LENGTH OF OVERLAY IN BLOCKS +OVADLP, TAD T /LEVEL STARTING BLOCK + + SNA /(OVERLAY #) * (OVERLAY LENGTH) + JMP LOADOV /= OVERLAY STARTING BLOCK + TAD [7400 + DCA T + TAD OVBLK + TAD OVLEN + DCA OVBLK + JMP OVADLP + /SWAPPER - CONTINUED + +LOADLP, DCA OVLEN /STORE UPDATED OVERLAY LENGTH + TAD OVIOW /GET LAST READ CONTROL WORD + RAL + AND [7400 /CONVERT BLOCK COUNT TO WORD COUNT + TAD OVADR /INCREMENT OVERLAY LOAD ADDRESS (LINK = 0) + DCA OVADR + RTL + RTL /USE THE CARRY + TAD OVIOW /TO INCREMENT THE LOAD FIELD IF NECESSARY + AND [70 + DCA OVIOW /OVIOW CONTAINS ONLY THE LOAD FIELD NOW + +LOADOV, TAD OVADR + CIA /LOTSA CALCULATIONS HERE - OS/8 HANDLERS + SNA /CAN'T READ MORE THAN 15 BLOCKS AT A TIME + TAD [7400 /AND CANNOT READ OVER FIELD BOUNDARIES + CLL RTL + RTL /SO WE MUST BREAK UP THE OVERLAY READ + CMA CML RAL /INTO SEVERAL SMALL READS OF MAXIMAL LENGTH. + TAD OVLEN /THE NUMBER OF BLOCKS TO READ IS GIVEN BY: + CMA /MINIMUM(B,L,15) + SMA /WHERE B IS THE # OF BLOCKS LEFT IN THIS FIELD + CLA /AND L IS THE # OF BLOCKS LEFT IN THE OVERLAY + TAD OVLEN /AND 15 IS THE # OF BLOCKS A HANDLER CAN READ + DCA T / ANSWER IN T + TAD T + CLL RTR + RTR + RTR /TURN NUMBER OF BLOCKS INTO 0S/8 BLOCK COUNT + TAD OVIOW + DCA OVIOW /ADD FIELD BITS AND STORE AS I/O CONTROL WD + TAD OVHCDW /GET OVERLAY HANDLER CODE WORD + JMS I (GETHND /LOAD HANDLER INTO FIELD 0 + JMS I OVHND +OVIOW, 0 +OVADR, 0 +OVBLK, 0 +OVERR, JMS I ERR /WHOOPS - OVERLAY READ ERROR + JMS RECOVR /CLEAR ANY NASTY FLAGS LEFT BY HANDLER + TAD T + TAD OVBLK + DCA OVBLK /UPDATE BLOCK NUMBER + TAD T + CIA + TAD OVLEN /BUMP DOWN RECORD COUNT + SZA /SEE IF WE ARE DONE + JMP LOADLP /NO - PREPARE FOR NEXT READ + /OVERLAY IN CORE - EXECUTE IT + +ITSIN, JMS I [FPGO /START UP FPP + STRTUP /AND JA TO ENTRY POINT + +TRAP5I, +TRAP6I, +TRAP7I, +FPAUSE, +FPPERR, JMS I ERR /SHOULD NEVER GET HERE + +STRTUP, 0;0 /JA ENTRY +OVLEN, 0 +OVHND, 0 /SET BY LOADER +OVHCDW, 0 /SET BY LOADER + +RECOVR, 0 /ROUTINE TO CLEAN UP ANY FLAGS + DCA CTCINH /LEFT ON BY SLOPPY OS/8 HANDLERS. +YRCOVR, NOP + NOP + NOP + NOP /RIGHT NOW I DON'T KNOW OF ANY. + NOP + NOP + NOP + NOP + ION + JMP I RECOVR + +FSTTMP, FSTA+LONG + FTEMP + FEXIT + +TEN, 4;2400;0;0;0;0 /10.0D0 +FLTG85, 7;2520;0 /85.0 + PAGE + /INPUT BUFFER - CONTAINS STARTUP CODE + +INBUFR, -206 /LENGTH + 0 /INPUT LINE BUFFER - FIRST A LITTLE PADDING, + +/RTS EXECUTION INITIALIZATION - IN INPUT BUFFER + +FPSTRT, 6601 /CLEAR DF32 FLAG + PCF /HSP FLAG + RRB /HSR FLAG +PP7600, 7600 /CLEAR READER CHAR + 6135 /CLEAR KW12 OR DK8-EP EVENT FLAGS + CLA + 6132 /STOP KW12 CLOCKS + 6134 /DISABLE KW12 INTERRUPTS + 6530 /CLEAR AD8-EA FLAGS + 6050 /CLEAR VC8/E FLAG + 6500 /DISABLE XY8/E INTERRUPTS + STA + 6130 /DISABLE DK8-EP INTERRUPTS + CLA /LEAVE SPACE FOR ADDITIONAL CLEARS + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + DCA EOLSW +LDPROG, JMS I [FPGO /START UP FPP OR PSEUDO-FPP + STSWAP +HLTNOP, NOP /SET TO HLT IF /H SPECIFIED, + JMP PRTCR /SKP IF /P SPECIFIED + TAD .-1 + DCA LDPROG /BYPASS LOADING ON STARTUP + TAD PCHWD /HLT + DCA I (PDPXIT+1 + /ROUTINE TO PUNCH RTS+PROGRAM ON FORTRAN UNIT 9 (UNCOMMENTED) + +PPTR, TAD P11 +PCKSUM, DCA ACI + JMS I (LDDSRN + SMA CLA + JMP I [UNTERR + JMP LDRTLR +FLDLP, DCA PPTR + DCA PCKSUM + TAD (100 + JMS SIXOUT + JMS SIXOUT + TAD FLD + AND [70 +JFMOUT, JMS I [FMTOUT /*K* ONLY WORKS FOR FIELD 0-3 + TAD (100 + JMS SIXOUT + JMS SIXOUT +FLD, CDF 0 + TAD I PPTR + CDF 0 + JMS PCHWD + ISZ PPTR +P11, 11 + ISZ PCTR + JMP FLD + TAD PCKSUM + JMS PCHWD + TAD FLD + TAD (10 + DCA FLD +LDRTLR, TAD PP7600 + DCA ACH + TAD [200 + JMS SIXOUT + ISZ ACH + JMP .-3 + ISZ FCNT + JMP FLDLP + TAD (6000 + DCA FFLAGS + DCA I (ENDFLS /*K* SAME KLUDGE AS CALXIT + JMS I (ENDFL + DCA I (PDPXIT+1 /WIPE HALT SO WE CAN RETURN TO OS/8 + JMP I (PDPXIT-1 + PCHWD, HLT + DCA ACH + TAD ACH + RTR + RTR + RTR + AND [77 + JMS SIXOUT + TAD ACH + AND [77 + JMS SIXOUT + JMP I PCHWD + +SIXOUT, 0 + DCA T + CLA IAC + DCA EOLSW + TAD PCKSUM + TAD T + DCA PCKSUM + TAD T + TAD (-300 + JMS I [FMTOUT + JMP I SIXOUT + +PCTR, 200 /DON'T PUNCH 07600! +FCNT, 0 + PRTCR, TAD (215 + JMS I PTTY /PRINT CARRIAGE RETURN + TAD JFMOUT + DCA I (ERRENB /ENABLE ERROR TRACEBACK + JMS I [FPGO + STJUMP /NOW JUMP TO THE NEWLY-LOADED CODE +STSWAP, TRAP3 /TRAP3 + SWAP + 0 + .+1 + TRAP3 + HLTNOP + PAGE +STJUMP, 0 + 0 + ZBLOCK INBUFR+210-. /PAD OUT TO END OF BUFFER + /OVERLAY AND DSRN TABLES + + *.-4 /FIRST ENTRY IN OVLYTB ONLY NEEDED TO LOAD MAIN PGM + +OVLYTB, ZBLOCK 40 /OVERLAY TABLE + +DSRN, PTR; ZBLOCK 10 + PTP; ZBLOCK 10 + LPT; ZBLOCK 10 + TTY; 0;0 + 1234 /*K* PREVENT PROBLEM IN + ZBLOCK 5 /RWINIT INVOLVING WRITE + /AFTER READ ON TELETYPE + ZBLOCK 55 + + ZBLOCK 12 /FORMAT PARENTHESIS PUSHDOWN LIST +FMTPDL, 0 /GUARD WORD + PAGE + /SOFTWARE FLOATING POINT ROUTINES WHICH ARE USED +/EVEN IF FLOATING HARDWARE IS PRESENT + +/** MUST NOT DESTROY FAC! ** + +FFIX, 0 /ROUTINE TO FIX FAC + STA /ANSWER IS RETURNED IN ACI +TADACX, TAD ACX /ABS(FAC) MUST BE LESS THAN 2048 + CLL /DETERMINE IF FAC EXPONENT IS + TAD (-13 /BETWEEN 1 AND 14 + SNA + JMP FIXBIG /14 IS A SPECIAL CASE +EAEFIX, DCA ACI + SZL + JMP FIXDNE /EXP GT 14 OR LT 1 - RETURN 0 + TAD ACH + JMP FIXISZ +FIXLP, CLL /0 IN LINK + SPA /IS IT LESS THAN 0? + CML /YES-PUT A 1 IN LINK + RAR /SCALE RIGHT +FIXISZ, ISZ ACI /DONE YET? + JMP FIXLP /NO +FIXDNE, DCA ACI /RETURN WITH ANSWER IN ACI + JMP I FFIX /RETURN + +FIXBIG, TAD ACL /IF EXP IS 14 WE MUST SHIFT AC FRACTION + RAL /LEFT ONE PLACE TO INTEGERIZE IT. + CLA + TAD ACH + RAL + JMP FIXDNE /STORE ANSWER AND RETURN + +SETB, TAD DATAF + DCA I (BASCDF /SET BASE PAGE LOCATION + TAD ADR + DCA BASADR + JMP I FPNXT + / +/SHIFT FAC LEFT 1 BIT +/ +AL1, 0 + TAD AC1 /GET OVERFLOW BIT + CLL RAL /SHIFT LEFT + DCA AC1 /STORE BACK + TAD ACL /GET LOW ORDER MANTISSA + RAL /SHIFT LEFT + DCA ACL /STORE BACK + TAD ACH /GET HI ORDER + RAL + DCA ACH /STORE BACK + JMP I AL1 /RETN. +/ +/SHIFT FAC RIGHT-ENTER WITH COUNT-1 IN AC (POSITIVE) +/ +ACSR, 0 + CMA /AC CONTAINS COUNT-1 + DCA AC0 /STORE COUNT +LOP1, TAD ACH /GET HIGH ORDER MANTISSA + CLL + SPA /PROPAGATE SIGN + CML + RAR /SHIFT RIGHT 1, PROPAGATING SIGN + DCA ACH /STORE BACK + TAD ACL /GET LOW ORDER + RAR /SHIFT IT + DCA ACL /STORE BACK + ISZ ACX /INCREMENT EXPONENT + NOP + ISZ AC0 /DONE? + JMP LOP1 /NO-LOOP + RAR + DCA AC1 /SAVE 1 BIT OF OVERFLOW + JMP I ACSR /YES-RETN-AC=L=0 +/ +/FLOATING NEGATE +/ +FFNEG, 0 /(USED AS A TEM. BY OUTPUT ROUTINE) + TAD ACL /GET LOW ORDER FAC + CLL CMA IAC /NEGATE IT + DCA ACL /STORE BACK + CML RAL /ADJUST OVERFLOW BIT AND + TAD ACH /PROPAGATE CARRY-GET HI ORD + CLL CMA IAC /NEGATE IT + DCA ACH /STORE BACK + JMP I FFNEG + OADD, 0 /ADD OPERAND TO FAC + CLL + TAD AC2 /ADD OVERFLOW WORDS + TAD AC1 + DCA AC1 + RAL /ROTATE CARRY + TAD OPL /ADD LOW ORDER MANTISSAS + TAD ACL + DCA ACL + RAL + TAD OPH /ADD HI ORDER MANTISSAS + TAD ACH + DCA ACH + JMP I OADD /RETN. + +FETPC, 0 + ISZ PC + JMP PCCDF /NO FIELD BUMP + ISZ APT /BUMP FIELD FOR FPP RESTART (IN CASE FPP EXISTS) +FPC10, 10 /PROTECTION FOR ISZ + TAD PCCDF + TAD FPC10 + DCA PCCDF +PCCDF, HLT + TAD I PC + JMP I FETPC + +EEPUT, STL /EXTENDED PRECISION STORE +EEGET, DCA ADR /EXTENDED PRCISION FETCH + TAD [-6 + DCA DATCDF + SNL + AC2000 /SET UP "TAD ACX" OR "DCA ACX" + TAD TADACX + DCA EEINST +EELOOP, SNL /LINK=1 MEANS STORE + TAD I ADR +EEINST, HLT + SZL + DCA I ADR + ISZ ADR + SKP + JMS I (DFBUMP + ISZ EEINST + ISZ DATCDF + JMP EELOOP + JMP I FPNXT + +FSTTM2, FSTA+LONG + FTEMP2 + FEXIT +/ +FTEMP, ZBLOCK 6 +/ + PAGE + /RUN-TIME SYSTEM ERROR LIST + +ERRLST, VARGER; ARGMSG + UERR; UMSG + FPOERR; FPOMSG + FMTERR; FMTMSG + UNTERR; UNTMSG + CTLBER; CTLBMS + INER; INMSG + IOVFLO; IOVMSG + IOERR; IOMSG + DAERR; DAMSG + FPPERR; FPPMSG + OVERR; OVMSG + EOFERR; INEMSG + FPOVER; OFLMSG + DFERR; DFMSG + -1; DV0MSG /BY ELIMINATION + /RTS ERROR MESSAGES + +ARGMSG, TEXT /BAD ARG/ +UMSG, TEXT /USER ERROR/ +FPOMSG, TEXT /PARENS TOO DEEP/ +FMTMSG, TEXT /FORMAT ERROR/ +UNTMSG, TEXT /UNIT ERROR/ +INMSG, TEXT /INPUT ERROR/ +OVMSG, TEXT /OVERLAY / + *.-1 +IOMSG, TEXT %I/O ERROR% +DAMSG, TEXT /NO DEFINE FILE/ +FPPMSG, TEXT /FPP ERROR/ +INEMSG, TEXT /EOF ERROR/ +DV0MSG, TEXT /DIVIDE BY 0/ +DFMSG, TEXT /D.F. TOO BIG/ +IOVMSG, TEXT /FILE / + *.-1 +OFLMSG, TEXT /OVERFLOW/ +CTLBMS, TEXT /^B/ + +USRERR, TAD ERRFLG /USER ERROR - OPTIONALLY NON-FATAL + DCA FATAL +UERR, JMS I ERR /PRINT MESSAGE + JMP I [RETURN /IF NON-FATAL, CONTINUE PROCESSING +ERRFLG, 0 /SET TO NON-ZERO IF /E SWITCH SPECIFIED + +TRPPRT, TRAP3 /CODE WHICH IS LOADED INTO PROGRAM PROLOGUES + PRTNAM /BY THE ERROR TRACEBACK ROUTINE + PAGE + MAKCDF, 0 /ROUTINE TO MAKE A CDF FROM AC9-11 + RTL + RAL + AND [70 + TAD ERCDF /STRAIGHTFORWARD ENOUGH, ISN'T IT? + JMP I MAKCDF + +RD2WR, 0 /ROUTINE CALLED WHEN SWITCHING + STA /FROM READ TO WRITE. (CALLED ONLY ONCE!) + TAD RELBLK /BUMP BLOCK # BACK FROM "NEXT BUFFER'S BLOCK #" + DCA RELBLK /TO "THIS BUFFER'S BLOCK #". + TAD CHRCTR /HOWEVER, IF WE ARE AT THE VERY END OF A + IAC /BUFFER, WRITE ROUTINE EXPECTS US TO + SZA CLA /BE AT THE BEGINNING OF THE NEXT BUFFER, + JMS I [MASSIO /SO RE-READ THIS BUFFER AND SET POINTERS + JMP I RD2WR + +/RUN-TIME-SYSTEM ERROR ROUTINE + +ERROR, 0 +ERCDF, CDF 0 + CLA + TAD (ERRLST-2 + DCA XR +ERRLP, ISZ XR /SEARCH ERROR LIST FOR CALLING ADDRESS + TAD I XR /ERROR LIST CONTAINS + CMA + SZA /CALLING ADDRESSES AND + TAD ERROR /CORRESPONDING MESSAGES + SZA CLA + JMP ERRLP + TAD I XR + DCA I (FMTADR + DCA I (FMTDF + TAD PTTY + DCA HAND /QUICK FUDGE FOR TTY OUTPUT + DCA HCODEW /TO SET CARRIAGE CONTROL + AC4000 + DCA RWFLAG + JMS I [EOLINE /TYPE CARRET AND SET EOLSW + DCA FMTBYT /INITIALIZE MESSAGE PTR +ERPTLP, JMS I [FMTOUT /OUTPUTS LF FIRST TIME + JMS I [FMTGCH /GET CHAR USING FORMAT ROUTINES + ISZ FMTBYT + SZA + JMP ERPTLP /LOOP UNTIL 0 CHAR + /PRINT ROUTINE NAME AND LINE NUMBER + +PRTNAM, TAD [40 +ERRENB, JMP I E7605 /*K* IN CASE INITIALIZATION OR /P GET ERRORS +/ PREVIOUS LINE REPLACED WITH: +/ JMS I [FMTOUT /OUTPUT A BLANK(LF ON EXTRA LINES) + JMS I [FPGO /START UP FPP + GTNMPT /GET POINTER TO NAME IN FAC + TAD ACH + DCA I (FMTDF /SET UP FORMAT GET CHARACTER ROUTINE + TAD ACL /TO GET CHARACTERS OF ROUTINE NAME + DCA I (FMTADR + DCA FMTBYT + TAD [-6 + DCA ISN /6 CHARACTER NAME +PRTNML, JMS I [FMTGCH + SNA + TAD [40 /AVOID PRINTING RANDOM @S + JMS I [FMTOUT /GET AND PRINT A CHARACTER + ISZ FMTBYT + ISZ ISN + JMP PRTNML + TAD [40 + JMS I [FMTOUT /SEPARATE THE NAME BY A SPACE + TAD [-4 /FROM THE LINE NUMBER. + DCA ISN +PTLNLP, TAD ISN+1 + CLL RTL + RAL + DCA ISN+1 /PRINT LINE NUMBER IN OCTAL + TAD ISN+1 /BECAUSE THAT IS THE WAY IT APPEARS + RAL /IN THE FORTRAN PROGRAM LISTING + AND [7 + JMS I (DIGIT + ISZ ISN + JMP PTLNLP + + JMS I [EOLINE /OUTPUT FINAL CR + TAD FATAL + SNA CLA /FATAL ERROR? + JMP TRCBAK /YES - GIVE FULL TRACEBACK + DCA FATAL /"NON-FATAL" FLAG MUST BE SET EACH TIME + JMP I ERROR +TRCBAK, JMS I [FPGO /START UP FPP + UP1LEV /MOVE UP TO CALLING ROUTINE + /FPP CODE DOES A "TRAP3 PRTNAM" +ISN, 0;0 + /FPP CODE FOR ERROR ROUTINE + +GTNMPT, STARTD + XTA 0 /LOAD LINE NUMBER FROM XR 0 + FSTA+LONG + ISN /STORE AWAY + FLDA+BASE 10 /LOAD POINTER TO PROLOGUE + FSUB+LONG + THREE /NAME IS 3 LOCATIONS BEFORE PROLOGUE + STARTF /FOR NON-FPP VERSION +THREE, FEXIT;3 /*K* DEPENDS ON FACT THAT FEXIT=0 + +UP1LEV, STARTD + FLDA+BASE 11 /GET THE UPWARD POINTER + JNE + NOTMN /ZERO MEANS MAIN PROGRAM + TRAP3 +E7605, 7605 /GO AWAY IF MAIN PROGRAM +NOTMN, FSTA+BASE 0 + LDX 1 + 2 /WE WILL STORE A "TRAP3 PRTNAM" + FLDA+LONG /IN THE FIFTH LOCATION OF THE PROLOGUE, + TRPPRT + FSTA+IND 0+10 /WHERE THE FIRST 4 LOCS WERE A SETX AND SETB. + FLDA+BASE 0 /GET THE PROLOGUE ADDRESS AGAIN + JAC /JUMP TO IT. + +ACMDGT, FMUL+LONG + TEN + FSTA+LONG + FTEMP + FLDA+LONG + DGT /GET UNNORMALIZED DIGIT INTO AC + FNORM /NORMALIZE IT +FADTMP, FADD+LONG + FTEMP + FEXIT +LPBUFR, ZBLOCK 4 + LPBUF2 + PAGE + HPLACE, /ZBLOCK 400 /HANDLER SWAP AREA + +/VARIOUS INITIALIZATION STUFF OVERLAYING THE RTS HANDLER AREA + +QLHDR, 0 /SHOULD BE A 2 FOR A LOADER IMAGE +QRTSWP, ZBLOCK 2 /INITIAL SWAP ARGS TO LOAD USER MAIN +QHGHAD, ZBLOCK 2 /HIGHEST ADDRESS USED +QVERNO, 0 /LOADER VERSION # +QDPFLG, 0 /"PROGRAM USES D.P." FLAG +QUSRLV, ZBLOCK 40 /USER OVERLAY INFO + +/EAE OVERLAY TO FIX AND FLOAT + +EFXFLT, RELOC EAEFIX + +FIXEAE, CMA + DCA FIXSH /SHIFT COUNT BETWEEN 0 AND 12 + SZL + JMP FIX0 /NOT INTEGERIZABLE + TAD ACH + ASR +FIXSH, 0 +FIX0, DCA ACI + JMP I FFIX + +FXFLTC= .-FIXEAE + RELOC + /SUBR TO DETERMINE MACHINE SIZE - RETURNS NUMBER OF +/BANKS IN AC. +/MUST RUN IN FIELD 0. + +CORE, 0 + TAD C6203 + RDF + DCA CORRET +CORELP, CDF 0 /NEEDED FOR PDP-8L + TAD I C7777 + AND COR70 /IF BITS 6-8 OF LOCATION 7777 ARE NOT ZERO, + CLL RTR /THEY SPECIFY THE LAST FIELD OF CORE + RAR /WHICH WE SHOULD USE. + SZA + JMP CORRET /SO RETURN THAT AMOUNT + TAD TRYFLD /GET FLD TO TST + CLL RTL + RAL + AND COR70 /MASK USEFUL BITS + TAD CORELP + DCA COR706 /SET UP CDF TO FLD +COR706, 0 + TAD I CORLOC /SAV CURRENT CONTENTS + NOP /HACK FOR PDP-8 + DCA .-3 + TAD .-2 /7000 IS A GOOD PATTERN + DCA I CORLOC +COR70, 70 /HACK FOR PDP-8.,NO-OP + TAD I CORLOC /TRY TO READ BK 7000 +CO7400, 7400 /HACK FOR PDP-8,.NO-OP + TAD CO7400 /GUARD AGAINST WRAP AROUND + TAD CORLOC+1 /TAD 1400 + SZA CLA + JMP .+5 /NON EXISTENT FLD EXIT + TAD COR706 /RESTORE CONTENS DESTROYED + DCA I CORLOC + ISZ TRYFLD /TRY NXT HIGHER FLD + JMP CORELP + STA + TAD TRYFLD +CORRET, 0 + JMP I CORE +CORLOC, CO7400 /ADR TO TST IN EACH FLD + 1400 /7000+7400+1400=0 +TRYFLD, 1 /CURRENT FLD TO TST +C6203, 6203 +C7777, 7777 + +DPTEST, STARTE /EXECUTED BY FPP DURING INITIALIZATION + FEXIT /CHECK WHETHER DOUBLE PRECISION ENABLED + /TABLE OF MODIFICATIONS TO MAKE TO FRTS FOR BACKGROUND OPERATION +/UNDER RTS-8. FORMAT OF TABLE IS: POINTER TO FIRST WORD OF BLOCK - 1 +/ (0 TERMINATES) FOLLOWED BY LIST OF REPLACEMENT WORDS (0 TERMINATES). + +BKRLST, YLPT-1 /LINE PRINTER OUTPUT ROUTINE + RELOC YLPT + LLS + CLA /DON'T DO RING-BUFFERING - JUST "OUTPUT" CHAR. + JMS CTCBCK /CHECK FOR ^C OR ^B + JMP I LPT +FJCTCT, JMS CTCBCK /COME HERE FROM INTERPRETED FPP JUMPS + JMP I FPNXT /CHECK FOR ^C,^B AND RETURN TO INTERPRETER + RELOC + 0 + + YPTP-1 /PAPER-TAPE PUNCH ROUTINE + CLA /ALL PAPER-TAPE I/O ILLEGAL + 0 + YPTR-1 /PAPER TAPE READER ROUTINE + CLA /ALL PAPER-TAPE I/O ILLEGAL + 0 + + YTTY-1 /TELETYPE INPUT/OUTPUT ROUTINE + RELOC YTTY + SNA + JMP KBDRTS /AC=0 MEANS INPUT + TSF + JMP .-1 /HANG UNTIL OUTPUT BUFFER NOT FULL + TLS + CLA + JMS CTCBCK /CHECK FOR ^C OR ^B TYPED + JMP I TTY +KBDRTS, KSF + JMP .-1 /HANG UNTIL CHAR RECEIVED + JMS CTCBCK /CHECK FOR ^C OR ^B + KRB + AND KB177 /STRIP PARITY + TAD KB177 + IAC /NOW FORCE PARITY BIT ON (177+1=200) + JMP I TTY + +CTCBCK, . /*K* CAN'T BE 0! + KRS /PEEK AT NEXT CHAR IN BUFFER + AND KB177 + TAD KBM2 + CLL RAR + SNA CLA /IS IT ^C OR ^B? + KSF /AND IS IT REALLY PENDING? + JMP I CTCBCK /NO - JUST RETURN WITH AC=0 + JMP BEEORC /TERMINATE JOB - LINK HAS ^C/^B FLAG +KB177, 177 +KBM2, -2 + RELOC + 0 + /CONTINUATION OF TABLE OF RTS-8 OVERLAYS TO FRTS + + YHIOF-1 /"GET OS/8 HANDLER" ROUTINE + NOP /ELIMINATE "IOF" INSTRUCTION + 0 + + YRCOVR-1 /"RECOVER FROM OS/8 HANDLER" ROUTINE + RELOC YRCOVR + JMP I RECOVR /SHORT-CIRCUIT PORTION OF ROUTINE WHICH DOES + RELOC /AN "ION" + 0 + + YFJMP-1 /FPP INTERPRETER - SUCCESSFUL JUMP SECTION + FJCTCT /TEST FOR ^C OR ^B TYPED BEFORE + 0 /RETURNING TO THE INTERPRETER + + 0 /** LIST TERMINATOR ** + /ERROR MESSAGES FOR RUN-TIME LOADER - IN HANDLER BUFFER +/*K* CANNOT LOAD BELOW HPLACE+200 AS HPLACE-HPLACE+177 ARE DESTROYED BY HEADER! + + IFNZRO .-HPLACE-200&4000 <__ERROR__> + +NOLI, TEXT /NOT A LOADER IMAGE/ +NONMSG, TEXT /NO NUMERIC SWITCH/ +FILMSG, TEXT /FILE ERROR/ +SYSMSG, TEXT /SYSTEM DEVICE ERROR/ +TOOMCH, TEXT /MORE CORE REQUIRED/ +TOMNYH, TEXT /TOO MANY HANDLERS/ +LIOEMS, TEXT /CAN'T READ IT!/ +NODPMS, TEXT /CAUTION - NO DP/ +XVERMS, TEXT /FRTS V/ + *.-1 + XVERSN&70^7+XVERSN+4060 /VERSION NUMBER IN SIXBIT + XPATCH&77^100+40 /PATCH LEVEL + TEXT / / + PAGE + /FPP INTERPRETER STARTUP ROUTINE + +FPPINT= . /FOR FPP OVERLAY +RETURN, JMP I FPNXT /RETURN DOES SOMETHING DIFFERENT IF FPP PRESENT + +FPGO, 0 +FPGCDF, CDF 0 /NECESSARY? + CLA + TAD PC + DCA SAVPC /ALLOW ONE LEVEL OF RECURSIVENESS + TAD I (PCCDF + DCA SPCCDF + STA + TAD I FPGO + DCA PC + ISZ FPGO + TAD FPGCDF /FPGO STARTS UP THE FPP FROM FIELD 0 ONLY + DCA I (PCCDF + JMP I FPNXT + +EXIT, TAD SAVPC + DCA PC + TAD SPCCDF + DCA I (PCCDF /RESTORE OLD PC + JMP I FPGO /RETURN TO PDP-8 CODE +SAVPC, 0 +SPCCDF, 0 + +FPXTA, TAD [27 /XR TO AC - NORMALIZE IF FLOATING MODE + DCA ACX + JMS DATCDF + TAD I ADR +CLFAC, DCA ACL + TAD ACL + SPA CLA /SIGN-EXTEND 12-BIT WORD + STA /INTO FAC FRACTION + DCA ACH +NRMFAC, DCA AC1 /CLEAR OVERFLOW WORD + TAD DFLG + SPA SNA CLA /UNLESS WE ARE IN D.P.I. MODE, + JMS I NORMX /NORMALIZE THE FAC + JMP I FPNXT + /MISCELLANEOUS JUMP CLASS INSTRUCTIONS + +JSA, TAD ADR + DCA PUTM + TAD DATAF + DCA JSCDF /SET UP LOC TO SAVE PC IN + AC0002 + TAD ADR + DCA ADR /BUMP ADDRESS BY 2 + RTL + RTL + TAD DATAF + DCA DATAF /INCLUDING DATA FIELD +JSAR, TAD I (PCCDF /JSA/JSR COMMON CODE + CLL RTR + RAR + ISZ PC /BUMP PC BEFORE STORING + SKP + IAC /INCLUDING FIELD BITS + TAD (JA-2620 /FORM "JA" INSTRUCTION +JSCDF, HLT + DCA I PUTM + ISZ PUTM + SKP + JMS I (DFBUMP /BUMP TARGET ADDRESS + TAD PC + DCA I PUTM + JMP I (DOJMP /NOW JUMP TO DESTINATION + +JSR, CLA CLL IAC + TAD BASADR + DCA PUTM + RTL + RTL + TAD I (BASCDF /SET JSCDF&PUTM TO BASE PAGE LOC +1 + DCA JSCDF + JMP JSAR + +FPJAC, TAD ACL + DCA ADR + TAD ACH + JMS I MCDF + DCA DATAF + JMP I (DOJMP + +SPCATX, TAD ACL + SKP +FPLDX, JMS I [FETPC + JMS DATCDF + DCA I ADR /SET XR TO NEXT INST WD + JMP I FPNXT + /MORE INDEX REGISTER & AC-TO-MEMORY INSTRUCTIONS + +ADDX, JMS I [FETPC + JMS DATCDF + TAD I ADR /ADD NEXT INST WD TO XR + JMP FPLDX+1 + +ATX, TAD DFLG /ATX WORKS DIFFERENTLY IN D.P.I. MODE + SMA SZA CLA + JMP SPCATX + JMS I NORMX /FAC MAY NOT BE NORMALIZED + JMS I [FFIX + TAD ACI + JMP FPLDX+1 + +OPMEM, DCA AD1 /GENERAL AC-TO-MEMORY INTERPRETER + TAD AD1 + DCA AD2 + RDF + CLL RTR + RAR + TAD KLUDGM /FORM FSTA X INSTRUCTION + DCA PUTM + AC2000 + AND INST /TURN OP 5 TO OP 1, + SZA CLA + TAD [3000 / OP 7 TO OP 4. + TAD [3000 + TAD PUTM /STICK IN FIELD BITS + DCA OPM + JMS I [FPGO + KLUDGM + JMP I FPNXT + +KLUDGM, FSTA+LONG + FTEMP /SAVE AC +OPM, 0 +AD1, 0 /PERFORM OP +PUTM, 0 +AD2, 0 /STORE RESULT + FLDA+LONG + FTEMP /RESTORE AC + FEXIT + +NORMX, FFNOR /*K* CHANGED TO EFFNOR IF EAE + PAGE + /MAIN INTERPRETER LOOP + +NEGFAC, JMS I [FFNEG + +ICYCLE, CLA + JMS I [FETPC /GET INST + DCA INST + TAD INST + CLL RTL + RTL + SMA /SKIP IF BASEPAGE ADDRESSING + JMP LONGI + AND [7 + TAD BASJMP + DCA OPJMP /SAVE OPCODE CALL ADDRESS + TAD INST /DATA FIELD IS STILL SET UP + SZL /SO IS LINK (WITH INSTRUCTION BIT 3) + JMP BPAGEI /INDIRECT ADDRESSING + CLL RAL + TAD INST /MULTIPLY BASE OFFSET BY 3 + TAD [200 /ELIMINATE ANY + AND (777 /HIGH ORDER BITS +IMFUDJ, CLL /CLL IAC IF D.P. INTEGER MODE + TAD BASADR /ADD IN BASE PAGE ORIGIN +BASCDF, HLT /CDF TO BASE PAGE FIELD + SZL + JMS DFBUMP /BUMP DF IF ADDITION OVERFLOWED +OPJCLL, CLL +OPJMP, HLT /JMP I EXECUTIONROUTINE + +BPAGEI, AND [7 + DCA ADR + TAD ADR + CLL CML RAL + TAD ADR /FORM 3*OFFSET+1 + TAD BASADR + DCA ADR + RTL + RTL + TAD BASCDF /FORM PROPER CDF + DCA ADDRLO +ADDRLO, HLT /EXECUTE IT + TAD I ADR /GET FIELD BITS OF REAL ADDRESS + DCA ADDRHI /FROM 2D WORD OF BASE PAGE LOC + ISZ ADR + SKP + JMS DFBUMP /WATCH FOR FIELD OVERFLOW + TAD I ADR /GET LOW-ORDER ADDRESS FROM 3D WORD + JMP INDEX /NOW GO DO INDEXING (IF ANY) + /COME HERE IF BIT 4 OF INSTRUCTION IS OFF + +LONGI, AND [7 + SNL /TEST BIT 3 OF INSTRUCTION + JMP I (SPECAL /SPECIAL INSTRUCTION + TAD BASJMP + DCA OPJMP + TAD INST + DCA ADDRHI /HIGH-ORDER ADDRESS BITS IN INST WD + JMS I [FETPC /NEXT INST WORD CONTAINS LOW-ORDER ADDRESS +INDEX, DCA ADDRLO + TAD INST + AND [70 + SNA /IS XR NUMBER 0? + JMP NOINDX /YES - NO INDEXING + JMS DCDIDX /GET XR VALUE (MAYBE INCREMENTED) + AC7775 + TAD DFLG /GET -3 IF F, -2 IF D, -6 IF E MODE + DCA DCDIDX + TAD ADDRLO +XRADLP, CLL + TAD I T + SZL + ISZ ADDRHI + ISZ DCDIDX /ADD THE XR IN THE PROPER NUMBER OF TIMES + JMP XRADLP + DCA ADDRLO +NOINDX, TAD ADDRHI + JMS I MCDF + DCA ADDRHI /TURN HIGH-ORDER ADDRESS INTO A CDF +ADDRHI, HLT /AND EXECUTE IT + TAD ADDRLO + JMP OPJCLL /GO EXECUTE THE INSTRUCTION + +DFBUMP, 0 /BUMP DATA FIELD + DCA DFTMP /SAVE AC + RDF + TAD (CDF 10 + DCA .+1 + HLT + TAD DFTMP /RESTORE AC + JMP I DFBUMP +DFTMP, 0 + DCDIDX, 0 + CLL RTR + RAR + TAD XRBASE /ADD IN BASE ADDRESS OF XR ARRAY +XRCDF, HLT /CDF TO XR ARRAY FIELD + SZL + JMS DFBUMP /OR MAYBE NEXT FIELD + DCA T /SAVE POINTER TO XR + TAD INST + AND DCD100 + SZA CLA /INCREMENT BIT ON? + ISZ I T /YES - BUMP XR +DCD100, 100 /** PROTECTION + JMP I DCDIDX + +BASJMP, JMP I JMPTB1 /JMP I JMPTB2 FOR D.P. MODE + +JMPTB1, FFGET / F MODE (FLOATING POINT) + FFADD + FFSUB + FFDIV + FFMPY + OPMEM /FADDM + FFPUT + OPMEM /FMULM + + DDGET / D MODE ( DOUBLE PRECISION INTEGER) + DDADD + DDSUB + DDDIV + DDMPY + OPMEM /DADDM + DDPUT + OPMEM /DMULM + + EEGET / E MODE ( 6 WD FLOATING POINT) + FFADD + FFSUB + FFDIV + FFMPY + OPMEM + EEPUT + OPMEM + PAGE + /MORE I CYCLE + +SPECAL, SNA + JMP XRINST /OPCODE 0 HAS MANY MANSIONS + TAD SPECOP + DCA SPCJMP /GET OPCODE JUMP ADDRESS + JMS I [FETPC + DCA ADR + TAD INST /ALL OF THESE ARE TWO-WORD INSTRUCTIONS + JMS I MCDF /SO FORM THE ADDRESS NOW + DCA DATAF + CDF 0 + TAD INST +SPCJMP, HLT + +XRINST, TAD INST + AND (7770 + CDF 0 + SNA CLA /IF SUB-OPCODE IS ZERO, + JMP OPERAT /DECODE SUB-SUB-OPCODE + TAD INST + AND [7 + CLL + TAD XRBASE + DCA ADR /COMPUTE INDEX REGISTER ADDRESS + RTL + RTL + TAD I (XRCDF + DCA DATAF +XJCOMN, TAD INST + CLL RTR + RAR + AND [77 /GET OPCODE - HIGH ORDER 2 BITS ARE 0 +OXCOMN, TAD (JMP I SP2 + DCA .+1 /EXECUTE APPROPRIATE JUMP + HLT + +OPERAT, TAD INST + CIA + JMP OXCOMN + +SETX, TAD DATAF /SET XR0 LOC + DCA I (XRCDF + TAD ADR + DCA XRBASE + JMP I FPNXT + /JUMP DECODER + +JUMPS, AND (100 /INSTRUCTION IN AC + CLL RTR /20 IN AC IF NOT COND. JUMP + SZA /IF NOT COND. JUMP, DECODE FURTHER + JMP XJCOMN + TAD INST + AND [70 + CLL RTR + RAR + TAD (CNDSKT + DCA T /INDEX INTO CONDITIONAL SKIP TABLE + TAD I T + DCA CNDSKP + TAD ACH + SZA + JMP CNDSKP + TAD ACL + SZA CLA /IF HIGH ORDER ZERO, AC MIGHT BE UNNORMALIZED. + IAC /USE LOW ORDER ON 0/NOT 0 BASIS +CNDSKP, HLT /TEST AC + JMP I FPNXT /FAILED - DON'T JUMP + +DOJMP, STA CLL + TAD ADR + DCA PC + SNL + TAD (-10 + TAD DATAF + CDF 0 + DCA I (PCCDF /ADDRESS-1 TO PC + JMP I .+1 +YFJMP, ICYCLE /** CHANGED IF RUNNING UNDER RTS-8 + +JXN, AND [70 /GET XR FIELD + JMS I (DCDIDX /GET XR VALUE WITH INCREMENTING + TAD I T + SNA CLA /ZERO? + JMP I FPNXT /YES + JMP DOJMP /JUMP ON INDEX NON-ZERO, RIGHT? + +CNDSKT, SZA CLA /JEQ + SPA CLA /JGE + SMA SZA CLA /JLE + SKP CLA /JA + SNA CLA /JNE + SMA CLA /JLT + SPA SNA CLA /JGT + JMP TSTALN /JAL + +TSTALN, CLA + TAD ACX + TAD (-27 + SPA SNA CLA + JMP I FPNXT + JMP DOJMP + /OPCODE TABLES + +SPECOP, JMP I SPECOP /SPECIAL OPCODE TABLE + JUMPS + JXN + TRAP3I + TRAP4I + TRAP5I + TRAP6I + TRAP7I + + FPJAC + STRTD + STRTF + NRMFAC + NEGFAC + CLFAC + FPAUSE +SP2, EXIT + ALN + ATX + FPXTA + ICYCLE /NOP + STRTE + ICYCLE /UNDEF OP + ICYCLE /" + FPLDX + ADDX + SETX + SETB + JSA + JSR + PAGE + /MISCELLANEOUS OPCODE ROUTINES + +TRAP3I, +TRAP4I, AC0002 + TAD DATAF + DCA .+1 /FORM CDF CIF N + HLT /EXECUTE IT + TAD INST + SMA CLA /TRAP4 JMS'S TO ITS TARGET ADDRESS, + JMP I ADR /TRAP3 JMP'S TO IT + JMS I ADR + JMP I FPNXT + +ALN, TAD ACX /ALIGN SIMULATOR + DCA OPX /SAVE EXPONENT IN CASE WE'RE IN D.I. MODE + TAD DFLG + SMA SZA CLA + DCA ACX /ZERO EXP IF D.I. MODE + JMS DATCDF /SET TO XR FIELD + TAD INST + AND [7 + TAD DFLG /IF WE'RE IN FLOATING POINT MODE, + SNA CLA /AND DOING AN "ALN 0", + TAD [27 /ALIGN UNTIL EXPONENT = 23 + SNA + TAD I ADR /OTHERWISE ALIGN UNTIL EXPONENT = XR VALUE + CDF 0 + CIA + TAD ACX + CMA /FORM DIFFERENCE - 1 + SPA /IF EXPONENT IS LARGER THEN DESIRED EXPONENT, + JMP ALNSHL /SHIFT LEFT + JMS I [ACSR /OTHERWISE SHIFT RIGHT +ALNXIT, TAD DFLG + SPA SNA CLA /IF DOUBLE INTEGER MODE, + JMP I FPNXT + TAD OPX /ALIGNMENT LEAVES THE EXPONENT UNCHANGED + DCA ACX + JMP I FPNXT +ALNSHL, DCA T /STORE SHIFT COUNT + SKP /SHIFT LEFT ONE LESS THAN COUNT + JMS I [AL1BMP + ISZ T + JMP .-2 + JMP ALNXIT /GO TO COMMON CODE + /ARG FETCH SUBROUTINES AND MODE CHANGE OPERATORS + +DARGET, 0 + DCA ADR + TAD DARGET + DCA ARGET + DCA ACX + JMP ARGET2 /FAKE OUT FLOATING POINT ROUTINE + +ARGET, 0 /SUBROUTINE TO FETCH ARG FOR ADD, SUBT, ETC. + DCA ADR /STORE ADDRESS OF OPERAND + TAD I ADR /PICK UP EXPONENT + ISZ ADR /MOVE POINTER TO HI MANTISSA WD + SKP + JMS I (DFBUMP +ARGET2, DCA OPX + TAD I ADR /PICK IT UP + DCA OPH /STORE + ISZ ADR /MOVE PTR. TO LO MANTISSA WD. + SKP + JMS I (DFBUMP /WATCH THOSE FIELD TRANSITIONS! + TAD I ADR /PICK IT UP + DCA OPL /STORE IT + CDF 0 + JMP I ARGET /RETURN + +STRTE, TAD DFLG /START EXTENDED PRECISION MODE + SPA CLA + JMP .+4 /CLEAR EXTENDED FAC + DCA EAC1 /IF NOT ALREADY IN E MODE + DCA EAC2 + DCA EAC3 + AC7775 + DCA DFLG + JMP DFECMN + +STRTD, CLA IAC /START DOUBLE PRECISION INTEGER MODE +STRTF, DCA DFLG /START FLOATING POINT MODE + TAD DFLG +DFECMN, TAD (CLL + DCA I (IMFUDJ /SET D.P.I FUDGE TO "CLL" OR "CLL IAC" + TAD DFLG + SPA + CMA /CHANGE -3 FOR E MODE TO +2 + CLL RTL + RAL + TAD (JMPTB1&177+5600 + DCA I (BASJMP + JMP I FPNXT + /DOUBLE PRECISION INTEGER OPERATORS + +DDSUB, JMS DARGET + JMS I (OPNEG + SKP +DDADD, JMS DARGET + DCA AC1 /CLEAR OVERFLOW JUSTINCASE + JMS I [OADD + JMP I FPNXT + +FFGET, DCA ADR /GET A FLOATING POINT NUMBER + TAD I ADR + DCA ACX /SAVE EXPONENT + ISZ ADR + JMP .+3 /NO FIELD OVERFLOW + JMS I (DFBUMP /BUMP DATA FIELD +DDGET, DCA ADR /SUAVE - ENTRY POINT FOR D.P. INTEGER GET + TAD I ADR + DCA ACH + ISZ ADR + SKP + JMS I (DFBUMP + TAD I ADR + DCA ACL + JMP I FPNXT + +FFPUT, DCA ADR /STORE A FLOATING POINT NUMBER + TAD ACX /GET FAC AND STORE IT + DCA I ADR /AT SPECIFIED ADDRESS + ISZ ADR + JMP .+3 + JMS I (DFBUMP +DDPUT, DCA ADR /ENTRY FOR D.P. INTEGER PUT + TAD ACH + DCA I ADR + ISZ ADR + SKP + JMS I (DFBUMP + TAD ACL + DCA I ADR + JMP I FPNXT + PAGE + FPPKG= . /FOR EAE OVERLAY + +/23-BIT FLOATING PT INTERPRETER +/W.J. CLOGHER, MODIFIED BY R.LARY FOR FORTRAN + +LPBUF2, ZBLOCK 16 + LPBUF3 + +AL1BMP, 0 /*K* UTILITY SUBROUTINE - USED BY INTERPRETER + STA + TAD ACX + DCA ACX + JMS I [AL1 + JMP I AL1BMP + +/FLOATING MULTIPLY-DOES 2 24X12 BIT MULTIPLIES +DDMPY, JMS I (DARGET + SKP +FFMPY, JMS I (ARGET /GET OPERAND + JMS MDSET /SET UP FOR MPY-OPX IN AC ON RETN. + TAD ACX /DO EXPONENT ADDITION + DCA ACX /STORE FINAL EXPONENT + DCA MDSET /ZERO TEM STORAGE FOR MPY ROUTINE + DCA AC2 + TAD ACH /IS FAC=0? + SNA CLA + DCA ACX /YES-ZERO EXPONENT + JMS MP24 /NO-MULTIPLY FAC BY LOW ORDER OPR. + TAD OPH /NOW MULTIPLY FAC BY HI ORDER MULTIPLIER + DCA OPL + JMS MP24 + TAD AC2 /STORE RESULT BACK IN FAC + DCA ACL /LOW ORDER + TAD MDSET /HIGH ORDER + DCA ACH + TAD ACH /DO WE NEED TO NORMALIZE? + RAL + SMA CLA + JMS AL1BMP /YES-DO IT FAST + TAD AC1 + SPA CLA /CHECK OVERFLOW WORD + ISZ ACL /HIGH BIT ON - ROUND RESULT + JMP MDONE + ISZ ACH /LOW ORDER OVERFLOWED - INCREMENT HIGH ORDER + TAD ACH + SPA /CHECK FOR OVERFLOW TO 4000 0000 + JMP I (SHR1 /WE HANDLE A SIMILIAR CASE IN FLOATING DIVIDE + CLA + MDONE, DCA AC1 /ZERO OVERFLOW WD(DO I NEED THIS???) + ISZ MSIGN /SHOULD RESULT BE NEGATIVE? + SKP /NO + JMS I [FFNEG /YES-NEGATE IT + TAD ACH + SNA CLA /A ZERO AC MEANS A ZERO EXPONENT + DCA ACX + TAD DFLG + SMA SZA CLA /D.P. INTEGER MODE? + TAD ACX /WITH ACX LESS THAN 0? + SNA + JMP I FPNXT /NO - RETURN + CMA + JMS I [ACSR /UN-NORMALIZE RESULT + JMP I FPNXT /RETURN + /MDSET-SETS UP SIGNS FOR MULTIPLY AND DIVIDE +/ALSO SHIFTS OPERAND ONE BIT TO THE LEFT. +/EXIT WITH EXPONENT OF OPERAND IN AC FOR EXPONENT +/CALCULATION-CALLED WITH ADDRESS OF OPERAND IN AC AND +/DATA FIELD SET PROPERLY FOR OPERAND. + +MDSET, 0 + CLA CLL CMA RAL /SET SIGN CHECK TO -2 + DCA MSIGN + TAD OPH /IS OPERAND NEGATIVE? + SMA CLA + JMP .+3 /NO + JMS I (OPNEG /YES-NEGATE IT + ISZ MSIGN /BUMP SIGN CHECK + TAD OPL /AND SHIFT OPERAND LEFT ONE BIT + CLL RAL + DCA OPL + TAD OPH + RAL + DCA OPH + DCA AC1 /CLR. OVERFLOW WORF OF FAC + TAD ACH /IS FAC NEGATIVE + SMA CLA + JMP LEV /NO-GO ON + JMS I [FFNEG /YES-NEGATE IT + ISZ MSIGN /BUMP SIGN CHECK + NOP /MAY SKIP +LEV, TAD OPX /EXIT WITH OPERAND EXPONENT IN AC + JMP I MDSET +MSIGN, 0 + /24 BIT BY 12 BIT MULTIPLY. MULTIPLIER IS IN OPL +/MULTIPLICAND IS IN ACH AND ACL +/RESULT LEFT IN MDSET,AC2, AND AC1 + +MP24, 0 + TAD (-14 /SET UP 12 BIT COUNTER + DCA OPX + TAD OPL /IS MULTIPLIER=0? + SZA + JMP MPLP1 /NO-GO ON + DCA AC1 /YES-INSURE RESULT=0 + JMP I MP24 /RETURN +MPLP, TAD OPL /SHIFT A BIT OUT OF LOW ORDER +MPLP1, RAR /OF MULTIPLIER AND INTO LINK + DCA OPL + SNL /WAS IT A 1? + JMP MPLP2 /NO - 0 - JUST SHIFT PARTIAL PRODUCT + TAD AC2 /YES-ADD MULTIPLICAND TO PARTIAL PRODUCT + TAD ACL /LOW ORDER + DCA AC2 + CML RAL /*K* NOTE THE "SNL" 5 WORDS BACK! + TAD ACH /HI ORDER +MPLP2, TAD MDSET + RAR /NOW SHIFT PARTIAL PROD. RIGHT 1 BIT + DCA MDSET + TAD AC2 + RAR + DCA AC2 + TAD AC1 + RAR /OVERFLOW TO AC1 + DCA AC1 + ISZ OPX /DONE ALL 12 MULTIPLIER BITS? + JMP MPLP /NO-GO ON + JMP I MP24 /YES-RETURN + PAGE + /DIVIDE-BY-ZERO ROUTINE - MUST BE AT BEGINNING OF PAGE + +DBAD, ISZ FATAL /DIVIDE BY 0 NON-FATAL + JMS I ERR /GIVE ERROR MSG + TAD DBAD + DCA ACX /RETURN A VERY LARGE POSITIVE NUMBER + AC2000 + JMP FD + +/FLOATING DIVIDE - USES DIVIDE-AND-CORRECT METHOD + +DDDIV, JMS I (DARGET + SKP +FFDIV, JMS I (ARGET /GET OPERAND + JMS I (MDSET /GO SET UP FOR DIVIDE-OPX IN AC ON RETN. + CMA IAC /NEGATE EXP. OF OPERAND + TAD ACX /ADD EXP OF FAC + DCA ACX /STORE AS FINAL EXPONENT + TAD OPH /NEGATE HI ORDER OP. FOR USE + CLL CMA IAC /AS DIVISOR + DCA OPH + JMS DV24 /CALL DIV.--(ACH+ACL)/OPH + TAD ACL /SAVE QUOT. FOR LATER + DCA AC1 + TAD OPL + SNA CLA + JMP DVL2 /AVOID MULTIPLYING BY 0 + TAD (-15 /SET COUNTER FOR 12 BIT MULTIPLY + DCA DV24 /TO MULTIPLY QUOT. OF DIV. BY + JMP DVLP1 /LOW ORDER OF OPERAND (OPL) + +/DIVIDE ROUTINE - (ACH,ACL)/OPH = ACL REMAINDER REM (AC2=0) + +DV24, 0 + TAD ACH /CHECK THAT DIVISOR IS .GT. DIVIDEND + TAD OPH /DIVISOR IN OPH (NEGATIVE) + SZL CLA /IS IT? + JMP DBAD /NO-DIVIDE OVERFLOW + TAD (-15 /YES-SET UP 12 BIT LOOP + DCA AC2 + JMP DV1 /GO BEGIN DIVIDE +DV2, TAD ACH /CONTINUE SHIFT OF FAC LEFT + RAL + DCA ACH /RESTORE HI ORDER + TAD ACH /NOW SUBTRACT DIVISOR FROM HI ORDER + TAD OPH /DIVIDEND + SZL /GOOD SUBTRACT? + DCA ACH /YES-RESTORE HI DIVIDEND + CLA /NO-DON'T RESTORE--OPH.GT.ACH +DV1, TAD ACL /SHIFT FAC LEFT 1 BIT-ALSO SHIFT + RAL /1 BIT OF QUOT. INTO LOW ORD OF ACL + DCA ACL + ISZ AC2 /DONE 12 BITS OF QUOT? + JMP DV2 /NO-GO ON + JMP I DV24 /YES-RETN W/AC2=0 + /DIVIDE ROUTINE CONTINUED + +MP12L, DCA OPL /STORE BACK MULTIPLIET + TAD AC2 /GET PRODUCT SO FAR + SNL /WAS MULTIPLIER BIT A 1? + JMP .+3 /NO-JUST SHIFT THE PARTIAL PRODUCT + CLL /YES-CLEAR LINK AND ADD MULTIPLICAND + TAD ACL /TO PARTIAL PRODUCT + RAR /SHIFT PARTIAL PRODUCT-THIS IS HI ORDER + DCA AC2 /RESULT-STORE BACK +DVLP1, TAD OPL /SHIFT A BIT OUT OF MULTIPLIER + RAR /AND A BIT OR RESLT. INTO IT (LO ORD. PROD.) + ISZ DV24 /DONE ALL BITS? + JMP MP12L /NO-LOOP BACK + CLL CIA /YES-LOW ORDER PROD. OF QUOT. X OPL IN AC + DCA ACL /NEGATE AND STORE + CML RAL /PROPAGATE CARRY + TAD AC2 /NEGATE HI ORDER PRODUCT + STL CIA + TAD ACH /COMPARE WITH REMAINDER OF FIRST DIV. + SZL /WELL? + JMP DVOPS /GREATER THAN REM.-ADJUST QUOT OF 1ST DIV. + DCA ACH /OK - DO (REM - (Q*OPL)) / OPH +DVL3, JMS DV24 /DIVIDE BY OPH (HI ORDER OPERAND) +DVL1, TAD AC1 /GET QUOT. OF FIRST DIV. + SMA /IF HI ORDER BIT SET-MUST SHIFT 1 RIGHT + JMP FD /NO-ITS NORMALIZED-DONE +SHR1, CLL + ISZ ACL /ROUND AND SHIFT RIGHT ONE + SKP + IAC /DOUBLE PRECISION INCREMENT + RAR + DCA ACH /STORE IN FAC + TAD ACL /SHIFT LOW ORDER RIGHT + RAR + DCA ACL /STORE BACK + ISZ ACX /BUMP EXPONENT + NOP + TAD ACH + JMP DVL1+1 /IF FRACT WAS 77777777 WE MUST SHIFT AGAIN +FD, DCA ACH /STORE HIGH ORDER RESULT + JMP I (MDONE /GO LEAVE DIVIDE + +DVL2, DCA ACL /COME HERE IF LOW-ORDER QUO=0 + JMP DVL3 /SAVE SOME TIME + /ROUTINE TO ADJUST QUOTINET OF FIRST DIVIDE (MAYBE) WHEN THE +/REMAINDER OF THE FIRST DIVIDE IS LESS THAN QUOT*OPL + +DVOPS, CMA IAC /NEGATE AND STORE REVISED REMAINDER + DCA ACH + CLL + TAD OPH + TAD ACH /WATCH FOR OVERFLOW + SNL + JMP DVOP1 /OVERFLOW-DON'T ADJUST QUOT. OF 1ST DIV. + DCA ACH /NO OVERFLOW-STORE NEW REM. + CMA /SUBTRACT 1 FROM QUOT OF + TAD AC1 /FIRST DIVIDE + DCA AC1 +DVOP1, CLA CLL + TAD ACH /GET HI ORD OF REMAINDER + SNA /IS IT ZERO? +DVOP2, DCA ACL /YES-MAKE WHOLE THING ZERO + DCA ACH + JMS DV24 /DIVIDE EXTENDED REM. BY HI DIVISOR + TAD ACL /NEGATE THE RESULT + CLL CMA IAC + DCA ACL + SNL /IF QUOT. IS NON-ZERO, SUBTRACT + CMA /ONE FROM HIGH ORDER QUOT. + JMP DVL1 /GO TO IT + +LPBUF3, ZBLOCK 12 + LPBUF4 + PAGE + /"OPNEG" MUST BE AT 0 ON PAGE + +OPNEG, 0 /ROUTINE TO NEGATE OPERAND + TAD OPL /GET LOW ORDER + CLL CIA /NEGATE AND STORE BACK + DCA OPL + CML RAL /PROPAGATE CARRY + TAD OPH /GET HI ORDER + CLL CIA /NEGATE AND STORE BACK + DCA OPH + JMP I OPNEG +/ +/FLOATING SUBTRACT AND ADD +/ +FFSUB, JMS I (ARGET /PICK UO THE OP. + JMS OPNEG /NEGATE OPERAND + SKP +FFADD, JMS I (ARGET /PICK UP OPERAND + TAD OPH /IS OPERAND = 0 + SNA CLA + JMP I FPNXT /YES-DONE + TAD ACH /NO-IS FAC=0? + SNA CLA + JMP CLROFL /CLEAR OUT THE OVERFLOW BITS + TAD ACX /NO-DO EXPONENT CALCULATION + CLL CIA + TAD OPX + SMA SZA /WHICH EXP. GREATER? + JMP FACR /OPERANDS-SHIFT FAC + CIA /FAC'S-SHIFT OPERAND=DIFFRNCE+1 + TAD (-30 + SMA /TEST FOR INSIGNIFICANCE + JMP OPINSG /YES - ANSWER IS FAC + TAD (30 + JMS OPSR + JMS I [ACSR /SHIFT FAC ONE PLACE RIGHT +DOADD, TAD OPX /SET EXPONENT OF RESULT + DCA ACX + JMS I [OADD /DO THE ADDITION + JMS FFNOR /NORMALIZE RESULT + JMP I FPNXT /RETURN +FACR, TAD (-30 + SMA /TEST FOR INSIGNIFICANCE + JMP ACINSG /YES - ANSWER IS OPR + TAD (30 + JMS I [ACSR /SHIFT FAC = DIFF.+1 + JMS OPSR /SHIFT OPR. 1 PLACE + JMP DOADD /DO ADDITION + +OPINSG, CLA + JMP I FPNXT + /OPERAND SHIFT RIGHT-ENTER WITH POSITIVE COUNT-1 IN AC + +OPSR, 0 + CMA /- (COUNT+1) TO SHIFT COUNTER + DCA AC0 +LOP2, TAD OPH /GET SIGN BIT + CLL /TO LINK + SPA + CML /WITH HI MANTISSA IN AC + RAR /SHIFT IT RIGHT, PROPAGATING SIGN + DCA OPH /STORE BACK + TAD OPL + RAR + DCA OPL /STORE LO ORDER BACK + ISZ OPX /INCREMENT EXPONENT + NOP + ISZ AC0 /DONE ALL SHIFTS? + JMP LOP2 /NO-LOOP + RAR /SAVE 1 BIT OF OVERFLOW + DCA AC2 /IN AC2 + JMP I OPSR /YES-RETN. + +FFNOR, 0 /ROUTINE TO NORMALIZE THE FAC + TAD ACH /GET THE HI ORDER MANTISSA + SNA /ZERO? + TAD ACL /YES-HOW ABOUT LOW? + SNA + TAD AC1 /LOW=0, IS OVRFLO BIT ON? + SNA CLA + JMP ZEXP /#=0-ZERO EXPONENT +NORMLP, CLA CLL CML RTR /NOT 0-MAKE A 2000 IN AC + TAD ACH /ADD HI ORDER MANTISSA + SZA /HI ORDER = 6000 + JMP .+3 /NO-CHECK LEFT MOST DIGIT + TAD ACL /YES-6000 OK IF LOW=0 + SZA CLA + SPA CLA /2,3,4,5,ARE LEGAL LEFT MOST DIGS. + JMP FFNORR /FOR NORMALIZED #-(+2000=4,5,6,7) + JMS I [AL1BMP /SHIFT AC LEFT AND BUMP ACX DOWN + JMP NORMLP /GO BACK AND SEE IF NORMALIZED +ZEXP, DCA ACX +FFNORR, DCA AC1 /DONE W/NORMALIZE - CLEAR AC1 + JMP I FFNOR /RETURN + +ACINSG, CLA /COME HERE IF AC IS INSIGNIFICANT ON ADDITION + DCA ACH + DCA ACL + JMP DOADD-1 /FAKE AN ADD WITH OPR=0 + +LPBUF4, ZBLOCK 40 + LPBUFE +CLROFL, DCA AC1 /CLEAR THE FLOATING AC OVERFLOW WORD + DCA AC2 /CLEAR THE OPERAND OVERFLOW WORD + JMP DOADD /FAC=0; DO THE ADD + PAGE + /PAGE 7400 UNUSED RIGHT NOW + +LPBUFE, ZBLOCK 177 + LPBUFR + FIELD 1 + diff --git a/sw/f4/FRTSRC/sign.ra b/sw/f4/FRTSRC/sign.ra new file mode 100644 index 0000000..50137b1 --- /dev/null +++ b/sw/f4/FRTSRC/sign.ra @@ -0,0 +1,40 @@ +/ +/ VERSION 5A 4-27-77 PT +/ + SECT SIGN + ENTRY ISIGN + JA #ST +#XR, ORG .+10 + TEXT 'SIGN ' +#BASE, ORG .+3 +A, ORG .+3 +B, ORG .+3 + ORG #BASE+31 + JA #BASE +GOBACK, 0;0;0 + BASE #BASE +ISIGN, +#ST, STARTD + 0210 + FSTA GOBACK+1,0 + 0200 + SETX #XR + SETB #BASE + LDX 0,1 + FSTA #BASE + FLDA% #BASE,1+ + FSTA A + FLDA% #BASE,1+ + FSTA B + STARTF + FLDA% B + JLT #50 + FLDA% A + JLT #100 + JA GOBACK+1 +#50, FLDA% A + JLT GOBACK+1 +#100, FNEG + JA GOBACK+1 + END + diff --git a/sw/f4/FRTSRC/sin.ra b/sw/f4/FRTSRC/sin.ra new file mode 100644 index 0000000..bf938a1 --- /dev/null +++ b/sw/f4/FRTSRC/sin.ra @@ -0,0 +1,124 @@ +/ +/ +/ S I N +/ - - - +/ +/SUBROUTINE SIN(X) +/ +/ VERSION 5A 4-27-77 PT +/ + SECT SIN + JA #SIN + EXTERN #ARGER +SINER, TRAP4 #ARGER + TEXT +SIN + +SINXR, SETX XRSIN + SETB BPSIN +BPSIN, F 0.0 +XRSIN, F 0.0 +SIN1, F 0.0 +SIN2, F 0.0 +F1SIN, F 1. +FPI2SN, 1 /PI DIVIDED BY 2 + 3110 + 3755 +FPISIN, 2 /PI + 3110 + 3755 +F2PISN, 3 /TWO PI + 3110 + 3755 + ORG 10*3+BPSIN + FNOP + JA SINXR + 0 +SINRTN, JA . +/ +SINC9, 7764 + 2501 + 7015 +/ +SINC7, 7771 + 5464 + 5515 +/ +SINC5, 7775 + 2431 + 5362 +/ +SINC3, 0000 + 5325 + 0414 +/ +SINTST, 7770 + 2000 + 0000 + BASE 0 +#SIN, STARTD + FLDA 10*3 + FSTA SINRTN + FLDA 0 + SETX XRSIN + SETB BPSIN + BASE BPSIN + LDX 1,1 + FSTA BPSIN + FLDA% BPSIN,1 /ADDR OF X + FSTA BPSIN + STARTF + FLDA% BPSIN /GET X + LDX -1,0 /SET SIGN TO POSITIVE. + JGT SINMOD /IF POSITIVE BYPASS FUDGE. + JEQ SINRTN /IF ZERO EXIT. + FNEG /NEGATIVE. NEGATE AC. SIN(-X)=-SIN(X) + LDX 0,0 /SET SIGN TO MINUS. +SINMOD, JAL SINER /IF SIGN CAN T INT, THEN ERROR. + FDIV F2PISN /REDUCE TO BELOW TWO PI. + FSTA SIN1 /SAVE IN A TEMP. + ALN 0 + FNORM /INTERGIZE IT. + FNEG + FADD SIN1 /RECALL NUMBER. AC NOW <0 + FMUL F2PISN /NOW MULTIPLY BACK. + FSTA SIN2 /AND SAVE AWAY. + FSUB FPISIN /SUBTRACT OFF PI. + JLT SINP /LESS THEN PI. + FSTA SIN2 /RESTORE AS 2. + XTA 0 /INVERT THE SIGN. + FNEG + FSUB F1SIN /SIN(X-PI)=-SIN(X) + ATX 0 /AND PUT BACK. +/ +SINP, FLDA SIN2 /RECALL MAGIC GOODY. + FSUB FPI2SN /TEST TO SEE IF XTs4MqzR!) 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 Wq@Cl#~G7Q?f+R&8sxzl~DO^y{fD@xkae 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%0AT_M06zm9M9S}2s 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

3+NUQX~yqx_e!C7G=b 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�fo-26_88drrsW2`Xo?c~`` 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�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

|JoB|K{b%lB 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

I-Zfn4s$Pq`MWP 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

Yp_9~;0am=(2$ubfghgyfHK)c(vr=?l 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�hu@2?>*9#_XrPCB6 zm`!P#eYijP)&1&x7G*U11zgOf1%aHbVzV~GWk0ntnST6G%ssbH+uTii%jo_oE1yL^vaKc&wK>BO(m{Fm1MmUr%w zQ`%9VgP&c$$1{}!d>FMCJXzJsO5WDK{c)08&PS&;p1WGZ1+Rbn*L)zJWxz4x;l_^)_fe)O^ReL17sXIOZmZT@~k+CqhfgK>3!S4{ds!ns z2RF+#deLO~63Xf8IrIoL-{4~7Mn11=W?}zSo9B6Z)NFUiCiJU=lo6dk9t_}zmYe^*y?>Ox@C^d z!za43FBLJieBT;}+_qnunN=N!+B)4>x8f=CeJM{*JQZ@>eAv~R+CLo{?pmD zv!BY|UBlmaw*3_Az>B^8`5*8dMEh&Mqu$?F?MQrA&avnv^0kWJ@VR9_$c+_0$ovz% zuBVqAe|$IOCfO>Wo;2jCQO4NdEBO{k*r_aVEY-ufUmmISyFo z)rRdFx!`ku?gAV8B>Hxw?_HBn-$(kaa#u|@_IW-r%j#qkI;`)dOZoKn&3u3Hg=XZ7 zFDF@EtH+|8!7mniUm3YBKG)Ap=~byZ7k#3=PC1#zPo1+C;~;lYN8$U((giV^Vx5kw zv$o#*%Dw-g&#MeW(}O1KJlFjj^dE53A^UVpZi)GI=Qe+q??v`cJs%f~cj}FU50dF` z(2Ljj+w#GbAD7;Ox9kP+h-0}A_GO7gl`Gf^U(7M_?2728(YbiI@omL)?btE=V85CS zE}!nH-$MB@(QKcg@QpaoYwxo44fYoqp*?i@8k}hQT=s&hBt7>XI2lL%W|%;$O*JNZZXFEAw7W2Rup@x zb-XO+3;C_>`ju)}k#AC; z$CdkqB4(;I+7{O5hfWiXd|xqGkJq*4m&iu<`37Br%zbq1t6aJB-nywh&Xvzb-$(o> z%g2FbNVy|nziM_F`B(22&#HY}t*$Kki+oTIsQ#vNr#eS>uSxltYR3w%!M?_)b54bt zkNT>mzcpJGy2LR#d{DdqkI|*719<=GsiGIY_${M;R9sc*K)?2WIC3p#PB z!JeRNTaES;IScvps!NiEqfeOgq8@I3F0n%2qnd+jF{sZA{S#e}M{aWB$Cg~iobO?& zPJ|tO@9@QIX6@Qn^>jt8@lbx8^rB+krXTg$Bjl{9y4RF`JQSO;634Q zc$~yV*1^g}DhDgyLA~&*gJj<`;p6YNen>q>bYBrm%a>Oy`~n_u26@goHHI5eDx0U6 z#r~w?)1fvX8K4LJ)4Zzj$h)=h)laILSLB`XnM`wuJA8()fqcfY27Rs*^9*{eiOI5l z^d3aKLjSOy?|emxBh+VsoY7}8kq!2Qy!`G7c>~L=^LOG|u@{wBb#FpX-r8^VLehs4 zx@*+6#6_j&pzu^R%O*!<{W>S5XM^Y)e|`GAlCzrFH?Y6eIl6aF{DUmqJBLT*EV8fk zV=De}uAi9NvhYo_gYVvL1G0TNy+WQbT6q(fC zmuGz+{%++VYduxH4Icps%Jv8h^?8v0;j^##*S$U|N2@**qPwMZP4qV7KXIbuuje}1 zzUl^{TU<}5y1n{L_2+-aCxssMcqX4zu`E8L@^SXJRLi6OsQD)Pb+Ydi{DZEuW>a0G z4F3%|L@&6PDdGji4xVY!{K4k8RX^i@A96l8Tf58wsehZAC3$>(A6d!g*0Va?H&^YE z@{ZO$&IheGR4@AreQVFW-^>YV9q7E!LGqJzj@tfhs$QnEz`VpRdqq^h|NNP2*6W;j zlaYt&_v5T({%Vh0`&8W z>h##bx)-L2pQ+z{56w|$Vtw>+0UwF_@Phd!=}Fa>B1aIp3hR(7 z`MS{;GuW#3d!41__uU3ZpQv>5R*k)?U1Pn}U}TrDLq#{($6Gw?HZT9TbXM5|suuQx z(0|VDL@v&?>ae9ct6kRGz7#s~Lq02~3+Dpmb0pisDJ%IF=VL$NkF=ht_RP9o$pbx2 zDdvluXz17OcWA%9TRbX#*N?deWMT(OzD%Ec#a_$jqwY(5eZ-tV^xw$8Z8pfUchC3e zjJv0y+Aj32`Wo=cYrj{cU2>tCd6ng`cW2(8Yi0mj{7O9NIVSvLW-$EhX3M4L>a*Ct zh@YqPGHBh>4^+>Lp38sB2iTzQPOb7xb8q*8j~CgWu-+(s+$66x@)dvE`cxQ^x0n5P zk3jSQ;veMPSoGhi=CDsJeX<=jpEz5Nfpm`Gb=c|B6R^78>i+2+GMRfH)L&EVEP2G$ zx$^BL?h)^gmdECO*lcWydII2Kwfl5)kgHZ7Zp@Rqm)v{lT&emMHqT|}Bs24O>bt0U zLE;AWboQPs^I-8Uz2PB4)=_A3W>li~!grL9 z_@G%N&1n$>YaPs;NoFLQk<**oe?sG_hh4Q3CJXdk@tz!1#B9n%$uCh3Me}YkUz%&h zH}_n_jGiZ+bxLf=X?6}c{M|0g>S46M?OqMV>$#UxeUOo7U=NjZp{5gh#=2H?)>sTb zP&VM)H8JZj`L?l_pTxF(A{wq16S8mJskNDn$+Oyts|6Nv^-$jq+8>%or z{RY2Z8DQq-{QT_ae!%8BFNBW6r=SP%Vyo)T#xMC?+~;`2`BA*g`Jk7CIoNU*noe{+ zvG^_SYt{UE^a!-L6hDLKI8L$7gjcE`o-F^ojlQe7So9J;DZ0izoQo^_r9*C?_@~xE zpAeI%cMQ5z6KZnsnLZ};Fn+c22GVKFVxbvIFJ$ED%p>Y&*tWg*6`L4KYYp8LJ$9NK zEPh(_56xJ!Yi0QGnhPs(z6ts#sd5fPXN&cQ|LOZdLeIc$=_K{<;K!H` z{fvL&tWMgYR&!t8l>u5O`YE$kJmaat?;#m%#ZFLFGF3+-U58i7YuJvOYJNa3y|E0wA;k$D_ zRY&oDK#yukj+M&qkY^(PBXV0cKU?Olh@ZaFXPTbz+EqLCjET+%`wl(YQ)V@ta6F%Rc=&kjv5rS*#B`2H)g+}#j|U+KT*4U&S!GmTxx73)((H*$>Pg( z>605~0*D2C=HvSZ*eCJldbjd2dbLCcy>dlfRFjmPKiBVyPOW`*mVNj@WWB37S@P@L zuX4d%=aC=Cv9NM9{=0m3oeAZ3$tvZU3G^P5AewQAddkh}qwnpFJygymzGMEY4zF66 zK3|^qkQtGB2C+z?Dk?%3nD!KCa)j!8MiW$gC12%|QMLka9$pa?r zl|yi>qL|Zka(3Ovgzr=93G?`sAg2@X(ArSzg7Mrq?LZ|!yQQzM7n=RAmU<)g1| z=pjdUqi@mu+>;u!yQ+@5P^r*=c-3&0fUsB9GSn0`aK&Y4TyKFUDC{Z-)F<*Rja#w%%3t zIr~!b?R1{v?1ZltJp@PiCgN?WgR&R)1MxqxttD3&=gPSQ_4N4sPW;@u9@Vq64R-9) zd_#EK{O!H#Id^@Oo@4iL$9$P&&GSk4$@HbW7Y_X`+p06KK394NoGY%gN%HMA$H5eC znX|)ol+Q}ne7W<4na5{~f2%t@9(>6?3d~;7YxPujnax^#PV3?%g??gvnvlwaMlh#^^hf{2S!W|qv_7p9OXKf3YPqxrioDcU7 z$c`${>gQk|dCtX(XbJkpniFSayVVKF_;L5mPTd;El>o>Kx#dLU}nRnB?7*NQE-9O9G4j77*hGS%dg8N9$`)4NE=->$?AT1t;KVgA3*?vRq`P??6&9h=3%N$PDxteVWpCsGcK_}7Q;=Uf=gXH@if+qDZsebth zn}kj{g*UpBhWi@u6|k>f`zi6xk@~@)9XjXdspn2IE&h-r;~t90FX?>7o}D&%0gqfa zwr|s)X)#3j(gd`|b$E&o^{<*8HtX)S_K=mkMKEG2@xm9eW>doOF1pl$Uw)sc*w3eTi*PF5- z^we2b!seK(qQW?|Q!O;2=lJ^U-X?<5!!}+pnAr`FrO$B4;kU zBOQvr=NLHrIy5GIe)20h2a7kVv4$+Mww}L%$4N#j&my-||0dflI=U~SeJ%7LE9yvBiHR4#k zkso!RQ|mUFItN}eZPjPbhu9+;KC`j`F0Cpq(sf$zyGy>O<} z{RP$u8-JEQ?K-#qtU8m==ugBo`o1tjmzVuTZ`J;Z@;v&KOk?}3#b*m$wa)E0klyaW z{_6RPao|tbapv!e-1!Wv@=3m~`r!7}B}2+ZVSk=1zudYr|D)e8zua)_>sZ#dn7Tmm z7p(ip`zeQ0;;a4~%bjzET{a$8o@6`k&-`L~Z1-!AE_<71Lb*#UdK>*2^^^9$<2R~X zL%nSW+<~g+gfV5u_s;r6bWP4@mBGk!>Acpn?z;YyrjPrY&URmL9*^LT@4X10tKg7JTln@s z@p_U+{AT$K+v;4MI};>YeB}?PwtbZR;B!M&QVc6-9oO=g2WAywc-=>nVc%e zefC)S0-q7*0L$DTIa$r;d7fxeuOR-`%u?r}@~(>g=q1M|UUNSu^UjgCC%>^-avAoM z20D_il}?k6^WWiH?Ry|2Ld}*qv(^vlSxn#cUJ(<%;4VY)f3%Aw=8RfS;HMTtZCHw(iie`Lg!m=VOP}Gmt~=TFZ0#;O1_J)aM#pwv34c+IyzO1Hr`E--hE&%dIka+*9{A#eXlV5j_gqw;O!?}k%OAPX z?eF+s?u+3ptG2L2U%I|p>F3jiN>wd)Wsq2~F@cnCx8{Nmr{Rz5%k@yHdEBAw2e{j}PA9?6e-{o_% z`3v&V^O*SK?3H@ADo-c*SLc1|y34E(Ij_9J>^&JjXiEpv&mnQ!gI8p*=JB-ps(Zny|&`>aqNm-Za%mtecM7 zLF0wgH>0oAWlpw)n{h$x@se$uWIW>+w-+` z>xG5KqNeJ-X<3J-PSs~##8bpN%8L(K@tlz9Pt^#c2atHscb(4juHFOVwlH{^vq(ot zHhaF+Vi9(veslF%md?*Kd+`;0=il6=?+^WI4q39`e@C5)&k;>5$3}kYrF}8kr=^;q@@v}NtbIsi zTr7u3Jy81I;v)U7YHKNX_`tI;0@y&dXvvRb?_wldq@BHpsb4}@w=`5McAD@N1V;@8V zV*IO5(X&nqi(`5}+SEU~(nUH--*a7qO*T4Zo~!ld5-*We{Hfoi`5cYW2>a16`cemvreD8?;-sO>8f67b7`3-mJAf4IhCEjOSLduKDfYF8+WyGL<2Hp{f z*faYF(w14C#A{%7F7-$`E}FRtpR~(Z#1+7)UY$CpXvN>_4UR9c6<_fd!M_oA{=4<| z{;S!(4=*?O(D1$Qlnb8v446l?v*bNbIThZfu``)`SpS4zP?3;aT3sS`R%oxF!>5yTwiCgN`s%hbB=%GdG)b(OLv`rCpu?5 zpL#=|ukUvsig{sn{ZT^*{bcWY;OnVxR69z=$I|<*OYHvHW%Os&1FxxB-a)I(Y2H!q zWk2OtV|O4vmGJqNdStg#{yoQAypVYF--e&*3*{f8&Y&I#dz*m!!&h{lf7$n#fBU`g zRL`ihAj{zQB{KUvdeWI!DP6)IQ~CokkM4UI)B`Yn&wQ}=ezD&B^{*wT*f`(OVtPw^ z1GNhPAH@8m%a7jwNPky8e(W@U^=tN(ZK!+gU;pfktiE=g}jeJ$lwpmNqT(a{X(IO_XETPD=H1Q2Tg&eohO20NVTqQ6N6# z6}t|kPnh5MEivf5~711tuN;;B$znHBLAISH{`d-4{Uy$kN@2g+K-k;EZ zZa@FGm(buoXiz;dwO1QjY;HbeU-yTXTi(ua`-wMw^@Zh%btmGtzlpy%N90m+HW6RY z>cUY^b$-OhF})?bAzw~+4F1sUo1bc@M$Dy|+?mla=p5OYpbW8MIe;U11&VPcL zygS>;W^2IH^9i3K(_c{&VP+7yvAvGAzrb~vLi?{pEi~8@>@9OKY{A$eE*vwhXI}!)y+==-@T;*Uzlddx|&n|lD{&ZH$ zU!td&w`T?%jUBzrCTG@{`S~sOvU;OrJ1wWcnWK-8dna0vE;AjBT$>(viT5@)Pk!F> zd`CX(DSS|yX%C*0PP(TbPj7dKK20C%47SVkcf>a2Of)A{K9kO=bK5yBANKh>w$Dql zh4v@j8vSP@=MG=8&5ZblnBR7*z=L=t-&u}Cz5eE-zRV;4RhcAH^nJWya*Jiv?`TKG z$M3pLkv}Nk>2G&Lui&nnH!m&06ZFYp6LnWpodf*7Qt!uWdfV`Wc)#k#_uN^(diIW? zKYqyFJ1z1J82RfP{B?8)`r~kQe2XrAym&mLW9+`2|4pybF&{gW)k{XbrTJh#W70R@ z_cB~+H|F0PJ17^xzH#zDw)@KKhxipA+(7UmUyb9s1wNB(DiSK(h|GtFN~-__2pULd=-<}b$Y*&cem9Ti_Q6VEO} z`?~Ix_d#E^`PiF(MmErQwgX1F7v(tQXMU@la%S6*2X^UIUVXrv{7?5QzF^*wy>F$b zd>6jH&N)*5z4(6g=hyz0;mad&=J(e5;l)e!kSd2*_%T~V9iI9vy_tN*WJ@H+=t9*b zwA)S^-ThY8nD;ANs`*9bx76z+{Dp6xqknC6{-#IO!$7VS+aG&x**Ru2Wb${=IX}Dlh#Y|Y z7q9QzXRB{tdMj{|-ub(HKjcksLD}bMN55p!KI0`jv%ULX|Arps&5L^Hi+KCt9B&x! zu(x!MHHHj|AK4d6uEFG3b^Mu!Y{xwQ?faesGkEmiDZlJ{)zy<|vTD3(KervT!ME0b zHpNQ3efRm*$MHsr-hHw+cZl77ef6cjA9t&~2vfw|3q3L2cIk6&{^Rl!=_vYJ)URT5 zJ&Fa9IiGXI7s+08ct-u}u@fZv=r(sp&cHjw?0Y}cH%@K=ex2rxqEEbPjOvllJjUmm zQ!yWGc?*cVzWFZ7FDnl#KY_ooJ%QN|Lp{fJ+aKR2mhwIK8T+UwS@|9OVBS8~-cyge zUj1L3+xuOjH?;PFVrwp}uRP;}>kqDedGmqE$;jKuZdeV0&Qm&#k&G{Hes!UK{}H1s zpA837ji>i(JI=s+?{k0XSL|uF-QSfD^S*W7MM_#Iwv=|nr-IMCMp?bLSVd$8`Stm9 zSpe-N^d6V!CnrD7OQ771zu$lk^_mJg4*bcP;#2sXu68ngb^Y(?&E$Rd23~#no@5z4 zbO)coTfe%~&IEPPsy~OBSNz4VwTnZ(J@0b->~-$-`{wdrgqz-@{^`$=Z+ma!8hc8l z^XcVh_w3=j#9lI+_3hQakkcmu;r;sWZ0Cyp#&^Mh3$p=qdt82Y`2qF3Z(h-x2z5Up z7W_v0LR4RW!?$hyaz&G1#cMFd0(=WaxvZekp zXon7HJ1@02(&_`y&3aPJj$*CpZ>DE*C7 zoB9Ld;#1mFlTX?|zH_9m_Wk$s_|9{WNz9*1TG2seb@14sX*4uCU?cDgTkQzn+TN-; zIoJ2cnNv7e*G^Y}pbs^#ilKF2mFm)7yj{^!N+yp*dk`B~ovi`>h_ zmVEyA(R*_RmOUnx-;nzE>X&V%-1`Jn>x-S6Hml9A5w3| z@8_FSf)~5&+&At1hUJJYPXQj5Pm$irIW@1zy(6DX=K)vgHRLpEo#V(yPKa~e20y&zKIbdr2noy8LRE$>no=ayyP>mqFdk# zKH4jWZkEk6Tj;&6=r{b)KdbhZ{x?3u=j1=-r`nrP^n;(|iiu_aDBUTa_*Q*MI-B{z zbyuRnmwYC>oGp&$YizdFE!Q|o{Ymou@vqf~B>wWZY<{UXoYV_J&S1 z|IfZ_Q?+e!BJAkK=6n|P_$Gal;isXCUc}$&QGR>Gew^c**Z3Atg>yg|^-hSs?8(Nr znRo{t%Qz?HAif^42L4Oz=9fHJE&Q|BHLnPLbSKcmb~EZdKS?%Vn0I^(?mANfW8zVVB8z=#sm zUGNj6tEsb^owWNle_{Bp)F<#4wcBpu8SbUq{=EC_r*qx?58)s59J`eM4j&L)l>1(K zq+W_kHZt z;Vj-G&+)x74DDRX@G@oyDqFyQOAW?_zkr zt>u3FX9L#Kr(kx-dIe8y1a`3Y0eBAI@~EDp5dNx{qMOtUoVkhqo;Q^#<}1jRpYdI& zzwu73c363j-TbeAj>XB^*`+&kULJk&eFoZkEQE*Wr_CqMGu2$X=qY^rd~?=w=|xg? zO|k1Yw)2*ZJTl0v)4aomm!znhS|79GDcgBTyahkRe4=t_vEM;CVWc+Rkyo#o*NA!Z za?5e2V%MEfxT0*?M*Ru{+at8hftR@OV#utG^j}Fzw0t2H*F) zcV#{PsCTA<*8W!N2|q!tUt3L9^!mo+uI9h22D-btfA`DlKSkZ7^A7(FpU8ImUH!p$ zBm7lr+cB4+9)!%H-TWu}VEygmUGyOVyYZCQKJ|GXYtJ?z|HgH@ViR(valWYgnLe|# zcwG=3_I3581#g>vNdB-okMWT8hojrS82td^ars_reMG;1^W{bBO^ewFdWX-}>iq3h z%SVc4^fHtkV!mhSH~D_t0`Songl3c?OZ_4zc#w@d2y!1TXWuaMDzK~^t%0l7j^Zwo}?zxFxG zKi0bzX-h0GOF0?9%%wJ}5nCx{tqcyK$CZ)KhOUm+S4XO#jli6}3X&WAD4V z^u{YQF8D;w+aLba=gIOtoYe;S8@~DG6LVYIiDPG~*cg4yzH{EV@i*zf0iK=f=4P|; zo$T+;ztVdoddXL~d}g^6dm9@%NXFv5Z0(-O{lEfkWoEK4Axn?o~E4{K*x{=SZb_w^?&7e9p< z<=2)w(7W4bV&4AqE5qAohGtqp6W1MIl;7HSF{LlvX(7M3XyGvNLacB5-SQ!?KQW)v z74ke$}fBDZGACc+q+qx^8Ql2XTw&@xHGhgVy_c_@%q>7@cz{7pT`1UN00m$ zm1AR4wR9yLJx}!Ex%0?JoMLx&a9Qu8-JS8N`pMDr_dor={f$oBeUSZ;#88??Am?g6 zlJRWz_lcjg@9nJaYcc^2>`D0c{lBjlL-AhZ4a|S&x;=Woy!Lth^w!$i_MQDw_jDOh z&$RNlBUZHe#Ms|L{7U}ZdS#>ErTH*7zqT`diOv-)+5SJ+td7a1&sfN(;_tJriVd-u z$=YomdM10*L#};3Uq92li|Zuii1Bkj=Y3Xc%V<9B3Bwxw^mo|VkEnG;FHG+h7QfIF zZ@c-jCxSQ}i%xyX^-k&&)vuXB)ErLW6n&fg{$J!@n?K3t(N82_^SA5@q5l^hqPx%D zP>*e#ug>b!={#rrEYDr9XUJNV`UmnHx7zQg&rYA1{w(!cRy-})0#D**pVjX@;awl}zIk#C+U@vh@RxSX>RplF z)5Wctg5I$Cj5z&E%e(j+Uibjoi*+Vfru{N!{VMqCFW$G8{sA5wFfPolOuDZ6EqUMQ zt+mxDho*aSTdRC8ehc_lJr!I1vGPK>mp$S!d)u__`EonX`zv@R_%ZlD#0_m{WX?>u z&-T|l%^m7<$3A)KV9!@rPYiUI-2Mto@g!d9t(;%EykLK|Q@ih>=apk}OjeKMXUTJ8 zUYNcf{@&=%M3?Eg%0Z5v9H;4O)1$98cM_2mQNNM(M#pUEAE|R%kBs+<-cpHs_tPt% z0|poClUF|&a($;=br$RRyzc1BF}-2?r1|?V@(qXf9=3cKB*^w7c%PE>=po~kDQ(Ov-}wPr18OdOOLr`?+r8k z5wi~1yqxE=xv=ZMS*{;H;I-9o&{0;aX>&e*z51A3?e8u(SO3SQeosD_zTV#a()I!W zRkBMRz-1T>Opl#@&+1Lq7Zm!xzNbB-_PwYDFMWQ-2Y;mwrCpMGH`@2b2`29h%8!h` zJ?&$4KBqoq{BFH%YibZ7R^_85M9`ES&=vmf)@ zi~neSJeiXqPA6xQUA@%CGhxpoRzr4}b5d*whkoO8VZ=t{ z-HGSW(abIAj;oJEy~!2}{;T@RiJyip&)G_Nsdmq0EJRE-_{-)dsCyGb*uFK(i?;Y* zxmEQ+cuisCFi!Je%q7~6E3YS_C!%MJINAG&G+XHVz0~XA`rl`QnD?=F!9Nl0ZBLrN zdq8fFooSwHbDeee3>WmOQgitI{b$NijJud>>ivCGTAL zWqjzhI*SiYzq$Nr@0s2s8?}&>Wi*Upa{QXVTzoEmRSuJUv~*<6D0>gO-ut*i)5#y4 zaxiH#CtH^_S@bw>i@sYqC_B&JGVTIL-{+>BiSEQ=E7!;G{V942^giidjGq*b#vbm! zPfuPxzC}-Nubw77Df;A&JIfDZAKES?-%WkxJ^St}{6;+|*pF{`8-_VlTKc-~H9qpRC7i^zo)20)JfbW@`1*qN|Y0u~*$| z#(&|xGHi0*^UJ;k=T2Y1_F||nnYASuErM*A=`wRB8n>_CL zT={}aT&~_(WSc%=d{&+N(e^0j+koTm_u4_|dnxoewm<)4ea__v^ryVhE;7?Sia)S3 z+{1YLnBRf__?_$jX*(Uq?=a6yv><+_7o0w%H)I6u-D!P|zO=7x292-bH~ZT1kiXQv z`K#EYL4Ds~@VzbHlfBeV3jf{*@7&+KiMwE)Uw8ZJf4>J3w&hFdWZScAdrg#o@VAtm z2iTwfMl($6$FjfsG`{AI6Z`s`_?mo|ef_8Snw@v{^>5;9;M&(;#@Eak+1H=M*UaPF z*N^vakVCycZn{i+=dRz>z9P<(_+1%~zIwy&>%CI{d+HX*+8g?P*mDL=AE1S3{byzY z+uw>8p~1iN+4$+2ce1a4?q4%2Cf#qe6U}el(3gu2w%_?BzvF#>_VddR-q)SjEX2#W z8ee_z>I42(ub;4I(_sB?@paPfpW&ky-NGkTiC5}#atz`pA@nm4|- zIWlAl*?mW`;-}Zlro-d+eD95TL$sk|-rl+5GlM?lhvwh?7yW(z-Ivc|`|v-2?~U#a z_6K&g z?7%0?px`fwzE_8qq{#=YM?fMn3Sn?XzrNZ`fCR?^1DN&fas5_t^Oq zyG=@m4V`+ecS^p#qc2u{r=7WIGsCqxlM6B6=mCAz#$r)ACuXHnW+&G{4V%TYU9fdQf?786TY78ZbU) zUXBVkc>NOI+PsE`dAr~l+5P1exy*b0`^em@{@q+X+1LD@&0{i={T{d=(@)o%%QyUc zpa!OY_spZ|-^bTL;$LdD_Ah-=+zobvHxQmBGq0bo4*K`*8M)!#+b942&GXexUqf&0 z-Tl>tYMXq`9KZb@@0@M)b7pe)`u8G!AKP=(*YwKobSCDb9e{T(C^=|KaTGm*cbnX{q;y06H@+r``aDg+tbgl?>$^?`MuqpzPICF zz6Wml-s8Q_49#wJPanVfP;jA$@O-?|=Ra~ze*f~>&bocQ<$KW1z6a&_Jx*cY+X{DL zRXeM}B)ahRPWfHvLB{5%2JiC2 zi+=*<l^lb@OK;Zy7Twm|GhlA956#7xSNYd^8v-z zN8!xB8~uB~x8HkyCAoXL+RGNbe$f6;WJi2*WRD2ngTM7Thdbd7e~WMNpM}%@)@761 zT{OaPv>wo9Gc(uTX-%U5{jSu+>81Q-O3t((t%m3xy zTc@4z%jKiXz@^g>%f@{be3zYz&yLodRcTfI3-Ui2OKn7Y$}|5?3&n!%p`ZQpr(^~~Svjzt>w;D`3m-@qNVjaS zutmtn8~E!DbbfQe=b%g8;Mc$5Zr{Lf@BIYb!5$jzqIr0S&xZa_@9?{K{4KB#eEu8Y z?fLvSc)rrRJ3jvn|Nlt*=Ko5^ZuuNOli9%f_W~I3uVB9!{~CY!P6%wEY@*)6zzh0B zvk+u?u~)IH&u8ALcgUwDm!|rkeGj^R?RK5cPAW$DtzO%}H^`rXlXC3e@|vxDyUf?$ zE1#$SFMdvrCFUr}Dd~5J4W^xHl>U!uR-neG&;_A0Hk72)e{l;*5 z6MsAXp4TO&pU2;P|7R~S&wWne*m3?l{!Y0rs(S3gfA1%`Z;+fLe&rYJQ2vis+Pz91 zz-s;SMLe%f4F$iRd;=99-~Y_J6=ZY2AdXX-dy=I`M$sKJVoH=@AInW;k|&Klh^)yK3jWB z;kEztw|A%n+1u2yxAb#%*7lhKejjQ6v-V9CE%Xj6dVzcY75z561wwWc8K<|4cYC0N zdIW6;q~@2ee}cB)4K?Dv;CJtJFO_LR?}#`QV<(Vw%++xyl0Evol^ z@~`T_5}k-OkC(^W^j+<5h-*X}!Bc(D{A$TZa3cvWA8=I)qZS!N|wJ;ZDX3z z;A>)h&WNwfl)Q56k&m*n)#eWlY}ddTq6odiDg z7+opfYB+d&qjzS|%bdc$razxtwdqU$eEq)dz6>~LWhKs|It}qce?la;P!PLHZ_t(Iguf=zkGf<7E z?#Iqe9{E4X0b4%t)^dsV^Qs$6{L5ZBtIPNPxF34{>AdO-Mt`vlS390%!-&2w+jnN~JLicvP?%HrslVA}e1y$_LiXmh*F33_bz_&lUG0f-#>%`Kl=Ya`u`CJ{OJD^JN)SX|LFh! z=>OmU=>J=M@uUCm@!605KmCF=@A0Gm|D*r^4{^T#7Xb1VeVISI+`dme=5BxWi@T4g z!}!~Su z$$)kJ6?;B@cJUE)t;fqp!6MsDod8(hIV?W=;k95rk_%UU+VR@FPag5o@p`1K*~D_-M_qSxkq>JqP>?2Id3yW3~-W1Nxt z>BH+rFZu(X>7zNmPyO?5-{`fYjnCb{jb2p4_C_yiph0`b zi<%XCutoa=H7DM$D0)5Kvj0VR-B1ha_ee!$|4MjKw|u3#Q{Lm_)q%LX!76&~lmng4 z81$kaf{f+_%khGDs51)|RaKig$$KnVFXA=M==?R#7_bVj(=!HMb;bcJ>9w5klwRvS z7VTGhQIni$UwFNEkJNZJ^w1pNr@nvdGURwsOXg>y*Oq%!ZaC>xu;9N#-Q&a6N4)jy z_xM1Kw9DfOEXV5=Z&pyXKk6RY9YlU5==A`e&*a!o_zPIu`-7ix;xAxP^FMIL13E{&4axTf3%njL_M&~!%kk=Gobl>s zbiBxQ&1ZZ&y>97oK!2U$h5nF^K7$t(XLJsD(HDYd8TZJUcj%lB%kdhtk24ltr?8|~ zp;y4#qwn{jqx~L{Df%sbaf7Y6F&(|oYlp3nem}*l!*aZ&=gW8p&fSTx!vRD{os3GJ>R!`#CB}%#P@r6Aa!BriGa0-pSoUsKsOrgIiorg zI^Q4eWgk1NutW3AuD?Q03|OTnTz>&e-6=&cY;EYTJ-qsO<2ricFJSQ(6TMs> zJFK|J;I9?0GiR)O^fR8}uQR;rc>TTfg1^WMOHcGOI)8->jWZTrr#dI(F<_m_g1!e7AR=k5apUZL-I z=;TAQ+tSgC3>983+wjCI{nrnX$B^xza|$oltDPqTuYaVzFFW+IecUg0$n^v^?R)HF z_g9NvXZ+P+Yt#1)JrS}k-#2Zo_6dGYS@Zwd?x^3yoL&Rd@*&I`Y(?Sn)#V#2JNG!kY9Ku#T@x7Z!gNUh1tf z-z4O*@IuC$zgn~h*5PLMCkoar{WRt0biD9eCqE}>zv9(tU$EjHL$4mt@0*6#20d$j zA+W+XalQwZ>uBgT`8nVf{(aXuE4|d4*8Pb(BeXt$kDRI9W2e_@w+mMJ0FuW}ui4M( zJhA#;1*^`u-sAA)Cc6#2q}Slp(h~&>yZ%&s-|>=fF!=sOy!t&Bthe1Gy`Jb0`Amn4 zX19Um@gw(mOFvcTuZSO4d8}9zSd%;g%j3r`LxESswH=o0iHIN1;8n0*#B1=X^Vi84 zT^_;9W6{p5f!7&cb-W@L#n#dVJn4x&{j87jG1c#Av1ssDz}jQe9)njMuM=2>*D0*P zi#<|A1o*4Okr5+1UMFWPc`R5fz0RC*mB-1y@BB5%W9QWwuP%>pmtyx*zMtrYpHsRJ zIyS!VupaJAhKgQgJ9t~yWhm%XI(o*d%TT~7dKKT(TR7>};`<@nPOr$Dz^jv<=zKrv z3FuXPKVYqVzqxJtzQcMEFZxXWRsp=&*)wBD}Wvg*)Xs z(1nwqgPwR~#=>$i1xxe-7TIv+V7hEOUI7c*2d_H4l*QqVgeU2o;#JY>5&fk%NM~5W z>yb0+{lk{4b$KjUYd#vDh&XNJ(*DQ)0`-U=QTXqrfa$eYKi>R*FV+9o`LwL{;7g&m zeqs8e#i*ulkNEwrdye;+Gs14(c-=_4=OOa0sk^b`0gH$rePY47C7Ttni1aqcb?}tL$BQ(?~b0M7c;`j>z~q#86oO>PW!pWsY=RLuwJPq z(CEc%+5wwlc;SC#?P7zU_IQhZGQ75$IVu}0E97`-e@44UVC@30?Q5?~`aJ?mwob6F zcN4uH@0C9ny_6ejco8*j?j5h^SDG=)dt|nZxln_}>;rR2h1cUf?@Jjha-yBTfVE}j zU1xm0@iRJJz|yUN*OvTKuL(civpYnvn4#KqpP0YcGw1(Ee(vFR!Ruxhuxw7X;ibH* zU}0OY8@+(#_edq+!eJ%7kQ|3~aTqxecvbn}hk$kHIS_0xUF3$>w&iejk3=L6iy4vf zJq^~u<&k|z`|{P{dtkxc4$J0fvxXkESJA8c>Vjo;T%B==A*kc-0(T1$Q^{J#~-LOC2xe`4d*} zIe?C;;|i}O*HE&J?i(?e_zQkFyf}M{xs)q?RE=}MDtc|{t1!N2hH=jQB`o=~bM9{& zc;U}Z`W`JYU>Q#Yz2M!0@v2~HW-RX!e#2)LUK?sE@WjB2Xy0v`>I#is@a`^j&VIT_ zV3AL9So1xiO~ZCzL;F1f>nUv7{-)ofdS61{^Zf}g_6oTjqV6)`MJ~-~&lxAa2bN+R zJLAmvqP?FHD>C6lOcOS3M_r-Q%d&5R<-9uRbrX7(d8fmK7xW9-!+DMG(M{9<46o}) z#o?t_x6JN3PoU$v9b$igdPk)1ndP4FI`A`t#b;>F*tCp1^>_7OUCJz;r8KjZA@Adg`?RzHWD zf$KtIKR;vgJvpSXwal_lcpZ^9!|P%@avzd3q3OFFX*)~-$b9`vR%2EIHT~@Y~Sda3VJD5+H2^d zz0pf~*HL@5yjalw;chp}BeXYO1=eojdwPFN9)UIaIq+BT!~=KI{hTenufrmr+WiT5 z)%gqi9llA@D|z(+yE*0ltd|Sgv(tau^*ylMXHtJy@8trokRkfRCV!&jk(#jcYVudg zBe3Y}=zO2D{eYj*?e_L2&q$81+ih~IkERRhqg!%+sdFBB50H2@^%s4Ihe;k&e*x=u zmdDhE5BRIyFU0n`JOaz>-jU0~Ub+teEMC*?dLni71HCT58vK>|9$2&fN_`KkMSrF3 zU<1XB7oTeS3p+LEaLF~Bj>bP+kIpltiX=}yB6MtQX ze=k@Qf2G|Ptl6JfU=4bu4^Xg@zqm)!(F0cU{f>B0`b&6K4p%&Jy)SzC8OJ?tUZB^G zoWH|b=*3ji5F+K_z}EkVYnh#Jilz3rF60b!bwg1QQYBd7U{vvrbWjpc0 zUYpN^o*+i={6$UOVcjhDk$uu;A4}&XUXl>m$5Z|F!2TA)Yt>(`QnphUCSK^%(9!e| zPk7PO?6C0hCcFJ=7kH(P9(Z}2cB=0)PCL=}?0@kyrtKJbxqSo{_toh|r000ylUMJX zXm9?4aL;Cltzxs-|!ws+WeFwcJhCh3*B z@H8I6Z*W*QOFVS>6nJH9m3XC&1{RTIm&eri8}wK8v`8LP-{XUN%$Inj?EuyqKeF#h z`fEd6d^m`nqcnDugdX-ujy|R;D-CatrQVV0J#}p3%>oH+Xd0$|`aSm(F`zklI zGg$JQo1X)$ZNOq@T%#ATlzS9j_|e^;*qNUryz-23kIHpmA9Y5oOXGWBu`A8-GTAOa z2Y)f}qDOwA*HhrdPbR#Gj2#wwwd*gWFzBT^a?4MUvr2mL=@VXLE*uv5Rdmk4ixWH= zz39*BexY*6{DscQP0n~h4?E+%@oL3s%17@5)|3YzXC+-|up+16aT-31d9v!kHrXC{ zl}}Et)?%yRdtjyAeu!L$`(Nap@E6Pncs1uuv=hzZT6lTNn~-x)-{c{3Fp1Yb^cU2c z{OBEhPHwjqk9GcnN5Y?YnDiI;>WuPN=>h8boZW5M4)B`tOnkO(UVhF)~64f zVTT^4yf4!^0gFuQ#9#ZgwfM2*kOzMO%kw74nbiVP9>L4#g5{(ZetZ54I~r$1 z7f$rTc0`WP_h4oo6WL<+!q50T>n|Xr?eH2{;)ON{pJ_)veAsP19gAhK@R_FkJ^bbO zh<@++Rq_9N(qew7f^_X%W5PiEbYSYiInW zUW_h};DugQzOeVwt9Al~i(Zpnz1s%u*;zR0Rr%-+D{V*Nm3|KOKVS|1ve`WOg-b6N zJygXL=&511(Vnk^C*ZFMuluL)eL2&F7nQD{J+;f}9-kwAWR_*77rRM4C(2C0#9!$7 zIO8#L9j+%7hkFfdb2r;Ze1o99<`bG7!pBPAgr79LfR(-+wTqrN+0#eo^;-I@dOinO z+o;#7D|XNeSfN)p!0Pc38awz4SbY`ZDm@Wr zEWDVFa#$<9o{A?{dOb(&H)-#D4_@*C?2NYOwD^8c&Cul$+IRkDUq%X572#Ndq8vY`W zz}h9RhHMvJ)J&aTzUwvf(R=bHZqw*-nD`!8q3;iq9}QmgbQ&!7z)pNmUzpR2{PV>3 zoFrl0^?m@s3SEf)>iV8KQpnKaM{~xkr=>2ed%O)hg#Xjy4#9FeMBb#w9fB47b%>gD z(TiCOKO>r<=~cmU{lz}j?net&>S$ult|vAbBi~w0XV`6<%?lkp*&%tnq3?tCju$#Q z>sIV^o&0F#NWFHFv`>GP7$MI%)fIrnK3_kh(Z1o;Xg~Qm^eNOmcKrpcc8^_u?bw^^ z@|d(AczMr*=r-H!=i)D;eZy<;m-{B^PiS5(=oPdtdZCZ}jOGKBo)BK{188@5(_h%f zg0;j$%x?y)?HoTgSleDt6Rhxa4$SHfeJ^^Y3~iQs9Q2y<_ktDri!5s6uSR?NP$vH# zyj-^NCwhGdSSdqu9j5WblE>T?e^FEIeK3L*{Iw6+c6kI=@+$T1E{{9--f0i4E|0)U z--I3NGrcr_D1A?UqSvi<<(rV}nBqr#lc4>c&mZy#Ug?{VH(C80_c4LB_&MpD?CH6f z?(sfs8acKukHa@1##`)T+9CS78eZ76^i7BbdtPo&t~UK>_f3Y~PTzzGq~QfD`huKZ ztDlp;iDIe7_waV+3)M3}=mo6wP0*1&KOx^F?{W3N(l?poA;I$eJvL;aSNbO4HQ6EM z+QW~Y^5nou-^5{+p4gLf&pw5z{@8pIBx9o2qN7Vsbbar#9r~;5dvHf_$E4Eva}-S7%sxF5NzUaxU8quWj-DZn?)z(rfYW%f|#(w~xbLCGMa2e)y|~arF(s_v!nhCuaX% z`7iksz*_wKr|?Zuwv%2D>60Tv(><1dk34q03a=6ocw8H`-}1jS%P1Xh7+; zlw7kh9hvYBn8pA%S z|0?YxR;>HcV{pk0l>Obj;=d@|;1nGIE{e8yn%D{HMSKi)b2>)fG7d3$3)#v#hZBLA3 zJ9|!(Ucd^UoZiS8uY|>0I+H&EEI(uRTBlxRH&(#fK$m`x&ry@!T(EJc-y^hl|2}ib z125G(l>d5|>O-QvpYehI_l}p(7E|wFZ@|=#8S|RT-|wb=6ICptCjHuUPTeCLgIrHk zZ+hTGjtebixoy>fhJEBOGET$4?tbA@*6_(EPJSW12o6g%!|qS;4vu~zT}TbR+o2=x z9;Ht{)vbhA@Pu`(m%e`@w;Vnb@1k@+nvUj>N8Tywel)N$U-)$0@d8%n3xU<~dZMqx z?~zaMc@tn|-0_5s==9oVyiH$z*Y{*|Lf-?c%OkM7cLf`QtPK7FudF|EkDb5hUJYBz z9+9r^f%O!A&J%iS!Yg_)Ho)rqh4vb-y4?oWbJ(G$sV)j$_euM?E?WG>jDgQ&B!AHx z6?SOey`kMykxK)w9;a!~mD@C6bvuMT-G)3qMK77_dthY_+0WSc{xS6ZN-t`2p`%xN zJyKUOUUk}+9fGSuM+2+JL*O-dV&<>Mm{-_1Pc*zz=dAoSW<^&1qCX(;GG1+XW&8++ z6Ms>oNZL<%Oz0K;_Zyd?h8LV~J`=yw{V&e=l(s`s-{cWJ8+b7l(dt83oA6iRo1Xsy z)^pxt)O6||sX06C>7r?R^@*9EvO|+Rs`~1B^@;x3ju%u4Sk~J)=mjj-IdE;a+q@C9 z2^q>-dE&+Fg~P({M}`Kysvm$}pPt7Qtndqu@X>@9{-~Xi{=P|10Ly95%pe0z6#TW`BN6-gd%PTZ^7$Ttm3i{z z9`#n)*?R<*^Xht!z)JpF?osdhIjrR#f#qjBy~lzTwM_R{k+p)gQw%fszQNk{xC5R@ z8Jg=bf|X~S<20<$s4H~;Ua*p0oVN4*p#9v3ELh2_Qy((0N*mQkqF3@NIpoO>!S_ykY5|iSg71S@i4E+GsV9&Wzen!3$B*(&oF~XfPx@=f z;{myw=#_pBzSL~D)6bz6u-NVNbFvmtc%`4?vDMID<>wIpO!|KKIftol8``IzgKseT zh2`e}YqF2S&pAx_31Fq4!)MI?SNb{3hV=e>cq09r!_>zItn_n$)$;(u&jD7?0{|=i z9OA|K9@EbO)}+7Ek4Eph@0ydoM=P3%i{< zI%K=>DxI_F`|<&ZYbU!s{E0*4_!6(j^e0@l2VUiyAdfxoE8iq)hAG>L*CTP5>1bqo z;x8oHbxz85-sAAUcsFvo$MU~iwi{mQ%Pn<2@TwZv)GvphmT@ieIOz$Z>eM+d+XJuk zR}V|vQU0pScEc-uU--V~0l+KgkyEydUdrOipMdWtyNw5uHN&aD5LoHo&-KUV-@9x# zyfRi;<&nHo<`g0pO}v;CcD%5gJwNfBbJEjXCh<43I3B|gN49(1GV_VGHdyph4!@Az zMa}703^UD9bXe3ETD*M*R_TfJcroLNj>=xLgynos?@0FY!!_Mst$EQ2FU^aRXEJ$I zkK2eJwQDKQIQ6A*#)mp%_PB|^I3qc(z0rQ|mor#V=M${Te;KUE)mHDF^n}CmoE5NI z-bAppT}%A+z?;Qow*`xtey4r*1SVeiV;0u}tMwNetem6h{e^Fv`Z0wUv-1yAZ)f7Ay>8Ll z8L_+gUa%~e#@{~E^I36+!IGYU*6@?}oF-o4qkt7PR`Hj?Qp{(tS{;V3H`L~y3|98S z2447U8)8wNQTv$&y_DAvSnyrRqrpyRl?%!*7(1Uscg;$T$4AwF5 z!jCS0!eJ>!7GB5ZPZ+E`qx+aHj|NL|t?)u-CcOCkz^nUTf(2b1ukL>d7X3K~gGJwC z=~dySvp8Pa)9m*sSn$2h*!5Sya@zNNVZe$r_I`5V#rxuMkF8Hsu*frc4>Uxd6f9eFKX-fHmdav}9ZRAG_miNpLyqG)j-t?61#EY6(;KffS zyqN27ST5TGFZ!$;7J251ha4}>v3A)mysT;`Jz>5{!%MjioiSy5;H8+)U^Rc$WLr5H zozZ2x;k7B*hQhHw$MKRMEm$erg_q)5gJr!14KMie8Z)${jkGgKdp!P-yx!XtYNj9$REE>@ape-FL5EB%FF9q9j0 zKW8IZ*B&?Fwe%qimgz5Gjkv>MsozAf_R}1`=?#aq=&u3Gx|YUVfbcRI;`>vdmGDv( z9lZGdl)tYts^=;7s^gXPVu$#7dQo?u?=fkgvs)pL;H4f)osn*hnO>Ub6JA)isqS7p zq1;)+tMM0krG{7IFEl^A+W0ZD<;jH?vNg$L$q+Hi3-Y+7 z$L_2=(pw3vfmg{kx&K~ILr*9lEqXE0(CCGpP>+b=HTS^`okOjp;z!AL>M!O1rhb#5 zzxGSNN$EoMOiua>{TZ^onfl53zTzR_#Xh{r4)GS6^F8s`gqL!DenzIdCVHjqpr3HQ z$FxJ>wVCLZc8D`_mLZSmfUs%%W%oaCtc1=1RGyd39C`v@ zx9f>Jd;tDJ_n2ptpCi4xQ_jlh)$$Y4(adjKT+10}dXXnjSW|zrW|l&>o%Vyjn1XX1 zz1|~v-_V8YJ<3yaysQVQ^r|L(@*bgZ_+R2L-&13}y4XkCQ!{vV;Kh43Zqru2*Tm_0 zzPJ7ygSFU4>(7yWB=(%-5x+Ea&NgbSd5_z)k1pE-FZLH&-bC+&O?pDTG>+G*CpKvx zUFQsX(TD7`S06{G7rBG5Y1vDbcx}`pqBFWKYZNPVx_gI*UceXn?E(yM7Z6c5ev z$j(Nimtb}O>on%ect~4KT(*xbzuIHI=?yK>tL!83*J2;FTSj^!VI|-1RVz2XZ+T3? zBHm8EpZ4AnisGzP(qH%q zM*E}}bBCc<>6e}SiG%tS46k|K9a;phVviR;$K!42rBA84yXcyD&GWTK+a2k6dC&a7 z%k$*GirM+}Ck~Ml)!fIVzwp2EjI;it-koQh_7~#G(a-B=v|9O)NBYS#hMD3tc71yt z20okOG+?QRQuHGK)Z>n$&Ee~e#8#93LhiyhIkY^v#qQ~U@%_n+k;>L|kH_@M*)7xaOoEkodC&a7EBT9z z*~DM)o8#p%-_ZB=_NCj}k;jz(1zvH++!2)WcvR24XitC4Os~vOa9@jmpJ!wb#*A0e ziv(oL*pgmE{Os|Zse72_XSLCel0cQVx@PuNO?%x-GA*WM*qWDYma5G-X ztGnpsFM6qWSoESlrs~MX6WS*#+N*{$^H<6cHJk~rl1Kcn$v&1m;(tx{kv@;$FZRz& z^s;@ThSxlI!h6A?SJ|<%#6zibcGok#N`J8*bFxFFzkoH_p`i=4;b+oc$zRL@kwYH$ z$j%$r_xP(*o@wZ4IB=#{>U-vgDj#jOBlSJ77QLFbV;8Y|-XnG~?s2o&NA;%rJx+5c z=;5?!`7UJYiHaZTb*}oh@GAR=&7btdu(b&*@!DhKoxkRNF!+x}uQ~2OroyJ>84E8w z42QMQi@a~1ai$kCm9VC{OstZ6hmF5leaOy8mM!Szv1sZqWGeGHt)6Ca?dz1Gg}>N! z?zUs)FJvn53SLcm*?aVc*KUco)7G++XySYAVTyQY%9EobiKqRHi#!r<=NV^t1kXHU z$adisy#;&vb0+_b+ONk$_->P4MRFn@N}ZGUNQTkzTJ;xuz}@#<^%wjWv1sbT!YgAw z=ELUvMEdtRvzYe?tTU^?~16JDFfmiSZ{c62WRCs0HciNvLSe!&>OdsHc zUc{o4o+x^){=}et`X+@}<|mfEG{qfGd(9Qj^h%ycpQ-Rl{#yO7;;+^J8oZjmT;XLK zxa7;t^)!5`xX0|F9Q>6sH1|h0d0hR~lE*dP9#;>9$k^F4WhscyxNvy6v4XO;9CI{FwfOyb3-1gv@Q ziekR=@zAgx$0ZNIeuaWH<;kgK7OaWCvNi{Pi@tv;@2j_YJO{JLBlQvQEg&~E)jQPB zO{{?3i5{f#C$zKPdTNLzMjaX1CPSJ%l=+UP(@Psvu|oq^`O)61h!4Qer#IyBNxfH* zTwla|evkMa!V6uv;#IpNt0o=y$UB-|uceO_f2RAZTl!H2OLkz=6ZA%z&cUae{0Z_u zUPo3QvHQ{T%RK+3I!KQ@4mauv92ZpIV%XI{e(dPSe8{uW7Tcp>xJg&44Ue>Ah8 zPA|dg`kt8t?^U$=zro6TR8}Tob^GZ19>o*zclTG36Zgr1HN6du-=WzD!)xwy*Iq@_ z(ZIr69(i(LxxWgmX;E^>t|Pom(i;o^Fvgr?bO1 zG1&$$B9(?0^)>UqxVJcC((5t$MCpH=>?5}lw1)?~o~V7Iz#{G$e2-0u*j;@nJr5vj zWAQfr#*_yDmgl4CeVgWV_>0I#KX?yi>51CE%Fm~K4!c}^|0=LTwp~vk+mT<@8@Ur+ z%$+!1=$xLP0G7wdWca4~Hn1WOK!5M#7vkduEc#cwUkEJEbpVUAbb2xI?fiwF=ys@f z-;$#leWKzCa5mV4B@BDzPmU^czVJ?dQ%=`VV)yT13g*rdPE z6J4)@m-kRgPxO0~E(*R!fAu^jx+r7_{nhI*z;a(sdbQV)fff1H2kc|_bBIhs7h+o{ z{iWVAKO?)iCV5oVz|KhRb<(T0hf-&h9`AaUv+)yB30Bt= z;E4{BFQ>olZ+v%HPySwb`O!WL4t=O84!>}Qb!hraeaY63iH>3Je$o>I7P4V7q)(slBQw0k z_Z`-RmvlCKkN>qHr_lTFtLGHF;*4d7yib(BMej~^n1Y4=fG)$Ii2hYzZSa43KDuC$ z1DxU^W?m#I8|b6YAAC=*jeas<6<&MdjtAK^QL^XdtUo}oUdHQ@9L!m~xWy@-Q)k2u zH2&)Jn(h%iwV(Vbyrz2;o*whb)^4V{)k!Q`eD6LJe@jp5;4jT+z`G_x#7PY=$u`+b zmq)j?PA@+Fff~i$e1I;Gg2gUeB@=x03oTau@E(E~W>1)k_a*I$amdtD*oZSE~# z4SJDFGoOi?m&1~t==56eF?>wH@-vQmOrDtN)$y9?rPwO{ua#b>v=99SkECoTuZmvM zg;3aNzv>A#V>#_7zDF0*ljQe^ZJXk4#hK0%Awy0tbPf{j^eWj7yb9KkZO04Sp`5~y zZKoHop6GGgidPGk{8j0D;tl-hF59kGnXd>~FXA=niGD`>j3$rDx8@mFeP3ss^eV8( z(K~<5dUeY^+8a2Wanh@tac6JfaK=fmc33atwe_56(W~$(SV6C%z5K6{&*^8B|5ftX z@q*q%-*>zQEWgJ=uYh%mSHYU`dQi`I)AxnfD`be-t;(AeUJvLT?z;3ncp>ZJ)d&2E zo|m(EBJn-24hy}G%*5{B1s1upp}&9?^m1HG{3GrfSFRv;OKbaRNO!Ao=HRaY2st#Zg~o{24T zme1Mux@gZAR!(%qYxv|7f62BkdGexH!3uhnzdB$|d=ISEFDzIUD+FF=U`_XU2Ct(1 zidWs^ir0wK);v?eTJfrT9I?WBk83*yt0`CeaV&V8bn@XQ?Y zM6Zt5Os|gDOs3EMC;Z zFO*-CJvD(B`zn-!QT^=D<`o1hcPd3s&9K`SF+Zf9hw6I-Hhy*1-Lt30`5stVckg|V z!Yg+w0c-5XbXdMOikd|1zIA#5i+i#fYoC8KSTT=`Z#?E79af$(duj?V=|a((y-`(1 zHdxVDTRk;NFFrqd9-dG3GezCK@9PLyUU%>NIvg+g_o8+7)D&Lw@AbFTIIDlcU@3;t z->NSm>&WL}6}_TwJ9>TEJx1R)XB>0V0n2)=$>X;^E8_{|)#&9tNacSqRpI@<;63`8 z98cfvH}^Bynb|{d_8xfy$NK@+dxS>=ujGlOSMKABo~?#g^dZAvqyNkC@;+qvtMz{w zUNQ4?!uPpzaOHdGmuE~Fa=f5l?DmTux5Dee-U0y+^}$qMhrZUXu8_ypFDLoLTXA}M z?_J$v?Pvtn=o1wz>ZBpt%wbl&RQ z_WHK)V&2Miq3m+;U2xWGxZns+B{=>7fG;e7ozcm?d%$O zY2%66j^v57L+Yn;UhVy>221;p4OZ)46<)Rr(dp&Au!$F4I0-9wBK4Q;LNr*dU(R41 zqrWhFbQ3S%g(x17P0c<9;l(D6y2oC(;(f!x6E!a?+H>ZVq2P(c>&1J_U1EyWtN#mF z+Gl9`e(;3!gxByxw!PQKKtvgXH&Uu(DqcSf+DCFTtW$ zD&%p)&eo)t@SE*pq121}EoxggYmBUK?)%&aj>ydqz#uMJNHSp3V6yq;^k(%EY zEP6w1?iV~-pS!`z9$oJx8+b7flXwmNC0O|J!S}r{O|abpgfvwqT(*9G3Uq4ZP?9cf5KZpTo-juinRJuu>O#PvD>zbB5kmOMgkt844Eq zKk(XxO-ued#9lJaH1w*@$h^DFxNrFo*XkE6d(c-cE;(i7fuI`Cq~!29p{+mc6z zrQ4F8==(YhR?J8}^nD$om-Xl9j5#YJ{RJ#+px#&#ETr7dC_V8=@9;zP4rB929urt> zG76rM%}+bzuzW64{=?As1`B;;GDPnkwzlYnukNt$3&&h0u;_92SrL3pcv7@?yr?&` ze?zd)suNxt-ib9{1=g|S1uXZ;@qy#*6z4Bs(a&YD*r`-~3Y>AnTWk&s-D^A%^a57) zT5sT^39snKRQ|sF34;~=n9ARGz6X}}xtl#~??37dG`9FUUg(MPCk$4^L$a-vH*tD- ztRUOE&?{mEHXe-rLc2${rI`Mrr>^rC`{o08@xLDkOhms2^oTmC%m?)qd9x07u2eGh4H?E!_tm_ z@%>YahlCfs#C}G4`6s-156tD!K0W%71&hAqIODO+;R_ZKxWghwtvF3*Wa7eUPyAT@ zz7FfDVujJ~D_GWxVR~Y@N9G^hFU%g1u#dH`7I|oWX-4~uAH5f&=RtUt4?ry1?GW=bdbh@O z^dgVURXJYx#1r2$FY2~7Wjpcm-QDN(Jw9i^n)SW+P|BxFofG#c{bgrl=hMVr(qExh znS-zS4$df8HaCYo82c2Ueba^c)^h3l)T`|N=<rcr+5h45jrPmKlDBG?vB@bkEwG` z?=jE4)-|r4T<*3S2(@2C%WHb>YU)!ffuvj=lPzR(hGdgo663sE<=M} zIYW#LjXji(m%nYnPRYr?$EHM%58F2R_gmhRcDxon!5KYg1+2+0ByS#iRr@I?zR!3Y zoip1Z<-?p_`;cw-SAoSDOdeeq4tmi)VKYCgUL~LJv4V04F578`tVhK15sN=zy%^H> zxwAg`9#}#9^f3#s)c5XVp1}(qG##D#Yv8pF-?#9}GcJDgmYu0?J0!zR-*d*~uk^_a zucSSDl51{GvR(H`Oi+0f=ZU<>j1>~E;)x~h*b>*8@4Lnw(8P0(BZf)5idWe)I_Zhz zd*x;;kLh?h-;da;@Or^+Z-2l&&USnFnA5zd>FA6*dc9V7sdf{(FnoZ-EB!*j!uK8W z$Uaf?P0)qo{SLu8)zL|>^zW7Dnf3k9(f&qB@>lwWLq{iG>EEB~`|$5i^nLpG!*(QI z>EC1XXS~wCuQMiI{Dt}Vz-oKbWjoTppXPo=`}FSxtLj#wm-lU(?U?+pnA5QsdG-sL z(~KA>}-Ab^S?{!$cZp9fDv1k0~ zHL%1BKRV;bm{Iq81XjFdG|jsktiy<{YTg}sfmh~+vUcM42rTO87T5MVpTUYffmJ&h zc=_%%`A$9FR-anH>iYo%i@3w-m9@;!tK{A?_n5l|5-()f@#=L^gOxiFvUZYq;WtEn zHFNGsFMJY*)%Pg~7IjgNVKV2QcwsYw_E|egyf&G8gjc#>_`usKxtn3mf1xJ=ugtk8 zUJscs^x8@32_}johEX3$)A#I6%6L0#CyAFPv+N$(8&!BA2hZf0@{H4b2f6L4HMKcI z%{4vGwG+q7V8vc*%cmw@*vl94Qvs)>G*TY((Y1fW<7d+edO6O;6MuD}PHJbmYH;7qV^lh)y1P0O19%nr|X| zKJtaaEA^M`dBthM%VxLuTlAIZw#8q2-ov#>nyy#~iE9 zX#GskhaC5GkIyzg#F@}<+ln7`MxVjc>{0IG5#M)M?5~>d(dJJ0TlUjBtmLo6i@37w z^${#|qtT1~v@>2Ouu@N`2SdC%<0XBcZ@Nr)N$0$Zd#p32{z_P?33R?!KG^k_a`81^ zYy1`ah6+~lms{r*FY#*f#Dte%k!Lc#U+D#}I)7=OZ^w%rP?1vzSfwYP*jr%y1wW1b z0NllE@+Fr48fWx-9C!s!xF6l|(%UK1d|KkQ^4Gv?O9w4dZL`pI>V-430BRd^li4X=go>x}C? zGN&AQrWLQE*LsiSe_Th8GdjJZ&t0;Oj_mc?IwSUT(yK);=9HTstutEBJg~Hbz4QIy zb=VH=eD3`K*3T+=Bri7URqJOp*$!AmFI5K3|61{ioju_x{IV&@oMlr z8LX6T_0D8IM|;ZZ9{ZjeU_Is;i}s3u7~qDRDaj&z@BpLiuK zav&3b4ZO6cuktw^FY-{6-L5kZSc%tj>OxLiajjrwJ&nDwqrQzUWdE1vI_M{w@Iq%s z9^i0xUes;cq$k=vCQmqC(T5BkD}SNwo$v8MCwdj%ulxm1_VUMKA8z&zSd^{54>?ULE)N>^b+6$Ko&Eaq}~-{54?ZJtlvx?->sM z$}=Wjl27*mlJ<#L!dl;1EWAp#6R$iYz5J8EI(UNDS4UnB+V7~Hm|w^nO`w^8w(A$uC5&iYgtJ_0_O5UyYOs@@2zj(T33hPkRrpT#h))@BjMqK# z>JPH*d6HxIqhm(h@(}^c=`~;x)lc+teeXF0hc)g|eBWW^J=&g!Gk6s&;-Lwz$Yb_1 zI$qJ|4lFog!pnQ+!3(`Q;T3ZMkN6Mj1sU`@fmQVKd4&!u_&)mY9~I+G^ct{u%j-N| z>=rnW*MQ~pig|@`#=`6LjDc635#MdXYrtZs{)AW2UT?Tm-CZ)|vi*pUnXuM-4B8i7 z1&coSNv{^HamJL#hku_s+UbSgqnHm^`^66Vev=L>=oNZ(hp#*1g<8IMk&J)1GhE055v?nf`_gcfB_+!d-belHOYrv{|d{Ixt-YCI3E_m7A zD8ag$^{Vfng1_)xrh7zBDCX-rXTpnn3?04T1+3CJtNt1?G~MGF{wmt9{8jR}^4CA| z9tW(@g{3D7ua#bf*9&&&482ZmTF|TX#7eL5bAa_CUO!lWoxrMlEW8TVir1>Y2CP+2 z`1~V0vECywwfxntbDY0o7MwG#@>sA|c`SOZ@;LAcSapwe#ucxEwer`%E6!N-D!f*D z)fs;{y$Y|=(V-^_uT|dW4+T#EYmFZZ)*5dIy-wrp&=bH~<43>8Gx2uli5`pkJq}na zUar4@RWaYJzd9_ZSLo<7c-0vT)=IAtBTsr_rC0GpKcny(vc1x)c9X7n0n2CS1uK2I zz>EB<=V0dev1aFiHTi`duZl%iyoN8g^8M<6l?;_{BD}~cl)hi(aoCPE-Y%Y)@EWjA z{nf#%YrI|eSg-=GlI<0*p$pIBg^sQ>27lEVS9u(~y2@jnags;Q7`FCQ9tW?kaYxzh zRZo=NegUuV^K(|cTJ#z^dey6|UwFzBGk>jlfUXNCeP6sP`oKy+BfSyo z&ylU|{g}Y=U1GqhSRwGD&&cieoS*1;MXsalW1X>RA9$6m9kieH#Grlo6BfZKS6e(W z)2s8u+w}d5{Po|gS699-9bIRf^+Z48#9yoaDt}_ttH{v*Cw6GotLjOzJ@em(SLvM4 z6NT5Xwd*~GOoA#*&(aL zh+aJpP_oS#EB83#wd(tlM_}Rkk9=W=wc5wnEhAf-wO^OV*aI$Dy{-T(-!l(hyfr!U z6WDEPzpB?hawg{Ys;;2=2h}Od!Kf#%@?ZRg&z^Qzq8DG&&+0iCa`7!6Em+oP#ozAe zbFX}~@Zx=Udq0hx>l0q_9!0O6h`$8O-lG84R38#v_C^VKOm!H(#y`<)pu_5OI-0p* z{xM)x-dC`wBR@y2X_|+@573Od!J6h_=o3|Mr@^w`bmx16r5Sa{YrH=sydG`-(O^w; zI`l(o{?TB~b2?PpnbUDtJ}V;ra#)&CH&`)Slk~D#5y4^uL+{&uu=zB>Qh#subqE%G zWHm7QVdxnf^BpmxZm?{o%=Nv_$a@riMr>-mLo8UzvN>M7ggx;WZ^ro)eS7VS3|YFqYfjyY&RBoO?rZ_ zk!_C^PW2Zr&Dt5)IPElt9Co|%@vdGe@Ri9So+eQPsPqL2C|5--IHKJz2qOjzPC*++YeZNMtL zHU*2gr{ob>(YGyF{rwL0K=6Kmol*U2rSI{-o_WK|^cQ`~KEooucUXJV6M{9~!82Iu zzZYKE+L|*oSn5sJ899BQ=Zijf!z*k@%A-!;uxw^==vC{PcUaRrj9{BC1h1G`OnKa( zQyiAf)(kyiz5EW#XDL%p_*{VDHO*zpJ|H z#^9McU-h{gzs0NwecF6_(_cAvqMoTCkHRbGPSodA{AI9WhJ}4ZK0};(mEOO=>libO zNw3G4S>&y_X|7zJne}!8YxO7cj5))S{FQS$&;4CW;gvH#_|bmG#4C05ERR;-P8o99 zE_oci*7S{+-A0DcIo^j%4SMQdRsVbRrn5_;>^65%vkxbI+XL3zxBWx<+!wq=KbtXF z@oKQJX}#Zf;Dx@N{0a3zI^RFGK2eu-pYPDD?8IN$Gf$m;*hkkn=jjFS%05D$3{(>93quK3!sY#u>(P8?C)F)uM72wI;^2r`C9X}7W07@yUaR&*?g_R+77)cShjb?VNLcC zSRNxw{${*vzE-fXoVEYnU}?Tqu!tW^-wQ9FuhkiQenRw8rr++d_mc}2+Q?~-UpUQ4 z^A{nHkK|fLJQVY_hS!{*@cCND%YDq?`e&PZBG2xZ@iISnb zM{1afSL?sm8Et=#=(WnD?XnPFDcgyc@6QoltG>5g7J{|t`%|4W^lHYnJ?`i_hnRG- zkG?+#yvX05+n=MqB}3Nu9$grEmAB$1f5P|YIIPKEMc=!Q<}=Ri&*6+4Y+bk8w39qu-rbKK$kbA%WAzT3yL9l)CM zg~)v9!VSF287odJ+X1X|`*U>0{S>DS+p%Fzdfum?{W-#mn0&%3bq=u3?a$E}>FcPt zmaj|a0BefVl&6b4(>`KR_a}zV*&svHJ(B4$+i`+d>KyRGFYWr?_U9O0cE&-k)H%R9 zw?9Yp+MU~8&rCwz?!)NTghwLP~#N3dMB8(xv?SoH+3lm{?alb#@^ zkN7ck&cG}4Il!9sPmmk(8U?!W-2NQl<+^a-W&3k<#zn6JEAyDMURAEaec#a04X^M4 z*atK6Orn>3bob@b$4tIYSX12{Jhj8ceP1#M=3}NEO1y^eoA%Lm1o5}4AMN{dzyqIr z@}pZW?HE3J;gzvF@%E%AY=4f!n)1GNk0Vw{ylj7t@LJ*y-=8B`S)@BTo zcqOks_>B6v$K-qLwx2QSm3)ugj@YX3$}=u@TeLS{?!|jlF1g#G;bW2qoAsB?BXdS{ z&ghTk>+&&`Q*&5}SNes5)$1_j7Yf!Ccbw|zq*wa)8}#jTkLeczYswdve-B<$zOd`) zRo{ny53E_=r++_eN8*+K{f0W&7!B>K2TR6`nQ}F`fB8Jfc2Df(x%@tzY46^ z-gBzD3z(Pxbzqh&_fJrvl<(_$0$6aH&xw~xy8jXYEF1ZO1IH}XuJ@xk7c?y$sP1D19(bpG0rFN8fTjM4Jfq)Z(0-iJ=~ZV0kAfvV zasG_odyj?JN-ya-*b8c zf89r4$6fAd6n_DWoV(*ieIaC9_qc=Kp2hcqMJ}uI0GyG!h|`Psa_r9m7Bzp#&?B_Y zoj1D24(qYk6^d8k2{0e|i9IqzY-hgjfF->4$fM1buXyQ{cvX1q z6^DdPo8%F^s1CW#DP9eF6;BLUNiS*Ov-IL^3-d82yhJbii?j4fSS!7byggv?BYf^T z(ZCB>o-c&YTb^9B-%;-oUXSoFyz26(d!#1qu&5|ky;gXk=gp6nUorHTV3CDzSh6Ci z?*)q;jpoZK<5c-Vhow1u@x->}3k3^r)M26T%l{Ir+lWPpI{eKb=?THojJ(6r8$6i@ z5G*o|4vX4v<)a1b?kW0B(3cZl=+o#od0y~(V#Y%B+OkKt>O+Es9rAg1_ULv!0pF`; zC?DyGzLJjDGkbd+)@H&>Z^fJ4#-A8_J2@luqJzm0bZmP&cj(y-{ip_udREt8PvkL; z_So%X>3hKfhSAGnsfHK4tKGLcWB2blBi=#uS#>{Ju<#3`*C%~B=X>>%gx$u!@ARUV zBJai6JA%qrqDk-=!MS`bp`bkb^cgE_3ffJDswQ2*VCQruPr&4 zuD_mMAA|P5s{E?Xm^B^YHT)dWKJ#C~3s~+?K(A-)w)a`Fx1{O{z+zuo_A~8yTO<81 z*=;nN)82jZlE-JOyQ9C5vC*d>Sk$-k9$TJCupa5Z@q27}CgFviuzU_YG5jyVLQhz3 z2%czlQNh}0zZ`qqDo-w0yn*9q#70z}T(C@njqi{25R7|N-+=4FEqnPZ?hvdyw&a>G zhmTu*R)U3Yi9W0Tj)CxcV&28h=)F;cUaxo2dk5~dhf=UaZ3rx*9gzD2hk z#S`);fQ1drUd8T5cUaOB71sg_-Mz#Lx<_DL>vbRLoZ*wZzY6b!e;=_z;Z?9!yy}bt zmiw#JYv)*@_^ZxXu|nW=iQj-;)&2?Pos++Wr|oDoK5zXdl27ZQE%}pBi%R0+vHmnBLho0$?~JYW^X&; zfF-+K{)E0x+OvDD<#S9=#Qe~a_nOKM0h|5A$dKz8*E!#RkIGM2&(=7j(@U~V?Edg> zKV!t((Kob5=VWfk^@MaJ`W{&1jEA42udNprym()2IvlmyvI#?A#*U!_xOdfY1rwf{+?lng-T{cx0lVIz}AvqasE;-MvsTeJ`Uf+^_TJ}=vB_Nr$46htH9dY&Oy;y{+@J> z?ooCKeG0vFrhI!q@_2+tELRJxN#A21=`IXgtGZ9>FJPfJTprb1F#Mb&JYjiqcp`ig z*Z08UT}{77cwq27bp@gghc#@iavk^u6wpoPzliyoomSm*}PHkL$1Oann5> zWXF|5hF(A&ehzqTcoXz!I!C%M@3G@G>o37df8q%_t$Yr!h{K)s_@|>E6Ij?1mmy}j zrh6Pd6WPL{R|PA5rb(~rjA_$!2P2=;@#3A)A&-J(J3yg*=|cGv!pnDn?&UX!&m?*s z$w#xh&geDiFVWt7CSbAKeDYVzCs!QnvAgpZu|xQB(>;P0c^;QXVwQ1_;6?16W~>LsCK=y=u-@ZpxA!-}_XR8bd%kwQAFw2k zikYq6F?gcrRj^ii1zxIW=dL>8)p>Q}GwO?9D845n(D@7hM81jm9=kX3z0J)bL;IEQ z&6fifbJP>xtN#QYec()4n{#>*k4Ux!%WHFv7x$>QX7-XH`VhZX!4^b#!ggjW1mu+Gqno=Vp_6TLWN_=PLI%Kth;uK{bJSKT9i>*N=P ze-Esq@7k<;^fPjg=+V&!16~CSeH%F#=lh@+u%7z6r_g@D>V8f?Bf0hgA1ss2IM%zN|8gSl`Sma4N#uQyXBUt*DW9GGkmGSD>oJYI5{m?i1SiHaO zMAC(S3VW}4*7j-oPOI}rxHR{u-)TDmmU&OzV%PY}Zx7ac=G*iv@Iu>8@V{|hOV0w? zE}5Xl7WKlU3(fwXE^@x(9!;0}kK>0DOMNTbi991SM`OS8jKt)TKkB_GCt3PP6g~Ht zXG909HYB;9Gpc5l^+ID2Gwqog%YE@)ISevs`BEQCva9@YW@;o~YtKX1zli%?pMWl+ zn95=3jaLk?>DpK;@7QP5Jw9VM$V2jsMHg6#vYusge8z3R%=?pH$@`mM#xn0WUD&U( z_k&e*(TCageq%k-r8g_z@Jn%F%S7>ux`6r}*urCOh%>&dZ>PvV_RRdIYn{IQW6xR_ zT@P5Mi|@~o4}s<0ulU71l516s4=Wz=gnFBcE@VQp;nqjfg-nnuOdS)fP1maNMSWuR zT=zY09Wq^yXWVqrkJK!z;)y!{yzM&kRD34F()k3-jCzu?zT-py4^o^*lr%^B++>H4WhF*0F( z8H=1{{7}-xUY)3$sDIo1qJA^^cAk-b+T3IEYp`y9z1G{nM}Ga1F0^dNn01d2XRLdK zUyrhS+X?mEr*4wEeb`m7Z0~P*1(XzVvWvsQQ!1<8&PtaehJnf&T ze9G&(1@wJI1xwlLVR>{5ncAjzHz4Z+n{dY0>|4QmpV2zB?ZmcUx7^!)-Et4s2QzLzRnNKUqSvIF zmHHcf#*%yTO!XDOy6uFqZaZPRMu+Miw_P2q$9p8En!XjhcPuxyu;?1BL+&{vJM8Fp z+;R_=&p5JLbnP=@@3*X)t~w)Fw$b|@H{iIp1-QVC|gGcGdUDZ1Kc}DHAtc z!>^kz#{k9>U1f2FJ%Ytv=k z-*gS{H5f@Ip zO2(_0$#faZIr4pvlOvaW%{|`vw$JF?ebcqim^FpE$BjiUs>mqg!lH{@)HQ{ZuEaX* z#MC-`k7XwkYt!{jj@fB{{@S$;YTHx4$4=10ul_cDtB7;-#((Vzgf2RO zlcyo~l_URu$+sVJchgm}3f3>{Ia3=der>rQ-d}Oy&9AYAcb&;{KfEux(8urRF~P!q zQ5~Vqbk23SjtSPDT`^r%U&R)p%iqnxsLs^iP}Mzp4h9|incuJF-|m$&+cI@IYNCJD z3}yBV#jk%?zpoyvZ1mOV+jB#Yb@E@=?_CpRu4D2c?qca@<)Zw={YTHQ%1&e)O%1u; z>OvQso;d~1h&`)Zbb6WMmuI$w^?T@J_7#{LsvKGR2p031g~eN`kbBX!`n6yk^8m^F zV;%rHJ*RNerFp~kM(P{7YR)QoFS_8DCgOLmiCo?M(wyy@j}}()E9pA;b<)){54U{1 z{uOpLvF>}MURE_L=C9%&-!w0$IV;hX@0!qqm+p7)7H;Yjc}8Yxq8_ao%C5N|{l~;Q z`Y>Q2_f_j)RygW82VM7kH2b4h98Cr?@|9TV!$H@a@!%J9y*Jj)FW)1+BKjS9#?Pv` zm!0_bjI#I1ujw`E9`lT^RU0b%bSTNpo-XIzwb9|o+D3B?WlULpClWz}@~ z9xW5MK57=VYD2QCNtgC4xGtCX$osXaW1eR`<$n0JXC6!!@kQ}o?}c2yN4N1M@`CSzon1ct`3&vt8DbYqicG< z2fx7Dyk#?R=?vzf>n69};ec!L53(f@`n==D56-Xp(z@GG$LdnYLq|1n+LZ>v_@J^Wkl zf9AaJe?%9vmA~*q$9&F##c%i>Masl~PM6~^Z1T)A4VLDPd)E4vuV2#T*{E$-&HM2k z#jlaCV{XVYq4+fC?~^X|L8cFr`lvVco>NGEF~2naG3B2AXzYbOuyXz@>H3fPHSwx? zJ+1>Jmd|+mp*#KxtehJH%Q4e2H^dpKw^j^*Z;if{^zH*K)V}N6h4?6YTniZ4#jG_w}Ay-p;pR+zi*N!LfL&w~Z;+%hW zFF<<&{VqUpj$#5~QQHW6ub7E=Y{e7DT$-`;yTo6ft4-d|EZISqez)E}*gw`is;855 zrL4-Ie;=>10YR~^@6mq9zV_C~;r*?TU%6+Vdn_#IqW(4f8oI>$o{f5lCn^^;UG`~6 z=J)=QiqF>VqHBD|k=On&(Y0+3GVzmL5|8}S8R3iPtT?0X{jcfLoMy%o)*;8fJ1+cX zK1ANOXFK;9%`f(|)NJR$uYX^k=(k&YX5R8u`*S$cF;C9FsR`EmA?#|zU-=GfzYQ$9 zsGIm57&Xx29s{d&=#YEv4UazkZT?+y4;`MF7r&(2RnN&cc#<#G!`3(1`Q2mw9-ZPl zDDW$>ww)kW(Ohj}iLQ6*CjAC)zYQFIvBPD(S=2Wg-QP}r>H8Vuhmv3W&Eg}!{MK#j zqxr@A!y{hB_w8Ek!LQ`K-#&<6k_qJ@RZBbPSND598ctZa_<>k(FN9iv#5Ed z&iTYIzgG~i**TMWt)^txdzc5gUzG!RJ-NH?F|nT6{b7AP>T+EZ-TXpEDu3iX-!Jm* z?K^yr&eJ>#d**5X&VH%K`RKQ0C!pgSd!JZ`+~0o4_XyTu@8Lc3U-H}O(~4ire|6pD zdPm`U;ZZjktmJ*&;{(!a`Sh`*BeXZ*GH7;Kq1T?K3`+Uvyn=osqu5!lItz@AGY}w}qA8 z@!VMZjG5P-SnucFJN69~@0peK-rRZhD08TrnkcB0QX-(e}bo;L5ZPJYNl*2x!LEnmbB-hW?MEnkZN4!Lhx#RvO)I>I6| zeqX$2cE)?Hg++Z8Un}|g$$RMJmvx9achB)HtPl3y$#>9G@*ds7YJL1kzvZAydjch2 z%+#E8X-{Bb&G&~2OFPaMU3({7%l!-Xys-G%OYi?$biMkFFRO;U?H6a%H#Zg**5sgz zYH?w`oN`Zxt>g=zf5<(#1G~f)7WUxa7ybUidOq#Ms%_U9pVJRPmtugzn!PKMiDztX zVLeHQY**pD>3YgNZtMg5-13$6oP|X^)mYd<`=O8D^{%|=nmVR<&#so{ebmVp7O{U| z1zm5{+!L$qDskzy(R_FB;1^w1V;y#aw<0a8C%?2u;TQa3raO2abn$X-)AhV`Xy{TL zT{1D>A6jQr4zpx+$;9yMU+p`Pi9^1qb@x49^7X`fZ9Hh?lWHcNX)zGTDl!{Q6b(~AFj(uCa{ey6aUP2V#P14 z`Nmo{C+O0*5sR+Veu34zzw8&cRap5>N4iaqweFERjr&7I*VE>`zR8gK$T#9Q*0Rw- zm%b|^x^8<O zU+e(w_^ZCPJaSL8y!gd8uui&KCVr3id`l);zSO(vzUY?KEnoSapF>tFmJ5EpY+I;3 zRXu-SSlTD5d+eRO*2mVNiZO#vA7N!O}Rh%T@WxkpC!J>o$Ry7)Fw z$tqEmzt5+8w7ti-9(Hx?{mb5cYr5KZU`dYni+9o`_q@S7;zDGk>Ed^iU(fB+`0q!Y zWB-`%`E-xtANy^f>1tnFSaXlRe{NgYSS|P5>$W*?@}#R{fI8#Im*a_>UlUK<{Cerw zqpgdhdR} z!>4z#Yof0;lP+V4U*FS}XO#W=riX8S zRUJTBI#bvQ^J{w2qRVr9@N4&^>mI2w)EpmJM}HfB8SCu3OTPMyM?D(eBi-dYT;tpE zeZ0f(TCM2vtRi&roj%#ZqKh|ppKHe%RaWYz*{gq|w#OTAcDDY6X8MNCZ+M@#_Bs9+ zS_&;WBMn~dnH3(gA9a7>t({uJ!!k~9MR?>~ziqtgg_%Bf)H!ec=<+3 zczVfJ{Ocac<{xez>kQdX}^EC2}!dr89bzU^Z z@rUqMjlS^cdn`QZ{2|Y4zfjV*b{7?1?)VVi-`Y=5cs;`)J1IQ6C!2pct04NQJ#YDY z&3#kC`=J_d;q_jrqK`Sw)?egp>??S@M=}2{{diyfv%+h6F8Y`^k$+kD(e`TdkC}y* z7q+e+_V4{K^*Dsbea3Da*{ijKS$NDEOkF_qsh3{zqVJ8mmcV)S9^iB1<$S%q5wzy( z7hcZ^Zu(ST`*Y)AGxL7&0sB6<>EnL!53O&<{$}XYH!uF#c)3eV^s%$P?gO8C$RCxl zmOuP(op;kmkG}28TlQJOU zaXe|Bu;q_$4$Le(c+gFsY{~O`?(qhX-`V$pd~ADA@~8RAZU5*8&U}&Z^zV&_k8mu^ zTL`*GTVCiD#vFO=Dc|ykTu;xLcV6TMrte4e#e|3cmb@TuQDYL`d)q(WdJX@CH}d>J z?rQ%gJZ2#Z4|$9Jqwqet*QFoSFs60@9x~bYaqJ@mufB7n`v5QQ_qk^uCC}i^yb=8S zck#iWZ4Z#C!~dS~#^Ha_-}Xn(HS1^lT)Xi^A9#m;FdNYF%)8F1BZ$8B7GTMX@=x;* zd3pc4{Sh(pMc;>dPdYDnCw~C7#KEzRDxleds;MVgFX{sq>PT9rvr;pyMmqr|@ss7vD$C(NuheJX0gs z`fpm>x{E$)pAo+ZZ|zuLcqxCv!(MIw@s#o> zJfg;mhrkQ@6CQu7?t^;X$e-{u?^p8jR6F!aKNeowXW`9k!`g|`_P}_G|AfcenJs_9 zb9^N{-UgJveB>XwU+X-d_aw2dY{5ub2EjP@12DATl0?^QOvFgkMr;IV#}Pr6`uK*vxf_>^;c(@ z_<7;AzEOvq__^>pe!(-J{QE8NF8-}4lEpt_b=SKJ&-$CY)fau^KiZ%7{myy$iSv)b zYkhnEBl^t?uj4=Z%`w}*&fD=RecYKBD!h(QpL1qr;c3RG~Y z>puO$oBQp((ybrZ*L}ar<=XywHFa#p!j5f7Guxee42u{a1ME?Qi<{KDpy((dT%G+TszvAaiZ6__#2fXVZ~WV;rS0=Z{4DxbJ!#`j{4Dx3m%Z9JS+#*3LUofo`{Pr-}&LE-KA6uhY)6rTCVcdHKl_`CCS zY}^q)@12E}0k87~$CK?pG*z(qmwOu*-pEVNZ0o$M z9=ho3c&+{Ks-c!V6H_=o6`t!a#5|Y(Sl{T~c&GnRKG*bJ_9f%VBfb}XUC&Xxm;8gi z9Uo|q-{Id@U0D26l@hN1_y6&G+ZUe~e>U-H-EZHAdN`;2wLJyzSNgI1W70SJfq$I( zi}<(R#TR{DBW?QDTYB*i`+3qg`RYsVYhQRBAKhUb_-+C9g?ZIWA6YsRonr&(Oa_v2WKJzc%)~);K{CDaR zeZS6sSD!2FUz}Iv*m81K-g8_lp1E z^v?GcPo{ki{-JkMf7X2r|MZ>OjGyN|h_R3OFYXunbi{vgzk3IU^<(XT zU-4h(`^~?I@3C=*enfoV{<8V!{=)J<$-n6@;D1i~BA@AR=rw)oyLXE|S+$dYZLf~+ zsY>6XKi%&`n!fdYnT4l#CFxt=q^bBBdv(~qxL+(q#8-L09q%^(*3OZI_musQMPKVL zXFB3P@Y?=SPn`Ox^mpRPrytQD6rS@-@Q(NZf7$sZct?DIzifYg*C(kdZF_&$C&6ob zPyO%6f1$7K)l=@CS?BG13%nygk9ZCHa?tmO>SL|Hr~L5_!1?7Vf7;2i^ABot2mjc; z((wUb3qSIs*SKFYhqzy2GV5=CtO!4fo#Iwb!}up6KIZ7fqky!mcBC-rjbCx8NHu`;gL`$zz|G zy*>PZ^H}8aij&;;;`fg_*{XXteP^E!J=$?0dI*;%k6n7?^VYo&|Jsf{l zz`OY8zU%tVXWFs34<>gHKSiwXI>lM%j<_GZ!%tzyE$7uY^!+mZ<~XGD_L6fvknbbE zyT*M`2kt!asrpL3U+SX1-&1DM<-j}gh!yAbeJsB+^!?fN!T)_9O&@X7z7P4$;9ul* znio#_dk#C>b2}w}#9_9x^6TNJs5|<+^=;sx&vOLm!;wc|7dvm#w{s5qr04s*6&DWw zLZ0(`sLB)F=L7Gsv*g*WzfZNBYv>DkrtW#2N7o-2D{7oHzZ`~eo($oRywOx6v=ajIwhyHS2>)YR_{*ni{&v*9Gln1oD+5QzpGF68TOAF z^}#=R_v#xe?@IdCPl`T%a?rQ-QtdeXh(oBIx)0fPqo!|l#0oF>yPzUwV{0q^j?_4dBv^s5hEyAq1Nvk#8Xu)XTIdh0KE zUB`Q>xX}9X5pm|3M^H=XxRCoe{M-8G;+E&COIttqwxaa|dlK>op7mF}$oma_%bj7m zkM&)-@A5>>Yx{ELi7|(^^Uk5qbvJ%;_+Q1K9k+H~-296=1=TdqL5e=trNKM&gIK)% zFZS<@gCmb9eH;2Bk5Ery?4RaXw!J6*Ir1FMv9vwC@`(4ar)Qm;m>}?uIyZCo?a!Zc zj+yhmyUvZyANG08k=ec+c?5FV^0)89^7o$h`OshR!ag5$(6yIy%U|_{%|G7xJ1@Z= z2md&)?O)G*?)zn~sQvHm3!6UX(%c6}zZPEWFY)C*Z})}UzNqiA>7$REb(EPan!a$` z7tfUwpB;5P=8A0Z^V>6$KhJGTCQ4qKzLirgf26vJ^sVWm2iWx0T#Wh0G^Wqn@kZ0f z&aHjko=YA5uzk*NjxG8+{~%u3_hI@1@92|~C$>H1#pW@Gq4)mP*F-0e_z(SUe?%Yc zh)==m^X|Uf+;8+TdM?KFwY>uGs564sdAnwnGk(!DSJ&bDdrRhD%gf#81Fz-f?(@z4 z5&N>aogd*Xk2)SXQO6tn_DSE&u`nTi^hw{H zPlI>V8NoCEy6)EYS@Hgsmz?t#|JJwN6d&kKTH5Cm@APk)tJ-*1e9zpq?aLY8D+lcR zxbk1-gss0<{#(27i@u)QDf7b3;OwOzYk%&t2bcd~pReud zu>LjYWl{WD)vbEn>p|oc1)!GL&~hbvQQJhK&|cRRo{TV&bO4aq+|+p%=W*jZ#l=T`~7p| zFXx!`9UFDymVM?O(b1=mxpJb@)Bbs`h+gldAAWZR-l-q)4kq92i$3RD=;&czu=g#` z)X5L~g1ztf<@I0dK5SpK|Dyb*>f~qqvc7>Wc?R!{U&bD2fA|q!*&eLAd)zNF*Y;F+ zhksMOsO-VU8~WV$dZf>D`49BX9Mx;Ro3j64XYHK#sP7Wlv_E>_-_*k%_~&;p(0AD9 z$fv@#mQ+h5YRIQnR89T@tK{DYjp_p9Fz{}J_w*K1CR%FK?(H5*&{R`vz$>--J* zJK{g~9k+jbz2=z7dAGiSclcl4>2$tedEWkmdQRKF*K3ac)A|0bAJm&HFPDD&(7(65 z!@=B50{oVWOgjs|^4e7g21HhpJ&%I?L7 z`)K-HKR{l}o^Jku=ks23;E8w2AMcWUznA=h*Zz0Qv-RW4_78bJ>@#?_e?3<|^bOvb zpC9yXyyjohchp~?Z}j7w)BJM1ee|vQ=laGif9!B-|8~pYm-}+e_8j^_kD}#;%=OTZ zA9&V|U#>pi*WckkjyVVL9KUqExcN8r`@U2T*s^H#l$W+e_86 z=YCxeTXU#kpLx6Lcv87T*cb3x{$6SyqwVvT>rKQ%hy4T3{#SkAh!5gEUatB<;+^$_ z#8bcMq_6K+Kgs&(m-~&%@zTHLd9OLD-Dp2(j1eyJZ^^!a|lJMVY=`SFfT zcz<^MxB5GW{7wBH{mA>JU(x+CGO?q7`Sn}(^Hc-R`ZGNapO^bx@y3q-enkDR<|;=& zqW*Wz@exC|zODXe%Ab0rW$)>Kp7ie8yLt%JsEAZ{M%| z8}uFZ-SBU_o;dm&b7Np zz9?wYk8J^sqfnPezX6(@H(GHdUre|`y#xte_d~C z`ojLDeHLEmZ~EVbXZ=n8EBdBh!sgYnf5LP98G9P}ukc(CJM6RYW{&=_&%$$k4ZNMt zNI!18iSG-q<3G4Q@xj9D_z(Vt{abkMZ;?wl|1G?pkKmi}Q-4`_BQG5fnLf*3zuW8k z&3Iudw3pmq@vIHIrd=U1JM`$yyUs;v+x{WO+TgSb3A#xvlE{BA#G1D{qQ^& z^j-Qv{A+tU_CmLJ;18X zd{g1|d3Qgm;;S3)(htv1lDSX*w(+(+zx*rw+rn%Afla^ZYySb>O<&9N&S!$Y?$?5M z=m-4kcnG{hKj2^6)1$w&=<9k3cu_xH{OkG#cvC;E^EzK8rXb!3`no`VJ|GM&jkpbxx`|FlQZ^FzY( z9s}j)6JPl|!qQ*x4*SeI6U$4!0~DU)aqzahG<}{g;kPG#7JWM9zK@(Q5uW35&U?fM zs*Y`Y3f>VPfM@{Uw%W`ZGnJ?Lp1kT0fW)HUHR?bkf)P7I=q$gTBrO)k97DLZ;~c zCH>>DFPztS-OtOj-ujk%j)eEGIdASclKgp39`)FYhnj!W4|vJ> zSnz)S7=2R(LiWDnKk8W(Pp-+NuzzWvbI*+M!anDondLtMZ~6R_pEQyb-nJ8KjBS(;gG*o@0|GWe7~TY=G^bZ_rk;1xW91r2RW1NOXG=uqK|&C z&pY}dJanhyjnog(=XrGach#@>%Y*0o26)tCt-p02<=?>j^qxz}=-5BaQ`1j3-qD{1 z&-U+{U;A`_^_0Jb=XgWBZ2c|z>_6&VT+r9~8+Z|4ExbJMRev7+2>Yz_dfpMAaLAwL z<(q%k`y~extsTSM%BV9s9+< zzF+ry_Wja7Z~fT$s_FZR`a$E_zBrz|-r-|koDW{_%f39HedfQ*URi%L|K&dT@0RCl zPXJ%tar}Jl36QmKdw=mS?diooEQk9kcmLP%Df~O@*k|Z#e-7RmAEFoB>%1c`S)W|=wLL&jraoEp4c^uN2>QC7 z*!Mg1b-p$HYy0<{`J3qTeDU-H`hLlW%l|^(86S+ksYZX?Z}cy3`lf$*(?`DE{JZAw zi3zN4y_e1Obv%juP5n>&i+c98XY0#*Qm8pZ{H*)%d?)%b@w4zWC9v=J+QXUlp!Lo4 zS)MaK6<+ik@Awpb>waFx8-2giPw994bH5$`@!hJa4=wrY_z(MX#4qGTzTfW0xBgCk zwBM!M|9<_}`J3veQ-2Zv9FN1lslVvFfp_guoB1p7qQ0^8Bkp(dOW~uKHurU*R~T!ou~NPa>>5IvroVrM$>)Qp}gN2e=u=~@@&O*|Mk1x``@*LHQTPU z{(a_Ck7w-|X>7K>?@G?(8p=!bT(Mb>;a=E}=%A-2xl?_h%W`^~yIctWsb*b@8U!3>2U)~URjCR+=KRqL=3?^%8 ze9N|N9;Z8MF5J_cH)0mP%kmt%RXfKQeXqRPpWUk5wR2v+|H8K&Iwn1O3g97QK5yF& z-LJm0Y#RzSQ*#mC%)Gqt-8{d!1n0=W4Atd%oKM`NPSNC6!=CCyMH#G>N1m4>YLuKkr+=tmv08? z&C!qc6VYS^WFJhPa19EIB@n@AGi)ZQtIqr^>f;p8wT8mpCzME+3+= zYo_desTfG~)%Si{UN&CwPk7dk!7KWdgKYgUp6t2su#>wcbknEGf7yea0+ zjJN5dCeiYD)A!;T$H6Q5n1lEgea!IwiasRk7xeM2=mBrj$F84W@$c2Up&seu+c_08 z`@EZfd~2j*@SA^cp2-=!;vf3f_P}_XKJ>Tc`R1Rdy{e`=c*Q?_#DlzS`tU~=UfE~l zWxmZacugO1!gb!JZ{9#W(B~P8!7KWhTlf`ye5>hK^u4A*I2XB}XZ{h>&0dK6VA6YX%UJ@^B1}9$DG%mcXX&iXSN5u389`Z3U{fYOU zZ+b4go?+j(1EHInyy6D2&$%iuMAmOtb5 z{f_)?JnQes^We4oImb6%(>FDe2l}jUgV*#~e~s7ljsD*B@m;>HAA{HS#WPpNYx^?( z8YS zA9ZzUsqBIAHhq6g&-|uu{N>;^efGb`+x!dvd($`meDI1s^3PxC2XwbTzv-KJWAKW; zh+l5{B7V8)n|NsOiauh{U-55!E2Hw6o4$$H2CwKNCvJaq(--mIO&>OD+xx*Q`ZQ;? z{jc%%{n9gU`+U>)i9)?uK8iFe)^4z@W?WD&s^WU^cz3X z=lnx>^R0v1KL7kP&Kor=;rY!kcvI6A9AgTZ|Vo{xw8qp z_f@Y{kB2#^<9>-mOrK`d(|@x+rDIc zl|47%xgJ5i>Cg{mLM$)+#%k*a(r9~d)vtIHyL+l@=S1+2oWTAZUU(*g`@j=+&qIAv z&m=-0GvB*suDSP_$x%IQ?0wG=Zu(YFW!vZM5rD^zN5}WslM$YG$gKK)*caj}pEvVM z;f1}={PJD(wXT;?pF8Al?XKSRArmQoPoBv}l8*aDCIWBrOZcZgLB|`}6NEnX16qHx zCn)+{-_^GfJyRz<-ly*#6g%LiUm`ru6e}~V`zZUOXlB>zz?=MBcr)|N4v^^y3ePjo z;6;2T`dlvoZ}MN^MLw7_f5HoS=^4VN&-E+tPX2{`&Yi`=3;WzN7G+=HgzqEYREWNr zL4VIT$>7Z!9Q7b3K7A*?vVC6PmJIoec=xD33(qrBXZ=}t-hl_+A%E0RJAVGinG)f- zR|j6i&%$%B4!ntT zJK`7O)4mVzCVrvb&KvQL*Yr-)_J#WW>?qJ&+Sr#j;x)%F>_nURN_Z2$eB`%nz?&Vk z*rbgo`BOi@Z!Xu4wZ32V1E#*lZyofp$9wxD;;FFDZ|YZc{7gJG^?UHxQR@5Pue$#M zeL|_37xs$9{R(f+i&t=d1RnOQ>*IPy<^CIZv(r)Us7jutA8(4UIzClD(Dp@m)9+zN z=hzqU-aKPQ4bz(gTLc(L*Mvw@WMU|kN)F6 zui}A@UxcT4wfx&h?gSB@?K60Xe(>(Z`rA9S6u*E+y=2ZCZ!W=m_N>CvhjkytKWON9 zl39m?f6Rn*{`-+L#lo}yEcF;v=@iHD>EX3WXjkA64)t^MU^ew&Ye_m{tw176VgD*x8<%nq*658=%lu+RF| zZrK;`KE1;i8xs6`)r`0KM=b4~o#4R--*3(u36E2jJcAec(b13R_s9Q&x9s7*kMftM z4}a|Y=pB*rzrvgQ?HwMQf7B1mzk0)7`T>39BgUg1Wc%`}e81xt{CD|F#V^oD{bcZ> zegNK^zfFn_3jNSLgLi;6?uXihpxF3Et$t;QayZtsnJ<-TZs?&K&R}z7n4E5AdeGA-u^yH238E zi1XsfBc&Z<7`KuYx;h*O> zgg5nrh1dC!@wWV}onMU?^$pSI`~$q0FA<)i`qfVXZ|tAwTR$OpLBIZrH`Cy~xE>2$ z*q2xQx$8~fO?&{}dSlk~MSQyOI-VRn`48c_egNM1H{mH>XuQaOh36d#;6;2TJbx3% zc$TkmsDw5uRsuHUH-NBzX7%<5j)H z{Cf&}(Ea$jU-EtX5A7%p`x0-6KmR`GuYUg1^%uo>sUP%vY_C*r4*v1R4@ob1&YcXL z7fIjw40vH*G*6g#V_%s6qrcGcAK&;G`yxqqzJNd5_CWV5JokI3*O$MP{0VP%P<#@P z+dd1=J9C6L{^LdSVfG)YM>hX7pBVnA=6Os0mgaPS8oY>4h3EMV=$rnG@WLO}x6JB( zh37X5%YWN{2#kihsyh$EVOY_60ohrH=23FGfFv z=YG%NN&a5&=iZ?T-q;u6Nnf_SWPMF|?gxMu_GRJOo;KdTU+&5JQF!JbGHm&4yr$3d zO%L?Vd=ov+L;gNoKYgUn`GWD9zUfCj@DF*edALXZxnAe{*!N34!S?jN-*4ol?|0&% z`+gtfW%%beoHu>wz_0WJIdZ&l=?6K!?enQ0vhgF&hkg*Rjr^VZJM&!7cjzxMPtZ5< zGxEp0)6lo_8S5`Se9H^*)Y7-&pSt_)&t;F>{(;B5#n`LxAIS4-+S9}SX?kezCO;Qm z+S91NfX5C`%M0;n(3k$a?fsTN{*Lu6{fF@QNzI#KpQC>Dfxc&lO#HTv1 z>o3qZ@qy?I{mu9p`esKJG2QXr0e|jzH{*No`0uta8Q%-f^R|;O6#uAaJHJ%E5&A*T z*7}j(Y!sf~cYqi9uXY~zn|aP>Hvh=a9iL`>Qh44W2wv1rh3B2^!gKvp=bd@D&zeWK z{Zl5^`hmX)|C{-~Y(vBc)W_|AGk+6({^kty9q|Eo82lUir?)$@*V|uaeOGUoBHz#Y zuHGC?e5!g?(=Bs{-Q5s%TTz4PjsdI|4+ zc6=)T9rE|5<~jELRz1x8d-Hq~c%i?-^L!KW^5`%0(GReF$@yLAd-aYv@DBNd=Rx1( zN5VrlO<&|k!pnMH_}^#p{fRfSza>2Nzx%wWe!PY~z3KBj9Opgho1I~wbzbvtzNtIs zt@}l1oxe5SzF*!i*k0ZIbA5d9O8%&+1>V>{oj2m=>zfd-VV`rpPW&7Dobz?UqrT?* zi2OtML4B?IJ&Hj+E6TrdUfuw2|3-fy z;un3x)jJ8XpNIcgZ`w$={$)l3)IO`i-R@$Xv@ac!zx^EZ>hi}*m_u%3QT<8A!~Z|Gb3>hRAy$H6=9_oVNzF9&_6 z{d;o#6uiU!f!FaQ=biXj_p5KLZF#x*XM6w1Ki4oB*$9&1Zh}T@-pk}z`Mf5!puX%?8^8w?3g{RtO-N$?FNGtyV9y1F&ej&dP{e2?7 za{NMGGx`gj@{w(y-zy$3{t3_i10F|wB|Ps~U*BMA{s~X<(WZ}nkLMG?`*3|+F(O>r z^W#s%Yp#!bUR3%49`&ovXWsLhrowYSe#KLcUxerSGxLq3AHtjZGxL(u9~7SF&4{t1 zJ}ErU7b7>v{c65z^Y1O^Bf!%)KFhx`-?-0P_e%}C?H}(^>OPboK_C6HmS^Qa#FM_? zch^tJS$4i9`}ahA>Ufua*3`#^H}#jdoZl6Fe&0j97xwRoc+K;o&^hxP;4OaE{k~;? z6})+mLy!2NkNC9nBjUY-KF;6q)obnWu>8IGeZY$M;(j@Q^N;xKxL@`2_I3JXY7iYe6(bxU0)n5$#i2R6tgYUqVm_79ua^)>pvr~Zb%Wq!nYQ-5=(vh3C9uioqpqr*Q$4#e>2Z7 zdzJJNLz;i>kJ^8Xy+_^-`5XU%eLCn1|ABov?l=8W&YyDLch9q~{66H5dP&Da)C&&# zm;N$$>VcR3_w;Y+e=q-*{=EF9`A5#N;~~`ylYjIO+Ft#My?6Z?eT#TQ{yg<#;uqqB z!~RA5LVR$@U&KRixs#Rie)=02_}i$TD!%f(BmVoa&l#`PH-sG@Wc-)&v1k03`&Bq^ z#*=?U{sDc&jDCM44e9!j;#1cry)R?SU(_d${Tqt!9X}JFhJSmezRS<5-h^CFd_cYs z@%a1oO*N{_rmyD-JHB^(#XR-!Pk0kw@eT3uZ&&`2@83k<1T?!O^_5np{TFHPSA-pF6nhgzP?zI=Dy){p5&eWZVr zy!gG)oVVp~>S4<7Q-7nrmhp@5qP~{#%UQ3}Y*+A)ey#NvFX;Flyyw5h9_0Ilvz|z7 zk@ZRZujh+}7xl@rzm@e)$w$zqDeV0|O79mOKZD0N1h&1WGIQ9MsK;VgkNynS zq4Sx${x|jAyM7h*V%HP*{l@&?eh)GAd(Vf-hjFT1-#F^o;7xxO{zZL!*E=nLQy&NK zuz%!Bu3vROzUkw)c75n0=hxuh>z|{)=T26B$MsX{EqTAuU!dM{-0$&TBl0($*Zm5` zQ+dDOO}%*G4gb7fK=B#B75sBQ#duqPqd)UNpX2etEB%drkMWv+GhedthQ4?|bJOR3 zl<}IrsNdJT#oTY`N7w6$zUY?;&+#epLOsIu*qq%z`TSy<;e`p>=^p^a6R=!&LtN9K4 zbLb2IAw2iD{GLSjd(D^BH@1s^!gD-?3luKWZf?{u=c;)$HXtfQ+;CJN9J$Bi+Q-r-$dWc*X4YP@M2y* z=S#rLdA)ppr1?KA&%Td*e*_-?z2h~#iFAEUcrj0y@%=fU*!2kcU*SzX@w4`MSbuZg zG3Rq$=%3GgcFyO3hc_|*kgB9F=P@&Wej$FD`Ocgl0x#z~u^Nt_`Aa!3N@Q7N2xsjY7%fB4_7AAmRgLFmi*SUfKKJj}o8_b@MY=ttBO z!8`PW`i|{ATJHKT^igBk@dkJipT6MFlfKD+p^y4b$1j@tb^RVZVyeMA?6YFXwg-}e z&|mWZ!HfJ{crj1i--s^$>2)z#J+?&e=cfJweL0_<@4JN;^WNRBDE(D@(0H0JOZvF` zeqWLOkA>Iu5^}u5e-K029yH$8kJbO)_8|MK!gD`)@R~l?>zLO&>C^k61JC{==lO5? z=6yipHGRrQ4m`_WzBg#RrqBCE9_Um5d*ju841Mt);=Etg#BX`o^yT}C>wbwLJ^$Bu zMc?u#m%MEKUGmfPo%$iq*Yl^Re&|eXPkY|6=~I4q;F*8<-sRL^^`Kk+F8$>j38TNu z9+-dm9;fT=r62jeC+8#3k9^-#_NwT+-V3GudnG(Agtedvh)pfBH>W_-Hvx}QhNjkA zKo05oUE#SOF!65jFW=YZ{BGg-J~Dn5p6gfO?RdQI_ngO^`lRq8AFO?m<{y^F{=D;r zrf=RSXa84t@jf~8578Izojadt`k24){Z9WwP>$pXOCsKRRFC@<+Tjcrjlrym-&v`E=2z8Nxnq_V=ML-^UYE zr2U)s_S6re|EBl$_D9qYrvC=s+Rsz`JN9ot-|Pbb@37DCy#251C0l>_ciXFD{uDf< z&hxRv%Z{J5|G@U1-#_f%dat+X%l%=(`={gQMUV5}wV$E$nWKKidGoz)?du!+9Qx7r zzV27^v3U-Xf~^nFlYn))B-eYE$c z4`N4loyw>)<>GOOd_Ic`)(D!KXO<&HVH(t?)Wqh#rn?CRy@0Ptc|Gu;LMIScP z^7rUJE_*-pd0#2~i~h9y(a1CP9M_+9-iU{)o-_1)WAB^3d4H7kA>lpP`=QU@@PfXm zKa0Lcd*A$1ZMyA!%!i>L-`V@7Z{okM*R_3qu=l3#&ELqHdSc!0clLhMr+K8-kE~BZ z-*@)D=;KV`j}H6yXzxuQGw9Y|JVDsM@9h1iFZQ+Yt*WUXK;L)vzUZT7XnUIb3Ax`# zdvE&YdofdQFaCXJ?>BwK`>wawJ}t}N?9Ul{U-Yf_&lMjmdOAOczSze@&0^|9oEJ-L zf7JUFiau)W?SI`*+4RM}ppV>-seMMSKTkhT^u3WE**?=B9Q(q)rPybrexvJG!n6MX zFY2el^Sn2BGyfvI=zrw<)nk7Xc)K1^^igy6{dT=m`f=`q`pEfM;l+N!oR8JMs@eBN z)MWc2JbL%h|8@K#Jn!>Z^%2Jh=l-jF9{^tN)5`s<;9=vo{{=7N7w!Ai5En z{!GsA3NQADaZ^Dbzti>}yvdJ*H}#>9Kcapmyy$PSkIVWi`aB=T{M*#mgs1!2@ld`G z6<+LLdyV?vxqnUX1zSIaH~INTeWSPZS9s3PiDAQk2+#A+&^P@z;Z1#4?={?i126a2 z^}KS)A3ERpK6qpQz=P`@->XOI{787e&;9ZqAoxcO7CW-?LGY%2AiTVfh@XY$_XgAt zqd%y9eKT*C^%vo(s=M!_>Luo%>d(FJka_l?Pc$`ss+{OPWM9A|KJa;|V!D0`ed0{d z=X5>0_(wgv{fFmiw*JzO@A}_I?#~vU_jzF7x4g*yX&-l@?%@dyrZ{l&X^TR$fuW0{~{mXM7=(S&u`|*8T`}NqTxcNtoHS%-edEOR!CO?P1 zRZlJX+xvzsf1mDmYhHKa1MO4A1DAdr?~jDHezM}{3)T$+Cbxle(1b^cfJK)#4nFFmA3bMPi^|E%bs@q3cPJkn?Coqz#IOFzL`hY8(;UQ!Ta?71Mv1d zQu(*F-)-|x`FP*2?7iaieIN82GynMXyb5@Sea8A*Kd$(SxW@WXcy+&`FYIaKHGSR} z$$5|XnR?}~=+ifg+kZ4(@sA!fdb{F3ujrG`?|P@`^L!`r zqIrRkmyG{-WAFGS`>Wb#?tLTdFCY5{9`B=k-kd)`UicoX`PcDy(RY4NWc;u2-_jd>&qoN)^9+iyXZ~vKGk1KI{Y&VJcwCuW z=D)Arp98;+{0$pmysSTihqdl`uJ_-gzW{wN-aiCh)Yp{Hc%Fgx*vI{1iG08L{sTO| zZ@u#mVu&L?CFbe)nR?X`pOXLD9^`zT@Ypxf_tEiq-7h^n+n0Wixb>I$CgbJz7r?`Y zY&>Sf5B@2}+w%fT-opOHeulT4?-ZW*Gk_QKovOdMo=xB9@E^oOO&|OCkNf@kN89`J z{kiZok+kd;c!z&ee7f~bH5ShgL7(E&vVUt{*ZHOTAO2nf{inHK)x(%2Fdkke`sZJs z&qlw(zX{Lt+345!H{ne_{q|?nH&kD| zypflz9|%veSlO#}s(xQ9JkS3v`xN&J4Xtm~nv z)%YC0EWF;wqZoAJ=Y`ktA9zzAD!jI*Sf|ln;ko`t&2ZcMrqA_1zMp>dr|EZfJ?E|L z)ySXgSIBJm579@ztK^w_%SoT+8|r>v^ZP=g&-3@x_#(a+p6BmZzr5`q=Ow;s`t&~8 z_659;A6;LYeG0PAYrlNwZ|pxf=%fDL{#QC>|0X7`kLtD#cqAyg%~B`XWF)e$jeLCH-zW+#MqGIe#u!{UUUlQZx?-kpY|Eg zu>B=?hyH>W^i{pM`Iq#?`?5t}_mjap^aH%sH~r+GZ{Bmh{1x+S!t;ASWFqP>nrCpl zvG$k8{Zb!m{a~KykiU0-?}-@iu+P+=d|vs|&=2D0)(_sN9r{82$@0?sEK5Jg*L@$C ze_Q!~$@9zQ-`+ic1$_tq!0UKiKS}-(kGKDLseP8VFXZbxJ{Y{FPbe$iFy6jj@c7B9 z|82a=Ke&%~*P8~f>>obN_xng+`}0ToM*jG%@NejR$A8dw_&4&Aj;~&_ejxg6pP}#Y zZ^Y-FAAxuHH{##62QS&55uW$k5-%V6LF8`!W&HqsqyB9EW&HrWH`l{7BVP6F;vX_+ zdFgy#`3HE~AGGU}Xw~#Tz@zHA^P^=ygMZ{yjYqzF#4pr0T0cJij{242N!MST^&%$%Qzw&$YPk7kt(hu+|-j#kpAN%mSe)^I63*NK$6E6R=@QOZSjFy+> zf7-r)ck~;Vy>k63zc1ACT>RsWM%x4WTQlD-yvg5oztQ!Bd9OiDAnc#|d9H7OH}+3> z(XYMxgV}Ek`z*ZKryzZ8`z*YPpC9^z&ZnU-?4R;g*TbN1>>qe*Yhc-{hyLKdreD_j zR{T@8zVpF{{^0m?-UE#P;C^5HJyLwwA%Ey|+ZW=2L;kQzZLiSM(O==Y-oE0CkUua2 z@5nFFddst{T<34#<@eCK9#Qg#O$oe%fBF7bT<-isc-{{uZ%!7;d)?w6GS~i6{Xy67 zxewyi_Lo#|4*K$Ya(91__X1nr?*1V1(*0FpsOdyAa!s1Ip|ZpR16&0$~S`;G4vPujlB_aM*yjOydr zKRWs|+H1t+p@ff2clI_CPVC>*K<6|5yE#;h*rF zuM(e~^o{=ReoEc%)&I!-qQdjM8F-T)iN1*^iTCDyh3EK`zZv#Lc#cnr&&Iw~zo+BB z_nglWUew1s-j)8YepLH6@TPtW9{nxfNBPUTU-0sKt{v}6KNeow7saENKjBS$|DOBX zh3EL5^M?GL->>a>Quapr&c}jB zq+@x>_viY)xZek?{qJp`p)d9mzW;XeZ}tgdLyr5E3~&2KJ$vjkc+{WT{=Hq_PoD3o zV?&~TukWclegSXl_rjZgifoeoFXx^49N8qae#ZyGbNme6alh1g+P=Ky_d|u}`4@ga z@(-^_^ z@4<`umGHbz6}+fl2@m^V{vG$b>_hV}`U}GIyczlKaliQEjyLF69QUjEXvcr@VXp5A z5B`-sRn2DVyYH&k1zw$Z>u{l4oF=+_ayeEK~scst)J|A9`lJq7RZA3vghbj_E1MgQoW zFF~g|zXY%R`R1SAn|8mV>c!^Ym+M#1cf?oZEDv~_e=*N>>{sS~zx@5O!7KieV^}|+ z&-n-P%==Z#bDekSbN^C!)Bku^zw7}|^nDPo%{<{-)+hf~eA@l#xew9zLA>U9hU0#P zm+}(#D?HaEA`c%FYTUeh=E>Rav8FZmOm>$~7>eQWxhZ-F=dL-eWNzx6lwO9{{Q zKkyo@8AAe^>)*Tq}pB~zm8u%WKX-^iG4o! zxB78)UfzF=|A0O!gRbx9`&!+H>j#`~^yB28cJ{jeq5JTB9ntbZA9y`q{Cn0ngg5f{ zT>a2*v!PwfBjIOI^tm6I~3HMHM$>mR&wMyYwmjN?6-6eA3V1Ma`-9r z<*?)BN2x1Lo~XXflJiBk>L?vst=?PLUZ8Ypr~aL)-RJHhc=zPD)AUjzHc+k3yM~Ei ztJW^t0`Gnw-*MEQ!JAwGPaCn-!fRQ<2aoS4yuMrggjmRT`)u6>FKXipuYEcH_olC7 zNlBq&gGFD@5`q`8{laVCyWSSG?=AY;7Vx%UbYtPQOhChq#j7?1|9sxuog+NW)_kM8 z!t*Tkdb{cS6@9K{bH5Xt7GB%FmwekTJlhs>q3~_Ovuy!yVpHKsmp6U6yJ_K#t~H)) zpYWXff;Y7n;Z5$#d)|p%gy&fw=nLDj@Y?o)H?~iB>ec*$f1VwGNih3D;u)n&t-SA#^|29>}BR{&{lf| zz+%>ad=2Mew*gheh1K)MB}2$b>&$vz8#?$%vu(tS>-qE-4jJOk8jm|UWC*;@ho3Y5 z5>NepQvHg_ztnGVyanFaWzK}Awat01_Y6ay`%|mF5xxezw%Mz`5&j7dwN5|he7flK zJOX%ICX0WoAGz;5;}6j{^EJ;E&kTL;$ANeFLVQBk1EFu^L3k6tJ<#X)?U6pe|MPhj z9|>>jS*d_XQQyY7!o$>HJ}NukZn~%R9fuMjSe&uJ5jI zV-u!+CwXx_0e!gmN4=-`C;f7LR`kWZMD;@|ZdrKY10n{|d@Cn0-sIQdq0en|Uh?~L z;8ES${fniqp&#J+y#1bQ-|w;yZL_03w(weB2Cwal-*0fe8(Vp-YW)q@jMnWO~j?LSL0K1eyZ-*@`B8| zez)#-?&I!{x__&xrt|BP=hlyxoNo}G^#l8K@GtZOyn}z}ukR!4@51vu<%$-Af1I)N z^<#cT^eLa+@{;`l;ko_<-sL}Be**9HAF8EoysF2He)xU1c%JtQe%HsAy-WL|TGht8 z<}Y46kDwZR`J;+4!RtI>@hkm@Y6XpV#vljY5rZUsw|@)zZvW=}Jn~F+Ueo9EY99Th z&*#1Rk1vTA^=-+s_u0YyQ~u&UuK8+e?4HM>9v1fH#GAZL@}m3R{LA{WGRru*uHc;x#Jh?^TC1V~)4vg$v^-;zGRIbASaprtzR;iYd1a47f7#z+yzBk$tNZE8zK4BQ zC#>Ta^w<48^o@C8`=g4-$N$E>;^@bJ`|bb!@!S9TfB)NZ;J^L$|NNi(|KIlZfBWtK E1sIsVt^fc4 literal 0 HcmV?d00001 diff --git a/sw/images/hachti/system_museumsnacht_2010.rk b/sw/images/hachti/system_museumsnacht_2010.rk new file mode 100644 index 0000000000000000000000000000000000000000..ff0ec591df40db9d669569d98545532cc4c958f5 GIT binary patch literal 3325952 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

{KsHVsCq@vnPV~5Ix;3_y^ei(%`X+ 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%0AXTzsb;RgIa-*~#0K^%qQw5}11ZNM?iKRJhh||4g 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