home *** CD-ROM | disk | FTP | other *** search
-
-
- ╟┴╠┴├╘╔├ ┼╬├╧╒╬╘┼╥- ┼╪╘╥┴ ╔╬╞╧
- ================================
-
- -* ┬Y ╨. ═AKEPEACE *-
-
- -* (├) ┴LPHAVITE ╨UBLICATIONS *-
-
-
-
- ═ACHINE ├ODE ╥OUTINES
- -----------------------
-
-
- ╘HE ═ACHINE ├ODE USES A ╩UMP ╘ABLE
- STARTING AT $C000 (49152). ╘HE START
- ADDRESS OF EACH ROUTINE IS FOLLOWED BY
- THE VARIABLE WHICH IS USED IN THE ┬┴╙╔├
- PROGRAM TO RUN IT, E.G ╙┘╙ ╞╪,1
- ┴N ASTERISK DENOTES THE ROUTINE IS ON
- THE UTILITIES SECTION (SEE BELOW). ╘HE
- ADDRESS BELOW IS THE ONE USED IN THE
- UTILITIES SECTION.
- ╫┴╥╬╔╬╟! ╘HESE ROUTINES CANNOT BE USED
- FROM WITHIN MACHINE CODE AS THEY READ
- PARAMETERS FROM ┬┴╙╔├.
-
-
- ╘HE ╒TILITIES ╙ECTION
- -----------------------
-
- ╧N THE DISK IS A SHORTENED VERSION OF
- THE MACHINE CODE SECTION WHICH CONTAINS
- SOME USEFUL ROUTINES THAT COULD BE USED
- IN OTHER ┬┴╙╔├ PROGRAMS. ╘O USE THESE,
- ╠╧┴─"╟┼.═├ ╒╘╔╠╙",8,1. ╘HEN ANY OF THE
- FOLLOWING CAN BE USED:
-
- ┴╘=49152 ╨RINT ┴╘
- ╙╨=49155 ╨ULSING ╙PRITE 1
- ╙┼=49158 ╞LASH ╙PRITE 1 MOMENTARILY
- ╞╪=49161 ╞OUR SOUNDS
- ╨╒=49164 ╨ULSE A LINE OF TEXT
- ├╙=49167 '├HASE ╠IGHTS' EFFECT ON TEXT
- ╥╓=49170 ╥EVERSE TEXT
- ╙├=49173 ╙CROLL A MESSAGE!
-
- ┴FTER DEFINING THE VARIABLES ABOVE,
- THE ROUTINES CAN BE USED BY ╙┘╙ ╞╪,1
- OR WHICHEVER.
-
-
- * 49152 ┴╘,POS (0-999),STRING
- 49152
-
- ╘HIS POSITIONS THE CURSOR AT 'POS' AND
- PRINTS THE FOLLOWING STRING. ┼XAMPLES:
-
- ╙┘╙ ┴╘,80,"╚ELLO!"
- ╙┘╙ ┴╘,120,"";
- ╙┘╙ ┴╘,20,A$+"╚I.";
- ETC.
-
- ╬.┬. ╘HE VERSION OF THIS ON THE
- ╒TILITIES ╙ECTION REQUIRES AN ╪,┘
- [(0,0) IS THE TOP-LEFT, (39,24) THE
- BOTTOM-RIGHT] POSITION RATHER THAN A
- SCREEN POSITION. ╧THERWISE, THEY ARE
- THE SAME.
-
- * 49155 ╙╔,SPEED (0-255)
- 49155
-
- ╘HIS TURNS ON ╙PRITE 1, AND SETS UP AN
- ╔╥╤ AT $0314 TO PULSE THE SPRITE AT
- 'SPEED' SPEED.
- ╨╧╦ING 251,1 MAKES THE SPRITE FLASH
- BLACK AND WHITE UNTIL ╨╧╦┼ 251,0
- $02 IS USED AS A COUNTDOWN FOR THE
- NEXT COLOUR CHANGE.
- $╞├ CONTAINS THE CURRENT COLOUR OF THE
- SPRITE.
- ╘HIS ROUTINE PERFROMS THE NECESSARY
- BANK-SWITCHING TO ALLOW THE CHARACTER
- SET AT $7800 TO BE ACCESSED. ╘HE SCREEN
- POSITION MUST ALSO BE CHANGED TO $7400.
- ┴LL THIS IS DONE BY:
- ╨╧╦┼ 648,116 ═OVE SCREEN TO $7400
- ╨╧╦┼ 56576,150 ╨OINT ╓╔├ ├HIP TO ┬ANK1
- ╨╧╦┼ 53272,223 ╨OINT ╓╔├ ├HIP TO:
- $7400 - ╙CREEN.
- $7800 - ├HARACTER SET.
-
- 49158 ├╚,╪ (0-6),┘ (0-6),
- CHARACTER (0-17)
-
- ╘HIS PRINTS ONE OF THE BOARD
- CHARACTERS ON TO THE BOARD IN THE
- APPROPRIATE PLACE ON THE SCREEN, THE
- CALCULATIONS ARE DONE IN ═├.
-
- ╘HE CHARACTERS ARE:
-
- 0: ┬LANK SPACE
- 1: ┬LACKHOLE
- 2-5: ╨LAYER ╧NE SHIPS
- 6: DESTROYER
- 7-10: ╨LAYER ╘WO SHIPS
- 11: DESTROYER
- 12-13: ┬IG :
- 14-15: ═EDIUM :─EBRIS ├LOUD
- 16-17: ╠ARGE :
-
- 49161 ╙╨,╪,┘,╞LAG
-
- ╘HIS MOVES SPRITE 1 TO THE BOARD
- POSTION ╪,┘. ╔F ╞LAG IS 1 THEN THE
- SPRITE WILL MOVE SMOOTHLY OTHERWISE IT
- WILL MOVE THERE DIRECTLY.
-
- *49164 ╙┼,SPEED (0-255)
- 49158
-
- ╘HIS SETS 251 TO 1 FOR A SHORT TIME
- DEPENDING ON THE SPEED, THEN RESETS IT
- TO PULSING. ╔T ALSO CHANGES THE SPRITE
- POINTER 2040 FROM 13 TO 15
- (┼╧╥ #2 IN ═├) AND BACK AGAIN WHEN IT
- IS ╙┘╙ED AGAIN.
-
- *49167 ╞╪,SOUND (0-3)
- 49161
-
- ╘HIS MAKES ONE OF THE FOLLOWING
- SOUNDS:
- 0: 'DING'
- 1: 'BARP'
- 2: LAUNCH OF THE BULLET
- (╨╧╦┼ 54276,129 TO FINISH THE
- SOUND).
- 3: ┴N EXPLOSION SOUND
-
- 49170 ┬1,COLOUR (0-15)
-
- ╘HIS PRINTS THE BORDER AROUND THE EDGE
- OF THE SCREEN IN 'COLOUR'.
-
- $├015 49173 ┬2,COLOUR (0-15)
-
- ╘HIS PRINTS THE BOARD IN 'COLOUR'.
-
- *49176 ╨╒,POS,LENGTH (0-255),SPEED,╞LAG
- 49164 ╨╒,╪,┘,....
-
- ╘HIS PULSES A LINE OR LINES OF TEXT
- STARTING AT POS AND PULSING 'LENGTH'
- NUMBER OF CHARACTERS AFTER IT AT
- 'SPEED'. ╔F ╞LAG IS 1-255, THE ROUTINE
- WILL PULSE THE LINE ┴┬╧╓┼ TOO, THIS IS
- USED FOR UNDERLINED TEXT. ╥EMEMBER TO
- SET POS TO THE LINE BELOW THE TEXT IF
- ╞LAG IS SET.
-
- *49179 ├╙,(SEE ABOVE)
- 49167
-
- ╘HIS IS IDENTICAL TO '╨╒'LSE BUT THE
- EFFECT IS LIKE ┴MERICAN ╨OLICE ├AR
- LIGHTS, A SORT OF STROBE. ╙EE THE
- ╙╘┴╘╒╙ ╥┼╨╧╥╘ JUST BEFORE A MESSAGE.
-
- 49182 ┬╠,╪,┘,╞LAG
-
- ╘HIS IS THE SAME AS '╙╨'RITE-MOVE BUT
- CHANGES ╙PRITE 1 TO THE BULLET (╨╧╦┼
- 2040,15) BEFORE MOVING IT. ╞LAG IS
- ALWAYS SET TO 1-255 SO THE BULLET MOVES
- SLOWLY.
-
- 49185 ╙╥,SPEED
-
- ╘HIS IS HALF WAY THROUGH ╙╨╥╔╥╤ (╙╔),
- WHICH RESETS THE SPRITE TO 13 AND SETS
- SPRITE PRIORITY ╠╧╫ (IT IS SEEN BEHIND
- TEXT). ╔T ALSO CLEARS THE KEYBOARD
- BUFFER.
-
- 49188 ╫╨
-
- ╘HIS CLEARS THE RIGHT HAND SIDE OF THE
- SCREEN FOR USE IN ╙ETUP AND CLEARING
- THE DIFFERENT MENUS.
-
- *49191 ╥╓,POS,LENGTH
- 49170 ╥╓,╪,┘,LENGTH
-
- ╘HIS REVERSES 'LENGTH' NUMBER OF
- CHARACTERS STARTING AT 'POS'. ╔T IS
- USED IN ╙ETUP TO MOVE THE SELECT BAR.
- ╔T REVERSES THE CHARACTERS BY ┼╧╥ING
- THEM WITH 128 SO THE ROUTINE WILL NEED
- TO BE ╙┘╙ED TWICE TO GET THE TEXT BACK
- TO NORMAL.
-
- *49194 ╙├,STRING NAME,POS/╪,┘,LENGTH,
- 49173 SPEED,╞LAG
-
- ╘HIS IS A VERY HANDY ROUTINE. ╔T LOOKS
- FOR A STRING CALLED 'STRING NAME', THIS
- CAN EITHER BE 1 OR 2 CHARACTERS LONG.
- ╔T SCROLLS THIS MESSAGE AT 'POS'. ╘HE
- LENGTH OF THE SCROLL MESSAGE IS
- 'LENGTH' AND THE SCROLL SPEED IS
- 'SPEED'. ╔F ╞LAG IS SET, THE SCROLLING
- WILL STOP AT THE END OF THE STRING,
- OTHERWISE THE SCROLLING WILL CONTINUE
- TILL THE MESSAGE IS NO LONGER VISIBLE.
- ─URING SCROLLING, PRESSING ╙PACE OR
- THE JOYSTICK BUTTON WILL SPEED UP
- SCROLLING BY ABOUT 8 TIMES WHEREAS
- PRESSING ANY OTHER KEY WILL TEMPORARILY
- HALT THE SCROLLING. ═OVING THE JOYSTICK
- WILL ALSO DO THIS. ╘HE KEYBOARD BUFFER
- IS CLEARED AFTER THE ROUTINE
-
- ┼XAMPLE: (╒SING THE ╒TILITIES):
- ┌┌$="╚ELLO THERE !":╙├=49176
- ╙┘╙ ╙├,┌┌,1024,5,30,0
-
- 49197 ┼╪,╪,┘,SPEED
-
- ╘HIS MAKES A EXPLOSION AT ╪,┘ ON THE
- BOARD BY PRINTING THE DEBRIS CLOUDS
- REPEATEDLY.
-
- 49200 ╨┬
-
- ╘HIS PRINTS ALL THE PIECES ON TO THE
- BOARD BY LOOKING AT THE INTEGER ARRAY
- ┬╧(ARD)%(0,0). ╘HIS ROUTINE EXECUTES IN
- A FRACTION OF A SECOND, WHEREAS ┬┴╙╔├
- DOES IT IN AROUND 20 SECONDS!
-
- =======================================
-
- ┬┴╙╔├ ╓ARIABLES
- -----------------
-
- ┴PART FROM THE VARIABLES USED TO JUMP
- TO THE MACHINE CODE, THE MAIN VARIABLES
- USED IN THE ┬┴╙╔├ PROGRAM ARE LISTED
- BELOW WITH A BRIEF EXPLANATION OF THEIR
- USE:
-
- ┬╧%(6,6) ╘HIS INTEGER ARRAY CONTAINS
- THE CHARACTERS ON THE BOARD. 0,0 IS AT
- THE TOP-LEFT.
-
- ╪,┘ ╘HESE CONTAIN THE COORDINATES FOR
- ┬╧%(╪,┘). ╪ AND ┘ ARE ALSO USED IN
- MOVING THE SPRITE USING ╙╨ (SEE ABOVE)
-
- ┬╥$(0-10) ╘HESE CONTAIN THE
- DESCRIPTIONS FOR ┬╧%(╪,┘)
- E.G. ╨╠╥.1 ╙╚╔╨ ETC.
-
- ╥$(0-5) ╘HESE CONTAIN THE RESULTS
- OF FIRING I.E. HIT, MISS ETC.
- ┬╥ ╘HIS CONTAINS ┬╧%(╪,┘)
- ┌ ╘HIS IS THE POSITION FOR ┴╘
- ═╓ ╬UMBER OF MOVES
- ═(0/1) ╬UMBER OF MOVES REMAINING FOR
- ╨LAYER ╧NE/╘WO
- ─╚ ╬UMBER OF HITS TO ZAP DESTROYER
- ─(0/1) ╬UMBER OF HITS REMAINING FOR
- ─ESTOYERS 1 AND 2
- ╙├$ ╘HIS CONTAINS THE MESSAGE TO BE
- SCROLLED USING ╙┘╙ ╙├,...
- ╙╠ ╠ENGTH OF SCROLLING MESSAGE
- ╨ ├URRENT PLAYER: 0 FOR ╨L.1
- 1 FOR ╨L.2
- ├1,├2,├3 ├OUNTERS USED IN ╞╧╥.╬┼╪╘
- LOOPS
- ╨1,╨2,╨3 ╨AUSE LENGTHS FOR ╙CROLLING,
- ╙ELECT AND
- ┼XPLOSION.
- ╓ 53248, THE START OF THE ╓╔├ CHIP.
- ╩1 56320 LOCATION FOR ╩╧┘ ╨ORT 2
- ╩ ├ONTENTS OF ╩1 (╩=╨┼┼╦(╩1))
- ╦$ ╒SED TO GET KEYS
- ╒╨$,─╧$,╠┼$,╥╔$,╞╔$ ╦EYS FOR MOVEMENT
- ╒╨ 126 :
- ─╧ 125 :╓ALUES FOR JOYSTICK MOVEMENTS
- ╠┼ 123 :
- ╥╔ 119 :
- ╞╔ 111 :
- ╒,─,╠,╥,╙ ╘HESE FLAGS ARE SET WHEN ╩
- EQUALS ANY OF ╒╨,─╧ ETC. OR
- ╦$ EQUALS ╒╨$,─╧$ ETC.
- ╞ ╘HIS IS A FLAG FOR WHEN ╙PC/╥ET IS
- PRESSED
-
- ========================================
- ┬┴╙╔├ ╥OUTINES
- ----------------
-
-
- 10 ╙TART, SET UP VARIABLES AND
- PRINT BOARD.
- 100 ╙╘┴╥╘, ╙ETUP OPTION.
- 200 ═┴╔╬ ╠╧╧╨. ╘HIS MOVES THE
- CURSOR AROUND TILL A PIECE IS
- SELECTED.
- 400 ├╚┼├╦ ├HECK FOR VALID SELECTION
- 500 ╙┼╠┼├╘ ╨IECE SELECTED, MAIN
- LOOP FOR MOVING PIECE.
- 700 ╞╧╥╫┴╥─ ═OVE PIECE ON SQUARE
- FORWARD.
- 900 ╥╧╘┴╘┼ ╥OTATES PIECE DEPENDING
- ON ╠ AND ╥ FLAGS.
- 1000 ╞╔╥┼! ╘HIS ALSO CHECKS TO SEE
- WHETHER THE PLAYER HAS NO SHIPS
- IF SO, ENDS GAME OR PLAY AGAIN.
- 2000 ─┼┬╥╔╙ DIMINISHES DEBRIS.
- 2200 ╥┼─╒├┼ ╘╒╥╬╙ ─ECREMENT ═(╨). ╔F
- THIS IS ZERO, ┼╬=1
- 2300 ╞╔╬─ ╨╠┴┘┼╥ ╒SED AT THE
- BEGINNING OF EACH ROUND TO MOVE
- CURSOR ON TO A SHIP.
- 2500 ├╧══┼╬╘╙ ╨RINTS A DESCRIPTION
- OF THE PIECE UNDER THE CURSOR.
- 3000 ╙├╥╧╠╠ ╙CROLLS MESSAGE IN ╙├$
- AT ┌, ╙╠ LENGTH AT ╨1 SPEED.
- ╘HIS ALSO PULSES ╙╘┴╘╒╙ ╥┼╨╧╥╘
- WHEN ┌=1890.
- 3300 ╦┼┘/╩╧┘ ╟ETS A ╦EY/╩OYSTICK
- PRESS/MOVEMENT AND SETS ╒,─,╠,╥
- ╞ AND ╙ ACCORDINGLY
- 4000 ┘/╬? ╟ETS ┘ES/╬O RESPONSE AND
- SETS ╨╧ IF ╨╧SITIVE REPLY.
- ╙PC/╥ET OR ╞IRE ┬UTTON=┘ES
- 6000 ╙┼╘╒╨
- 7000 ╠OAD/╙AVE/─EFAULT
- 7200 ╠OAD
- 7500 ╙AVE
- 7600 ─EFAULT
- 8000 ┼─╔╘ ╨╔┼├┼╙.
- 8700 ╥┼─┼╞╔╬┼ ╦┼┘╙
- 9000 ╨╥╔╬╘ ┬╧┴╥─ AND REST OF SCREEN.
- 10000 ╓┴╥╔┴┬╠┼╙ ╙ETS UP ┴╠╠ VARIABLES
- 11000 ─┴╘┴ FOR VARIABLES.
-
- ********┬Y ╨. ═AKEPEACE, ╬OV '89******** '1;EOYcmwüïòƒ⌐│╜╟╤█σ∩