home *** CD-ROM | disk | FTP | other *** search
- U
- ┬╔╘╙: ╘HAT'S ═Y ┬┴╙╔├ ╨ROGRAM?!
-
- BY ╙COTT ┼. ╥ESH
-
-
- ╘HIS MONTH WE'RE GOING TO DECIPHER
- A ┬┴╙╔├ PROGRAM USING AN ═╠ MONITOR.
- ╨REPARE TO FIRE-UP YOUR FAVORITE
- HANDY-DANDY ═╠ MONITOR, WE'RE ON OUR
- WAY.
-
- ╧N A NORMAL ├64 (DID YOU SEE THAT
- WORD -- ╬╧╥═┴╠?), A ┬┴╙╔├ PROGRAM
- STARTS AT $0801. ╘HERE IS A BIG
- DIFFERENCE BETWEEN ╠╔╙╘ING A PROGRAM
- AND DOING A "MEMORY DUMP" OF THE SAME
- PROGRAM FROM AN ═╠ MONITOR.
-
- ┬EFORE WE DIVE INTO MEMORY DUMPS,
- LET ME SAY A WORD OR TWO ABOUT ╘╧╦┼╬╙.
- ┴ TOKEN IS A 1-BYTE REPRESENTATION OF
- A ┬┴╙╔├ COMMAND OR FUNCTION. ╙UPPOSE
- OUR ┬┴╙╔├ PROGRAM DOES A ╠╧╘ OF STRING
- MANIPULATION. ╞OR EXAMPLE, SUPPOSE THE
- FUNCTION, ╥╔╟╚╘$, IS USED 300 TIMES
- (IT COULD HAPPEN) IN OUR PROGRAM. ╘HE
- WORD ╥╔╟╚╘$ IS SIX CHARACTERS LONG. ╔F
- THE ACTUAL WORD ╥╔╟╚╘$ APPEARED IN
- MEMORY 300 TIMES, IT WOULD REQUIRE
- 1,800 BYTES! ╩UST A MINUTE THOUGH --
- LET'S SUPPOSE WE REPLACE EVERY
- OCCURRENCE OF ╥╔╟╚╘$ WITH ╧╬┼ SPECIFIC
- BYTE (YOU GUESSED IT, A ╘╧╦┼╬!). ╘HIS
- WOULD MEAN ONLY 300 BYTES ARE
- NECESSARY INSTEAD OF 1,800. ╬OW WE'RE
- GETTING SOMEWHERE!
-
- ╥EMEMBER, ╥╔╟╚╘$ ISN'T THE ONLY
- COMMAND/FUNCTION THAT HAS A TOKEN. ┴╠╠
- COMMANDS AND FUNCTIONS HAVE TOKENS.
- ╘HIS MEANS THAT WHEN YOU DO A MEMORY
- DUMP OF YOUR PROGRAM, YOU WON'T SEE
- ╨╥╔╬╘, ╥┼═, ╟╧╘╧, ETC... ╔NSTEAD, YOU
- WILL SEE THE TOKENS FOR THOSE
- COMMANDS.
-
- ╧N THIS SAME SIDE OF ╠╧┴─╙╘┴╥
- THERE IS A DEMO PROGRAM, ┬╔╘╙. (╔'M SO
- CREATIVE!) ╠OAD THIS HUGE PROGRAM INTO
- ┬┴╙╔├. ┘OU CAN ╠╔╙╘ AND ╥╒╬ IT, BUT
- PLEASE DON'T MODIFY IT, YET...
-
- ╬OTICE THE ADDRESS OF THE ╙┘╙
- COMMAND. ╫HAT A COINCIDENCE!
-
-
- ╘HIS JUST HAPPENS TO BE AT THE ┼╬─
- OF THE ┬┴╙╔├ PROGRAM. ╚AVE YOU EVER
- ╠╧┴─ED A ┬┴╙╔├ PROGRAM ONLY TO FIND A
- ╙┘╙(2063) OR ╙┘╙2061? ╙AME PRINCIPLE.
-
- ╬OW BOTH YOUR MONITOR AND MY
- LITTLE DEMO MUST BE IN MEMORY. ─O A
- MEMORY DUMP OF LOCATIONS $082┬
- THROUGH $083┴.
-
- ┘OU SHOULD SEE SOMETHING LIKE
- THIS:
-
- 082┬: 37 08 78 00 9┼ 20 20 32
- 0833: 31 36 30 00 3─ 08 82 00
-
- ╘HIS IS EQUIVALENT TO ┬┴╙╔├'S --
-
- 120 ╙┘╙ 2160
-
- ╫HAT DO THOSE BYTES MEAN? ╠ET'S
- START AT $082┬. ╘HIS PAIR OF BYTES IS
- A ╨╧╔╬╘┼╥ TO THE NEXT LINE. ╚ERE THE
- NEXT LINE IS AT $0837. ╘HE NEXT PAIR
- OF BYTES IS THE ╠╔╬┼ ╬╒═┬┼╥. ╔N OUR
- CASE, IT'S 120. ╠O-BYTE = 120 (IN HEX
- $78) ╚I-BYTE = 0.
-
-
- ╘HE NEXT BYTE ═╒╙╘ ┬┼ A TOKEN OR
- VARIABLE ASSIGNMENT (I.E. ┴=2 OR
- ┬$="╚╔!"). ╞OR US THE BYTE IS $9┼, OR
- THE TOKEN FOR THE... TAKE A GUESS...
- THE ╙┘╙ COMMAND! ╘HE NEXT 2 BYTES ARE
- SPACES. ╫HAT ALWAYS COMES AFTER A ╙┘╙
- COMMAND? (╔ FEEL LIKE ╔'M HOSTING A
- GAME SHOW, "┘OU'VE WON A TRIP TO
- ╚AWAII!") ╥IGHT AGAIN, THE ┴──╥┼╙╙ FOR
- THE ╙┘╙ COMMAND. ╫ASN'T THE ADDRESS
- 2160? ╠ET ME FETCH MY TRUSTY LITTLE
- ╚┼╪<->┴╙├╔╔ CONVERSION CHART. ╚MMM...
- $32->"2", $31->"1", $36->"6", (IS IT
- ME OR IS THERE A PATTERN EMERGING
- HERE?) AND $30->"0". ┴HA -- "2160"! ╫E
- FOUND THE ADDRESS! (╩UST CALL ME ╙COTT
- "╔NDY" ╥ESH).
-
-
- ╘HE NEXT BYTE IS $00. ┼VERY LINE
- OF A ┬┴╙╔├ PROGRAMS ┴╠╫┴┘╙ ENDS WITH
- A $00. ╔N COMPUTERESE, THAT'S
- "NULL-TERMINATED". (╥EMEMBER THAT IF
- YOU EVER HOPE TO BE A ╟┼╧╨╥╧╟╥┴══┼╥)
-
- ╧N TO THE NEXT BYTE. ╔'M CURIOUS,
- WHAT'S THE ADDRESS OF THE NEXT BYTE?
- ╠ET'S SEE HERE... 0833, 0834, 0835,
- 0836, 0837... THAT'S IT! ╫AIT A
- MINUTE, ╔'VE SEEN THAT NUMBER BEFORE!
- (DEJA-VU?) ╘HE ╞╔╥╙╘ PAIR OF BYTES WE
- LOOKED AT POINTED TO 0837. ╫E TRACED
- OUR WAY TO THE BEGINNING OF THE NEXT
- LINE.
-
- ┬Y THE WAY, TRY REPLACING THE $9┼
- AT $082╞ WITH A $8╞ OR A $99.
-
-
- ╞ENDER ASKED ME TO SAY A WORD OR
- TWO ABOUT ╒╬╬┼╫ING A ┬┴╙╔├ PROGRAM
- AND THE LINE NUMBERS OF A ┬┴╙╔├
- PROGRAM.
-
- ╒╬╬┼╫ING IS THE PROCESS OF
- RECOVERING AN ACCIDENTALLY ╬┼╫ED (╬╧╘
- NUDE) ┬┴╙╔├ PROGRAM. ╚OPEFULLY, THIS
- TECHNIQUE WILL SAVE A FEW GRAY HAIRS.
- ─ON'T FORGET, YOUR TRUSTWORTHY MONITOR
- MUST BE IN MEMORY FIRST. ┼NTER A FEW
- LINES OF ┬┴╙╔├. ╬OW, ENTER ╬┼╫ --
- THAT'S RIGHT, ╬┼╫. ╫HAT ╬┼╫ DOES IS
- ╨╧╦┼ TWO ZEROES INTO $0801 AND $0802
- AND UPDATES THREE ZERO PAGE POINTERS.
- ╘HIS EFFECTIVELY ENDS YOUR PROGRAM
- BEFORE IT STARTS.
-
- ╔NVOKE YOUR MONITOR. ╒SE YOUR
- MONITOR'S ╚╒╬╘ COMMAND TO FIND THE
- FIRST OCCURRENCE OF THREE ZEROES AFTER
- $0805. ╔N MY CASE, ╔ ENTER:
-
- ╚ 0805 9╞╞╞ 00 00 00 <╥┼╘╒╥╬>
-
- ┴RE YOU ASKING YOURSELF "╚EY
- ╙COTT, WHY $0805? ╫HY NOT $0801?" ╔'M
- GLAD YOU CAUGHT THAT. ┬OTH $0801 AND
- $0802 CONTAIN $00. ╠OCATIONS $0803 AND
- $0804 CONTAIN THE LINE NUMBER OF THE
- FIRST LINE OF YOUR ┬┴╙╔├ PROGRAM. ╔T'S
- POSSIBLE THAT YOUR FIRST LINE NUMBER
- COULD BE 0. ╘O PLAY IT SAFE, WE ARE
- GOING TO IGNORE THESE FOUR BYTES FOR
- NOW.
-
-
- ╫RITE DOWN THE FIRST NUMBER THAT
- IS DISPLAYED BY YOUR ╚╒╬╘ COMMAND.
- ┴DD ╘╚╥┼┼ TO THAT NUMBER. ╨╧╦┼ THE
- ╠╧-BYTE INTO LOCATIONS $2─, $2╞, AND
- $31. ╨╧╦┼ THE ╚╔-BYTE INTO LOCATIONS
- $2┼, $30, AND $32.
-
- ╘IME TO USE THE ╚╒╬╘ COMMAND
- AGAIN. ┼NTER:
-
- ╚ 0805 9╞╞╞ 00 <╥┼╘╒╥╬>
-
- ╘HAT'S RIGHT, WE WANT TO FIND THE
- FIRST OCCURRENCE OF ╧╬┼ ZERO ALL BY
- ITSELF. ┴DD ╧╬┼ TO THE FIRST NUMBER
- THAT WAS DISPLAYED. ╨╧╦┼ THE ╠╧-BYTE
- OF THE RESULT INTO $0801 AND THE
- ╚╔-BYTE INTO $0802.
-
- ┼XIT YOUR MONITOR. ┘OU SHOULD BE
- BACK IN ┬┴╙╔├. ╠╔╙╘ YOUR PROGRAM.
- ╘HERE'S YOUR PROGRAM!
-
-
- ╬OW, ABOUT LINE NUMBERS. ╘HERE
- IS A "HACKERISH" THING YOU CAN DO TO
- PROTECT YOUR ┬┴╙╔├ PROGRAM. ┬Y
- PROTECT, ╔ MEAN THAT YOU CAN CREATE A
- LINE IN YOUR PROGRAM THAT KEEPS YOUR
- PROGRAM FROM BEING EDITED. (╨LEASE
- NOTE THAT ANY PROGRAM SUBMITTED TO US
- THAT USES THIS TECHNIQUE WILL ALMOST
- ╔══┼─╔┴╘┼╠┘ BE REJECTED.)
-
- ├OMMODORE'S ┬┴╙╔├ 2.0 WILL NOT
- ALLOW A ┬┴╙╔├ LINE NUMBER GREATER THAN
- 63999. ╙UPPOSE YOUR ┬┴╙╔├ PROGRAM IS
- 200 LINES LONG AND YOU WANT TO PROTECT
- IT. ╙IMPLE, ╨╧╦┼ 2051,0 AND ╨╧╦┼
- 2052,250. ╠╔╙╘ YOUR PROGRAM. ╬OTICE
- THAT YOUR FIRST LINE IS NOW LINE
- NUMBER 64000! ╫HOA! ╚OW'D THAT HAPPEN?
-
- ╠OCATIONS 2051 AND 2052 CONTAIN
- THE ╠╧-BYTE AND ╚╔-BYTE, RESPECTIVELY,
- OF THE FIRST LINE NUMBER OF A ┬┴╙╔├
- PROGRAM.
-
- 250*256 + 0 = 64000 ($╞┴00)
-
-
-
- ╫HY DON'T YOU TRY USING ╨╧╦┼ AGAIN
- TO CHANGE THE LINE NUMBER FROM 64000
- TO 64010?
-
- ╔'D LIKE TO THANK ╠EN ╘HOMAS FOR
- HIS THOUGHTFUL AND CONSIDERATE
- SUGGESTION FOR THIS MONTH'S ┬╔╘╙
- COLUMN. ("╫HAT DO THOSE %! NUMBERS
- MEAN!?") ╫E HAD A LOT OF FUN TALKING
- ABOUT HEX NUMBERS AND SUCH.
-
- ╔F ANYONE, ╔ MEAN ┴╬┘╧╬┼, OUT
- THERE WOULD LIKE TO SEE SOMETHING
- PERTAINING TO MACHINE LANGUAGE
- EXPLAINED/PERFORMED IN ┬╔╘╙, WRITE TO
- US OR CALL.
-
- ╙┼╥
-