home *** CD-ROM | disk | FTP | other *** search
- fROM jiadar@DELPHI.COM fRI dEC 31 00:47:21 1993
- pATH: KLAAVA!NEWS.FUNET.FI!SUNIC!eu.NET!HOWLAND.RESTON.ANS.NET!CS.UTEXAS.EDU!NEWS.TAMU.EDU!BLOOM-BEACON.MIT.EDU!NOC.NEAR.NET!NEWS.DELPHI.COM!USENET
- fROM: rOSS mARTIN aNDREW cAPDEVILLE <jiadar@DELPHI.COM>
- nEWSGROUPS: COMP.SYS.CBM
- sUBJECT: rE: pROGRAMMING
- dATE: tUE, 28 dec 93 23:49:13 est
- oRGANIZATION: dELPHI iNTERNET
- lINES: 796
- mESSAGE-id: <931228.85753.jiadar@DELPHI.COM>
- rEFERENCES: <ciPbZ9.k82@SUNCAD.CAMOSUN.BC.CA> <931228.10928.jiadar@DELPHI.COM>
- nntp-pOSTING-hOST: BOS3A.DELPHI.COM
-
- rATASTIC pROGRAMMING, iNC. PAGE 1.
- 931228-0134.MLS 28 dECEMBER 1993
-
- pROGRAM: 931228-0134.MLS sPRITE!
- dESCRIPTION: ml CONVERSION OF BASIC PROGRAM. dEMONSTRATION
- OF SPRITE CREATION AND MOVEMENT.
-
- *= $C000
- O:.S
-
- iNSTRUCTIONS TO THE ASEMBLER. tHE START ADDRESS WILL BE
- $C000, WE WANT TO POKE DATA TO MEMORY AND DISPLAY TO THE
- SCREEN.
-
- V = 53248
-
- sET THE VARIABLE (LABEL) v TO THE STARTING ADDRESS OF THE
- vic CHIP, 53248. wE CAN USE THIS AS AN OFFSET TO ACCESS vic
- REGESTERS.
-
- PRINT = $FFD2
- STROUT = $AB1E
-
- dEFINE TWO MORE VARIABLES, THESE ARE KERNAL ROUTINES TO
- PRINT A CHARACTER AND STRING.
-
- LDA #5:JSR PRINT:LDA #6:STA 53280:STA 53281:LDX #64
-
- tHIS SETS THE COLOR TO WHITE, BACKROUND AND BORDER COLORS TO
- LIGHT BLUE, AND PUTS 64 IN .X. .x WILL BE THE INDEX TO READ
- IN THE SPRITE DATA.
-
- LOOP LDA DATA,X:STA 832,X:DEX:BNE LOOP
-
- tHIS SIMPLY PUTS THE SPRITE DATA INTO BLOCK 13 OF SPRITE
- MEMORY IN BANK 1. iT IS SORTA LIKE A BACKWARDS (STEP-1) FOR
- NEXT LOOP IN BASIC, SORTA...
-
- LDA #255:STA X:LDA #200:STA Y
-
- hERE WE SET THE DEFAULT VALUES FOR THE x AND y VARIABLES. dO
- NOT CONFUSE THESE WITH THE REGESTERS. tHESE VARIABLES WILL
- BE USED TO HOLD THE POSITION OF THE SPRITE.
-
- LDA #4:STA V+21 ; SET THE SPRITE ENABLE REGESTER TO ENABLE
- ; SPRITE 2
- LDA #1:STA V+41 ; COLOR SPRITE 2 WHITE
- LDA X:STA V+4 ; POSITION X
- LDA Y:STA V+5 ; POSITION Y
- LDA #13:STA 2042; DATA BLOCK 13
- LDA #0:STA 53264; ZERO msb OF x
- LDA #1:STA I ; NOT NEEDED
-
- tHE ABOVE CODE JUST SETS THE vic REGESTERS AND DISPLAYS THE
- SPRITE AT X,Y FROM DATA BLOCK 13.
-
-
-
- rATASTIC pROGRAMMING, iNC. PAGE 2.
- 931228-0134.MLS 28 dECEMBER 1993
-
- LDA #<TXT:LDY #>TXT:JSR STROUT
-
- tHIS PRINTS SOME TEXT ON THE SCREEN. wHEN WE RUN INTO THIS
- TEXT WITH THE SPRITE, THE PROGRAM WILL END.
-
- RJ LDA 56320:AND #15:STA J
-
- tHIS READS THE JOYSTICK. iT IS LIKE J=PEEK(56320)AND15 IN
- BASIC. wE WILL GET THE FOLLOWING VALUES:
-
- 14
- 10 6
- 11 15 7
- 9 5
- 13
-
- wE PUT THE VALUE RECIEVED INTO THE VARIABLE j.
-
- LDA 56320:AND #16:BNE CTU1:RTS
-
- wE CHECK IF THE FIRE BUTTON IS PRESSED. tHIS IS LIKE THE
- BASIC IF(PEEK(56320)AND16)=0THENEND. wE USE THE bne
- INSTRUCTION BECAUSE IF IT IS true THE FIRE BUTTON IS not
- PRESSED.
-
- CTU1 LDA 53279:LDA J:LDY Y:LDX X
-
- fIRST WE LATCH 53279 TO RESET THE COLLISION DETECT. tHEN WE
- LOAD THE VARIABLE j INTO THE .A REGESTER, Y INTO .Y, AND X
- INTO .X. nOW WE CAN DIRECTLY ACCESS THE VARIBLES THROUGH THE
- REGESTERS.
-
- LDA J:CMP #14:BNE CTU2:DEY:JMP CHADR ; UP
- CTU2 LDA J:CMP #13:BNE CTU3:INY:JMP CHADR ; DOWN
- CTU3 LDA J:CMP #11:BNE CTU4:DEX:JMP CHADR ; LEFT
- CTU4 LDA J:CMP #7:BNE CTU5:INX:JMP CHADR ; RIGHT
- CTU5 LDA J:CMP #10:BNE CTU6:DEX:DEY:JMP CHADR ; UP-LEFT
- CTU6 LDA J:CMP #6:BNE CTU7:DEY:INX:JMP CHADR ; UP-RIGHT
- CTU7 LDA J:CMP #5:BNE CTU8:INX:INY:JMP CHADR ; DOWN-RIGHT
- CTU8 LDA J:CMP #9:BNE CTU9:DEX:INY:JMP CHADR ; DOWN-LEFT
- CTU9 JMP CHADR
-
- tHIS BLOCK OF CODE INCREMENTS REGESTERS ACCORDING TO THE
- VARIABLE j. tHIS IS LIKE BASIC - IF J=XX THEN DO THIS. iF
- NOT IT IS IGNORED. aLL IN ALL, WE END UP AT chadr.
-
- CHADR JSR DELAY:JMP RUDA
-
- wE JSR TO A DELAY SUBROUTINE SO WE CAN ACTUALLY see THE
- SPRITE ON THE SCREEN, AND THEN WE JUMP TO ruda.
-
-
-
-
-
- rATASTIC pROGRAMMING, iNC. PAGE 3.
- 931228-0134.MLS 28 dECEMBER 1993
-
- LDA 53264:AND #4:BEQ NL
- LDA #0:STA 53264:LDX #255:JMP RUDA
- NL LDA 53264:ORA #4:STA 53264:LDX #0
-
- tHIS CODE WAS SOPOSE TO CHECK FOR THE line AND DEAL WITH THE
- msb x REGESTER, BUT i COULD NOT FIGURE OUT HOW TO DO IT. iF
- YOU KNOW HOW, HELP ME!
-
- RUDA LDA 53279:AND #4:BEQ RDT:RTS
-
- hERE WE CHECK THE SPRITE TO DATA COLLISION REGESTER, AND IF
- IT IS TRUE (YOU TOUCH **stop** WITH THE SPRITE) THEN WE END
- THE PROGRAM.
-
- RDT STX X:STY Y:STX V+4:STY V+5:JMP RJ
-
- wE UPDATE THE x AND y VARIABLES AND ACTUALLY MOVE THE
- SPRITE. tHEN WE GO BACK TO rj (READ-JOYSTICK) TO DO IT ALL
- OVER AGAIN.
-
- RTS
-
- i JUST HAVE THIS HERE SO IT DOES NOT CRASH IF i FORGOT IT.
-
- DELAY STY Y:PHA:TYA:PHA:LDY #0
- LOP1 DEY:STY V+41:BNE LOP1
- PLA:TAY:PLA:LDY #1:STA V+41:LDY Y:RTS
-
- sIMPLE LONGATED DELAY SUBROUTINE WHICH ATTEMPTS TO SAVE THE
- VARIABLES.
-
- I .BYTE 1
- X .BYTE 0
- Y .BYTE 0
- J .BYTE 0
- TXT .BYTE 147:.BYTE "**STOP**":.BYTE 0
-
- vARIABLES USED IN THE PROGRAM. 'i' IS NOT USED BUT THE
- OTHERS ARE.
-
- DATA .BYTE 255 128 0 255 0 0
- BYTE 254 0 0 252 0 0
- BYTE 252 0 0 254 0 0
- BYTE 231 0 0 195 128 0
- BYTE 129 192 0 0 224 0
- BYTE 0 112 0 0 48 0
- BYTE 0 0 0 0 0 0
- BYTE 0 0 0 0 0 0
- BYTE 0 0 0 0 0 0
- BYTE 0 0 0 0 0 0
- BYTE 0 0 0 0 0 0
-
-
-
-
- rATASTIC pROGRAMMING, iNC. PAGE 4.
- 931228-0134.MLS 28 dECEMBER 1993
-
- tHE DATA FOR THE SPRITE.
-
- END
-
- wE TELL THE ASEMBLER TO STOP ASSEMBLING.
-
-
- hERE IS THE COMPLETE LISTING FOR EASIER TYPING IN VIA AN
- ASSEMBLER SUCH AS rlass (AVALIABLE FROM ME).
-
-
-
- 10 *= $C000
- 20 .O:.S
- 30 V = 53248
- 40 PRINT = $FFD2
- 50 STROUT = $AB1E
- 100 LDA #5:JSR PRINT:LDA #6:STA 53280:STA 53281:LDX #64
- 110 LOOP LDA DATA,X:STA 832,X:DEX:BNE LOOP
- 120 LDA #255:STA X:LDA #200:STA Y
- 130 LDA #4:STA V+21
- 140 LDA #1:STA V+41
- 150 LDA X:STA V+4
- 160 LDA Y:STA V+5
- 170 LDA #13:STA 2042
- 180 LDA #0:STA 53264
- 190 LDA #1:STA I
- 200 LDA #<TXT:LDY #>TXT:JSR STROUT
- 210 RJ LDA 56320:AND #15:STA J
- 220 LDA 56320:AND #16:BNE CTU1:RTS
- 230 CTU1 LDA 53279:LDA J:LDY Y:LDX X
- 240 LDA J:CMP #14:BNE CTU2:DEY:JMP CHADR
- 250 CTU2 LDA J:CMP #13:BNE CTU3:INY:JMP CHADR
- 260 CTU3 LDA J:CMP #11:BNE CTU4:DEX:JMP CHADR
- 270 CTU4 LDA J:CMP #7:BNE CTU5:INX:JMP CHADR
- 280 CTU5 LDA J:CMP #10:BNE CTU6:DEX:DEY:JMP CHADR
- 290 CTU6 LDA J:CMP #6:BNE CTU7:DEY:INX:JMP CHADR
- 300 CTU7 LDA J:CMP #5:BNE CTU8:INX:INY:JMP CHADR
- 310 CTU8 LDA J:CMP #9:BNE CTU9:DEX:INY:JMP CHADR
- 320 CTU9 JMP CHADR
- 330 CHADR JSR DELAY:JMP RUDA
- 340 LDA 53264:AND #4:BEQ NL
- 350 LDA #0:STA 53264:LDX #255:JMP RUDA
- 360 NL LDA 53264:ORA #4:STA 53264:LDX #0
- 370 RUDA LDA 53279:AND #4:BEQ RDT:RTS
- 380 RDT STX X:STY Y:STX V+4:STY V+5:JMP RJ
- 39999 RTS
- 40000 DELAY STY Y:PHA:TYA:PHA:LDY #0
- 40010 LOP1 DEY:STY V+41:BNE LOP1
- 40020 PLA:TAY:PLA:LDY #1:STA V+41:LDY Y:RTS
-
-
-
-
-
- rATASTIC pROGRAMMING, iNC. PAGE 5.
- 931228-0134.MLS 28 dECEMBER 1993
-
- 49999 RTS
- 50000 I .BYTE 1
- 50010 X .BYTE 0
- 50020 Y .BYTE 0
- 50030 J .BYTE 0
- 55000 TXT .BYTE 147:.BYTE "**STOP**":.BYTE 0
- 60000 DATA .BYTE 255 128 0 255 0 0
- 60010 .BYTE 254 0 0 252 0 0
- 60020 .BYTE 252 0 0 254 0 0
- 60030 .BYTE 231 0 0 195 128 0
- 60040 .BYTE 129 192 0 0 224 0
- 60050 .BYTE 0 112 0 0 48 0
- 60060 .BYTE 0 0 0 0 0 0
- 60070 .BYTE 0 0 0 0 0 0
- 60080 .BYTE 0 0 0 0 0 0
- 60090 .BYTE 0 0 0 0 0 0
- 60100 .BYTE 0 0 0 0 0 0
- 63999 .END
- READY.
-
- aND IF YOU DO NOT HAVE AN ASSEMBLER, HERE IS A LISTING OF A
- basic LOADER WHICH LOADS THE ml FROM DATA STATEMENTS. yOU
- CAN TYPE THIS IN DIRECTLY IN basic. be very careful AND
- WATCH OUT FOR ERRORS. tHERE ARE 365 DATA ITEMS TO TYPE IN!
-
- 0 REM SPRITE! BY RATASTIC
- 1 REM 931228-0134.MLS
- 2 REM SPRITE - JOYSTICK MOVER
- 10 FORX=49152TO49517:READY:POKEX,Y:NEXT
- 20 PRINT"FINISHED...[DOWN 9]":PRINT"SYS49152 TO START"
- 30 POKE 49417,0 :REM SPEED 1 IS FASTEST 0 IS SLOWEST 255 IS
- SLOW, 5 IS FAST EXC
- 60000 DATA 169, 5, 32, 210, 255, 169
- 60001 DATA 6, 141, 32, 208, 141, 33
- 60002 DATA 208, 162, 64, 189, 43, 193
- 60003 DATA 157, 64, 3, 202, 208, 247
- 60004 DATA 169, 255, 141, 30, 193, 169
- 60005 DATA 200, 141, 31, 193, 169, 4
- 60006 DATA 141, 21, 208, 169, 1, 141
- 60007 DATA 41, 208, 173, 30, 193, 141
- 60008 DATA 4, 208, 173, 31, 193, 141
- 60009 DATA 5, 208, 169, 13, 141, 250
- 60010 DATA 7, 169, 0, 141, 16, 208
- 60011 DATA 169, 1, 141, 29, 193, 169
- 60012 DATA 33, 160, 193, 32, 30, 171
- 60013 DATA 173, 0, 220, 41, 15, 141
- 60014 DATA 32, 193, 173, 0, 220, 41
- 60015 DATA 16, 208, 1, 96, 173, 31
- 60016 DATA 208, 173, 32, 193, 172, 31
- 60017 DATA 193, 174, 30, 193, 173, 32
-
-
-
-
-
- rATASTIC pROGRAMMING, iNC. PAGE 6.
- 931228-0134.MLS 28 dECEMBER 1993
-
- 60018 DATA 193, 201, 14, 208, 4, 136
- 60019 DATA 76, 201, 192, 173, 32, 193
- 60020 DATA 201, 13, 208, 4, 200, 76
- 60021 DATA 201, 192, 173, 32, 193, 201
- 60022 DATA 11, 208, 4, 202, 76, 201
- 60023 DATA 192, 173, 32, 193, 201, 7
- 60024 DATA 208, 4, 232, 76, 201, 192
- 60025 DATA 173, 32, 193, 201, 10, 208
- 60026 DATA 5, 202, 136, 76, 201, 192
- 60027 DATA 173, 32, 193, 201, 6, 208
- 60028 DATA 5, 136, 232, 76, 201, 192
- 60029 DATA 173, 32, 193, 201, 5, 208
- 60030 DATA 5, 232, 200, 76, 201, 192
- 60031 DATA 173, 32, 193, 201, 9, 208
- 60032 DATA 5, 202, 200, 76, 201, 192
- 60033 DATA 76, 201, 192, 32, 2, 193
- 60034 DATA 76, 234, 192, 173, 16, 208
- 60035 DATA 41, 4, 240, 10, 169, 0
- 60036 DATA 141, 16, 208, 162, 255, 76
- 60037 DATA 234, 192, 173, 16, 208, 9
- 60038 DATA 4, 141, 16, 208, 162, 0
- 60039 DATA 173, 31, 208, 41, 4, 240
- 60040 DATA 1, 96, 142, 30, 193, 140
- 60041 DATA 31, 193, 142, 4, 208, 140
- 60042 DATA 5, 208, 76, 78, 192, 96
- 60043 DATA 140, 31, 193, 72, 152, 72
- 60044 DATA 160, 0, 136, 140, 41, 208
- 60045 DATA 208, 250, 104, 168, 104, 160
- 60046 DATA 1, 141, 41, 208, 172, 31
- 60047 DATA 193, 96, 96, 1, 56, 54
- 60048 DATA 14, 147, 42, 42, 83, 84
- 60049 DATA 79, 80, 42, 42, 0, 255
- 60050 DATA 128, 0, 255, 0, 0, 254
- 60051 DATA 0, 0, 252, 0, 0, 252
- 60052 DATA 0, 0, 254, 0, 0, 231
- 60053 DATA 0, 0, 195, 128, 0, 129
- 60054 DATA 192, 0, 0, 224, 0, 0
- 60055 DATA 112, 0, 0, 48, 0, 0
- 60056 DATA 0, 0, 0, 0, 0, 0
- 60057 DATA 0, 0, 0, 0, 0, 0
- 60058 DATA 0, 0, 0, 0, 0, 0
- 60059 DATA 0, 0, 0, 0, 0, 0
- 60060 DATA 0, 0, 0, 0, 0, 0
- 60061 DATA 0, 0, 0, 0, 0, 0
- READY.
-
-
- tHAT IS QUITE ALOT OF DATA AND IF YOU DO NOT REALLY NEED THE
- SPEED, HERE IS THE basic VERSION BEFORE i CODED IT TO ml. iT
- DOES CHECK FOR THE msb. tHE EXPLINATION FOR THIS PROGRAM IS
- ALSO CONTAINED.
-
-
-
-
- rATASTIC pROGRAMMING, iNC. PAGE 7.
- 931228-0134.MLS 28 dECEMBER 1993
-
-
- 0 PRINTCHR$(5):POKE53280,6:POKE53281,6
- mAKE BACKROUND AND BORDER LIGHT BLUE AND CHANGE TEXT TO
- WHITE.
-
- 10 FORX=832TO832+63:READY:POKEX,Y:NEXTX
- rEAD IN SPRITE DATA INTO BLOCK 13 OF BANK 1. bANK 1 IS THE
- DEFAULT BANK. wE GET BLOCK 13 BY 832/64. iF WE WERE TO USE
- 704 TO 704+64 THEN IT WOULD BE BLOCK 11 (704/64). wE USE
- THIS BLOCK NUMBER WITH THE SPRITE POINTER REGESTER. wE READ
- 63 BYTES FROM DATA STATEMENTS AND POKE THEM INTO MEMORY.
-
- 15 X=255:Y=200
- sET THE X AND Y CO-ORDINATES OF THE SPRITE.
-
- 20 V=53248 :REM SET 'V' TO VIC ADR
- sET THE VARIBLE 'V' TO THE START OF vic MEMORY. tHIS ALLOWS
- US TO ADDRESS SPECIFIC REGESTERS OF THE VIC WITH v+REGVALUE.
-
- 30 POKEV+21,4 :REM ENABLE SPR 2
- rEGESTER 21 OF THE vic CHIP IS THE SPRITE ENABLE REGESTER.
- wE POKE IT LIKE THIS: poke v+21, peek (v+21) or (SPRITE
- ENABLE^2) TO ENABLE A SPECIFIC SPRITE. sINCE WE WILL BE
- USING ONLY SPRITE 3, WE JUST POKE IT WITH A 4. tHIS IS DONE
- BY BINARY REPRESENTATION:
-
- sPRITE -> 7 6 5 4 3 2 1 0
- bINARY -> 1 1 1 1 1 1 1 1 ->255 (ONE BYTE)
- vALUE -> 128 64 32 16 8 4 2 1
-
- tHE 'VALUE' FOR SPRITE 2 IS 4, SO WE POKE THAT INTO THE
- sPRITE eNABLE rEGESTER AND THAT ALLOWS THE SPRITE TO BE
- VISABLE.
-
- 40 POKEV+41,1 :REM COLOR SPR 2 WHITE
- tHIS SETS THE COLOR OF THE SPRITE JUST AS YOU WOULD SET THE
- BACKROUND OR BORDER COLORS. tHE ARGUMENTS ARE THE SAME. tHIS
- SETS SPRITE 2. eACH SPRITE HAS A SEPERATE COLOR REGISTER.
- sPRITE 0 HAS REG. 39, ALL THE WAY FOR ALL 7 SPRITES.
-
- 50 POKEV+4,X :REM POSITION SPR 2 X
- tHIS IS THE x POSITION (LOWER 8 BITS) OF SPRITE 2. eACH
- SPRITE HAS AN x POSITION AND A y POSITION. wE DEFINED x
- EARLIER, SO WE POKE REGISTER 4 WITH THE VALUE OF x, THUS
- PLACING THE SPRITE ON THE VISUAL SCREEN.
-
- 60 POKEV+5,Y :REM POSITION SPR 2 Y
- wE MUST POKE THE y VALUE ALSO.
-
-
-
-
-
-
-
- rATASTIC pROGRAMMING, iNC. PAGE 8.
- 931228-0134.MLS 28 dECEMBER 1993
-
- 70 POKE2042,13 :REM DATA BLOCK FOR SPR 2
- tHIS TELLS THE vic CHIP WHERE TO GET THE DATA. tHIS IS A
- BLOCK NUMBER, THUS THE NUMBER POKED HERE TIMES 64 WILL GIVE
- THE ACTUAL STARTING ADDRESS OF THE DATA. 13*64 = 832 AND
- THAT IS WHERE WE ARE PUTTING THE SPRITE DATA.
-
- 80 POKE53264,0 :REM 0 MSB OF X
- tHIS IS THE 9TH BIT OF THE x REGESTER. tHE ARGUMENTS WORK
- LIKE THE SPRITE ENABLE REGESTER, ONE BIT FOR EACH SPRITE.
- sINCE THERE ARE MORE THAN 255 (ONE BYTE) SCAN LINES FOR x,
- WE MUST PROVIDE ANOTHER BIT TO PROVIDE FOR FIVE HUNDERED
- SOMETHING PLACES. wE SET THIS TO 0 BECAUSE WE ARE SETTING
- THE x POSITION AT 255. iF WE WANTED TO SET x AT THE 256TH
- POSITION, WE WOULD SET BIT TWO OF THIS REGESTER TO 1 AND THE
- x POSITION REGESTER TO 0. tHAT WOULD GIVE A BINARY VALUE OF
- %100000000 WHICH IS THE NINE BIT REPRESENTATION OF 256.
-
- 90 I=1
- dELARES THE VARIABLE i AND SETS ITS VALUE TO 1. tHIS WILL
- BE USED TO INCREMENT THE JOYSTICK CONTROL.
-
- 91 PRINTCHR$(147)"**STOP** "
- pRINT A PROMPT. tHIS WILL BE USED TO STOP THE PROGRAM. wHEN
- THE POINTER COMES INTO CONTACT WITH THIS TEXT, THE PROGRAM
- WILL END. wE CAN CHECK BY THE SPRITE TO DATA COLLISION
- REGESTER.
-
- 100 REM MOVE SPRITE BY JOYSTICK IN
- 110 REM PORT 2 SUBROUTINE
- wE WILL NOW WRITE A SUBROUTINE THAT WILL ALLOW US TO MOVE
- THE SPRITE VIA A JOYSTICK IN PORT 2.
-
- 120 J=NOT PEEK(56320)AND15
- tHIS PEEKS THE cia#1 CHIP (COMPLEX-INTERFACE-ADAPTER) TO GET
- THE VALUE OF JOYSTICK 2. nO NEED TO how IT WORKS, JUST KNOW
- THAT IT DOES.
-
- 121 IF((PEEK(56320)AND16)/16)=0THENEND
- tHIS IS A TEST FOR THE FIRE BUTTON. iF IT IS FALSE, 0, THEN
- WE WILL ABORT THE PROGRAM. aGAIN, NO NEED TO KNOW HOW IT
- WORKS. (iF YOU WANT TO i WILL EXPLAIN BUT IT WILL CONFUSE
- YOU!)
-
- 122 A=PEEK(53279)
- aLL THIS DOES IS CLEAR THE SPRITE TO DATA COLLISION
- REGESTER. tHIS REGESTER IS CLEARED WHEN READ AND WE NEED TO
- SET IT TO 0 BEFORE WE START ANYTHING ELSE.
-
-
-
-
-
-
-
-
- rATASTIC pROGRAMMING, iNC. PAGE 9.
- 931228-0134.MLS 28 dECEMBER 1993
-
- 130 IFJ=1THENY=Y-I
- 140 IFJ=2THENY=Y+I
- 150 IFJ=4THENX=X-I
- 160 IFJ=8THENX=X+I
- 170 IFJ=5THENX=X-I:Y=Y-I
- 180 IFJ=9THENY=Y-I:X=X+I
- 190 IFJ=10THENX=X+I:Y=Y+I
- 200 IFJ=6THENX=X-I:Y=Y+I
- tHE ABOVE CODE CHECKS FOR ALL POSSIBLE JOYSTICK POSITIONS
- AND ADJUSTS THE X AND Y VARIABLES ACCORDINGLY. hERE IS A
- CHART OF THE POSSIBLE VALUES OF j:
-
- 1
- 5 9
- 4 0 8
- 6 10
- 2
-
- 201 IFJ=0THENP=1:I=1
- 202 IF(P/15)=INT(P/15)THENI=I+1
- 203 IFJTHENP=P+1
- 204 IFI>5THENI=5
- tHIS CODE ADJUSTS THE SPEED OF THE POINER IF IT IS HELD DOWN
- FOR AN EXTENDED AMOUNT OF TIME. iN LINE 201, WE CHECK TO SEE
- IF THE JOYSTICK IS STATIONARY (0 VALUE) AND IF IT IS THEN WE
- SET p (PULSE-COUNTER) TO 1 AND i TO 1. tHIS IS THE SLOWEST
- SPEED AND IS ALSO THE DEFAULT. iN LINE 202 WE CHECK IF p IS
- A MUTIPLE OF 15 AND IF SO THEN WE INCREMENT i. sO i WILL BE
- INCREMENTED WHEN p REACHES 15, 30, 45, 60, 75, SO ON UNTIL
- THE JOYSTICK IS RELEASED. iN LINE 203 WE CHECK IF j IS
- NON-ZERO (BOLEON LOGIC TESTS...) AND IF IT IS NOT THAT MEANS
- THAT THE JOYSTICK IS BEING HELD IN ONE DIRECTION SO WE
- INCREMENT p. lINE 204 MAKES SURE WE DO NOT ALLOW THE
- JOYSTICK TO GO too FAST. tHE VARIABLE i CANNOT GO OVER 5.
-
- 210 IF(X<256)AND(X>-1)THEN220
- 211 IF(PEEK(53264)AND4)THENPOKE53264,0:X=255:GOTO220
- 212 POKE53264,PEEK(53264)OR4:X=0
- tHIS CODE ALLOWS US TO GET OVER THE INVISIBLE line. sINCE
- THERE ARE OVER 255 x SCAN LINES, WE MUST BE ABLE TO MOVE THE
- SPRITE PAST THE 255TH x POSITION. tHERE IS A msb REGESTER
- THAT WORKS LIKE THE SPRITE ENABLE REGESTER. fOLLOW THE
- LOGIC... iN LINE 210 WE CHECK TO SEE IF x IS OUT OF RANGE. a
- BYTE CAN ONLY BE >-1 AND <256 SO WE CHECK THAT AND IF x IS
- WITHIN RANGE THAN NO CHANGING NEEDS TO BE DONE AND WE
- CONTINUE WITH 220. iF x IS OUT OF RANGE, THOUGH, WE NEED TO
- FIX SOMETHING AS WE CAN NOT poke A VALUE GREATER THAN 255 OR
- LESS THAN 0. iN LINE 211 WE CHECK (BY BOLEON LOGIC) TO SEE
- IF THE msb IS on. wE USE THE and 4 AT THE END TO STRIP ALL
- BITS EXCEPT THE 2ND BINARY DIGET. tHEREFORE, IF IT IS TRUE
-
-
-
-
-
- rATASTIC pROGRAMMING, iNC. PAGE 10.
- 931228-0134.MLS 28 dECEMBER 1993
-
- WE WILL GET 4 AND IF IT IS FALSE WE WILL GET 0. iF IT IS
- TRUE, THEN WE MAKE IT 0 AND MAKE x 255 AND GO TO 220. iF IT
- IS NOT TRUE, THEN ONLY ONE OTHER CONDITION COULD BE- ITS
- FALSE! iF IT IS FALSE, THEN WE MUST TURN THE msb on AND MAKE
- x 0. tHEN THE SPRITE WILL BE AT THE 256TH POSITION. i KNOW,
- IT IS CONFUSING...
-
- 220 IF(PEEK(53279)AND4)THENEND
- tHIS IS THE SPRITE TO DATA COLLISION DETECT REGESTER. tHE
- EXPRESSION PEEK(53279)AND4 WILL RETURN 0 OR 4 DEPENDING ON
- IF THE SPRITE HAS TOUCHED ANY CHARACTERS ON THE SCREEN. iF
- IT HAS, IT WILL BE 4, THUS TRUE. iF IT HAS NOT IT WILL BE 0.
- iF IT IS TRUE THEN WE END THE PROGRAM AS THE USER MOVED THE
- SPRITE AND TOUCHED THE **stop** PROMPT PRINTED EARLIER.
-
- 230 POKEV+4,X:POKEV+5,Y:GOTO120
- hERE WE UPDATE THE CO-ORDINANTS, THUS ACTUALLY MOVING THE
- SPRITE. wE GO BACK TO 120 TO GET ANOTHER JOYSTICK VALUE AND
- WE DO IT ALL OVER AGAIN!
-
-
- 60000 DATA 255, 128, 0, 255, 0, 0
- 60001 DATA 254, 0, 0, 252, 0, 0
- 60002 DATA 252, 0, 0, 254, 0, 0
- 60003 DATA 231, 0, 0, 195, 128, 0
- 60004 DATA 129, 192, 0, 0, 224, 0
- 60005 DATA 0, 112, 0, 0, 48, 0
- 60006 DATA 0, 0, 0, 0, 0, 0
- 60007 DATA 0, 0, 0, 0, 0, 0
- 60008 DATA 0, 0, 0, 0, 0, 0
- 60009 DATA 0, 0, 0, 0, 0, 0
- 60010 DATA 0, 0, 0, 0, 0, 0
- tHAT IS THE DATA FOR THE SPRITE SHAPED LIKE A POINTER.
-
-
- hERE IS THE COMPLETE UNCOMMENTED PROGRAM FOR EASIER TYPING
- IN.
-
-
-
- READY.
-
- 0 PRINTCHR$(5):POKE53280,6:POKE53281,6
- 10 FORX=832TO832+63:READY:POKEX,Y:NEXTX
- 15 X=255:Y=200
- 20 V=53248 :REM SET 'V' TO VIC ADR
- 30 POKEV+21,4 :REM ENABLE SPR 3
- 40 POKEV+41,1 :REM COLOR SPR 3 WHITE
- 50 POKEV+4,X :REM POSITION SPR 3 X
- 60 POKEV+5,Y :REM POSITION SPR 3 Y
-
-
-
-
-
- rATASTIC pROGRAMMING, iNC. PAGE 11.
- 931228-0134.MLS 28 dECEMBER 1993
-
- 70 POKE2042,13 :REM DATA BLOCK FOR SPR3
- 80 POKE53264,0 :REM 0 MSB OF X
- 90 I=1
- 91 PRINTCHR$(147)"**STOP** "
- 100 REM MOVE SPRITE BY JOYSTICK IN
- 110 REM PORT 2 SUBROUTINE
- 120 J=NOT PEEK(56320)AND15
- 121 IF((PEEK(56320)AND16)/16)=0THENEND
- 122 A=PEEK(53279)
- 130 IFJ=1THENY=Y-I
- 140 IFJ=2THENY=Y+I
- 150 IFJ=4THENX=X-I
- 160 IFJ=8THENX=X+I
- 170 IFJ=5THENX=X-I:Y=Y-I
- 180 IFJ=9THENY=Y-I:X=X+I
- 190 IFJ=10THENX=X+I:Y=Y+I
- 200 IFJ=6THENX=X-I:Y=Y+I
- 201 IFJ=0THENP=1:I=1
- 202 IF(P/15)=INT(P/15)THENI=I+1
- 203 IFJTHENP=P+1
- 204 IFI>5THENI=5
- 210 IF(X<256)AND(X>-1)THEN220
- 211 IF(PEEK(53264)AND4)THENPOKE53264,0:X=255:GOTO220
- 212 POKE53264,PEEK(53264)OR4:X=0
- 220 IF(PEEK(53279)AND4)THENEND
- 230 POKEV+4,X:POKEV+5,Y:GOTO120
- 60000 DATA 255, 128, 0, 255, 0, 0
- 60001 DATA 254, 0, 0, 252, 0, 0
- 60002 DATA 252, 0, 0, 254, 0, 0
- 60003 DATA 231, 0, 0, 195, 128, 0
- 60004 DATA 129, 192, 0, 0, 224, 0
- 60005 DATA 0, 112, 0, 0, 48, 0
- 60006 DATA 0, 0, 0, 0, 0, 0
- 60007 DATA 0, 0, 0, 0, 0, 0
- 60008 DATA 0, 0, 0, 0, 0, 0
- 60009 DATA 0, 0, 0, 0, 0, 0
- 60010 DATA 0, 0, 0, 0, 0, 0
- READY.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- rATASTIC pROGRAMMING, iNC. PAGE 12.
- 931228-0134.MLS 28 dECEMBER 1993
-
- uuencodings. iF YOU DO NOT WANT TO TYPE IT IN, HERE ARE THE
- UUENCODINGS FOR THREE PROGRAMS. gfx.ptr-exampl IS THE BASIC
- PROGRAM. blr.sprite IS THE BASIC LOADER FOR THE MACHINE
- LANGUAGE PROGRAM. gfx.spr-editor IS MY SPRITE EDITOR. hERE
- ARE THE INSTRUCTIONS FOR THAT -> TYPE run AND YOU WILL GET A
- GRID. dESIGN YOUR SPRITE WITH ASTRICTS * ON THE GRID. tHEN
- GO RIGHT BELOW THE GRID AND TYPE run 100. iT WILL DRAW YOUR
- SPRITE. iF YOU ARE NOT SATISIFIED, THEN FIX IT WITH * AND .
- AND THEN run 100 AGAIN AND IT WILL RE-DRAW. wHEN YOU ARE
- SATISFIED, YOU CAN SAVE THE NUMBERED DATA TO A seq FILE OR
- HAVE THE PROGRAM WRITE DATA STATEMENTS FOR YOU. iF YOU WANT
- TO SAVE IT TO A SEQ FILE run 200, TO LOAD IT run 300. tO
- PRINT OUT DATA run 400. wHEN IT ASKS YOU TO ERASE THE
- PROGRAM TELL IT YES. iT WILL GIVE YOU DATA STATEMENTS AND
- SOME LINES TO SET UP THE SPRITE. iTS SMALL, BUT IT WORKS AND
- IS ALL i NEED TO MAKE AWESOME SPRITE DEMOS LIKE THE ONES
- CONTAINED WITHIN THIS DOCUMENT!
-
- BEGIN 644 GFX.PTR-EXAMPL
- m_0@="___f<<h-2dzes4s,c@p+#8zes4s,c@q+#8_.@@*_(%8lc@s,j0x,s*j
- m-c,zaudzeu@l63j"6_!*"_\_6+(r-34z6;(r,#__<_@4_%:r-3,r-#@@("_@
- m(#j/(%-%5"_g5b<@5$\@5de#($%$4@"-"!x_eu:j,c$l-"_@.h\@14y!0dq%
- m(%-04b_s_*\(*_"75jht,2pq("_zcr!#3tq/4b!34%(@,r!72$e410#0"#(_
- meu:j-"q8("_@.h\@4$]3251)3tx@4u!2(#,@6_#q"#p_eu:j-2q9("_@.h\@
- m4$]3251)3tx@4u!2(#,@60_5"48_es(p-#(l,3,@.h\@1$%402!"3$]#2r!&
- m3u(@4u!2,p_p"5__es4s,c8t+#_@.h\@,"!-4t(@3t8@6__x"5h_2;(q_%8)
- m6p"9qr@q-#<i(bhj4u1/4"hj("_@("_@("_b_'<)9_"/($u/5d4@4u!2251%
- m($)9($i/65-424-+($e._(\);@"/(%!/4e0@,b!354)23u5424y%_*,)>_!*
- mlj@@pb@u-c,r,"fo,34_t_ey_(lh*,(h-38s,c_iks$v*:tq-bfr,*>_("_@
- m("_@("_@("_@("_@("__wpez_$&rpb@u,s(w.2d_[@f"_(m*lc&g6;)9jtd_
- m_0f,_(m*lc*g6;)9jdd_#_j6_(m*lc2g6+)8jtd_&pj@_(m*lcbg6+)8jdd_
- m,_jj_(m*lc6g6+)8jtdz6;)9jtd_10jt_(m*lcfg6;)9jtdz6+)8jdd_6pj^
- m_(m*lc$piubr6*i).efr6:i)_'_*r_"+2k(viubr6*m).efr6:i)_($*r0"+
- m2k(piu"r,3i)lc$_fpk*_(lh4*tq-2frm2a0k3$u*:=)ldfj,0"h"ll_btjg
- m4+)0jc$_m0k,_(m)l36g2;(u_,t*t@"+*%bs,c4v*:\h6+&k,2fg,c(p_/,*
- mtp"+*,(h-3,r-c0iks0iiy<u,s(v-"pp.ebr,c4u.hdr,c__#0o4_)<u,s(v
- m-"s"*#4s,c8t*;_t.ebr,__a"]p_brc"*#4s,c<y*:\t*:>__#@+y@"75jht
- m+%@zeu:j-2q9.hdq,c__50m@zh,@,c4u+"_q,c@l(#_l(#(u-2p@,"p@,_!p
- m"v'j@r_r-30l(#_l(#_l(#(u,bp@,"p@,_"+"v+j@r_r-3(l(#_l(#_l(#(u
- m-"p@,"p@,_"h"v/j@r_r,s$l(#_l(#_l(#$y-2p@,3(x+"_p_,4+9.j#(#$r
- m.2p@,3dr+"_p+"_p+"_r,c0l(#__wpmezh,@,"p@,3$r+"_p+"_p+"_t."p@
- m,_#v"v;j@r_p+"_p+"_p+"_p+"_p+"_p__t,9^j#(#_l(#_l(#_l(#_l(#_l
- m(#__)_qhzh,@,"p@,"p@,"p@,"p@,"p@,__[#&gj@r_p+"_p+"_p+"_p+"_p
- =+"_p_%(,:nj#(#_l(#_l(#_l(#_l(#_l(#______
- _
- END
-
-
-
-
-
-
-
-
-
- rATASTIC pROGRAMMING, iNC. PAGE 13.
- 931228-0134.MLS 28 dECEMBER 1993
-
- BEGIN 644 BLR.SPRITE
- m_0@?"___cr!34%))5$4a("_@("!"62!2051!4u1)0p_u"_$_cr_y,s$r,c@m
- m,#$s-"y-3%,_4p@"_(\@4u!2251%("t@2d]94u1)0tl@34]615(_<_@*_(%8
- mlc0y,34ri#0y-3$w.h=9.i=8+%dz@@"a"!0_f2)&24y)4ta%1"xn+a$1$1$1
- m$1$1$2(zf2)365,t.3$u,b!43r!35$%25"(_[0@>_)<@-#dt,3<l,"_zcr!3
- m4$5%1"_q($e3($9!4u1%4u0@,"!)4r!33$]715-4(#(u-2!)4r!33$]7+"_u
- m($e3($9!4u0@15a#__t)8.j#(#$v.2p@-2p@,s(l(#(q,"p@,c4u+"_q-cd_
- m+_eazh,@-bp@,30q+"_s,bp@,c_x+"_q-#$l(#,s_$t)8nj#(#(p."p@,38r
- m+"_v-"p@,3@y+"_t,rp@,3ds_&t)8^j#(#$u-rp@-c0l(#,l(#(p,bp@,c_x
- m+"_r-#<_cpedzh,@,38y+"_r-34l(#$t,2p@,s_l(#$y,rp@,38y_*\)9>j#
- m(#(p,"p@,30q+"_s,2p@,3ds+"_q-cdl(#0_spefzh,@,30q+"_r,2p@,c_x
- m+"_q-cdl(#$l(#$t,0#p"6?j@r_t,2p@,c_x+"_q-s,l(#,p+"_q.3,l(#$t
- m,0_0"fcj@r_t+"_r,#@l(#$w,rp@,s$l(#$y,rp@,30q_#_*:>j#(#4l(#(p
- m."p@,38y+"_q,rp@,30q+"_r-3__3@ijzh,@-rp@,38y+"_p+"_q-#$l(#$v
- m+"_r,#@_;@ikzh,@,38y+"_q+"_q-#$l(#(y+"_q.3,l(#$v.0"."fsj@r_s
- m,rp@,38p+"_q.3,l(#,r+"_s,"p@,3<q_*t*;>j#(#$w,rp@,"p@,c(p+"_t
- m,2p@,34l(#$t,0#,"f[j@r_s,bp@,3ds+"_q-s,l(#_l(#(r,"p@-#$_z@io
- mzh,@,38l(#(p."p@,2p@.38l(#$w,rp@,s$_"pmpzh,@,c_x+"_q-s,l(#,r
- m+"_q.3,l(#$w,bp@,s$_+_mqzh,@,3ds+"_q-s0l(#,p+"_q.3,l(#$w,rp@
- m,s(_3_mrzh,@,3ds+"_r,#$l(#$t+"_r,#@l(#0l(#$s-@!m"w/j@r_w-bp@
- m,c_q+"_q.3(l(#$w,rp@,s(l(#$y,p","w3j@r_r,#$l(#$s+"_r,#@l(#0l
- m(#(p,"p@-s8_k@muzh,@,c_q+"_q.3(l(#$w,rp@,s(l(#$y,rp@,c_q_,t+
- m=nj#(#$q+"_r,#@l(#0l(#(p,bp@-s8l(#(p,0#m"w?j@r_q.3(l(#$w,rp@
- m,s(l(#$y,rp@,c_q+"_w__t,>.j#(#(p."p@-"p@,c,r+"_w-bp@,c_q+"_q
- m.3(_+@qyzh,@,3<s+"_s,bp@,3ds+"_r,#$l(#$p+"_r,#@_3@qzzh,@-2p@
- m,c_r+"_q,s8l(#<v+"_r,#$l(#$y,@!n#'oj@r_q-s,l(#,r+"_q.3,l(#(p
- m,2p@-bp@,c_x_(x,?.j#(#4l(#$s-bp@,c,r+"_w-bp@,c_q+"_q.3(_k@q]
- mzh,@,3<s+"_s,bp@,3ds+"_r,#$l(#4l(#(p._#.#'[j@r_u+"_r,s(l(#(p
- m,"p@-s8l(#(p,2p@,3dr_.x,?^j#(#$w,rp@,s(l(#$y,rp@,c_q+"_y+"_r
- m,#@_#@v_zh,@-2p@,c_r+"_r,#_l(#<v+"_r,#$l(#$y,@_m#8'j@r_w-bp@
- m,c_q+"_q.3(l(#,r+"_r+"_q.3,_3@v"zh,@-s8l(#(s-"p@,3dr+"_q-s,l
- m(#$v+"_r,#@_:pv#zh,@-#$l(#0l(#(t,"p@,3_l(#$v.2p@,_",#83j@r_q
- m-#$l(#$v+"_r,#@l(#$v,bp@,c4u+"_w-@"l#87j@r_r,s0l(#$y,bp@,3<s
- m+"_q-bp@,c_x+"_y_,h-anj#(#0l(#$t,2p@,38l(#(p."p@,38r+"_p_.d-
- ma^j#(#$w,rp@,s$l(#(p."p@-#$l(#0l(#(t,__(#hcj@r_q+"_y-bp@,30r
- m+"_s,"p@,3ds+"_q-#__*_z)zh,@,s$l(#$y,rp@,30r+"_t+"_r,#@l(#$t
- m,_!hkj@r_u+"_r,#@l(#<v+"_w."p@,3dr+"_y-@!f#hoj@r_q-#_l(#,q
- m+"_q.3,l(#<r+"_q-3(l(#<r_(8.c.j#(#$v,"p@,"p@,3,v+"_q-#_l(#0q
- m+"_r,#@_j0z-zh,@,c_x+"_r-3_l(#$p-"p@,38x+"_q,#0l(#$v,_#(#h[j
- m@r_q+"_q-#$l(#0q+"_r,#@l(#$w,bp@,s$_y0z/zh,@,3ds+"_y-bp@.38l
- m(#$l(#4v+"_u-__##y#j@r_q-"p@,30w+"_t,bp@-#(l(#@s+"_x-__@#y'j
- m@r_w.2p@.#_l(#0r+"_t,bp@,"p@,c4u_#t/dnj#(#$r."p@,"p@,c4u+"_p
- m+"_p+"_r-30_6_^3zh,@,"p@,"p@,c4r+"_p+"_p+"_r-3(_<p^4zh,@,"p@
- m,"p@,c4t+"_p+"_p+"_r,s$_d_^5zh,@,"p@,"p@,3du+"_q,c@l(#_l(#$r
- m.0"k#y;j@r_q.3(l(#_l(#_l(#(r-"p@,"p@,_#%#y?j@r_q,3(l(#_l(#_l
- m(#0x+"_p+"_p_-p/f.j#(#_l(#_l(#_l(#_l(#_l(#__\p^9zh,@,"p@,"p@
- m,"p@,"p@,"p@,__*$)kj@r_p+"_p+"_p+"_p+"_p+"_p_"$0f^j#(#_l(#_l
- m(#_l(#_l(#_l(#__.!"<zh,@,"p@,"p@,"p@,"p@,"p@,_!/$)wj@r_p+"_p
- /+"_p+"_p+"_p+"_p____
- _
- END
-
-
-
-
- rATASTIC pROGRAMMING, iNC. PAGE 14.
- 931228-0134.MLS 28 dECEMBER 1993
-
- BEGIN 644 GFX.SPR-EDITOR
- m_0@e"___es4s,c@p+#8zf2(%(ci$ll(h,3@v*3j+1+,xit2r._!4"_h_f<<h
- m,30w*3lz@52r,:0r,3j!6;(qi#(t.idb+b([.h)9.idz@e0zb3(p_'$("p"!
- m6+(x,s*d.#,rjc8s.h=9.i=8+%dz@e@_j_@,_%:r-3,r-#@zeu:j,c$l-#j7
- m3e5%(%=)5$@@64]54b!04d]'4d%-($a%4d4_!0d4_%:r-3,r-#@zeu:j,c$l
- m-#j75jht,2pq.i=6jc0l,c4u.i=6jc4l,c_p.i<r,#0r+#$s_#h)'@"!6+(x
- m,s*d.#,rjc8t.i=8+#(u-3j".h%8lc@s,jhv-*0x,s*ijs$zeu@l,#j".h__
- m>0ed_)pz0[(x.h%9lc"d,c_z@5br,:0r-#i0ll(h,3_r,zi8jc0pk%di.d.r
- m0zlq.hm0lc0riu&r4:hrkd,_f0en_(m#lc"g0[(x.d>r1zhq.i<x,s&j1rq1
- m.e&r,_"c"7@_@e@z@ed_j0f"_(__v0g(_(4b4t%612!&24q%3d%-12([020z
- mgs(l."pr+")34%(n(ji!)*hb+%,l5r(__0k2_(%8lc@s,j0x,s*j-c0zf#(l
- mpba8*3j".j_r.idbd9$b.sj__$0*+_&%(dq/040@1de,14y!344b.t$d.i\r
- m+#@l,bpb4u!2+b*j022j(bq3+%(b.h%8lc@s,j0x,s*j-c0za#(l60!3"c8!
- meu@l63j"6#j@,@!9"d_!@_"!"i_!a2)35$%25"!,24y%($y534)%4b([03j+
- m0;(pit&r-c_p,#__l0j:_9dbdq$1(cj902)$051!(clz@5br,:0u.ig"*#@s
- m,:i8jd\i(itl(clz@e@_p0jd_9g"*#@s,:i8jd\i_-h*k@&+3[*q-c.gf2)$
- m3ty%(2(zb30v,_#x"k@!f2)!/2)!jc$b.d\](d^j-b(z1t]43s0q,__c"\(!
- mes$y."ps.i<v,s$l,3,zes8s,bpq,sj7-c,s+#$s.idb$r([.h__80o,_84b
- m15)!4t4@4%)/1u)!32!!3d0@2e535"!,14%612!$051!(cm!)#j+r"a!)"pq
- m*;.q(edbis4p,_"3"]8!3+(p("_@("_@("_@("_@("_@("_@("_@("_@("_@
- m("_@("_@("_@("_@("_@_+<+x_&9(i,1$2(zf4pzf2),/2),jc$p.sj+3+$t
- m-#"g-3$p_,p+z@&9(ci'3u1/-#@p(cj)-#4p_._+]_&9(i,1$4q)4u0b.hdt
- m-3__$ps^_9dbdq$1(cj!6+(t-#"d-3(pj3$p.ie8.h)8.h%8lc8s,:0v-#_z
- meu@l,3,z@e@_)pp(_i<q.3@l,3_zf2(3(clz@__^#j@r_p+"_p+"_p+"_p
- m+"_p+"_p_%4,8>j#(#_l(#_l(#_l(#_l(#_l(#__;_qbzh,@,"p@,"p@,"p@
- m,"p@,"p@,_"##&/j@r_p+"_p+"_p+"_p+"_p+"_p_)h,9.j#(#_l(#_l(#_l
- m(#_l(#_l(#__l0qezh,@,"p@,"p@,"p@,"p@,"p@,_#(#&;j@r_p+"_p+"_p
- m+"_p+"_p+"_p_-\,9^j#(#_l(#_l(#_l(#_l(#_l(#__]@qhzh,@,"p@,"p@
- m,"p@,"p@,"p@,__-#6gj@r_p+"_p+"_p+"_p+"_p+"_p_"0-:nj#(#_l(#_l
- (#_l(#_l(#_l(#______
- _
- END
- --
- rOSS mARTIN aNDREW cAPDEVILLE OF rATASTIC pROGRAMMING, iNC.
- iNET: jIADAR@DELPHI.COM 604 n sT pATRICK
- jIADAR@MINTIR.NEW-ORLEANS.LA.US nEW oRLEANS/la 70119
- fIDO: 1:396/65 tHE dIGITAL cOTTAGE eYE OF lEVETA ii!
- a pROUD pROGRAMMER OF THE cOMMODORE 64/128!!!
- -- tHE CHANT OF A RESISTOR: OHM... OHM... OHM...
-
-