*** 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$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
@@ -24,24 +49,20 @@ FPTX        DAC     **      FORTRAN TEXT OUTPUT ROUTINE
        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
 ********************************************************************************
 *
 *
@@ -54,21 +75,9 @@ BLEN DEC     0       LENGTH OF TEXT TO OUTPUT
 *
 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
@@ -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
-*
-       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
@@ -93,8 +101,9 @@ TEGO LGR     8       TAKE DOWN UPPER CHARACTER
        ANA     ='177   MASK OUT UPPER BITS AND PARITY.
 *
        JST     PLG     LIKE ABOVE
-       ADD     BROW
-       STA     BROW
+       ADD     TWDH
+       STA     TWDH
+* 
 *
        IRS     BLEN
        NOP
@@ -103,24 +112,16 @@ TEGO      LGR     8       TAKE DOWN UPPER CHARACTER
        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
 *
 **********************************************************     
 *
@@ -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!
-*
+* 
        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.
-       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
@@ -217,7 +219,7 @@ MOGO        LDA*    PPTR
 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
@@ -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.
-       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
@@ -267,106 +253,12 @@ GPTR     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