/FLYING SAUCER-ROCKET PROGRAM /FOR THE PDP-5 COMPUTER. /TITLE ICBM-1970 TTY VERSION / 4/15/70 /MODIFIED BY KYLE OWEN FOR THE PDP-8/E WITH VC8-E /AND TO IMPROVE READABILITY /VC8-E INSTRUCTIONS DICD=6051 DISD=6052 DILX=6053 DILY=6054 DIXY=6055 *14 MESCNT, 0 /ALL CONSTANTS AND VARIABLES USED IN ROCKET, FS. /LOCATIONS 10-17 USED AS AUTO-INDEXING REGISTERS. *20 SPEEDR, 0 SPEEDF, 0 MROCK, 0 MFS, 0 /ROCKET STALL CONSTANT STAL, -565 MRETURN,-CR LINEFD, LF RETURN, CR SYM, 0 MESS, MESSAG-1 INSTR, INSDAT-1 C1, 1 COUNTR, 0 COUNTF, 0 CROCKP, 2000-1 CROCK, ROCDAT-1 CFSDAT, FLYDAT-1 CFSDAP, 2400-1 CFSDAA, FLYDAT M377, -377 M1600, -1600 DIVIDE, 0 /ADDRESS EXIT TO DIGITAL DECTAPE SYSTEM. /ALTER THIS ADDRESS TO SUIT YOUR OWN USE. C7600, 7600 C7, 7 MHIT, -40 TEMPA, 0 TEMPB, 0 CNT, 0 M3, -3 CRLFEN, CRLF C377, 377 CRAISE, 400 C20, 20 PRNT, PRNT1 TESTHT, TEST CHIT, 40 XR, 0 GHOST, REST /HIT CHECK COORDINATES. CR1, TAGR1+1000 CR2, TAGR2+1000 CF1, TAGF1+1000 CF2, TAGF2+1000 CHAN, CHANG ROCKET, ROCKT FS, FLY ROCINI, ROCIN SAUINI, FSINI STALL, RSTALL CHECK, CCHECK TEMP, 0 INCREM, 0 INSTJP, 5203 /JMP LOC 003 CURRENT PAGE. M100, -100 M300, -300 OFFSET, 1000 NEGOFF, -1000 /START HERE TO INITIALIZE TELEPRINTER FLAG *176 CLA TLS *200 /MAIN PROGRAM TO CONTROL THE ROCKET AND UFO. BEGIN, JMS I CHAN KCC /PRINT INSTRUCTIONS THE FIRST TIME. JMS GETSTR CLA TAD INSTJP DCA BEGIN REST, KCC /GET SPEEDS. JMS GET JMS I CRLFEN TAD SPEEDR JMS DIVID JMP PUTIN /DIVIDE SUBROUTINE. /CALCULATE HOW MANY TIMES TO ADD SPEED /SO THE SCOPE IS NOT OVERFLOWED. DIVID, 0 DCA TEMP DCA DIVIDE TAD TEMP SNA CLA JMP REST TAD M1600 TAD TEMP ISZ DIVIDE SPA JMP .-3 CLA TAD DIVIDE JMP I DIVID / PUTIN, DCA MROCK TAD SPEEDF JMS DIVID DCA MFS /MAIN DISPLAY CONTROL. /RESET ROCKET & FLYING SAUCER. START, JMS I ROCINI JMS I SAUINI GOON, KSF JMP CONTFS /IF FLAG-1 SEE IF RUB-OUT OR RETURN, /IF NEITHER START DISPLAYING ROCKET. CLA KRS TAD MRETURN SNA CLA JMP REST KRS TAD M377 SNA JMS I CHECK JMS I ROCKET ISZ COUNTR JMP .+3 /IF THE ROCKET IS AT THE TOP OF THE SCREEN /RESET IT AND CLEAR THE FLAG. JMS I ROCINI KCC CONTFS, JMS I FS KSF JMS I STALL /SEE IF IT IS A HIT. JMS I TESTHT CLA ISZ COUNTF SKP /RESET FLYING SAUCER JMS I SAUINI JMP GOON /THIS IS THE ROUTINE THAT PRINTS OUT THE INSTRUCTIONS. GETSTR, 0 CLA TAD INSTR DCA MESCNT JMP .+4 /THIS IS THE ROUTINE THAT GETS THE PARAMETERS. GET, 203 TAD MESS DCA MESCNT JMS I CRLFEN TAD C20 DCA TEMP DCA SPEEDR DCA SPEEDF CONTUE, TAD I MESCNT SPA JMP I GET SZA JMP CONT3 JMP GETCAR CONT3, JMS I PRNT JMP CONTUE GETCAR, KSF JMP .-1 KRB DCA SYM TAD SYM JMS I PRNT /RETURN SIGNIFIES END OF ENTRY. TAD SYM TAD MRETURN SZA CLA JMP CONT5 JMS I CRLFEN ISZ TEMP JMP CONTUE CONT5, TAD SYM AND C7 DCA SYM TAD I TEMP CLL RTL;RAL TAD SYM DCA I TEMP JMP GETCAR / /;;;;;;;;;;EDITING BREAK;;;;;;;;;; / /ROCKET SUBROUTINE. *10 XCO, 0 XPUT, 0 *400 ROCKT, 0 RESET, CLA TAD CROCKP DCA XPUT TAD CROCKP DCA XCO STARTA, TAD I XCO SPA JMP I ROCKT /DXL TAD OFFSET DILX TAD NEGOFF TAD SPEEDR DCA I XPUT TAD I XCO TAD OFFSET /DYS DILY TAD NEGOFF DISD JMP .-1 DIXY DISD JMP .-1 TAD SPEEDR DCA I XPUT JMP STARTA /RESET ROCKET TO STARTING POSITION. ROCIN, 0 CLA TAD MROCK CIA DCA COUNTR TAD CROCK DCA XCO TAD CROCKP DCA XPUT GOON1, TAD I XCO SPA JMP CONT DCA I XPUT JMP GOON1 CONT, DCA I XPUT TAD M1600 DCA I XPUT JMP I ROCIN /THIS ROUTINE STALLS IF THE ROCKET IS NOT FIRING RSTALL, 0 CLA TAD STAL DCA TEMP ISZ TEMP JMP .-1 JMP I RSTALL /FLYING SAUCER SUBROUTINE. *12 XCOO, 0 XPUTT, 0 *500 FLY, 0 RESETT, CLA TAD CFSDAP DCA XPUTT TAD CFSDAP DCA XCOO STARTT, TAD I XCOO SPA JMP I FLY /DXL TAD OFFSET DILX TAD NEGOFF TAD SPEEDF DCA I XPUTT TAD I XCOO /DYS TAD OFFSET DILY TAD NEGOFF DISD JMP .-1 DIXY DISD JMP .-1 DCA I XPUTT JMP STARTT /RESET FLYING SAUCER TO STARTING POSITION FSINI, 0 CLA TAD MFS CIA DCA COUNTF TAD CFSDAT DCA XCOO TAD CFSDAP DCA XPUTT GOON2, TAD I XCOO SPA JMP CONT1 DCA I XPUTT JMP GOON2 CONT1, DCA I XPUTT TAD M1600 DCA I XPUTT JMP I FSINI /ROUTINE TO SEE IF IT HIT. /CONSTANTS C40 AND M40 CONTROL /HO CLOSE YOU HAVE TO BE TO SCORE A HIT. *600 TEST, 0 CLA TAD M3 DCA CNT TAD I CR2 TAD CHIT DCA TEMPA TAD I CR2 TAD MHIT DCA TEMPB TAD TEMPA CIA TAD I CF2 SPA CLA ISZ CNT ISZ CNT TAD TEMPB CIA TAD I CF2 SPA JMP TEST1 ISZ CNT JMP I TEST JMP TESTY TEST1, ISZ CNT JMP TESTY JMP I TEST TESTY, CLA TAD M3 DCA CNT TAD I CR1 TAD CHIT DCA TEMPA TAD I CR1 TAD MHIT DCA TEMPB TAD TEMPA CIA TAD I CF1 SPA CLA ISZ CNT ISZ CNT TAD TEMPB CIA TAD I CF1 SPA JMP TEST2 ISZ CNT JMP I TEST JMP CRAZ TEST2, ISZ CNT JMP CRAZ JMP I TEST /DISPLAY GARBAGE FOR HIT! CRAZ, CLA TAD M3 DCA TEMP KCC CRAZY, TAD I 10 TAD I 10 /DXL TAD OFFSET DILX TAD NEGOFF ISZ TEMPA JMP .+2 JMP SEE SEEON, CMA CONTDS, TAD I 10 /DYS TAD OFFSET DILY TAD NEGOFF DISD JMP .-1 DIXY DISD JMP .-1 JMP CRAZY SEE, ISZ TEMP JMP SEEON JMP I GHOST /ROUTINE TO ADD A CONSTANT TO /Y-COORDINATES OF THE FLYING SAUCER. /CONSTANT “CRAISE” CAN BE CHANGED /FOR YOUR OWN USE. CHANG, 0 CLA TAD CFSDAA DCA 10 TAD CFSDAA DCA 11 KEEP1, TAD I 10 SPA JMP CONT6 TAD CRAISE DCA I 11 /SKIP X-COORDINATES. TAD I 10 DCA I 11 JMP KEEP1 CONT6, JMP I CHANG /PRINT SUBROUTINE. PRNT1, 0 TAD M377 SZA JMP .+3 JMS I CRLFEN JMP I C7600 TAD C377 TSF JMP .-1 TLS CLA CLL JMP I PRNT1 /CRLF ROUTINE. CRLF, 0 CLA TAD RETURN JMS PRNT1 TAD LINEFD JMS PRNT1 JMP I CRLF /MAKE SURE 377 IS IN BUFFER. CCHECK, 0 TAD M300 DCA INCREM /STALL LOOP TO BE SURE CHARACTER IS IN BUFFER. ISZ INCREM JMP .-1 KRS TAD M377 SNA JMP I C7600 JMP I CCHECK / /;;;;;;;;;;EDITING BREAK;;;;;;;;;; / /ROCKET DATA COORDINATES (X,Y). *1000 ROCDAT, 0 60 4 54 4 60 10 50 10 60 14 44 14 60 20 40 20 60 24 34 24 44 24 60 30 30 30 50 30 60 34 24 34 54 34 60 40 20 40 60 44 14 44 24 44 54 44 64 50 10 50 30 50 50 50 70 54 4 54 34 54 44 54 74 60 0 60 4 60 40 60 14 60 20 60 24 60 30 60 34 60 40 60 100 64 44 64 74 64 104 70 50 70 70 70 110 74 54 74 64 74 114 100 60 100 120 104 64 104 120 110 70 110 120 114 74 114 120 120 100 120 104 120 110 120 114 TAGR1, 120 TAGR2, 120 4000 4000 /MESSAGES ARE NOT TRIM CODE BECAUSE /OF THE NATURE OF THE PRINT & GET ROUTINE. /ESSAGES STORED STARTING AT *1202 MESSAG, R O C K E T SPACE S P E E D EQUAL 0 U F O SPACE S P E E D EQUAL 0 LF H II T SPACE A SPACE K E Y SPACE T O SPACE F II R E SPACE R O C K E T PERIOD 4000 /FLYING SAUCER COORDINATES (X,Y). *1400 FLYDAT, 57 1077 63 1101 63 1077 63 1075 67 1103 67 1077 67 1073 73 1103 73 1077 073 1073 73 1063 75 1067 77 1103 77 1077 77 1073 77 1063 101 1067 103 1103 103 1077 103 1073 105 1107 107 1113 107 1103 107 1077 107 1073 113 1117 113 1103 113 1067 113 1073 117 1123 117 1113 117 1107 117 1103 TAGF1, 117 TAGF2, 1077 117 1073 123 1123 123 1113 123 1107 123 1103 123 1073 123 1073 125 1125 127 1127 127 1123 127 1103 127 1077 127 1073 131 1125 133 1123 133 1113 133 1107 133 1103 133 1077 133 1073 137 1123 137 1113 137 1107 137 1103 137 1067 137 1073 143 1117 143 1103 143 1077 143 1073 147 1113 147 1103 147 1077 147 1073 151 1107 153 1102 153 1077 153 1073 155 1067 157 1103 157 1077 157 1073 157 1063 161 1067 163 1103 163 1077 163 1073 163 1063 167 1103 167 1077 167 1073 173 1101 173 1075 173 1077 177 1077 4000 4000 /INSTRUCTIONS STORED HERE. /IF THEY ARE NOT TO BE PRINTED OUT /PUT A 7000 IN LOCATION 202 /BEFORE STARTING THE PROGRAM. /0R PUT A 4000 (- #) IN LOCATION 1664. *1664 INSDAT, CR LF II N S T R U C T II O N S COLON CR LF S P E E D S SPACE S NSLASH B SPACE LT SPACE O R SPACE EQUAL SPACE T O SPACE THREE ZERO PERIOD CR LF R E T U R N SPACE K E Y SPACE W II L L SPACE A S K SPACE Q U E S T II O N S SPACE A G A II N PERIOD CR LF R U B O U T SPACE W II L L SPACE R E T U R N SPACE T O SPACE S Y S T E M SPACE PERIOD CR LF N O T E COLON SPACE C O N T R O L SPACE K E Y SQUOTE S SPACE O P E R A T E SPACE O N L Y SPACE D U R II N G SPACE D II S P L A Y PERIOD CR LF 4000 /TABLE OF LETTERS AND THEIR ASCII VALUE IN OCTAL. A=301 B=302 C=303 D=304 E=305 F=306 G=307 H=310 II=311 J=312 K=313 L=314 M=315 N=316 O=317 P=320 Q=321 R=322 S=323 T=324 U=325 V=326 W=327 X=330 Y=331 Z=332 ONE=261 TWO=262 THREE=263 FOUR=264 FIVE=265 SIX=266 SEVEN=267 EIGHT=270 NINE=271 ZERO=260 EX=241 /! QUOTE=242 NUMSIN=243 /# DOLLAR=244 PERCNT=245 AMPER=246 /& SQUOTE=247 /' LPAR=250 RPAR=251 ASTER=252 PLUS=253 COMMA=254 MINUS=255 PERIOD=256 COLON=272 NSLASH=257 SEMCOL=273 LT=274 EQUAL=275 GT=276 QUES=277 ATSIGN=300 LBRAK=333 LSASH=334 RBRAK=335 LAR=337 LF=212 SPACE=240 CR=215 BELL=207 $