*
*``````````````````````````````*
* 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 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
