10 * DAC STACK POINTER TO INITIALIZED STACK
11 * DAC TEXT POINTER TO TEXT
12 * DAC LENGTH POINTER TO TEXT LENGTH
13 * DAC 0 ZERO FOR FORTRAN IV COMPATIBILITY
25 ********************************************************************************
28 LDA* FONT LOAD VERTICAL SPACING FROM FONT
31 LDA TWDH LAST TEXT WIDTH
34 CALL PL$MVR MOVE RELATIVELY
41 ********************************************************************************
44 **** PL$TXT - TEXT OUTPUT ROUTINE
46 FPTX DAC ** FORTRAN TEXT OUTPUT ROUTINE
48 LDA* FPTX LOAD STACK DATA POINTER
53 LDA* FPTX ARGUMENT TRANSFER
57 LDA* FPTX PLEN IS INVERTED IMMEDIATELY
65 CALL PL$PU DON'T KNOW WHAT HAS HAPPENED BEFORE: PEN UP!
70 JST TXIN EXECUTE INTERNAL TEXT ROUTINE
73 JMP* FPTX RETURN TO CALLER
76 * TXTT BCI 10,Philipp VOID
78 ********************************************************************************
81 BUFP DEC 0 POINTER TO TEXT BUFFER IN FORTRAN PROGRAM
82 BLEN DEC 0 LENGTH OF TEXT TO OUTPUT
85 ********************************************************************************
88 TXIN DAC ** INTERNAL TEXT WRITE ROUTINE
90 CALL PL$PUS PUSH GRAPHIC CONTEXT ONTO STACK
92 CALL PL$RST RESET COORDINATE SYSTEM. NOW WE MENTALLY PLOT FROM 0,0!
94 TLOP LDA BLEN CHARACTER LOOP, FIRST TEST CHAR COUNTER
96 JMP TFIN NO MORE CHARACTERS LEFT, GO HOME
98 LDA* BUFP NOW TEST TEXT FOR ZERO-TERMINATION
100 JMP TFIN ZERO-TERMINATION, GO HOME
102 TEGO LGR 8 TAKE DOWN UPPER CHARACTER
103 ANA ='177 MASK OUT PARITY BIT
108 IRS BLEN INCREMENT CHARACTER COUNTER
110 JMP TFIN NO MORE CHARACTERS LEFT, GO HOME.
112 LDA* BUFP NOW DO THE SECOND CHARACTER OF THE WORD.
113 ANA ='177 MASK OUT UPPER BITS AND PARITY.
123 IRS BUFP INCREMENT BUFFER POINTER TO NEXT LOCATION
124 JMP TLOP JUMP BACK IN CHARACTER LOOP
127 TFIN CALL PL$POP GET OLD GRAPHIC CONTEXT AND BE HAPPY
134 JMP* TXIN THAT'S IT, WE GO HOME.
138 **********************************************************
141 PLG DAC ** GLYPH DRAWING ROUTINE
142 STA ARG SAVE ARGUMENT
143 LDX FONT POINTER TO BEGINNING OF FONT FILE
144 LDA 4,1 LOAD POINT COUNT FROM (*FONT)+4
146 STA LEFT STORE AS NEGATIVE COUNTER
148 ADD =5 CALCULATE FIRST GLYPH'S ADDRESS
149 STA GPTR SAVE TO GLYPH POINTER
152 FIND LDA LEFT SEARCH LOOP ENTRY
154 JMP FGOO WE STILL HAVE GLYPHS TO TEST, THERE IS HOPE!
156 CRA FAILED. WE HAVE NOT GENERATED AN OFFSET.
159 FGOO LDA* GPTR LOAD GLYPH NUMBER
160 SUB ARG SUBSTRACT WANTED GLYPH NUMBER
162 JMP PGLP FOUND, TAKE GLYPH TO THE PLOTTING ROUTINE!
164 IRS LEFT INCREMENT LOOP COUNTER
170 JMP FIND SEARCH AGAIN
173 PGLP LDX GPTR LOAD CURRENT GLYPH'S ADDRESS TO INDEX REGISTER
175 LDA 2,1 LOAD OUR GLYPH'S LEFT AND RIGHT MARGINS
176 LGR 8 USE UPPER BITS FIRST
177 SUB =82 SUBSTRACT LETTER R - ASK HERSHEY, WHY IT'S THAT WAY!
178 TCA WE WANT THE LEFT MARGIN NEGATED FOR LATER USE.
180 LDA 2,1 LOAD THE MARGINS AGAIN
181 CAL CLEAR UPPER BITS OF A
182 SUB =81 THAT'S CORRECT, ONE LESS FOR NOT OVERLAPPING GLYPHS!
183 STA XNEX SAVE RIGHT MARGIN
185 LDA 1,1 LOAD POINT COUNT
188 AOA INCREMENT - FIRST "POINT" WERE THE MARGINS.
189 STA LEFT SET UP THE WELL KNOWN COUNTER.
191 CALL PL$RMR MOVE ORIGIN
193 DAC ZERO Y STAYS UNCHANGED.
197 ADD =3 ADD OFFSET IN GLYPH DATA
198 STA PPTR SAVE POINTER TO FIRST POINT DATA WORD.
201 MLOP LDA LEFT DRAWING LOOP ENTRY
203 JMP MFIN FINISHED DRAWING THAT GLYPH. GO, CLEAN UP.
207 SUB ='20122 TEST FOR OBSCURE PEN UP CONDITION - ASK HERSHEY..
209 JMP PUP THIS WORD CONTAINS ONLY A PEN UP COMMAND.
211 LDA* PPTR MAKE POINT'S X VALUE
213 SUB =82 SUBSTRACT LETTER R - ASK HERSHEY
216 LDX FONT WE WILL NEED THE BASELINE HEIGHT FROM THERE
217 LDA* PPTR LOAD AGAIN, FOR Y POSITION
219 SUB =82 THE SUBSTRACTION..
220 TCA HERSHEY LIVED IN THE 4TH QUADRANT - WE IN THE 1ST.
221 SUB 1,1 SUBTRACT BASELINE OFFSET
225 CALL PL$MV MOVE TO POINT
229 CALL PL$PD AND THEN PEN DOWN. ASK HERSHEY..
231 PEND IRS PPTR INCREMENT POINT POINTER
232 IRS LEFT INCREMENT POINT COUNTER
237 PUP CALL PL$PU PEN UP
238 JMP PEND GET BACK TO THE LOOP END
241 MFIN CALL PL$PU END OF GLYPH, PEN UP!
243 CALL PL$RMR FUZZ COORDINATES AGAIN.
244 DAC XNEX THE 81 ABOVE SAVES AN ADDITION OF 1 HERE.
245 DAC ZERO Y UNTOUCHED. ZERO IS ZERO.
248 * CALL PL$MV MOVE PEN TO BEGINNING OF NEXT GLYPH - JUST IN CASE...
252 LDA XMIN RETURN WITH CORRECT WIDTH VALUE
254 JMP* PLG RETURN TO CALLER.
257 ****************************************************************
261 ********************************************************************
271 TWDH DAC ** GENERATED TEXT WIDTH