* *``````````````````````````````* * DPRINT :: PRINT FROM MEMORY * *- -* * PRINTS DATA FROM SPECIFIED * * MEMORY LOCATION UNTIL * * REACHING 00 (STRING TERM). * *- -* * CLOBBERS: * * * * FLAGS: -------- REG: A-YM * *- -* * CYCLES: 25+ * * SIZE: * *- -* * USAGE: * * LDA #>(ADDRESS) * * PHA * * LDA #<(ADDRESS) * * PHA * * JSR DPRINT * *- -* * ENTRY * * * * TOP OF STACK * * * * LOW BYTE OF RETURN ADDRESS * * HI BYTE OF RETURN ADDRESS * * LOW BYTE OF PRINT ADDRESS * * HI BYTE OF PRINT ADDRESS * *- -* * EXIT * * * * TOP OF STACK * * * * LOW BYTE OF RETURN ADDRESS * * HI BYTE OF RETURN ADDRESS * * * * A = LOW BYTE OF ADDRESS * * X = UNCHANGED * * Y = LENGTH OF PRINTED * * STRING * *,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* * DPRINT * ** SAVE RETURN ADDRESS * PLA STA :RETADR PLA STA :RETADR+1 * ** GET ADDRESS, STORE IN ZERO PAGE * PLA STA ADDR1 PLA STA ADDR1+1 * LDY #$00 :LOOP LDA (ADDR1),Y BEQ :EXIT JSR COUT1 INY BNE :LOOP :EXIT * ** RESTORE RETURN ADDRESS * LDA :RETADR+1 PHA LDA :RETADR PHA * RTS * ** DATA * :RETADR DS 2 *