V MACRO D10 07-JUN-77 09:41 TABLE OF CONTENTS 1- 19 LOCAL DATA 2-462 NARRATIVE 3-516 INITIALIZE 3-562 BLOCK SCORES DISPLAY 3-623 SERVE 3-661 NEXT BALL POS & TIMG 3-796 GAME OVER: CLEANUP 3-808 PADDLE MOVEMENT AST 3-997 SUBROUTINES V MACRO D10 07-JUN-77 09:41 PAGE 1 1 .TITLE V 2 .IDENT /02.02/ 3 .MCALL EXIT$S,DSAR$S,ASTX$S 4 .MCALL QIO$,MRKT$,WTSE$,DIR$,WTLO$,SETF$,GLUN$ 5 .NLIST BEX 6 ; 7 ; DEVELOPED OFF-HOURS AT CHEVRON RESEARCH COMPANY, RICHMOND, CA 94802 8 ; 9 ; STRICTLY FREE FUN: NOT FOR COMMERCIAL OR MONETARY USE 10 ; 11 ; VERSION 02.02 12 ; 13 ; J L FROST 23-MAY-77 14 ; 15 ; V, VIDEO TERMINAL PONG (VT52,VT55) 16 ; 17 ; EQUATED SYMBOLS 18 ; 19 .SBTTL LOCAL DATA 20 ; 21 ; LOCAL DATA 22 ; 23 ; $ DPB'S 24 ; 25 ; EVENT FLAG USAGE 26 ; 01 = POST-SCORE MARKTIME WAIT 27 ; 02 = BALL MARKTIME WAIT 28 ; 03 = BEEP SPACING MARKTIME WAIT 29 ; 04 = KILL QIO WAIT 30 ; 05 = GENERALIZED WRITE QIO WAIT 31 ; 06 = BALL JUMP QIO SAFETY WAIT 32 ; 07 = INTRO TERMINATION QIO WAIT 33 ; 08 = INTRO TERMINATION MARKTIME WAIT 34 ; 35 ; LUN USAGE 36 ; 05 = VT (INTRO QIO RD; PLAY UNSOL CHR AST RD; WRITE) 37 ; 06 = BEEP (VT OR LA, WRITE ONLY) 38 ; 39 000000 INTQIO: QIO$ IO.RAL!TF.RNE,5,7,,,, ;RD 1 CHR AFTER INTRO, 40 ; NO ECHO 41 000020 INTRMR: MRKT$ 8.,5,3 ;5-MINUTE WAIT 42 000032 INTRWT: WTLO$ 0,300 ;WT EITHER 7 OR 8 AFTER INTRO 43 000040 VTW: QIO$ IO.WAL,5,5,,,, ;GEN'L MAIN LOOP OUTPUT 44 000060 VTWT: WTSE$ 5 45 000064 SCORMR: MRKT$ 1,5,2 ;POST-SCORE MARKTIME 46 000076 SCORWT: WTSE$ 1 ;POST-SCORE WAIT 47 000102 PADQIO: QIO$ IO.WAL,5,,,,, ;WRT NEW PAD, REPL OLD 48 000122 BALLMR: MRKT$ 2,5,1 ;BALL MARKTIME 49 000134 BALLMW: WTSE$ 2 ;BALL MARKTIME WAIT 50 000140 SETEFB: SETF$ 6 ;SAME AS BALLJP COMPLETION 51 000144 BALLWT: WTSE$ 6 ;BE SURE BALL MOVE DONE 52 000150 BALLJP: QIO$ IO.WAL,5,6,,,, ;MAKE BALL JUMP 53 000170 BEEPO: QIO$ IO.WAL,6,,,,, ;OUTPUT A BEEP 54 000210 BEEPWT: WTSE$ 3 ;BEEP WAIT 55 000214 BEEPMR: MRKT$ 3,17,1 ;BEEP MARKTIME 56 000226 ERASE: QIO$ IO.WAL,5,4,,,, ;CR,LF,LF 57 ;(FOR CLEAN HARDCOPY AFTER V MACRO D10 07-JUN-77 09:41 PAGE 1-1 LOCAL DATA 58 ; RULES, THEN HOME & ERASE EOS) 59 000246 GETLU6: GLUN$ 6,LUNBUF ;GET UNIT # LUN 6 60 000254 ATT5: QIO$ IO.ATA,5,,,,, ;ATT W UNSOL INP CHR AST 61 000272 DET5: QIO$ IO.DET,5 ;DETACH 62 000306 KIL5: QIO$ IO.KIL,5,4 ;CANCEL 63 000322 KILWT: WTSE$ 4 ;KILL AND CANCEL WAIT 64 ; 65 ; ADJUSTMENTS TO $ DPB'S 66 ; 67 000126' SPEED = BALLMR+M.KTMG ;BALL MARKTIME ADJ. 68 ; 69 ; BUFFERS FOR QIO'S (& REQUIRED ADJACENT ITEMS) 70 ; 71 000326 BUF: .BLKB 72. ;GEN'L BUF MAIN LOOP OUTPUTS 72 000436 INBUF: .BLKW 1 ;SINGLE INPUT CHR. 73 000440 007 007 007 BEEPC: .BYTE 7,7,7,7 ;BEEP CHARS 74 000444 LUNBUF: .BLKW 6 ;GET LUN INFO BFR (WANT UNIT #) 75 ; 76 ; PADDLE DATABASE 77 ; (SEE ALSO YSOFLT & YSOFLB IN BALL DATABASE) 78 ; 79 000460 000001 PADLOK: .WORD 1 ;IF NZ, MAKES PAD AST IGNORE CHR 80 ; DURING SCORE & DCOURT WRITES 81 ; 82 ; NOTE CONVENTION: HALFSIZE PADDLE ADR IS Y, FULL IS (Y,Y+1) 83 ; 84 000462 000000 PADHAF: .WORD 0 ;FLG NZ IF HALFSIZE PADDLES 85 000464 000000 PADSZC: .WORD 0 ;FLG NZ IF PADDLE SIZE BEING CHANGED 86 000466 000000 BOTH: .WORD 0 ;FLG NZ IF BOTH HALVES FULL PADDLE 87 ; HAVE BEEN WORKED ON 88 000470 000000 SCORNW: .WORD 0 ;FLG NZ WHEN SCORING NOW 89 000472 000000 QUIT: .WORD 0 ;FLG NZ IF EITHER PLAYER QUITS EARLY 90 000474 000000 AUTLR: .WORD 0 ;# SUCCESSIVE SERVES L & R BOTH AUTO 91 000476 000024 AUTLRM: .WORD 20. ;MAX LIMIT FOR AUTLR (PREVENT INF LOOP) 92 000500 000050 PADZI: .WORD 40. ;INIT PENALTY CREDIT BACKCOURT MOTION 93 ; 94 ; KB RECOG. BYTE TABLE (FIRST BYTE OF WD) 95 ; (NOTE BITS 5 & 7 EA CHR ARE 0 (UPPER CASE, NO PARITY) 96 ; 97 000502 000121 000101 000127 BYTBL: .WORD 'Q,'A,'W,'S ;LEFT KEYS UPS, DNS, UPL, DNL 98 000512 000124 BYTBLA: .WORD 'T ; AUT 99 000514 000026 000023 000025 BYTBR: .WORD 26,23,25,22 ; RT KEYS UPS, DNS, UPL, DNL 100 000524 000120 BYTBRA: .WORD 'P ; AUT 101 000526 000105 000122 000116 .WORD 'E,'R,'N ;QUIT, RAPID, NORMAL 102 000534 000110 000106 000111 .WORD 'H,'F,'I ;HALF PADDLE, FULL PADDLE, INTRO RELIST 103 000542 000117 .WORD 'O ;ODT BKPT 104 000544 000000 BYTBS: .WORD 0 ;STOPPER 105 ; 106 ; KB RECOG. ADDR TBL CORRESP. BYTBL 107 ; 108 000546 006374' 006402' 006410' ADTBL: .WORD LUS,LDS,LUL,LDL ;LEFT PAD UPS, DNS, UPL, DNL 109 000556 006356' .WORD LPA ; AUT 110 000560 006534' 006542' 006550' .WORD RUS,RDS,RUL,RDL ;RT PAD UPS, DNS, UPL, DNL 111 000570 006516' .WORD RPA ; AUT 112 000572 006200' 006140' 006160' .WORD QIT,RAPID,NORMAL ;QUIT, RAPID, NORMAL 113 000600 006210' 006222' 006342' .WORD HAFPAD,FULPAD,INTRE ;HALF PAD, FULL PAD, INTRO RELIST 114 000606 006352' .WORD ODT ;ODT BKPT HOOK V MACRO D10 07-JUN-77 09:41 PAGE 1-2 LOCAL DATA 115 000610 006754' .WORD PADDON ;IGNORE UNRECOGNIZED CHR 116 ; 117 ; PADDLE LEFT: 118 ; 119 000612 000050 PADLZ: .WORD 40. ;INIT PENLTY CREDIT BACKCOURT MOTION 120 000614 000014 PADLY: .WORD 12. ;Y 121 ; 122 000616 033 131 040 PBUFLB: .BYTE 33,131,40,40 ;UL CORNER CURS ADR 123 000622 000013 PBUFL: .REPT 11. 124 .BYTE 40,10,12 ;SP,BS,LF 125 .ENDR 126 000663 141 010 012 .BYTE 141,10,12,141,10,12 ;PAD,BS,LF TWICE (FULL PAD DEFAULT) 127 000012 .REPT 10. 128 .BYTE 40,10,12 ;SP,BS,LF 129 .ENDR 130 000727 040 000 .BYTE 40,0 ;LAST SP, NULL 131 ; 132 000731 000 PADLC: .BYTE 0 ;LAST CMD (FOR AUT TEST) 133 .EVEN 134 ; 135 ; LEFT PADDLE WALL (AUT MODE) 136 ; 137 000732 033 131 040 PBUFLA: .BYTE 33,131,40,40 ;UL CRNR CURS ADR 138 000027 .REPT 23. 139 .BYTE 141,10,12 ;SOLID RECT.,BS,LF 140 .ENDR 141 001043 141 000 .BYTE 141,0 ;LAST SOLID RECT., NULL 142 .EVEN 143 ; 144 ; PADDLE RIGHT: 145 ; 146 001046 000050 PADRZ: .WORD 40. ;INIT PENLTY CREDIT BACKCOURT MOTION 147 001050 000014 PADRY: .WORD 12. ;Y 148 ; 149 001052 033 131 040 PBUFRB: .BYTE 33,131,40,147 ;UR CORNER CURS ADR 150 001056 000013 PBUFR: .REPT 11. 151 .BYTE 40,10,12 ;SP,BS,LF 152 .ENDR 153 001117 141 010 012 .BYTE 141,10,12,141,10,12 ;PAD,BS,LF TWICE (FULL PAD DEFAULT) 154 000012 .REPT 10. 155 .BYTE 40,10,12 ;SP,BS,LF 156 .ENDR 157 001163 040 000 .BYTE 40,0 ;LAST SP., NUL 158 ; 159 001165 000 PADRC: .BYTE 0 ;LAST CMD (FOR AUT TEST) 160 .EVEN 161 ; 162 ; RT PADDLE WALL (AUT MODE) 163 ; 164 001166 033 131 040 PBUFRA: .BYTE 33,131,40,147 ;UR CRNR CURS ADR 165 000027 .REPT 23. 166 .BYTE 141,10,12 ;SOLID RECT.,BS,LF 167 .ENDR 168 001277 141 000 .BYTE 141,0 ;LAST SOLID RECT., NULL 169 .EVEN 170 ; 171 ; V MACRO D10 07-JUN-77 09:41 PAGE 1-3 LOCAL DATA 172 001302 000001 PSAD: .WORD 1 ;PAD SML AMT DOWN 173 001304 177777 PSAU: .WORD -1 ;PAD SML AMT UP 174 001306 000004 PLAD: .WORD 4 ;PAD LGE AMT DOWN 175 001310 177774 PLAU: .WORD -4 ;PAD LGE AMT UP 176 ; 177 ; BALL DATABASE 178 ; 179 001312 000044 X: .WORD 36. ;HORIZ: L TO R 180 001314 000014 Y: .WORD 12. ;VERT: T TO B 181 001316 000001 T: .WORD 1 ;TOP YVAL 182 001320 000030 B: .WORD 24. ;BOT YVAL 183 001322 000014 MIDY: .WORD 12. ;MID YVAL 184 001324 000001 L: .WORD 1 ;LEFT XVAL 185 001326 000107 R: .WORD 71. ;RIGHT XVAL 186 001330 000044 MIDX: .WORD 36. ;MID XVAL 187 001332 000005 SLOW: .WORD 5 ;MAX TICKS BALL MARKTIME (SLOW) 188 001334 000003 FAST: .WORD 3 ;MAX TICKS BALL MARKTIME (FAST) 189 001336 000006 SPEEDS: .WORD 6 ;MAX TICKS BALL MARKTIME (SERVE) 190 001340 000005 SPEEDI: .WORD 5 ;INIT SPEED AFTER SERVE 191 ; ('SLOW' OR 'FAST') 192 001342 000002 SPDCNI: .WORD 2 ;MAX HITS BEFORE SPEEDUP 193 001344 000002 SPDCNT: .WORD 2 ;RNG HITS BEFORE SPEEDUP 194 001346 000001 XINCR: .WORD 1 ;X-INCR EA BALL JMP (CHR SPCE) 195 001350 000001 YINCR: .WORD 1 ;Y-INCR EA BALL JMP (BAR AMNT) 196 001352 000006 YINCRL: .WORD 6 ;Y-INCR LIMIT (MULT RICOCHET AVOID.) 197 001354 000000 YFINE: .WORD 0 ;BAR POSN IN NEXT BALL CHR 198 001356 000012 YFINEL: .WORD 10. ;# BARS MAX BEFORE NEXT CHR NECESSARY 199 ; 200 ; "SOFT PADDLE" YFINE LIMITS TOP & BOT (Y=BALL Y): 201 ; 202 001360 000011 YSOFLT: .WORD 9. ;IF PADY=Y+1 & YFINE .GE.YSOFLT, HIT 203 001362 000002 YSOFLB: .WORD 2 ;IF PADY=Y-1 & YFINE .LE.YSOFLB, HIT 204 ; 205 001364 000000 NOBEWA: .WORD 0 ;FLG, NO BEEP WAIT IF NZ (LA36) 206 ; 207 ; BYTE STR TO MOVE BALL: 208 ; 209 001366 033 131 BALMOV: .BYTE 33,131 ;ADR CURS 210 001370 040 BALMOR: .BYTE 40 ;ROW 211 001371 040 BALMOC: .BYTE 40 ;COL 212 001372 154 BALMOL: .BYTE 154 ;BALL (BAR) 213 ; 214 ; BALL CHRS (FIRST BLK UNUSED, LAST BLKS = INVIS. BALL) 215 ; 216 001373 040 154 155 BALCHR: .BYTE 40,154,155,156,157,160,161,162,163,40,40 217 .EVEN 218 ; 219 ; COURT & SCORE DATABASE 220 ; 221 001406 000000 LS: .WORD 0 ;LEFT SCORE 222 001410 000000 RS: .WORD 0 ;RIGHT SCORE 223 001412 000000 INTREL: .WORD 0 ;FLG NZ IF INTRO RELIST BEFORE NEXT SRV 224 ; 225 ; SCORE DIGIT ADDRESS TABLE 226 ; 227 001414 002024' 002166' 002024' SCORAD: .WORD DIGN,DIG0,DIGN,DIG1,DIGN,DIG2 228 001430 002024' 002443' 002024' .WORD DIGN,DIG3,DIGN,DIG4,DIGN,DIG5 V MACRO D10 07-JUN-77 09:41 PAGE 1-4 LOCAL DATA 229 001444 002024' 002713' 002024' .WORD DIGN,DIG6,DIGN,DIG7,DIGN,DIG8 230 001460 002024' 003152' 002275' .WORD DIGN,DIG9,DIG1,DIG0,DIG1,DIG1 231 001474 002275' 002353' 002275' .WORD DIG1,DIG2,DIG1,DIG3,DIG1,DIG4 232 001510 002275' 002617' .WORD DIG1,DIG5 233 ; 234 ; COURT & BLOCK DIGITS STRINGS 235 ; 236 ; DRAW COURT 237 ; 238 001514 033 110 033 DCOURT: .BYTE 33,110,33,112,33,106 239 000107 .REPT 71. 240 .BYTE 163 ;LOWER BAR FOR TOP ROW 241 .ENDR 242 001631 033 131 044 .BYTE 33,131,44,103,141,33,131,51,103,141 243 001643 033 131 056 .BYTE 33,131,56,103,141,33,131,63,103,141 244 001655 033 131 067 .BYTE 33,131,67,40 245 000107 .REPT 71. 246 .BYTE 154 ;UPPER BAR FOR BOT ROW 247 .ENDR 248 001770 000 .BYTE 0 249 ; 250 ; SCORE ROW & COL 251 ; 252 001771 033 131 046 SCORRC: .BYTE 33,131,46,54,0 253 ; 254 ; SCORE SPACE OVER TO RT HALF COURT: 255 ; 256 001776 000025 SCORSP: .REPT 21. 257 .BYTE 40 258 .ENDR 259 002023 000 .BYTE 0 260 ; 261 ; BLOCK DIGITS 5 X 7 262 ; 263 002024 000007 DIGN: .REPT 7 ;NULL DIGIT 264 .BYTE 40,40,40,40,40,10,10,10,10,10,12 265 .ENDR 266 000007 .REPT 7 267 .BYTE 33,101 268 .ENDR 269 002157 040 040 040 .BYTE 40,40,40,40,40,40,0 270 ; 271 002166 141 141 141 DIG0: .BYTE 141,141,141,141,141,10 ;ZERO DIGIT 272 000006 .REPT 6 273 .BYTE 12,141,10 274 .ENDR 275 000004 .REPT 4 276 .BYTE 10,141,10 277 .ENDR 278 000005 .REPT 5 279 .BYTE 33,101,141,10 280 .ENDR 281 002256 033 101 .BYTE 33,101 282 000006 .REPT 6 283 .BYTE 33,103 284 .ENDR 285 002274 000 .BYTE 0 V MACRO D10 07-JUN-77 09:41 PAGE 1-5 LOCAL DATA 286 ; 287 002275 040 040 DIG1: .BYTE 40,40 ;ONE 288 000007 .REPT 7 289 .BYTE 141,12,10 290 .ENDR 291 000007 .REPT 7 292 .BYTE 33,101 293 .ENDR 294 000004 .REPT 4 295 .BYTE 33,103 296 .ENDR 297 002352 000 .BYTE 0 298 ; 299 002353 141 141 141 DIG2: .BYTE 141,141,141,141,141,10 ;TWO 300 000003 .REPT 3 301 .BYTE 12,141,10 302 .ENDR 303 000004 .REPT 4 304 .BYTE 10,141,10 305 .ENDR 306 000003 .REPT 3 307 .BYTE 12,141,10 308 .ENDR 309 002417 033 103 141 .BYTE 33,103,141,141,141,141,40 310 000006 .REPT 6 311 .BYTE 33,101 312 .ENDR 313 002442 000 .BYTE 0 314 ; 315 002443 141 141 141 DIG3: .BYTE 141,141,141,141,141,10 ;THREE 316 000006 .REPT 6 317 .BYTE 12,141,10 318 .ENDR 319 002473 010 010 010 .BYTE 10,10,10,10,141,141,141,141 320 000003 .REPT 3 321 .BYTE 33,101,10 322 .ENDR 323 002514 010 141 141 .BYTE 10,141,141,141,141 324 000003 .REPT 3 325 .BYTE 33,101,33,103 326 .ENDR 327 002535 000 .BYTE 0 328 ; 329 002536 000003 DIG4: .REPT 3 ;FOUR 330 .BYTE 141,12,10 331 .ENDR 332 002547 141 141 141 .BYTE 141,141,141,141,12,12,12,12 333 000007 .REPT 7 334 .BYTE 33,101,141,10 335 .ENDR 336 002613 033 103 040 .BYTE 33,103,40,0 337 ; 338 002617 141 141 141 DIG5: .BYTE 141,141,141,141,141,10,10,10,10,10 ;FIVE 339 000003 .REPT 3 340 .BYTE 12,141,10 341 .ENDR 342 002642 141 141 141 .BYTE 141,141,141,141 V MACRO D10 07-JUN-77 09:41 PAGE 1-6 LOCAL DATA 343 000004 .REPT 4 344 .BYTE 141,12,10 345 .ENDR 346 002662 033 101 010 .BYTE 33,101,10,10,10,10,141,141,141,141 347 000006 .REPT 6 348 .BYTE 33,101 349 .ENDR 350 002710 141 040 000 .BYTE 141,40,0 351 ; 352 002713 000006 DIG6: .REPT 6 ;SIX 353 .BYTE 141,12,10 354 .ENDR 355 002735 141 141 141 .BYTE 141,141,141,141,141 356 000003 .REPT 3 357 .BYTE 10,33,101,141 358 .ENDR 359 002756 010 010 010 .BYTE 10,10,10,10,141,141,141,141,40 360 000003 .REPT 3 361 .BYTE 33,101 362 .ENDR 363 002775 000 .BYTE 0 364 ; 365 002776 141 141 141 DIG7: .BYTE 141,141,141,141,141 ;SEVEN 366 000006 .REPT 6 367 .BYTE 10,12,141 368 .ENDR 369 000006 .REPT 6 370 .BYTE 33,101 371 .ENDR 372 003041 040 000 .BYTE 40,0 373 ; 374 003043 141 141 141 DIG8: .BYTE 141,141,141,141,141,10 ;EIGHT 375 000006 .REPT 6 376 .BYTE 12,141,10 377 .ENDR 378 000004 .REPT 4 379 .BYTE 10,141,10 380 .ENDR 381 000005 .REPT 5 382 .BYTE 33,101,141,10 383 .ENDR 384 003133 012 012 141 .BYTE 12,12,141,141,141,141,141 385 000003 .REPT 3 386 .BYTE 33,101 387 .ENDR 388 003150 040 000 .BYTE 40,0 389 ; 390 003152 141 141 141 DIG9: .BYTE 141,141,141,141,141,10,10,10,10,10 ;NINE 391 000003 .REPT 3 392 .BYTE 12,141,10 393 .ENDR 394 003175 141 141 141 .BYTE 141,141,141,141,141 395 003202 033 101 033 .BYTE 33,101,33,101 396 000006 .REPT 6 397 .BYTE 141,12,10 398 .ENDR 399 000007 .REPT 7 V MACRO D10 07-JUN-77 09:41 PAGE 1-7 LOCAL DATA 400 .BYTE 33,101 401 .ENDR 402 003246 141 040 000 .BYTE 141,40,0 403 ; 404 003251 015 012 012 ECOURT: .BYTE 15,12,12,33,110,33,112 ;ERASE COURT: 405 ; CR,LF,LF,HOME, ERASE EOS 406 ; INTRODUCTORY TEXT: 407 ; 408 .ENABL LC 409 003260 033 110 033 INTRO: .BYTE 33,110,33,112,33,107,33,76,11 410 003271 127 145 154 .ASCII /Welcome to Video Terminal Pong. / 411 003332 110 145 162 .ASCII /Here's how it works:/ 412 003356 015 012 012 .BYTE 15,12,12,12 413 003362 114 105 106 .ASCII /LEFT Player keys:/ 414 003403 015 012 011 .BYTE 15,12,11 415 003406 121 040 075 .ASCII /Q = Paddle up slowly / 416 003435 011 011 011 .BYTE 11,11,11 417 003440 127 040 075 .ASCII /W = Paddle up quickly/ 418 003467 015 012 011 .BYTE 15,12,11 419 003472 101 040 075 .ASCII /A = Paddle down slowly / 420 003521 011 011 011 .BYTE 11,11,11 421 003524 123 040 075 .ASCII /S = Paddle down quickly/ 422 003553 015 012 012 .BYTE 15,12,12,11 423 003557 124 040 075 .ASCII /T = cop out (replace paddle with wall until next / 424 003640 155 157 166 .ASCII /move command)/ 425 003655 015 012 012 .BYTE 15,12,12,12 426 003661 122 111 107 .ASCII /RIGHT Player keys:/ 427 003703 015 012 011 .BYTE 15,12,11 428 003706 066 040 075 .ASCII /6 = Paddle up slowly / 429 003735 011 011 011 .BYTE 11,11,11 430 003740 065 040 075 .ASCII /5 = Paddle up quickly/ 431 003767 015 012 011 .BYTE 15,12,11 432 003772 063 040 075 .ASCII /3 = Paddle down slowly / 433 004021 011 011 011 .BYTE 11,11,11 434 004024 062 040 075 .ASCII /2 = Paddle down quickly/ 435 004053 015 012 012 .BYTE 15,12,12,11 436 004057 120 040 075 .ASCII /P = cop out (replace paddle with wall until next move / 437 004145 143 157 155 .ASCII /command)/ 438 004155 015 012 012 .BYTE 15,12,12,12 439 004161 105 111 124 .ASCII /EITHER Player keys:/ 440 004204 015 012 012 .BYTE 15,12,12,11 441 004210 122 040 075 .ASCII /R = Rapid ball, N = NORMAL/ 442 004242 011 011 .BYTE 11,11 443 004244 124 117 117 .ASCII /TOO MANY/ 444 004254 015 012 011 .BYTE 15,12,11 445 004257 110 040 075 .ASCII /H = Half paddle, F = FULL/ 446 004310 011 011 .BYTE 11,11 447 004312 102 101 103 .ASCII /BACK COURT MOVES/ 448 004332 015 012 011 .BYTE 15,12,11 449 004335 111 040 075 .ASCII /I = Intro re-list/ 450 004356 011 011 011 .BYTE 11,11,11 451 004361 101 116 104 .ASCII /AND YOU'RE/ 452 004373 015 012 011 .BYTE 15,12,11 453 004376 105 040 075 .ASCII /E = Exit game/ 454 004413 011 011 011 .BYTE 11,11,11,11 455 004417 110 101 114 .ASCII /HALF-FAST/ 456 004430 015 012 011 .BYTE 15,12,11 V MACRO D10 07-JUN-77 09:41 PAGE 1-8 LOCAL DATA 457 004433 107 040 075 .ASCII /G = GAME START/ 458 004451 000 .BYTE 0 459 .DSABL LC 460 .EVEN V MACRO D10 07-JUN-77 09:41 PAGE 2 NARRATIVE 462 .SBTTL NARRATIVE 463 ;+ 464 ; VTPONG 465 ; RSX-11M TASK TO PLAY PONG USING VT52 OR VT55 TERMINAL 466 ; STRICTLY FREE FUN: NOT FOR COMMERCIAL OR MONETARY USE 467 ; ENVIRONMENT 468 ; VT52 OR VT55 TERMINAL (9600 BAUD) 469 ; RSX-11M OPERATING SYSTEM 470 ; SUPPORT FOR IO.ATA (ATTACH W UNSOLICITED INP CHR AST) 471 ; SUPPORT FOR TF.RNE (READ WITH NO ECHO) 472 ; SUPPORT FOR GET LUN INFO DIRECTIVE 473 ; LOUD VERSION ASSUMES TT0: = LA36 (BETTER BEEP THAN VT) 474 ; 475 ; FEATURES 476 ; BEEP WHEN BALL HITS (LOUD VERSION: LA36, QUIET VERSION: VT) 477 ; 'SOFT' PADDLE EDGES (HITS WHEN BALL ACCEPTABLY CLOSE TO PADDLE) 478 ; SMALL AND LARGE PADDLE MOVE AMOUNT KEYS 479 ; BLOCK DIGIT SCORING 480 ; FULL AND HALF PADDLE SIZE 481 ; LEFT AND/OR RIGHT PADDLE 'WALL' ON REQUEST (ALWAYS HITS) 482 ; NORMAL OR RAPID BALL MOTION 483 ; AUTOMATIC BALL SPEEDUP AFTER SUCCESSIVE HITS 484 ; EARLY QUIT ON REQUEST 485 ; LISTS RULES AT BEGINNING OF EACH GAME AND UPON REQUEST UNDERWAY 486 ; AFTER FINISHING, AUTOMATICALLY RESTARTS & ASKS IF ANOTHER GAME 487 ; BACKCOURT MOTION PENALTY (BALL GOING AWAY FROM YOU): 488 ; TOO MANY BACKCOURT MOVES AND 489 ; ALL BACKCOURT MOVES IGNORED 490 ; EVERY OTHER FORECOURT MOVE IGNORED 491 ; UNTIL NEXT HIT. 492 ; DOES CLEANUP ON EXIT 493 ; DEFAULT TIMEOUT EXIT (SELF-DESTRUCTS IF UNATTENDED) 494 ; WORKS FINE WITH MULTIPLE TERMINALS (AUTO-SPAWN) 495 ; USES VT GRAPHIC BAR CHARACTERS 496 ; 10 BAR POSITIONS PER VERTICAL CHARACTER SPACE 497 ; TOP 8 PRINT, BOTTOM 2 ARE BLANK 498 ; 499 ; TAILORING 500 ; MAC V=V 501 ; SET /UIC=[1,54] 502 ; LOUD BEEPS VERSION (ASSUMES TT0: IS LA36) 503 ; TKB V.TSK, PRI=225, ASG=TT0:6 504 ; 505 ; QUIET BEEPS VERSION (BEEPS TO VT) 506 ; TKB VQ.TSK, PRI=225, ASG=TI:6 507 ; 508 ; USAGE 509 ; RUN $V FOR LOUD VERSION 510 ; 511 ; RUN $VQ FOR QUIET VERSION 512 ; 513 ; RULES HARDCOPY: RUN FROM LA36, HIT E TO EXIT BEFORE GAME 514 ;- V MACRO D10 07-JUN-77 09:41 PAGE 3 INITIALIZE 516 .SBTTL INITIALIZE 517 ; 518 004452 INIT: DIR$ #ATT5 ;ATTACH VT W UNSOL INP AST 519 ; 520 ; FIND OUT UNIT# LUN 6 & SET BEEP WAIT FLG 521 ; 522 004460 DIR$ #GETLU6 ;GET INFO LUN 6 (BEEP DEV) 523 004466 126727 173754 000000 CMPB LUNBUF+G.LUNU,#0 ;IS IT LA36 (TT0:)? 524 004474 001004 BNE BEGIN 525 004476 005267 174662 INC NOBEWA ;YES: SET 'NO BEEP WAIT' FLG 526 ; 527 004502 005067 174704 BEGINN: CLR INTREL ;GAME START: BE SURE INTRO RELIST FLG CL 528 ; 529 004506 112767 000105 173722 BEGIN: MOVB #'E,INBUF ;SELF-DESTRUCT UNLESS KEPT ALIVE 530 004514 005267 173740 INC PADLOK ;IGNORE KB PADDLE MOVES 531 004520 012705 003260' MOV #INTRO,R5 532 004524 012767 000000G 173310 MOV #IO.WLB,VTW+Q.IOFN ;LET RULES LIST GO TO LA36 IF RQSTD 533 004532 004767 002576 JSR PC,WRT ;WRITE INTRODUCTION PAGE 534 004536 DIR$ #INTQIO ;LOOK FOR 1 CHAR 535 004544 DIR$ #INTRMR ;LOOK FOR TIMEOUT 536 004552 DIR$ #INTRWT ;ACT UPON EITHER 537 004560 142767 000240 173650 BICB #240,INBUF ;LOP OFF PARITY AND LOWERCASE BITS 538 004566 126727 173644 000105 CMPB INBUF,#'E 539 004574 001002 BNE DWCORT 540 004576 000167 001206 JMP DONE 541 004602 012705 001514' DWCORT: MOV #DCOURT,R5 ; 542 004606 012767 000000G 173226 MOV #IO.WAL,VTW+Q.IOFN ;WRT ALL BITS TO VT52 TO PLAY 543 004614 004767 002514 JSR PC,WRT ;DRAW COURT, SET GRAPHICS MODE 544 004620 012705 000616' MOV #PBUFLB,R5 545 004624 004767 002504 JSR PC,WRT ;DRAW LEFT PADDLE, 546 004630 012705 001052' MOV #PBUFRB,R5 547 004634 004767 002474 JSR PC,WRT ; & RIGHT. 548 ; 549 004640 005767 174546 TST INTREL ;WAS INTRO RELIST REQUESTED? 550 004644 001404 BEQ BALLIN ;BIF NO: GAME START 551 004646 005067 174540 CLR INTREL ;YES: CLR RQST, 552 004652 000167 000270 JMP SERVE ;& SERVE 553 ; 554 004656 016767 174446 174426 BALLIN: MOV MIDX,X ;BALL MIDDLE HORIZ, 555 004664 016767 174432 174422 MOV MIDY,Y ;& VERT 556 004672 005067 174510 CLR LS ;CLR SCORE L, 557 004676 005067 174506 CLR RS ;& R 558 004702 016767 173572 173702 MOV PADZI,PADLZ ;INIT PENLTY CREDIT BACKCOURT MOTION 559 004710 016767 173564 174130 MOV PADZI,PADRZ 560 ; 561 ; 562 .SBTTL BLOCK SCORES DISPLAY 563 ; 564 ; 565 004716 126767 174402 174366 SCORE: CMPB L,X ;BALL AT LEFT HORIZ.? 566 004724 001002 BNE 10$ 567 004726 005267 174456 INC RS ;YES: INCR RT SCORE 568 004732 126767 174370 174352 10$: CMPB R,X ;BALL AT RT HORIZ.? 569 004740 001002 BNE DWBLOK 570 004742 005267 174440 INC LS ;YES: INCR LEFT SCORE 571 ; 572 ; DRAW BLOCK DIGITS V MACRO D10 07-JUN-77 09:41 PAGE 3-1 BLOCK SCORES DISPLAY 573 ; 574 004746 012705 001771' DWBLOK: MOV #SCORRC,R5 ;ADR CURS FOR SCOR 575 004752 005267 173502 INC PADLOK ;IGNORE KB MOMENTARILY 576 004756 005267 173506 INC SCORNW ;SHOW SCORE STATE NOW 577 004762 004767 002346 JSR PC,WRT 578 ; 579 ; CVT LEFT SCORE TO BLOCK DIGITS 580 ; 581 004766 016704 174414 MOV LS,R4 ;GET L SCORE 582 004772 072427 000002 ASH #2,R4 ;QUAD IT FOR BYTE OFFSET IN 2-AD TBL 583 004776 062704 001414' ADD #SCORAD,R4 ;ADD SCOR ADR TBL BIAS 584 005002 012405 MOV (R4)+,R5 ;MOV FIRST DIGIT ADR TO WKG REG 585 005004 004767 002324 JSR PC,WRT ;& WRT IT 586 005010 011405 MOV (R4),R5 ;MOV 2ND DIGIT ADR TO WKG REG 587 005012 004767 002316 JSR PC,WRT ;& WRT IT 588 005016 012705 001776' MOV #SCORSP,R5 ;SPACE OVER TO WRT RT SCOR 589 005022 004767 002306 JSR PC,WRT 590 ; 591 ; CVT RT SCOR TO BLOCK DIGITS 592 ; 593 005026 016704 174356 MOV RS,R4 ;GET R SCORE 594 005032 072427 000002 ASH #2,R4 ;QUAD IT FOR BYTE OFFSET IN 2-AD TBL 595 005036 062704 001414' ADD #SCORAD,R4 ;ADD SCORE ADR TBL BIAS 596 005042 012405 MOV (R4)+,R5 ;MOV FIRST DIGIT ADR TO WKG REG 597 005044 004767 002264 JSR PC,WRT ;& WRT IT 598 005050 011405 MOV (R4),R5 ;MOV 2ND DIGIT ADR TO WKG REG 599 005052 004767 002256 JSR PC,WRT ;& WRT IT 600 005056 005067 173376 CLR PADLOK ;RESTORE KB: SCORES DRAWN 601 005062 DIR$ #SCORMR ;POST-SCORING MARKTIME 602 005070 WTBLOK: DIR$ #SCORWT ;POST-SCORING WAIT 603 ; 604 ; CHECK IF GAME OVER 605 ; 606 005076 026727 174304 000017 CMP LS,#15. ;LEFT SCORE 15., 607 005104 001416 BEQ 20$ 608 005106 026727 174276 000017 CMP RS,#15. ;OR RT SCORE 15.? 609 005114 001412 BEQ 20$ ;IF SO, THIS GAME OVER 610 005116 005767 173350 TST QUIT ;OR DID PLAYER ASK TO QUIT EARLY? 611 005122 001402 BEQ 15$ ;BIF NO 612 005124 000167 000660 10$: JMP DONE ;IF YES, DONE 613 ; 614 005130 005767 174256 15$: TST INTREL ;WAS INTRO RELIST REQUESTED? 615 005134 001404 BEQ SERVE ;BIF NO: SERVE 616 005136 000167 177344 JMP BEGIN ;ELSE DO IT, THEN SERVE 617 ; 618 ; IF THIS GAME RAN TO COMPLETION, ASK IF ANOTHER: 619 ; 620 005142 000167 177334 20$: JMP BEGINN 621 ; 622 ; 623 .SBTTL SERVE 624 ; 625 005146 016767 174156 174136 SERVE: MOV MIDX,X ;SET HORIZ MIDCOURT 626 005154 016767 174162 174162 MOV SPDCNI,SPDCNT ;SET MAX HITS BEFORE SPEEDUP 627 005162 016767 174150 172736 MOV SPEEDS,SPEED ;SET INIT SPD (MAX WAIT TIME) 628 005170 012705 000002 MOV #2,R5 ;2 BEEPS OUTPUT 629 005174 004767 002066 JSR PC,BEEP V MACRO D10 07-JUN-77 09:41 PAGE 3-2 SERVE 630 005200 012705 001514' SERVER: MOV #DCOURT,R5 ;REDRAW COURT (ERASES SCORES) 631 005204 005267 173250 INC PADLOK ;IGNORE KB MOMENTARILY 632 005210 004767 002120 JSR PC,WRT 633 ; 634 ; SEE IF BOTH PADDLES HV BEEN IN SIMULTANEOUS AUTO TOO LONG: 635 ; 636 005214 126767 173511 173270 AUTLIM: CMPB PADLC,BYTBLA ;LEFT AUT, 637 005222 001020 BNE REPADL 638 005224 126767 173735 173272 CMPB PADRC,BYTBRA ;& RT AUT, 639 005232 001014 BNE REPADL 640 005234 005267 173234 INC AUTLR 641 005240 026767 173230 173230 CMP AUTLR,AUTLRM ;FOR MORE THAN MAX # TIMES? 642 005246 003406 BLE REPADL 643 005250 105067 173455 CLRB PADLC ;IF SO, SHUT OFF LEFT AUT 644 005254 105067 173705 CLRB PADRC ;& RT AUT 645 005260 005067 173210 CLR AUTLR ;& RESET COUNT 646 005264 012705 000616' REPADL: MOV #PBUFLB,R5 ;ALSO REDRAW LEFT PADDLE, 647 005270 126767 173435 173214 CMPB PADLC,BYTBLA ;LEFT AUT? 648 005276 001002 BNE 10$ 649 005300 012705 000732' MOV #PBUFLA,R5 ;IF SO, WRT LEFT PAD WALL 650 005304 004767 002024 10$: JSR PC,WRT 651 005310 012705 001052' MOV #PBUFRB,R5 ;& RT 652 005314 126767 173645 173202 CMPB PADRC,BYTBRA ;RT AUT? 653 005322 001002 BNE 20$ 654 005324 012705 001166' MOV #PBUFRA,R5 ;IF SO, WRT RT PAD WALL 655 005330 004767 002000 20$: JSR PC,WRT 656 005334 005067 173120 CLR PADLOK ;RESTORE KB 657 005340 005067 173124 CLR SCORNW ;TURN OFF 'SCORING NOW' STATE 658 005344 DIR$ #SETEFB ;INITIALLY SIGNIFY BALL MOVED O.K. 659 ; 660 ; 661 .SBTTL NEXT BALL POS & TIMG 662 ; 663 005352 SLEEP: DIR$ #BALLMR ;BALL MARKTIME 664 005360 DIR$ #BALLMW ;BALL MARKTIME WAIT 665 005366 DIR$ #BALLWT ;BE SURE BALL MOVE HAS COMPLETED 666 005374 066767 173746 173710 BALL: ADD XINCR,X ;ADVANCE X (ALWAYS 1 CHR) 667 005402 066767 173742 173744 ADD YINCR,YFINE ;ADVANCE Y 668 005410 026767 173740 173740 CMP YFINE,YFINEL ;STILL WITHIN SAME CHR POS? 669 005416 003406 BLE 5$ 670 005420 166767 173732 173726 SUB YFINEL,YFINE ;NO, FURTHER DOWN 671 005426 005267 173662 INC Y 672 005432 000410 BR XBND 673 005434 005767 173714 5$: TST YFINE 674 005440 003005 BGT XBND ;YES 675 005442 066767 173710 173704 ADD YFINEL,YFINE ;NO, FURTHER UP 676 005450 005367 173640 DEC Y 677 ; 678 ; TEST IF BALL AT X BNDRY: 679 ; 680 005454 026767 173644 173630 XBND: CMP L,X ;X AT LEFT? 681 005462 001007 BNE XBND2 ;BIF NO 682 ; 683 ; X AT LEFT BOUNDARY: 684 ; 685 005464 126767 173241 173020 XBNDL: CMPB PADLC,BYTBLA ;LEFT AUT (WALL)? 686 005472 001464 BEQ SWAT ;BIF YES: ALWAYS SWAT V MACRO D10 07-JUN-77 09:41 PAGE 3-3 NEXT BALL POS & TIMG 687 005474 016700 173114 MOV PADLY,R0 ;ELSE MOVE PADDLE Y TO R0, 688 005500 000412 BR BNDX ;& USE COMMON BOUNDARY CODE 689 ; 690 005502 026767 173620 173602 XBND2: CMP R,X ;X AT RIGHT? 691 005510 001104 BNE YBND ;BIF NO: CHECK Y BOUNDARIES 692 ; 693 ; X AT RIGHT BOUNDARY: 694 ; 695 005512 126767 173447 173004 XBNDR: CMPB PADRC,BYTBRA ;RIGHT AUT (WALL)? 696 005520 001451 BEQ SWAT ;BIF YES: ALWAYS SWAT 697 005522 016700 173322 MOV PADRY,R0 ;ELSE MOVE PADDLE Y TO R0 698 ; 699 ; COMMON (X-AT-BOUNDARY, PADDLE-MATCH-BALL?) CODE: 700 ; 701 005526 020067 173562 BNDX: CMP R0,Y ;EXACT MATCH? 702 005532 001444 BEQ SWAT ;BIF YES: HIT 703 ; 704 ; ADD'L BOUNDARY TESTS FOR SOFT PADDLE EDGES & FULL SIZE PADDLES: 705 ; 706 ; TEST FOR TOP SOFT PADDLE EDGE: 707 ; 708 005534 005300 BNDTSP: DEC R0 ;SET PSEUDO PADDLE Y ONE HIGHER THAN ACT 709 005536 020067 173552 CMP R0,Y ;NOW DOES IT MATCH BALL? 710 005542 001005 BNE BNDBSP ;BIF NO 711 ; 712 ; BALL Y ONE HIGHER THAN PAD Y: CHECK YFINE FOR SOFT LIMIT: 713 ; 714 005544 026767 173604 173606 CMP YFINE,YSOFLT ;IS BALL CLOSE ENOUGH TO PADDLE TOP? 715 005552 002034 BGE SWAT ;BIF YES, 716 005554 000421 BR GONE ;ELSE MISSED 717 ; 718 ; TEST FOR BOTTOM SOFT PADDLE EDGE (OR FULL PADDLE 2ND HALF): 719 ; 720 005556 062700 000002 BNDBSP: ADD #2,R0 ;SET PSEUDO PADDLE Y ONE LOWER THAN ACT 721 005562 005767 172674 TST PADHAF ;HALF PADDLES BEING USED? 722 005566 001004 BNE BNDBS2 ;BIF YES 723 ; 724 ; FULL PADDLE BEING USED: R0 NOW PTS TO 2ND HALF OF IT: 725 ; 726 005570 020067 173520 BNDFUL: CMP R0,Y ;PADDLE BOT HALF MATCH BALL? 727 005574 001423 BEQ SWAT ;BIF YES, 728 005576 005200 INC R0 ;ELSE SET PSEUDO PADDLE Y ONE LOWER THAN 729 ; 730 ; FULL OR HALF: BOTTOM SOFT PADDLE EDGE: 731 ; 732 ; PSEUDO PADDLE Y NOW ONE LOWER THAN ACTUAL: 733 ; 734 005600 020067 173510 BNDBS2: CMP R0,Y ;NOW DOES IT MATCH BALL? 735 005604 001005 BNE GONE ;BIF NO 736 ; 737 ; BALL Y ONE LOWER THAN PAD Y: CHECK YFINE FOR SOFT LIMIT: 738 ; 739 005606 026767 173542 173546 CMP YFINE,YSOFLB ;IS BALL CLOSE ENOUGH TO PADDLE BOT? 740 005614 003413 BLE SWAT ;BIF YES, 741 005616 000400 BR GONE ;ELSE MISSED 742 ; 743 ; MISSED V MACRO D10 07-JUN-77 09:41 PAGE 3-4 NEXT BALL POS & TIMG 744 ; 745 005620 005267 172634 GONE: INC PADLOK ;PREVENT FURTHER PADDLE MOTION 746 005624 004767 001556 JSR PC,SAILER ;CALC & WRT LAST BALL 747 005630 012705 000003 MOV #3,R5 ;3 BEEPS OUT 748 005634 004767 001426 JSR PC,BEEP 749 005640 000167 177052 JMP SCORE 750 ; 751 ; HIT 752 ; 753 005644 005467 173476 SWAT: NEG XINCR ;REVERSE HORIZ SENSE 754 005650 004767 001274 JSR PC,SPDCHG ;SEE IF SPEEDUP 755 005654 004767 001342 YCHG: JSR PC,YINCRM ;MODIFY YINCR 756 ; 757 ; RESET SUCCESSFUL SWATTER'S BACKCOURT PENALTY COUNT: 758 ; 759 005660 026767 173442 173424 CMP R,X ;ARE WE AT RT? 760 005666 001404 BEQ PADRZI ;BIF YES 761 005670 016767 172604 172714 PADLZI: MOV PADZI,PADLZ ;RESET LEFT PENALTY COUNT 762 005676 000403 BR BEEP1 763 005700 016767 172574 173140 PADRZI: MOV PADZI,PADRZ ;RESET RIGHT PENALTY COUNT 764 ; 765 005706 012705 000001 BEEP1: MOV #1,R5 ;1 BEEP OUT 766 005712 004767 001350 JSR PC,BEEP 767 005716 000167 177256 JMP SERVER ;ERASE PREV PATH 768 ; 769 ; BALL NOT AT X BNDRY: CK Y BNDRYS 770 ; 771 005722 YBND: 772 005722 026767 173366 173366 YBNDT: CMP Y,T ;TOP? 773 005730 001004 BNE YBNDB 774 005732 005767 173412 TST YINCR ;YES: GOING DOWN ALREADY? 775 005736 100020 BPL SAIL ;YES: LEAVE ALONE 776 005740 000407 BR SIDE ;NO: REVERSE (BOUNCE) 777 ; 778 005742 026767 173346 173350 YBNDB: CMP Y,B ;BOT? 779 005750 001013 BNE SAIL ;NO, NEITHER BNDRY: SAIL 780 005752 005767 173372 TST YINCR ;YES: GOING UP ALREADY? 781 005756 100410 BMI SAIL ;YES: LEAVE ALONE 782 ; 783 ; BALL AT TOP OR BOT & GOING THRU: REVERSE (BOUNCE) 784 ; 785 005760 005467 173364 SIDE: NEG YINCR ;REVERSE VERT SENSE 786 005764 012705 000001 MOV #1,R5 ;1 BEEP OUT 787 005770 004767 001272 JSR PC,BEEP 788 005774 000167 177352 JMP SLEEP ;WAIT FOR NEXT BALL JUMP 789 ; 790 ; BALL IN FREE SPACE: SAIL 791 ; 792 006000 004767 001402 SAIL: JSR PC,SAILER ;CALC & WRT NEXT BALL 793 006004 000167 177342 JMP SLEEP ;WAIT FOR NEXT BALL JUMP 794 ; 795 ; 796 .SBTTL GAME OVER: CLEANUP 797 ; 798 ; 799 006010 DONE: DSAR$S ;DISABLE PADDLES (KB LISTENS & PAD OUTS) 800 006016 DIR$ #KIL5 ;CANCEL OTHER I/O V MACRO D10 07-JUN-77 09:41 PAGE 3-5 GAME OVER: CLEANUP 801 006024 DIR$ #KILWT ;WAIT TIL DONE 802 006032 DIR$ #ERASE ;ERASE SCREEN 803 006040 DIR$ #KILWT ;WAIT TILL DONE 804 006046 DIR$ #DET5 ;DETACH VT 805 006054 EXIT$S 806 ; 807 ; 808 .SBTTL PADDLE MOVEMENT AST 809 ; 810 ; 811 006062 111667 172456 PAD: MOVB (SP),BYTBS ;MOVE INP BYTE TO TBL STOPPER 812 006066 010046 MOV R0,-(SP) 813 006070 010146 MOV R1,-(SP) 814 006072 010246 MOV R2,-(SP) 815 006074 010346 MOV R3,-(SP) 816 ; 817 ; DON'T PUT OUT QIO'S IF THEY'D MESS UP NON-AST CURSOR ADDR 818 ; (SCORE OR DRAW COURT/PADDLES IN PROGRESS) 819 ; 820 006076 005767 172356 TST PADLOK 821 006102 001402 BEQ PADACT 822 006104 000167 000644 JMP PADDON 823 ; 824 ; ACT ON PADDLE MOV CMD: 825 ; 826 006110 142767 000240 172426 PADACT: BICB #240,BYTBS ;LOP OFF PARITY AND LOWERCASE BITS 827 006116 005000 CLR R0 ;& INIT SWEEP OFFSET 828 006120 126760 172420 000502' PADCMP: CMPB BYTBS,BYTBL(R0) ;SEARCH BYTE TBL 829 006126 001402 BEQ PADJMP ;MUST FIND MATCH (MAYBE STOPPER) 830 006130 005720 TST (R0)+ 831 006132 000772 BR PADCMP 832 006134 000170 000546' PADJMP: JMP @ADTBL(R0) ;JMP TO CORRESP ADR IN ADTBL 833 ; 834 ; PROC COMMON TO EITHER PADDLE: 835 ; 836 006140 016767 173170 173172 RAPID: MOV FAST,SPEEDI ;MOVE SHORT WAIT CNT TO INIT SPEED, 837 006146 016767 173162 171752 MOV FAST,SPEED ; & TO CURRENT SPEED 838 006154 000167 000574 JMP PADDON 839 ; 840 006160 016767 173146 173152 NORMAL: MOV SLOW,SPEEDI ;MOVE LONG WAIT CNT TO INIT SPEED, 841 006166 016767 173140 171732 MOV SLOW,SPEED ; & TO CURRENT SPEED 842 006174 000167 000554 JMP PADDON 843 ; 844 006200 005267 172266 QIT: INC QUIT ;TURN ON EARLY QUIT FLG FOR NEXT SCORE 845 006204 000167 000544 JMP PADDON 846 ; 847 006210 005267 172246 HAFPAD: INC PADHAF ;SET HALF-PADDLE FLAG 848 006214 012702 000040 MOV #40,R2 ;PREP TO MAKE 2ND HALF FULL PAD BLANK 849 006220 000404 BR CHGPAD 850 ; 851 006222 005067 172234 FULPAD: CLR PADHAF ;CLR HALF-PADDLE FLG 852 006226 012702 000141 MOV #141,R2 ;PREP TO MAKE 2ND HALF FUL PD SOLID RECT 853 ; 854 ; COMMON CODE FOR CHANGING PADDLE SIZE: 855 ; 856 006232 005267 172226 CHGPAD: INC PADSZC ;SET 'PADDLE SIZE BEING CHANGED' FLG 857 ; V MACRO D10 07-JUN-77 09:41 PAGE 3-6 PADDLE MOVEMENT AST 858 ; LEFT PADDLE SIZE CHG: 859 ; 860 006236 010246 CHGPAL: MOV R2,-(SP) ;SAV R2 FROM HAFPAD OR FULPAD 861 006240 012701 000614' MOV #PADLY,R1 ;LEFT PADDLE Y TO R1 862 006244 116767 172274 172457 MOVB BYTBS,PADLC ;SAVE THIS CMD AS LAST GIVEN TO L PAD 863 006252 004767 000602 JSR PC,PADM2 ;MOVE CHR INTO 2ND HALF OF PADDLE 864 006256 062701 000002 ADD #2,R1 ;GET BFR ADR PBUFLB, 865 006262 010167 171630 MOV R1,PADQIO+Q.IOPL ;& PUT INTO DPB 866 006266 DIR$ #PADQIO ;WRT NEW L PADDLE 867 ; 868 ; RIGHT PADDLE SIZE CHANGE: 869 ; 870 006274 012602 CHGPAR: MOV (SP)+,R2 ;RESTORE R2 FROM HAFPAD OR FULPAD 871 006276 012701 001050' MOV #PADRY,R1 ;RT PADDLE Y TO R1 872 006302 116767 172236 172655 MOVB BYTBS,PADRC ;SAVE THIS CMD AS LAST GIVEN TO RT PAD 873 006310 004767 000544 JSR PC,PADM2 ;MOVE CHR INTO 2ND HALF OF PADDLE 874 006314 062701 000002 ADD #2,R1 ;GET BFR ADR PBUFRB, 875 006320 010167 171572 MOV R1,PADQIO+Q.IOPL ;& PUT INTO DPB 876 006324 DIR$ #PADQIO ;WRT NEW RT PADDLE 877 ; 878 006332 005067 172126 CLR PADSZC ;CLR 'PADDLE SIZE BEING CHANGED' FLG 879 006336 000167 000412 JMP PADDON 880 ; 881 006342 005267 173044 INTRE: INC INTREL ;SET FLG TO CALL FOR INTRO RELIST 882 ; AFTER NEXT SCORE 883 006346 000167 000402 JMP PADDON 884 006352 000167 000376 ODT: JMP PADDON ;ODT BREAKPOINT HOOK 885 ; 886 ; LEFT PADDLE PROC: 887 ; 888 006356 116767 172162 172345 LPA: MOVB BYTBS,PADLC ;SAVE LAST CMD 889 006364 012701 000732' MOV #PBUFLA,R1 ;LEFT PAD WALL ADR TO R1 890 006370 000167 000346 JMP PADWRT ;GO WRT IT OUT 891 006374 016700 172704 LUS: MOV PSAU,R0 ;SML AMT UP 892 006400 000410 BR LP 893 006402 016700 172674 LDS: MOV PSAD,R0 ;SML AMT DN 894 006406 000405 BR LP 895 006410 016700 172674 LUL: MOV PLAU,R0 ;LGE AMT UP 896 006414 000402 BR LP 897 006416 016700 172664 LDL: MOV PLAD,R0 ;LGE AMT DN 898 006422 012701 000614' LP: MOV #PADLY,R1 899 006426 116767 172112 172275 MOVB BYTBS,PADLC ;SAVE LAST CMD 900 ; 901 ; FORGET ABOUT PENALTIES DURING SCORE STATE: 902 ; 903 006434 005767 172030 CSLF: TST SCORNW ;SCORE STATE NOW? 904 006440 001402 BEQ CSL ;BIF NO 905 006442 000167 000210 JMP PADMOV ;YES: ALL MOVES ALLOWED 906 ; 907 ; PENALIZE IDLE LEFT PLAYER FOR EXCESSIVE BACKCOURT MOVES: 908 ; 909 006446 005767 172674 CSL: TST XINCR ;WHICH WAY IS BALL GOING? 910 006452 100406 BMI CSLT ;BIF TOWARD L 911 ; 912 ; BALL GOING AWAY FROM L: PENALIZE 913 ; 914 006454 162767 000004 172130 CSLA: SUB #4,PADLZ ;KNOCK OFF 4 PER MOVE V MACRO D10 07-JUN-77 09:41 PAGE 3-7 PADDLE MOVEMENT AST 915 006462 003075 BGT PADMOV ;IF BELOW ALLOTMENT, DO IT 916 006464 000167 000264 JMP PADDON ;ELSE IGNORE 917 ; 918 ; BALL GOING TOWARD L: WORK OFF ANY BACKCOURT MOTION PENALTY 2 @ TIME: 919 ; 920 006470 005767 172116 CSLT: TST PADLZ ;IS THERE A PENALTY FROM HISTORY? 921 006474 003070 BGT PADMOV ;BIF NO 922 006476 005267 172110 INC PADLZ ;YES: PAY BACK ONLY 1 PER MOVE, 923 006502 032767 000001 172102 BIT #1,PADLZ 924 006510 001462 BEQ PADMOV ; DO IT IF EVEN, 925 006512 000167 000236 JMP PADDON ; & IGNORE IF ODD 926 ; 927 ; RT PADDLE PROC: 928 ; 929 006516 116767 172022 172441 RPA: MOVB BYTBS,PADRC ;SAVE LAST CMD 930 006524 012701 001166' MOV #PBUFRA,R1 ;RT PAD WALL ADR TO R1 931 006530 000167 000206 JMP PADWRT ;GO WRT IT OUT 932 006534 016700 172544 RUS: MOV PSAU,R0 ;SML AMT UP 933 006540 000410 BR RP 934 006542 016700 172534 RDS: MOV PSAD,R0 ;SML AMT DN 935 006546 000405 BR RP 936 006550 016700 172534 RUL: MOV PLAU,R0 ;LGE AMT UP 937 006554 000402 BR RP 938 006556 016700 172524 RDL: MOV PLAD,R0 ;LGE AMT DN 939 006562 012701 001050' RP: MOV #PADRY,R1 940 006566 116767 171752 172371 MOVB BYTBS,PADRC ;SAVE LAST CMD 941 ; 942 ; FORGET ABOUT PENALTIES DURING SCORE STATE: 943 ; 944 006574 005767 171670 CSRF: TST SCORNW ;SCORE STATE NOW? 945 006600 001402 BEQ CSR ;BIF NO 946 006602 000167 000050 JMP PADMOV ;YES: ALL MOVES ALLOWED 947 ; 948 ; PENALIZE IDLE RIGHT PLAYER FOR EXCESSIVE BACKCOURT MOVES: 949 ; 950 006606 005767 172534 CSR: TST XINCR ;WHICH WAY IS BALL GOING? 951 006612 100006 BPL CSRT ;BIF TOWARD R 952 ; 953 ; BALL GOING AWAY FROM R: PENALIZE 954 ; 955 006614 162767 000002 172224 CSRA: SUB #2,PADRZ ;KNOCK OFF 2 PER MOVE 956 006622 003015 BGT PADMOV ;IF BELOW ALLOTMENT, DO IT 957 006624 000167 000124 JMP PADDON ;ELSE IGNORE 958 ; 959 ; BALL GOING TOWARD R: WORK OFF ANY BACKCOURT MOTION PENALTY 2 @ TIME: 960 ; 961 006630 005767 172212 CSRT: TST PADRZ ;IS THERE A PENALTY FROM HISTORY? 962 006634 003010 BGT PADMOV ;BIF NO 963 006636 005267 172204 INC PADRZ ;YES: PAY BACK ONLY 1 PER MOVE, 964 006642 032767 000001 172176 BIT #1,PADRZ 965 006650 001402 BEQ PADMOV ; DO IT IF EVEN, 966 006652 000167 000076 JMP PADDON ; & IGNORE IF ODD 967 ; 968 ; PREP TO MOVE PADDLE: 969 ; 970 006656 112702 000040 PADMOV: MOVB #40,R2 ;FIRST WRT BLANK 971 006662 004767 000106 JSR PC,PADM ;IN OLD PADDLE LOC TO ERASE V MACRO D10 07-JUN-77 09:41 PAGE 3-8 PADDLE MOVEMENT AST 972 006666 112702 000141 MOVB #141,R2 ;NOW SOLID RECT IS NEW PAD CHR 973 006672 011103 MOV (R1),R3 ;PADDLE Y 974 006674 060003 10$: ADD R0,R3 ;FIGURE NEW TENTATIVE PADDLE Y 975 006676 010311 MOV R3,(R1) ;& STORE 976 006700 005703 TST R3 ;HIGHER THAN (TOP-1)? 977 006702 002003 BGE 15$ 978 006704 012711 177777 MOV #-1,(R1) ;YES: STORE TOP-2 & SHOW X 979 006710 000410 BR 20$ 980 006712 020367 172402 15$: CMP R3,B ;LOWER THAN BOT? 981 006716 003405 BLE 20$ 982 006720 016711 172374 MOV B,(R1) ;YES: STORE BOT+1 & SHOW X 983 006724 005211 INC (R1) 984 006726 112702 000130 MOVB #'X,R2 985 006732 004767 000036 20$: JSR PC,PADM ;PUT NEW PADDLE CHR IN ARRAY 986 006736 062701 000002 ADD #2,R1 ;GET BFR ADR 987 006742 010167 171150 PADWRT: MOV R1,PADQIO+Q.IOPL ;& PUT INTO DPB 988 006746 DIR$ #PADQIO ;WRT NEW PADDLE 989 006754 012603 PADDON: MOV (SP)+,R3 ;RESTORE R0-R3 FM STACK 990 006756 012602 MOV (SP)+,R2 991 006760 012601 MOV (SP)+,R1 992 006762 012600 MOV (SP)+,R0 993 006764 005726 TST (SP)+ ;POP INPUT CHR WD 994 006766 ASTX$S ;AST EXIT 995 ; 996 ; 997 .SBTTL SUBROUTINES 998 ; 999 ; 1000 ; PADDLE ERASE/MOVE IN NEW 1001 ; 1002 006774 011103 PADM: MOV (R1),R3 ;YVAL 1003 ; 1004 ; DON'T WRITE OUTSIDE ARRAY 1005 ; 1006 006776 003010 BGT 5$ 1007 007000 012703 000001 MOV #1,R3 ;IF .LE. 0, MAKE T 1008 007004 020227 000141 CMP R2,#141 ;WAS PAD CHR ASKED? 1009 007010 001007 BNE PADM1 1010 007012 112702 000130 MOVB #'X,R2 ;IF SO, REPL WITH X 1011 007016 000404 BR PADM1 1012 007020 020367 172274 5$: CMP R3,B 1013 007024 003401 BLE PADM1 1014 007026 005303 DEC R3 ;IF B+1,MAKE B 1015 ; 1016 ; WITHIN ARRAY: CALC BYTE ADR & MOVE IT IN 1017 ; 1018 007030 070327 000003 PADM1: MUL #3,R3 ;*3 1019 007034 062703 000003 ADD #3,R3 ;+ OFFSET TO SKIP OVER CURS ADR 1020 007040 060103 ADD R1,R3 ;+ PADDLE DB BEGIN=PADDLE CHR ADR 1021 007042 110213 MOVB R2,(R3) ;MOVE BYTE TO ADR 1022 ; 1023 ; SEE IF FULL PADDLE BEING USED: 1024 ; 1025 007044 005767 171412 TST PADHAF ;HALF PADDLES ONLY? 1026 007050 001036 BNE PADM5 ;BIF YES: RETURN 1027 ; 1028 ; FULL PADDLES: V MACRO D10 07-JUN-77 09:41 PAGE 3-9 SUBROUTINES 1029 ; 1030 007052 005767 171410 15$: TST BOTH ;BOTH HALVES DONE? 1031 007056 001031 BNE PADM4 ;BIF YES 1032 007060 005267 171402 PADM2: INC BOTH ;ELSE SET FLG SHOWING 2ND HALF 1033 007064 011103 MOV (R1),R3 ;RESTORE ORIG Y 1034 007066 002425 BLT PADM4 ;BIF IT WOULD MAKE 2ND HALF ALSO HIGHER 1035 ; THAN TOP 1036 007070 003017 BGT 35$ ;BIF IT WAS TOP OR LOWER 1037 ; 1038 ; *** BEGINNING OF SPECIAL CASE: 1039 ; PREV WAS (TOP-1), SECOND HALF WILL BE (TOP) 1040 ; 1041 007072 005767 171366 25$: TST PADSZC ;IS THIS A PADDLE SIZE CHG 2ND HALF 1042 ; RE-DO? 1043 007076 001006 BNE 30$ ;BIF YES 1044 007100 020227 000040 CMP R2,#40 ;WAS NEW PAD CHR BLANK? 1045 007104 001414 BEQ 40$ ;BIF YES: LEAVE AS IS 1046 007106 012702 000141 MOV #141,R2 ;ELSE BE SURE 'X IS REPL W SOLID RECT 1047 007112 000411 BR 40$ 1048 ; 1049 ; PADDLE SIZE CHG 2ND HALF RE-DO: 1050 ; 1051 007114 020227 000040 30$: CMP R2,#40 ;WAS NEW PAD CHR BLANK? 1052 007120 001006 BNE 40$ ;BIF NO: LEAVE SOLID RECT ALONE 1053 007122 112702 000130 MOVB #'X,R2 ;ELSE BE SURE BLANK IS REPL W 'X 1054 007126 000403 BR 40$ 1055 ; 1056 ; *** END OF SPECIAL CASE 1057 ; 1058 007130 020367 172164 35$: CMP R3,B ;WAS ORIG Y AT BOTTOM OR BELOW? 1059 007134 002002 BGE PADM4 ;BIF YES: 2ND HALF LOWER THAN BOTTOM 1060 007136 005203 40$: INC R3 ;2ND HALF Y = (ORIG Y) +1 1061 007140 000733 BR PADM1 ;GO DO IT 1062 ; 1063 ; FULL PADDLES: RESET 'BOTH HALVES' FLG 1064 ; 1065 007142 005067 171320 PADM4: CLR BOTH 1066 ; 1067 ; FULL OR HALF PADDLES: DONE 1068 ; 1069 007146 000207 PADM5: RTS PC 1070 ; 1071 ; SEE IF SPEEDUP 1072 ; 1073 007150 026767 170752 172160 SPDCHG: CMP SPEED,SPEEDS ;FIRST HIT AFTER SERVE? 1074 007156 001004 BNE SPDC ;BIF NO, ELSE 1075 007160 016767 172154 170740 MOV SPEEDI,SPEED ;SET INITIAL SPEED ('SLOW' OR 'FAST', 1076 ; BUT ALWAYS FASTER THAN SERVE SPEED), 1077 007166 000414 BR SPDRET ;& RETURN (SKIP NORMAL CALC.) 1078 ; 1079 007170 005367 172150 SPDC: DEC SPDCNT ;RUNNING HITS BEFORE SPEEDUP 1080 007174 001011 BNE SPDRET ;RETURN IF MORE TO GO 1081 007176 016767 172140 172140 MOV SPDCNI,SPDCNT ;RESTORE FOR NEXT TIME 1082 007204 026727 170716 000001 CMP SPEED,#1 ;ALREADY FASTEST? (SHORTEST WAIT=1 TICK) 1083 007212 001402 BEQ SPDRET 1084 007214 005367 170706 DEC SPEED ;NO: SPEED UP 1085 007220 000207 SPDRET: RTS PC V MACRO D10 07-JUN-77 09:41 PAGE 3-10 SUBROUTINES 1086 ; 1087 ; 1088 ; CHG YINCR ON BOUNCE: 1089 ; 1090 007222 016700 172122 YINCRM: MOV YINCR,R0 ;MOV CURR YINCR TO R0 1091 007226 005700 TST R0 ;NEG? 1092 007230 100001 BPL 5$ 1093 007232 005400 NEG R0 ;YES: GET ABS VAL 1094 007234 005200 5$: INC R0 ;BUMP 1095 007236 020067 172110 CMP R0,YINCRL ;ABOVE LIM? 1096 007242 003402 BLE 10$ ;NO, OK 1097 007244 012700 000001 MOV #1,R0 ;YES: RESET TO 1 1098 007250 005767 172074 10$: TST YINCR ;WAS PREV NEG? 1099 007254 100001 BPL 15$ 1100 007256 005400 NEG R0 ;YES: SO SHOULD NEW 1101 007260 010067 172064 15$: MOV R0,YINCR ;PUT NEW INTO OLD 1102 007264 000207 YINRET: RTS PC 1103 ; 1104 ; 1105 ; BEEP, OUTPUT BEEP CHARS 1106 ; 1107 ; 1108 ; FOR BEEPS TO VT, WAIT BETW SINGLE-BEEP QIO'S 1109 ; FOR BEEPS TO LA, SEND ONE MULTIPLE-BEEP QIO 1110 ; 1111 007266 005767 172072 BEEP: TST NOBEWA ;BEEP WAIT (VT)? 1112 007272 001413 BEQ BEEPS ;BIF YES 1113 007274 010567 170706 MOV R5,BEEPO+Q.IOPL+2 ;ELSE PUT COUNT INTO QIO, 1114 007300 012705 000001 MOV #1,R5 ;& MAKE SURE ONLY 1 QIO 1115 007304 000406 BR BEEPS 1116 007306 BEEPD: DIR$ #BEEPMR ;BEEP MARKTIME 1117 007314 DIR$ #BEEPWT ;BEEP WAIT 1118 007322 BEEPS: DIR$ #BEEPO ;OUTPUT BEEP(S) 1119 007330 077512 SOB R5,BEEPD ;MORE? 1120 007332 000207 RTS PC ;NO, DONE 1121 ; 1122 ; 1123 ; WRT, WRITE A BYTE STRING W NULL STOPPER 1124 ; R0 (USE) = OUT BFR ADR 1125 ; R5 (IN ) = INPUT STR ADR 1126 ; 1127 007334 012700 000326' WRT: MOV #BUF,R0 ;START OF OUT BUF 1128 007340 112520 10$: MOVB (R5)+,(R0)+ ;MOVE A BYTE OUT 1129 007342 105715 TSTB (R5) ;NEXT BYTE NULL? 1130 007344 001403 BEQ 20$ ;YES 1131 007346 020027 000436' CMP R0,#BUF+72. ;NO: BFR FULL? 1132 007352 001372 BNE 10$ ;NO 1133 007354 162700 000326' 20$: SUB #BUF,R0 ;PREP OUTPUT: BYTE CNT TO R0 1134 007360 010067 170472 MOV R0,VTW+Q.IOPL+2 ;THEN TO DPB 1135 007364 DIR$ #VTW ;OUTPUT THE BUFFER 1136 007372 DIR$ #VTWT ;& WT BEFORE MODIFYING BUF OR CNT 1137 007400 105715 TSTB (R5) ;DONE? 1138 007402 001354 BNE WRT ;NO 1139 007404 000207 WRTRET: RTS PC ;YES: RETURN 1140 ; 1141 ; 1142 ; SAILER, SAIL BALL IN FREE SPACE V MACRO D10 07-JUN-77 09:41 PAGE 3-11 SUBROUTINES 1143 ; 1144 007406 016700 171702 SAILER: MOV Y,R0 ;VERT POS 1145 007412 062700 000037 ADD #37,R0 ;+ CHR BIAS 1146 007416 110067 171746 MOVB R0,BALMOR ;TO ROW CURS ADR 1147 007422 016700 171664 MOV X,R0 ;HORIZ POS 1148 007426 062700 000037 ADD #37,R0 ;+ CHR BIAS 1149 007432 110067 171733 MOVB R0,BALMOC ;TO COL CURS ADR 1150 007436 016700 171712 MOV YFINE,R0 ;LINE WITHIN BAR CHR 1151 007442 116067 001373' 171722 MOVB BALCHR(R0),BALMOL ;TO BAR CHR (BALL) 1152 007450 DIR$ #BALLJP ;MOVE BALL PATH 1153 007456 000207 RTS PC ;RETURN 1154 ; 1155 ; 1156 007460 PATCH: .BLKW 50. 1157 004452' .END INIT V MACRO D10 07-JUN-77 09:41 PAGE 3-12 SYMBOL TABLE ADTBL 000546R CSLT 006470R IO.RAL= ****** GX PADSZC 000464R SIDE 005760R ATT5 000254R CSR 006606R IO.WAL= ****** GX PADWRT 006742R SLEEP 005352R AUTLIM 005214R CSRA 006614R IO.WLB= ****** GX PADZI 000500R SLOW 001332R AUTLR 000474R CSRF 006574R KILWT 000322R PATCH 007460R SPDC 007170R AUTLRM 000476R CSRT 006630R KIL5 000306R PBUFL 000622R SPDCHG 007150R B 001320R DCOURT 001514R L 001324R PBUFLA 000732R SPDCNI 001342R BALCHR 001373R DET5 000272R LDL 006416R PBUFLB 000616R SPDCNT 001344R BALL 005374R DIGN 002024R LDS 006402R PBUFR 001056R SPDRET 007220R BALLIN 004656R DIG0 002166R LP 006422R PBUFRA 001166R SPEED = 000126R BALLJP 000150R DIG1 002275R LPA 006356R PBUFRB 001052R SPEEDI 001340R BALLMR 000122R DIG2 002353R LS 001406R PLAD 001306R SPEEDS 001336R BALLMW 000134R DIG3 002443R LUL 006410R PLAU 001310R SWAT 005644R BALLWT 000144R DIG4 002536R LUNBUF 000444R PSAD 001302R S.ETEF= 000002 BALMOC 001371R DIG5 002617R LUS 006374R PSAU 001304R T 001316R BALMOL 001372R DIG6 002713R MIDX 001330R QIT 006200R TF.RNE= ****** GX BALMOR 001370R DIG7 002776R MIDY 001322R QUIT 000472R VTW 000040R BALMOV 001366R DIG8 003043R M.KTAE= 000010 Q.IOAE= 000012 VTWT 000060R BEEP 007266R DIG9 003152R M.KTEF= 000002 Q.IOEF= 000006 WRT 007334R BEEPC 000440R DONE 006010R M.KTMG= 000004 Q.IOFN= 000002 WRTRET 007404R BEEPD 007306R DWBLOK 004746R M.KTUN= 000006 Q.IOLU= 000004 WTBLOK 005070R BEEPMR 000214R DWCORT 004602R NOBEWA 001364R Q.IOPL= 000014 W.TSEF= 000002 BEEPO 000170R ECOURT 003251R NORMAL 006160R Q.IOPR= 000007 X 001312R BEEPS 007322R ERASE 000226R ODT 006352R Q.IOSB= 000010 XBND 005454R BEEPWT 000210R FAST 001334R PAD 006062R R 001326R XBNDL 005464R BEEP1 005706R FULPAD 006222R PADACT 006110R RAPID 006140R XBNDR 005512R BEGIN 004506R GETLU6 000246R PADCMP 006120R RDL 006556R XBND2 005502R BEGINN 004502R GONE 005620R PADDON 006754R RDS 006542R XINCR 001346R BNDBSP 005556R G.LUBA= 000004 PADHAF 000462R REPADL 005264R Y 001314R BNDBS2 005600R G.LUCW= 000004 PADJMP 006134R RP 006562R YBND 005722R BNDFUL 005570R G.LUFB= 000003 PADLC 000731R RPA 006516R YBNDB 005742R BNDTSP 005534R G.LULU= 000002 PADLOK 000460R RS 001410R YBNDT 005722R BNDX 005526R G.LUNA= 000000 PADLY 000614R RUL 006550R YCHG 005654R BOTH 000466R G.LUNU= 000002 PADLZ 000612R RUS 006534R YFINE 001354R BUF 000326R HAFPAD 006210R PADLZI 005670R SAIL 006000R YFINEL 001356R BYTBL 000502R INBUF 000436R PADM 006774R SAILER 007406R YINCR 001350R BYTBLA 000512R INIT 004452R PADMOV 006656R SCORAD 001414R YINCRL 001352R BYTBR 000514R INTQIO 000000R PADM1 007030R SCORE 004716R YINCRM 007222R BYTBRA 000524R INTRE 006342R PADM2 007060R SCORMR 000064R YINRET 007264R BYTBS 000544R INTREL 001412R PADM4 007142R SCORNW 000470R YSOFLB 001362R CHGPAD 006232R INTRMR 000020R PADM5 007146R SCORRC 001771R YSOFLT 001360R CHGPAL 006236R INTRO 003260R PADQIO 000102R SCORSP 001776R $$$ARG= 000006 CHGPAR 006274R INTRWT 000032R PADRC 001165R SCORWT 000076R $$$OST= 000014 CSL 006446R IO.ATA= ****** GX PADRY 001050R SERVE 005146R CSLA 006454R IO.DET= ****** GX PADRZ 001046R SERVER 005200R CSLF 006434R IO.KIL= ****** GX PADRZI 005700R SETEFB 000140R . ABS. 000000 000 007624 001 ERRORS DETECTED: 0 FREE CORE: 2695. WORDS DB0:[300,300]V,DB0:[300,300]V/-SP=DB0:[300,300]V