*
*``````````````````````````````*
* ZMSAVE ::   SAVE 0-PAGE FREE *
*-                            -*
* STORES THE VALUES IN THE     *
* LITTLE FREE SPACE ON THE     *
* ZERO PAGE AT AN ALTERNATE    *
* MEMORY LOCATION TO BE        *
* RETRIEVED AND RESTORED AT A  *
* LATER POINT.                 *
*-                            -*
* CLOBBERS:                    *
*                              *
* FLAGS:  ????----  REG: AXYM  *
*-                            -*
* CYCLES: ???                  *
* SIZE:                        *
*-                            -*
* USAGE:                       *
*                              *
*  LDA #>$6A00                 *
*  PHA                         *
*  LDA #<$6A00                 *
*  PHA                         *
*  JSR ZMSAVE                  *
*-                            -*
* ENTRY                        *
*                              *
* TOP OF STACK                 *
*                              *
* LOW BYTE OF RETURN ADDRESS   *
* HI BYTE OF RETURN ADDRESS    *
* LOW BYTE OF DESTINATION      *
* HIGH BYTE OF DESTINATION     *
*-                            -*
* EXIT                         *
*                              *
* TOP OF STACK                 *
*                              *
* LOW BYTE OF RETURN ADDRESS   *
* HI BYTE OF RETURN ADDRESS    *
*                              *
* Y = TRASH                    *
* X = TRASH                    *
* A = LOW BYTE OF RET ADDR     *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
ZMSAVE
*
** LOAD ADDR1 ZERO PAGE AREA FIRST,
** SINCE WE'LL BE USING THAT
*
** NOTE THAT THIS SHOULD ALWAYS BE
** $06 AND $07, OR ELSE CODE WILL
** HAVE TO CHANGE.
*
         LDX   ADDR1
         LDY   ADDR1+1
*
** SAVE  RETURN ADDRESS
*
         PLA
         STA   :RETADR    ; LOCAL BECAUSE RETADDR
         PLA              ; IS STORED ON ZERO PAGE
         STA   :RETADR+1
*
** GET PARAMETERS
*
         PLA
         STA   ADDR1
         PLA
         STA   ADDR1+1
*
** COPY ZERO PAGE TO SPECIFIED
** NON-ZERO LOCATION (ONLY THE
** FREE ONES..)
*
         TYA              ; STORE ADDR1 VALS
         LDY   #1         ; FIRST
         STA   (ADDR1),Y
         LDY   #0
         TXA
         STA   (ADDR1),Y
         LDY   #2
         LDA   $08
         STA   (ADDR1),Y
         INY
         LDA   $09
         STA   (ADDR1),Y
         INY
         LDA   $19
         STA   (ADDR1),Y
         INY
         LDA   $1E
         STA   (ADDR1),Y
         INY
         LDA   $E3
         STA   (ADDR1),Y
         INY
         LDA   $EB
         STA   (ADDR1),Y
         INY
         LDA   $EC
         STA   (ADDR1),Y
         INY
         LDA   $ED
         STA   (ADDR1),Y
         INY
         LDA   $EE
         STA   (ADDR1),Y
         INY
         LDA   $EF
         STA   (ADDR1),Y
         INY
         LDA   $FA
         STA   (ADDR1),Y
         INY
         LDA   $FB
         STA   (ADDR1),Y
         INY
         LDA   $FC
         STA   (ADDR1),Y
         INY
         LDA   $FD
         STA   (ADDR1),Y
         INY
         LDA   $FE
         STA   (ADDR1),Y
         INY
         LDA   $FF
         STA   (ADDR1),Y
*
** RESTORE RETURN ADDRESS
*
         LDA   :RETADR+1
         PHA
         LDA   :RETADR
         PHA
*
         RTS
*
** DATA
*
:RETADR  DS    2
*
