AppleIIAsm-Collection/disks/disk2_common/T.COMMON.DEMO

170 lines
4.5 KiB
Plaintext
Raw Normal View History

*
********************************
* *
* -< COMMON DEMO )- *
* *
* VERSION 0.3.0 *
* *
* 10-JAN-2019 *
* *
********************************
* *
* NATHAN D. RIGGS *
* NATHAN.RIGGS@OUTLOOK.COM *
* *
********************************
*
** ASSEMBLER DIRECTIVES
*
CYC AVE
EXP ONLY
TR ON
DSK COMMON.DEMO
OBJ $BFE0
ORG $6000
*
*``````````````````````````````*
* TOP INCLUDES (HOOKS,MACROS) *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
PUT REQUIRED.VARS
USE REQUIRED.MAC.MIN
PUT REQUIRED.HOOKS.MIN
USE COMMON.MAC.MIN
PUT COMMON.HOOKS.MIN
*
*``````````````````````````````*
* PROGRAM MAIN BODY *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
** MFILL DOES ABOUT WHAT ITS NAME
** IMPLIES: IT FILLS A BLOCK OF MEMORY
** WITH A PARTICULAR CHARACTER.
*
_PRNT " ",8D8D
MFILL #$300;#10;#0
_PRNT "MFILL FILLS A PORTION OF MEMORY WITH",8D
_PRNT "A SPECIFIED VALUE. ",8D8D
_DUMP $300;#10
_WAIT
*
** MMOVE ALSO DOES WHAT IT SAYS: IT MOVES
** A BLOCK OF MEMORY FROM A SOURCE LOCATION
** TO A DESTINATION LOCATION. WE'LL NOW MOVE
** THOSE ZEROES PLACED BY MEMFILL TO ANOTHER
** LOCATION.
*
_PRNT " ",8D8D
_PRNT "MMOVE COPIES A SPAN OF MEMORY",8D
_PRNT "FROM A SOURCE TO A DESTINATION ADDRESS.",8D8D
_PRNT "SO MOVING $300 TO $320 RESULTS IN:",8D8D
MMOVE $300;$320;#10
_DUMP $320;#10
_WAIT
*
** DELAY RUNS THROUGH CYCLES OF THE
** 6502 UNTIL A CERTAIN AMOUNT OF TIME
** HAS PASSED.
*
_PRNT " ",8D8D
_PRNT "DELAY DELAYS A SPECIFIED NUMBER OF",8D
_PRNT "MILLISECONDS. 250 MILLISECONDS = 1/4 SECOND.",8D8D
*
DELAY #250 ; TIME IN MILLISECONDS
; IS PASSED VIA Y
; 250 = 1/4 SECOND
BEEP 1
_PRNT "1/4 SECOND",8D
DELAY #250
BEEP 2
_PRNT "1/4 SECOND",8D
DELAY #250
BEEP 3
_PRNT "1/4 SECOND",8D
DELAY #250
BEEP 4
_PRNT "1/4 SECOND",8D
*
_PRNT " ",8D8D
_WAIT
*
** ZSAVE BACKS UP THE "FREE" AREAS OF
** THE ZERO PAGE TO AN ALTERNATE MEMORY
** LOCATION. THIS IS MOSTLY USEFUL WHEN
** YOU KNOW A ROUTINE USES THE ZERO PAGE,
** BUT YOU WANT TO KEEP THE VALUES CURRENTLY
** STORED THERE AFTER CALLING THE ROUTINE.
*
** NOTE THAT SINCE THE LIBRARY MAKES HEAVY USE
** OF THESE MEMORY ADDRESSES, ANY TIME YOUR CODE
** MAKES USE OF THE ZERO PAGE, IT IS ADVISED TO
** SAVE THE STATE BEFORE CALLING ANY OTHER ROUTINES.
*
LDA #01
STA $06
LDA #02
STA $07
LDA #03
STA $08
LDA #04
STA $09
ZSAVE $300
*
_PRNT " ",8D8D
_PRNT "ZSAVE SAVES THE STATE OF THE ZERO PAGE ",8D
_PRNT "ADDRESSES THAT ARE NOT USED BY DOS,",8D
_PRNT "APPLESOFT,PRODOS OR INTEGER BASIC.",8D8D
_PRNT "SO THE BACKED UP ZERO PAGE AT $300 IS:",8D8D
_DUMP $300;#18
_PRNT " ",8D8D
_PRNT "18 BYTES ARE USED.",8D8D
_WAIT
*
** YOU CAN RESTORE THE ZERO PAGE TO ITS
** PRIOR STATE BY THEN CALLING ZLOAD.
*
ZLOAD $300
*
_PRNT " ",8D8D
_PRNT "YOU CAN THEN RESTORE THE FREE ZERO PAGE",8D
_PRNT "LOCATIONS WITH ZLOAD. THERE ISN'T ANY",8D
_PRNT "MEANINGFUL OUTPUT TO PUT HERE TO ",8D
_PRNT "ILLUSTRATE THAT, SO USE YOUR IMAGINATION!",8D8D
_WAIT
*
** THE MSWAP MACRO SWAPS THE MEMORY BLOCK AT ONE
** ADDRESS WITH THE SAME LENGTH AT ANOTHER.
*
_PRNT "THE MSWAP MACRO SWAPS A LENGTH",8D
_PRNT "OF MEMORY FROM ONE LOCATION",8D
_PRNT "TO ANOTHER. SO, BEFORE SWAP:",8D8D
_DUMP $300;#10
_DUMP $320;#10
MSWAP $300;$320;#10
_PRNT " ",8D
_PRNT "AND AFTER SWAP: ",8D8D
_DUMP $300;#10
_DUMP $320;#10
_WAIT
*
JMP REENTRY
*
*``````````````````````````````*
* BOTTOM INCLUDES *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
** BOTTOM INCLUDES
*
PUT REQUIRED.LIB.MIN
*
** INDIVIDUAL SUBROUTINE INCLUDES
*
* COMMON LIBRARY SUBROUTINES
*
PUT MEMFILL.SUB.MIN
PUT MEMMOVE.SUB.MIN
PUT DELAYMS.SUB.MIN
PUT ZMSAVE.SUB.MIN
PUT ZMLOAD.SUB.MIN
PUT MEMSWAP.SUB.MIN