* *``````````````````````````````* * THLINE :: TEXT HORIZ LINE * *- -* * CREATES A HORIZONTAL LINE OF * * TEXT COMPOSED OF THE FILL * * CHARACTER SPECIFIED AT Y. * *- -* * CLOBBERS: * * * * FLAGS: ????---- REG: AXYM * *- -* * CYCLES: ??? * * SIZE: * *- -* * USAGE: * * LDA (X-START) * * PHA * * LDA (X-END) * * PHA * * LDA (Y-POS) * * PHA * * LDA (FILL CHAR) * * PHA * * JSR THLINE * *- -* * ENTRY * * * * TOP OF STACK * * * * LOW BYTE OF RETURN ADDRESS * * HI BYTE OF RETURN ADDRESS * * XPOS START OF LINE (:X1) * * XPOS END OF LINE (:X2) * * YPOS OF LINE (:Y) * * FILL CHARACTER (:F) * *- -* * EXIT * * * * TOP OF STACK * * * * LOW BYTE OF RETURN ADDRESS * * HI BYTE OF RETURN ADDRESS * * * * Y = START,END OF LINE * * X = ??? * * A = LOW BYTE OF RET ADDR * *,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* * THLINE * ** SAVE RETURN ADDRESS * PLA STA RETADR PLA STA RETADR+1 * ** GET PARAMETERS * PLA STA :F PLA STA :Y PLA STA :X2 PLA STA :X1 * ******************************** * ** ERROR CONTROL * ******************************** * LDA ERRCTRL CMP #1 BEQ :CHKERR JMP :ERREND :CHKERR LDA :X1 CMP :X2 BCS :ERRTOOHI ; X1 => X2 LDA :X1 CMP #39 BCS :ERRXOVF ; X VALUE OVERFLOW LDA :X2 CMP #40 ; MAX COLS + 1 BCS :ERRXOVF LDA :Y CMP #24 ; MAX ROWS + 1 BCS :ERRYOVF JMP :ERREND :ERRTOOHI _ERR #:E_SID;#:E_XHI;#:E_DMP1;#:X1;#4 JMP :ERREND :ERRXOVF _ERR #:E_SID;#:E_XOF;#:E_DMP1;#:X1;#4 JMP :ERREND :ERRYOVF _ERR #:E_SID;#:E_YOF;#:E_DMP1;#:X1;#4 JMP :ERREND * ******************************** * :ERREND * ******************************** * LDA :Y ; LOAD ROW LDY :X1 ; LOAD X START POS :LOOP JSR $F847 ; GBASCALC ROUTINE LDA :F STA ($26),Y ; PUSH TO SCREEN MEMORY LDA :Y INY ; INCREASE X POS CPY :X2 ; IF LESS THAN X END POS BNE :LOOP ; REPEAT UNTIL DONE :EXIT * ** RESTORE RETURN ADDRESS * LDA RETADR+1 PHA LDA RETADR PHA RTS * ** DATA * :X1 DS 1 :X2 DS 1 :Y DS 1 :F DS 1 ; FILL CHAR * :E_SID ASC "THLINE (THLIN MACRO)",00 :E_DMP1 ASC "DUMPING X1(1) X1(1) Y(1) F(1)",00 :E_XHI ASC "X1 MUST BE LOWER THAN X2.",00 :E_XOF ASC "X > # OF AVAILABLE COLUMNS.",00 :E_YOF ASC "Y > # OF AVAILABLE ROWS",00 *