100 JMP I [STRER2] /WASN'T ANY 110 CDF DFIELD /GOTO OUR FIELD 120 AND [177] /JUST ASCII VALUE 130 DCA I [STRBUFFER] /STORE IN BUFFER 140 DCA I (STRBUFFER+1) /DELIMIT BUFFER 150 JMP NUMENTRY /CONTINUE THERE 160 EJECT 170 ROTBUFF,ESC; "/&177; .-. /ROTATE SEQUENCE BUFFER 180 "E&177+40; 0 190 SIZBUFF,ESC; ZBLOCK 2 /SIZE SEQUENCE BUFFER 200 SLANTBU,ESC; ZBLOCK 2 /SLANT SEQUENCE BUFFER 210 220 PAGE 230 EJECT 240 / COMES HERE TO DO NUMERIC OUTPUT. 250 260 DONUMBE,JMS I [GETARG] /GET THE VALUE 270 JMP I [STRER2] /WASN'T ANY 280 DCA NUMTEMP /STASH IT FOR NOW 290 JMS I [GETARG] /GET THE LENGTH 300 TAD (DEFLENGTH) /WASN'T ANY, USE DEFAULT VALUE 310 SNA /SKIP IF NON-ZERO 320 TAD (DEFLENGTH) /USE DEFAULT INSTEAD OF ZERO 330 TAD [-5] /COMPARE TO UPPER LIMIT 340 CLL /CLEAR LINK FOR TEST 350 TAD [4] /ADD ON RANGE 360 SNL /SKIP IF OK 370 JMP I [STRER1] /JUMP IF NOT 380 CMA /INVERT SENSE OF LENGTH 390 TAD (DIGBUFFER+4) /NOW POINTING TO PROPER PLACE IN THE DIGIT BUFFER 400 DCA SIZE /STASH THE POINTER 410 CDF DFIELD /GOTO OUR FIELD 420 TAD NUMTEMP /GET THE VALUE 430 JMS DIVIDE /DIVIDE BY 1000 440 1750 /RIP JSB 450 TAD ["0&177] /MAKE IT ASCII 460 DCA DIGBUFFER+0 /STORE FIRST DIGIT 470 TAD REM /GET THE REMAINDER 480 JMS DIVIDE /DIVIDE BY 490 144 /100 500 TAD ["0&177] /MAKE IT ASCII 510 DCA DIGBUFFER+1 /STORE SECOND DIGIT 520 TAD REM /GET THE REMAINDER 530 JMS DIVIDE /DIVIDE BY 540 12 /10 550 TAD ["0&177] /MAKE IT ASCII 560 DCA DIGBUFFER+2 /STORE THIRD DIGIT 570 TAD REM /GET REMAINDER 580 TAD ["0&177] /MAKE IT ASCII 590 DCA DIGBUFFER+3 /STORE FOURTH DIGIT 600 TAD [-5] /SETUP THE 610 DCA ROTATE /MOVE COUNT 620 TAD [STRBUFFER] /SETUP THE 630 DCA STRPTR /STRING POINTER 640 DMVLUP, TAD I SIZE /GET DESIRED DIGIT 650 DCA I STRPTR /STORE IN STRING BUFFER 660 ISZ SIZE /BUMP TO NEXT 670 ISZ STRPTR /BUMP TO NEXT 680 ISZ ROTATE /DONE ENOUGH? 690 JMP DMVLUP /NO, KEEP GOING 700 JMP I (NUMENTRY) /YES, CONTINUE THERE 710 EJECT 720 / COMES HERE TO SET THE VECTOR ADDRESS. 730 740 DOVADDR,JMS I [SETADR] /SETUP THE ADDRESS FROM (X,Y) 750 JMS I [STROUT] /OUTPUT TO TERMINAL 760 VECMODE /GO INTO VECTOR MODE 770 ADRBUFFER /ADDRESS BUFFER 780 0 /THIS ENDS THE LIST 790 JMP I (DISPRETURN) /FINISH IT THERE 800 810 / C0MES HERE TO DRAW A VECTOR. 820 830 DOVECTO,JMS I [SETADR] /SETUP THE ADDRESS FROM (X,Y) 840 JMS I [STROUT] /OUTPUT TO TERMINAL 850 ADRBUFFER /ADDRESS BUFFER 860 0 /THIS ENDS THE LIST 870 JMP I (DISPRETURN) /FINISH IT THERE 880 890 / COMES HERE IF "FDIS(ONE ARGUMENT)". 900 910 DISP1, JMS POPAC /RETRIEVE THE ARGUMENT 920 SZA CLA /SKIP IF ZERO 930 JMP I (DISPRETURN) /ELSE IGNORE IT 940 JMS I [STROUT] /CALL STRING OUTPUT ROUTINE 950 CLRMEM /TO CLEAR THE SCREEN 960 0 /END OF LIST 970 JMP I (DISPRETURN) /FINISH IT THERE 980 990 / COMES HERE TO OUTPUT AN X, Y POINT. 1000 1010 DOPOINT,JMS I [SETADR] /SETUP DISPLAY ADDRESS BUFFER 1020 JMS I [STROUT] /SEND THE 1030 PPM /GOTO POINT PLOT MODE 1040 ADRBUFFER /POINT ADDRESS 1050 0 /THIS ENDS THE LIST 1060 JMP I (DISPRETURN) /CONTINUE THERE 1070 1080 / DIVIDE ROUTINE. 1090 1100 DIVIDE, .-. /DIVIDE ROUTINE 1110 DCA REM /SAVE IN REMAINDER 1120 DCA QUO /CLEAR QUOTIENT 1130 TAD REM /GET IT BACK 1140 STL CIA /INVERT 1150 SKP /DON'T FIRST TIME 1160 DVLOOP, ISZ QUO /BUMP UP QUOTIENT 1170 TAD I DIVIDE /ADD ON ARGUMENT 1180 SNA SZL /UNDERFLOW? 1190 JMP DVLOOP /NO, KEEP GOING 1200 CIA /YES, INVERT IT BACK 1210 TAD I DIVIDE /RESTORE LOST VALUE 1220 DCA REM /SAVE AS REMAINDER 1230 TAD QUO /GET THE QUOTIENT 1240 ISZ DIVIDE /BUMP PAST ARGUMENT 1250 JMP I DIVIDE /RETURN 1260 EJECT