fcb7b340 |
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 |