100 / COMES HERE TO SET THE VECTOR ADDRESS. 110 120 /DOVADDR,JMS I [SETADR] /SETUP THE ADDRESS FROM (X,Y) 130 / JMS I [STROUT] /OUTPUT TO TERMINAL 140 / VECMODE /GO INTO VECTOR MODE 150 / ADRBUFFER /ADDRESS BUFFER 160 / 0 /THIS ENDS THE LIST 170 / JMP I (DISPRETURN) /FINISH IT THERE/ 180 190 / C0MES HERE TO DRAW A VECTOR. 200 210 /DOVECTO,JMS I [SETADR] /SETUP THE ADDRESS FROM (X,Y) 220 / JMS I [STROUT] /OUTPUT TO TERMINAL 230 / ADRBUFFER /ADDRESS BUFFER 240 / 0 /THIS ENDS THE LIST 250 / JMS I [STROUT] /CALL STRING OUTPUT ROUTINE 260 / CLRMEM /TO CLEAR THE SCREEN 270 / 0 /END OF LIST 280 290 / COMES HERE TO OUTPUT AN X, Y POINT. 300 310 /DOPOINT,JMS I [SETADR] /SETUP DISPLAY ADDRESS BUFFER 320 / JMS I [STROUT] /SEND THE 330 / PPM /GOTO POINT PLOT MODE 340 / ADRBUFFER /POINT ADDRESS 350 / 0 /THIS ENDS THE LIST 360 370 / DIVIDE ROUTINE. 380 390 DIVIDE, .-. /DIVIDE ROUTINE 400 DCA REM /SAVE IN REMAINDER 410 DCA QUO /CLEAR QUOTIENT 420 TAD REM /GET IT BACK 430 STL CIA /INVERT 440 SKP /DON'T FIRST TIME 450 DVLOOP, ISZ QUO /BUMP UP QUOTIENT 460 TAD I DIVIDE /ADD ON ARGUMENT 470 SNA SZL /UNDERFLOW? 480 JMP DVLOOP /NO, KEEP GOING 490 CIA /YES, INVERT IT BACK 500 TAD I DIVIDE /RESTORE LOST VALUE 510 DCA REM /SAVE AS REMAINDER 520 TAD QUO /GET THE QUOTIENT 530 ISZ DIVIDE /BUMP PAST ARGUMENT 540 JMP I DIVIDE /RETURN 550 560 REM, .-. /DIVIDE REMAINDER 570 QUO, .-. /DIVIDE QUOTIENT 580 590 PAGE 600 EJECT 610 SETADR, .-. /ADDRESS SETUP ROUTINE 620 CLA /CLEAN UP 630 SETZAP, JMP SET4010 /**** NOT /1 **** NOP 640 TAD Y /GET Y ADDRESS 650 RTL;RTL;RTL /%200 660 AND [37] /JUST HIGH FIVE BITS 670 TAD [40] /MAKE IT ASCII 680 DCA ADRBUFFER+0 /STORE AS HI-Y 690 TAD Y /GET Y AGAIN 700 AND [3] /JUST LOW TWO BITS 710 CLL RTL /MOVE UP 720 DCA ADRBUFFER+1 /SAVE FOR NOW 730 TAD Y /GET Y AGAIN 740 RTR /%4 750 AND [37] /JUST MIDDLE FIVE BITS 760 TAD [140] /MAKE IT ASCII 770 DCA ADRBUFFER+2 /STORE AS LO-Y 780 TAD X /GET X ADDRESS 790 RTL;RTL;RTL /%200 800 AND [37] /JUST HIGH FIVE BITS 810 TAD [40] /MAKE IT ASCII 820 DCA ADRBUFFER+3 /STORE AS HI-X 830 TAD X /GET X AGAIN 840 RTR /%4 850 AND [37] /JUST MIDDLE FIVE BITS 860 TAD [100] /MAKE IT ASCII 870 DCA ADRBUFFER+4 /STORE AS LO-X 880 TAD X /GET X AGAIN 890 AND [3] /JUST LOW TWO BITS 900 TAD ADRBUFFER+1 /ADD ON LOW Y BITS (SHIFTED) 910 TAD [140] /MAKE IT ASCII WITH MARGIN 1 920 DCA ADRBUFFER+1 /STORE COMPOSITE EXTRA BYTE 930 JMP I SETADR /RETURN 940 EJECT 950 / COMES HERE IF IN 4010 ADDRESS MODE. 960 970 SET4010,TAD Y /GET UNSIGNED Y VALUE 980 MQL /TO LOW-ORDER 990 JMS XMUY /MULTIPLY 1000 1414 /BY 780 1010 DCA Y /STORE BACK 1020 TAD Y /GET Y VALUE 1030 RTR;RTR;RAR /%40 1040 AND [37] /JUST HIGH FIVE BITS 1050 TAD [40] /MAKE IT ASCII 1060 DCA ADRBUFFER+0 /STORE AS HI-Y 1070 TAD Y /GET Y AGAIN 1080 AND [37] /JUST FIVE LOW BITS 1090 TAD [140] /MAKE IT ASCII 1100 DCA ADRBUFFER+1 /STORE AS LO-Y 1110 TAD X /GET X VALUE 1120 RTL;RTL;RTL /%200 1130 AND [37] /JUST HIGH FIVE BITS 1140 TAD [40] /MAKE IT ASCII 1150 DCA ADRBUFFER+2 /STORE AS HI-X 1160 TAD X /GET X AGAIN 1170 RTR /%4 1180 AND [37] /JUST FIVE MIDDLE BITS 1190 TAD [100] /MAKE IT ASCII 1200 DCA ADRBUFFER+3 /STORE AS LO-X 1210 JMP I SETADR /RETURN 1220 1230 / MULTIPLY ROUTINE. 1240 1250 XMUY, .-. /MULTIPLY ROUTINE 1260 CLA CLL /CLEAN UP 1270 TAD (-15) /SETUP THE 1280 DCA XMUYCT /SHIFT COUNTER 1290 XMUYUP, RAR /SHIFT RIGHT 1300 SWP /INTO LOW-ORDER; GET LOW-ORDER 1310 RAR /SHIFT RIGHT 1320 SWP /RETURN TO LOW-ORDER; GET ORIGINAL HIGH-ORDER 1330 ISZ XMUYCT /SHIFTED ENOUGH? 1340 SKP /SKIP IF NOT