AppleIIAsm-Collection/disks/disk1__stdio_common/T.STDIO.TVLIN
nathanriggs 9849dbb5ea created disks folder
items in disk folder will be updated automatically, whereas items in the source folder will be updated periodically due to having to manually sort through files to copy and paste
2018-11-03 14:59:24 -04:00

104 lines
3.3 KiB
Plaintext

*
*``````````````````````````````*
* TVLIN :: TEXT VERTICAL LINE *
*- -*
* CREATES A VERTICAL LINE OF *
* TEXT COMPOSED OF THE FILL *
* CHARACTER SPECIFIED AT X. *
*- -*
* CLOBBERS: *
* *
* FLAGS: ????---- REG: AXYM *
*- -*
* CYCLES: ??? *
* SIZE: *
*- -*
* USAGE: *
* LDA (Y-START) *
* PHA *
* LDA (Y-END) *
* PHA *
* LDA (X-POS) *
* PHA *
* LDA (FILL CHAR) *
* PHA *
* JSR TVLIN *
*- -*
* ENTRY *
* *
* TOP OF STACK *
* *
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* XPOS START OF LINE (:Y1) *
* XPOS END OF LINE (:Y2) *
* YPOS OF LINE (:X) *
* FILL CHARACTER (:F) *
*- -*
* EXIT *
* *
* TOP OF STACK *
* *
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* *
* Y = END OF LINE *
* X = HORIZONTAL POSITION *
* A = LOW BYTE OF RET ADDR *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
TVLIN
*
** SAVE RETURN ADDRESS
*
PLA
STA :RETADR
PLA
STA :RETADR+1
*
** GET PARAMETERS
*
PLA
STA :F ; FILL CHAR
PLA
STA :X ; X POS
PLA
STA :Y2 ; END
PLA
STA :Y1 ; START
*
LDX :X
LDY :Y1
STY CURSV
STX CURSH
JSR VTAB ; SET CURSOR POS
:LOOP
JSR COUT1 ; PRINT CHAR
LDX :X
STX CURSH
STY CURSV
JSR VTAB ; SET NEW CURSOR POS
LDA :F ; RELOAD FILL CHAR
INY ; INCREASE COUNTER
CPY :Y2 ; IF Y1 < Y2
BNE :LOOP ; LOOP; ELSE, CONTINUE
:EXIT
*
** RESTORE RETURN ADDRESS
*
LDA :RETADR+1
PHA
LDA :RETADR
PHA
*
RTS
*
** DATA
*
:RETADR DS 2
:X DS 1
:Y1 DS 1
:Y2 DS 1
:F DS 1