100 / LINC PING-PONG 110 120 / PING-PONG FOR THE CLASSIC LINC 130 140 / FROM THE LAP6 MANUSCRIPT ATTRIBUTED TO: 150 / MARK DIONNE MARCH MCMLXXIII 160 170 / TRANSLATED BY: CHARLES LASNER 19-NOV-1990 180 190 / LAST EDIT: 19-NOV-1990 20:00 200 210 / MUST BE ASSEMBLED WITH P?S/8 PAL. 220 230 / MUST BE ASSEMBLED WITH '/8' AND '/J' SWITCHES SET. 240 250 / THIS IS A VISUAL PING-PONG PROGRAM WRITTEN ENTIRELY IN LINC CODE FOR THE 260 / CLASSIC LINC. IT DEPENDS ON AN INTERRUPT CONDITION ARISING FROM SOME EXTERNAL 270 / SOURCE. THE PLAYER PARAMETERS ARE UPDATED ON AN INTERRUPT-ONLY BASIS. 280 290 / HAND-MADE CHANGES ON THE ORIGINAL MANUSCRIPT LISTING WILL BE INCORPORATED 300 / WHERE FEASIBLE. 310 320 / THIS LISTING IS FOR REFERENCE ONLY; IT IS BEYOND THE SCOPE OF THIS FILE TO 330 / ACTUALLY TRANSFER THE BINARY TO A CLASSIC LINC. USING P?S/8, IT IS POSSIBLE 340 / TO TRANSFER THE BINARY FROM A LINC-8 SYSTEM TO A LINCTAPE FOR SUBSEQUENT 350 / LOADING ON THE CLASSIC LINC. TOWARDS THAT END, AND FOR POSSIBLE LINC-8 360 / EXECUTION, THE BINARY WILL BE LOADED USING LINC-8 CONVENTIONS. 370 380 / ALL SYMBOLS ARE REVERSED AS PER LAP6-DIAL CONVENTIONS. THE SOURCE CONVENTIONS 390 / ARE CONSISTENT WITH LAP6-DIAL, DIAL10, PAL-12, AND P?S PAL. ERROR-FREE 400 / ASSEMBLY MAY ONLY BE POSSIBLE WITH P?S PAL. 410 420 / SYMBOL DEFINITIONS. 430 440 LMODE /WE RUN IN LINC MODE 450 460 ENI= 0004 /ENABLE LINC INTERRUPTS 470 480 / MRI DEFINITIONS. 490 500 FIXMRI JSR= 6000 /JUMP SUBROUTINE (WHICH RETURNS) 510 EJECT 520 / THE CODE STARTS HERE. 530 540 SEGMNT 1 /LOADS INTO 0000 ON CLASSIC LINC 550 560 *1 /EARLY LINC OPERATING SYSTEMS START IT HERE 570 580 ENI /ENABLE INTERRUPTS 590 600 / CHECK WHAT STATE SENSE SWITCH 5 IS IN. IF IT IS CURRENTLY SET, THEN MAKE THE 610 / EXIT CONDITION THE CHANGE OF SENSE SWITCH 5 TO *OFF* ELSE LEAVE IT ALONE SO IT 620 / EXITS WITH SENSE SWITCH 5 *ON*. 630 640 SNS 5 /IS SENSE SWITCH 5 SET NOW? 650 JMP START /NO, JUST START IT 660 LDA I 670 SNS I 5 /GET REVERSING INSTRUCTION 680 STC A6A /STORE OVER EXIT CODE 690 JMP START /GO START IT UP 700 710 *20 /GET PAST ALPHA, BETA REGISTERS 720 730 START, JMP A1A /GOTO *REAL* START 740 750 / INTERRUPT LOCATION. 760 770 JMP A1I /HANDLE INTERRUPTS THERE 780 790 / DISPLAY LOOP 800 810 A1A, SET I 3 820 A1B, 400 830 LDA I 840 30 850 SET I 2 860 -67 /THE NET 870 A2L, DIS 3 880 ADA I 890 57 900 XSK I 2 910 JMP A2L 920 EJECT 930 / SCORES 940 950 SET 3 960 A1S 970 JSR A5C 980 SET I 1 990 154 /**** WAS 10 **** 1000 LDA I 1010 300 1020 DSC 2 1030 DSC I 2 1040 SET I 1 1050 200 /**** WAS 34 **** 1060 DSC 3 1070 DSC I 3 1080 SET 3 1090 A2S 1100 JSR A5C 1110 SET I 1 1120 554 /**** WAS 724 **** 1130 LDA I 1140 300 1150 DSC 2 1160 DSC I 2 1170 SET I 1 1180 604 /**** WAS 750 **** 1190 DSC 3 1200 DSC I 3 1210 1220 / PADDLES 1230 1240 SET I 3 1250 24 1260 SAM 1 /LEFT 1270 COM 1280 ROL 2 /**** WAS ROL 3 **** 1290 ADD A1B 1300 BCL I 1310 7000 1320 STC A1P 1330 SAM 7 /RIGHT 1340 ROL 2 /WAS ROL 3 **** 1350 ADD A1B 1360 BCL I 1370 7000 1380 STC A2P 1390 SET 2 1400 A1P 1410 JSR A7P 1420 SET 2 1430 A2P 1440 SET I 3 1450 754 1460 JSR A7P 1470 EJECT