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 DRAWING AND COORDINATE TRANSFORMATION
31 * ROUTINES FOR INCREMENTAL PLOTTERS
42 * CALL PL$RST - SET VIRTUAL PLOT POSITION TO ZERO
44 * CALL PL$MV - MOVE TO POINT SPECIFIED
49 * CALL PL$LN - DRAW LINE AND LEAVE PEN DOWN
56 * CALL PL$RMR - MOVE ORIGIN RELATIVELY
61 * CALL PL$SCL - SCALE TRANSFORMATION
62 * DAC SCALE SCALE FACTOR, FLOAT
65 * CALL PL$IDN - RESET TRANSFORMATION MATRIX
67 ********************************************************************************
88 REL THIS IS A RELOCATABLE OBJECT
92 ********************************************************************************
94 **** PL$MVR - MOVE PEN RELATIVELY
122 **** PL$INI - GRAPHICS INITIALISATION
124 * THIS ROUTINE SETS THE HARDWARE ORIGIN TO THE CURRENT PlOTTER POSITION.
125 * IT ALSO INITIALISES THE TRANSFORMATION.
127 ****************************************
142 **** PL$PUS - PUSH GRAPHIC CONTEXT ONTO THE STACK
148 CALL S$PUSM PUSH MEMORY ROUTINE
151 DEC 12 12 WORDS OF DATA.
155 ********************************************************************************
158 **** PL$POP - POP GRAPHIC CONTEXT FROM THE STACK
164 CALL S$POPM POP MEMORY ROUTINE
167 DEC 12 12 WORDS OF DATA.
171 * *******************************************************************************
174 **** PL$LN - DRAW A LINE
176 LINE DAC 0 DRAW A LINE FROM NEAREST STARTING POINT
188 IRS LINE TALLY RETURN ADDRESS
189 IRS LINE AGAIN FOR FORTRAN IV COMPATIBILITY
191 CALL T$APII APPLY MATRIX
199 CALL T$APII APPLY MATRIX
210 SPL SKIP IF SIGN PLUS
211 TCA TWO'S COMPLEMENT IF NEEDED
222 SPL SKIP IF SIGN PLUS
223 TCA TWO'S COMPLEMENT IF NEEDED
231 JMP D2BG D2 IS BIGGER!
234 D1BG LDA X2 DIFFERENCE 1 IS BIGGER, SO START AT POINT X2,Y2
244 D2BG LDA X1 DIFFERENCE 2 IS BIGGER, SO START AT POINT X1,Y1
253 WOKI LDA X TEST IF STARTING POINT IST CURRENT POSITION
265 MV1 CALL PL$PU MOVE TO THE STARTING POSITION
272 NM1 CALL PL$PD WE ARE AT BEGINNING OF LINE
278 JMP* LINE END OF THE LINE :-)
281 ********************************************************************************
283 **** MAKE CURRENT X AND Y THE ORIGIN
287 **** FIRST TRANSLATE THE CURRENT USER POSITION:
300 ********************************************************************************
303 **** PL$MV - BASIC MOVE ROUTINE
307 LDX MOVE GET PARAMETERS
316 STA MOVE CORRECT RETURN ADDRESS
318 CALL T$APII APPLY TRANSFORMATION MATRIX TO POSITION
326 JST RMOV CALL INTO REAL MOVE SUBROUTINE
329 ****************************************
331 RMOV DAC ** REAL MOVE SUBROUTINE
344 STA DX NOW, DX IS POSITIVE!
365 STA DY NOW, DY IS POSITIVE!
378 JMP XGTY DX GREATER DY
379 YGTX NOP DY GREATER OR EQUAL DX
403 ****************************************
405 * NOW ALL STEP ROUTINES, DL0, DS0, DL0, DS0 ETC.
408 GTE LDA DL0 LONG DISTANCE
410 STA ERR INITIALIZE ERROR COUNTER
415 LOOP LDA DL LONG DISTANCE
417 JMP FNSH END OF WORK - HOPE SO....
419 SUB =1 DECREMENT LONG DISTANCE
422 LDA ERR ERROR COUNTER
425 SMI SKIP IF NOT OVERFLOWN (MINUS)
426 JMP NDIA NO DIAG STEP
435 JST* STPD DO DIAGONAL STEP
438 *** NO DIAGONAL STEP TO DO
440 NDIA JST* STPL DO LONG DIRECTION STEP
449 JMP* RMOV END OF THE ROUTINE
452 ********************************************************************************
468 ********************************************************************************
471 **** ROTATE - RADIANT
485 ********************************************************************************
488 **** RLUP - UPDATE LATENT POSITION TO REAL POSITION
493 JMP* RLUP NOTHING TO DO
503 ********************************************************************************
506 **** ROTATE - INTEGER DEGREES
519 ********************************************************************************
522 **** SCALE - INTEGER PERCENTS
535 ********************************************************************************
537 *** MOVE COORDINATE SYSTEM RELATIVELY
557 **********************
561 X DEC 0 HARDWARE VIEW PEN POSITION, X VALUE
562 Y DEC 0 HARDWARE VIEW PEN POSITION, Y VALUE
563 XN DEC 0 NEW PEN POSITION, X VALUE
564 YN DEC 0 NEW PEN POSITION, Y VALUE
565 DX DEC 0 X DIFFERENCE TO GO
566 DY DEC 0 Y DIFFERENCE TO GO
567 TMPX DEC 0 TEMPORARY X VALUE
568 TMPY DEC 0 TEMPORARY Y VALUE
570 DL0 DEC 0 INITIAL LONG DISTANCE
571 DS0 DEC 0 INITIAL SHORT DISTANCE
572 DL DEC 0 LONG DISTANCE
573 DS DEC 0 SHORT DISTANCE
574 STPL DAC ** ROUTINE TO LONG DISTANCE STEP
575 STPS DAC ** ROUTINE TO SHORT DISTANCE STEP
576 STPD DAC ** ROUTINE TO DIAGONAL STEP
577 ERR DEC 0 ERROR COUNTER
579 STPX DAC ** X STEP ROUTINE
580 STPY DAC ** Y STEP ROUTINE
581 DIYP DAC ** DIAGONAL X-DIR+UP STEP ROUTINE
582 DIYN DAC ** DIAGONAL X-DIR+DOWN STEP ROUTINE
584 X1 DEC 0 LINE START POINT, X
585 Y1 DEC 0 LINE START POINT, Y
586 X2 DEC 0 LINE END POINT, X
587 Y2 DEC 0 LINE END POINT, Y
589 XA DEC 0 REAL FIRST POINT X COORDINATE
590 YA DEC 0 REAL FIRST POINT Y COORDINATE
591 XB DEC 0 REAL SECOND POINT X COORDINATE
592 YB DEC 0 REAL SECOND POINT Y COORDINATE
593 D1 DEC 0 ORTHOGONAL WAY LENGTH FROM CURRENT POS TO P1
594 D2 DEC 0 ORTHOGONAL WAY LENGTH FROM CURRENT POS TO P2
595 RELA DEC 0 FLAG INDICATING THAT RELATIVE POSITIONING HAS OCCURED
597 **** GLUE IN THE MOVEMENT ROUTINES
608 ********************************************************************************
611 **** AFFINE TRASFORMATION DATA AND REST OF GRAPHIC CONTEXT
613 * OLD PROGRAMS DON'T HAVE TO WORRY ABOUT THAT. NEWER PROGRAMS SHOULD.
615 *** HERE THE TRANSFORMATION MATRIX, INITIALLY NO TRANSFORMATION, OLD PROGRAMS
616 *** DON'T HAVE TO CARE ABOUT THAT (HOPE SO)
617 ATRA OCT '040300 A11 (CONSTANT 1.0)
623 OCT '040300 A22 (CONSTANT 1.0)
626 VECT DEC 0 X TRANSLATION
628 XU DEC 0 USER VIEW PEN POSITION, X VALUE
629 YU DEC 0 USER VIEW PEN POSITION, Y VALUE
634 ********************************************************************************