100 STA /SET STATUS 110 JMS SCAN2 /CALL OTHER ROUTINE 120 JMP I SCAN /RETURN 130 140 SCAN2, .-. /SCAN FOR END ROUTINE 150 DCA ADDFLAG /SAVE ADD STATUS 160 DOSOMESTUFF /GO CALCULATE COMMON STUFF 170 PTR /USING THIS ARGUMENT 180 JMP I SCAN2 /RETURN 190 EJECT 200 PAGE 210 220 TRMBUF, ZBLOCK 200 /STATUS WORDS GO HERE 230 240 STUFF, .-. /DO SOMETHING ROUTINE 250 TAD I STUFF /GET ARGUMENT 260 DCA MEDPTR /SAVE FOR MEDIAN ROUTINE 270 DLD /GET ITS 280 MEDPTR, .-. /CONTENTS 290 DST; MEDWRK /SAVE IT IN MEDIAN'S WORK POINTER 300 DST; MEDWR2 /SAVE IT FOR LATER ALSO 310 JMS MEDIAN /GO GET FIRST MEDIAN 320 DCA BUFF1 /SAVE IT 330 DLD; MEDWR2 /RETRIEVE POINTER 340 DAD; OFFSET /ADD ON OFFSET 350 ISZ ADDFLAG /ANY ADDITIONAL OFFSET (END)? 360 SKP /SKIP IF SO 370 JMP .+3 /JUMP IF NOT 380 DAD; OFF2 /ADD ON ADDITIONAL OFFSET 390 DST; MEDWRK /SAVE IT FOR MEDIAN 400 JMS MEDIAN /NOW GET SECOND MEDIAN 410 DCA BUFF2 /SAVE IT 420 ISZ STUFF /BUMP AROUND ARGUMENT 430 JMP I STUFF /RETURN 440 450 MEDWRK, ZBLOCK 2 /MEDIAN WORK AREA 460 MEDWR2, ZBLOCK 2 /MEDIAN TEMPORARY 470 MEDPNT, MEDBUF-1 /POINTER TO MEDIAN BUFFER 480 MEDNUM, -NUMBER /NUMBER OF POINTS TO MEDIATE 490 MEDCNT, .-. /MEDIAN COUNTER 500 MDFLAG, .-. /MEDIAN REVERSAL FLAG 510 MEDVAL, NUMBER-1%2+MEDBUF /POINTER TO CENTRAL VALUE 520 MDPTR1, .-. /MEDIAN 530 MDPTR2, .-. /POINTERS 540 EJECT 550 MEDIAN, .-. /MEDIAN SUBROUTINE 560 CAM /CLEAN UP 570 TAD MEDPNT /SETUP 580 DCA XR1 /AUTO-INDEX 590 TAD MEDNUM /SETUP 600 DCA MEDCNT /COUNT 610 MDLOOP, LOAD; MEDWRK /GET A POINT 620 EXTEND /GET FULL VALUE 630 DCA I XR1 /STORE IN MEDIAN BUFFER 640 BUMP; MEDWRK /BUMP TO 650 BUMP; MEDWRK /NEXT POINT 660 XLIST OFF 670 IFZERO CHAN < 680 XLIST ON 690 BUMP; MEDWRK /BUMP PAST NEXT 700 BUMP; MEDWRK /BUMP PAST NEXT 710 XLIST OFF > 720 XLIST ON 730 ISZ MEDCNT /DONE ALL YET? 740 JMP MDLOOP /NO, GO BACK 750 760 MSORT1, TAD MEDNUM /SETUP 770 DCA MEDCNT /COUNTER 780 TAD MEDPNT /\ 790 DCA MDPTR1 / \ 800 TAD MEDPNT / >SETUP BUBBLE SORT POINTERS 810 IAC / / 820 DCA MDPTR2 // 830 STA /INDICATE 840 DCA MDFLAG /NO REVERSALS 850 MSORT2, ISZ MDPTR1 /BUMP POINTERS 860 ISZ MDPTR2 /TO NEXT PAIR 870 ISZ MEDCNT /DONE ALL YET? 880 JMP MDMORE /NO,DO ANOTHER 890 ISZ MDFLAG /ANY REVERSALS? 900 JMP MSORT1 /YES, SUPERVISION HAS OCCURED 910 TAD I MEDVAL /NO, GET MEDIAN VALUE 920 JMP I MEDIAN /RETURN 930 940 MDMORE, TAD I MDPTR2 /\ 950 CIA / >SETUP COMPARISON 960 TAD I MDPTR1 // 970 SPA SNA CLA /SWITCH NEEDED? 980 JMP MSORT2 /NO 990 TAD I MDPTR1 /\ 1000 MQL / \ 1010 TAD I MDPTR2 / \EXCHANGE 1020 DCA I MDPTR1 / /2 ENTRIES 1030 MQA / / 1040 DCA I MDPTR2 // 1050 DCA MDFLAG /INDICATE REVERSAL 1060 JMP MSORT2 /GO DO ANOTHER 1070 EJECT 1080 PAGE 1090 1100 BLINKCH,.-. /BLINK CHECKING ROUTINE 1110 DLD; BPTR /GET BEGIN POINTER 1120 DST; TMPTR2 /STORE IN TEMPORARY 1130 DAD; BLUPDATE /ADD UPDATE FACTOR 1140 JMS I [CHECK] /MAKE FIRST CHECK FOR NON-BLINK 1150 JMP IN1 /POSSIBLE BLINK, CHECK FURTHER 1160 1170 LOOP1, NEXTX; TMPTR2 /BUMP POINTER 1180 BUMP; TMPTR2 /TO NEXT Y 1190 IN1, STA /INIDCATE BEGIN 1200 JMS I [BSCAN] /CHECK OUT Y VALUE 1210 JMS I [TIMCHK] /CHECK TIME LIMITS 1220 COMPARE /CHECK 1230 BLKDF1 /IF > THAN THIS 1240 JMP LOOP1 /NO, GO BACK 1250 JMP IN2 /YES, GO ON 1260 1270 LOOP2, NEXTX; TMPTR2 /BUMP POINTER 1280 BUMP; TMPTR2 /TO NEXT Y 1290 IN2, STA /USE BEGIN OFFSET 1300 JMS I [BSCAN] /GO WORK ON THIS Y VALUE 1310 JMS I [TIMCHK] /CHECK TIME LIMITS 1320 COMPARE /CHECK 1330 BLKDF2 /IF < THAN THIS