1 * (PL$MV) REV 1.0 INCREMENTAL PLOTTER ROUTINES
5 * PL$MV (PL$MV,PL$RST,PL$LN,PL$X,PL$Y,PL$RMR)
7 * PLOTTER MOVEMENT ROUTINES
11 * 1.0 (2007-05-28) - INITIAL REVISION
13 * 1.1 (2007-11-08) - ADDED INTELLIGENT LINE DRAWING ROUTINE
15 * 1.2 (2007-12-15) - ADDED PL$X and PL$Y POSITION EXPORTS
16 * ADDED PL$RMR TRANSLATIION ROUTINE
18 * 1.3 (2007-12-19) - ADDED TRANSFORMATION MATRIX SUPPORT TO PL$MV.
19 * MATRIX PL$MAT IS NOW APPLIED BEFORE
20 * ANY MOVE INSTRUCTION.
30 * PROVIDE SIMPLE LIBRARY FUNCTIONS FOR INCREMENTAL PLOTTERS
41 * CALL PL$RST - SET VIRTUAL PLOT POSITION TO ZERO
43 * CALL PL$MV - MOVE TO POINT SPECIFIED
48 * CALL PL$LN - DRAW LINE AND LEAVE PEN DOWN
55 * CALL PL$RMR - MOVE ORIGIN RELATIVELY
60 * CALL PL$SCL - SCALE TRANSFORMATION
61 * DAC SCALE SCALE FACTOR, FLOAT
64 * CALL PL$IDN - RESET TRANSFORMATION MATRIX
66 ********************************************************************************
81 REL THIS IS A RELOCATABLE OBJECT
84 ********************************************************************************
86 LINE DAC 0 DRAW A LINE FROM NEAR STARTING POINT
98 IRS LINE TALLY RETURN ADDRESS
100 IRS LINE AGAIN FOR FORTRAN IV COMPATIBILITY
129 SPL SKIP IF SIGN PLUS
130 TCA TWO'S COMPLEMENT IF NEEDED
141 SPL SKIP IF SIGN PLUS
142 TCA TWO'S COMPLEMENT IF NEEDED
150 JMP D2BG D2 IS BIGGER!
153 D1BG LDA* X2P DIFFERENCE 1 IS BIGGER, SO START AT POINT X2,Y2
163 D2BG LDA* X1P DIFFERENCE 2 IS BIGGER, SO START AT POINT X1,Y1
172 WOKI LDA X TEST IF STARTING POINT IST CURRENT POSITION
184 MV1 CALL PL$PU MOVE TO THE STARTING POSITION
191 NM1 CALL PL$PD WE ARE AT BEGINNING OF LINE
197 JMP* LINE END OF THE LINE :-)
200 *X1P DAC 0 ARGUMENT POINER TO X1
201 *Y1P DAC 0 ARGUMENT POINER TO Y1
202 *X2P DAC 0 ARGUMENT POINER TO X2
203 *Y2P DAC 0 ARGUMENT POINER TO Y2
204 XA DEC 0 REAL FIRST POINT X COORDINATE
205 YA DEC 0 REAL FIRST POINT Y COORDINATE
206 XB DEC 0 REAL SECOND POINT X COORDINATE
207 YB DEC 0 REAL SECOND POINT Y COORDINATE
208 D1 DEC 0 ORTHOGONAL WAY LENGTH FROM CURRENT POS TO P1
209 D2 DEC 0 ORTHOGONAL WAY LENGTH FROM CURRENT POS TO P2
212 ********************************************************************************
214 RST DAC ** SET POINT ZERO
227 LDX MOVE GET PARAMETERS
234 STA MOVE CORRECT RETURN ADDRESS
236 CALL M$APLI APPLY TRANSFORMATION MATRIX TO POSITION
241 JST RMOV CALL INTO REAL MOVE SUBROUTINE
244 ****************************************
246 RMOV DAC ** REAL MOVE SUBROUTINE
259 STA DX NOW, DX IS POSITIVE!
280 STA DY NOW, DY IS POSITIVE!
293 JMP XGTY DX GREATER DY
294 YGTX NOP DY GREATER OR EQUAL DX
314 GTE LDA DL LONG DISTANCE
316 STA ERR INITIALIZE ERROR COUNTER
322 JMP FNSH END OF WORK - HOPE SO....
328 SMI SKIP IF NOT OVERFLOWN (MINUS)
329 JMP NDIA NO DIAG STEP
337 NDIA JST* STPL LONG DIR STEP ONLY
344 JMP* RMOV END OF THE ROUTINE
347 ********************************************************************************
350 IDEN DAC ** RESET TRANSFORMATION MATRIX
356 ********************************************************************************
370 ********************************************************************************
372 *** MOVE COORDINATE SYSTEM RELATIVELY
392 **********************
396 X DEC 0 PEN POSITION, X VALUE
397 Y DEC 0 PEN POSITION, Y VALUE
398 XN DEC 0 NEW PEN POSITION, X VALUE
399 YN DEC 0 NEW PEN POSITION, Y VALUE
400 DX DEC 0 X DIFFERENCE TO GO
401 DY DEC 0 Y DIFFERENCE TO GO
403 DL DEC 0 LONG DISTANCE NEGATIVE
404 DS DEC 0 SHORT DISTANCE NEGATIVE
405 STPL DAC ** ROUTINE TO LONG DISTANCE STEP
406 STPS DAC ** ROUTINE TO SHORT DISTANCE STEP
407 STPD DAC ** ROUTINE TO DIAGONAL STEP
408 ERR DEC 0 ERROR COUNTER
410 STPX DAC ** X STEP ROUTINE
411 STPY DAC ** Y STEP ROUTINE
412 DIYP DAC ** DIAGONAL X-DIR+UP STEP ROUTINE
413 DIYN DAC ** DIAGONAL X-DIR+DOWN STEP ROUTINE
414 TMP DAC ** UNIVERSAL POINTER
416 * GLUE IN THE MOVEMENT
426 ********************************************************************************
428 *** HERE THE TRANSFORMATION MATRIX, INITIALLY NO TRANSFORMATION, OLD PROGRAMS
429 *** DON'T HAVE TO CARE ABOUT THAT (HOPE SO)
440 ********************************************************************************