X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=lib%2Fhachti%2Fsrc%2Fpl%24txt.asm;h=d100b3f692454b9033594b87937088cbb942df39;hb=eabafccaa9119c64c3964f25035a71579de18ddd;hp=fe9d1c22f30f187677aff5eb335ca7acd0256690;hpb=6f7368dad80457b5dd8f72bf3cf6cc661e36904b;p=h316.git diff --git a/lib/hachti/src/pl$txt.asm b/lib/hachti/src/pl$txt.asm index fe9d1c2..d100b3f 100644 --- a/lib/hachti/src/pl$txt.asm +++ b/lib/hachti/src/pl$txt.asm @@ -1,8 +1,9 @@ -* PLOTTER TEXT TEST +* PLOTTER TEXT OUTPUT * * * SUBR PL$TXT,FPTX + SUBR PL$TNL,NEWL * * REL @@ -11,8 +12,32 @@ * ******************************************************************************** * +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