13 ********************************************************************************
16 LDA* FONT LOAD VERTICAL SPACING FROM FONT
19 LDA TWDH LAST TEXT WIDTH
22 CALL PL$MVR MOVE RELATIVELY
29 ********************************************************************************
32 **** PL$TXT - TEXT OUTPUT ROUTINE
34 FPTX DAC ** FORTRAN TEXT OUTPUT ROUTINE
36 LDA* FPTX LOAD STACK DATA POINTER
41 LDA* FPTX ARGUMENT TRANSFER
45 LDA* FPTX PLEN IS INVERTED IMMEDIATELY
53 CALL PL$PU DON'T KNOW WHAT HAS HAPPENED BEFORE: PEN UP!
58 JST TXIN EXECUTE INTERNAL TEXT ROUTINE
61 JMP* FPTX RETURN TO CALLER
64 * TXTT BCI 10,Philipp VOID
66 ********************************************************************************
69 BUFP DEC 0 POINTER TO TEXT BUFFER IN FORTRAN PROGRAM
70 BLEN DEC 0 LENGTH OF TEXT TO OUTPUT
73 ********************************************************************************
76 TXIN DAC ** INTERNAL TEXT WRITE ROUTINE
78 CALL PL$PUS PUSH GRAPHIC CONTEXT ONTO STACK
80 CALL PL$RST RESET COORDINATE SYSTEM. NOW WE MENTALLY PLOT FROM 0,0!
82 TLOP LDA BLEN CHARACTER LOOP, FIRST TEST CHAR COUNTER
84 JMP TFIN NO MORE CHARACTERS LEFT, GO HOME
86 LDA* BUFP NOW TEST TEXT FOR ZERO-TERMINATION
88 JMP TFIN ZERO-TERMINATION, GO HOME
90 TEGO LGR 8 TAKE DOWN UPPER CHARACTER
91 ANA ='177 MASK OUT PARITY BIT
96 IRS BLEN INCREMENT CHARACTER COUNTER
98 JMP TFIN NO MORE CHARACTERS LEFT, GO HOME.
100 LDA* BUFP NOW DO THE SECOND CHARACTER OF THE WORD.
101 ANA ='177 MASK OUT UPPER BITS AND PARITY.
111 IRS BUFP INCREMENT BUFFER POINTER TO NEXT LOCATION
112 JMP TLOP JUMP BACK IN CHARACTER LOOP
115 TFIN CALL PL$POP GET OLD GRAPHIC CONTEXT AND BE HAPPY
122 JMP* TXIN THAT'S IT, WE GO HOME.
126 **********************************************************
129 PLG DAC ** GLYPH DRAWING ROUTINE
130 STA ARG SAVE ARGUMENT
131 LDX FONT POINTER TO BEGINNING OF FONT FILE
132 LDA 4,1 LOAD POINT COUNT FROM (*FONT)+4
134 STA LEFT STORE AS NEGATIVE COUNTER
136 ADD =5 CALCULATE FIRST GLYPH'S ADDRESS
137 STA GPTR SAVE TO GLYPH POINTER
140 FIND LDA LEFT SEARCH LOOP ENTRY
142 JMP FGOO WE STILL HAVE GLYPHS TO TEST, THERE IS HOPE!
144 CRA FAILED. WE HAVE NOT GENERATED AN OFFSET.
147 FGOO LDA* GPTR LOAD GLYPH NUMBER
148 SUB ARG SUBSTRACT WANTED GLYPH NUMBER
150 JMP PGLP FOUND, TAKE GLYPH TO THE PLOTTING ROUTINE!
152 IRS LEFT INCREMENT LOOP COUNTER
158 JMP FIND SEARCH AGAIN
161 PGLP LDX GPTR LOAD CURRENT GLYPH'S ADDRESS TO INDEX REGISTER
163 LDA 2,1 LOAD OUR GLYPH'S LEFT AND RIGHT MARGINS
164 LGR 8 USE UPPER BITS FIRST
165 SUB =82 SUBSTRACT LETTER R - ASK HERSHEY, WHY IT'S THAT WAY!
166 TCA WE WANT THE LEFT MARGIN NEGATED FOR LATER USE.
168 LDA 2,1 LOAD THE MARGINS AGAIN
169 CAL CLEAR UPPER BITS OF A
170 SUB =81 THAT'S CORRECT, ONE LESS FOR NOT OVERLAPPING GLYPHS!
171 STA XNEX SAVE RIGHT MARGIN
173 LDA 1,1 LOAD POINT COUNT
176 AOA INCREMENT - FIRST "POINT" WERE THE MARGINS.
177 STA LEFT SET UP THE WELL KNOWN COUNTER.
179 CALL PL$RMR MOVE ORIGIN
181 DAC ZERO Y STAYS UNCHANGED.
185 ADD =3 ADD OFFSET IN GLYPH DATA
186 STA PPTR SAVE POINTER TO FIRST POINT DATA WORD.
189 MLOP LDA LEFT DRAWING LOOP ENTRY
191 JMP MFIN FINISHED DRAWING THAT GLYPH. GO, CLEAN UP.
195 SUB ='20122 TEST FOR OBSCURE PEN UP CONDITION - ASK HERSHEY..
197 JMP PUP THIS WORD CONTAINS ONLY A PEN UP COMMAND.
199 LDA* PPTR MAKE POINT'S X VALUE
201 SUB =82 SUBSTRACT LETTER R - ASK HERSHEY
204 LDX FONT WE WILL NEED THE BASELINE HEIGHT FROM THERE
205 LDA* PPTR LOAD AGAIN, FOR Y POSITION
207 SUB =82 THE SUBSTRACTION..
208 TCA HERSHEY LIVED IN THE 4TH QUADRANT - WE IN THE 1ST.
209 SUB 1,1 SUBTRACT BASELINE OFFSET
213 CALL PL$MV MOVE TO POINT
217 CALL PL$PD AND THEN PEN DOWN. ASK HERSHEY..
219 PEND IRS PPTR INCREMENT POINT POINTER
220 IRS LEFT INCREMENT POINT COUNTER
225 PUP CALL PL$PU PEN UP
226 JMP PEND GET BACK TO THE LOOP END
229 MFIN CALL PL$PU END OF GLYPH, PEN UP!
231 CALL PL$RMR FUZZ COORDINATES AGAIN.
232 DAC XNEX THE 81 ABOVE SAVES AN ADDITION OF 1 HERE.
233 DAC ZERO Y UNTOUCHED. ZERO IS ZERO.
236 * CALL PL$MV MOVE PEN TO BEGINNING OF NEXT GLYPH - JUST IN CASE...
240 LDA XMIN RETURN WITH CORRECT WIDTH VALUE
242 JMP* PLG RETURN TO CALLER.
245 ****************************************************************
249 ********************************************************************
259 TWDH DAC ** GENERATED TEXT WIDTH