12 ********************************************************************************
14 FPTX DAC ** FORTRAN TEXT OUTPUT ROUTINE
16 LDA* FPTX ARGUMENT TRANSFER
20 LDA* FPTX PLEN IS INVERTED IMMEDIATELY
27 * WE HAVE TO CORRECT OUR BUFFER POINTER, WHY????
28 LDA FPTX LOAD RETURN ADDRESS
36 CALL PL$PU DON'T KNOW WHAT HAS HAPPENED BEFORE: PEN UP!
38 JST TXIN EXECUTE INTERNAL TEXT ROUTINE
40 JMP* FPTX RETURN TO CALLER
43 TXTT BCI 10,Philipp VOID
45 ********************************************************************************
48 BUFP DEC 0 POINTER TO TEXT BUFFER IN FORTRAN PROGRAM
49 BLEN DEC 0 LENGTH OF TEXT TO OUTPUT
52 ********************************************************************************
55 TXIN DAC ** INTERNAL TEXT WRITE ROUTINE
60 STA YPC NEWLINE PROCESSING
67 CALL PL$RST RESET COORDINATE SYSTEM. NOW WE MENTALLY PLOT FROM 0,0!
69 CRA CLEAR X BORROW VARIABLE
70 STA BROW (WILL BE NEEDED TO RESTORE COORDINATE POSITION)
73 TLOP LDA BLEN CHARACTER LOOP, FIRST TEST CHAR COUNTER
75 JMP TFIN NO MORE CHARACTERS LEFT, GO HOME
77 LDA* BUFP NOW TEST TEXT FOR ZERO-TERMINATION
79 JMP TFIN ZERO-TERMINATION, GO HOME
81 TEGO LGR 8 TAKE DOWN UPPER CHARACTER
82 ANA ='177 MASK OUT PARITY BIT
85 ADD BROW PLG CHANGES THE X COORDINATE BUT TELLS US ABOUT THAT.
86 STA BROW WE ADD THE "BORROWED" X PIXELS UP FOR LATER.
88 IRS BLEN INCREMENT CHARACTER COUNTER
90 JMP TFIN NO MORE CHARACTERS LEFT, GO HOME.
92 LDA* BUFP NOW DO THE SECOND CHARACTER OF THE WORD.
93 ANA ='177 MASK OUT UPPER BITS AND PARITY.
102 IRS BUFP INCREMENT BUFFER POINTER TO NEXT LOCATION
103 JMP TLOP JUMP BACK IN CHARACTER LOOP
106 TFIN LDA XPB RESTORE AND GO HOME
107 ADD BROW TAKE HIDDEN X OFFSET INTO ACCOUNT (SEE GLYPH ROUTINE!)
109 STA* XP UPDATE REAL (RELATED TO ORIGINAL COORDINATES) POSITION
114 JMP* TXIN THAT'S IT, WE GO HOME.
117 XP XAC PL$X EXTERNAL POINTER TO PLOT X COORDINATE
118 YP XAC PL$Y EXTERNAL POINTER TO PLOT Y COORDINATE
120 XPB DEC 0 BACKUP OF X COORDINATE
121 YPB DEC 0 BACKUP OF Y COORDINATE
123 BROW DEC 0 BORROWED X PIXELS
125 **********************************************************
128 PLG DAC ** GLYPH DRAWING ROUTINE
129 STA ARG SAVE ARGUMENT
130 LDX FONT POINTER TO BEGINNING OF FONT FILE
131 LDA 4,1 LOAD POINT COUNT FROM (*FONT)+4
133 STA LEFT STORE AS NEGATIVE COUNTER
135 ADD =5 CALCULATE FIRST GLYPH'S ADDRESS
136 STA GPTR SAVE TO GLYPH POINTER
139 FIND LDA LEFT SEARCH LOOP ENTRY
141 JMP FGOO WE STILL HAVE GLYPHS TO TEST, THERE IS HOPE!
143 CRA FAILED. WE HAVE NOT GENERATED AN OFFSET.
146 FGOO LDA* GPTR LOAD GLYPH NUMBER
147 SUB ARG SUBSTRACT WANTED GLYPH NUMBER
149 JMP PGLP FOUND, TAKE GLYPH TO THE PLOTTING ROUTINE!
151 IRS LEFT INCREMENT LOOP COUNTER
157 JMP FIND SEARCH AGAIN
160 PGLP LDX GPTR LOAD CURRENT GLYPH'S ADDRESS TO INDEX REGISTER
162 LDA 2,1 LOAD OUR GLYPH'S LEFT AND RIGHT MARGINS
163 LGR 8 USE UPPER BITS FIRST
164 SUB =82 SUBSTRACT LETTER R - ASK HERSHEY, WHY IT'S THAT WAY!
165 TCA WE WANT THE LEFT MARGIN NEGATED FOR LATER USE.
167 LDA 2,1 LOAD THE MARGINS AGAIN
168 CAL CLEAR UPPER BITS OF A
169 SUB =81 THAT'S CORRECT, ONE LESS FOR NOT OVERLAPPING GLYPHS!
170 STA X2 SAVE RIGHT MARGIN
172 CALL PL$RMR MOVE PLOT ORIGIN - THE REASON FOR THE BORROW STUFF.
173 DAC X1 GLYPH SHOULD START AT ORIGINAL X=0..BUT - ASK HERSHEY
174 DAC ZERO Y STAYS UNCHANGED.
177 LDA 1,1 LOAD POINT COUNT
179 AOA INCREMENT - FIRST "POINT" WERE THE MARGINS.
180 STA LEFT SET UP THE WELL KNOWN COUNTER.
183 ADD =3 ADD OFFSET IN GLYPH DATA
184 STA PPTR SAVE POINTER TO FIRST POINT DATA WORD.
187 MLOP LDA LEFT DRAWING LOOP ENTRY
189 JMP MFIN FINISHED DRAWING THAT GLYPH. GO, CLEAN UP.
193 SUB ='20122 TEST FOR OBSCURE PEN UP CONDITION - ASK HERSHEY..
195 JMP PUP THIS WORD CONTAINS ONLY A PEN UP COMMAND.
197 LDA* PPTR MAKE POINT'S X VALUE
199 SUB =82 SUBSTRACT LETTER R - ASK HERSHEY
202 LDX FONT WE WILL NEED THE BASELINE HEIGHT FROM THERE
203 LDA* PPTR LOAD AGAIN, FOR Y POSITION
205 SUB =82 THE SUBSTRACTION..
206 TCA HERSHEY LIVED IN THE 4TH QUADRANT - WE IN THE 1ST.
207 SUB 1,1 SUBTRACT BASELINE OFFSET
211 CALL PL$MV MOVE TO POINT
215 CALL PL$PD AND THEN PEN DOWN. ASK HERSHEY..
217 PEND IRS PPTR INCREMENT POINT POINTER
218 IRS LEFT INCREMENT POINT COUNTER
223 PUP CALL PL$PU PEN UP
224 JMP PEND GET BACK TO THE LOOP END
227 MFIN CALL PL$PU END OF GLYPH, PEN UP!
229 CALL PL$RMR FUZZ COORDINATES AGAIN.
230 DAC X2 THE 81 ABOVE SAVES AN ADDITION OF 1 HERE.
231 DAC ZERO Y UNTOUCHED. ZERO IS ZERO.
234 CALL PL$MV MOVE PEN TO BEGINNING OF NEXT GLYPH - JUST IN CASE...
240 ADD X1 TO BORROWED GLYPH WIDTH
241 JMP* PLG RETURN TO CALLER.
244 ****************************************************************
247 PNL DAC ** NEW LINE ROUTINE
249 SUB* FONT VERTIVAL SPACING
263 ********************************************************************