home *** CD-ROM | disk | FTP | other *** search
- ═ACHINE ╠ANGUAGE ═ADE ┼ASY ! (╨ART 1)
- BY
- ╠YLE ╟IESE
- ─┼╠╨╚╔ ═AIL: ╠┘╠┼╟
-
- ╘HIS IS THE FIRST IN A SERIES OF COLUMNS TO HELP EASE THE
- NEWCOMER INTO THE WORLD OF ═ACHINE ╠ANGUAGE. ╔ AM STILL NOT SURE HOW
- ╔ GOT INTO THIS JOB, BUT ╔ WILL GIVE IT MY BEST!
-
- ╔T IS QUITE HARD TO GET STARTED IN ═ACHINE ╠ANGUAGE PROGRAMING,
- BUT JUST LIKE THE ┬┴╙╔├ IN YOUR FIRST COMPUTER, ONCE YOU KNOW A
- LITTLE ABOUT IT IS NOT THAT DIFFICULT. ╘HIS COLUMN WILL BE BASED
- ON THE 6502 & 6510 MICROPROCESSORS THAT ARE USED IN THE ├OMMODORE 64
- & ╓IC-20, ┴TARI 400-600-800 SERIES MACHINES, AND IN SOME ┴PPLES.
- ╘HE 8500 PROCESSOR IN THE ├-128 IS A DIRECT COUSIN OF THE 6502.
- ┴LL INSTRUCTIONS FOR THE 6502 WILL DO THE SAME THINGS ON THE 8500.
- ╘HE 8500 CAN DO MORE, BUT THAT WILL NOT BE COVERED HERE.
-
- ╔N STARTING OUT WITH ANYTHING THAT IS FOREIGN, IT TAKES TIME TO
- COVER ALL THE TERMINOLGY NEEDED TO UNDERSTAND THE SIMPLEST
- INSTRUCTION. ╙O, THIS MONTH'S COLUMN WILL BE COVERING JUST
- THAT, TERMINOLOGY.
-
- ╔ GOT MY 'TRAINING' IN ═ACHINE ╠ANGUAGE BY FIRST READING
- ╥ICHARD ═ANSFIELD'S BOOK "═ACHINE ╠ANGUAGE FOR ┬EGINNERS".
- ╔T IS, IN MY OPINION, AN EXCELLENT BOOK FOR THE NOVICE. ╔ CANNOT,
- HOWEVER, COMMENT ON HIS SECOND BOOK AS ╔ HAVE NOT READ IT.
-
- ┴ BOOK THAT IS ON THE ═╒╙╘ HAVE LIST FOR THE ├-64 OWNER IS THE
- '╨ROGRAMMERS ╥EFERENCE ╟UIDE' (╨╥╟). ╔T HAS VALUABLE INFORMATION ON
- HOW TO USE THE ╦ERNAL ROUTINES INSIDE THE ├-64. ╠ATER, ╔ HOPE TO
- COVER HOW TO READ THE ╦ERNAL ROUTINE CHARTS IN THE ╨╥╟.
-
- ═EMORY MAPS OF THE COMPUTER YOU ARE USING ARE INVALUABLE! ╘WO
- GOOD ONES FOR THE ├-64 ARE "╘HE ┴NATOMY OF THE ├OMMODORE 64", FROM
- ┴BACUS ╙OFTWARE, AND "═APPING THE ├-64" BY ╙HELDON ╠EEMAN, FROM
- ├OMPUTE! ╨UBLICATIONS. "╘HE ┴NATOMY OF THE ├OMMODORE 64" HAS VERY
- GOOD DISASEMBLIES OF ALL THE ╥╧═ ROUTINES IN THE 64. ╙HELDON'S
- BOOK IS A GOOD REFERENCE FOR THE LOW MEMORY USAGE IN THE 64 AND FOR
- SOME COMMENTS ON ┬┴╙╔├ AND THE ╦┼╥╬┴╠.
-
- ┘OU WILL ALSO NEED A SIMPLE ASSEMBLER AND A SIMPLE DISSAMBLER TO
- USE. ╘HERE ARE GOOD ╨UBLIC ─OMAIN ONES HERE IN THE DATABASE OF THE
- ╞LAGSHIP. ╠ATER, IF YOU WANT TO GET MORE INVOLVED IN ═ACHINE
- ╠ANGUAGE, YOU WILL WANT A MORE COMPLEX ASSEMBLER. ┬UT AGAIN, THAT
- IS A TOPIC FOR FUTURE COLUMN.
-
- ═┼═╧╥┘. ╘HAT IS THE STUFF WE WANT MORE AND MORE OF! ┬UT WHAT IS
- MEMORY? ═EMORY, IN ITS SIMPLEST FORM, IS CALLED A "BIT." ├OMMON
- BELIEF HAS IT THAT THE TERM BIT IS SHORT FOR BINARY DIGIT, AND GOT
- ITS NAME FROM THAT. ┴ BINARY DIGIT HAS ONLY TWO STATES, A ZERO OR
- A ONE. ╬OT MUCH POWER OR INFORMATION CAN BE STORED IN ONE OF TWO
- DIGITS! ┬Y CHAINING THE BITS IN A LOGICAL MANNER, WE CAN USE THEM TO STORE MORE INFORMATION.
-
- ╘HE NEXT BUILDING BLOCK WE USE IS A BYTE. ┴ BYTE IS 8 BITS OF
- MEMORY USED TOGETHER. ╫ITH 8 BITS, WE HAVE 256 DIFFERENT
- COMBINATIONS OF ONE'S AND ZERO'S TO WORK WITH.
-
- ╥ICHARD ═ANSFIELD USED AN EXCELLENT ANALOGY TO EXPLAIN HOW
- MEMORY IS CONFIGURED. ╔MAGINE THE 8 BITS AS 8 LIGHTS IN A HOUSE.
- ╘HE LIGHTS WILL BE ON OR OFF AS THE BITS ARE TURNED ON OR OFF. ╬OW,
- LINE UP NUMBER OF HOUSES IN A ROW DOWN A LONG STREET. ╘HE FIRST
- HOUSE WILL HAVE AN ADDRESS OF ZERO. ╘HE SECOND ONE AN ADDRESS
- OF 1 AND SO ON, UNTIL WE GET TO THE END OF OUR STREET (MEMORY).
- ╧N THE 64 THE END WILL BE AT 64╦. ╘HAT IS NOT 64,000. ┴ ╦
- OF MEMORY IS 1024. ╘HAT NUMBER IS USED PARTLY BECAUSE IT IS A
- FACTOR OF 2 (2 TO THE POWER OF 10). ╘HIS MEANS THE LAST HOUSE IN
- MEMORY WILL HAVE AN ADDRESS OF 65,535 (REMEMBER THAT WE STARTED WITH
- AN ADDRESS OF ZERO). ╥EMEMBER, ╔ SAID THAT A BYTE CAN HOLD 256
- DIFFERENT BIT COMBINATIONS? ╙INCE THAT IS WHAT A BYTE CAN HANDLE,
- MEMORY IS AGAIN DIVIDED INTO 256 BYTE CHUNKS, OR BLOCKS ON OUR STREET,
- CALLED PAGES.
-
- ┌ERO PAGE, BESIDES BEING THE FIRST PAGE, IS SPECIAL. ┬ECAUSE
- THE PAGE IS ZERO, THE MICROPROCCESSOR IS SET UP TO BE ABLE TO ACCESS
- ZERO PAGE FASTER. ╘HE REASON IS THAT IN ORDER TO ACCESS MEMORY WE
- HAVE TO USE THE ADDRESS OF THE BYTE OF MEMORY. ╘HE ADDRESS IS
- DIVIDED INTO TWO BYTES CALLED THE "LEAST SIGNIFICANT BYTE" (╠╙┬)
- AND THE "MOST SIGNIFICANT BYTE" (═╙┬). ╫HEN TALKING ABOUT THE
- BYTES IN ZERO PAGE, THE ═╙┬ WILL BE ZERO. ╙O A SPECIAL SET OF
- INSTRUCTIONS WERE SET UP INSIDE THE 6502 TO WORK WITH ZERO PAGE.
- ╘HESE INSTRUCTIONS WORK FASTER BECAUSE THE PROCESSOR FETCHES ONE
- LESS BYTE IN ORDER TO FIND THE ADDRESS. ╘HAT FACT WAS NOT LOST ON
- ├OMMODORE WHEN THEY DESIGNED THEIR COMPUTERS. ╘HEY MADE HEAVY USE
- OF ZERO PAGE.
-
- ┴NOTHER THING THAT YOU WILL FIND IS THE HEAVY USE OF
- ╚EXIDECIMAL NOTATION. ╘HIS IS A NUMBERING SYSTEM BASED ON 16
- DIGITS INSTEAD OF 10 USED IN DECIMAL THAT WE ARE USED TO.
- ╚EXIDECIMAL, OR HEX FOR SHORT, USES 0-9, AND ┴-╞ FOR ITS DIGITS,
- WITH ┴=10, ┬=11, ETC. ╚EX IS NORMALLY PREFIXED BY A "$" AS $10,
- WHICH IS 16 IN DECIMAL. ╔T IS SOMETIMES WRITTEN AS 10H, BUT THAT IS
- SELDOM SEEN ANYMORE.
-
- ╚EX IS CONVENIENT FOR USE WITH BYTE SIZED MEMORY AS 2 DIGITS
- ARE ALL THAT ARE NEEDED TO SHOW THE MAXIMUM VALUE THAT A BYTE CAN
- HOLD (RANGING FROM $00 TO $╞╞(255)). ╞OUR DIGITS ARE ALL THAT ARE
- NEEDED TO DESIGNATE MEMORY LOCATIONS IN A 64K MACHINE. ╘HAT IS TWO
- BYTES CAN RANGE FROM $0000 TO $╞╞╞╞ ( OR 65,535). ╔ STRONGLY SUGGEST
- THAT YOU BECOME FAMILAR WITH HEX AS IT IS USED OFTEN IN ARTICLES OR
- BOOKS WRITTEN ABOUT ═╠.
-
- ╘HE HEX DESIGNATION FOR MEMORY LOCATIONS CAN BE SPLIT VERY
- EASILY. ╔N THE EXAMPLE ABOVE, $╞╞╞╞, THE ╠╙┬ WILL HOLD $╞╞ AND THE
- ═╙┬ WILL HOLD $╞╞. ╬OTE: THE ═╙┬ ALSO REFERS TO THE PAGE NUMBER
- WHEN TALKING ABOUT MEMORY LOCATIONS.
-
-
- ┴T THIS POINT, YOU HAVE TO KNOW SOMETHING ABOUT WHAT IS INSIDE
- YOUR MICROPROCESSOR. ╘HERE IS A LITTLE ╥ANDOM ┴CCESS ═EMORY (╥┴═)
- AND THE INSTRUCTIONS, CONTAINED IN ╥EAD ╧NLY ═EMORY (╥╧═)-LIKE
- MEMORY.
-
- ╘HE ╥┴═ MEMORY IS DIVIDED INTO 'REGISTERS': THE ┴ REGISTER,
- COMMONLY CALLED THE ┴CCUMLATOR; ╪ REGISTER; ┘ REGISTER] ╙TACK
- ╨OINTER (╙╨); ╨ROGRAM COUNTER (╨├); AND THE ╙TATUS ╥EGISTER (╙╥),
- LSO CALLED THE ╨ REGISTER. ┼ACH REGISTER HAS ITS OWN SPECIAL
- PROPERITIES AND/OR FUNCTIONS THAT ENABLE IT TO DO CERTAIN TASKS THAT
- OTHER REGISTERS CANNOT DO.
-
- ╔ WILL BE USING THE TERM 6502 EVEN THOUGH EVERYTHING
- APPLIES EQUALLY TO THE 6510 AND 8500 UNLESS OTHERWISE NOTED.
-
- ╘HE ┴ REG IS WHERE ALL THE MATH FUNCTIPMS OF THE 6502 ARE DONE.
- ╔N ORDER TO ADD, SUBTRACT, OR DO LOGICAL FUNCTIONS, ONE NUMBER HAS TO
- BE IN THE ACCUMLATOR.
-
- ╘HE ╪ ND ┘ REGISTERS ARE USE FOR INEXING, BUT THEY DO HAVE SOME
- DIFFERENT PROPORTIES. ╘HE DIFFERENCES RE SUBTLE AND ╔ WILL
- COVER THEM IN A LATER COLUMN.
-
- ╘HE ╨├ IS USED TO KEEP TRACK OF WHERE WE ARE IN THE PROGRAM SO
- THAT THE 6502 WILL KNOW WHERE TO GET ITS NEXT INSTRUCTION.
-
- ╘HE ╙╨ IS A POINTER TO THE ╙TACK IN MEMORY. ╘HIS IS USED TO
- STORE THE RETURN ADDRESS WHEN YOU ╩╙╥ (╩UMP WITH ╥ETURN -
- SIMILAR TO ╟╧╙╒┬ IN ┬┴╙╔├). ╘HE STACK MAY ALSO BE USED FOR TEMPORARY
- STORAGE, BUT THIS APPLICAIONT SHOULD BE LEFT TO ADVANCED PROGRAMMERS.
-
- ╘HE ╨ REG, OR ╙TATUS ╥EG, IS USED TO KEEP TRACK OF CERTAIN
- CONDITIONS THAT HAPPENED IN THE LAST OPERATION. ─ID THE
- LAST OPERATION RESULT IN A ZERO RESULT? ─ID THE LAST ADDITION CAUSE
- A CARRY? ─ID THE LAST SUBTRACTION USE A BORROW? ╔N THE ╨ REG,
- 7 FLAGS THAT ARE USED FOR THIS PURPOSE. ╔ WILL COVER THEM IN A LATER
- COLUMN.
-
- ╫ITH AN ARTICLE ON ANYTHING NEW, IT IS VERY HELPFUL TO SHOW A WORKING
- EXAMPLE. ═╠ IS NO EXCEPTION TO THAT RULE. ╔N THIS VAIN ╔ THOUGHT WE WOULD
- DO SOMETHING SIMPLE, CHANGE THE COLOR MEMORY ON THE ├-64. ╔N CASE SOME OF
- YOU HAVE FORGOTTEN IN THE ╓ERSION2 ╦ERNAL ├-64 A CLEAR SCREEN CAUSED THE 64
- TO SET THE BACKGROUND COLOR MEMORY TO THE CURRENT FOREGROUND COLOR. ╙O IF
- THEN YOU WANTED TO POKE TO THE SCREEN, YOU COULDN'T SEE IT AS THE CHARACTER
- WAS THE SAME COLOR AS THE FOREGROUND.
-
- ╫E WOULD NEED TO FILL COLOR MEMORY WITH SOMETHING OTHER THAN THE FOREGROUND
- COLOR. ╧N THE 64 THE DEFAULT FOREGROUND COLOR IS BLUE, WHICH HAS A COLOR
- NUMBER OF 6. ╫E NEED TO CHANGE IT TO SOME OTHER NUMBER. ╫E COULD DO THAT IN
- ┬┴╙╔├ WITH A FOR-NEXT LOOP BUT THAT TAKES MUCH TOO LONG. ╔N ═╠ IT IS A
- SHORT AND SIMPLE OPERATION.
-
- ╫ITH THIS EXAMPLE, ╔ WILL USE THE CONVECTIONS USED WITH ╙UPERMON. ╘HAT
- PROGRAM IS IN THE ╨─ AND WAS INCLUDED ON THE DISK BONUS PACK INSIDE THE
- 1541. ╙O WE WILL START THIS PROJECT BY LOADING AND RUNNING ╙UPERMON(MOST
- OTHER SIMPLE MONITORS USE VERY SIMULAR SYNTAX).
-
- ╘HE FIRST THING YOU WILL SEE IS A STATUS LINE. ╘HAT SHOWS YOU THE CONTENTS
- OF ALL THE 6502 REGISTERS, STARTING WITH THE ╨ROGRAM COUNTER(╨├), ╔╥╤
- VECTOR(THIS ARE THE ROUTINES THAT SERVICE THE KEYBOARD AND ╘╧─ CLOCKS AND
- OTHER THINGS AND OCCURS APPROX EVERY 60TH OF A SECOND), THE ╙TATUS ╥EG(╙╥
- ALSO CALLED THE ╨ REG), THE ┴ REG(OR ┴CCUMLATOR, THE ╪ REG, THE ┘ REG AND
- THE ╙TACK POINTER. ╘HEN A PERIOD ON THE NEXT LINE. ╘HE PERIOD REPLACES THE
- CURSOR.
-
- ╚ERS'S A PRINTOUT OF OUR PROGRAM AND ╔ WILL EXPLAIN.
-
- .┴ ├000 ╠─┘ #$─8
- .┴ ├002 ╙╘┘ $╞╞
- .┴ ├004 ╠─┘ #$00
- .┴ ├004 ╙╘┘ $╞┼
- .┴ ├006 ╙╘┘ $╞┼
- .┴ ├008 ╠─┴ #$00
- .┴ ├00┴ ╙╘┴ ($╞┼),┘
- .┴ ├00├ ╔╬┘
- .┴ ├00─ ┬╬┼ $├00┴
- .┴ ├00╞ ╔╬├ $╞╞
- .┴ ├011 ╠─┴ $╞╞
- .┴ ├013 ├═╨ #$─├
- .┴ ├015 ┬╬┼ $├008
- .┴ ├017 ╥╘╙
- .┴ ├018
-
- ┴FTER THE PERIOD, WE TYPE AN ┴. ╘HIS TELLS THE PROGRAM TO START ASSEMBLING
- WANT WE TYPE IN. ╬EXT WE TYPE IN THE STARTING ADDRESS IN ╚┼╪. ╔N THIS
- EXAMPLE WE USE $├000, WHICH IS 49152 DECIMAL. ╘HIS A FREE ZONE THAT ┬┴╙╔├
- DOES USE AND IS QUITE FREQUENTLY USED FOR ═╠ SUBROUTINES AND PROGRAMS, LIKE
- ├┬═'S ╫EDGE PROGRAM.
-
- ╬EXT(WE ARE STILL ON THE FIRST LINE) WE TYPE IN THE MNEMONIC FOR THE
- INSTRUCTION WE WANT EXICUTED. ╔N THIS CASE THE ╧P CODE IS ╠─┘ WHICH MEANS
- ╠OA─ THE ┘ REG. ╘HE #$─8 IS CALLED THE ARUGMENT. ╘HE '#' USE THE NUMBER
- THAT FOLLOWS(AS OPPSED TO TREATING IT AS AN ADDRESS). ╙O IT IS TELLING US
- TO ╠OA─ THE ┘ REG WITH THE NUMBER $─8. ╘HIS METHOD OF ADRESSING IS CALLED
- IMMEDIATE. ╬OW WE PRESS THE <├╥> AND YOU HAVE PUT YOUR FIRST INSTRUCTION
- INTO MEMORY!
-
- ┴FTER THE <├╥> THE COMPUTER WILL RESPOND WITH '.┴ ├002'. ┴FTER YOU GIVE THE
- ASSEMBLER THE START ADDRESS IT WILL FIGURE OUT WHERE THE NEXT INSTRUCTION
- GOES FOR YOU. ╔F THIS WAS THE END OF THE PROGRAM WE WOULD JUST ANSWER BY
- TYPING A <├╥>.
-
- ╘HE SECOND OP CODE IS ╙TORE ╘HE ┘ REG. ╬OW ALL THE STORE AND LOAD
- INSTRUCTIONS ACTUALLY COPY THE INFORMATION FROM ONE PLACE TO ANOTHER
- WITHOUT DESTROYING THE ORIGNAL. ╙O IN THIS CASE (WITHOUT THE '#' MEANS THAT
- WE TREAT THE ARGUMENT AS AN ADDRE
- SS) WE WILL STORE (OR COPY) THE CONTENTS
- OF THE ┘ REG INTO MEMORY LOCATION $╞┼. ┬Y THE WAY THIS ADDRESSING MODE IS
- CALLED ZERO PAGE ABSOLUTE, ABSOLUTE BECAUSE WE ARE SPECIFING THE EXACT
- ADRESS TO USE AND ZERO PAGE BECAUSE THE ADDRESS IS IN ZERO PAGE.
-
- ╘HE NEXT TWO INSTRUCTIONS ARE THE SAME AS ABOVE EXCEPT WE WILL PUT $00 INTO
- MEMORY LOCATION $╞┼. ╔N CASE YOU HAVE NOT NOTICED WE HAVE PUT ADDRESS $─800
- INTO $╞┼ & $╞╞. ╘HE ADRESS $─800 IS THE START OF COLOR MEMORY AT 55296
- DECIMAL.
-
- ┬UT ╚┼┘ ╫AIT ┴ ═INUTE!!! ─IDN'T YOU JUST PUT THE ADRESS IN BACKWARDS?? ┘ES
- WE DID BUT THAT IS THE WAY THE 6502 EXPECTS TO FIND ALL OF ITS ADRESS. ╠╙┬
- FIRST THEN THE ═╙┬. ╔ DON'T KNOW WHY BUT THAT IS THE WAY IT IS IN THE 6502,
- ADRESSES ARE STORED IN MEMORY BACKWARDS.
-
- ╘HE NEXT INSTRUCTION TELLS US TO ╠OA─ THE ┴ REG WITH SOMETHING. ╘HE
- ARGUMENT TELLS WHAT. ╔N THIS CASE THE '#' AGAIN TELLS US TO USE THIS NUMBER
- AND NOT TREAT IT AS AN ADDRESS. ┬Y THE WAY THIS IS CALLED THE IMMEDIATE
- ADDRESSING MODE. ╙O WE PUT THE NUMBER $01 INTO THE ┴ REG, WHICH IS THE
- COLOR NUMBER FOR WHITE. ┬Y CHANGING THIS NUMBER WE COULD FILL COLOR MEMORY
- WITH ANY OF THE 16(0-15) COLORS.
-
- ╬OW WE WANT TO PUT THE COLOR NUMBER INTO THE COLOR MEMORY. ╘HIS NEXT
- INSTRUCTION DOES THAT FOR US. ╫E ARE GOING TO ╙╘ORE THE ┴ REG, BUT WHERE?
- ╫ELL, THE PRENTHASIS AROUND THE $╞┼ TELLS US THAT $╞┼ IS NOT THE TARGET
- ADRESS BUT THAT WE WILL FIND THE TARGET CONTAINED IN MEMORY LOCATIONS $╞┼ &
- $╞╞(WHICH WE SET TO $─800 EARLIER).
-
- ╬OW WHAT DO WE DO WITH THE ',┘"? ╫E TAKE THE ADRESS FOUND AT $╞┼ & $╞╞(
- $─800) AND ADD THE ┘ REG TO IT. ╘HE FIRST TIME THROUGH THIS ROUTINE THE ┘
- REG CONTAINS $00. ╙O WE WILL ╙╘ORE THE ┴ REG AT $─800+0 OR AT $─800. ╘HIS
- IS A VERY USEFUL ADRESSING MODE CALLED INDIRECT ┘, YOU WILL USE IT OFTEN!
-
- ╔N THE NEXT INSTRUCTION, WE ╔╬CREMENT THE ┘ REG OR ADD 1 TO IT. ╘HIS
- ADRESSING MODE IS CALLED IMPLIED. ╔ GUESS IT GOT ITS NAME BECAUSE THE
- ARGUMENT DOES NOT NEED TO BE SPECIFIED OR IS IMPLIED.
-
- ╘HE NEXT INSTRUCTION IS AN IMPORTANT ONE. ╔T STANDS FOR ┬RANCH IF ╬OT
- ┼QUAL. ╬OT EQUAL TO WHAT? ╫ELL THE INSTRUCTION CHECKS THE ┌ERO FLAG IN THE
- ╙TATUS REG. ╫HEN THE PREVIOUS INSTRUCTION (IN THIS CASE ╔╬┘) RESULTS IN A
- ZERO RESULT OR EQUALS THE ZERO FLAG IS SET IN THE ╙TATUS REG. ╔F WE JUST
- KEEP INCREMENT THE ┘ REG, HOW WILL THAT EVER BE EQUAL TO ZERO?
-
- ╟OOD QUESTION! ┼ARLIER IN THIS COLUMN ╔ STATED THAT A BYTE COULD ONLY HOLD
- A NUMBER FROM $00-$╞╞(255). ╘HE REGISTERS IN THE 6502 ARE ONLY 1 BYTE LONG,
- EXCEPT THE ╨├ WHICH IS 2 BYTES LONG. ╙O WHAT HAPPENS WHEN THE ┘ REG HOLDS
- $╞╞(255) AND WE INCREMENT OR ADD ONE TO IT? ╔T CANN'T HOLD A BIGGER NUMBER,
- SO IT ROLLS OVER TO $00, BUT WHEN THAT HAPPENS IT SETS THE ZERO FLAG IN THE
- ╙TATUS REG.
-
- ┬ACK TO THE INSTRUCTION ┬RANCH IF ╬OT ┼QUAL TO ZERO. ╔F THE ┘ REG IS NOT
- ZERO THEN WE GO BACK TO $├00┴. ╬OW THE ┘ REG HOLDS A $01 AND WE WILL ADD
- THE ADDRESS FOUND AT $╞┼-$╞╞ TO THE CONTENTS OF THE ┘ REG AND GET $─800+1
- OR $─801. ╙O THE CONTENTS OF THE ┴ REG IS NOW COPYED INTO $─801 OR THE
- SECOND BYTE IN COLOR MEMORY.
-
- ╘HIS OF COURSE CONTINUES UNTIL THE ┘ REG ROLLS OVER TO ZERO. ╘HEN YOU FALL
- THROUGH TO $├00╞. ╘HE INSTRUCTION THERE IS ╔╬├REMENT (NO '#') THE NUMBER IN
- MEMORY LOCATION $╞╞. ╘HEN WE WILL ╠OA─ THE ┴ REG WITH THAT VALUE. ╘HE FIRST
- TIME WE HIT THIS WE WILL BE GOING FROM $─8 TO $─9.
-
- ╬OW THAT WE HAVE THAT VALUE IN THE ┴ REG WE CAN ├O═╨ARE IT TO SOMETHING, (
- ╬OTE THE '#' WHICH MEANS THAT WE COMPARE TO THE NUMBER $─├ NOT MEMORY
- LOCATION $─├). ╫HY $─├? ╘HAT'S ABOVE OUR COLOR MEMORY. ╫HEN WE ARE AT $─┬,
- WE STILL HAVE SOME OF OUR COLOR MEMORY THERE AND NEED TO FILL IT UP WITH
- OUR COLOR NUMBER.
-
- ╘HE NEXT INSTRUCTION IS THE ┬RANCH IF ╬OT ┼QUAL, WHICH AGAIN CHECKS THE
- ZERO FLAG. ╘HIS TIME THE ZERO FLAG WAS SET OR NOT SET ACCORDING TO THE
- OUTCOME OF THE ├O═╨ARE INSTRUCTION AT $├013. ─URING THAT COMPARE IF THE ┴
- REG CONTAINED THE NUMBER $─├ THEN THE ZERO FLAG WAS SET, TELLING THAT THEY
- WERE EQUAL.
-
- ┴ND THE LAST INSTRUCTION IS ╥E╘URN FOR ╙UBROUTINE. ╘HIS IS JUST LIKE THE
- RETURN FOUND IN ┬┴╙╔├. ╫HAT DO WE DO KNOW? ╘HE COMPUTER ASKED ME TO
- ASSEMBLE AN INSTRUCTION AT $├018. ╫E TELL THE ASSEMBLER IN ╙UPERMON THAT WE
- ARE DONE BY A <├╥> ALONE.
-
- ╬OW HOW DO WE RUN THE PROGRAM? ╔T IS IN MEMORY THAT IS NOT DIRECTLY USED BY
- ┬┴╙╔├ AND BESIDES IT IS NOT A ┬┴╙╔├ PROGRAM! ╫ELL, THERE ARE TWO WAYS TO DO
- THAT AT THIS POINT. ╘HE FIRST ONE IS AFTER THE PERIOD TO TYPE '╟'(FOR ╟O)
- AND ├000<├╥>. ╘HAT TELLS ╙UPERMON TO GO TO $├000(WHICH IS WHERE WE PUT OUR
- PROGRAM) AND TRY TO EXECUTE OUR INSTRUCTIONS THERE.(╔ EMPHSIZE TRY BECAUSE
- SOMETIMES TYPING ERRORS DO HAPPEN!).
-
- ╘HE OTHER WAY IS TO EXIT TO ┬┴╙╔├ BY TYPE '╪' AT THE PERIOD, WHICH E╪ITS
- THE MONITOR AND RETURNS US TO ┬┴╙╔├. ╘HEN '╙┘╙49152'. ╘HIS TELLS ┬┴╙╔├ TO
- TRY TO EXECUTE THE ═╠ PROGRAM WE PUT AT $├000.
-
- ┴ND IF ALL WENT WELL, ALL OF OUR LETTERS ON THE SCREEN WILL TURN WHITE AND
- THE PROMPT '╥┼┴─┘' WILL APEAR(OR A PERIOD IF WE WERE STILL IN ╙UPERMON).
-
- ╫ELL, THAT'S ALOT OT DIGEST AND ╔ HOPE ╔ DIDN'T LOSE ANYONE, BUT IF YOU DID
- GET LOST ALONG SEND ME A NOTE AND ╔ WILL TRY TO SORT IT OUT FOR YOU!
-