/PLOTS A STRAIGHT LINE BETWEEN TWO COORDINATES. /ACCESS FROM FORT BY 'CALL PLOT(I,J,K)' WHERE /I&J ARE THE COORDINATES IN PLOTTER STEPS OF /NEXT POINT, K=1 PEN UP, =2 PEN DOWN, =4 TO /PLOT X AT NEXT POINT, =8 VERTICAL LINE FOR /I#0 AND HORIZONTAL FOR I=0. K=0 TO MAKE /CURRENT POSITION EQUAL(-I,-J) IN A NEW /COORDINATE SYSTEM WITH ORIGIN AT (I,J) OF /THE OLD COORDINATE SYSTEM. OPDEF TADI 1400 OPDEF ISZI 2400 OPDEF DCAI 3400 OPDEF JMSI 4400 OPDEF JMPI 5400 ENTRY PLOT PLOT, BLOCK 2 /TRANSFER I,J,K CLA CLL CMA RTL /AC=-3 DCA LINE1 /COUNTER TAD PLOT 6214;DCA DF TAD PLOT;DCA X1 X1, HLT /DF OF POINTERS TADI PLOT#;DCA X2 INC PLOT# TADI PLOT# DCA ARG3 INC PLOT# X2, HLT /DF OF ARG. TADI ARG3 X3, DCA ARG1 INC X3 ISZ LINE1 JMP X1 DF, HLT /CURRENT DF /SET PEN POSITION 6506 /CLEAR PEN FLAG TAD ARG3 /GET K CLL RTR /L=1 PEN DOWN DCA DF TAD PEN /AC=0 PEN IS UP SZL;JMP P1 SZA CLA /CHANGE PEN POSITION? 6503 /PEN UP JMP P2 P1, SNA CLA /CHANGE PEN POSITION? 6505 /PEN DOWN P2, RAL /LINK TO AC DCA PEN /=1 FOR PEN DOWN, =0 FOR UP /SELECT DRAWING FIGURE TAD ARG3;JMSI START0 EXX, TAD DF;RAR;SZL /SELECT FIGURE FOR K JMP EX1 RAR;SNL CLA JMP ENDO /PLOT FOR K=4,8 TAD ARG1;SZA CLA CLL IAC RTL /AC=4 TAD TADDR;DCA EX TAD CM4;DCA ARG3;JMP EX0 EX1, CLA;TAD C7770;DCA ARG3 /PLOT X EX0, 6505 /PEN DOWN EX, TAD DIR;DCA X1 CLA CLL CMA RTL /AC=-3 JMS LINE1;INC EX;ISZ ARG3 JMP EX TAD TADDIR;DCA EX IAC;DCA PEN /MARK PEN POSITION ENDO, TAD DCAARG;DCA X3 /EXIT RETRN PLOT /PLOT STRAIGHT LINE LINE1, 0000;DCA X2 LINE2, TAD X1;JMSI PLOT1 ISZ X2 JMP LINE2 JMPI LINE1 LINE0, TAD ARG1 /PARALLEL TO AXIS OR SZA CLA /DIAGONAL LINE TADI XD0 /X DIRECTION DCA X2 TAD ARG2 SZA CLA TADI YD0 /Y DIRECTION TAD X2 SNA /IF NO DIRECTION JMP EXX /FIGURE END DCA X1 TAD ARG1 SNA TAD ARG2 CIA JMS LINE1 JMP EXX /NEXT LINE START0, START TADDR, TAD DR TADDIR, TAD DIR DCAARG, DCA ARG1 CM4, 7774 C7770, 7770 ARG1, 0000 ARG2, 0000 ARG3, 0000 PEN, 0000 /LAST PEN POSITION, 0=UP XD0, XD YD0, YD PLOT1, PLOT0 LAP DIR, 30;44;44;30;24;50;50;24 /COORDINATES FOR X DR, 4;10;10;4;20;40;40;20 PAGE START, 0000;AND C17;SZA CLA JMP START1 /DRAW LINE TADI X;CIA;DCA X0 /RESET ORIGIN, K=0 TADI Y;CIA;DCA Y0 JMPI START /PLOT LINE BETWEEN TWO POINTS START1, TAD X0;CIA /KEEP TRACK OF TADI X;DCAI X /COORDINATES TAD Y0;CIA TADI Y;DCAI Y TAD X0;TADI X;DCA X0 TAD Y0;TADI Y;DCA Y0 TADI X SMA CLA /SELECT DIRECTION TAD C4;TAD C4;DCA XD TADI X SPA;CIA DCAI X /X ALWAYS POSITIVE TADI Y SPA CLA TAD C20;TAD C20;DCA YD TADI Y SPA;CIA DCAI Y TADI X /SET Y LARGER THAN X SNA JMPI LINE /STRAIGHT LINE CLL CIA TADI Y SNA JMPI LINE /DIAGONAL LINE SMA CLA /AC>0 FOR Y>X JMP SWAB TADI X /SWITCH X Y 7421 /MQL TADI Y SNA JMPI LINE /X LINE DCAI X 7521 /SWP DCAI Y TAD XD 7421 /MQL TAD YD DCA XD 7521 /SWP DCA YD SWAB, 7431 /SWAB TADI Y CIA DCA COUNT /LINE LENGTH /FIND LINE SLOPE 7665;A /DST 0 TADI X 7407;ARG2 /DVI SZL;HLT 7521 /SWP DCA PLOT0 7521 /SWP 7407;ARG2 /REMINDER DIV CLA TAD PLOT0 7445;M /DST, STORE CLA CLL CML RAR /AC=4000 NEXT, 7443;A /DAD A 7443;M /DAD M 7445;A /DST A SNL CLA JMP YLINE DIAGNL, ISZI X TAD XD YLINE, TAD YD JMS PLOT0 ISZ COUNT JMP NEXT /NEXT SEGMENT JMPI START /NEXT LINE PLOT0, 0000 /PLOT SUBROUTINE 6501 JMP PLOT0# 6506;7621 /PLOT, CAM JMPI PLOT0 LINE, LINE0 X, ARG1 /COORDINATE POINTERS Y, ARG2 M, 0000;0000 /LINE SLOPE X0, 0000 /COORDINATES OF LAST POINT Y0, 0000 XD, 0000 /DIRECTION CODE YD, 0000 A, 0000;0000 COUNT, 0000 /LINE LENGTH C4, 0004 C17, 0017 C20, 0020 END /PLOTS A STRAIGHT LINE BETWEEN TWO COORDINATES. /ACCESS FROM FORT BY 'CALL KPLOT(I,J,K)' WHERE /I&J ARE THE COORDINATES IN SCOPE STEPS (512X640) /OF NEXT POINT, K=1 DOES NOT WRITE, =2 WRITES, /=4 PLOTS X AT NEXT POINT, =8 VERTICAL LINE FOR /I#0 AND HORIZONTAL FOR I=0. K=16 TO ERASE /SCOPE AND MAKES (I,J) A NEW ORIGIN. /IF BITS 0-3 OF K ARE 0 THEN (I,J) /BECOMES A NEW ORIGIN. /A POINT IS DRAWN AT EVERY LINE END. OPDEF TADI 1400 OPDEF JMPI 5400 LAP ENTRY KPLOT KPLOT, BLOCK 2 /TRANSFER I,J,K CLA CLL CMA RTL /AC=-3 DCA PLOT /COUNTER TAD KPLOT;6214;DCA DF TAD KPLOT;DCA X1 X1, HLT /DF OF POINTERS TADI KPLOT#;DCA X2 INC KPLOT#;TADI KPLOT# DCA V;INC KPLOT# X2, HLT /DF OF ARG. TADI V FORMAT, DCA ARG1 INC FORMAT;ISZ PLOT;JMP X1 DF, HLT /CURRENT DF TAD ARG3;AND C0017 SZA CLA;JMP A TAD ARG1;DCA X /K=0, CHANGE ORIGIN TAD ARG1;DCA X0 TAD ARG2;DCA Y TAD ARG2;DCA Y0 TAD ARG3;CLL RTR SZA;6066 /K=16, ERASE SCOPE CLA;JMP END0 /GO TO EXIT A, TAD C0440;DCA FORMAT JMS PLOT /RESET NEXT LINE ORIGIN TAD ARG1;TAD X;DCA X0 /CALCULATE LINE END TAD ARG2;TAD Y;DCA Y0 TAD ARG3;RTR;SZL CLA ISZ FORMAT /WRITE JMS PLOT /PLOT EX, TAD ARG3;AND C0014 /CHECK FOR K=4,8 SNA CLA JMP ENDO /GO TO EXIT TAD CC;DCA DF TAD C7772;DCA ARG3 /COUNTER TAD C0601;DCA FORMAT /SHORT LINE A0, TADI DF;TAD X0;DCA X0 INC DF TADI DF;TAD Y0;DCA Y0 INC DF;JMS PLOT ISZ ARG3;JMP A0 JMP END0 ENDO, TAD C0601;DCA FORMAT /PLOT POINT JMS PLOT END0, TAD DCAARG;DCA FORMAT /EXIT RETRN KPLOT ARG1, 0000 ARG2, 0000 ARG3, 0000 CC, C C, 3;0;7772;0;3;0;0;3;0;7772;0;3 C0014, 0014 C0017, 0017 C0440, 0440 C0601, 0601 C6064, 6064 C7772, 7772 DCAARG, DCA ARG1 X, 7600 Y, 0000 X0, 0000 Y0, 0000 PLOT, 0000 /PLOT ROUTINE TAD C6064;DCA V# TAD X0;JMS V TAD Y0;JMS V TAD FORMAT;JMS V JMPI PLOT V, 0000 /SCOPE PLOT 6064;INC V# VV, 6071;JMP VV CLA CLL;JMPI V END j