100 / PDP-12 FOCAL TRAINING PATCH 110 120 / PDP-12 TRAINING PROGRAM IMPLEMENTED AS A PATCH TO P?S/8 FOCAL. 130 140 / LAST EDIT: 21-JUL-1987 10:00:00 CJL 150 160 / CAN BE ASSEMBLED WITH '/J' SWITCH SET. 170 180 / MUST BE ASSEMBLED WITH '/8' SWITCH SET. 190 200 / (OBVIOUSLY RUNS ON PDP-12 ONLY.) 210 XLIST OFF 220 IFNDEF OFF 230 IFNDEF ON 240 XLIST ON 250 260 / THIS IS A COLLECTION OF PATCHES TO P?S/8 FOCAL TO IMPLEMENT THREE FUNCTIONS: 270 280 / 1): FGO(INITIALIZE-INDICATOR) 290 / 2): FWRD(ADDRESS[,REPLACEMENT VALUE]) 300 / 3): FIO(ARGUMENT) 310 320 / DESCRIPTION OF FUNCTIONS: 330 340 / FUNCTION "FGO" RUNS THE TRAINING ROUTINE AS LONG AS SNS[0] IS SET OR THE 350 / COUNT-DOWN TIMER VARIABLE DOESN'T OVERFLOW. WHEN THE SENSE SWITCH CLEARS, 360 / THE FUNCTION RETURNS (VALUE UNIMPORTANT). SETTING SNS[1], THEN CLEARING 370 / IT, CAUSES SIMULATED REWARDS. VARIOUS OTHER SENSE SWITCH SETTINGS PROVIDE 380 / FOR OPTIONAL DISPLAYS. VARIOUS ADDRESSES (WHICH CAN BE REFERENCED BY "FWRD") 390 / ARE USED AS PARAMETERS OR VARIABLES. IF THE PASSED ARGUMENT IS ZERO, ALL 400 / VARIABLES (RUNNING TIME, ETC.) ARE CLEARED. IF THE PASSED ARGUMENT IS 410 / NON-ZERO, THE VARIABLES WILL BE PRESERVED TO ACCUMULATE TOTAL TIMES, ETC. 420 / SEE SENSE SWITCH TABLE FOR ADDITIONAL FEATURES. 430 440 / FUNCTION "FWRD" RETURNS THE CONTENTS OF THE SPECIFIED MEMORY ADDRESS EVALUATED 450 / FROM THE FIRST ARGUMENT. IF A SECOND ARGUMENT IS PASSED, THEN ITS EVALUATION 460 / BECOMES THE REPLACEMENT VALUE AT THE SPECIFIED ADDRESS. THE FIRST ARGUMENT 470 / IS AN ELEVEN BIT ADDRESS OF A TWENTY-FOUR BIT NUMBER. THE BASE ADDRESS IS 480 / THAT OF THE VARIABLE TABLES TO ALLOW FOR COMPATIBILITY IN CASE OF REASSEMBLY 490 / OF THE PROGRAM. 500 510 / FUNCTION "FIO" PERFORMS INPUT OR OUTPUT OF A SINGLE CHARACTER DEPENDING 520 / ON THE PASSED ARGUMENT. IF THE ARGUMENT IS >2047 OR NEGATIVE THEN THE 530 / FUNCTION RETURNS THE NUMERICAL VALUE (MODULO 128) OF THE NEXT ASCII 540 / CHARACTER TYPED INTO P?S/8 FOCAL. THE FUNCTION WILL HANG IF NECESSARY UNTIL 550 / A CHARACTER IS TYPED. IF THE ARGUMENT IS <2048 THEN THE VALUE PASSED MODULO 560 / 256 WILL BE OUTPUT TO THE PREVAILING TERMINAL OUTPUT DEVICE. 570 EJECT 580 / DESCRIPTION OF SENSE SWITCH SETTINGS FOR "FGO": 590 600 / SENSE SWITCH USAGE 610 620 / 0 1=TRAIN ANIMAL 630 / 0=RETURN TO FOCAL 640 650 / 1 0=NO SIMULATED REWARD 660 / 1=INITIATE SIMULATED REWARD 670 / NOTE: THIS SWITCH MUST BE RETURNED TO ZERO 680 / TO COMMENCE REWARD! 690 700 / 2 1=DISPLAY WINDOW BORDER 710 720 / 3 1=DISPLAY CURRENT GALVO POSITION 730 740 / 4 1=DISPLAY CURRENT ANIMAL POSITION 750 760 / 5 1=DISPLAY RELATIVE ANIMAL POSITION (FROM GALVO) 770 780 790 / RELAY USAGE. 800 810 / 0 PROGRAM RUN INDICATOR 820 830 / 1 NOT USED 840 850 / 2 NOT USED 860 870 / 3 TARGET LIGHT (LASER) 880 890 / 4 AUDIBLE REWARD 900 910 / 5 LIQUID REWARD 920 EJECT 930 / DESCRIPTION OF VARIABLES TO BE ACCESSED BY "FWRD": 940 950 / FWRD FIRST ARGUMENT VALUE USAGE 960 970 / 0 TOTAL RUNNING TIME 980 990 / 1 IN-WINDOW RUNNING TIME 1000 1010 / 2 INTO-WINDOW TRANSITION COUNT 1020 1030 / 3 OUT-OF-WINDOW TRANSITION COUNT 1040 1050 / 4 LEFT-HAND WINDOW LIMIT 1060 1070 / 5 RIGHT-HAND WINDOW LIMIT 1080 1090 / 6 UPPER WINDOW LIMIT 1100 1110 / 7 LOWER WINDOW LIMIT 1120 1130 / 8 MAJOR/MINOR REWARD RATIO 1140 1150 / 9 MINOR REWARD DURATION 1160 1170 / 10 MAJOR REWARD DURATION 1180 1190 / 11 LATEST REWARD TIME (VALID ONLY WHEN PAUSED) 1200 1210 / 12 COUNT OF REWARD TIMES IN THE REWARD TIME 1220 / LIST, OR RANDOM ACCESS INDICATOR IF ZERO 1230 1240 / 13 COUNT-DOWN TIMER (NEGATIVE)