home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / Information / MLCOLUMN.ARC / MLCOL.1 next >
Encoding:
Text File  |  2019-04-13  |  15.4 KB  |  309 lines

  1.               ═ACHINE ╠ANGUAGE ═ADE ┼ASY ! (╨ART 1)
  2.                           BY
  3.                       ╠YLE ╟IESE
  4.                   ─┼╠╨╚╔ ═AIL:  ╠┘╠┼╟
  5.   
  6.      ╘HIS IS THE FIRST IN A SERIES OF COLUMNS TO HELP EASE THE
  7.  NEWCOMER INTO THE WORLD OF ═ACHINE ╠ANGUAGE.  ╔ AM STILL NOT SURE HOW
  8.  ╔ GOT INTO THIS JOB, BUT ╔ WILL GIVE IT MY BEST!
  9.   
  10.      ╔T IS QUITE HARD TO GET STARTED IN ═ACHINE ╠ANGUAGE PROGRAMING,
  11.  BUT JUST LIKE THE ┬┴╙╔├ IN YOUR FIRST COMPUTER, ONCE YOU KNOW A
  12.  LITTLE ABOUT IT IS NOT THAT DIFFICULT.  ╘HIS COLUMN WILL BE BASED 
  13.  ON THE 6502 & 6510 MICROPROCESSORS THAT ARE USED IN THE ├OMMODORE 64
  14.  & ╓IC-20, ┴TARI 400-600-800 SERIES MACHINES, AND IN SOME ┴PPLES.
  15.  ╘HE 8500 PROCESSOR IN THE ├-128 IS A DIRECT COUSIN OF THE 6502.
  16.  ┴LL INSTRUCTIONS FOR THE 6502 WILL DO THE SAME THINGS ON THE 8500.
  17.  ╘HE 8500 CAN DO MORE, BUT THAT WILL NOT BE COVERED HERE.
  18.   
  19.      ╔N STARTING OUT WITH ANYTHING THAT IS FOREIGN, IT TAKES TIME TO
  20.  COVER ALL THE TERMINOLGY NEEDED TO UNDERSTAND THE SIMPLEST
  21.  INSTRUCTION.  ╙O, THIS MONTH'S COLUMN WILL BE COVERING JUST
  22.  THAT, TERMINOLOGY.
  23.   
  24.      ╔ GOT MY 'TRAINING' IN ═ACHINE ╠ANGUAGE BY FIRST READING
  25.  ╥ICHARD ═ANSFIELD'S BOOK "═ACHINE ╠ANGUAGE FOR ┬EGINNERS".
  26.  ╔T IS, IN MY OPINION, AN EXCELLENT BOOK FOR THE NOVICE.  ╔ CANNOT,
  27.  HOWEVER, COMMENT ON HIS SECOND BOOK AS ╔ HAVE NOT READ IT.
  28.   
  29.      ┴ BOOK THAT IS ON THE ═╒╙╘ HAVE LIST FOR THE ├-64 OWNER IS THE
  30.  '╨ROGRAMMERS ╥EFERENCE ╟UIDE' (╨╥╟).  ╔T HAS VALUABLE INFORMATION ON
  31.  HOW TO USE THE ╦ERNAL ROUTINES INSIDE THE ├-64. ╠ATER, ╔ HOPE TO
  32.  COVER HOW TO READ THE ╦ERNAL ROUTINE CHARTS IN THE ╨╥╟.
  33.   
  34.      ═EMORY MAPS OF THE COMPUTER YOU ARE USING ARE INVALUABLE! ╘WO
  35.  GOOD ONES FOR THE ├-64 ARE "╘HE ┴NATOMY OF THE ├OMMODORE 64", FROM
  36.  ┴BACUS ╙OFTWARE, AND "═APPING THE ├-64" BY ╙HELDON ╠EEMAN, FROM
  37.  ├OMPUTE! ╨UBLICATIONS.  "╘HE ┴NATOMY OF THE ├OMMODORE 64" HAS VERY
  38.  GOOD DISASEMBLIES OF ALL THE ╥╧═ ROUTINES IN THE 64.  ╙HELDON'S
  39.  BOOK IS A GOOD REFERENCE FOR THE LOW MEMORY USAGE IN THE 64 AND FOR
  40.  SOME COMMENTS ON ┬┴╙╔├ AND THE ╦┼╥╬┴╠.
  41.   
  42.      ┘OU WILL ALSO NEED A SIMPLE ASSEMBLER AND A SIMPLE DISSAMBLER TO
  43.  USE.  ╘HERE ARE GOOD ╨UBLIC ─OMAIN ONES HERE IN THE DATABASE OF THE
  44.  ╞LAGSHIP. ╠ATER, IF YOU WANT TO GET MORE INVOLVED IN ═ACHINE
  45.  ╠ANGUAGE, YOU WILL WANT A MORE COMPLEX ASSEMBLER.  ┬UT AGAIN, THAT
  46.  IS A TOPIC FOR FUTURE COLUMN.
  47.   
  48.      ═┼═╧╥┘.  ╘HAT IS THE STUFF WE WANT MORE AND MORE OF! ┬UT WHAT IS
  49.  MEMORY?  ═EMORY, IN ITS SIMPLEST FORM, IS CALLED A "BIT."  ├OMMON
  50.  BELIEF HAS IT THAT THE TERM BIT IS SHORT FOR BINARY DIGIT, AND GOT
  51.  ITS NAME FROM THAT.  ┴ BINARY DIGIT HAS ONLY TWO STATES, A ZERO OR
  52.  A ONE.  ╬OT MUCH POWER OR INFORMATION CAN BE STORED IN ONE OF TWO
  53.  DIGITS!  ┬Y CHAINING THE BITS IN A LOGICAL MANNER, WE CAN USE THEM TO STORE MORE INFORMATION.
  54.   
  55.      ╘HE NEXT BUILDING BLOCK WE USE IS A BYTE.  ┴ BYTE IS 8 BITS OF
  56.  MEMORY USED TOGETHER.  ╫ITH 8 BITS, WE  HAVE 256 DIFFERENT
  57.  COMBINATIONS OF ONE'S AND ZERO'S TO WORK WITH.
  58.   
  59.      ╥ICHARD ═ANSFIELD USED AN EXCELLENT ANALOGY TO EXPLAIN HOW
  60.  MEMORY IS CONFIGURED.  ╔MAGINE THE 8 BITS AS 8 LIGHTS IN A HOUSE.
  61.  ╘HE LIGHTS WILL BE ON OR OFF AS THE BITS ARE TURNED ON OR OFF.  ╬OW,
  62.  LINE UP NUMBER OF HOUSES IN A ROW DOWN A LONG STREET.  ╘HE FIRST
  63.  HOUSE WILL HAVE AN ADDRESS OF ZERO. ╘HE SECOND ONE AN ADDRESS
  64.  OF 1 AND SO ON, UNTIL WE GET TO THE END OF OUR STREET (MEMORY).
  65.  ╧N THE 64 THE END WILL BE AT 64╦.  ╘HAT IS NOT 64,000.  ┴ ╦
  66.  OF MEMORY IS 1024.  ╘HAT NUMBER IS USED PARTLY BECAUSE IT IS A 
  67.  FACTOR OF 2 (2 TO THE POWER OF 10).  ╘HIS MEANS THE LAST HOUSE IN
  68.  MEMORY WILL HAVE AN ADDRESS OF 65,535 (REMEMBER THAT WE STARTED WITH
  69.  AN ADDRESS OF ZERO).  ╥EMEMBER, ╔ SAID THAT A BYTE CAN HOLD 256 
  70.  DIFFERENT BIT COMBINATIONS?  ╙INCE THAT IS WHAT A BYTE CAN HANDLE,
  71.  MEMORY IS AGAIN DIVIDED INTO 256 BYTE CHUNKS, OR BLOCKS ON OUR STREET,
  72.  CALLED PAGES.
  73.   
  74.      ┌ERO PAGE, BESIDES BEING THE FIRST PAGE, IS SPECIAL. ┬ECAUSE 
  75.  THE PAGE IS ZERO, THE MICROPROCCESSOR IS SET UP TO BE ABLE TO ACCESS
  76.  ZERO PAGE FASTER.  ╘HE REASON IS THAT IN ORDER TO ACCESS MEMORY WE
  77.  HAVE TO USE THE ADDRESS OF THE BYTE OF MEMORY. ╘HE ADDRESS IS
  78.  DIVIDED INTO TWO BYTES CALLED THE "LEAST SIGNIFICANT BYTE" (╠╙┬)
  79.  AND THE "MOST SIGNIFICANT BYTE" (═╙┬).  ╫HEN TALKING ABOUT THE
  80.  BYTES IN ZERO PAGE, THE ═╙┬ WILL BE ZERO. ╙O A SPECIAL SET OF 
  81.  INSTRUCTIONS WERE SET UP INSIDE THE 6502 TO WORK WITH ZERO PAGE.
  82.  ╘HESE INSTRUCTIONS WORK FASTER BECAUSE THE PROCESSOR FETCHES ONE
  83.   LESS BYTE IN ORDER TO FIND THE ADDRESS. ╘HAT FACT WAS NOT LOST ON
  84.  ├OMMODORE WHEN THEY DESIGNED THEIR COMPUTERS. ╘HEY MADE HEAVY USE
  85.  OF ZERO PAGE.
  86.   
  87.      ┴NOTHER THING THAT YOU WILL FIND IS THE HEAVY USE OF
  88.  ╚EXIDECIMAL NOTATION.  ╘HIS IS A NUMBERING SYSTEM BASED ON 16
  89.  DIGITS INSTEAD OF 10 USED IN DECIMAL THAT WE ARE USED TO.
  90.  ╚EXIDECIMAL, OR HEX FOR SHORT, USES 0-9, AND ┴-╞ FOR ITS DIGITS,
  91.  WITH ┴=10, ┬=11, ETC.  ╚EX IS NORMALLY PREFIXED BY A "$" AS $10,
  92.  WHICH IS 16 IN DECIMAL.  ╔T IS SOMETIMES WRITTEN AS 10H, BUT THAT IS
  93.  SELDOM SEEN ANYMORE.
  94.   
  95.      ╚EX IS CONVENIENT FOR USE WITH BYTE SIZED MEMORY AS 2 DIGITS
  96.  ARE ALL THAT ARE NEEDED TO SHOW THE MAXIMUM VALUE THAT A BYTE CAN
  97.  HOLD (RANGING FROM $00 TO $╞╞(255)). ╞OUR DIGITS ARE ALL THAT ARE
  98.  NEEDED TO DESIGNATE MEMORY LOCATIONS IN A 64K MACHINE. ╘HAT IS TWO
  99.  BYTES CAN RANGE FROM $0000 TO $╞╞╞╞ ( OR 65,535). ╔ STRONGLY SUGGEST
  100.  THAT YOU BECOME FAMILAR WITH HEX AS IT IS USED OFTEN IN ARTICLES OR
  101.  BOOKS WRITTEN ABOUT ═╠.
  102.   
  103.      ╘HE HEX DESIGNATION FOR MEMORY LOCATIONS CAN BE SPLIT VERY
  104.  EASILY. ╔N THE EXAMPLE ABOVE, $╞╞╞╞, THE ╠╙┬ WILL HOLD $╞╞ AND THE
  105.  ═╙┬ WILL HOLD $╞╞.  ╬OTE: THE ═╙┬ ALSO REFERS TO THE PAGE NUMBER
  106.  WHEN TALKING ABOUT MEMORY LOCATIONS.
  107.   
  108.   
  109.      ┴T THIS POINT, YOU HAVE TO KNOW SOMETHING ABOUT WHAT IS INSIDE
  110.  YOUR MICROPROCESSOR.  ╘HERE IS A LITTLE ╥ANDOM ┴CCESS ═EMORY (╥┴═)
  111.  AND THE INSTRUCTIONS, CONTAINED IN ╥EAD ╧NLY ═EMORY (╥╧═)-LIKE
  112.  MEMORY.
  113.   
  114.      ╘HE ╥┴═ MEMORY IS DIVIDED INTO 'REGISTERS': THE ┴ REGISTER,
  115.  COMMONLY CALLED THE ┴CCUMLATOR; ╪ REGISTER; ┘ REGISTER] ╙TACK
  116.  ╨OINTER (╙╨); ╨ROGRAM COUNTER (╨├); AND THE ╙TATUS ╥EGISTER (╙╥), 
  117.   LSO CALLED THE ╨ REGISTER. ┼ACH REGISTER HAS ITS OWN SPECIAL
  118.  PROPERITIES AND/OR FUNCTIONS THAT ENABLE IT TO DO CERTAIN TASKS THAT
  119.  OTHER REGISTERS CANNOT DO.
  120.   
  121.      ╔ WILL BE USING THE TERM 6502 EVEN THOUGH EVERYTHING
  122.  APPLIES EQUALLY TO THE 6510 AND 8500 UNLESS OTHERWISE NOTED.
  123.   
  124.      ╘HE ┴ REG IS WHERE ALL THE MATH FUNCTIPMS OF THE 6502 ARE DONE.
  125.  ╔N ORDER TO ADD, SUBTRACT, OR DO LOGICAL FUNCTIONS, ONE NUMBER HAS TO
  126.  BE IN THE ACCUMLATOR.
  127.   
  128.      ╘HE ╪ ND ┘ REGISTERS ARE USE FOR INEXING, BUT THEY DO HAVE SOME
  129.  DIFFERENT PROPORTIES.  ╘HE DIFFERENCES RE SUBTLE AND ╔ WILL
  130.  COVER THEM IN A LATER COLUMN.
  131.   
  132.      ╘HE ╨├ IS USED TO KEEP TRACK OF WHERE WE ARE IN THE PROGRAM SO
  133.  THAT THE 6502 WILL KNOW WHERE TO GET ITS NEXT INSTRUCTION.
  134.   
  135.      ╘HE ╙╨ IS A POINTER TO THE ╙TACK IN MEMORY.  ╘HIS IS USED TO
  136.  STORE THE RETURN ADDRESS WHEN YOU ╩╙╥ (╩UMP WITH ╥ETURN - 
  137.  SIMILAR TO ╟╧╙╒┬ IN ┬┴╙╔├).  ╘HE STACK MAY ALSO BE USED FOR TEMPORARY
  138.  STORAGE, BUT THIS APPLICAIONT SHOULD BE LEFT TO ADVANCED PROGRAMMERS.
  139.   
  140.      ╘HE ╨ REG, OR ╙TATUS ╥EG, IS USED TO KEEP TRACK OF CERTAIN
  141.  CONDITIONS THAT HAPPENED IN THE LAST OPERATION.  ─ID THE
  142.  LAST OPERATION RESULT IN A ZERO RESULT? ─ID THE LAST ADDITION CAUSE
  143.  A CARRY?  ─ID THE LAST SUBTRACTION USE A BORROW?  ╔N THE ╨ REG,
  144.  7 FLAGS THAT ARE USED FOR THIS PURPOSE.  ╔ WILL COVER THEM IN A LATER
  145.  COLUMN.
  146.   
  147.  ╫ITH AN ARTICLE ON ANYTHING NEW, IT IS VERY HELPFUL TO SHOW A WORKING
  148.  EXAMPLE. ═╠ IS NO EXCEPTION TO THAT RULE. ╔N THIS VAIN ╔ THOUGHT WE WOULD
  149.  DO SOMETHING SIMPLE, CHANGE THE COLOR MEMORY ON THE ├-64. ╔N CASE SOME OF
  150.  YOU HAVE FORGOTTEN IN THE ╓ERSION2 ╦ERNAL ├-64 A CLEAR SCREEN CAUSED THE 64
  151.  TO SET THE BACKGROUND COLOR MEMORY TO THE CURRENT FOREGROUND COLOR. ╙O IF
  152.  THEN YOU WANTED TO POKE TO THE SCREEN, YOU COULDN'T SEE IT AS THE CHARACTER
  153.  WAS THE SAME COLOR AS THE FOREGROUND.
  154.   
  155.  ╫E WOULD NEED TO FILL COLOR MEMORY WITH SOMETHING OTHER THAN THE FOREGROUND
  156.  COLOR. ╧N THE 64 THE DEFAULT FOREGROUND COLOR IS BLUE, WHICH HAS A COLOR
  157.  NUMBER OF 6. ╫E NEED TO CHANGE IT TO SOME OTHER NUMBER. ╫E COULD DO THAT IN
  158.  ┬┴╙╔├ WITH A FOR-NEXT LOOP BUT THAT TAKES MUCH TOO LONG. ╔N ═╠ IT IS A
  159.  SHORT AND SIMPLE OPERATION.
  160.   
  161.  ╫ITH THIS EXAMPLE, ╔ WILL USE THE CONVECTIONS USED WITH ╙UPERMON. ╘HAT
  162.  PROGRAM IS IN THE ╨─ AND WAS INCLUDED ON THE DISK BONUS PACK INSIDE THE
  163.  1541. ╙O WE WILL START THIS PROJECT BY LOADING AND RUNNING ╙UPERMON(MOST
  164.  OTHER SIMPLE MONITORS USE VERY SIMULAR SYNTAX).
  165.   
  166.  ╘HE FIRST THING YOU WILL SEE IS A STATUS LINE. ╘HAT SHOWS YOU THE CONTENTS
  167.  OF ALL THE 6502 REGISTERS, STARTING WITH THE ╨ROGRAM COUNTER(╨├), ╔╥╤
  168.  VECTOR(THIS ARE THE ROUTINES THAT SERVICE THE KEYBOARD AND ╘╧─ CLOCKS AND
  169.  OTHER THINGS AND OCCURS APPROX EVERY 60TH OF A SECOND), THE ╙TATUS ╥EG(╙╥
  170.  ALSO CALLED THE ╨ REG), THE ┴ REG(OR ┴CCUMLATOR, THE ╪ REG, THE ┘ REG AND
  171.  THE ╙TACK POINTER. ╘HEN A PERIOD ON THE NEXT LINE. ╘HE PERIOD REPLACES THE
  172.  CURSOR.
  173.   
  174.  ╚ERS'S A PRINTOUT OF OUR PROGRAM AND ╔ WILL EXPLAIN.
  175.   
  176.  .┴ ├000 ╠─┘ #$─8
  177.  .┴ ├002 ╙╘┘ $╞╞
  178.  .┴ ├004 ╠─┘ #$00
  179.  .┴ ├004 ╙╘┘ $╞┼
  180.  .┴ ├006 ╙╘┘ $╞┼
  181.  .┴ ├008 ╠─┴ #$00
  182.  .┴ ├00┴ ╙╘┴ ($╞┼),┘
  183.  .┴ ├00├ ╔╬┘
  184.  .┴ ├00─ ┬╬┼ $├00┴
  185.  .┴ ├00╞ ╔╬├ $╞╞
  186.  .┴ ├011 ╠─┴ $╞╞
  187.  .┴ ├013 ├═╨ #$─├
  188.  .┴ ├015 ┬╬┼ $├008
  189.  .┴ ├017 ╥╘╙
  190.  .┴ ├018
  191.   
  192.  ┴FTER THE PERIOD, WE TYPE AN ┴. ╘HIS TELLS THE PROGRAM TO START ASSEMBLING
  193.  WANT WE TYPE IN. ╬EXT WE TYPE IN THE STARTING ADDRESS IN ╚┼╪. ╔N THIS
  194.  EXAMPLE WE USE $├000, WHICH IS 49152 DECIMAL. ╘HIS A FREE ZONE THAT ┬┴╙╔├
  195.  DOES USE AND IS QUITE FREQUENTLY USED FOR ═╠ SUBROUTINES AND PROGRAMS, LIKE
  196.  ├┬═'S ╫EDGE PROGRAM.
  197.   
  198.  ╬EXT(WE ARE STILL ON THE FIRST LINE) WE TYPE IN THE MNEMONIC FOR THE
  199.  INSTRUCTION WE WANT EXICUTED. ╔N THIS CASE THE ╧P CODE IS ╠─┘ WHICH MEANS
  200.  ╠OA─ THE ┘ REG. ╘HE #$─8 IS CALLED THE ARUGMENT. ╘HE '#' USE THE NUMBER
  201.  THAT FOLLOWS(AS OPPSED TO TREATING IT AS AN ADDRESS). ╙O IT IS TELLING US
  202.  TO ╠OA─ THE ┘ REG WITH THE NUMBER $─8. ╘HIS METHOD OF ADRESSING IS CALLED
  203.  IMMEDIATE. ╬OW WE PRESS THE <├╥> AND YOU HAVE PUT YOUR FIRST INSTRUCTION
  204.  INTO MEMORY!
  205.   
  206.  ┴FTER THE <├╥> THE COMPUTER WILL RESPOND WITH '.┴ ├002'. ┴FTER YOU GIVE THE
  207.  ASSEMBLER THE START ADDRESS IT WILL FIGURE OUT WHERE THE NEXT INSTRUCTION
  208.  GOES FOR YOU. ╔F THIS WAS THE END OF THE PROGRAM WE WOULD JUST ANSWER BY
  209.  TYPING A <├╥>.
  210.   
  211.  ╘HE SECOND OP CODE IS ╙TORE ╘HE ┘ REG. ╬OW ALL THE STORE AND LOAD
  212.  INSTRUCTIONS ACTUALLY COPY THE INFORMATION FROM ONE PLACE TO ANOTHER
  213.  WITHOUT DESTROYING THE ORIGNAL. ╙O IN THIS CASE (WITHOUT THE '#' MEANS THAT
  214.  WE TREAT THE ARGUMENT AS AN ADDRE
  215.  SS) WE WILL STORE (OR COPY) THE CONTENTS
  216.  OF THE ┘ REG INTO MEMORY LOCATION $╞┼. ┬Y THE WAY THIS ADDRESSING MODE IS
  217.  CALLED ZERO PAGE ABSOLUTE, ABSOLUTE BECAUSE WE ARE SPECIFING THE EXACT
  218.  ADRESS TO USE AND ZERO PAGE BECAUSE THE ADDRESS IS IN ZERO PAGE.
  219.   
  220.  ╘HE NEXT TWO INSTRUCTIONS ARE THE SAME AS ABOVE EXCEPT WE WILL PUT $00 INTO
  221.  MEMORY LOCATION $╞┼. ╔N CASE YOU HAVE NOT NOTICED WE HAVE PUT ADDRESS $─800
  222.  INTO $╞┼ & $╞╞. ╘HE ADRESS $─800 IS THE START OF COLOR MEMORY AT 55296
  223.  DECIMAL.
  224.   
  225.   ┬UT ╚┼┘ ╫AIT ┴ ═INUTE!!! ─IDN'T YOU JUST PUT THE ADRESS IN BACKWARDS?? ┘ES
  226.  WE DID BUT THAT IS THE WAY THE 6502 EXPECTS TO FIND ALL OF ITS ADRESS. ╠╙┬
  227.  FIRST THEN THE ═╙┬. ╔ DON'T KNOW WHY BUT THAT IS THE WAY IT IS IN THE 6502,
  228.  ADRESSES ARE STORED IN MEMORY BACKWARDS.
  229.   
  230.  ╘HE NEXT INSTRUCTION TELLS US TO ╠OA─ THE ┴ REG WITH SOMETHING. ╘HE
  231.  ARGUMENT TELLS WHAT. ╔N THIS CASE THE '#' AGAIN TELLS US TO USE THIS NUMBER
  232.  AND NOT TREAT IT AS AN ADDRESS. ┬Y THE WAY THIS IS CALLED THE IMMEDIATE
  233.  ADDRESSING MODE. ╙O WE PUT THE NUMBER $01 INTO THE ┴ REG, WHICH IS THE
  234.  COLOR NUMBER FOR WHITE. ┬Y CHANGING THIS NUMBER WE COULD FILL COLOR MEMORY
  235.  WITH ANY OF THE 16(0-15) COLORS.
  236.   
  237.  ╬OW WE WANT TO PUT THE COLOR NUMBER INTO THE COLOR MEMORY. ╘HIS NEXT
  238.  INSTRUCTION DOES THAT FOR US. ╫E ARE GOING TO ╙╘ORE THE ┴ REG, BUT WHERE?
  239.  ╫ELL, THE PRENTHASIS AROUND THE $╞┼ TELLS US THAT $╞┼ IS NOT THE TARGET
  240.  ADRESS BUT THAT WE WILL FIND THE TARGET CONTAINED IN MEMORY LOCATIONS $╞┼ &
  241.  $╞╞(WHICH WE SET TO $─800 EARLIER).
  242.   
  243.  ╬OW WHAT DO WE DO WITH THE ',┘"? ╫E TAKE THE ADRESS FOUND AT $╞┼ & $╞╞(
  244.  $─800) AND ADD THE ┘ REG TO IT. ╘HE FIRST TIME THROUGH THIS ROUTINE THE ┘
  245.  REG CONTAINS $00. ╙O WE WILL ╙╘ORE THE ┴ REG AT $─800+0 OR AT $─800. ╘HIS
  246.  IS A VERY USEFUL ADRESSING MODE CALLED INDIRECT ┘, YOU WILL USE IT OFTEN!
  247.   
  248.  ╔N THE NEXT INSTRUCTION, WE ╔╬CREMENT THE ┘ REG OR ADD 1 TO IT. ╘HIS
  249.  ADRESSING MODE IS CALLED IMPLIED. ╔ GUESS IT GOT ITS NAME BECAUSE THE
  250.  ARGUMENT DOES NOT NEED TO BE SPECIFIED OR IS IMPLIED.
  251.   
  252.  ╘HE NEXT INSTRUCTION IS AN IMPORTANT ONE. ╔T STANDS FOR ┬RANCH IF ╬OT
  253.  ┼QUAL. ╬OT EQUAL TO WHAT? ╫ELL THE INSTRUCTION CHECKS THE ┌ERO FLAG IN THE
  254.  ╙TATUS REG. ╫HEN THE PREVIOUS INSTRUCTION (IN THIS CASE ╔╬┘) RESULTS IN A
  255.  ZERO RESULT OR EQUALS THE ZERO FLAG IS SET IN THE ╙TATUS REG. ╔F WE JUST
  256.  KEEP INCREMENT THE ┘ REG, HOW WILL THAT EVER BE EQUAL TO ZERO?
  257.   
  258.  ╟OOD QUESTION! ┼ARLIER IN THIS COLUMN ╔ STATED THAT A BYTE COULD ONLY HOLD
  259.  A NUMBER FROM $00-$╞╞(255). ╘HE REGISTERS IN THE 6502 ARE ONLY 1 BYTE LONG,
  260.  EXCEPT THE ╨├ WHICH IS 2 BYTES LONG. ╙O WHAT HAPPENS WHEN THE ┘ REG HOLDS
  261.  $╞╞(255) AND WE INCREMENT OR ADD ONE TO IT? ╔T CANN'T HOLD A BIGGER NUMBER,
  262.  SO IT ROLLS OVER TO $00, BUT WHEN THAT HAPPENS IT SETS THE ZERO FLAG IN THE
  263.  ╙TATUS REG.
  264.   
  265.  ┬ACK TO THE INSTRUCTION ┬RANCH IF ╬OT ┼QUAL TO ZERO. ╔F THE ┘ REG IS NOT
  266.  ZERO THEN WE GO BACK TO $├00┴. ╬OW THE ┘ REG HOLDS A $01 AND WE WILL ADD
  267.  THE ADDRESS FOUND AT $╞┼-$╞╞ TO THE CONTENTS OF THE ┘ REG AND GET $─800+1
  268.  OR $─801. ╙O THE CONTENTS OF THE ┴ REG IS NOW COPYED INTO $─801 OR THE
  269.  SECOND BYTE IN COLOR MEMORY.
  270.   
  271.  ╘HIS OF COURSE CONTINUES UNTIL THE ┘ REG ROLLS OVER TO ZERO. ╘HEN YOU FALL
  272.  THROUGH TO $├00╞. ╘HE INSTRUCTION THERE IS ╔╬├REMENT (NO '#') THE NUMBER IN
  273.  MEMORY LOCATION $╞╞. ╘HEN WE WILL ╠OA─ THE ┴ REG WITH THAT VALUE. ╘HE FIRST
  274.  TIME WE HIT THIS WE WILL BE GOING FROM $─8 TO $─9.
  275.   
  276.  ╬OW THAT WE HAVE THAT VALUE IN THE ┴ REG WE CAN ├O═╨ARE IT TO SOMETHING, (
  277.  ╬OTE THE '#' WHICH MEANS THAT WE COMPARE TO THE NUMBER $─├ NOT MEMORY
  278.  LOCATION $─├). ╫HY $─├? ╘HAT'S ABOVE OUR COLOR MEMORY. ╫HEN WE ARE AT $─┬,
  279.  WE STILL HAVE SOME OF OUR COLOR MEMORY THERE AND NEED TO FILL IT UP WITH
  280.  OUR COLOR NUMBER.
  281.   
  282.  ╘HE NEXT INSTRUCTION IS THE ┬RANCH IF ╬OT ┼QUAL, WHICH AGAIN CHECKS THE
  283.  ZERO FLAG. ╘HIS TIME THE ZERO FLAG WAS SET OR NOT SET ACCORDING TO THE
  284.  OUTCOME OF THE ├O═╨ARE INSTRUCTION AT $├013. ─URING THAT COMPARE IF THE ┴
  285.  REG CONTAINED THE NUMBER $─├ THEN THE ZERO FLAG WAS SET, TELLING THAT THEY
  286.  WERE EQUAL.
  287.   
  288.  ┴ND THE LAST INSTRUCTION IS ╥E╘URN FOR ╙UBROUTINE. ╘HIS IS JUST LIKE THE
  289.  RETURN FOUND IN ┬┴╙╔├. ╫HAT DO WE DO KNOW? ╘HE COMPUTER ASKED ME TO
  290.  ASSEMBLE AN INSTRUCTION AT $├018. ╫E TELL THE ASSEMBLER IN ╙UPERMON THAT WE
  291.  ARE DONE BY A <├╥> ALONE.
  292.   
  293.  ╬OW HOW DO WE RUN THE PROGRAM? ╔T IS IN MEMORY THAT IS NOT DIRECTLY USED BY
  294.  ┬┴╙╔├ AND BESIDES IT IS NOT A ┬┴╙╔├ PROGRAM! ╫ELL, THERE ARE TWO WAYS TO DO
  295.  THAT AT THIS POINT. ╘HE FIRST ONE IS AFTER THE PERIOD TO TYPE '╟'(FOR ╟O)
  296.  AND ├000<├╥>. ╘HAT TELLS ╙UPERMON TO GO TO $├000(WHICH IS WHERE WE PUT OUR
  297.  PROGRAM) AND TRY TO EXECUTE OUR INSTRUCTIONS THERE.(╔ EMPHSIZE TRY BECAUSE
  298.  SOMETIMES TYPING ERRORS DO HAPPEN!).
  299.   
  300.  ╘HE OTHER WAY IS TO EXIT TO ┬┴╙╔├ BY TYPE '╪' AT THE PERIOD, WHICH E╪ITS
  301.  THE  MONITOR AND RETURNS US TO ┬┴╙╔├. ╘HEN '╙┘╙49152'. ╘HIS TELLS ┬┴╙╔├ TO
  302.  TRY TO EXECUTE THE ═╠ PROGRAM WE PUT AT $├000.
  303.   
  304.  ┴ND IF ALL WENT WELL, ALL OF OUR LETTERS ON THE SCREEN WILL TURN WHITE AND
  305.  THE PROMPT '╥┼┴─┘' WILL APEAR(OR A PERIOD IF WE WERE STILL IN ╙UPERMON).
  306.   
  307.  ╫ELL, THAT'S ALOT OT DIGEST AND ╔ HOPE ╔ DIDN'T LOSE ANYONE, BUT IF YOU DID
  308.  GET LOST ALONG SEND ME A NOTE AND ╔ WILL TRY TO SORT IT OUT FOR YOU!
  309.