| 1 | * (PL$MV) REV 1.0 INCREMENTAL PLOTTER ROUTINES |
| 2 | * |
| 3 | * |
| 4 | * PROGRAM TITLE: |
| 5 | * PL$MV (PL$MV,PL$RST) |
| 6 | * |
| 7 | * PLOTTER MOVEMENT ROUTINES |
| 8 | * |
| 9 | * |
| 10 | * REVISIONS: |
| 11 | * 1.0 (2007-05-28) |
| 12 | * |
| 13 | * AUTHOR: |
| 14 | * |
| 15 | * PHILIPP HACHTMANN |
| 16 | * |
| 17 | * |
| 18 | * PURPOSE: |
| 19 | * |
| 20 | * PROVIDE SIMPLE LIBRARY FUNCTIONS FOR INCREMENTAL PLOTTERS |
| 21 | * |
| 22 | * |
| 23 | * STORAGE: |
| 24 | * |
| 25 | * ??? (OCTAL) |
| 26 | * ??? (DECIMAL) |
| 27 | * |
| 28 | * |
| 29 | * USAGE |
| 30 | * |
| 31 | * CALL PL$RST - SET VIRTUAL PLOT POSITION TO ZERO |
| 32 | * |
| 33 | * CALL PL$MV - MOVE TO POINT SPECIFIED |
| 34 | * DAC XN BY XN |
| 35 | * DAC YN AND YN VALUE |
| 36 | * |
| 37 | * |
| 38 | * |
| 39 | ******************************************************************************** |
| 40 | * |
| 41 | * |
| 42 | SUBR PL$MV,MOVE |
| 43 | SUBR PL$RST,RST |
| 44 | * |
| 45 | * |
| 46 | REL THIS IS A RELOCATABLE OBJECT |
| 47 | ORG '0 |
| 48 | * |
| 49 | * |
| 50 | RST DAC ** SET POINT ZERO |
| 51 | STA X |
| 52 | CRA |
| 53 | STA Y |
| 54 | IMA X |
| 55 | JMP* RST |
| 56 | * |
| 57 | * |
| 58 | MOVE DAC ** MOVE YA! |
| 59 | * |
| 60 | LDA* MOVE GET PARAMETERS |
| 61 | STA TMP |
| 62 | LDA* TMP |
| 63 | STA XN |
| 64 | SUB X |
| 65 | STA DX |
| 66 | IRS MOVE |
| 67 | LDA* MOVE |
| 68 | STA TMP |
| 69 | LDA* TMP |
| 70 | STA YN |
| 71 | SUB Y |
| 72 | STA DY |
| 73 | IRS MOVE |
| 74 | IRS MOVE CORRECT RETURN ADDRESS |
| 75 | * |
| 76 | * HLT |
| 77 | * LDA YN |
| 78 | * IAB |
| 79 | * LDA XN |
| 80 | * HLT |
| 81 | * JMP 1 |
| 82 | * |
| 83 | LDA DX |
| 84 | SMI |
| 85 | JMP DXP DX POSITIVE |
| 86 | * DX NEGATIVE |
| 87 | TCA |
| 88 | STA DX NOW, DX IS POSITIVE! |
| 89 | LDA ML |
| 90 | STA STPX |
| 91 | LDA MUL |
| 92 | STA DIYP |
| 93 | LDA MDL |
| 94 | STA DIYN |
| 95 | JMP DXNP |
| 96 | DXP LDA MR |
| 97 | STA STPX |
| 98 | LDA MUR |
| 99 | STA DIYP |
| 100 | LDA MDR |
| 101 | STA DIYN |
| 102 | JMP DXNP |
| 103 | * |
| 104 | DXNP LDA DY |
| 105 | SMI |
| 106 | JMP DYP DY POSITIVE |
| 107 | * DY NEGATIVE |
| 108 | TCA |
| 109 | STA DY NOW, DY IS POSITIVE! |
| 110 | LDA MD |
| 111 | STA STPY |
| 112 | LDA DIYN |
| 113 | STA STPD |
| 114 | JMP DYNP |
| 115 | DYP LDA MU |
| 116 | STA STPY |
| 117 | LDA DIYP |
| 118 | STA STPD |
| 119 | * |
| 120 | DYNP LDA DX |
| 121 | CAS DY |
| 122 | JMP XGTY DX GREATER DY |
| 123 | YGTX NOP DY GREATER OR EQUAL DX |
| 124 | LDA STPY |
| 125 | STA STPL |
| 126 | LDA STPX |
| 127 | STA STPS |
| 128 | LDA DX |
| 129 | STA DS |
| 130 | LDA DY |
| 131 | STA DL |
| 132 | JMP GTE |
| 133 | * |
| 134 | XGTY LDA STPY |
| 135 | STA STPS |
| 136 | LDA STPX |
| 137 | STA STPL |
| 138 | LDA DX |
| 139 | STA DL |
| 140 | LDA DY |
| 141 | STA DS |
| 142 | * |
| 143 | GTE LDA DL LONG DISTANCE |
| 144 | LGR 1 DIVIDE BY TWO |
| 145 | STA ERR INITIALIZE ERROR COUNTER |
| 146 | * |
| 147 | * |
| 148 | * |
| 149 | LOOP LDA DL |
| 150 | SNZ |
| 151 | JMP FNSH END OF WORK - HOPE SO.... |
| 152 | SUB =1 DECREMENT DL |
| 153 | STA DL |
| 154 | LDA ERR |
| 155 | SUB DS |
| 156 | STA ERR |
| 157 | SMI SKIP IF NOT OVERFLOWN (MINUS) |
| 158 | JMP NDIA NO DIAG STEP |
| 159 | ADD DL RELOAD |
| 160 | STA ERR |
| 161 | LDA DS |
| 162 | SUB =1 |
| 163 | STA DS |
| 164 | JST* STPD |
| 165 | JMP STEN END OF STEP |
| 166 | NDIA JST* STPL LONG DIR STEP ONLY |
| 167 | STEN JMP LOOP RELOOP |
| 168 | * |
| 169 | FNSH LDA XN |
| 170 | STA X |
| 171 | LDA YN |
| 172 | STA Y |
| 173 | JMP* MOVE END OF THE ROUTINE |
| 174 | ********************** |
| 175 | * |
| 176 | * VARIABLES |
| 177 | * |
| 178 | X DEC 0 PEN POSITION, X VALUE |
| 179 | Y DEC 0 PEN POSITION, Y VALUE |
| 180 | XN DEC 0 NEW PEN POSITION, X VALUE |
| 181 | YN DEC 0 NEW PEN POSITION, Y VALUE |
| 182 | DX DEC 0 X DIFFERENCE TO GO |
| 183 | DY DEC 0 Y DIFFERENCE TO GO |
| 184 | * |
| 185 | DL DEC 0 LONG DISTANCE NEGATIVE |
| 186 | DS DEC 0 SHORT DISTANCE NEGATIVE |
| 187 | STPL DAC ** ROUTINE TO LONG DISTANCE STEP |
| 188 | STPS DAC ** ROUTINE TO SHORT DISTANCE STEP |
| 189 | STPD DAC ** ROUTINE TO DIAGONAL STEP |
| 190 | ERR DEC 0 ERROR COUNTER |
| 191 | * |
| 192 | STPX DAC ** X STEP ROUTINE |
| 193 | STPY DAC ** Y STEP ROUTINE |
| 194 | DIYP DAC ** DIAGONAL X-DIR+UP STEP ROUTINE |
| 195 | DIYN DAC ** DIAGONAL X-DIR+DOWN STEP ROUTINE |
| 196 | TMP DAC ** UNIVERSAL POINTER |
| 197 | * |
| 198 | * GLUE IN THE MOVEMENT |
| 199 | MU XAC PL$U |
| 200 | MD XAC PL$D |
| 201 | ML XAC PL$L |
| 202 | MR XAC PL$R |
| 203 | MUL XAC PL$UL |
| 204 | MUR XAC PL$UR |
| 205 | MDL XAC PL$DL |
| 206 | MDR XAC PL$DR |
| 207 | * |
| 208 | * |
| 209 | END |