*** empty log message ***
[h316.git] / lib / iolib / src / pl$mv.asm
CommitLineData
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*
50RST DAC ** SET POINT ZERO
51 STA X
52 CRA
53 STA Y
54 IMA X
55 JMP* RST
56*
57*
58MOVE 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
96DXP LDA MR
97 STA STPX
98 LDA MUR
99 STA DIYP
100 LDA MDR
101 STA DIYN
102 JMP DXNP
103*
104DXNP 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
115DYP LDA MU
116 STA STPY
117 LDA DIYP
118 STA STPD
119*
120DYNP LDA DX
121 CAS DY
122 JMP XGTY DX GREATER DY
123YGTX 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*
134XGTY LDA STPY
135 STA STPS
136 LDA STPX
137 STA STPL
138 LDA DX
139 STA DL
140 LDA DY
141 STA DS
142*
143GTE LDA DL LONG DISTANCE
144 LGR 1 DIVIDE BY TWO
145 STA ERR INITIALIZE ERROR COUNTER
146*
147*
148*
149LOOP 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
166NDIA JST* STPL LONG DIR STEP ONLY
167STEN JMP LOOP RELOOP
168*
169FNSH LDA XN
170 STA X
171 LDA YN
172 STA Y
173 JMP* MOVE END OF THE ROUTINE
174**********************
175*
176* VARIABLES
177*
178X DEC 0 PEN POSITION, X VALUE
179Y DEC 0 PEN POSITION, Y VALUE
180XN DEC 0 NEW PEN POSITION, X VALUE
181YN DEC 0 NEW PEN POSITION, Y VALUE
182DX DEC 0 X DIFFERENCE TO GO
183DY DEC 0 Y DIFFERENCE TO GO
184*
185DL DEC 0 LONG DISTANCE NEGATIVE
186DS DEC 0 SHORT DISTANCE NEGATIVE
187STPL DAC ** ROUTINE TO LONG DISTANCE STEP
188STPS DAC ** ROUTINE TO SHORT DISTANCE STEP
189STPD DAC ** ROUTINE TO DIAGONAL STEP
190ERR DEC 0 ERROR COUNTER
191*
192STPX DAC ** X STEP ROUTINE
193STPY DAC ** Y STEP ROUTINE
194DIYP DAC ** DIAGONAL X-DIR+UP STEP ROUTINE
195DIYN DAC ** DIAGONAL X-DIR+DOWN STEP ROUTINE
196TMP DAC ** UNIVERSAL POINTER
197*
198* GLUE IN THE MOVEMENT
199MU XAC PL$U
200MD XAC PL$D
201ML XAC PL$L
202MR XAC PL$R
203MUL XAC PL$UL
204MUR XAC PL$UR
205MDL XAC PL$DL
206MDR XAC PL$DR
207*
208*
209 END