100 PRINTD, .-. /DOUBLE-PRECISION PRINT ROUTINE 110 DLD; LO /GET THE ARGUMENT 120 SMA /SKIP IF MINUS 130 JMP PRCOM /JUMP IF NOT 140 DCM /INVERT IT 150 DST; LO /STORE IT BACK 160 CLA /CLEAN UP 170 TAD ["-&77] /GET A "-" 180 JMS I [P6CH] /PRINT IT 190 PRCOM, CAM /CLEAN UP 200 TAD (POWTEN-1) /\ 210 DCA XR1 / \SET UP 220 TAD (-DIGITS) / /TENS 230 DCA DGCNTR // 240 DIVLOP, TAD I XR1 /GET FIRST HALF 250 PRSNA, SNA /END OF LIST? 260 JMP PROVER /YES 270 DCA DIVSOR /TO DIVISOR 280 TAD I XR1 /GET SECOND HALF 290 DCA DIVSOR+1 /TO HIGH DIVISOR 300 DCA QUO /CLEAR QUOTIENT 310 DLD; LO /SETUP 24 BIT AC 320 DIVLUP, DAD; DIVSOR /-10^N 330 SNL /OVERFLOW? 340 JMP .+3 /YES 350 ISZ QUO /NO 360 JMP DIVLUP /AGAIN 370 DCM /COMPLEMENT 380 DAD; DIVSOR /PUT BACK 390 DCM /COMPLEMENT AGAIN 400 DST; LO /PUT BACK 410 CAM /CLEAR OUT 420 ISZ DGCNTR /DONE YET? 430 JMP NCHECK /NO 440 LSTDGT, TAD PONTSW /PRINT A POINT? 450 SNA CLA /SKIP IF YES 460 JMP NOPONT /NO, CONTINUE 470 TAD PRSWT /CHECK FOR 480 AND [SNA&40] /PREVIOUS PRINT 490 SZA CLA /SKIP IF YES 500 JMP .+4 /NO, GO FURTHER 510 TAD [".&77] /PRINT 520 JMS I [P6CH] /A POINT 530 JMP NCHECK /AND CONTINUE 540 550 TAD QUO /IS IT A ZERO? 560 SZA CLA /SKIP IF YES 570 JMP .-5 /NO, PRINT A POINT AND IT 580 EJECT 590 NOPONT, TAD (SKP) /FORCE ON 600 DCA PRSWT /PRINT 610 NCHECK, TAD QUO /GET QUOTIENT 620 PRSWT, SNA /SKIP IF SIGNIFICANT 630 JMP DIVLOP /DO NEXT 640 TAD ["0&77] /ADD ON ASCII 650 JMS I [P6CH] /PRINT IT 660 TAD (SKP) /FORCE ON 670 DCA PRSWT /PRINT 680 JMP DIVLOP /CONTINUE 690 700 PROVER, CAM /CLEAN UP 710 DST; LO /CLEAR PRINT BUFFER 720 DCA PONTSW /CLEAR SWITCH 730 TAD PRSNA /RESET 740 DCA PRSWT /PRINT SWITCH 750 JMP I PRINTD /RETURN 760 770 DGCNTR, .-. /DIGIT COUNTER 780 DIVSOR, ZBLOCK 2 /DIVISOR 790 QUO, .-. /QUOTIENT 800 810 PAGE 820 EJECT 830 XLIST OFF 840 IFNZRO MODEM < 850 IFNZRO .&177 < 860 XLIST ON 870 PAGE 880 890 XLIST OFF > 900 XLIST ON 910 GOT204, DCA LIGHT /LIGHT IS OFF 920 DCA INTENS /LIGHT IS OBVIOUSLY NOT BRIGHT! 930 JMS MODNXT /GET NEXT CHARACTER 940 TAD (-202) /IS IT 202? 950 SZA CLA /SKIP IF IT IS 960 JMP GOTBAD /JUMP IF ANYTHING ELSE 970 GOT202, /202 WAS FOUND! 980 GOT242, NL4000 /FUDGE TO PREVENT 990 DCA MTEMP /INVALIDATION 1000 EOMIN, CLA /CLEAN UP JUST IN CASE 1010 DCA SUCCESS /PROCLAIM FAILURE 1020 GOODIN, STA /INVALIDATE 1030 DCA XPOS1 /FIRST "X" 1040 STA /INVALIDATE 1050 DCA YPOS1 /FIRST "Y" 1060 STA /INVALIDATE 1070 DCA XPOS2 /SECOND "X" 1080 STA /INVALIDATE 1090 DCA YPOS2 /SECOND "Y" 1100 DCA POS3SW /INVALIDATE THIRD POSITION INDICATOR 1110 DCA LIGHT /TURN LIGHT OFF 1120 DCA INTENS /LIGHT IS OBVIOUSLY DIMLY OFF! 1130 DCA BAR /BAR IS UP 1140 TAD MTEMP /GET LATEST CHARACTER 1150 TAD (-320) /COMPARE TO SYNC VALUE 1160 SNA /SKIP IF NOT A MATCH 1170 JMP GOTSYNC /JUMP IF IT DID MATCH 1180 TAD (320) /RESTORE THE CHARACTER 1190 AND (4300) /JUST POSSIBLE BITS 1200 SNA CLA /SKIP IF NOT A FIRST "X" VALUE 1210 JMP GOTFX /JUMP IF FIRST "X" FOUND 1220 GOTBAD, TAD MTEMP /GET THE CHARACTER CODE 1230 AND (377) /JUST CHARACTER BITS 1240 DCA VALID /SAVE AS (USUALLY) INVALID INDICATOR 1250 JMS MODNXT /GET ANOTHER CHARACTER 1260 JMP EOMIN /TRY AGAIN 1270 1280 GOTSYNC,JMS MODNXT /GET THE NEXT ONE 1290 TAD (-320) /IS IT ALSO A SYNC CHARACTER? 1300 SNA /SKIP IF NOT 1310 JMP GOTSYNC /DO IT AGAIN UNTIL IT ISN'T! 1320 TAD (320) /RESTORE THE CHARACTER 1330 DCA TM1 /SAVE AS FIRST TIME CHARACTER 1340 JMS MODNXT /GET ANOTHER 1350 DCA TM2 /SAVE AS SECOND TIME CHARACTER