home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / commodore-scene-files / Coverdisks / CS / CSCD036B.D64 / t.bits < prev    next >
Encoding:
Text File  |  2019-04-13  |  6.1 KB  |  234 lines

  1. U
  2.    ┬╔╘╙: ╘HAT'S ═Y ┬┴╙╔├ ╨ROGRAM?!
  3.  
  4.            BY ╙COTT ┼. ╥ESH
  5.  
  6.  
  7.     ╘HIS MONTH WE'RE GOING TO DECIPHER
  8. A ┬┴╙╔├ PROGRAM USING AN ═╠ MONITOR.
  9. ╨REPARE TO FIRE-UP YOUR FAVORITE
  10. HANDY-DANDY ═╠ MONITOR, WE'RE ON OUR
  11. WAY.
  12.  
  13.     ╧N A NORMAL ├64 (DID YOU SEE THAT
  14. WORD -- ╬╧╥═┴╠?), A ┬┴╙╔├ PROGRAM
  15. STARTS AT $0801. ╘HERE IS A BIG
  16. DIFFERENCE BETWEEN ╠╔╙╘ING A PROGRAM
  17. AND DOING A "MEMORY DUMP" OF THE SAME
  18. PROGRAM FROM AN ═╠ MONITOR.
  19.  
  20.     ┬EFORE WE DIVE INTO MEMORY DUMPS,
  21. LET ME SAY A WORD OR TWO ABOUT ╘╧╦┼╬╙.
  22. ┴ TOKEN IS A 1-BYTE REPRESENTATION OF
  23. A ┬┴╙╔├ COMMAND OR FUNCTION. ╙UPPOSE
  24. OUR ┬┴╙╔├ PROGRAM DOES A ╠╧╘ OF STRING
  25. MANIPULATION. ╞OR EXAMPLE, SUPPOSE THE
  26. FUNCTION, ╥╔╟╚╘$, IS USED 300 TIMES
  27. (IT COULD HAPPEN) IN OUR PROGRAM. ╘HE
  28. WORD ╥╔╟╚╘$ IS SIX CHARACTERS LONG. ╔F
  29. THE ACTUAL WORD ╥╔╟╚╘$ APPEARED IN
  30. MEMORY 300 TIMES, IT WOULD REQUIRE
  31. 1,800 BYTES! ╩UST A MINUTE THOUGH --
  32. LET'S SUPPOSE WE REPLACE EVERY
  33. OCCURRENCE OF ╥╔╟╚╘$ WITH ╧╬┼ SPECIFIC
  34. BYTE (YOU GUESSED IT, A ╘╧╦┼╬!). ╘HIS
  35. WOULD MEAN ONLY 300 BYTES ARE
  36. NECESSARY INSTEAD OF 1,800. ╬OW WE'RE
  37. GETTING SOMEWHERE!
  38.  
  39.     ╥EMEMBER, ╥╔╟╚╘$ ISN'T THE ONLY
  40. COMMAND/FUNCTION THAT HAS A TOKEN. ┴╠╠
  41. COMMANDS AND FUNCTIONS HAVE TOKENS.
  42. ╘HIS MEANS THAT WHEN YOU DO A MEMORY
  43. DUMP OF YOUR PROGRAM, YOU WON'T SEE
  44. ╨╥╔╬╘, ╥┼═, ╟╧╘╧, ETC... ╔NSTEAD, YOU
  45. WILL SEE THE TOKENS FOR THOSE
  46. COMMANDS.
  47.  
  48.     ╧N THIS SAME SIDE OF ╠╧┴─╙╘┴╥
  49. THERE IS A DEMO PROGRAM, ┬╔╘╙. (╔'M SO
  50. CREATIVE!) ╠OAD THIS HUGE PROGRAM INTO
  51. ┬┴╙╔├. ┘OU CAN ╠╔╙╘ AND ╥╒╬ IT, BUT
  52. PLEASE DON'T MODIFY IT, YET...
  53.  
  54.     ╬OTICE THE ADDRESS OF THE ╙┘╙
  55. COMMAND. ╫HAT A COINCIDENCE!
  56.  
  57.  
  58.     ╘HIS JUST HAPPENS TO BE AT THE ┼╬─
  59. OF THE ┬┴╙╔├ PROGRAM. ╚AVE YOU EVER
  60. ╠╧┴─ED A ┬┴╙╔├ PROGRAM ONLY TO FIND A
  61. ╙┘╙(2063) OR ╙┘╙2061? ╙AME PRINCIPLE.
  62.  
  63.     ╬OW BOTH YOUR MONITOR AND MY
  64. LITTLE DEMO MUST BE IN MEMORY. ─O A
  65. MEMORY DUMP OF LOCATIONS $082┬
  66. THROUGH $083┴.
  67.  
  68.     ┘OU SHOULD SEE SOMETHING LIKE
  69. THIS:
  70.  
  71.  082┬: 37 08 78 00 9┼ 20 20 32
  72.  0833: 31 36 30 00 3─ 08 82 00
  73.  
  74. ╘HIS IS EQUIVALENT TO ┬┴╙╔├'S --
  75.  
  76.     120 ╙┘╙  2160
  77.  
  78.     ╫HAT DO THOSE BYTES MEAN? ╠ET'S
  79. START AT $082┬. ╘HIS PAIR OF BYTES IS
  80. A ╨╧╔╬╘┼╥ TO THE NEXT LINE. ╚ERE THE
  81. NEXT LINE IS AT $0837. ╘HE NEXT PAIR
  82. OF BYTES IS THE ╠╔╬┼ ╬╒═┬┼╥. ╔N OUR
  83. CASE, IT'S 120. ╠O-BYTE = 120 (IN HEX
  84. $78) ╚I-BYTE = 0.
  85.  
  86.  
  87.     ╘HE NEXT BYTE ═╒╙╘ ┬┼ A TOKEN OR
  88. VARIABLE ASSIGNMENT (I.E. ┴=2 OR
  89. ┬$="╚╔!"). ╞OR US THE BYTE IS $9┼, OR
  90. THE TOKEN FOR THE... TAKE A GUESS...
  91. THE ╙┘╙ COMMAND! ╘HE NEXT 2 BYTES ARE
  92. SPACES. ╫HAT ALWAYS COMES AFTER A ╙┘╙
  93. COMMAND? (╔ FEEL LIKE ╔'M HOSTING A
  94. GAME SHOW, "┘OU'VE WON A TRIP TO
  95. ╚AWAII!") ╥IGHT AGAIN, THE ┴──╥┼╙╙ FOR
  96. THE ╙┘╙ COMMAND. ╫ASN'T THE ADDRESS
  97. 2160? ╠ET ME FETCH MY TRUSTY LITTLE
  98. ╚┼╪<->┴╙├╔╔ CONVERSION CHART. ╚MMM...
  99. $32->"2", $31->"1", $36->"6", (IS IT
  100. ME OR IS THERE A PATTERN EMERGING
  101. HERE?) AND $30->"0". ┴HA -- "2160"! ╫E
  102. FOUND THE ADDRESS! (╩UST CALL ME ╙COTT
  103. "╔NDY" ╥ESH).
  104.  
  105.  
  106.     ╘HE NEXT BYTE IS $00. ┼VERY LINE
  107. OF A ┬┴╙╔├ PROGRAMS ┴╠╫┴┘╙ ENDS WITH
  108. A $00. ╔N COMPUTERESE, THAT'S
  109. "NULL-TERMINATED". (╥EMEMBER THAT IF
  110. YOU EVER HOPE TO BE A ╟┼╧╨╥╧╟╥┴══┼╥)
  111.  
  112.     ╧N TO THE NEXT BYTE. ╔'M CURIOUS,
  113. WHAT'S THE ADDRESS OF THE NEXT BYTE?
  114. ╠ET'S SEE HERE... 0833, 0834, 0835,
  115. 0836, 0837... THAT'S IT! ╫AIT A
  116. MINUTE, ╔'VE SEEN THAT NUMBER BEFORE!
  117. (DEJA-VU?) ╘HE ╞╔╥╙╘ PAIR OF BYTES WE
  118. LOOKED AT POINTED TO 0837. ╫E TRACED
  119. OUR WAY TO THE BEGINNING OF THE NEXT
  120. LINE.
  121.  
  122.     ┬Y THE WAY, TRY REPLACING THE $9┼
  123. AT $082╞ WITH A $8╞ OR A $99.
  124.  
  125.  
  126.     ╞ENDER ASKED ME TO SAY A WORD OR
  127. TWO ABOUT ╒╬╬┼╫ING A ┬┴╙╔├ PROGRAM
  128. AND THE LINE NUMBERS OF A ┬┴╙╔├
  129. PROGRAM.
  130.  
  131.     ╒╬╬┼╫ING IS THE PROCESS OF
  132. RECOVERING AN ACCIDENTALLY ╬┼╫ED (╬╧╘
  133. NUDE) ┬┴╙╔├ PROGRAM. ╚OPEFULLY, THIS
  134. TECHNIQUE WILL SAVE A FEW GRAY HAIRS.
  135. ─ON'T FORGET, YOUR TRUSTWORTHY MONITOR
  136. MUST BE IN MEMORY FIRST. ┼NTER A FEW
  137. LINES OF ┬┴╙╔├. ╬OW, ENTER ╬┼╫ --
  138. THAT'S RIGHT, ╬┼╫. ╫HAT ╬┼╫ DOES IS
  139. ╨╧╦┼ TWO ZEROES INTO $0801 AND $0802
  140. AND UPDATES THREE ZERO PAGE POINTERS.
  141. ╘HIS EFFECTIVELY ENDS YOUR PROGRAM
  142. BEFORE IT STARTS.
  143.  
  144.      ╔NVOKE YOUR MONITOR. ╒SE YOUR
  145. MONITOR'S ╚╒╬╘ COMMAND TO FIND THE
  146. FIRST OCCURRENCE OF THREE ZEROES AFTER
  147. $0805. ╔N MY CASE, ╔ ENTER:
  148.  
  149.   ╚ 0805 9╞╞╞ 00 00 00  <╥┼╘╒╥╬>
  150.  
  151.     ┴RE YOU ASKING YOURSELF "╚EY
  152. ╙COTT, WHY $0805? ╫HY NOT $0801?" ╔'M
  153. GLAD YOU CAUGHT THAT. ┬OTH $0801 AND
  154. $0802 CONTAIN $00. ╠OCATIONS $0803 AND
  155. $0804 CONTAIN THE LINE NUMBER OF THE
  156. FIRST LINE OF YOUR ┬┴╙╔├ PROGRAM. ╔T'S
  157. POSSIBLE THAT YOUR FIRST LINE NUMBER
  158. COULD BE 0. ╘O PLAY IT SAFE, WE ARE
  159. GOING TO IGNORE THESE FOUR BYTES FOR
  160. NOW.
  161.  
  162.  
  163.     ╫RITE DOWN THE FIRST NUMBER THAT
  164. IS DISPLAYED BY YOUR ╚╒╬╘ COMMAND.
  165. ┴DD ╘╚╥┼┼ TO THAT NUMBER. ╨╧╦┼ THE
  166. ╠╧-BYTE INTO LOCATIONS $2─, $2╞, AND
  167. $31. ╨╧╦┼ THE ╚╔-BYTE INTO LOCATIONS
  168. $2┼, $30, AND $32.
  169.  
  170.     ╘IME TO USE THE ╚╒╬╘ COMMAND
  171. AGAIN.  ┼NTER:
  172.  
  173.    ╚ 0805 9╞╞╞ 00   <╥┼╘╒╥╬>
  174.  
  175.     ╘HAT'S RIGHT, WE WANT TO FIND THE
  176. FIRST OCCURRENCE OF ╧╬┼ ZERO ALL BY
  177. ITSELF. ┴DD ╧╬┼ TO THE FIRST NUMBER
  178. THAT WAS DISPLAYED. ╨╧╦┼ THE ╠╧-BYTE
  179. OF THE RESULT INTO $0801 AND THE
  180. ╚╔-BYTE INTO $0802.
  181.  
  182.     ┼XIT YOUR MONITOR. ┘OU SHOULD BE
  183. BACK IN ┬┴╙╔├.  ╠╔╙╘ YOUR PROGRAM.
  184. ╘HERE'S YOUR PROGRAM!
  185.  
  186.  
  187.     ╬OW, ABOUT LINE NUMBERS. ╘HERE
  188. IS A "HACKERISH" THING YOU CAN DO TO
  189. PROTECT YOUR ┬┴╙╔├ PROGRAM. ┬Y
  190. PROTECT, ╔ MEAN THAT YOU CAN CREATE A
  191. LINE IN YOUR PROGRAM THAT KEEPS YOUR
  192. PROGRAM FROM BEING EDITED. (╨LEASE
  193. NOTE THAT ANY PROGRAM SUBMITTED TO US
  194. THAT USES THIS TECHNIQUE WILL ALMOST
  195. ╔══┼─╔┴╘┼╠┘ BE REJECTED.)
  196.  
  197.     ├OMMODORE'S ┬┴╙╔├ 2.0 WILL NOT
  198. ALLOW A ┬┴╙╔├ LINE NUMBER GREATER THAN
  199. 63999. ╙UPPOSE YOUR ┬┴╙╔├ PROGRAM IS
  200. 200 LINES LONG AND YOU WANT TO PROTECT
  201. IT. ╙IMPLE, ╨╧╦┼ 2051,0 AND ╨╧╦┼
  202. 2052,250. ╠╔╙╘ YOUR PROGRAM. ╬OTICE
  203. THAT YOUR FIRST LINE IS NOW LINE
  204. NUMBER 64000! ╫HOA! ╚OW'D THAT HAPPEN?
  205.  
  206.     ╠OCATIONS 2051 AND 2052 CONTAIN
  207. THE ╠╧-BYTE AND ╚╔-BYTE, RESPECTIVELY,
  208. OF THE FIRST LINE NUMBER OF A ┬┴╙╔├
  209. PROGRAM.
  210.  
  211.      250*256 + 0 = 64000  ($╞┴00)
  212.  
  213.  
  214.  
  215.     ╫HY DON'T YOU TRY USING ╨╧╦┼ AGAIN
  216. TO CHANGE THE LINE NUMBER FROM 64000
  217. TO 64010?
  218.  
  219.     ╔'D LIKE TO THANK ╠EN ╘HOMAS FOR
  220. HIS THOUGHTFUL AND CONSIDERATE
  221. SUGGESTION FOR THIS MONTH'S ┬╔╘╙
  222. COLUMN. ("╫HAT DO THOSE %&#! NUMBERS
  223. MEAN!?") ╫E HAD A LOT OF FUN TALKING
  224. ABOUT HEX NUMBERS AND SUCH.
  225.  
  226.     ╔F ANYONE, ╔ MEAN ┴╬┘╧╬┼, OUT
  227. THERE WOULD LIKE TO SEE SOMETHING
  228. PERTAINING TO MACHINE LANGUAGE
  229. EXPLAINED/PERFORMED IN ┬╔╘╙, WRITE TO
  230. US OR CALL.
  231.  
  232.  ╙┼╥
  233.