/MOONLAND /SIMULATION PROGRAM PDP12=0 /USE PDP12 HARDWARE EAE=0 /USE HARDWARE EAE ORIG=1 /WHERE POSSIBLE, USE ORIGINAL CODE IFZERO EAE < MUY=JMS I MUYA DVI=JMS I DVIA NMI=JMS I NMIA SHL=JMS I SHLA ASR=JMS I ASRA LSR=JMS I LSRA MQL=JMS I MQLA SCA=JMS I SCAA / SCL=JMS I SCLA MQA=JMS I MQAA CAM=JMS I CAMA ACL=JMS I ACLA MQLDVI=JMS I MQLDVA SCAL=JMS I CLASCA > IFNZRO EAE < MUY=7405 DVI=7407 NMI=7411 SHL=7413 ASR=7415 LSR=7417 MQL=7421 SCA=7441 / SCL=7403 MQA=7501 CAM=7621 ACL=CLA MQA MQLDVI=MQL DVI SCAL=CLA SCA > *200 CLA CLL JMS CHANGE TAD INITH DCA POSX+1 TAD INITF DCA AMTFUL+1 DCA POSY+1 DCA ASHIP DCA VELY+1 DCA VELX+1 DCA VELY DCA VELX DCA POSY DCA POSX TAD L7000 DCA I SHUT TAD M377 DCA JDUNE CLL CLA CMA RAR DCA AMTFUL TAD L3177 DCA DIST HACK, JMS DISPLAY JMS I ROTAT JMS I COLLIS JMS CALLER JMP HACK NUMO, VELDSP FUELIO, FUEL XPOSDSP, POSDSP DISPLAY, 0 JMS I XDSHIP JMS I NUMO JMS I XPOSDSP JMS I FUELIO JMS DMOON JMP I DISPLAY DMOON, 0 CLA TAD M200 DCA CNTR TAD L5777 DCA 10 CMA CLL RAR MQL SURFACE, ACL TAD L40 JMS I JBJFY MQL TAD I 10 JMS I JBJFX JMS I JBDIS ISZ CNTR JMP SURFACE CLA JMP I DMOON CALLEM, 0 JMS I XFINDGV JMS I XDETACL JMS I XUPDATE JMP I CALLEM CONTA=. *400 DSHIP, 0 JMS I RANDO TAD BLAST TAD NOPTS DCA CNTR TAD CNTR DCA NUMBER TAD SHIPPT DCA POINTS TAD ASHIP TAD L5000 DCA TEMP TAD I TEMP DCA COSANG TAD L5400 TAD ASHIP DCA TEMP TAD I TEMP DCA SINANG TAD SINANG DCA MULTY TAD L3577 DCA 15 ANTHER, TAD I POINTS DCA YPOINT ISZ POINTS TAD I POINTS DCA XPOINT TAD YPOINT JMS I MULTPY DCA FOUR TAD COSANG DCA MULTY TAD XPOINT JMS I MULTPY DCA ONE TAD YPOINT JMS I MULTPY DCA TWO TAD SINANG DCA MULTY TAD XPOINT JMS I MULTPY DCA THREE TAD FOUR CIA TAD ONE TAD POSX+1 DCA I 15 TAD TWO TAD THREE TAD POSY+1 DCA I 15 TAD FOUR TAD ONE TAD POSX+1 DCA I 15 TAD TWO CIA TAD THREE TAD POSY+1 DCA I 15 ISZ POINTS ISZ CNTR JMP ANTHER TAD NUMBER RAL CLL DCA CNTR TAD L3577 DCA 15 XBAK, TAD I 15 JMS I JBJFX CLA TAD I 15 JMS I JBJFY JMS I JBDIS CLA ISZ CNTR JMP XBAK JMP I DSHIP MULT, 0 CLL SPA CMA CML IAC MQL TAD MULTY SPA CIA CML DCA .+5 SNL CLA CMA DCA SIGN MUY 0 SHL 0 ISZ SIGN CIA JMP I MULT RAND, 0 TAD I 16 TAD I 17 SPA CLA CMA TAD M3 JMP I RAND *600 ROTATE, 0 CLA CLL CML RTL /2 JMS I READIT SPA CLA JMP CCW TAD ASHIP SNA TAD L400 TAD M1 DCA ASHIP JMP I ROTATE CCW, TAD L3 /3 JMS I READIT SPA CLA JMP I ROTATE TAD ASHIP TAD M377 SNA CLA DCA ASHIP ISZ ASHIP JMP I ROTATE IFNZRO PDP12 < READ, 0 IOF LINC LMODE ADA I ADD JTABLE STC .+1 0 STC .+2 DJR 0 / JTABLE, JMP JBVEL HLT JMP JBR JMP JBL / / JBVEL, SAM FUELCH ADD . ADD . ADD . ADD . SAM FUELCHANNEL COM ROL 2 DJR JMP JFINAL / JBR, SAM ATTITU ADD . ADD . ADD . ADD . SAM ATTITUDECHANNEL ADA I -200 DJR JMP JFINAL / JBL, SAM ATTITU ADD . ADD . ADD . ADD . SAM ATTITU COM ADA I -400 / / JFINAL, PDP PMODE > IFZERO PDP12 < READ, .-. TAD JTABLE DCA .+1 .-. JTABLE, JMP .+1 JMP JBVEL JMP JBR JMP JBL JBR, TAD ROTPOT TAD M200 JMP SWITCH JBL, TAD ROTPOT CMA TAD M200 TAD M200 JMP SWITCH / /UPDATE BASED ON JOYSTICK INPUT INSTEAD OF POTENTIOMETERS. UPDSAM, .-. /UPDATE VALUES FOR THE CHANNELS. 6144 /READ M1703, IF ANY OSR /OR IN THE SWITCHES SPA CLA /TOP SWITCH SET? JMS SLOW /YES, REDUCE THRUST RTL /GET DIRECTION BITS SNL SMA /BOTH SET? JMS SLOW /YES, REDUCE THRUST RTL /GET ROTATION BITS AND L3 TAD RTABLE /LOOK UP ROTATION DELTA DCA ROTTMP TAD I ROTTMP /UPDATE ROTATION TAD ROTPOT DCA ROTPOT 6144 /GET INPUTS AGAIN OSR AND L400 /GET THRUST INPUT SNA CLA IAC /INCREMENT THRUST TAD THRPOT DCA THRPOT JMP I UPDSAM THRPOT, 0 ROTPOT, 0 ROTTMP, 0 RTABLE, .+1 0 1 -1 0 SLOW, .-. DCA ROTTMP /SAVE AC CLA CMA /YES, DECREMENT THRUST TAD THRPOT DCA THRPOT TAD ROTTMP /RESTORE AC JMP I SLOW /RETURN TO CALLER JBVEL, JMS UPDSAM TAD THRPOT CLL CMA RTL JMP SWITCH > SWITCH, 7000 ION JMP I READ *CONTA CHANGE, 0 ISZ FLAG JMP I CHANGE TAD M200 DCA CNTR TAD L6000 DCA TEMP ECH, TAD I TEMP TAD L400 DCA I TEMP ISZ TEMP ISZ CNTR JMP ECH TAD M12 DCA CNTR OUTER, TAD L4200 TAD ONE DCA TWO TAD I TWO DCA 10 TAD 10 DCA 11 TAD I 10 CLL RAL DCA TWO ISZ 11 TIGHT, TAD I 10 MQL MUY 3 DVI 2 ACL DCA I 11 ISZ TWO JMP TIGHT ISZ ONE ISZ CNTR JMP OUTER JMP I CHANGE BBBBBB=. *1000 FINDGV, 0 CLA CLL TAD POSX+1 SPA CIA MQL MQA DCA .+2 MUY 0 DCA RSQD TAD RSQD DVI OLDR, 0 /What now? CMA CML RAL TAD OLDR ACL SZL CLL IAC TAD OLDR RAR DCA OLDR TAD OLDR MQL MUY RSQD, 0 NMI DCA GTEMP SCAL CMA TAD L20 DCA ASHIFT MQL TAD GRAV DVI GTEMP, 0 ACL DCA AMT JMP I FINDGV DETACL, 0 JMS I READIT /0 TAD L4000 LSR;10 DCA SCALE TAD SCALE CIA DCA BLAST TAD ASHIP TAD L5000 DCA TEMP TAD I TEMP JMS MULTX DCA ACCELX TAD L5400 TAD ASHIP DCA TEMP TAD I TEMP JMS MULTX DCA ACCELY JMP I DETACL KFUDGE=. *1200 UPDATE, 0 TAD POSX+1 CIA JMS I MULTY2 CLL DCA TEMP MQA TAD ACCELX MQL TAD ACCELX JMS FUDGIT CLL MQA TAD VELX MQL MQA DCA VELX RAL TAD TEMP TAD VELX+1 DCA VELX+1 TAD VELX+1 ASR;1 DCA ACCELX CLL MQA TAD POSX DCA POSX RAL TAD ACCELX TAD POSX+1 DCA POSX+1 CLL CLA DCA TEMP TAD ACCELY MQL TAD ACCELY JMS FUDGIT CLL MQA TAD VELY MQL MQA DCA VELY RAL TAD TEMP TAD VELY+1 DCA VELY+1 TAD VELY+1 ASR;1 DCA ACCELY CLL MQA TAD POSY DCA POSY RAL TAD ACCELY TAD POSY+1 DCA POSY+1 JMP I UPDATE FUDGIT, 0 SPA CLA CMA SZL IAC TAD TEMP DCA TEMP JMP I FUDGIT *KFUDGE MULT2, 0 CLL SPA CMA CML IAC MQL SZL CMA DCA SIGN MUY AMT, 0 ASR ASHIFT, 0 ISZ SIGN JMP I MULT2 DCA ONE ACL CLL CIA MQL TAD ONE CMA SZL CLL IAC JMP I MULT2 MULTX, 0 CLL SPA CML CIA MQL SNL CMA DCA SIGN MUY SCALE, 0 SHL 7 ISZ SIGN CIA JMP I MULTX EJECT *2001 JBXER, 0 /MUST GO HERE BETA1, 0 PLACE, 0 SPA SNA JMP CLICK AUTOPO, MQLDVI 1750 DCA NUMBER MQA DCA N TAD NUMBER MQLDVI 144 DCA NUMBER MQA DCA N+1 TAD NUMBER MQLDVI 12 DCA N+3 MQA DCA N+2 TAD NEGSWTCH SZA CLA JMP MINUS GOON, CMA DCA AZERO TAD N-1 DCA 11 TAD M4 DCA ONE BEG, TAD I 11 SNA ISZ AZERO JMP .+2 JMP JUNK COOL0, CLL RAL TAD JBASE DCA BETA1 CLL CML RAR TAD YDISP CLL CIA RTR RAR DCA JBXER TAD XDISP CLL RTR RAR IOF LINC LMODE ADA I YDOWN DSC I BETA1&1777 ROL 6 ROL 6 ROL 6 ROL 6 ROL 6 ROL 6 ROL 6 ROL 6 ROL 6 ROL 6 DSC I BETA1&1777 CLR PDP PMODE ION DCA AZERO LOOKNX, TAD YDISP TAD M200 DCA YDISP ISZ ONE JMP BEG JMP I PLACE TACKON=. *2600 VELDSP, 0 CLA CLL TAD L2400 DCA YDISP TAD M400 DCA XDISP TAD VELX MQL TAD VELX+1 SHL;5 DCA JBLVEL TAD JBLVEL JMS I XPLACE JMP I VELDSP POSDSP, 0 TAD M400 DCA XDISP TAD M1400 DCA YDISP TAD DIST JMS I XPLACE CLA CMA TAD DIST SMA CLA JMP I POSDSP CLA CLL IAC RTL TAD DIST SPA CLA JMP JBNOTL CLA CMA TAD JBLVEL SMA JMP JBXE TAD L10 SPA CLA JMP JBXE TAD OFF DCA I SHUT JMS I PTOUCH ISZ JDUNE JMP I POSDSP JMP I L200 / JBLVEL, 0 / JBXE, CLA CLL JMP I POSDSP / PTOUCH, TOUCH PBYE, GOODBYE / / / JBNOTL, CLA CLL CML RAR DCA JDUNE JMS I PBYE ISZ JDUNE JMP .-2 JMP I L200 / / / / / / / JMP I POSDSP FUDGE=. *20 ACCELX, 0 ACCELY, 0 ASHIP, 0 BLAST, 0 CALLER=CALLEM CNTR, 0 COSANG, 0 FOUR, 0 GRAV, 14 L20, 20 L3, 3 L3177, 3177 IFNZRO EAE < L3400, 3400 /UNREFERENCED > IFZERO EAE < MQLA, MQLS > L3577, 3577 L40, 40 L400, 400 L4000, 4000 L5000, 5000 L5400, 5400 MULTPY, MULT MULTY, 0 MULTY2, MULT2 M1, -1 M200, -200 M3, -3 M377, -377 NOPTS, -15 NUMBER, 0 ONE, 0 POINTS, 0 POSX, 0;0 POSY, 0;0 RANDO, RAND READIT, READ ROTAT, ROTATE SHIPPT, 4000 SIGN, 0 SINANG, 0 TEMP, 0 THREE, 0 TWO, 0 VELX, 0;0 VELY, 0;0 XDETAC, DETACL XDSHIP, DSHIP XFINDGV, FINDGV XPOINT, 0 XUPDAT, UPDATE YPOINT, 0 L4200, 4200 M4, -4 N-1 N, 0;0;0;0 XDISP=THREE YDISP=FOUR M1000, -1000 IFNZRO EAE < L1400, 1400 /UNREFERENCED > IFZERO EAE < MUYA, MUYS > L140, 140 DISPX, 0 DIST, 0 FLAG, -1 INCR, 0 L10, 10 L1000, 1000 L200, 200 L5777, 5777 L6000, 6000 M12, -12 M400, -400 M1400, -2000 COLLIS, COLLID SHUT, SWITCH OFF, CLA CLL CML RAR AMTFUL, 0;0 IFNZRO EAE < L300, 300 /UNREFERENCED > IFZERO EAE < DVIA, DVIS > L7000, 7000 IFNZRO EAE < M50, -50 /UNREFERENCED > IFZERO EAE < NMIA, NMIS > M140, -140 XPLACE, PLACE NEGSWTCH, 0 AZERO, 0 IFNZRO EAE < M5, -5 /UNREFERENCED > IFZERO EAE < SHLA, SHLS > IFNZRO EAE < M40, -40 /UNREFERENCED > IFZERO EAE < ASRA, ASRS > L44, 44 JDUNE, 0 IFNZRO EAE < L600, 600 /UNREFERENCED > IFZERO EAE < LSRA, LSRS > L2400, 2400 M600, -600 INITH, HEIGHT INITF, SFUEL JBJFX, YJBJF JBJFY, XJBJF JBDIS, JDIS JBASE, JLIT-1&1777 IFZERO EAE < SCAA, SCAS /SCLA, SCLS MQAA, MQAS CAMA, CAMS ACLA, ACLS MQLDVA, MQLDVS CLASCA, CLASCS > AAAAAA=. *FUDGE FUEL, 0 CAM TAD M1000 DCA XDISP TAD L400 DCA YDISP TAD BLAST CIA CLL SHL;7 TAD AMTFUL DCA AMTFUL RAL TAD AMTFUL+1 SPA JMP KOACCL DCA AMTFUL+1 CLA CLL CMA RAR CIA TAD AMTFUL+1 CIA GBNEWS, JMS I XPLACE JMP I FUEL KOACCL, CLA TAD OFF DCA I SHUT CLA CLL CMA RAR DCA AMTFUL+1 JMP GBNEWS / AAAA=. *TACKON MINUS, TAD XDISP TAD L44 JMS I JBJFX CLA TAD YDISP TAD L20 JMS I JBJFY JMS I JBDIS TAD L20 JMS I JBJFY JMS I JBDIS TAD L20 JMS I JBJFY JMS I JBDIS CLA CLL CML DCA NEGSWTCH JMP GOON CLICK, CIA SNA JMP ZIP ISZ NEGSWTCH JMP AUTOPOS ZIP, TAD YDISP TAD M600 DCA YDISP CMA DCA ONE JMP COOL0 JUNK, CMA DCA AZERO JMP LOOKNX / / / / *6000 DECIMAL 50 57 65 85 100 110 135 150 143 138 131 126 118 113 115 117 123 125 150 160 160 160 154 150 167 174 183 196 225 218 212 206 205 202 202 203 204 190 202 200 201 201 201 203 201 207 215 220 217 215 209 203 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 199 199 199 199 199 198 198 198 198 197 196 195 194 193 190 182 176 170 160 151 140 135 120 115 120 127 128 130 134 137 133 127 114 105 104 103 100 107 115 117 109 90 70 60 50 40 32 20 17 15 14 13 12 11 30 40 40 30 OCTAL *4000 DECIMAL 0;1200 160;1000 280;800 360;600 400;400 400;200 400;0 400;-200 400;-400 400;-600 400;-800 640;-960 400;-1000 800;-1200 400;-1200 80;-1200 0;-1200 60;-1400 0;-1400 20;-1500 40;-1600 0;-1600 20;-1800 0;-1800 10;-1850 0;-1900 0;-2000 OCTAL *4200 A0-1 A1-1 A2-1 A3-1 A4-1 A5-1 A6-1 A7-1 A8-1 A9-1 A0, -5 0;0 30;60 0;30 60;60 60;0 A1, -3 0;30 30;30 60;30 A2, -7 60;60 14;60 0;30 30;30 60;0 44;0 0;0 A3, -7 60;60 0;0 60;30 0;30 30;0 44;0 14;0 A4, -6 0;0 44;60 60;0 14;0 30;60 30;30 A5, -7 60;0 14;0 0;30 30;30 60;60 44;60 0;60 A6, -7 30;30 0;0 30;60 60;60 44;60 0;60 14;0 A7, -6 0;0 14;0 30;0 44;0 60;30 60;60 A8, -10 60;60 44;0 60;30 30;60 14;0 30;0 0;30 0;60 A9, -7 30;30 60;0 0;0 14;0 30;60 60;60 44;0 *3200 30;30 30;60 60;30 60;60 30;-30 30;-60 60;-30 60;-60 30;100 60;100 30;140 60;140 30;-100 60;-100 30;-140 60;-140 100;100 100;140 140;100 140;140 100;-100 100;-140 140;-100 140;-140 30;200 60;200 30;250 60;250 30;-200 60;-200 30;-250 60;-250 100;200 100;240 140;200 140;240 100;-200 100;-240 140;-200 140;-240 200;100 200;140 240;100 250;140 200;-100 200;-140 240;-100 250;-140 200;200 200;240 240;200 250;240 200;-200 200;-240 240;-200 250;-240 300;200 300;240 350;200 350;240 300;-200 300;-240 350;-200 350;-240 *2200 COLLID, 0 CLL CLA CML RAR TAD POSY+1 LSR;4 TAD L6000 DCA TEMP TAD I TEMP DCA DISPX TAD DISPX CIA TAD POSX+1 TAD M140 DCA DIST TAD DIST TAD M1000 SMA JMP I COLLID DCA CNTR TAD CNTR TAD L1000 SPA CLA JMS I XTERM TAD CNTR CIA MQL TAD BLAST CIA DCA .+2 MUY;0 SHL;3 SNA JMP I COLLID CIA DCA CNTR TAD L3177 DCA INCR VOOMZM, TAD INCR DCA 10 JMS I RANDO DCA TEMP VOOM, TAD I 10 TAD DISPX JMS I JBJFX CLA TAD I 10 TAD POSY+1 JMS I JBJFY JMS I JBDIS CLA ISZ TEMP JMP VOOM TAD INCR TAD L10 DCA INCR ISZ CNTR JMP VOOMZM JMP I COLLID XTERM, TERM / / / / / / JLIT, 4536 3651 2101 0177 4523 2151 4122 2651 2414 0477 5172 0651 1506 4225 4443 6050 5126 2651 5122 3651 / / / / / *2400 TERM, 0 DCA POSX TAD DISPX TAD L140 DCA POSX+1 IAC TAD VELX+1 SMA CLA JMP ZIPIT TAD L7000 DCA CNTR SETX, CLA CLL CMA RAL DCA TWO GLOP, JMS GETRAN JMS SETSC TAD I COST JMS XMULT TAD POSY+1 JMS I JBJFY CLA CLL CML TAD I SINT JMS XMULT TAD POSX+1 JMS I JBJFX JMS I JBDIS CLA CLL CML ISZ TWO JMP GLOP JMS GETRAN JMS SETSC TAD I COST JMS XMULT SHL;1 TAD POSY+1 JMS I JBJFY DCA FOUR TAD I SINT JMS XMULT SHL;1 TAD POSX+1 JMS I JBJFX JMS I JBDIS DCA THREE ISZ CNTR JMP CHECK JMP I .+1 200 CHECK, TAD DISPX CIA TAD THREE SMA CLA JMP SETX TAD FOUR TAD L4000 LSR;4 TAD L6000 DCA TEMP TAD THREE DCA I TEMP JMP SETX GETRAN, 0 TAD I 16 TAD I 17 AND L377 DCA THETA TAD I 16 TAD I 17 AND L140 DCA RAD JMP I GETRAN SETSC, 0 TAD THETA TAD L5000 DCA SINT TAD THETA TAD L5400 DCA COST JMP I SETSC XMULT, 0 CLL SPA CIA CML MQL SNL CMA DCA SIGN MUY RAD, 0 SHL;3 ISZ SIGN CIA JMP I XMULT THETA, 0 SINT, 0 COST, 0 L377, 377 ZIPIT, DCA VELX DCA VELX+1 DCA VELY DCA VELY+1 JMP I TERM *5400 SIN, 0;3;6;11;14;17;22;25;30;34;37 42;45;50;53;56;60;63;66;71;74;77;101 104;107;111;114;116;121;123;125;130;132;134;136 140;142;144;146;150;152;154;155;157;160;162;163 165;166;167;170;171;172;173;174;174;175;176;176 177;177;177;177;177;200;177;177;177;177;177;176 176;175;174;174;173;172;171;170;167;166;165;163 162;160;157;155;154;152;150;146;144;142;140;136 134;132;130;125;123;121;116;114;111;107;104;101 77;74;71;66;63;60;56;53;50;45;42;37 34;30;25;22;17;14;11;6;3;0;7774;7771 7766;7763;7760;7755;7752;7747;7743;7740;7735;7732;7727;7724 7721;7717;7714;7711;7706;7703;7700;7676;7673;7670;7666;7663 7661;7656;7654;7652;7647;7645;7643;7641;7637;7635;7633;7631 7627;7625;7623;7622;7620;7617;7615;7614;7612;7611;7610;7607 7606;7605;7604;7603;7603;7602;7601;7601;7600;7600;7600;7600 7600;7600;7600;7600;7600;7600;7600;7601;7601;7602;7603;7603 7604;7605;7606;7607;7610;7611;7612;7614;7615;7617;7620;7622 7623;7625;7627;7631;7633;7635;7637;7641;7643;7645;7647;7652 7654;7656;7661;7663;7666;7670;7673;7676;7700;7703;7706;7711 7714;7717;7721;7724;7727;7732;7735;7740;7743;7747;7752;7755 7760;7763;7766;7771;7774 *5000 COS, 200;177;177;177;177;177;176;176;175;174;174 173;172;171;170;167;166;165;163;162;160;157;155 154;152;150;146;144;142;140;136;134;132;130;125 123;121;116;114;111;107;104;101;77;74;71;66 63;60;56;53;50;45;42;37;34;30;25;22 17;14;11;6;3;0;7774;7771;7766;7763;7760;7755 7752;7747;7743;7740;7735;7732;7727;7724;7721;7717;7714;7711 7706;7703;7700;7676;7673;7670;7666;7663;7661;7656;7654;7652 7647;7645;7643;7641;7637;7635;7633;7631;7627;7625;7623;7622 7620;7617;7615;7614;7612;7611;7610;7607;7606;7605;7604;7603;7603 7602;7601;7601;7600;7600;7600;7600;7600;7600;7600;7600 7600;7600;7600;7601;7601;7602;7603;7603;7604;7605;7606;7607 7610;7611;7612;7614;7615;7617;7620;7622;7623;7625;7627;7631 7633;7635;7637;7641;7643;7645;7647;7652;7654;7656;7661;7663 7666;7670;7673;7676;7700;7703;7706;7711;7714;7717;7721;7724 7727;7732;7735;7740;7743;7747;7752;7755;7760;7763;7766;7771 7774;7777;3;6;11;14;17;22;25;30;34;37 42;45;50;53;56;60;63;66;71;74;77;101 104;107;111;114;116;121;123;125;130;132;134;136 140;142;144;146;150;152;154;155;157;160;162;163 165;166;167;170;171;172;173;174;174;175;176;176 177;177;177;177;177 / / PMODE EJECT / / / / / / *7000 TOUCH, 0 JMS PSAVE JMS I PPPDIS JBP1 JMS PRES JMP I TOUCH / / / JBP1, 260 -340 TEXT "HTOUCHDOWN\" / / / / / GOODBYE, 0 JMS PSAVE JMS I PPPDIS JBP2 JMS PRES JMP I GOODBYE / / JBP2, 300 340 TEXT "HGOODBYE\" / / / / PPPDIS, PPDIS / / / / / / / PSAVE, 0 CLA CLL TAD I S1 DCA SS1 TAD I S2 DCA SS2 JMP I PSAVE / / / PRES, 0 CLA CLL TAD SS1 DCA I S1 TAD SS2 DCA I S2 JMP I PRES / / / S1, LOC1 S2, AUTO7 SS1, 0 SS2, 0 / / / / / / / / / EJECT / / / *7200 / DISPLAY CHARACTER TABLE. / TABLED=. / 7777 /00=ILLEGAL 7777 4477 /01=A 7744 5177 /02=B 2651 4136 /03=C 2241 4177 /04=D 3641 4577 /05=E 4145 4477 /06=F 4044 4136 /07=G 2645 1077 /10=H 7710 7741 /11=I 0041 4142 /12=J 4076 1077 /13=K 4324 0177 /14=L 0301 3077 /15=M 7730 3077 /16=N 7706 4177 /17=O 7741 4477 /20=P 3044 4276 /21=Q 0376 4477 /22=R 3146 5121 /23=S 4651 4040 /24=T 4077 0177 /25=U 7701 0176 /26=V 7402 0677 /27=W 7701 1463 /30=X 6314 0770 /31=Y 7007 4543 /32=Z 6151 4177 /33=[ 0000 7777 /34=ILLEGAL 7777 0000 /35=] 7741 2000 /36=^ 2076 7777 /37=ILLEGAL 7777 0000 /40=SPACE 0000 7500 /41=! 0000 7000 /42=" 0070 7777 /43=ILLEGAL 7777 5721 /44=DOLLAR SIGN 4671 6661 /45=PER CENT SIGN 4333 5166 /46=& 0526 0000 /47=TAB 0000 3600 /50=( 0041 4100 /51=) 0036 2050 /52=* 0050 0404 /53=+ 0437 0500 /54=, 0006 0404 /55=- 0404 0001 /56=. 0000 0601 /57=/ 4030 4536 /60=0 3651 2101 /61=1 0177 4523 /62=2 2151 4122 /63=3 2651 2414 /64=4 0477 5172 /65=5 0651 1506 /66=6 4225 4443 /67=7 6050 5126 /70=8 2651 5122 /71=9 3651 2200 /72=: 0000 4601 /73=; 0000 1000 /74=< 4224 1212 /75== 1212 2442 /76=> 0010 4020 /77=? 2055 / / / EJECT *7400 / / / DISPLAY ROUTINE / / GENERAL CALL: / / DISPLAY / PTEXT / WHERE PTEXT POINTS TO THE FOLLOWING: / /PTEXT, XCOOR. / YCOOR / TEXT "F THIS IS MY MESSAGE\" / / PPDIS, 0 /MAIN ENTRY PINST1, CLA CLL /CLEAR AC. TAD I PPDIS /GET MAIN POINTER DCA PDIS /AND PLACE IN TEMP POINTER. ISZ PPDIS /PAST POINTER ON RETURN. TAD I PDIS /GET POINTER DCA PHOR /X POS ISZ PDIS /BOP UP TAD I PDIS /GET VERTICAL PDCAVR, DCA PVER /AND STASH AWAY. TAD PDIS /START OF TEXT DCA PSTART /BOP DOWN BY 1 MONE /SET SWITCH TO LEFT OF NEXT WORD. DCA PSWITCH TAD PINST1 /GET A CLA FOR FIRST TIME THROUGH. DCA PNOT1 /AND STORE SO NO VERTICAL BOP. / PPSTART, JMS PGETL /GET NEXT CHAR FROM TEXT. MONE /SET CHAR SIZE TO HALFWORD DCA PCSW /IN CASE OF NO F OR H. TAD PCHAR /GET IN AC. TAD PM10 /IS IT AN "H" SNA CLA /IF IT IS, SKIP PAST AND IGNORE. JMP PPAST /ITS AN "H" TAD PCHAR TAD PM6 /IS IT AN "F" SZA CLA JMP PDO /NOT AN "F" OR AN "H". USE IT AS A CHAR IN HALFWORD. DCA PCSW /SET SIZE TO FULL. PPAST, JMS PGETL /GET FIRST CHAR TO BE DISPLAYED. PDO, TAD PCSW /GET SIZE. SNA CLA /IS IT FULL SIZE. TAD PM4 /YES. SET BACK LEFT BY 8. TAD PM4 / IF HALF SET IT BACK BY 4. TAD PHOR DCA I PLOC1 TAD PCSW /GET SIZE SNA CLA /FULL? TAD PM20 /YES. BOP DOWN BY 40, NOT 20 TAD PM20 /M20 IF HALF SIZE TAD PVER PNOT1, DCA PVER /MADE A CLA FOR THE FIRST TIME THROUGH TAD PDCAVR /GET CORRECT INST. DCA PNOT1 /SET UP FOR FUTURE CALLS. TAD PCSW /CHAR SIZE. CMA /COMPLEMENT BIT. AND PL200 /BIT4 OF ESF IOF TAD PL100 LINC LMODE /GET INTO LINC MODE ESF /SET CHARS TO CORRECT SIZE PDP /BACK OVER INTO 8 MODE PMODE ION CLA /CLEAR THE AC BECAUSE THE SIZE IS STILL IN THE AC / PLOOP, TAD PCHAR /GET THE CHAR IN THE AC. CLL RAL /MULTIPLY BY 2. TAD PTABLE /POINTER TO DISPLAY TABLE. DCA I PAUTO7 TAD PVER /GET THE VERTICAL IN THE AC. IOF LINC /GO OVER TO LMODE AND START TO DISPLAY. LMODE DSC I AUTO7&1777 /FIRST PART OF CHAR ROL 6 ROL 6 ROL 6 ROL 6 ROL 6 ROL 6 ROL 6 ROL 6 ROL 6 ROL 6 DSC I AUTO7&1777 /SECOND PART OF CHAR. PDP PMODE /BACK INTO 8 MODE ION PTWO /GET A +2 IN THE AC TAD I PLOC1 DCA I PLOC1 JMS PGETL /GET ANOTHER CHARACTER. JMP PLOOP / AND DISPLAY IT. / PGETL, 0 /CHAR GETTER ROUTINE ISZ PSWITCH /IS IT LEFT HALF? JMP PRIGHT /GET CHARACTER ISZ PSTART /GET NEXT WORD TAD I PSTART /IN THE AC RTR RTR RTR JMP PCOM /GO DO THE AND. PRIGHT, MONE /RESET SWITCH DCA PSWITCH /FOR NEW WORD NEXT TIME. TAD I PSTART /WORD IN AC PCOM, AND PL77 /JUST THE LOW ORDER BITS. DCA PCHAR /SAVE FOR LATTER USE. TAD PCHAR /BACK IN AC. TAD PM34 SNA CLA JMP I PPDIS /YES! E X I T. TAD PCHAR /GET IT AGAIN TAD PM43 /IS IT A CR. SZA CLA JMP I PGETL /NO. RETURN. JMP PPSTART /RESET TO START NEXT LINE. / / PDIS, 0 /TEMPORARY POINTER PHOR, 0 /HORIZONTAL COORDINATE PVER, 0 /VERTICAL COORDINATE PSTART, 0 /POINTS TO NEXT TEXT WORD. PSWITCH, 0 /POINTS TO NEXT TEXT WORD PCHAR, 0 /CONTAINS NEXT TEXT CHARACTER. PCSW, 0 PTABLE, TABLED-1&1777 PLOC1, LOC1 PAUTO7, AUTO7 / / / / / / PM10, -10 PM6, -6 PM4, -4 PM20, -20 PL200, 200 PL100, 100 PL77, 77 PM34, -34 PM43, -43 / / / / / / / / / / / / / / / / EJECT / / / / / MONE=CLA CMA PTWO=CLA CLL IAC RAL LOC1=6001 AUTO7=LOC1+1 / / / / / / / / / / / / EJECT / / *7060 XJBJF, 0 DCA BFRET CLA CLL CML RAR TAD BFRET CLL CIA RTR RAR DCA JX TAD BFRET JMP I XJBJF / YJBJF, 0 DCA BFRET TAD BFRET CLL RTR RAR DCA JY TAD BFRET JMP I YJBJF / JDIS, 0 DCA BFRET TAD I L6000 DCA JT TAD JX DCA I L6000 TAD JY IOF LINC LMODE ADA I YDOWN DIS PDP PMODE ION CLA TAD JT DCA I L6000 TAD BFRET JMP I JDIS / / BFRET, 0 JX, 0 JY, 0 JT, 0 / / / *1 KSF /KEYBOARD HAVE CHARACTER? JMP I 0 /NO, JUST RETURN IFNZRO ORIG < KRS TAD [-203 SNA CLA JMP I [7600 JMP I 0 > IFZERO ORIG < JMP I .+1 /JMP TO PATCH INTP / *BBBBBB INTP, DCA SAVEAC /SAVE AC KRB /GET CHARACTER TAD M203 /CHECK FOR ^C SNA CLA JMP I M200 /RETURN TO HOST O/S TAD SAVEAC /RESTORE AC JMP I 0 /RETURN FROM INTERRUPT M203, -203 SAVEAC, .-. > / YDOWN=-140 HEIGHT=3700 SFUEL=1435+144+144+62 / FUELCHANNEL=0 /DEFINE WHAT THE FUEL(THRUST) CHANNEL IS. / ATTITUDECHANNEL=4 /DEFINE WHAT THE ATTITUDE CHANNEL IS. / /HOLES AVAILABLE: /HOLES AT END OF PAGES. /APPARENTLY NO LITERALS, EXCEPT IN ^C CHECK. /1400-1777 /3000-3177 /3400-3777 /4600-4777 /6201-6777 62XX, 64XX EAE EMULATION IFZERO EAE < /decus-8-436 EAE EMULATION *AAAAAA L, 0 AC, 0 MQ, 0 SC, 0 *6201 MUYS, 0 CLA CLL DCA SC TAD I MUYS ISZ MUYS DCA MULT1 DCA AC TAD M14 DCA M14C CLA CLL TAD MQ RAR DCA MQ MUYS2, SNL JMP MUYS3 CLA CLL TAD AC TAD MULT1 DCA AC MUYS3, CLA TAD AC RAR DCA AC TAD MQ RAR DCA MQ ISZ SC ISZ M14C JMP MUYS2 CLA CLL TAD AC JMP I MUYS MULT1, 0 M14, 7764 M14C, 0 DVIS, 0 DCA AC DCA SC CLL TAD I DVIS CIA DCA MINDIV ISZ DVIS TAD M15 DCA M15C TAD AC TAD MINDIV SNL JMP DVIS1 CMA JMP I DVIS DVIS1, CLA CLL SKP DVIS2, DCA AC TAD MQ ISZ SC ISZ M15C SKP JMP DVIS3 RAL DCA MQ TAD AC RAL DCA AC TAD AC TAD MINDIV SNL JMP DVIS1 JMP DVIS2 DVIS3, RAL DCA MQ CLA CLL TAD AC JMP I DVIS MINDIV, 0 M15, 7763 M15C, 0 NMIS, 0 DCA AC DCA SC GLK DCA L DCA SC TAD N26 DCA N26C STL TAD AC SNA TAD MQ SNA JMP I NMIS NMIS1, CLA CLL TAD AC RAL SMA CML SNL JMP NMIS2 JMP NMIS3 NMIS2, CLA CLL TAD L RAR TAD AC JMP I NMIS NMIS3, CLA CLL TAD MQ RAL DCA MQ TAD AC RAL DCA AC GLK DCA L ISZ SC ISZ N26C JMP NMIS1 STL TAD AC JMP I NMIS N26, 7752 N26C, 0 PAGE SHLS, 0 DCA AC DCA SC TAD I SHLS AND MASK1 ISZ SHLS IAC CIA DCA NSHL SHLS1, CLA CLL TAD MQ RAL DCA MQ TAD AC RAL DCA AC ISZ NSHL JMP SHLS1 TAD AC JMP I SHLS NSHL, 0 MASK1, 0037 ASRS, 0 DCA AC DCA SC TAD I ASRS AND MASK2 ISZ ASRS IAC CIA DCA NASR ASRS1, TAD AC SMA JMP PAC STL RAR DCA AC TAD MQ RAR DCA MQ STL JMP ASRS2 PAC, CLL RAR DCA AC TAD MQ RAR DCA MQ CLL ASRS2, ISZ NASR JMP ASRS1 TAD AC JMP I ASRS NASR, 0 MASK2, 0037 LSRS, 0 DCA AC DCA SC TAD I LSRS AND MASK3 ISZ LSRS IAC CIA DCA NLSR LSRS1, CLL TAD AC RAR DCA AC TAD MQ RAR DCA MQ ISZ NLSR JMP LSRS1 TAD AC CLL JMP I LSRS NLSR, 0 MASK3, 0037 MQLS, 0 DCA MQ JMP I MQLS SCAS, 0 DCA AC TAD AC CMA AND SC TAD AC JMP I SCAS SCLS, 0 DCA AC TAD I SCLS ISZ SCLS CMA AND MASK4 DCA SC TAD AC JMP I SCLS MASK4, 0037 MQAS, 0 DCA AC TAD AC CMA AND MQ TAD AC JMP I MQAS CAMS, 0 CLA JMS I MQLA JMP I CAMS ACLS, .-. /CLA MQA CLA JMS MQAS JMP I ACLS MQLDVS, .-. /MQL DVI DCA MQ TAD I MQLDVS /GET DIVIDEND ISZ MQLDVS /FIX RETURN DCA .+2 JMS I DVIA /DVI .-. JMP I MQLDVS CLASCS, .-. /CLA SCA CLA JMS SCAS JMP I CLASCS > IFZERO PDP12 < *1400 DISP, .-. /DISPLAY A POINT DCA SAVEA /SAVE AC TAD Y /GET Y COORDINATE CLL RAL /SCALE BY 2X 6054 /DILY CLA TAD X /GET X COORDINATE CLL RAL /SCALE BY 2X 6053 /DILX 6052 /WAIT FOR READY JMP .-1 6055 /DIXY -- INTENSIFY JMP I DISP /RETURN TO CALLER /Y COORD IN AC, X COORD IN "REGISTER" 1. /CHARACTER POINTER FOLLOWS CALL. /PIXEL SPACING IS 4 (NOT 2). DIS1, .-. /DISPLAY NEXT BIT SNA /ANY BITS SET? JMP I DSC /NOPE, DONE EARLY! SPA /THIS BIT SET? JMS DIS /YES, DISPLAY IT DCA SAVEA /SAVE IT CLA CLL IAC RAL /GET 4 TAD Y /BUMP Y COORDINATE DCA Y TAD SAVEA /RESTORE BITS CLL RAL /SHIFT FOR NEXT BIT JMP I DIS1 /RETURN TO CALLER SAVEA, .-. X, .-. Y, .-. CP, .-. DISC, .-. TAD N12 /GET -12 DCA BITCNT /INITIALIZE COUNT TAD Y /SAVE Y COORDINATE DCA OLDY TAD I CP /FETCH HALF CHARACTER JMS I DIS1 JMS I DIS1 JMS I DIS1 JMS I DIS1 JMS I DIS1 JMS I DIS1 CLA CML IAC RAL /GET 4 TAD X /BUMP X COORDINATE DCA X TAD OLDY /RESET Y COORDINATE DCA Y JMS I DIS1 /DISPLAY 6 BITS, IF PRESENT JMS I DIS1 JMS I DIS1 JMS I DIS1 JMS I DIS1 JMS I DIS1 JMP I DISC OLDY, .-. N12, -12 BITCNT, .-. > $