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
75 ********************************************************************************
78 BUFP DEC 0 POINTER TO TEXT BUFFER IN FORTRAN PROGRAM
79 BLEN DEC 0 LENGTH OF TEXT TO OUTPUT
82 ********************************************************************************
85 TXIN DAC ** INTERNAL TEXT WRITE ROUTINE
87 CALL PL$PUS PUSH GRAPHIC CONTEXT ONTO STACK
89 CALL PL$RST RESET COORDINATE SYSTEM. NOW WE MENTALLY PLOT FROM 0,0!
91 TLOP LDA BLEN CHARACTER LOOP, FIRST TEST CHAR COUNTER
93 JMP TFIN NO MORE CHARACTERS LEFT, GO HOME
95 LDA* BUFP NOW TEST TEXT FOR ZERO-TERMINATION
97 JMP TFIN ZERO-TERMINATION, GO HOME
99 TEGO LGR 8 TAKE DOWN UPPER CHARACTER
100 ANA ='177 MASK OUT PARITY BIT
103 STA TWDH ACCOUNT FOR TEXT WIDTH
105 IRS BLEN INCREMENT CHARACTER COUNTER
107 JMP TFIN NO MORE CHARACTERS LEFT, GO HOME.
109 LDA* BUFP NOW DO THE SECOND CHARACTER OF THE WORD.
110 ANA ='177 MASK OUT UPPER BITS AND PARITY.
114 STA TWDH ACCOUNT FOR TEXT WIDTH
120 IRS BUFP INCREMENT BUFFER POINTER TO NEXT LOCATION
121 JMP TLOP JUMP BACK IN CHARACTER LOOP
124 TFIN CALL PL$POP GET OLD GRAPHIC CONTEXT AND BE HAPPY
131 JMP* TXIN THAT'S IT, RETURN
135 **********************************************************
138 PLG DAC ** GLYPH DRAWING ROUTINE
139 STA ARG SAVE ARGUMENT
140 LDX FONT POINTER TO BEGINNING OF FONT FILE
141 LDA 4,1 LOAD POINT COUNT FROM (*FONT)+4
143 STA LEFT STORE AS NEGATIVE COUNTER
145 ADD =5 CALCULATE FIRST GLYPH'S ADDRESS
146 STA GPTR SAVE TO GLYPH POINTER
149 FIND LDA LEFT SEARCH LOOP ENTRY
151 JMP FGOO WE STILL HAVE GLYPHS TO TEST, THERE IS HOPE!
153 CRA FAILED. WE HAVE NOT GENERATED AN OFFSET.
156 FGOO LDA* GPTR LOAD GLYPH NUMBER
157 SUB ARG SUBSTRACT WANTED GLYPH NUMBER
159 JMP PGLP FOUND, TAKE GLYPH TO THE PLOTTING ROUTINE!
161 IRS LEFT INCREMENT LOOP COUNTER
167 JMP FIND SEARCH AGAIN
170 PGLP LDX GPTR LOAD CURRENT GLYPH'S ADDRESS TO INDEX REGISTER
172 LDA 2,1 LOAD OUR GLYPH'S LEFT AND RIGHT MARGINS
173 LGR 8 USE UPPER BITS FIRST
174 SUB =82 SUBSTRACT LETTER R - ASK HERSHEY, WHY IT'S THAT WAY!
175 TCA WE WANT THE LEFT MARGIN NEGATED FOR LATER USE.
177 LDA 2,1 LOAD THE MARGINS AGAIN
178 CAL CLEAR UPPER BITS OF A
179 SUB =81 THAT'S CORRECT, ONE LESS FOR NOT OVERLAPPING GLYPHS!
180 STA XNEX SAVE RIGHT MARGIN
182 LDA 1,1 LOAD POINT COUNT
185 AOA INCREMENT - FIRST "POINT" WERE THE MARGINS.
186 STA LEFT SET UP THE WELL KNOWN COUNTER.
188 CALL PL$RMR MOVE ORIGIN
190 DAC ZERO Y STAYS UNCHANGED.
194 ADD =3 ADD OFFSET IN GLYPH DATA
195 STA PPTR SAVE POINTER TO FIRST POINT DATA WORD.
198 MLOP LDA LEFT DRAWING LOOP ENTRY
200 JMP MFIN FINISHED DRAWING THAT GLYPH. GO, CLEAN UP.
204 SUB ='20122 TEST FOR OBSCURE PEN UP CONDITION - ASK HERSHEY..
206 JMP PUP THIS WORD CONTAINS ONLY A PEN UP COMMAND.
208 LDA* PPTR MAKE POINT'S X VALUE
210 SUB =82 SUBSTRACT LETTER R - ASK HERSHEY
213 LDX FONT WE WILL NEED THE BASELINE HEIGHT FROM THERE
214 LDA* PPTR LOAD AGAIN, FOR Y POSITION
216 SUB =82 THE SUBSTRACTION..
217 TCA HERSHEY LIVED IN THE 4TH QUADRANT - WE IN THE 1ST.
218 SUB 1,1 SUBTRACT BASELINE OFFSET
222 CALL PL$MV MOVE TO POINT
226 CALL PL$PD AND THEN PEN DOWN. ASK HERSHEY..
228 PEND IRS PPTR INCREMENT POINT POINTER
229 IRS LEFT INCREMENT POINT COUNTER
234 PUP CALL PL$PU PEN UP
235 JMP PEND GET BACK TO THE LOOP END
238 MFIN CALL PL$PU END OF GLYPH, PEN UP!
240 CALL PL$RMR FUZZ COORDINATES AGAIN.
241 DAC XNEX THE 81 ABOVE SAVES AN ADDITION OF 1 HERE.
242 DAC ZERO Y UNTOUCHED. ZERO IS ZERO.
245 * CALL PL$MV MOVE PEN TO BEGINNING OF NEXT GLYPH - JUST IN CASE...
249 LDA XMIN RETURN WITH CORRECT WIDTH VALUE
251 JMP* PLG RETURN TO CALLER.
254 ****************************************************************
258 ********************************************************************
268 TWDH DAC ** GENERATED TEXT WIDTH