-* PLOTTER TEXT TEST
+* PLOTTER TEXT OUTPUT
*
*
*
SUBR PL$TXT,FPTX
+ SUBR PL$TNL,NEWL
*
*
REL
*
********************************************************************************
*
+NEWL DAC **
+ LDA* FONT LOAD VERTICAL SPACING FROM FONT
+ TCA
+ STA GPTR
+ LDA TWDH LAST TEXT WIDTH
+ TCA
+ STA PPTR
+ CALL PL$MVR MOVE RELATIVELY
+ DAC PPTR
+ DAC GPTR
+ DAC 0
+ JMP* NEWL RETURN
+*
+*
+********************************************************************************
+*
+*
+**** PL$TXT - TEXT OUTPUT ROUTINE
+*
FPTX DAC ** FORTRAN TEXT OUTPUT ROUTINE
*
+ LDA* FPTX LOAD STACK DATA POINTER
+ STA SDA1 SAVE
+ STA SDA2
+ IRS FPTX
+*
LDA* FPTX ARGUMENT TRANSFER
STA BUFP
IRS FPTX
STA BLEN
IRS FPTX
IRS FPTX
-* WE HAVE TO CORRECT OUR BUFFER POINTER, WHY????
- LDA FPTX LOAD RETURN ADDRESS
-* JST OCT
-* LDA FPTX
-* ANA ='77000
-* ADD BUFP
- STA BUFP
-*
*
CALL PL$PU DON'T KNOW WHAT HAS HAPPENED BEFORE: PEN UP!
*
+ CRA
+ STA TWDH TEXT WIDTH
+*
JST TXIN EXECUTE INTERNAL TEXT ROUTINE
*
+ LDA TWDH
JMP* FPTX RETURN TO CALLER
*
-TXTP DAC TXTT
-TXTT BCI 10,Philipp VOID
- DAC 0
+* TXTP DAC TXTT
+* TXTT BCI 10,Philipp VOID
+* DAC 0
********************************************************************************
*
*
*
TXIN DAC ** INTERNAL TEXT WRITE ROUTINE
*
- LDA* XP SAVE CURRENT
- STA XPC PEN POSITION
- LDA* YP FOR
- STA YPC NEWLINE PROCESSING
-*
- LDA* XP SAVE CURRENT
- STA XPB PEN POSITION
- LDA* YP FOR
- STA YPB RESTORE
-*
+ CALL PL$PUS PUSH GRAPHIC CONTEXT ONTO STACK
+SDA1 DAC **
CALL PL$RST RESET COORDINATE SYSTEM. NOW WE MENTALLY PLOT FROM 0,0!
-*
- CRA CLEAR X BORROW VARIABLE
- STA BROW (WILL BE NEEDED TO RESTORE COORDINATE POSITION)
-*
*
TLOP LDA BLEN CHARACTER LOOP, FIRST TEST CHAR COUNTER
SNZ
TEGO LGR 8 TAKE DOWN UPPER CHARACTER
ANA ='177 MASK OUT PARITY BIT
JST PLG DRAW GLYPH
-*
- ADD BROW PLG CHANGES THE X COORDINATE BUT TELLS US ABOUT THAT.
- STA BROW WE ADD THE "BORROWED" X PIXELS UP FOR LATER.
+ ADD TWDH
+ STA TWDH
*
IRS BLEN INCREMENT CHARACTER COUNTER
SKP
ANA ='177 MASK OUT UPPER BITS AND PARITY.
*
JST PLG LIKE ABOVE
- ADD BROW
- STA BROW
+ ADD TWDH
+ STA TWDH
+*
*
IRS BLEN
NOP
JMP TLOP JUMP BACK IN CHARACTER LOOP
*
*
-TFIN LDA XPB RESTORE AND GO HOME
- ADD BROW TAKE HIDDEN X OFFSET INTO ACCOUNT (SEE GLYPH ROUTINE!)
- ADD* XP
- STA* XP UPDATE REAL (RELATED TO ORIGINAL COORDINATES) POSITION
- LDA YPB SAME
- ADD* YP WITH
- STA* YP Y VALUE
-*
+TFIN CALL PL$POP GET OLD GRAPHIC CONTEXT AND BE HAPPY
+SDA2 DAC **
+ CALL PL$MVR
+ DAC TWDH
+ DAC ZERO
+ DAC *
+*
JMP* TXIN THAT'S IT, WE GO HOME.
*
*
-XP XAC PL$X EXTERNAL POINTER TO PLOT X COORDINATE
-YP XAC PL$Y EXTERNAL POINTER TO PLOT Y COORDINATE
-*
-XPB DEC 0 BACKUP OF X COORDINATE
-YPB DEC 0 BACKUP OF Y COORDINATE
-*
-BROW DEC 0 BORROWED X PIXELS
*
**********************************************************
*
SUB ARG SUBSTRACT WANTED GLYPH NUMBER
SNZ
JMP PGLP FOUND, TAKE GLYPH TO THE PLOTTING ROUTINE!
-*
+*
IRS LEFT INCREMENT LOOP COUNTER
LDX GPTR UPDATE
LDA GPTR GLYPH
LGR 8 USE UPPER BITS FIRST
SUB =82 SUBSTRACT LETTER R - ASK HERSHEY, WHY IT'S THAT WAY!
TCA WE WANT THE LEFT MARGIN NEGATED FOR LATER USE.
- STA X1 STORE
+ STA XMIN STORE
LDA 2,1 LOAD THE MARGINS AGAIN
CAL CLEAR UPPER BITS OF A
SUB =81 THAT'S CORRECT, ONE LESS FOR NOT OVERLAPPING GLYPHS!
- STA X2 SAVE RIGHT MARGIN
-*
- CALL PL$RMR MOVE PLOT ORIGIN - THE REASON FOR THE BORROW STUFF.
- DAC X1 GLYPH SHOULD START AT ORIGINAL X=0..BUT - ASK HERSHEY
- DAC ZERO Y STAYS UNCHANGED.
- DAC 0
+ STA XNEX SAVE RIGHT MARGIN
*
LDA 1,1 LOAD POINT COUNT
+* CALL OCT
TCA COMPLEMENT
AOA INCREMENT - FIRST "POINT" WERE THE MARGINS.
STA LEFT SET UP THE WELL KNOWN COUNTER.
+*
+ CALL PL$RMR MOVE ORIGIN
+ DAC XMIN
+ DAC ZERO Y STAYS UNCHANGED.
+ DAC 0
*
LDA GPTR
ADD =3 ADD OFFSET IN GLYPH DATA
PEND IRS PPTR INCREMENT POINT POINTER
IRS LEFT INCREMENT POINT COUNTER
NOP
- JMP MLOP LOOP AGAIN.
+ JMP MLOP LOOP AGAIN.
*
*
PUP CALL PL$PU PEN UP
MFIN CALL PL$PU END OF GLYPH, PEN UP!
*
CALL PL$RMR FUZZ COORDINATES AGAIN.
- DAC X2 THE 81 ABOVE SAVES AN ADDITION OF 1 HERE.
+ DAC XNEX THE 81 ABOVE SAVES AN ADDITION OF 1 HERE.
DAC ZERO Y UNTOUCHED. ZERO IS ZERO.
DAC 0
*
- CALL PL$MV MOVE PEN TO BEGINNING OF NEXT GLYPH - JUST IN CASE...
- DAC ZERO
- DAC ZERO
- DAC 0
-*
- LDA X2 ADD MARGINS
- ADD X1 TO BORROWED GLYPH WIDTH
+* CALL PL$MV MOVE PEN TO BEGINNING OF NEXT GLYPH - JUST IN CASE...
+* DAC ZERO
+* DAC ZERO
+* DAC 0
+ LDA XMIN RETURN WITH CORRECT WIDTH VALUE
+ ADD XNEX
JMP* PLG RETURN TO CALLER.
*
*
****************************************************************
*
*
-PNL DAC ** NEW LINE ROUTINE
- LDA YPC
- SUB* FONT VERTIVAL SPACING
- STA YPC
- CALL PL$MV
- DAC XPC
- DAC YPC
- DAC 0
- JMP* PNL
-*
-*
-XPC DEC 0
-YPC DEC 0
-*
-*
*
********************************************************************
ARG DEC 0
PPTR DEC 0
X DEC 0
Y DEC 0
-X1 DEC 0
-X2 DEC 0
+XMIN DEC 0
+XNEX DEC 0
ZERO DEC 0
+TWDH DAC ** GENERATED TEXT WIDTH
*
FONT XAC PL$FNT
*
-MK1 DAC **
- OCP '104
- LDA M1
- OTA 4
- JMP *-1
- ICA
- OTA 4
- JMP *-1
-* LDA =10
-* OTA '4
-* JMP *-1
-* LDA =13
-* OTA '4
-* JMP *-1
-* LDA =13
-* OTA '4
-* JMP *-1
- JMP* MK1
-*
-*
-MK2 DAC **
- OCP '104
- LDA M2
- OTA 4
- JMP *-1
- ICA
- OTA 4
- JMP *-1
-* LDA =10
-* OTA '4
-* JMP *-1
-* LDA =13
-* OTA '4
-* JMP *-1
-* LDA =13
-* OTA '4
-* JMP *-1
- JMP* MK2
-*
-*
-M1 BCI 2,A:
-M2 BCI 2,B:
-*
-OCT DAC **
- OCP '104
- IAB SAVE TO B
- CRA
- LLR 1
- ADD =48
- OTA '4 ASR OUTPUT
- JMP *-1
- CRA
- LLR 3
- ADD =48
- OTA 4 ASR OUTPUT
- OTA 4
- JMP *-1
- CRA
- LLR 3
- ADD =48
- OTA '4 ASR OUTPUT
- OTA 4
- JMP *-1
- CRA
- LLR 3
- ADD =48
- OTA '4 ASR OUTPUT
- OTA 4
- JMP *-1
- CRA
- LLR 3
- ADD =48
- OTA '4 ASR OUTPUT
- OTA 4
- JMP *-1
- CRA
- LLR 3
- ADD =48
- OTA '4 ASR OUTPUT
- OTA 4
- JMP *-1
-*
- LDA =10
- OTA '4
- JMP *-1
- LDA =13
- OTA '4
- JMP *-1
- LDA =13
- OTA '4
- JMP *-1
- SKS 4
- JMP *-1
-*
- JMP* OCT
*
END