*** empty log message ***
[h316.git] / lib / hachti / src / pl$txt.asm
index fe9d1c22f30f187677aff5eb335ca7acd0256690..d100b3f692454b9033594b87937088cbb942df39 100644 (file)
@@ -1,8 +1,9 @@
-* PLOTTER TEXT TEST
+* PLOTTER TEXT OUTPUT
 *
 *
 *
        SUBR    PL$TXT,FPTX
 *
 *
 *
        SUBR    PL$TXT,FPTX
+       SUBR    PL$TNL,NEWL
 *
 *
        REL
 *
 *
        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
 *
 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
        LDA*    FPTX    ARGUMENT TRANSFER
        STA     BUFP
        IRS     FPTX
@@ -24,24 +49,20 @@ FPTX        DAC     **      FORTRAN TEXT OUTPUT ROUTINE
        STA     BLEN
        IRS     FPTX
        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!
 *
 *
        CALL    PL$PU   DON'T KNOW WHAT HAS HAPPENED BEFORE: PEN UP!
 *
+       CRA
+       STA     TWDH    TEXT WIDTH
+* 
        JST     TXIN    EXECUTE INTERNAL TEXT ROUTINE
 *
        JST     TXIN    EXECUTE INTERNAL TEXT ROUTINE
 *
+       LDA     TWDH
        JMP*    FPTX    RETURN TO CALLER
 *
        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
 ********************************************************************************
 *
 *
 ********************************************************************************
 *
 *
@@ -54,21 +75,9 @@ BLEN DEC     0       LENGTH OF TEXT TO OUTPUT
 *
 TXIN   DAC     **      INTERNAL TEXT WRITE ROUTINE
 *
 *
 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! 
        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
 *
 TLOP   LDA     BLEN    CHARACTER LOOP, FIRST TEST CHAR COUNTER
        SNZ
@@ -81,9 +90,8 @@ TLOP  LDA     BLEN    CHARACTER LOOP, FIRST TEST CHAR COUNTER
 TEGO   LGR     8       TAKE DOWN UPPER CHARACTER
        ANA     ='177   MASK OUT PARITY BIT
        JST     PLG     DRAW GLYPH
 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
 *
        IRS     BLEN    INCREMENT CHARACTER COUNTER
        SKP
@@ -93,8 +101,9 @@ TEGO LGR     8       TAKE DOWN UPPER CHARACTER
        ANA     ='177   MASK OUT UPPER BITS AND PARITY.
 *
        JST     PLG     LIKE ABOVE
        ANA     ='177   MASK OUT UPPER BITS AND PARITY.
 *
        JST     PLG     LIKE ABOVE
-       ADD     BROW
-       STA     BROW
+       ADD     TWDH
+       STA     TWDH
+* 
 *
        IRS     BLEN
        NOP
 *
        IRS     BLEN
        NOP
@@ -103,24 +112,16 @@ TEGO      LGR     8       TAKE DOWN UPPER CHARACTER
        JMP     TLOP    JUMP BACK IN CHARACTER LOOP
 *
 *
        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.
 *
 *
        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
 *
 **********************************************************     
 *
 *
 **********************************************************     
 *
@@ -147,7 +148,7 @@ FGOO        LDA*    GPTR    LOAD GLYPH NUMBER
        SUB     ARG     SUBSTRACT WANTED GLYPH NUMBER
        SNZ
        JMP     PGLP    FOUND, TAKE GLYPH TO THE PLOTTING ROUTINE!
        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
        IRS     LEFT    INCREMENT LOOP COUNTER
        LDX     GPTR    UPDATE
        LDA     GPTR          GLYPH
@@ -163,21 +164,22 @@ PGLP      LDX     GPTR    LOAD CURRENT GLYPH'S ADDRESS TO INDEX REGISTER
        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.
        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!
        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
 *
        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.
        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
 *
        LDA     GPTR    
        ADD     =3      ADD OFFSET IN GLYPH DATA
@@ -217,7 +219,7 @@ MOGO        LDA*    PPTR
 PEND   IRS     PPTR    INCREMENT POINT POINTER
        IRS     LEFT    INCREMENT POINT COUNTER
        NOP             
 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
 *
 *
 PUP    CALL    PL$PU   PEN UP
@@ -227,38 +229,22 @@ PUP       CALL    PL$PU   PEN UP
 MFIN   CALL    PL$PU   END OF GLYPH, PEN UP!
 *
        CALL    PL$RMR  FUZZ COORDINATES AGAIN.
 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
 *
        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.
 *
 *
 ****************************************************************
 *
 *
        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
 *
 ********************************************************************
 ARG    DEC     0
@@ -267,106 +253,12 @@ GPTR     DEC     0
 PPTR   DEC     0
 X      DEC     0
 Y      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
 ZERO   DEC     0
+TWDH   DAC     **      GENERATED TEXT WIDTH
 *
 FONT   XAC     PL$FNT
 *
 *
 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
 *
        END