100 DBLSTR, .-. /DOUBLE PRECISION STORE 110 DCA DBLOAD /SAVE AC 120 MQA /GET MQ 130 DCA MQSAVE /SAVE IT 140 TAD I DBLSTR /GET ARGUMENT ADDRESS 150 DCA DBLADD /SAVE IT 160 SWP /GET LOW ORDER 170 DCA I DBLADD /STORE IT 180 ISZ DBLADD /BUMP TO HIGH ORDER 190 TAD DBLOAD /GET AC 200 DCA I DBLADD /STORE IT 210 ISZ DBLSTR /BUMP PAST ARGUMENT 220 TAD MQSAVE /GET MQ 230 MQL /RESTORE IT 240 TAD DBLOAD /RESTORE AC 250 JMP I DBLSTR /RETURN 260 270 DBLOAD, .-. /DOUBLE PRECISION LOAD 280 CAM /CLEAR AC, MQ 290 TAD DBLOAD /GET CALLER 300 DCA DBLADD /PUT INTO ADD HEADER 310 JMP DBLADD+1 /GO DO REST THERE 320 330 XTEND, .-. /SIGN EXTENSION ROUTINE 340 SHL; CHAN^3%2+EAESET+1 /SHIFT IT UP 350 ASR; CHAN^3%2+2+EAESET-1 /SHIFT IT DOWN 360 JMP I XTEND /RETURN 370 EJECT 380 PAGE 390 400 MARKER, .-. /MARKING ROUTINE 410 DCA MRKTEM /SAVE PAST SWITCH 420 NEXTY; PTR /POINT TO Y WORD 430 DLD; PTR /LOAD ADDRESS 440 ISZ MRKTEM /END? 450 JMP END /YES 460 DAD; BEGFDG /ADD ON FUDGE FACTOR 470 DST; BPTR /STORE IN BEGIN POINTER 480 XLIST OFF 490 IFZERO CHAN < 500 XLIST ON 510 DAD; DPM1 /BACKUP TO X WORD 520 DST; TMPTR3 /SAVE IT 530 LOAD; TMPTR3 /GET THE X WORD 540 CLL RAL /MOVE UP 550 STL RAR /SET BEGIN BIT 560 STORE; TMPTR3 /STORE IT BACK 570 XLIST OFF > 580 IFNZRO CHAN < 590 XLIST ON 600 LOAD; BPTR /GET Y BEGIN VALUE 610 AND [7577] /AND OFF AND 620 TAD [200] /OR IN BEGIN BIT 630 STORE; BPTR /STORE IT BACK 640 XLIST OFF > 650 XLIST ON 660 JMP I MARKER /RETURN 670 680 END, DAD; ENDFDG /ADD ON FUDGE FACTOR 690 DST; EPTR /STORE IN END POINTER 700 DST; PTR /UPDATE BUFFER POINTER 710 XLIST OFF 720 IFNZRO CHAN < 730 XLIST ON 740 LOAD; EPTR /GET Y END VALUE 750 AND [7377] /AND OFF AND 760 TAD [400] /OR IN END BIT 770 XLIST OFF > 780 IFZERO CHAN < 790 XLIST ON 800 LOAD; EPTR /GET Y VALUE 810 CLL RAL /MOVE UP 820 STL RAR /SET END BIT 830 XLIST OFF > 840 XLIST ON 850 STORE; EPTR /STORE IT BACK 860 JMP I MARKER /RETURN 870 EJECT 880 BUMPER, .-. /POINTER BUMPING ROUTINE 890 CAM /CLEAR OUT WORKING REGISTERS 900 TAD I BUMPER /GET ARGUMENT ADDRESS 910 DCA BUM /SAVE IT 920 CLA CLL IAC /SETUP INCREMENT 930 TAD I BUM /GET LOW ORDER 940 NXTXIN, DCA I BUM /SAVE UPDATED VALUE 950 ISZ BUM /ADVANCE TO HIGH ORDER 960 RAL /GET OVERFLOW 970 TAD I BUM /GET BLOCK NUMBER 980 DCA I BUM /STORE IT BACK 990 ISZ BUMPER /GET PAST ARGUMENT 1000 JMP I BUMPER /RETURN 1010 1020 BUM, .-. /BUMPER TEMPORARY 1030 1040 XNEXTX, .-. /NEXT X ROUTINE 1050 CAM /CLEAN UP 1060 TAD XNEXTX /GET OUR HEADER 1070 DCA BUMPER /MAKE IT THEIRS 1080 TAD I XNEXTX /GET ARGUMENT ADDRESS 1090 DCA BUM /SAVE IT 1100 XLIST OFF 1110 IFNZRO CHAN < 1120 XLIST ON 1130 NL0002 /SETUP X INCREMENT 1140 XLIST OFF > 1150 IFZERO CHAN < 1160 XLIST ON 1170 NL0004 /SETUP X INCREMENT 1180 XLIST OFF > 1190 XLIST ON 1200 TAD I BUM /GET LOW-ORDER 1210 AND [CHAN-4] /AND OFF LOW-ORDER BITS 1220 JMP NXTXIN /CONTINUE THERE 1230 1240 XNEXTY, .-. /NEXT Y ROUTINE 1250 CAM /CLEAN UP 1260 TAD XNEXTY /GET OUR HEADER 1270 DCA BUMPER /MAKE IT THEIRS 1280 TAD I XNEXTY /GET ARGUMENT ADDRESS 1290 DCA BUM /STASH IT 1300 TAD I BUM /GET LOW-ORDER 1310 AND [CHAN-4] /REMOVE LOW-ORDER BITS 1320 CLL IAC /BUMP TO Y ADDRESS 1330 JMP NXTXIN /CONTINUE THERE 1340 1350 COMP, .-. /COMPARE ROUTINE 1360 TAD I COMP /GET THRESHOLD ADDRESS 1370 DCA COM /SAVE IT 1380 TAD BUFF2 /+BUFF2 1390 CIA /-BUFF2 1400 TAD BUFF1 /BUFF1-BUFF2 1410 SMA /NEGATIVE ALREADY? 1420 CIA /NO, MAKE IT SO 1430 TAD I COM /ADD ON THRESHOLD