home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / Information / ML-LESSON-3 < prev    next >
Encoding:
Text File  |  2019-04-13  |  9.5 KB  |  253 lines

  1. ═ACHINE ╠ANGUAGE LESSON FOR BEGINNERS #3
  2.  
  3. ─ATE - ═ARCH 17, 1994
  4.  
  5. ╘IME - 10:30 PM ┼╙╘
  6.  
  7. <[╘ONY] ┴.╘╧╠╠┼> ╧K, THE LAST THING WE WERE COVERING LAST WEEK WAS THE CONCEPT
  8. OF MNEMONIC INSTRUCTIONS LIKE THE "╠─┴" INSTRUCTION IN ═╠.
  9.  
  10. <[╘ONY] ┴.╘╧╠╠┼> ═NEMONICS ARE THE CONVENTIONAL ABBREVIATIONS FOR TYPING IN ═╠
  11. INSTRUCTIONS WHEN USING AN ASSEMBLER OR AN ═╠ MONITOR.
  12.  
  13. <[╘ONY] ┴.╘╧╠╠┼> ╘HEY HAVE NO REAL RELATIONSHIP TO THE ACTUAL INSTRUCTION,
  14. WHICH IS JUST A NUMBER, EXCEPT THAT THEY JUST REPRESENT THE INSTRUCTION SO
  15. THAT WE DON'T HAVE TO REMEMBER ALL THE DIFFERENT NUMBERS FOR THE COMMANDS.
  16.  
  17. <╟┼╧╙-╘╔═> AFK
  18.  
  19. <[╘ONY] ┴.╘╧╠╠┼> ╘HE "╠─┴" INSTRUCTION HAS SEVERAL DIFFERENT FORMS, ALL OF
  20. WHICH ARE REPRESENTED BY THE "╠─┴" MNEMONIC (╠OA─ ┴CCUMULATOR).
  21.  
  22. <[╘ONY] ┴.╘╧╠╠┼> ╞OR EXAMPLE, THE TWO INSTRUCTIONS ╠─┴ #$05 AND ╠─┴ $05 ARE
  23. DIFFERENT INSTRUCTIONS BUT BOTH LOAD THE ACCUMULATOR REGISTER WITH SOME SORT
  24. OF DATA.
  25.  
  26. <[╘ONY] ┴.╘╧╠╠┼> ╞RANK, YOU DOWNLOADED THE "MEGAMON" MONITOR PROGRAM, CORRECT?
  27.  
  28. <[╞RANK] ┬╒╞╞.╨╚╧╧╬> YES
  29.  
  30. <[╘ONY] ┴.╘╧╠╠┼> ╧K, WELL TONIGHT ╔ WILL GIVE YOU AN EXAMPLE ═╠ PROGRAM TO TRY
  31. OUT WITH THE MEGAMON MONITOR.
  32.  
  33. <[╘ONY] ┴.╘╧╠╠┼> ╔T IS PERHAPS THE BEST WAY TO TEACH BOTH THE CONCEPT OF AN ═╠
  34. PROGRAM AND HOW TO USE THE MONITOR.
  35.  
  36. <[╘ONY] ┴.╘╧╠╠┼> ╘HE MEGAMON PROGRAM IS STORED ON DISK UNDER THE NAME
  37. "MEGAMON.40950".  ╘HE REASON THIS NAME IS USED IS BECAUSE 40950 IS THE MEMORY
  38. ADDRESS THAT MEGAMON LOADS INTO MEMORY AT WHEN YOU ╠╧┴─ THE PROGRAM.
  39.  
  40. <[╘ONY] ┴.╘╧╠╠┼> ╘O LOAD IT YOU MUST TYPE LOAD"MEGAMON.40950",8,1 AND PRESS
  41. ╥┼╘╒╥╬.  ┘OU MUST REMEMBER TO PUT ",8,1" AT THE END OF THE ╠╧┴─ COMMAND TO
  42. LOAD THE PROGRAM IN AT THE CORRECT ADDRESS.
  43.  
  44. <[╘ONY] ┴.╘╧╠╠┼> ╧NCE THE PROGRAM IS LOADED, YOU SHOULD IMMEDIATELY TYPE THE
  45. COMMAND ╙┘╙40950 AND PRESS ╥┼╘╒╥╬.  ╘HIS TELLS ┬┴╙╔├ TO ACTUALLY START RUNNING
  46. THE ═╠ PROGRAM THAT IS IN MEMORY AT ADDRESS 40950.
  47.  
  48. <[╘ONY] ┴.╘╧╠╠┼> ╫HEN THE PROGRAM RUNS, YOU WILL SEE THE SCREEN CLEAR AND THE
  49. MONITOR WILL PRINT AN INTRODUCTION AND THEN A PROMPT FOR YOU TO TYPE INPUT.
  50.  
  51. <[╘ONY] ┴.╘╧╠╠┼> ┘OU WILL SEE A LINE ABOVE THE CURSOR THAT LOOKS SOMETHING
  52. LIKE THIS:
  53.  
  54. <[╘ONY] ┴.╘╧╠╠┼>    PC  AR XR YR SP SR <[╘ONY] ┴.╘╧╠╠┼> ; 9FFF 05 20 32 F0 30
  55.  
  56. <[╘ONY] ┴.╘╧╠╠┼> ╘HE NUMBERS LIKE THE "9FFF" PROBABLY WON'T BE THE SAME AS ╔
  57. HAVE RIGHT HERE.
  58.  
  59. <[╘ONY] ┴.╘╧╠╠┼> ╫HAT THESE TWO LINES TELL YOU IS THE VALUES OF ALL THE
  60. INTERNAL REGISTERS... ╘HE PROGRAM COUNTER (╨├), ACCUMULATOR (┴╥), ╪ REGISTER
  61. (╪╥), ┘ REGISTER (┘╥), ╙TACK POINTER (╙╨), AND STATUS REGISTER (╙╥)
  62.  
  63. <[╘ONY] ┴.╘╧╠╠┼> ╘HIS IS A DIAGNOSTIC TOOL FOR CHECKING YOUR ═╠ PROGRAM TO SEE
  64. IF IT IS RUNNING CORRECTLY.
  65.  
  66. <[╘ONY] ┴.╘╧╠╠┼> ┘OU CAN RUN A SHORT SECTION OF THE PROGRAM AND THEN EXAMINE
  67. THE REGISTERS TO SEE IF THEY ARE CURRENTLY HOW THEY ARE SUPPOSED TO BE.
  68.  
  69. <[╘ONY] ┴.╘╧╠╠┼> ╧K, NOW ╔ WILL SHOW YOU WHAT COULD BE ONE OF THE SHORTEST ═╠
  70. PROGRAMS.  ╘O ACTUALLY "ASSEMBLE" AN ═╠ PROGRAM IN MEMORY, WE USE THE "┴"
  71. COMMAND IN THE MONITOR.
  72.  
  73. ** <[┼DDIE] ┼.┬╧╒╥─╧╬1> IS HERE.
  74.  
  75. <[╘ONY] ┴.╘╧╠╠┼> ╚IYA ┼DDIE.
  76.  
  77. <╟┼╧╙-╘╔═> ╚I ┼DDIE
  78.  
  79. <[┼DDIE] ┼.┬╧╒╥─╧╬1> ╚I ╘ONY,╘IM, ╞RANK
  80.  
  81. <[╞RANK] ┬╒╞╞.╨╚╧╧╬> 'LO ┼DDIE
  82.  
  83. <[╘ONY] ┴.╘╧╠╠┼> ╞OR NOW, MOST OF OUR PROGRAMS WILL BEGIN AT ADDRESS $C000,
  84. WHICH IS 49152 IN DECIMAL.  ╘HIS IS A CONVENIENT LOCATION BECAUSE IT DOESN'T
  85. INTEREFERE WITH OTHER PROGRAMS IN MEMORY.
  86.  
  87. <[╘ONY] ┴.╘╧╠╠┼> ╙O TO TYPE IN THIS PROGRAM YOU WOULD TYPE:
  88.  
  89. <[╘ONY] ┴.╘╧╠╠┼> ┴ $├000 ╠─┴ #$10
  90.  
  91. <[╘ONY] ┴.╘╧╠╠┼> AND PRESS ╥┼╘╒╥╬.
  92.  
  93. <[╘ONY] ┴.╘╧╠╠┼> ╘HIS MEANS TO START ASSEMBLING AN ═╠ PROGRAM AT $C000 AND THE
  94. FIRST INSTRUCTION IS ╠─┴ #$10.
  95.  
  96. <[╘ONY] ┴.╘╧╠╠┼> ╘HE COMPUTER WILL RESPOND BY PRINTING:
  97.  
  98. <[╘ONY] ┴.╘╧╠╠┼> ┴ $├002
  99.  
  100. <[╘ONY] ┴.╘╧╠╠┼> AND THEN DISPLAYING THE CURSOR RIGHT AFTER THE $C002.
  101.  
  102. <[╘ONY] ┴.╘╧╠╠┼> ╘HIS TELLS YOU TWO THINGS:  ╘HE COMPUTER ACCEPTED YOUR FIRST
  103. INSTRUCTION, AND NOW IT IS READY FOR ANOTHER INSTRUCTION (NOTICE THAT THE
  104. ADDRESS INCREASED BY TWO, BECAUSE THE ╠─┴ #$10 INSTRUCTION TAKES UP TWO
  105. BYTES).
  106.  
  107. <[╘ONY] ┴.╘╧╠╠┼> ╥EMEMBER THAT THE PROGRAM ISN'T ACTUALLY RUNNING RIGHT NOW,
  108. BUT YOU ARE JUST ENTERING IT INTO MEMORY USING THE MONITOR'S MINI-ASSEMBLER TO
  109. CONVERT THE MNEMONIC INSTRUCTIONS (I.E. THE ╠─┴ INSTRUCTION) INTO THE PURE ═╠
  110. NUMBERS.
  111.  
  112. <[╘ONY] ┴.╘╧╠╠┼> ╬EXT YOU WOULD TYPE:
  113.  
  114. <[╘ONY] ┴.╘╧╠╠┼> ┬╥╦
  115.  
  116. <[╘ONY] ┴.╘╧╠╠┼> AND PRESS ╥┼╘╒╥╬.  ╘HIS ENTERS IN THE ┬╥╦ (┬╥EA╦) INTO
  117. MEMORY.  ═ESSAGE SENT TO ╩OB 4
  118.  
  119. <[╘ONY] ┴.╘╧╠╠┼> ╘HE ┬╥╦ INSTRUCTION IS SIMPLY AN INSTRUCTION THAT TELLS THE
  120. PROCESSOR TO INTERRUPT THE CURRENT PROGRAM AND START EXECUTING AN ═╠ PROGRAM
  121. AT A DIFFERENT ADDRESS.
  122.  
  123. <[╘ONY] ┴.╘╧╠╠┼> ╔T IS USED IN ═╠ MONITORS TO END THE PROGRAM AND RETURN
  124. CONTROL TO THE MONITOR, WHERE IT WILL DISPLAY THE VALUES OF THE REGISTERS FOR
  125. YOU.
  126.  
  127. <[╘ONY] ┴.╘╧╠╠┼> ╬OW THAT YOU HAVE ENTERED THAT INSTRUCTION, YOU WILL SEE:
  128.  
  129. <[╘ONY] ┴.╘╧╠╠┼> ┴ $├003
  130.  
  131. <[╘ONY] ┴.╘╧╠╠┼> WITH A CURSOR.
  132.  
  133. <[╘ONY] ┴.╘╧╠╠┼> ╬OW THAT YOU ARE FINISHED TYPING IN THE PROGRAM, YOU WOULD
  134. PRESS ╥┼╘╒╥╬ TO EXIT THE MINI-ASSEMBLER.
  135.  
  136. <[╘ONY] ┴.╘╧╠╠┼> ╬OW YOU ARE READY TO ACTUALLY RUN THE ═╠ PROGRAM TO SEE WHAT
  137. IT DOES.  ┬EFORE YOU DO THAT THOUGH, YOU CAN DO WHAT IS CALLED "DISASSEMBLING"
  138. THE PROGRAM, WHICH IS JUST A FANCY WAY OF SAYING THAT YOU WANT TO LIST THE ═╠
  139. PROGRAM IN MEMORY.
  140.  
  141. <[╘ONY] ┴.╘╧╠╠┼> ╘YPE THE COMMAND:
  142.  
  143. <[╘ONY] ┴.╘╧╠╠┼> ─ $├000 $├002
  144.  
  145. <[╘ONY] ┴.╘╧╠╠┼> ╫HICH MEANS, "DISASSEBLE THE ═╠ PROGRAM FROM ADDRESS $├000 TO
  146. $├002".  ╨RESS ╥┼╘╒╥╬ AND YOU WILL SEE:
  147.  
  148. <[╘ONY] ┴.╘╧╠╠┼> *├000 ┴9 10    ╠─┴ #$10 <[╘ONY] ┴.╘╧╠╠┼> *├002 00       ┬╥╦
  149.  
  150. <[╘ONY] ┴.╘╧╠╠┼> ╘HE HEX NUMBERS SHOWN TO THE LEFT OF THE MNEMONIC
  151. INSTRUCTIONS ARE THE ACTUAL ═╠ INTRUCTION CODES THAT ARE STORED IN MEMORY.
  152. ╬OTICE THAT THE ═╠ PROGRAM ONLY TAKES UP THREE BYTES OF MEMORY.
  153.  
  154. <[╘ONY] ┴.╘╧╠╠┼> ┬EFORE WE RUN THE PROGRAM, WE SHOULD ALSO DO ONE OTHER THING.
  155. ╬OTICE THAT THE PROGRAM IS SUPPOSED TO ALTER THE ┴CCUMULATOR; WE NEED TO RESET
  156. THE VALUE OF THE ACCUMULATOR BEFORE RUNNING THE PROGRAM SO THAT WE CAN SEE
  157. WHAT THE PROGRAM DOES.  ─O THIS BYTE TYPING "╥" AND PRESSING ╥┼╘╒╥╬.
  158.  
  159. <[╘ONY] ┴.╘╧╠╠┼> ╘HIS WILL SHOW THE VALUES OF THE REGISTERS LIKE THIS:
  160.  
  161. <[╘ONY] ┴.╘╧╠╠┼>    ╨├  ┴╥ ╪┘ ┘╥ ╙╨ ╙╥ <[╘ONY] ┴.╘╧╠╠┼> ; ╪╪╪╪ ╪╪ ╪╪ ╪╪ ╪╪ ╪╪
  162.  
  163. <[╘ONY] ┴.╘╧╠╠┼> ╘HE VALUES THAT ARE PRINTED DON'T REALLY MATTER, BUT WE DO
  164. WANT TO CHANGE ONE OF THEM.  ═OVE THE CURSOR TO THE FIRST DIGIT OF THE HEX
  165. NUMBER BELOW THE ┴╥ HEADING.
  166.  
  167. <[╘ONY] ┴.╘╧╠╠┼> ╘YPE OVER THE NUMBER THERE AND PUT "00" INSTEAD.  ╘HE LINE
  168. SHOULD LOOK LIKE THIS:
  169.  
  170. <[╘ONY] ┴.╘╧╠╠┼> ;╪╪╪╪ 00 ╪╪ ╪╪ ╪╪ ╪╪
  171.  
  172. <[╘ONY] ┴.╘╧╠╠┼> ╫HERE THE ONLY NUMBER YOU HAVE CHANGED IS THE SECOND NUMBER,
  173. THE ACCUMULATOR.  ╘HEN PRESS ╥┼╘╒╥╬ TO CHANGE THE VALUE.
  174.  
  175. <[┼DDIE] ┼.┬╧╒╥─╧╬1> ╫HAT DO THE ABOVE LETTERS STAND FOR?
  176.  
  177. <[╘ONY] ┴.╘╧╠╠┼> ╧K, THEY ARE THE NAMES OF THE REGISTERS.   ╨ROGRAM ├OUNTER
  178. (╨├), ┴CCUMULATOR (┴╥), ╪ REGISTER (╪╥), ┘ REGISTER (┘╥), ╙TACK ╨OINTER (╙╨),
  179. ╙TATUS ╥EGISTER (╙╥)
  180.  
  181. <[╘ONY] ┴.╘╧╠╠┼> ╬OW WE ARE READY TO RUN THE PROGRAM.  ╘YPE THE FOLLOWING:
  182.  
  183. <[╘ONY] ┴.╘╧╠╠┼> ╟ $├000
  184.  
  185. <[╘ONY] ┴.╘╧╠╠┼> AND PRESS ╥┼╘╒╥╬.
  186.  
  187. <[╘ONY] ┴.╘╧╠╠┼> ╔T WILL SEEM AT FIRST AS IF NOTHING REALLY HAPPENED, BUT THE
  188. MONITOR WILL DISPLAY THE REGISTERS AGAIN LIKE THIS:
  189.  
  190. <[╘ONY] ┴.╘╧╠╠┼>   ╨├  ┴╥ ╪╥ ┘╥ ╙╨ ╙╥ <[╘ONY] ┴.╘╧╠╠┼> ;╪╪╪╪ 10 ╪╪ ╪╪ ╪╪ ╪╪
  191.  
  192. <[╘ONY] ┴.╘╧╠╠┼> ┘OU WILL SEE THAT THE VALUE OF THE ┴CCUMULATOR (┴╥) HAS
  193. CHANGED TO HEXADECIMAL 10.  ╘HIS WHAT THE PROGRAM DID WITH THE ╠─┴ #$10
  194. INSTRUCTION.
  195.  
  196. <[╘ONY] ┴.╘╧╠╠┼> ╬OW THAT WE HAVE DONE THIS SIMPLE PROGRAM, WE CAN TRY ONE
  197. THAT DOES SOMETHING A LITTE MORE EVIDENT.
  198.  
  199. <[╘ONY] ┴.╘╧╠╠┼> ╫E CAN GO AHEAD AND PUT THE NEW PROGRAM IN PLACE OF THE OLD
  200. ONE.  ╒SING THE MINI-ASSEMBLER TYPE THE FOLLOWING PROGRAM:
  201.  
  202. <[╘ONY] ┴.╘╧╠╠┼> ┴ $├000 ╠─┴ #$30 <[╘ONY] ┴.╘╧╠╠┼> ┴ $├002 ╙╘┴ $0400 <[╘ONY]
  203. ┴.╘╧╠╠┼> ┴ $├005 ┬╥╦
  204.  
  205. <[╘ONY] ┴.╘╧╠╠┼> ╬OW THAT THE PROGRAM IS TYPED IN, CLEAR THE SCREEN AND PRESS
  206. ╥┼╘╒╥╬ A COUPLE TIMES.
  207.  
  208. <[┼DDIE] ┼.┬╧╒╥─╧╬1> ╙EE YA ALL LATER
  209.  
  210. ** <[┼DDIE] ┼.┬╧╒╥─╧╬1> HAS LEFT.
  211.  
  212. <[╘ONY] ┴.╘╧╠╠┼> ╘HEN TYPE "╟ $├000" AND PRESS ╥┼╘╒╥╬, BUT BE SURE TO BE
  213. WATCHING THE UPPER LEFT CORNER OF THE SCREEN WHEN YOU ARE PRESSING ╥┼╘╒╥╬.
  214.  
  215. <[╘ONY] ┴.╘╧╠╠┼> ┘OU SHOULD SEE A "0" CHARACTER APPEAR IN THE UPPER LEFT
  216. CORNER OF THE SCREEN WHEN YOU RUN THE PROGRAM.
  217.  
  218. <[╘ONY] ┴.╘╧╠╠┼> ╚ERE IS HOW THE PROGRAM WORKS:
  219.  
  220. <[╘ONY] ┴.╘╧╠╠┼> ╠─┴ #$30 LOADS THE ACCUMULATOR WITH THE HEX VALUE $30, WHICH
  221. IS 48 IN DECIMAL.  ╘HIS IS THE NUMBER THAT THE COMPUTER USES TO REPRESENT THE
  222. "0" CHARACTER ON THE SCREEN.  ╘HE NEXT INSTRUCTION, ╙╘┴ $0400, STORES THE
  223. VALUE OF THE ACCUMULATOR ($30) IN THE FIRST LOCATION OF ╙CREEN ═EMORY.  ╙CREEN
  224. MEMORY IS A RANGE OF ADDRESSES,
  225.  
  226. <[╘ONY] ┴.╘╧╠╠┼> $0400 TO $07╞╞, THAT IS THE COMPUTER'S INTERNAL
  227. REPRESENTATION OF EVERY CHARACTER DISPLAYED ON THE SCREEN.  ╘O DISPLAY
  228. DIFFERENT CHARACTERS, THE COMPUTER CHANGES SCREEN MEMORY IN A WAY THAT IS
  229. USUALLY TRANSPARENT TO US. ╫HEN YOU CLEAR THE SCREEN THE COMPUTER IS ACTUALLY
  230. FILLING SCREEN MEMORY WITH $20 BYTES, WHICH IS SIMPLY THE VALUE THAT
  231. REPRESENTS THE "SPACE" CHARACTER.
  232.  
  233. <[╞RANK] ┬╒╞╞.╨╚╧╧╬> ╘IME IS ABOUT UP, ╘ONY.
  234.  
  235. <[╘ONY] ┴.╘╧╠╠┼> ┘OU ARE RIGHT...  ╔ DIDN'T EVEN NOTICE  HEHEHEHE.
  236.  
  237. <[╘ONY] ┴.╘╧╠╠┼> ╫ELP, IF THERE ARE ANY QUESTIONS ABOUT WHAT ╔ COVERED ╔'D BE
  238. HAPPY TO ANSWER THEM NOW.
  239.  
  240. <[╞RANK] ┬╒╞╞.╨╚╧╧╬> ┘OU WANT US TO TRY WHAT WE'VE TALK ABOUT TONIGHT BEFORE
  241. WE COME BACK NEXT WEEK?
  242.  
  243. <[╘ONY] ┴.╘╧╠╠┼> ┘ES.  TRY OUT THOSE SAMPLE PROGRAMS SO ╔ CAN FIND OUT WHAT
  244. KIND OF TROUBLE YOU MIGHT HAVE ENCOUNTERED...
  245.  
  246. <[╘ONY] ┴.╘╧╠╠┼> ╔ WILL UPLOAD THE TRANSCRIPT OF THIS AS SOON AS ╔ CAN SO YOU
  247. CAN ─╠ IT IF NECESSARY FOR REFERENCE, OR YOU CAN USE YOUR OWN BUFFER,
  248.  
  249. <[╘ONY] ┴.╘╧╠╠┼> EVERYTHING SHOULD WORK AS DESCRIBED FOR THE PROGRAMS THOUGH.
  250.  
  251. <[╞RANK] ┬╒╞╞.╨╚╧╧╬> ╧╦.  ╔'LL TRY IT THIS WEEK-END. :: ┬UFFER OFF ::
  252.