AppleIIAsm-Collection/source/d2_stdio/T.SUB.XPRINT
nathanriggs 9f35f32f67 Revision 0.5.0
- massive overhaul of architecture
- first round of optimizations
- first draft of the technical manual for the entire library
- reorganization of directory structure
2019-09-27 16:57:34 -04:00

45 lines
1.4 KiB
Plaintext

*
*``````````````````````````````*
* XPRINT (NATHAN RIGGS) *
* *
* INPUT: *
* *
* ASC AFTER SUBROUTINE CALL *
* THAT CONTAINS STRING TO PRN *
* *
* OUTPUT *
* *
* STRING TO SCREEN *
* *
* DESTROY: AXYNVBDIZCMS *
* ^ ^^^ ^^ *
* *
* CYCLES: 63+ *
* SIZE: 33 BYTES *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
XPRINT
PLA ; GET CURRENT
STA ADDR1 ; EXECUTION ADDRESS
PLA
STA ADDR1+1
LDY #$01 ; POINT TO NEXT
; INSTRUCTION
:LOOP
LDA (ADDR1),Y ; GET CHARACTER
BEQ :EXIT ; IF CHAR = $00 THEN EXIT
JSR COUT1 ; OTHERWISE, PRINT CHAR
INY ; INCREASE COUNTER
BNE :LOOP ; IF COUNTER < 255, LOOP
:EXIT
CLC ; CLEAR CARRY
TYA ; MOVE .Y TO .A
ADC ADDR1 ; ADD RETURN LOBYTE
STA ADDR1 ; SAVE
LDA ADDR1+1 ; GET RETURN HIBYTE
ADC #$00 ; ADD CARRY
PHA ; PUSH TO STACK
LDA ADDR1
PHA ; PUSH TO STACK
RTS