ASM TUT
FILE INFORMATION
FILENAME(S): ASM TUT
FILE TYPE(S): PRG
FILE SIZE: 13.1K
FIRST SEEN: 2025-10-19 22:49:24
APPEARS ON: 1 disk(s)
FILE HASH
7fc24dcaa5f1594101925a98428e700f5c84a4eea9813ee66eb93f0121aecb37
FOUND ON DISKS (1 DISKS)
| DISK TITLE | FILENAME | FILE TYPE | COLLECTION | TRACK | SECTOR | ACTIONS |
|---|---|---|---|---|---|---|
| GOLD DISK JAN86 | ASM TUT | PRG | Radd Maxx | 10 | 0 | DOWNLOAD FILE |
FILE CONTENT & ANALYSIS
00000000: 6A 6B 5E 0D 0D 20 20 61 4E 20 69 4E 54 52 4F 44 |jk^.. aN iNTROD|
00000010: 55 43 54 49 4F 4E 20 54 4F 20 6D 41 43 48 49 4E |UCTION TO mACHIN|
00000020: 45 20 6C 41 4E 47 55 41 47 45 0D 0D 20 20 74 48 |E lANGUAGE.. tH|
00000030: 49 53 20 49 53 20 54 48 45 20 54 48 49 52 44 20 |IS IS THE THIRD |
00000040: 49 4E 20 41 20 53 45 52 49 45 53 20 4F 46 20 20 |IN A SERIES OF |
00000050: 20 20 20 20 54 55 54 4F 52 49 41 4C 53 20 4F 4E | TUTORIALS ON|
00000060: 20 4D 41 43 48 49 4E 45 20 4C 41 4E 47 55 41 47 | MACHINE LANGUAG|
00000070: 45 2E 20 74 48 45 20 46 49 52 53 54 54 57 4F 20 |E. tHE FIRSTTWO |
00000080: 43 4F 56 45 52 45 44 20 54 48 45 20 43 4F 4E 43 |COVERED THE CONC|
00000090: 45 50 54 20 4F 46 20 41 4E 20 41 53 53 45 4D 42 |EPT OF AN ASSEMB|
000000A0: 4C 45 52 20 41 4E 44 20 4D 41 4E 59 20 4F 46 20 |LER AND MANY OF |
000000B0: 54 48 45 20 41 53 53 45 4D 42 4C 59 2D 4C 41 4E |THE ASSEMBLY-LAN|
000000C0: 47 55 41 47 45 20 36 35 31 30 20 20 49 4E 53 54 |GUAGE 6510 INST|
000000D0: 52 55 43 54 49 4F 4E 53 2C 20 41 50 50 4C 49 43 |RUCTIONS, APPLIC|
000000E0: 41 42 4C 45 20 54 4F 20 41 4E 59 20 43 4F 4D 50 |ABLE TO ANY COMP|
000000F0: 55 54 45 52 57 48 49 43 48 20 55 53 45 53 20 54 |UTERWHICH USES T|
00000100: 48 45 20 36 35 31 30 20 4F 52 20 36 35 30 32 20 |HE 6510 OR 6502 |
00000110: 63 70 75 2E 20 20 20 20 20 20 20 20 6B 4E 4F 57 |cpu. kNOW|
00000120: 4C 45 44 47 45 20 4F 46 20 42 49 4E 41 52 59 20 |LEDGE OF BINARY |
00000130: 41 4E 44 20 48 45 58 20 49 53 20 41 53 53 55 4D |AND HEX IS ASSUM|
00000140: 45 44 2E 0D 0D 20 20 74 48 49 53 20 49 4E 53 54 |ED... tHIS INST|
00000150: 41 4C 4D 45 4E 54 20 57 49 4C 4C 20 43 4F 56 45 |ALMENT WILL COVE|
00000160: 52 20 53 4F 4D 45 20 4F 54 48 45 52 2C 4C 45 53 |R SOME OTHER,LES|
00000170: 53 20 43 4F 4D 4D 4F 4E 20 49 4E 53 54 52 55 43 |S COMMON INSTRUC|
00000180: 54 49 4F 4E 53 2C 20 53 4F 4D 45 20 54 45 43 48 |TIONS, SOME TECH|
00000190: 4E 49 43 41 4C 44 45 54 41 49 4C 53 2C 20 41 4E |NICALDETAILS, AN|
000001A0: 44 20 48 4F 57 20 54 4F 20 55 53 45 20 62 41 53 |D HOW TO USE bAS|
000001B0: 49 43 20 46 55 4E 43 54 49 4F 4E 53 20 28 4C 49 |IC FUNCTIONS (LI|
000001C0: 4B 45 20 70 72 69 6E 74 2C 69 6E 70 75 74 29 20 |KE print,input) |
000001D0: 46 52 4F 4D 20 6D 6C 2E 0D 0D 20 20 61 4E 59 54 |FROM ml... aNYT|
000001E0: 48 49 4E 47 20 49 4E 20 5B 53 51 55 41 52 45 20 |HING IN [SQUARE |
000001F0: 42 52 41 43 4B 45 54 53 5D 20 49 53 20 54 48 45 |BRACKETS] IS THE|
00000200: 20 20 4E 41 4D 45 20 4F 46 20 41 20 50 49 45 43 | NAME OF A PIEC|
00000210: 45 20 4F 46 20 49 4E 46 4F 52 4D 41 54 49 4F 4E |E OF INFORMATION|
00000220: 20 28 41 20 4E 55 4D 42 45 52 4F 52 20 42 49 54 | (A NUMBEROR BIT|
00000230: 20 4F 46 20 50 52 4F 47 52 41 4D 29 20 57 48 49 | OF PROGRAM) WHI|
00000240: 43 48 20 48 41 53 20 42 45 45 4E 20 4C 45 46 54 |CH HAS BEEN LEFT|
00000250: 20 20 4F 55 54 20 46 4F 52 20 54 48 45 20 53 41 | OUT FOR THE SA|
00000260: 4B 45 20 4F 46 20 43 4C 41 52 49 54 59 20 41 4E |KE OF CLARITY AN|
00000270: 44 20 42 52 45 56 49 54 59 2E 73 4F 4D 45 54 48 |D BREVITY.sOMETH|
00000280: 49 4E 47 20 4D 55 53 54 20 54 41 4B 45 20 49 54 |ING MUST TAKE IT|
00000290: 53 20 50 4C 41 43 45 20 54 4F 20 4D 41 4B 45 20 |S PLACE TO MAKE |
000002A0: 41 20 57 4F 52 4B 49 4E 47 20 6D 6C 20 50 52 4F |A WORKING ml PRO|
000002B0: 47 52 41 4D 2E 0D 0D 5E 0D 20 20 20 20 20 20 20 |GRAM...^. |
000002C0: 20 72 45 56 49 45 57 20 4F 46 20 70 41 52 54 20 | rEVIEW OF pART |
000002D0: 32 0D 0D 20 20 69 54 20 49 53 20 41 53 53 55 4D |2.. iT IS ASSUM|
000002E0: 45 44 20 54 48 41 54 20 59 4F 55 20 4B 4E 4F 57 |ED THAT YOU KNOW|
000002F0: 20 54 48 49 53 3A 0D 0D 20 20 36 35 31 30 20 6D | THIS:.. 6510 m|
00000300: 6C 20 69 4E 53 54 52 55 43 54 49 4F 4E 53 3A 0D |l iNSTRUCTIONS:.|
00000310: 74 41 58 2C 20 54 58 41 2C 20 54 41 59 20 26 20 |tAX, TXA, TAY & |
00000320: 54 59 41 3B 20 4C 44 41 2C 20 4C 44 58 2C 20 4C |TYA; LDA, LDX, L|
00000330: 44 59 2C 20 53 54 41 2C 53 54 58 20 26 20 53 54 |DY, STA,STX & ST|
00000340: 59 3B 20 41 44 43 2C 20 53 42 43 2C 20 43 4C 43 |Y; ADC, SBC, CLC|
00000350: 20 26 20 53 45 43 3B 20 42 43 43 2C 20 20 20 20 | & SEC; BCC, |
00000360: 42 43 53 2C 20 42 45 51 2C 20 42 4E 45 2C 20 42 |BCS, BEQ, BNE, B|
00000370: 4D 49 2C 20 42 50 4C 2C 20 42 56 53 2C 20 26 20 |MI, BPL, BVS, & |
00000380: 42 56 43 3B 20 20 20 20 43 4D 50 3B 20 49 4E 58 |BVC; CMP; INX|
00000390: 2C 20 49 4E 59 2C 20 44 45 58 20 26 20 44 45 59 |, INY, DEX & DEY|
000003A0: 3B 20 4A 4D 50 2C 20 4A 53 52 2C 20 52 54 53 2C |; JMP, JSR, RTS,|
000003B0: 41 4E 44 20 4A 55 4D 50 20 20 49 4E 44 49 52 45 |AND JUMP INDIRE|
000003C0: 43 54 20 5B 45 2E 47 2E 20 4A 4D 50 28 24 30 33 |CT [E.G. JMP($03|
000003D0: 30 36 29 5D 2E 0D 0D 20 20 61 44 44 52 45 53 53 |06)]... aDDRESS|
000003E0: 49 4E 47 20 6D 4F 44 45 53 3A 0D 69 4D 4D 45 44 |ING mODES:.iMMED|
000003F0: 49 41 54 45 3B 20 41 42 53 4F 4C 55 54 45 3B 20 |IATE; ABSOLUTE; |
00000400: 5A 45 52 4F 20 50 41 47 45 3B 20 20 20 20 20 20 |ZERO PAGE; |
00000410: 20 20 20 41 42 53 4F 4C 55 54 45 2C 58 3B 20 41 | ABSOLUTE,X; A|
00000420: 42 53 4F 4C 55 54 45 2C 59 3B 20 5A 45 52 4F 20 |BSOLUTE,Y; ZERO |
00000430: 50 41 47 45 2C 58 3B 20 20 20 20 49 4E 44 49 52 |PAGE,X; INDIR|
00000440: 45 43 54 2C 59 3B 20 49 4E 44 49 52 45 43 54 2C |ECT,Y; INDIRECT,|
00000450: 58 3B 20 41 4E 44 20 52 45 4C 41 54 49 56 45 2E |X; AND RELATIVE.|
00000460: 0D 0D 20 20 36 35 31 30 20 53 54 41 54 55 53 20 |.. 6510 STATUS |
00000470: 46 4C 41 47 53 2C 20 45 53 50 45 43 49 41 4C 4C |FLAGS, ESPECIALL|
00000480: 59 3A 0D 63 20 28 63 41 52 52 59 29 2C 20 7A 20 |Y:.c (cARRY), z |
00000490: 28 7A 45 52 4F 29 2C 20 76 20 28 4F 76 45 52 46 |(zERO), v (OvERF|
000004A0: 4C 4F 57 29 2C 20 20 20 20 20 20 41 4E 44 20 6E |LOW), AND n|
000004B0: 20 28 6E 45 47 41 54 49 56 45 29 2E 0D 0D 20 20 | (nEGATIVE)... |
000004C0: 6E 45 47 41 54 49 56 45 20 4E 55 4D 42 45 52 53 |nEGATIVE NUMBERS|
000004D0: 20 49 4E 20 42 49 4E 41 52 59 2E 0D 0D 5E 0D 0D | IN BINARY...^..|
000004E0: 20 20 20 20 20 62 49 54 2D 4D 41 4E 49 50 55 4C | bIT-MANIPUL|
000004F0: 41 54 49 4F 4E 20 69 4E 53 54 52 55 43 54 49 4F |ATION iNSTRUCTIO|
00000500: 4E 53 0D 0D 20 20 61 4C 54 48 4F 55 47 48 20 59 |NS.. aLTHOUGH Y|
00000510: 4F 55 20 4E 4F 57 20 4B 4E 4F 57 20 48 4F 57 20 |OU NOW KNOW HOW |
00000520: 54 4F 20 41 44 44 2C 20 20 20 20 20 53 55 42 54 |TO ADD, SUBT|
00000530: 52 41 43 54 2C 20 43 4F 4D 50 41 52 45 20 41 4E |RACT, COMPARE AN|
00000540: 44 20 4D 4F 56 45 20 42 59 54 45 53 20 41 53 20 |D MOVE BYTES AS |
00000550: 41 20 20 20 57 48 4F 4C 45 2C 20 54 48 49 53 20 |A WHOLE, THIS |
00000560: 49 4E 53 54 41 4C 4D 45 4E 54 20 57 49 4C 4C 20 |INSTALMENT WILL |
00000570: 53 54 41 52 54 20 57 49 54 48 20 20 54 48 45 20 |START WITH THE |
00000580: 49 4E 53 54 52 55 43 54 49 4F 4E 53 20 55 53 45 |INSTRUCTIONS USE|
00000590: 44 20 54 4F 20 4D 41 4E 49 50 55 4C 41 54 45 20 |D TO MANIPULATE |
000005A0: 54 48 45 20 49 4E 44 49 56 49 44 55 41 4C 20 42 |THE INDIVIDUAL B|
000005B0: 49 54 53 20 57 49 54 48 49 4E 20 41 20 42 59 54 |ITS WITHIN A BYT|
000005C0: 45 2E 20 74 48 45 20 46 49 52 53 54 4F 46 20 54 |E. tHE FIRSTOF T|
000005D0: 48 45 53 45 20 49 4E 53 54 52 55 43 54 49 4F 4E |HESE INSTRUCTION|
000005E0: 53 20 41 52 45 3A 0D 0D 6D 6C 20 20 62 41 53 49 |S ARE:..ml bASI|
000005F0: 43 20 65 58 50 4C 41 4E 41 54 49 4F 4E 0D 0D 61 |C eXPLANATION..a|
00000600: 4E 44 20 20 61 6E 64 20 20 6C 4F 47 49 43 41 4C |ND and lOGICAL|
00000610: 20 61 6E 64 2E 0D 6F 52 41 20 20 6F 72 20 20 20 | and..oRA or |
00000620: 6C 4F 47 49 43 41 4C 20 6F 72 2E 20 28 22 6F 72 |lOGICAL or. ("or|
00000630: 20 61 43 43 55 4D 55 4C 41 54 4F 52 22 29 65 4F | aCCUMULATOR")eO|
00000640: 52 20 20 20 20 20 20 20 6C 4F 47 49 43 41 4C 20 |R lOGICAL |
00000650: 22 65 58 43 4C 55 53 49 56 45 20 6F 72 22 2E 0D |"eXCLUSIVE or"..|
00000660: 0D 6E 4F 54 45 3A 20 65 4F 52 20 48 41 53 20 4E |.nOTE: eOR HAS N|
00000670: 4F 20 62 41 53 49 43 20 45 51 55 49 56 41 4C 45 |O bASIC EQUIVALE|
00000680: 4E 54 2E 0D 0D 20 20 62 45 43 41 55 53 45 20 54 |NT... bECAUSE T|
00000690: 48 45 59 20 41 52 45 20 4E 4F 54 20 4F 46 54 45 |HEY ARE NOT OFTE|
000006A0: 4E 20 55 53 45 44 20 54 48 49 53 20 20 57 41 59 |N USED THIS WAY|
000006B0: 2C 20 54 48 45 20 62 41 53 49 43 20 45 51 55 49 |, THE bASIC EQUI|
000006C0: 56 41 4C 45 4E 54 53 20 4D 41 59 20 42 45 20 20 |VALENTS MAY BE |
000006D0: 20 20 20 20 20 4D 49 53 4C 45 41 44 49 4E 47 20 | MISLEADING |
000006E0: 49 46 20 59 4F 55 20 4D 41 59 20 48 41 56 45 20 |IF YOU MAY HAVE |
000006F0: 4F 4E 4C 59 20 55 53 45 44 0D 54 48 45 4D 20 57 |ONLY USED.THEM W|
00000700: 49 54 48 20 69 66 20 28 45 47 20 69 66 20 61 3D |ITH if (EG if a=|
00000710: 30 20 61 6E 64 20 62 3D 30 20 74 68 65 6E 2E 2E |0 and b=0 then..|
00000720: 29 2E 5E 0D 0D 20 20 62 49 54 2D 4D 41 4E 49 50 |).^.. bIT-MANIP|
00000730: 55 4C 41 54 49 4F 4E 20 69 4E 53 54 52 55 43 54 |ULATION iNSTRUCT|
00000740: 49 4F 4E 53 20 28 63 4F 4E 54 27 44 29 0D 20 20 |IONS (cONT'D). |
00000750: 74 48 45 53 45 20 43 4F 4D 4D 41 4E 44 53 20 54 |tHESE COMMANDS T|
00000760: 41 4B 45 20 54 57 4F 20 42 59 54 45 53 20 28 4F |AKE TWO BYTES (O|
00000770: 4E 45 20 49 4E 20 54 48 45 20 41 43 43 55 4D 55 |NE IN THE ACCUMU|
00000780: 4C 41 54 4F 52 20 41 4E 44 20 41 4E 4F 54 48 45 |LATOR AND ANOTHE|
00000790: 52 20 53 50 45 43 49 46 49 45 44 20 42 59 4F 4E |R SPECIFIED BYON|
000007A0: 45 20 4F 46 20 54 48 45 20 41 44 44 52 45 53 53 |E OF THE ADDRESS|
000007B0: 49 4E 47 20 4D 4F 44 45 53 29 2C 20 41 4E 44 20 |ING MODES), AND |
000007C0: 41 50 50 4C 59 20 41 20 52 55 4C 45 20 54 4F 20 |APPLY A RULE TO |
000007D0: 43 4F 52 52 45 53 50 4F 4E 44 49 4E 47 20 42 49 |CORRESPONDING BI|
000007E0: 54 53 20 54 4F 20 50 52 4F 44 55 43 45 20 54 48 |TS TO PRODUCE TH|
000007F0: 45 20 42 49 54 53 20 4F 46 20 41 20 52 45 53 55 |E BITS OF A RESU|
00000800: 4C 54 20 42 59 54 45 2C 20 4C 45 46 54 20 49 4E |LT BYTE, LEFT IN|
00000810: 20 54 48 45 20 20 41 43 43 55 4D 55 4C 41 54 4F | THE ACCUMULATO|
00000820: 52 2E 20 74 48 45 53 45 20 52 55 4C 45 53 20 41 |R. tHESE RULES A|
00000830: 52 45 3A 0D 0D 61 4E 44 3A 20 69 46 20 41 20 47 |RE:..aND: iF A G|
00000840: 49 56 45 4E 20 42 49 54 20 49 4E 20 42 59 54 45 |IVEN BIT IN BYTE|
00000850: 20 31 20 61 6E 64 20 54 48 45 20 20 20 20 20 20 | 1 and THE |
00000860: 20 20 43 4F 52 52 45 53 50 4F 4E 44 49 4E 47 20 | CORRESPONDING |
00000870: 42 49 54 20 49 4E 20 42 59 54 45 20 32 20 49 53 |BIT IN BYTE 2 IS|
00000880: 20 53 45 54 2C 20 20 20 20 20 54 48 45 20 42 49 | SET, THE BI|
00000890: 54 20 49 4E 20 54 48 45 20 52 45 53 55 4C 54 20 |T IN THE RESULT |
000008A0: 49 53 20 53 45 54 2E 0D 6F 52 41 3A 20 69 46 20 |IS SET..oRA: iF |
000008B0: 41 20 47 49 56 45 4E 20 42 49 54 20 49 4E 20 42 |A GIVEN BIT IN B|
000008C0: 59 54 45 20 31 20 6F 72 20 54 48 45 20 20 20 20 |YTE 1 or THE |
000008D0: 20 20 20 20 20 43 4F 52 52 45 53 50 4F 4E 44 49 | CORRESPONDI|
000008E0: 4E 47 20 42 49 54 20 49 4E 20 42 59 54 45 20 32 |NG BIT IN BYTE 2|
000008F0: 2C 20 6F 72 20 20 20 20 20 20 20 20 20 62 6F 74 |, or bot|
00000900: 68 2C 20 49 53 20 53 45 54 2C 20 54 48 45 20 42 |h, IS SET, THE B|
00000910: 49 54 20 49 4E 20 54 48 45 20 52 45 53 55 4C 54 |IT IN THE RESULT|
00000920: 20 20 20 20 20 49 53 20 53 45 54 2E 0D 65 4F 52 | IS SET..eOR|
00000930: 3A 20 69 46 20 41 20 47 49 56 45 4E 20 42 49 54 |: iF A GIVEN BIT|
00000940: 20 49 4E 20 42 59 54 45 20 31 20 6F 72 20 54 48 | IN BYTE 1 or TH|
00000950: 45 20 20 20 20 20 20 20 20 20 43 4F 52 52 45 53 |E CORRES|
00000960: 50 4F 4E 44 49 4E 47 20 42 49 54 20 49 4E 20 42 |PONDING BIT IN B|
00000970: 59 54 45 20 32 2C 20 62 75 74 20 20 20 20 20 20 |YTE 2, but |
00000980: 20 20 6E 6F 74 20 62 6F 74 68 2C 20 49 53 20 53 | not both, IS S|
00000990: 45 54 2C 20 54 48 45 20 42 49 54 20 49 4E 20 54 |ET, THE BIT IN T|
000009A0: 48 45 20 20 20 20 20 20 20 20 52 45 53 55 4C 54 |HE RESULT|
000009B0: 20 49 53 20 53 45 54 2E 0D 5E 0D 0D 20 20 62 49 | IS SET..^.. bI|
000009C0: 54 2D 4D 41 4E 49 50 55 4C 41 54 49 4F 4E 20 69 |T-MANIPULATION i|
000009D0: 4E 53 54 52 55 43 54 49 4F 4E 53 20 28 63 4F 4E |NSTRUCTIONS (cON|
000009E0: 54 27 44 29 0D 20 20 68 45 52 45 20 41 52 45 20 |T'D). hERE ARE |
000009F0: 53 4F 4D 45 20 45 58 41 4D 50 4C 45 53 20 55 53 |SOME EXAMPLES US|
00000A00: 49 4E 47 20 33 20 41 4E 44 20 36 3A 0D 0D 61 4E |ING 3 AND 6:..aN|
00000A10: 44 3A 20 20 25 30 30 30 30 30 30 31 31 20 28 33 |D: %00000011 (3|
00000A20: 29 20 20 20 20 20 30 20 61 6E 64 20 30 20 3D 20 |) 0 and 0 = |
00000A30: 30 0D 20 20 20 20 20 20 25 30 30 30 30 30 31 31 |0. %0000011|
00000A40: 30 20 28 36 29 20 20 20 20 20 30 20 61 6E 64 20 |0 (6) 0 and |
00000A50: 31 20 3D 20 30 0D 20 20 20 20 20 20 2D 2D 2D 2D |1 = 0. ----|
00000A60: 2D 2D 2D 2D 2D 20 20 20 20 20 20 20 20 20 31 20 |----- 1 |
00000A70: 61 6E 64 20 30 20 3D 20 30 0D 20 20 20 20 20 20 |and 0 = 0. |
00000A80: 25 30 30 30 30 30 30 31 30 20 28 32 29 20 20 20 |%00000010 (2) |
00000A90: 20 20 31 20 61 6E 64 20 31 20 3D 20 31 0D 0D 0D | 1 and 1 = 1...|
00000AA0: 6F 52 3A 20 20 20 25 30 30 30 30 30 30 31 31 20 |oR: %00000011 |
00000AB0: 28 33 29 20 20 20 20 20 30 20 6F 72 20 30 20 3D |(3) 0 or 0 =|
00000AC0: 20 30 0D 20 20 20 20 20 20 25 30 30 30 30 30 31 | 0. %000001|
00000AD0: 31 30 20 28 36 29 20 20 20 20 20 30 20 6F 72 20 |10 (6) 0 or |
00000AE0: 31 20 3D 20 31 0D 20 20 20 20 20 20 2D 2D 2D 2D |1 = 1. ----|
00000AF0: 2D 2D 2D 2D 2D 20 20 20 20 20 20 20 20 20 31 20 |----- 1 |
00000B00: 6F 72 20 30 20 3D 20 31 0D 20 20 20 20 20 20 25 |or 0 = 1. %|
00000B10: 30 30 30 30 30 31 31 31 20 28 37 29 20 20 20 20 |00000111 (7) |
00000B20: 20 31 20 6F 72 20 31 20 3D 20 31 0D 0D 0D 65 4F | 1 or 1 = 1...eO|
00000B30: 52 3A 20 20 25 30 30 30 30 30 30 31 31 20 28 33 |R: %00000011 (3|
00000B40: 29 20 20 20 20 20 30 20 65 6F 72 20 30 20 3D 20 |) 0 eor 0 = |
00000B50: 30 0D 20 20 20 20 20 20 25 30 30 30 30 30 31 31 |0. %0000011|
00000B60: 30 20 28 36 29 20 20 20 20 20 30 20 65 6F 72 20 |0 (6) 0 eor |
00000B70: 31 20 3D 20 31 0D 20 20 20 20 20 20 2D 2D 2D 2D |1 = 1. ----|
00000B80: 2D 2D 2D 2D 2D 20 20 20 20 20 20 20 20 20 31 20 |----- 1 |
00000B90: 65 6F 72 20 30 20 3D 20 31 0D 20 20 20 20 20 20 |eor 0 = 1. |
00000BA0: 25 30 30 30 30 30 31 30 31 20 28 35 29 20 20 20 |%00000101 (5) |
00000BB0: 20 20 31 20 65 6F 72 20 31 20 3D 20 30 0D 5E 0D | 1 eor 1 = 0.^.|
00000BC0: 0D 20 20 62 49 54 2D 4D 41 4E 49 50 55 4C 41 54 |. bIT-MANIPULAT|
00000BD0: 49 4F 4E 20 69 4E 53 54 52 55 43 54 49 4F 4E 53 |ION iNSTRUCTIONS|
00000BE0: 20 28 63 4F 4E 54 27 44 29 0D 20 20 61 53 20 41 | (cONT'D). aS A|
00000BF0: 4E 20 45 58 41 4D 50 4C 45 20 4F 46 20 55 53 49 |N EXAMPLE OF USI|
00000C00: 4E 47 20 54 48 45 53 45 20 20 20 20 20 20 20 20 |NG THESE |
00000C10: 20 20 49 4E 53 54 52 55 43 54 49 4F 4E 53 2C 20 | INSTRUCTIONS, |
00000C20: 4E 4F 54 45 20 54 48 41 54 20 4D 45 4D 4F 52 59 |NOTE THAT MEMORY|
00000C30: 20 41 44 44 52 45 53 53 45 53 46 52 4F 4D 20 31 | ADDRESSESFROM 1|
00000C40: 30 32 34 20 54 4F 20 32 30 32 33 20 41 52 45 20 |024 TO 2023 ARE |
00000C50: 57 48 45 52 45 20 54 48 45 20 43 4F 4E 54 45 4E |WHERE THE CONTEN|
00000C60: 54 53 4F 46 20 54 48 45 20 56 49 44 45 4F 20 53 |TSOF THE VIDEO S|
00000C70: 43 52 45 45 4E 20 41 52 45 20 53 54 4F 52 45 44 |CREEN ARE STORED|
00000C80: 2C 20 41 4E 44 20 54 48 41 54 4E 4F 52 4D 41 4C |, AND THATNORMAL|
00000C90: 20 43 48 41 52 41 43 54 45 52 53 20 41 52 45 20 | CHARACTERS ARE |
00000CA0: 52 45 50 52 45 53 45 4E 54 45 44 20 42 59 0D 56 |REPRESENTED BY.V|
00000CB0: 41 4C 55 45 53 20 46 52 4F 4D 20 25 30 30 30 30 |ALUES FROM %0000|
00000CC0: 30 30 30 30 20 54 4F 20 25 30 31 31 31 31 31 31 |0000 TO %0111111|
00000CD0: 31 2C 20 57 49 54 48 54 48 45 49 52 20 52 45 56 |1, WITHTHEIR REV|
00000CE0: 45 52 53 45 20 46 49 45 4C 44 20 45 51 55 49 56 |ERSE FIELD EQUIV|
00000CF0: 41 4C 45 4E 54 53 20 55 53 49 4E 47 20 20 20 56 |ALENTS USING V|
00000D00: 41 4C 55 45 53 20 46 52 4F 4D 20 25 31 30 30 30 |ALUES FROM %1000|
00000D10: 30 30 30 30 20 54 4F 20 25 31 31 31 31 31 31 31 |0000 TO %1111111|
00000D20: 31 2E 0D 0D 20 20 74 48 55 53 20 53 57 49 54 43 |1... tHUS SWITC|
00000D30: 48 49 4E 47 20 4F 4E 45 20 42 49 54 20 28 42 49 |HING ONE BIT (BI|
00000D40: 54 20 37 2C 20 49 4E 20 54 48 45 20 31 32 38 27 |T 7, IN THE 128'|
00000D50: 53 20 50 4F 53 49 54 49 4F 4E 29 20 4F 4E 20 28 |S POSITION) ON (|
00000D60: 54 4F 20 41 20 31 29 20 57 49 4C 4C 20 52 45 56 |TO A 1) WILL REV|
00000D70: 45 52 53 45 41 20 43 48 41 52 41 43 54 45 52 20 |ERSEA CHARACTER |
00000D80: 4F 4E 20 54 48 45 20 53 43 52 45 45 4E 2E 20 66 |ON THE SCREEN. f|
00000D90: 4F 52 20 45 58 41 4D 50 4C 45 3A 0D 0D 4C 44 41 |OR EXAMPLE:..LDA|
00000DA0: 20 31 30 32 34 0D 4F 52 41 20 23 25 31 30 30 30 | 1024.ORA #%1000|
00000DB0: 30 30 30 30 0D 53 54 41 20 31 30 32 34 0D 0D 57 |0000.STA 1024..W|
00000DC0: 49 4C 4C 20 52 45 56 45 52 53 45 20 54 48 45 20 |ILL REVERSE THE |
00000DD0: 54 4F 50 20 4C 45 46 54 20 43 48 41 52 41 43 54 |TOP LEFT CHARACT|
00000DE0: 45 52 2E 0D 5E 0D 0D 20 20 62 49 54 2D 4D 41 4E |ER..^.. bIT-MAN|
00000DF0: 49 50 55 4C 41 54 49 4F 4E 20 69 4E 53 54 52 55 |IPULATION iNSTRU|
00000E00: 43 54 49 4F 4E 53 20 28 63 4F 4E 54 27 44 29 0D |CTIONS (cONT'D).|
00000E10: 20 20 72 45 50 4C 41 43 49 4E 47 20 22 4F 52 41 | rEPLACING "ORA|
00000E20: 20 25 31 30 30 30 30 30 30 30 22 20 57 49 54 48 | %10000000" WITH|
00000E30: 20 22 41 4E 44 20 20 20 25 30 31 31 31 31 31 31 | "AND %0111111|
00000E40: 31 22 20 57 4F 55 4C 44 20 46 4F 52 43 45 20 42 |1" WOULD FORCE B|
00000E50: 49 54 20 37 20 54 4F 20 42 45 20 22 30 22 2C 20 |IT 7 TO BE "0", |
00000E60: 43 41 55 53 49 4E 47 20 54 48 45 20 50 52 4F 47 |CAUSING THE PROG|
00000E70: 52 41 4D 20 54 4F 20 43 48 41 4E 47 45 20 41 4E |RAM TO CHANGE AN|
00000E80: 20 20 20 20 20 20 20 20 49 4E 56 45 52 54 45 44 | INVERTED|
00000E90: 20 43 48 41 52 41 43 54 45 52 20 54 4F 20 41 20 | CHARACTER TO A |
00000EA0: 4E 4F 52 4D 41 4C 20 4F 4E 45 2E 0D 0D 20 20 75 |NORMAL ONE... u|
00000EB0: 53 49 4E 47 20 22 45 4F 52 20 25 31 30 30 30 30 |SING "EOR %10000|
00000EC0: 30 30 30 22 20 49 4E 53 54 45 41 44 20 4F 46 20 |000" INSTEAD OF |
00000ED0: 22 4F 52 41 20 25 31 30 30 30 30 30 30 30 22 20 |"ORA %10000000" |
00000EE0: 57 4F 55 4C 44 20 46 4C 49 50 20 42 49 54 20 37 |WOULD FLIP BIT 7|
00000EF0: 2C 20 49 4E 56 45 52 54 49 4E 47 20 20 41 20 22 |, INVERTING A "|
00000F00: 4E 4F 52 4D 41 4C 22 20 43 48 41 52 41 43 54 45 |NORMAL" CHARACTE|
00000F10: 52 20 41 4E 44 20 52 45 4E 44 45 52 49 4E 47 20 |R AND RENDERING |
00000F20: 41 4E 20 20 20 49 4E 56 45 52 54 45 44 20 43 48 |AN INVERTED CH|
00000F30: 41 52 41 43 54 45 52 20 4E 4F 52 4D 41 4C 2E 0D |ARACTER NORMAL..|
00000F40: 0D 20 20 74 48 45 53 45 20 49 4E 53 54 52 55 43 |. tHESE INSTRUC|
00000F50: 54 49 4F 4E 53 20 41 52 45 20 55 53 45 44 20 41 |TIONS ARE USED A|
00000F60: 4E 59 20 54 49 4D 45 20 20 59 4F 55 20 4E 45 45 |NY TIME YOU NEE|
00000F70: 44 20 54 4F 20 53 45 54 2C 20 43 4C 45 41 52 2C |D TO SET, CLEAR,|
00000F80: 20 4F 52 20 46 4C 49 50 20 4F 4E 45 20 4F 52 20 | OR FLIP ONE OR |
00000F90: 41 47 52 4F 55 50 20 4F 46 20 42 49 54 53 2E 20 |AGROUP OF BITS. |
00000FA0: 74 48 49 53 20 48 41 50 50 45 4E 53 20 41 20 6C |tHIS HAPPENS A l|
00000FB0: 6F 74 20 57 49 54 48 20 20 54 48 45 20 63 2D 36 |ot WITH THE c-6|
00000FC0: 34 27 53 20 53 50 45 43 49 41 4C 20 53 4F 55 4E |4'S SPECIAL SOUN|
00000FD0: 44 20 41 4E 44 20 56 49 44 45 4F 20 20 20 20 20 |D AND VIDEO |
00000FE0: 20 43 41 50 41 42 49 4C 49 54 49 45 53 2C 20 49 | CAPABILITIES, I|
00000FF0: 46 20 59 4F 55 20 47 45 54 20 49 4E 54 4F 20 54 |F YOU GET INTO T|
00001000: 48 45 4D 2E 0D 0D 20 20 74 48 45 53 45 20 49 4E |HEM... tHESE IN|
00001010: 53 54 52 55 43 54 49 4F 4E 53 20 43 41 4E 20 55 |STRUCTIONS CAN U|
00001020: 53 45 20 41 4E 59 20 20 20 20 20 20 20 20 41 44 |SE ANY AD|
00001030: 44 52 45 53 53 49 4E 47 20 4D 4F 44 45 53 20 41 |DRESSING MODES A|
00001040: 56 41 49 4C 41 42 4C 45 20 54 4F 20 4C 44 41 20 |VAILABLE TO LDA |
00001050: 41 4E 44 20 20 20 41 4C 4C 20 54 41 4B 45 20 54 |AND ALL TAKE T|
00001060: 48 45 20 53 41 4D 45 20 41 4D 4F 55 4E 54 20 4F |HE SAME AMOUNT O|
00001070: 46 20 54 49 4D 45 20 41 53 20 4C 44 41 2E 5E 0D |F TIME AS LDA.^.|
00001080: 0D 20 20 20 20 20 20 20 20 6D 4F 52 45 20 42 49 |. mORE BI|
00001090: 54 2D 4A 55 47 47 4C 49 4E 47 0D 0D 20 20 73 4F |T-JUGGLING.. sO|
000010A0: 4D 45 20 4F 54 48 45 52 20 49 4E 53 54 52 55 43 |ME OTHER INSTRUC|
000010B0: 54 49 4F 4E 53 20 55 53 45 44 20 54 4F 20 20 20 |TIONS USED TO |
000010C0: 20 20 20 20 4D 41 4E 49 50 55 4C 41 54 45 20 54 | MANIPULATE T|
000010D0: 48 45 20 42 49 54 53 20 49 4E 20 41 20 42 59 54 |HE BITS IN A BYT|
000010E0: 45 20 41 52 45 20 41 53 4C 20 20 20 28 61 52 49 |E ARE ASL (aRI|
000010F0: 54 48 4D 45 54 49 43 20 73 48 49 46 54 20 6C 45 |THMETIC sHIFT lE|
00001100: 46 54 29 2C 20 4C 53 52 20 28 6C 4F 47 49 43 41 |FT), LSR (lOGICA|
00001110: 4C 20 20 20 73 48 49 46 54 20 72 49 47 48 54 29 |L sHIFT rIGHT)|
00001120: 2C 20 52 4F 4C 20 28 72 6F 54 41 54 45 20 6C 45 |, ROL (roTATE lE|
00001130: 46 54 29 20 41 4E 44 20 52 4F 52 20 28 72 6F 54 |FT) AND ROR (roT|
00001140: 41 54 45 20 72 49 47 48 54 29 2E 20 74 48 45 53 |ATE rIGHT). tHES|
00001150: 45 20 49 4E 53 54 52 55 43 54 49 4F 4E 53 20 4D |E INSTRUCTIONS M|
00001160: 4F 56 45 20 41 4C 4C 20 54 48 45 20 42 49 54 53 |OVE ALL THE BITS|
00001170: 20 49 4E 20 41 20 42 59 54 45 20 4C 45 46 54 20 | IN A BYTE LEFT |
00001180: 4F 52 20 52 49 47 48 54 2C 20 20 20 4D 55 4C 54 |OR RIGHT, MULT|
00001190: 49 50 4C 59 49 4E 47 20 4F 52 20 44 49 56 49 44 |IPLYING OR DIVID|
000011A0: 49 4E 47 20 54 48 45 20 42 59 54 45 27 53 20 56 |ING THE BYTE'S V|
000011B0: 41 4C 55 45 42 59 20 32 2E 0D 0D 20 20 61 4C 4C |ALUEBY 2... aLL|
000011C0: 20 54 48 45 53 45 20 49 4E 53 54 52 55 43 54 49 | THESE INSTRUCTI|
000011D0: 4F 4E 53 20 53 45 54 20 54 48 45 20 7A 20 41 4E |ONS SET THE z AN|
000011E0: 44 20 6E 46 4C 41 47 53 20 41 43 43 4F 52 44 49 |D nFLAGS ACCORDI|
000011F0: 4E 47 20 54 4F 20 54 48 45 20 56 41 4C 55 45 20 |NG TO THE VALUE |
00001200: 4C 45 46 54 20 49 4E 20 54 48 45 42 59 54 45 2C |LEFT IN THEBYTE,|
00001210: 20 41 4E 44 20 54 48 45 20 42 49 54 20 53 48 49 | AND THE BIT SHI|
00001220: 46 54 45 44 20 4F 46 46 20 54 48 45 20 45 4E 44 |FTED OFF THE END|
00001230: 20 4F 46 54 48 45 20 42 59 54 45 20 49 53 20 50 | OFTHE BYTE IS P|
00001240: 4C 41 43 45 44 20 49 4E 20 54 48 45 20 63 20 46 |LACED IN THE c F|
00001250: 4C 41 47 2E 0D 0D 20 20 61 53 4C 20 41 4E 44 20 |LAG... aSL AND |
00001260: 4C 53 52 20 41 4C 57 41 59 53 20 53 48 49 46 54 |LSR ALWAYS SHIFT|
00001270: 20 41 20 30 20 49 4E 54 4F 20 54 48 45 20 41 50 | A 0 INTO THE AP|
00001280: 50 4C 49 43 41 42 4C 45 20 45 4E 44 20 4F 46 20 |PLICABLE END OF |
00001290: 54 48 45 20 42 59 54 45 2C 20 57 48 49 4C 45 20 |THE BYTE, WHILE |
000012A0: 52 4F 4C 20 20 20 41 4E 44 20 52 4F 52 20 55 53 |ROL AND ROR US|
000012B0: 45 20 54 48 45 20 56 41 4C 55 45 20 4F 46 20 54 |E THE VALUE OF T|
000012C0: 48 45 20 63 41 52 52 59 20 46 4C 41 47 20 42 45 |HE cARRY FLAG BE|
000012D0: 46 4F 52 45 20 54 48 45 20 4F 50 45 52 41 54 49 |FORE THE OPERATI|
000012E0: 4F 4E 2E 0D 5E 0D 0D 20 20 20 20 6D 4F 52 45 20 |ON..^.. mORE |
000012F0: 62 49 54 2D 6A 55 47 47 4C 49 4E 47 20 28 63 4F |bIT-jUGGLING (cO|
00001300: 4E 54 49 4E 55 45 44 29 0D 0D 74 48 55 53 2C 20 |NTINUED)..tHUS, |
00001310: 54 4F 20 4D 55 4C 54 49 50 4C 59 20 41 20 54 57 |TO MULTIPLY A TW|
00001320: 4F 2D 42 59 54 45 20 4E 55 4D 42 45 52 20 42 59 |O-BYTE NUMBER BY|
00001330: 20 20 32 2C 20 55 53 45 20 54 48 45 20 43 41 52 | 2, USE THE CAR|
00001340: 52 59 20 42 49 54 20 54 4F 20 48 4F 4C 44 20 54 |RY BIT TO HOLD T|
00001350: 48 45 20 42 49 54 20 20 20 20 54 48 41 54 20 4A |HE BIT THAT J|
00001360: 55 4D 50 53 20 54 48 45 20 42 4F 52 44 45 52 20 |UMPS THE BORDER |
00001370: 42 45 54 57 45 45 4E 20 42 59 54 45 53 3A 0D 0D |BETWEEN BYTES:..|
00001380: 4C 53 52 20 5B 4C 4F 57 20 42 59 54 45 20 4F 46 |LSR [LOW BYTE OF|
00001390: 20 4E 55 4D 42 45 52 5D 0D 52 4F 4C 20 5B 48 49 | NUMBER].ROL [HI|
000013A0: 47 48 20 42 59 54 45 20 4F 46 20 4E 55 4D 42 45 |GH BYTE OF NUMBE|
000013B0: 52 5D 0D 0D 20 20 61 44 44 49 4E 47 20 4D 4F 52 |R].. aDDING MOR|
000013C0: 45 20 52 4F 4C 27 53 20 41 4C 4C 4F 57 53 20 59 |E ROL'S ALLOWS Y|
000013D0: 4F 55 20 54 4F 20 55 53 45 20 20 20 41 4E 59 20 |OU TO USE ANY |
000013E0: 4E 55 4D 42 45 52 20 4F 46 20 42 59 54 45 53 20 |NUMBER OF BYTES |
000013F0: 49 4E 20 59 4F 55 52 20 4E 55 4D 42 45 52 2E 0D |IN YOUR NUMBER..|
00001400: 0D 20 20 74 48 45 53 45 20 49 4E 53 54 52 55 43 |. tHESE INSTRUC|
00001410: 54 49 4F 4E 53 20 43 41 4E 20 55 53 45 20 54 48 |TIONS CAN USE TH|
00001420: 45 20 5A 45 52 4F 20 20 20 50 41 47 45 3B 20 5A |E ZERO PAGE; Z|
00001430: 45 52 4F 20 50 41 47 45 2C 58 3B 20 41 42 53 4F |ERO PAGE,X; ABSO|
00001440: 4C 55 54 45 20 41 4E 44 20 20 20 20 20 20 20 20 |LUTE AND |
00001450: 20 41 42 53 4F 4C 55 54 45 2C 58 20 41 44 44 52 | ABSOLUTE,X ADDR|
00001460: 45 53 53 49 4E 47 20 4D 4F 44 45 53 2C 20 41 4E |ESSING MODES, AN|
00001470: 44 20 4F 4E 45 20 20 20 20 46 4F 55 4E 44 20 4E |D ONE FOUND N|
00001480: 4F 57 48 45 52 45 20 45 4C 53 45 3A 20 41 43 43 |OWHERE ELSE: ACC|
00001490: 55 4D 55 4C 41 54 4F 52 2E 0D 0D 20 20 69 4E 20 |UMULATOR... iN |
000014A0: 54 48 45 20 41 43 43 55 4D 55 4C 41 54 4F 52 20 |THE ACCUMULATOR |
000014B0: 41 44 44 52 45 53 53 49 4E 47 20 4D 4F 44 45 2C |ADDRESSING MODE,|
000014C0: 20 20 20 54 48 45 20 41 43 43 55 4D 55 4C 41 54 | THE ACCUMULAT|
000014D0: 4F 52 20 49 53 20 53 48 49 46 54 45 44 20 49 4E |OR IS SHIFTED IN|
000014E0: 53 54 45 41 44 20 4F 46 20 41 20 53 50 45 43 49 |STEAD OF A SPECI|
000014F0: 46 49 45 44 20 4D 45 4D 4F 52 59 20 4C 4F 43 41 |FIED MEMORY LOCA|
00001500: 54 49 4F 4E 2E 0D 5E 0D 0D 20 20 20 20 6D 4F 52 |TION..^.. mOR|
00001510: 45 20 62 49 54 2D 6A 55 47 47 4C 49 4E 47 20 28 |E bIT-jUGGLING (|
00001520: 63 4F 4E 54 49 4E 55 45 44 29 0D 0D 20 20 73 4F |cONTINUED).. sO|
00001530: 4D 45 20 41 53 53 45 4D 42 4C 45 52 53 20 55 53 |ME ASSEMBLERS US|
00001540: 45 20 54 48 45 20 46 4F 52 4D 41 54 20 22 41 53 |E THE FORMAT "AS|
00001550: 4C 22 2C 20 57 49 54 48 4F 55 54 20 41 4E 59 20 |L", WITHOUT ANY |
00001560: 46 4F 4C 4C 4F 57 49 4E 47 20 41 44 44 52 45 53 |FOLLOWING ADDRES|
00001570: 53 20 54 4F 20 20 20 20 20 20 20 20 49 4E 44 49 |S TO INDI|
00001580: 43 41 54 45 20 54 48 41 54 20 54 48 45 20 41 43 |CATE THAT THE AC|
00001590: 43 55 4D 55 4C 41 54 4F 52 20 4D 4F 44 45 20 20 |CUMULATOR MODE |
000015A0: 20 20 20 20 49 53 20 54 4F 20 42 45 20 55 53 45 | IS TO BE USE|
000015B0: 44 20 42 59 20 54 48 45 20 41 53 4C 20 49 4E 53 |D BY THE ASL INS|
000015C0: 54 52 55 43 54 49 4F 4E 2E 20 20 20 73 4F 4D 45 |TRUCTION. sOME|
000015D0: 20 4F 54 48 45 52 20 41 53 53 45 4D 42 4C 45 52 | OTHER ASSEMBLER|
000015E0: 53 20 52 45 51 55 49 52 45 20 22 41 53 4C 20 41 |S REQUIRE "ASL A|
000015F0: 22 2C 20 20 53 50 45 43 49 46 59 49 4E 47 20 54 |", SPECIFYING T|
00001600: 48 45 20 41 43 43 55 4D 55 4C 41 54 4F 52 2E 20 |HE ACCUMULATOR. |
00001610: 74 48 45 20 67 4F 4C 44 20 20 20 20 64 49 53 4B |tHE gOLD dISK|
00001620: 20 41 53 53 45 4D 42 4C 45 52 20 49 4E 20 56 4F | ASSEMBLER IN VO|
00001630: 4C 55 4D 45 20 31 31 2C 20 57 48 49 43 48 20 59 |LUME 11, WHICH Y|
00001640: 4F 55 20 20 4D 41 59 20 42 45 20 55 53 49 4E 47 |OU MAY BE USING|
00001650: 2C 20 44 4F 45 53 20 4E 4F 54 20 52 45 51 55 49 |, DOES NOT REQUI|
00001660: 52 45 20 54 48 45 20 45 58 54 52 41 22 41 22 2E |RE THE EXTRA"A".|
00001670: 20 73 49 4D 49 4C 41 52 4C 59 20 46 4F 52 20 4C | sIMILARLY FOR L|
00001680: 53 52 2C 20 52 4F 4C 20 41 4E 44 20 52 4F 52 2E |SR, ROL AND ROR.|
00001690: 0D 0D 20 20 61 53 20 41 4E 20 41 53 49 44 45 2C |.. aS AN ASIDE,|
000016A0: 20 4F 54 48 45 52 20 49 4E 53 54 52 55 43 54 49 | OTHER INSTRUCTI|
000016B0: 4F 4E 53 20 53 55 43 48 20 20 41 53 20 54 58 41 |ONS SUCH AS TXA|
000016C0: 2C 20 50 48 50 2C 20 45 54 43 2E 2C 20 57 48 49 |, PHP, ETC., WHI|
000016D0: 43 48 20 22 44 4F 4E 27 54 20 52 45 41 4C 4C 59 |CH "DON'T REALLY|
000016E0: 20 20 48 41 56 45 22 20 41 44 44 52 45 53 53 49 | HAVE" ADDRESSI|
000016F0: 4E 47 20 4D 4F 44 45 53 20 41 52 45 20 53 41 49 |NG MODES ARE SAI|
00001700: 44 20 54 4F 20 55 53 45 20 20 54 48 45 20 22 49 |D TO USE THE "I|
00001710: 4D 50 4C 49 45 44 22 20 41 44 44 52 45 53 53 49 |MPLIED" ADDRESSI|
00001720: 4E 47 20 4D 4F 44 45 20 49 4E 20 4F 52 44 45 52 |NG MODE IN ORDER|
00001730: 20 20 54 4F 20 47 49 56 45 20 41 4C 4C 20 49 4E | TO GIVE ALL IN|
00001740: 53 54 52 55 43 54 49 4F 4E 53 20 41 44 44 52 45 |STRUCTIONS ADDRE|
00001750: 53 53 49 4E 47 20 20 20 20 20 4D 4F 44 45 53 2E |SSING MODES.|
00001760: 20 74 48 45 20 44 49 53 54 49 4E 43 54 49 4F 4E | tHE DISTINCTION|
00001770: 20 46 52 4F 4D 20 41 43 43 55 4D 55 4C 41 54 4F | FROM ACCUMULATO|
00001780: 52 20 4D 4F 44 45 20 49 53 20 54 48 41 54 20 4F |R MODE IS THAT O|
00001790: 50 43 4F 44 45 53 20 4C 49 4B 45 20 61 73 6C 20 |PCODES LIKE asl |
000017A0: 43 41 4E 0D 53 50 45 43 49 46 59 20 53 45 56 45 |CAN.SPECIFY SEVE|
000017B0: 52 41 4C 20 4D 4F 44 45 53 2C 20 49 4E 43 4C 55 |RAL MODES, INCLU|
000017C0: 44 49 4E 47 0D 41 43 43 55 4D 55 4C 41 54 4F 52 |DING.ACCUMULATOR|
000017D0: 2E 0D 5E 0D 0D 20 20 20 20 6D 4F 52 45 20 62 49 |..^.. mORE bI|
000017E0: 54 2D 6A 55 47 47 4C 49 4E 47 20 28 63 4F 4E 54 |T-jUGGLING (cONT|
000017F0: 49 4E 55 45 44 29 0D 0D 20 20 74 48 45 53 45 20 |INUED).. tHESE |
00001800: 49 4E 53 54 52 55 43 54 49 4F 4E 53 20 41 52 45 |INSTRUCTIONS ARE|
00001810: 20 55 53 55 41 4C 4C 59 20 55 53 45 44 20 54 4F | USUALLY USED TO|
00001820: 4D 55 4C 54 49 50 4C 59 20 4E 55 4D 42 45 52 53 |MULTIPLY NUMBERS|
00001830: 20 54 4F 47 45 54 48 45 52 2E 20 74 4F 20 4D 55 | TOGETHER. tO MU|
00001840: 4C 54 49 50 4C 59 20 20 42 59 20 54 48 52 45 45 |LTIPLY BY THREE|
00001850: 2C 20 46 4F 52 20 45 58 41 4D 50 4C 45 2C 20 54 |, FOR EXAMPLE, T|
00001860: 41 4B 45 20 54 48 45 20 4E 55 4D 42 45 52 20 20 |AKE THE NUMBER |
00001870: 54 4F 20 42 45 20 4D 55 4C 54 49 50 4C 49 45 44 |TO BE MULTIPLIED|
00001880: 2C 20 41 53 4C 20 49 54 2C 20 53 54 4F 52 49 4E |, ASL IT, STORIN|
00001890: 47 20 54 48 45 20 20 20 52 45 53 55 4C 54 20 4F |G THE RESULT O|
000018A0: 46 20 54 48 45 20 53 48 49 46 54 20 54 45 4D 50 |F THE SHIFT TEMP|
000018B0: 4F 52 41 52 49 4C 59 2C 20 41 4E 44 20 41 44 44 |ORARILY, AND ADD|
000018C0: 54 48 45 20 55 4E 44 49 53 54 55 52 42 45 44 20 |THE UNDISTURBED |
000018D0: 4F 52 49 47 49 4E 41 4C 20 4E 55 4D 42 45 52 20 |ORIGINAL NUMBER |
000018E0: 54 4F 20 49 54 2E 20 20 5B 6E 55 4D 42 45 52 5D |TO IT. [nUMBER]|
000018F0: 2B 5B 32 58 6E 55 4D 42 45 52 5D 3D 5B 33 58 6E |+[2XnUMBER]=[3Xn|
00001900: 55 4D 42 45 52 5D 2E 20 61 4E 59 20 20 20 20 20 |UMBER]. aNY |
00001910: 4E 55 4D 42 45 52 20 43 41 4E 20 42 45 20 55 53 |NUMBER CAN BE US|
00001920: 45 44 20 49 4E 20 53 55 43 48 20 41 20 50 52 4F |ED IN SUCH A PRO|
00001930: 43 45 44 55 52 45 2E 20 74 4F 20 4D 55 4C 54 49 |CEDURE. tO MULTI|
00001940: 50 4C 59 20 42 59 20 36 2C 20 53 48 49 46 54 20 |PLY BY 6, SHIFT |
00001950: 54 48 45 20 52 45 53 55 4C 54 20 4F 56 45 52 20 |THE RESULT OVER |
00001960: 41 47 41 49 4E 2E 0D 0D 20 20 61 20 47 45 4E 45 |AGAIN... a GENE|
00001970: 52 41 4C 20 50 52 4F 43 45 44 55 52 45 20 54 4F |RAL PROCEDURE TO|
00001980: 20 4D 55 4C 54 49 50 4C 59 20 41 4E 59 20 20 20 | MULTIPLY ANY |
00001990: 54 57 4F 20 56 41 4C 55 45 53 20 54 4F 47 45 54 |TWO VALUES TOGET|
000019A0: 48 45 52 20 49 53 20 53 4F 4D 45 57 48 41 54 20 |HER IS SOMEWHAT |
000019B0: 4D 4F 52 45 0D 43 4F 4D 50 4C 45 58 2C 20 42 55 |MORE.COMPLEX, BU|
000019C0: 54 20 55 53 45 53 20 54 48 45 20 53 41 4D 45 20 |T USES THE SAME |
000019D0: 49 44 45 41 53 2E 20 6F 4E 20 54 48 45 4E 45 58 |IDEAS. oN THENEX|
000019E0: 54 20 53 43 52 45 45 4E 20 49 53 20 41 20 50 52 |T SCREEN IS A PR|
000019F0: 4F 47 52 41 4D 20 57 48 49 43 48 20 57 49 4C 4C |OGRAM WHICH WILL|
00001A00: 20 44 4F 20 20 54 48 49 53 2E 20 69 54 20 57 4F | DO THIS. iT WO|
00001A10: 52 4B 53 20 52 41 54 48 45 52 20 4C 49 4B 45 20 |RKS RATHER LIKE |
00001A20: 54 48 45 20 4C 4F 4E 47 20 20 20 20 20 4D 55 4C |THE LONG MUL|
00001A30: 54 49 50 4C 49 43 41 54 49 4F 4E 20 59 4F 55 20 |TIPLICATION YOU |
00001A40: 4C 45 41 52 4E 45 44 20 49 4E 20 53 43 48 4F 4F |LEARNED IN SCHOO|
00001A50: 4C 2C 20 20 20 54 41 4B 49 4E 47 20 54 57 4F 20 |L, TAKING TWO |
00001A60: 31 2D 42 59 54 45 20 4E 55 4D 42 45 52 53 20 54 |1-BYTE NUMBERS T|
00001A70: 4F 20 50 52 4F 44 55 43 45 20 41 20 20 32 2D 42 |O PRODUCE A 2-B|
00001A80: 59 54 45 20 52 45 53 55 4C 54 2E 20 77 48 59 3F |YTE RESULT. wHY?|
00001A90: 20 32 35 35 2A 32 35 35 3D 36 35 30 32 35 2E 0D | 255*255=65025..|
00001AA0: 5E 0D 0D 20 20 20 20 20 4E 55 4D 31 3D 24 46 42 |^.. NUM1=$FB|
00001AB0: 20 20 20 20 3B 4F 52 20 41 4E 59 50 4C 41 43 45 | ;OR ANYPLACE|
00001AC0: 20 48 41 4E 44 59 0D 20 20 20 20 20 4E 55 4D 32 | HANDY. NUM2|
00001AD0: 3D 24 46 43 0D 20 20 20 20 20 50 52 4F 44 55 43 |=$FC. PRODUC|
00001AE0: 54 3D 24 46 44 20 3B 24 46 45 20 57 49 4C 4C 20 |T=$FD ;$FE WILL |
00001AF0: 42 45 20 55 53 45 44 20 41 4C 53 4F 0D 20 20 20 |BE USED ALSO. |
00001B00: 20 20 4C 44 41 20 23 24 30 30 20 20 20 20 3B 43 | LDA #$00 ;C|
00001B10: 4C 45 41 52 20 52 45 53 55 4C 54 20 41 52 45 41 |LEAR RESULT AREA|
00001B20: 0D 20 20 20 20 20 53 54 41 20 50 52 4F 44 55 43 |. STA PRODUC|
00001B30: 54 0D 20 20 20 20 20 53 54 41 20 50 52 4F 44 55 |T. STA PRODU|
00001B40: 43 54 2B 31 0D 20 20 20 20 20 4C 44 58 20 23 24 |CT+1. LDX #$|
00001B50: 30 38 20 20 20 20 3B 43 4F 55 4E 54 20 23 20 4F |08 ;COUNT # O|
00001B60: 46 20 42 49 54 53 0D 4C 4F 4F 50 20 41 53 4C 20 |F BITS.LOOP ASL |
00001B70: 4E 55 4D 32 20 3B 49 53 4F 4C 41 54 45 20 4C 45 |NUM2 ;ISOLATE LE|
00001B80: 46 54 2D 48 41 4E 44 20 42 49 54 0D 20 20 20 20 |FT-HAND BIT. |
00001B90: 20 42 43 43 20 5A 45 52 4F 20 3B 49 46 20 5A 45 | BCC ZERO ;IF ZE|
00001BA0: 52 4F 2C 20 44 4F 4E 27 54 20 41 44 44 20 4E 55 |RO, DON'T ADD NU|
00001BB0: 4D 31 0D 20 20 20 20 20 43 4C 43 20 20 20 20 20 |M1. CLC |
00001BC0: 20 3B 50 52 45 50 41 52 45 20 46 4F 52 20 41 44 | ;PREPARE FOR AD|
00001BD0: 44 49 54 49 4F 4E 0D 20 20 20 20 20 4C 44 41 20 |DITION. LDA |
00001BE0: 4E 55 4D 31 20 3B 41 44 44 20 4E 55 4D 31 20 54 |NUM1 ;ADD NUM1 T|
00001BF0: 4F 20 50 52 4F 44 55 43 54 0D 20 20 20 20 20 41 |O PRODUCT. A|
00001C00: 44 43 20 50 52 4F 44 55 43 54 0D 20 20 20 20 20 |DC PRODUCT. |
00001C10: 53 54 41 20 50 52 4F 44 55 43 54 0D 20 20 20 20 |STA PRODUCT. |
00001C20: 20 42 43 43 20 5A 45 52 4F 20 20 20 20 20 20 3B | BCC ZERO ;|
00001C30: 54 41 4B 45 20 43 41 52 45 20 4F 46 20 43 41 52 |TAKE CARE OF CAR|
00001C40: 52 59 0D 20 20 20 20 20 49 4E 43 20 50 52 4F 44 |RY. INC PROD|
00001C50: 55 43 54 2B 31 20 3B 49 46 20 54 57 4F 20 42 59 |UCT+1 ;IF TWO BY|
00001C60: 54 45 53 20 4E 45 45 44 45 44 0D 5A 45 52 4F 20 |TES NEEDED.ZERO |
00001C70: 44 45 58 20 20 20 20 20 20 20 20 20 20 20 3B 44 |DEX ;D|
00001C80: 4F 20 49 54 20 38 20 54 49 4D 45 53 0D 20 20 20 |O IT 8 TIMES. |
00001C90: 20 20 42 4E 45 20 4F 55 54 20 20 20 20 20 20 20 | BNE OUT |
00001CA0: 3B 49 46 20 46 49 4E 49 53 48 45 44 2C 20 4C 45 |;IF FINISHED, LE|
00001CB0: 41 56 45 0D 20 20 20 20 20 41 53 4C 20 50 52 4F |AVE. ASL PRO|
00001CC0: 44 55 43 54 20 20 20 3B 50 52 4F 44 55 43 54 3D |DUCT ;PRODUCT=|
00001CD0: 50 52 4F 44 55 43 54 2A 32 0D 20 20 20 20 20 52 |PRODUCT*2. R|
00001CE0: 4F 4C 20 50 52 4F 44 55 43 54 2B 31 0D 20 20 20 |OL PRODUCT+1. |
00001CF0: 20 20 4A 4D 50 20 4C 4F 4F 50 0D 4F 55 54 20 20 | JMP LOOP.OUT |
00001D00: 2E 2E 2E 0D 0D 5E 0D 0D 20 20 20 20 6D 4F 52 45 |.....^.. mORE|
00001D10: 20 62 49 54 2D 6A 55 47 47 4C 49 4E 47 20 28 63 | bIT-jUGGLING (c|
00001D20: 4F 4E 54 49 4E 55 45 44 29 0D 0D 20 20 75 53 49 |ONTINUED).. uSI|
00001D30: 4E 47 20 54 48 45 20 45 51 55 49 56 41 4C 45 4E |NG THE EQUIVALEN|
00001D40: 54 20 53 54 45 50 53 20 49 4E 20 44 45 43 49 4D |T STEPS IN DECIM|
00001D50: 41 4C 20 41 53 20 45 58 41 4D 50 4C 45 53 2C 20 |AL AS EXAMPLES, |
00001D60: 4D 55 4C 54 49 50 4C 49 43 41 54 49 4F 4E 20 42 |MULTIPLICATION B|
00001D70: 59 20 41 20 53 49 4E 47 4C 45 20 20 20 20 20 20 |Y A SINGLE |
00001D80: 20 20 20 20 20 20 44 49 47 49 54 20 49 53 20 56 | DIGIT IS V|
00001D90: 45 52 59 20 45 41 53 59 20 57 48 45 4E 20 49 54 |ERY EASY WHEN IT|
00001DA0: 27 53 20 66 20 20 20 20 20 20 37 31 36 20 4F 4E |'S f 716 ON|
00001DB0: 4C 59 20 50 4F 53 53 49 42 4C 45 20 56 41 4C 55 |LY POSSIBLE VALU|
00001DC0: 45 53 20 41 52 45 20 30 0D 49 20 20 20 20 20 58 |ES ARE 0.I X|
00001DD0: 33 34 32 20 41 4E 44 20 31 2E 20 61 4C 53 4F 2C |342 AND 1. aLSO,|
00001DE0: 20 49 4E 53 54 45 41 44 20 4F 46 0D 47 20 20 2D | INSTEAD OF.G -|
00001DF0: 2D 2D 2D 2D 2D 2D 20 57 41 49 54 49 4E 47 20 55 |------ WAITING U|
00001E00: 4E 54 49 4C 20 54 48 45 20 45 4E 44 20 54 4F 20 |NTIL THE END TO |
00001E10: 41 44 44 2C 55 20 20 20 20 20 31 34 33 32 20 54 |ADD,U 1432 T|
00001E20: 48 45 20 42 49 4E 41 52 59 20 4D 45 54 48 4F 44 |HE BINARY METHOD|
00001E30: 20 46 49 4E 44 53 20 20 20 20 20 20 52 20 20 20 | FINDS R |
00001E40: 20 32 38 36 34 20 20 33 58 37 31 36 2C 20 42 55 | 2864 3X716, BU|
00001E50: 4D 50 53 20 54 48 45 20 52 45 53 55 4C 54 20 4F |MPS THE RESULT O|
00001E60: 56 45 52 20 45 20 20 2B 32 31 34 32 20 20 20 4F |VER E +2142 O|
00001E70: 4E 45 20 43 4F 4C 55 4D 4E 2C 20 41 44 44 53 20 |NE COLUMN, ADDS |
00001E80: 34 58 37 31 36 2C 20 42 55 4D 50 53 20 20 20 2D |4X716, BUMPS -|
00001E90: 2D 2D 2D 2D 2D 2D 20 54 48 45 20 52 45 53 55 4C |------ THE RESUL|
00001EA0: 54 20 4F 56 45 52 20 4F 4E 45 20 43 4F 4C 55 4D |T OVER ONE COLUM|
00001EB0: 4E 2C 20 20 31 20 20 20 32 34 34 32 37 32 20 41 |N, 1 244272 A|
00001EC0: 44 44 53 20 34 58 37 31 36 2C 20 42 55 4D 50 53 |DDS 4X716, BUMPS|
00001ED0: 20 54 48 41 54 20 4F 56 45 52 2C 20 20 20 20 20 | THAT OVER, |
00001EE0: 20 20 20 20 20 20 20 54 48 45 4E 20 41 44 44 53 | THEN ADDS|
00001EF0: 20 32 58 37 31 36 20 41 4E 44 20 51 55 49 54 53 | 2X716 AND QUITS|
00001F00: 2E 20 20 20 74 48 49 53 20 50 41 52 54 49 43 55 |. tHIS PARTICU|
00001F10: 4C 41 52 20 53 59 53 54 45 4D 20 53 41 56 45 53 |LAR SYSTEM SAVES|
00001F20: 20 54 49 4D 45 20 41 4E 44 20 20 20 4D 45 4D 4F | TIME AND MEMO|
00001F30: 52 59 2E 20 61 4E 4F 54 48 45 52 20 54 52 49 43 |RY. aNOTHER TRIC|
00001F40: 4B 20 55 53 45 44 20 49 53 20 54 48 45 20 22 42 |K USED IS THE "B|
00001F50: 43 43 20 20 5A 45 52 4F 20 20 20 49 4E 43 20 50 |CC ZERO INC P|
00001F60: 52 4F 44 55 43 54 2B 31 22 20 20 50 41 52 54 20 |RODUCT+1" PART |
00001F70: 4F 46 20 54 48 45 20 20 20 20 20 20 50 52 4F 47 |OF THE PROG|
00001F80: 52 41 4D 2C 20 57 48 49 43 48 20 53 41 56 45 53 |RAM, WHICH SAVES|
00001F90: 20 41 4E 20 41 44 44 49 54 49 4F 4E 2E 20 69 46 | AN ADDITION. iF|
00001FA0: 20 59 4F 55 43 41 4E 20 55 4E 44 45 52 53 54 41 | YOUCAN UNDERSTA|
00001FB0: 4E 44 20 54 48 49 53 20 4D 55 4C 54 49 50 4C 49 |ND THIS MULTIPLI|
00001FC0: 43 41 54 49 4F 4E 2C 20 59 4F 55 20 43 41 4E 20 |CATION, YOU CAN |
00001FD0: 43 41 4C 4C 20 59 4F 55 52 53 45 4C 46 20 4C 49 |CALL YOURSELF LI|
00001FE0: 54 45 52 41 54 45 20 49 4E 20 6D 6C 2E 20 6A 4F |TERATE IN ml. jO|
00001FF0: 4C 4C 59 20 47 4F 4F 44 20 53 48 4F 57 2C 20 4D |LLY GOOD SHOW, M|
00002000: 41 54 45 21 20 6F 4E 20 54 4F 20 4C 49 54 45 52 |ATE! oN TO LITER|
00002010: 41 54 55 52 45 2E 2E 2E 2E 0D 5E 0D 0D 20 20 20 |ATURE.....^.. |
00002020: 20 20 20 20 20 20 20 20 74 48 45 20 73 54 41 43 | tHE sTAC|
00002030: 4B 0D 0D 20 20 77 48 45 4E 20 54 48 45 20 36 35 |K.. wHEN THE 65|
00002040: 31 30 20 45 58 45 43 55 54 45 53 20 41 20 4A 53 |10 EXECUTES A JS|
00002050: 52 20 43 4F 4D 4D 41 4E 44 2C 20 49 54 20 48 41 |R COMMAND, IT HA|
00002060: 53 20 54 4F 20 52 45 4D 45 4D 42 45 52 20 57 48 |S TO REMEMBER WH|
00002070: 45 52 45 20 49 54 27 53 20 4A 53 52 2D 49 4E 47 |ERE IT'S JSR-ING|
00002080: 20 20 20 46 52 4F 4D 2C 20 53 4F 20 49 54 20 43 | FROM, SO IT C|
00002090: 41 4E 20 47 4F 20 42 41 43 4B 20 54 48 45 52 45 |AN GO BACK THERE|
000020A0: 20 57 48 45 4E 20 49 54 20 20 20 48 49 54 53 20 | WHEN IT HITS |
000020B0: 54 48 45 20 4E 45 58 54 20 52 54 53 2E 20 62 55 |THE NEXT RTS. bU|
000020C0: 54 20 49 54 20 41 4C 53 4F 20 4C 45 54 53 20 59 |T IT ALSO LETS Y|
000020D0: 4F 55 20 48 41 56 45 20 41 20 53 45 43 4F 4E 44 |OU HAVE A SECOND|
000020E0: 2C 20 4F 52 20 41 20 54 48 49 52 44 2C 4F 52 20 |, OR A THIRD,OR |
000020F0: 41 4E 59 20 4E 55 4D 42 45 52 20 4F 46 20 4A 53 |ANY NUMBER OF JS|
00002100: 52 27 53 20 57 49 54 48 49 4E 20 45 41 43 48 20 |R'S WITHIN EACH |
00002110: 4F 54 48 45 52 20 42 45 46 4F 52 45 20 54 48 45 |OTHER BEFORE THE|
00002120: 20 20 20 46 49 52 53 54 20 52 54 53 2E 20 69 54 | FIRST RTS. iT|
00002130: 20 4D 41 4E 41 47 45 53 20 54 48 49 53 20 42 59 | MANAGES THIS BY|
00002140: 20 4C 45 41 56 49 4E 47 20 20 20 45 41 43 48 20 | LEAVING EACH |
00002150: 41 44 44 52 45 53 53 20 4A 53 52 2D 45 44 20 46 |ADDRESS JSR-ED F|
00002160: 52 4F 4D 20 4F 4E 20 54 4F 50 20 4F 46 20 41 20 |ROM ON TOP OF A |
00002170: 20 20 20 53 54 41 43 4B 20 49 54 20 4B 45 45 50 | STACK IT KEEP|
00002180: 53 20 49 4E 20 50 41 47 45 20 31 20 4F 46 20 4D |S IN PAGE 1 OF M|
00002190: 45 4D 4F 52 59 20 28 46 52 4F 4D 24 30 31 30 30 |EMORY (FROM$0100|
000021A0: 20 54 4F 20 24 30 31 46 46 29 2E 20 77 48 45 4E | TO $01FF). wHEN|
000021B0: 20 49 54 20 43 4F 4D 45 53 20 54 4F 20 41 20 52 | IT COMES TO A R|
000021C0: 54 53 2C 49 54 20 50 55 4C 4C 53 20 54 48 45 20 |TS,IT PULLS THE |
000021D0: 41 44 44 52 45 53 53 20 54 4F 20 52 45 54 55 52 |ADDRESS TO RETUR|
000021E0: 4E 20 54 4F 20 4F 46 46 20 20 20 54 48 45 20 54 |N TO OFF THE T|
000021F0: 4F 50 20 4F 46 20 54 48 45 20 53 54 41 43 4B 2C |OP OF THE STACK,|
00002200: 20 4C 45 41 56 49 4E 47 20 54 48 45 20 4E 45 58 | LEAVING THE NEX|
00002210: 54 20 20 41 44 44 52 45 53 53 20 44 4F 57 4E 20 |T ADDRESS DOWN |
00002220: 46 4F 52 20 54 48 45 20 4E 45 58 54 20 52 54 53 |FOR THE NEXT RTS|
00002230: 2E 0D 0D 20 20 74 48 45 20 53 54 41 43 4B 20 53 |... tHE STACK S|
00002240: 54 41 52 54 53 20 41 54 20 24 30 31 46 46 20 41 |TARTS AT $01FF A|
00002250: 4E 44 20 47 52 4F 57 53 20 20 20 44 4F 57 4E 57 |ND GROWS DOWNW|
00002260: 41 52 44 53 20 54 4F 57 41 52 44 53 20 24 30 31 |ARDS TOWARDS $01|
00002270: 30 30 2E 20 73 49 4E 43 45 20 4F 4E 45 20 20 20 |00. sINCE ONE |
00002280: 20 20 20 41 44 44 52 45 53 53 20 49 53 20 54 57 | ADDRESS IS TW|
00002290: 4F 20 42 59 54 45 53 20 4C 4F 4E 47 2C 20 4F 4E |O BYTES LONG, ON|
000022A0: 4C 59 20 31 32 38 20 20 20 20 20 41 44 44 52 45 |LY 128 ADDRE|
000022B0: 53 53 45 53 20 43 41 4E 20 42 45 20 4B 45 50 54 |SSES CAN BE KEPT|
000022C0: 20 4F 4E 20 54 48 45 20 53 54 41 43 4B 2E 0D 5E | ON THE STACK..^|
000022D0: 0D 0D 20 20 20 20 20 20 20 74 48 45 20 73 54 41 |.. tHE sTA|
000022E0: 43 4B 20 28 63 4F 4E 54 49 4E 55 45 44 29 0D 0D |CK (cONTINUED)..|
000022F0: 20 20 69 46 20 59 4F 55 20 54 52 59 20 54 4F 20 | iF YOU TRY TO |
00002300: 50 55 54 20 4D 4F 52 45 20 4F 4E 20 54 48 45 20 |PUT MORE ON THE |
00002310: 53 54 41 43 4B 2C 20 20 49 54 20 22 57 52 41 50 |STACK, IT "WRAP|
00002320: 53 20 41 52 4F 55 4E 44 22 20 41 4E 44 20 53 54 |S AROUND" AND ST|
00002330: 41 52 54 53 20 4F 56 45 52 20 41 54 20 20 20 20 |ARTS OVER AT |
00002340: 24 30 31 46 46 2C 20 44 45 53 54 52 4F 59 49 4E |$01FF, DESTROYIN|
00002350: 47 20 54 48 45 20 46 49 52 53 54 20 46 45 57 20 |G THE FIRST FEW |
00002360: 42 49 54 53 20 4F 46 20 49 4E 46 4F 52 4D 41 54 |BITS OF INFORMAT|
00002370: 49 4F 4E 20 54 48 45 52 45 2E 20 6E 4F 52 4D 41 |ION THERE. nORMA|
00002380: 4C 4C 59 2C 20 54 48 49 53 20 49 53 20 4E 4F 54 |LLY, THIS IS NOT|
00002390: 41 20 50 52 4F 42 4C 45 4D 2E 20 74 48 45 20 53 |A PROBLEM. tHE S|
000023A0: 54 41 43 4B 20 49 53 20 42 49 47 20 45 4E 4F 55 |TACK IS BIG ENOU|
000023B0: 47 48 2E 0D 0D 20 20 74 48 45 20 36 35 31 30 20 |GH... tHE 6510 |
000023C0: 4B 45 45 50 53 20 54 52 41 43 4B 20 4F 46 20 54 |KEEPS TRACK OF T|
000023D0: 48 45 20 54 4F 50 20 4F 46 20 54 48 45 53 54 41 |HE TOP OF THESTA|
000023E0: 43 4B 20 57 49 54 48 20 54 48 45 20 53 50 20 52 |CK WITH THE SP R|
000023F0: 45 47 49 53 54 45 52 2C 20 54 48 45 20 53 54 41 |EGISTER, THE STA|
00002400: 43 4B 20 20 20 50 4F 49 4E 54 45 52 2E 20 77 48 |CK POINTER. wH|
00002410: 45 4E 20 49 54 20 50 55 54 53 20 53 4F 4D 45 54 |EN IT PUTS SOMET|
00002420: 48 49 4E 47 20 4F 4E 20 4F 52 20 20 20 54 41 4B |HING ON OR TAK|
00002430: 45 53 20 53 4F 4D 45 54 48 49 4E 47 20 4F 46 46 |ES SOMETHING OFF|
00002440: 20 54 48 45 20 53 54 41 43 4B 2C 20 49 54 20 20 | THE STACK, IT |
00002450: 20 20 20 20 20 41 44 4A 55 53 54 53 20 54 48 45 | ADJUSTS THE|
00002460: 20 53 54 41 43 4B 20 50 4F 49 4E 54 45 52 20 53 | STACK POINTER S|
00002470: 4F 20 49 54 20 41 4C 57 41 59 53 20 20 50 4F 49 |O IT ALWAYS POI|
00002480: 4E 54 53 20 54 4F 20 54 48 45 20 41 44 44 52 45 |NTS TO THE ADDRE|
00002490: 53 53 20 4F 46 20 54 48 45 20 54 4F 50 20 49 54 |SS OF THE TOP IT|
000024A0: 45 4D 20 20 20 4F 4E 20 54 48 45 20 53 54 41 43 |EM ON THE STAC|
000024B0: 4B 2E 20 69 46 20 59 4F 55 20 4E 45 45 44 20 54 |K. iF YOU NEED T|
000024C0: 4F 20 4B 4E 4F 57 20 57 48 41 54 27 53 49 4E 20 |O KNOW WHAT'SIN |
000024D0: 54 48 45 20 53 54 41 43 4B 20 50 4F 49 4E 54 45 |THE STACK POINTE|
000024E0: 52 20 28 46 45 57 20 50 45 4F 50 4C 45 20 44 4F |R (FEW PEOPLE DO|
000024F0: 29 2C 20 20 20 54 58 53 20 41 4E 44 20 54 53 58 |), TXS AND TSX|
00002500: 20 54 52 41 4E 53 46 45 52 20 54 48 45 20 78 20 | TRANSFER THE x |
00002510: 52 45 47 49 53 54 45 52 20 54 4F 20 20 54 48 45 |REGISTER TO THE|
00002520: 20 53 54 41 43 4B 20 50 4F 49 4E 54 45 52 20 41 | STACK POINTER A|
00002530: 4E 44 20 56 49 43 45 20 56 45 52 53 41 2E 20 74 |ND VICE VERSA. t|
00002540: 48 45 20 20 20 24 30 31 20 41 54 20 54 48 45 20 |HE $01 AT THE |
00002550: 53 54 41 52 54 20 4F 46 20 54 48 45 20 41 44 44 |START OF THE ADD|
00002560: 52 45 53 53 20 49 53 20 4E 4F 54 20 20 54 52 41 |RESS IS NOT TRA|
00002570: 4E 53 46 45 52 52 45 44 2C 20 42 55 54 20 53 49 |NSFERRED, BUT SI|
00002580: 4D 50 4C 59 20 41 53 53 55 4D 45 44 2E 0D 5E 0D |MPLY ASSUMED..^.|
00002590: 0D 20 20 20 20 20 20 20 74 48 45 20 73 54 41 43 |. tHE sTAC|
000025A0: 4B 20 28 63 4F 4E 54 49 4E 55 45 44 29 0D 0D 20 |K (cONTINUED).. |
000025B0: 20 6D 4F 52 45 20 55 53 45 46 55 4C 20 53 54 41 | mORE USEFUL STA|
000025C0: 43 4B 20 49 4E 53 54 52 55 43 54 49 4F 4E 53 20 |CK INSTRUCTIONS |
000025D0: 41 52 45 20 50 48 41 28 22 70 55 53 68 20 61 43 |ARE PHA("pUSh aC|
000025E0: 43 55 4D 55 4C 41 54 4F 52 20 4F 4E 54 4F 20 53 |CUMULATOR ONTO S|
000025F0: 54 41 43 4B 22 29 20 41 4E 44 20 50 4C 41 20 28 |TACK") AND PLA (|
00002600: 22 70 55 6C 4C 20 61 43 43 55 4D 55 4C 41 54 4F |"pUlL aCCUMULATO|
00002610: 52 20 4F 46 46 20 53 54 41 43 4B 22 29 2C 20 57 |R OFF STACK"), W|
00002620: 48 49 43 48 20 20 20 41 4C 4C 4F 57 20 54 48 45 |HICH ALLOW THE|
00002630: 20 41 43 43 55 4D 55 4C 41 54 4F 52 20 54 4F 20 | ACCUMULATOR TO |
00002640: 42 45 20 47 4F 54 54 45 4E 20 4F 55 54 20 20 4F |BE GOTTEN OUT O|
00002650: 46 20 54 48 45 20 57 41 59 20 54 45 4D 50 4F 52 |F THE WAY TEMPOR|
00002660: 41 52 49 4C 59 20 57 49 54 48 4F 55 54 20 48 41 |ARILY WITHOUT HA|
00002670: 56 49 4E 47 20 54 4F 53 50 45 43 49 41 4C 4C 59 |VING TOSPECIALLY|
00002680: 20 52 45 53 45 52 56 45 20 41 20 50 4C 41 43 45 | RESERVE A PLACE|
00002690: 20 49 4E 20 4D 45 4D 4F 52 59 20 46 4F 52 20 49 | IN MEMORY FOR I|
000026A0: 54 2E 20 73 4F 4D 45 54 49 4D 45 53 20 59 4F 55 |T. sOMETIMES YOU|
000026B0: 20 57 49 4C 4C 20 53 45 45 20 22 50 48 41 20 20 | WILL SEE "PHA |
000026C0: 54 58 41 20 20 20 20 50 48 41 20 20 54 59 41 20 |TXA PHA TYA |
000026D0: 20 50 48 41 22 20 55 53 45 44 20 54 4F 20 53 54 | PHA" USED TO ST|
000026E0: 4F 52 45 20 41 4C 4C 20 54 48 45 20 20 20 20 36 |ORE ALL THE 6|
000026F0: 35 31 30 27 53 20 52 45 47 49 53 54 45 52 53 20 |510'S REGISTERS |
00002700: 4F 55 54 20 4F 46 20 48 41 52 4D 27 53 20 57 41 |OUT OF HARM'S WA|
00002710: 59 2E 0D 0D 20 20 6E 4F 54 45 20 54 48 41 54 20 |Y... nOTE THAT |
00002720: 54 48 49 53 20 43 41 4E 20 4F 4E 4C 59 20 42 45 |THIS CAN ONLY BE|
00002730: 20 55 53 45 44 20 20 20 20 20 20 20 54 45 4D 50 | USED TEMP|
00002740: 4F 52 41 52 49 4C 59 2C 20 42 45 43 41 55 53 45 |ORARILY, BECAUSE|
00002750: 20 49 46 20 41 4E 20 52 54 53 20 49 53 20 20 20 | IF AN RTS IS |
00002760: 20 20 20 20 45 58 45 43 55 54 45 44 20 42 45 46 | EXECUTED BEF|
00002770: 4F 52 45 20 54 48 45 20 56 41 4C 55 45 20 49 53 |ORE THE VALUE IS|
00002780: 20 52 45 4D 4F 56 45 44 20 20 20 20 41 47 41 49 | REMOVED AGAI|
00002790: 4E 20 28 42 59 20 50 4C 41 29 2C 20 54 48 45 4E |N (BY PLA), THEN|
000027A0: 20 54 48 45 20 36 35 31 30 20 57 49 4C 4C 20 54 | THE 6510 WILL T|
000027B0: 41 4B 45 20 54 48 45 20 41 43 43 55 4D 55 4C 41 |AKE THE ACCUMULA|
000027C0: 54 4F 52 27 53 20 53 54 4F 52 45 44 20 56 41 4C |TOR'S STORED VAL|
000027D0: 55 45 20 41 4E 44 20 54 48 45 20 20 57 52 4F 4E |UE AND THE WRON|
000027E0: 47 20 48 41 4C 46 20 4F 46 20 54 48 45 20 41 44 |G HALF OF THE AD|
000027F0: 44 52 45 53 53 20 42 45 4C 4F 57 20 49 54 20 41 |DRESS BELOW IT A|
00002800: 53 20 41 4E 41 44 44 52 45 53 53 2C 20 41 4E 44 |S ANADDRESS, AND|
00002810: 20 52 54 53 20 54 4F 20 4E 45 56 45 52 2D 4E 45 | RTS TO NEVER-NE|
00002820: 56 45 52 20 4C 41 4E 44 2E 20 62 45 43 41 52 45 |VER LAND. bECARE|
00002830: 46 55 4C 21 0D 5E 0D 0D 20 20 20 20 20 20 20 74 |FUL!.^.. t|
00002840: 48 45 20 73 54 41 43 4B 20 28 63 4F 4E 54 49 4E |HE sTACK (cONTIN|
00002850: 55 45 44 29 0D 0D 20 79 4F 55 20 43 41 4E 2C 20 |UED).. yOU CAN, |
00002860: 48 4F 57 45 56 45 52 2C 20 4C 45 41 56 45 20 41 |HOWEVER, LEAVE A|
00002870: 20 4E 55 4D 42 45 52 20 4F 4E 20 54 48 45 53 54 | NUMBER ON THEST|
00002880: 41 43 4B 2C 20 44 4F 20 41 20 4A 53 52 2C 20 41 |ACK, DO A JSR, A|
00002890: 4E 44 20 52 45 54 52 49 45 56 45 20 49 54 20 41 |ND RETRIEVE IT A|
000028A0: 46 54 45 52 20 20 54 48 45 20 52 54 53 2E 20 74 |FTER THE RTS. t|
000028B0: 48 49 53 20 49 53 20 56 45 52 59 20 55 53 45 46 |HIS IS VERY USEF|
000028C0: 55 4C 20 49 46 20 59 4F 55 20 57 41 4E 54 41 20 |UL IF YOU WANTA |
000028D0: 53 55 42 52 4F 55 54 49 4E 45 20 54 4F 20 43 41 |SUBROUTINE TO CA|
000028E0: 4C 4C 20 49 54 53 45 4C 46 20 42 55 54 20 54 4F |LL ITSELF BUT TO|
000028F0: 20 4B 45 45 50 20 53 4F 4D 45 20 56 41 4C 55 45 | KEEP SOME VALUE|
00002900: 20 46 4F 52 20 55 53 45 20 41 46 54 45 52 20 54 | FOR USE AFTER T|
00002910: 48 45 20 45 4E 44 20 4F 46 20 54 48 45 20 53 55 |HE END OF THE SU|
00002920: 42 52 4F 55 54 49 4E 45 2E 20 61 44 56 41 4E 43 |BROUTINE. aDVANC|
00002930: 45 44 2C 20 42 55 54 20 55 53 45 46 55 4C 2E 0D |ED, BUT USEFUL..|
00002940: 0D 20 20 74 48 45 20 52 45 4D 41 49 4E 49 4E 47 |. tHE REMAINING|
00002950: 20 54 57 4F 20 49 4E 53 54 52 55 43 54 49 4F 4E | TWO INSTRUCTION|
00002960: 53 20 57 48 49 43 48 20 20 41 46 46 45 43 54 20 |S WHICH AFFECT |
00002970: 54 48 45 20 53 54 41 43 4B 20 41 52 45 20 50 48 |THE STACK ARE PH|
00002980: 50 20 28 70 55 53 68 20 70 20 20 20 20 20 20 20 |P (pUSh p |
00002990: 20 52 45 47 49 53 54 45 52 29 20 41 4E 44 20 50 | REGISTER) AND P|
000029A0: 4C 50 20 28 70 55 6C 4C 20 70 20 52 45 47 49 53 |LP (pUlL p REGIS|
000029B0: 54 45 52 29 2C 20 20 20 20 57 48 49 43 48 20 41 |TER), WHICH A|
000029C0: 4C 4C 4F 57 20 59 4F 55 20 54 4F 20 4B 45 45 50 |LLOW YOU TO KEEP|
000029D0: 20 41 4C 4C 20 54 48 45 20 46 4C 41 47 53 20 20 | ALL THE FLAGS |
000029E0: 20 53 41 46 45 20 4F 4E 20 54 48 45 20 53 54 41 | SAFE ON THE STA|
000029F0: 43 4B 20 46 4F 52 20 41 20 57 48 49 4C 45 2E 20 |CK FOR A WHILE. |
00002A00: 70 48 50 20 50 4C 41 20 20 49 53 20 41 4C 53 4F |pHP PLA IS ALSO|
00002A10: 20 54 48 45 20 4F 4E 4C 59 20 57 41 59 20 54 4F | THE ONLY WAY TO|
00002A20: 20 4C 4F 4F 4B 20 41 54 20 53 4F 4D 45 20 20 20 | LOOK AT SOME |
00002A30: 20 46 4C 41 47 53 2C 4E 4F 54 41 42 4C 59 20 54 | FLAGS,NOTABLY T|
00002A40: 48 45 20 31 20 46 4C 41 47 20 41 4E 44 20 54 48 |HE 1 FLAG AND TH|
00002A50: 45 20 62 20 46 4C 41 47 2E 0D 20 20 6C 49 4B 45 |E b FLAG.. lIKE|
00002A60: 20 50 48 41 2C 20 41 20 50 48 50 20 4D 55 53 54 | PHA, A PHP MUST|
00002A70: 20 42 45 20 42 41 4C 41 4E 43 45 44 20 42 59 20 | BE BALANCED BY |
00002A80: 41 20 50 4C 50 20 42 45 46 4F 52 45 20 41 4E 20 |A PLP BEFORE AN |
00002A90: 52 54 53 20 41 54 54 45 4D 50 54 53 20 54 4F 20 |RTS ATTEMPTS TO |
00002AA0: 55 53 45 20 54 48 45 20 20 20 53 54 4F 52 45 44 |USE THE STORED|
00002AB0: 20 50 20 52 45 47 49 53 54 45 52 20 41 53 20 50 | P REGISTER AS P|
00002AC0: 41 52 54 20 4F 46 20 41 4E 20 41 44 44 52 45 53 |ART OF AN ADDRES|
00002AD0: 53 2E 5E 0D 0D 20 20 20 20 20 20 20 74 48 45 20 |S.^.. tHE |
00002AE0: 73 54 41 43 4B 20 28 63 4F 4E 54 49 4E 55 45 44 |sTACK (cONTINUED|
00002AF0: 29 0D 0D 20 20 74 48 49 53 20 43 41 4E 20 42 45 |).. tHIS CAN BE|
00002B00: 20 55 53 45 44 20 54 4F 20 59 4F 55 52 20 41 44 | USED TO YOUR AD|
00002B10: 56 41 4E 54 41 47 45 20 49 46 20 59 4F 55 20 57 |VANTAGE IF YOU W|
00002B20: 41 4E 54 20 54 4F 2C 20 52 54 53 20 54 4F 2C 20 |ANT TO, RTS TO, |
00002B30: 53 41 59 2C 20 54 48 45 20 4A 53 52 20 54 57 4F |SAY, THE JSR TWO|
00002B40: 20 20 20 53 54 45 50 53 20 42 41 43 4B 2C 20 49 | STEPS BACK, I|
00002B50: 4E 53 54 45 41 44 20 4F 46 20 54 48 45 20 20 55 |NSTEAD OF THE U|
00002B60: 53 55 41 4C 20 4F 4E 45 2E 20 20 22 70 4C 41 20 |SUAL ONE. "pLA |
00002B70: 20 50 4C 41 22 20 57 49 4C 4C 20 52 45 4D 4F 56 | PLA" WILL REMOV|
00002B80: 45 20 54 48 45 20 4D 4F 53 54 20 52 45 43 45 4E |E THE MOST RECEN|
00002B90: 54 20 20 41 44 44 52 45 53 53 20 46 52 4F 4D 20 |T ADDRESS FROM |
00002BA0: 54 48 45 20 53 54 41 43 4B 2C 20 4C 45 41 56 49 |THE STACK, LEAVI|
00002BB0: 4E 47 20 54 48 45 20 4E 45 58 54 4F 4E 45 20 44 |NG THE NEXTONE D|
00002BC0: 4F 57 4E 20 4F 4E 20 54 4F 50 2E 0D 0D 20 20 79 |OWN ON TOP... y|
00002BD0: 4F 55 20 43 41 4E 20 41 4C 53 4F 20 46 4F 4F 4C |OU CAN ALSO FOOL|
00002BE0: 20 52 54 53 20 49 4E 54 4F 20 52 45 54 55 52 4E | RTS INTO RETURN|
00002BF0: 49 4E 47 20 20 54 4F 20 41 20 44 49 46 46 45 52 |ING TO A DIFFER|
00002C00: 45 4E 54 20 41 44 44 52 45 53 53 20 46 52 4F 4D |ENT ADDRESS FROM|
00002C10: 20 54 48 45 20 4F 4E 45 20 4A 53 52 2D 45 44 20 | THE ONE JSR-ED |
00002C20: 46 52 4F 4D 2E 20 70 48 41 20 54 48 45 20 41 44 |FROM. pHA THE AD|
00002C30: 44 52 45 53 53 20 4F 4E 54 4F 20 54 48 45 20 53 |DRESS ONTO THE S|
00002C40: 54 41 43 4B 20 41 4E 44 20 4A 4D 50 20 54 4F 20 |TACK AND JMP TO |
00002C50: 54 48 45 20 53 55 42 52 4F 55 54 49 4E 45 2E 20 |THE SUBROUTINE. |
00002C60: 61 43 54 55 41 4C 4C 59 20 59 4F 55 20 53 48 4F |aCTUALLY YOU SHO|
00002C70: 55 4C 44 20 50 48 41 20 54 48 45 20 41 44 44 52 |ULD PHA THE ADDR|
00002C80: 45 53 53 2D 31 20 28 4D 49 4E 55 53 20 4F 4E 45 |ESS-1 (MINUS ONE|
00002C90: 29 20 20 20 20 4F 4E 54 4F 20 54 48 45 20 53 54 |) ONTO THE ST|
00002CA0: 41 43 4B 2C 20 48 49 47 48 20 42 59 54 45 20 28 |ACK, HIGH BYTE (|
00002CB0: 54 48 45 20 24 41 42 20 49 4E 20 20 20 24 41 42 |THE $AB IN $AB|
00002CC0: 43 44 29 20 46 49 52 53 54 2E 0D 0D 20 20 74 48 |CD) FIRST... tH|
00002CD0: 49 53 20 49 53 20 47 45 54 54 49 4E 47 20 50 52 |IS IS GETTING PR|
00002CE0: 45 54 54 59 20 41 42 54 52 55 53 45 2C 20 41 4E |ETTY ABTRUSE, AN|
00002CF0: 44 20 20 20 49 54 20 57 49 4C 4C 20 50 52 4F 42 |D IT WILL PROB|
00002D00: 41 42 4C 59 20 42 45 20 41 20 57 48 49 4C 45 20 |ABLY BE A WHILE |
00002D10: 42 45 46 4F 52 45 20 59 4F 55 20 20 53 54 41 52 |BEFORE YOU STAR|
00002D20: 54 20 50 4C 41 59 49 4E 47 20 57 49 54 48 20 54 |T PLAYING WITH T|
00002D30: 48 45 20 53 54 41 43 4B 2E 20 62 55 54 20 49 54 |HE STACK. bUT IT|
00002D40: 20 49 53 20 57 4F 52 54 48 20 4B 4E 4F 57 49 4E | IS WORTH KNOWIN|
00002D50: 47 20 57 48 41 54 20 54 48 45 20 53 54 41 43 4B |G WHAT THE STACK|
00002D60: 20 43 41 4E 20 44 4F 2E 0D 5E 0D 20 20 20 20 20 | CAN DO..^. |
00002D70: 20 20 20 75 53 49 4E 47 20 62 41 53 49 43 20 46 | uSING bASIC F|
00002D80: 52 4F 4D 20 6D 6C 0D 0D 20 20 61 53 20 59 4F 55 |ROM ml.. aS YOU|
00002D90: 20 4B 4E 4F 57 2C 20 62 41 53 49 43 20 49 53 20 | KNOW, bASIC IS |
00002DA0: 41 4E 20 6D 6C 20 50 52 4F 47 52 41 4D 2E 20 20 |AN ml PROGRAM. |
00002DB0: 73 4F 4D 45 20 42 49 54 53 20 4F 46 20 49 54 20 |sOME BITS OF IT |
00002DC0: 44 4F 20 55 53 45 46 55 4C 20 54 48 49 4E 47 53 |DO USEFUL THINGS|
00002DD0: 20 53 55 43 48 20 41 53 43 4C 45 41 52 49 4E 47 | SUCH ASCLEARING|
00002DE0: 20 54 48 45 20 53 43 52 45 45 4E 2C 20 50 52 49 | THE SCREEN, PRI|
00002DF0: 4E 54 49 4E 47 20 43 48 41 52 41 43 54 45 52 53 |NTING CHARACTERS|
00002E00: 54 4F 20 54 48 45 20 53 43 52 45 45 4E 20 28 45 |TO THE SCREEN (E|
00002E10: 41 53 59 2C 20 45 48 3F 20 54 52 59 20 22 44 45 |ASY, EH? TRY "DE|
00002E20: 4C 45 54 45 22 2E 29 20 41 4E 44 20 43 4F 4D 4D |LETE".) AND COMM|
00002E30: 55 4E 49 43 41 54 49 4E 47 20 57 49 54 48 20 54 |UNICATING WITH T|
00002E40: 48 45 20 44 49 53 4B 20 44 52 49 56 45 2E 0D 0D |HE DISK DRIVE...|
00002E50: 20 20 6F 4E 20 54 48 45 20 4E 45 58 54 20 50 41 | oN THE NEXT PA|
00002E60: 47 45 20 41 52 45 20 4A 55 53 54 20 41 20 46 45 |GE ARE JUST A FE|
00002E70: 57 20 4F 46 20 54 48 45 45 41 53 49 45 52 20 52 |W OF THEEASIER R|
00002E80: 4F 55 54 49 4E 45 53 20 54 4F 20 55 53 45 2E 20 |OUTINES TO USE. |
00002E90: 74 48 45 52 45 20 41 52 45 20 4F 56 45 52 20 20 |tHERE ARE OVER |
00002EA0: 31 30 30 20 41 56 41 49 4C 41 42 4C 45 2C 20 41 |100 AVAILABLE, A|
00002EB0: 4E 44 20 54 48 45 20 55 53 45 20 4F 46 20 41 20 |ND THE USE OF A |
00002EC0: 47 4F 4F 44 0D 52 45 46 45 52 45 4E 43 45 20 42 |GOOD.REFERENCE B|
00002ED0: 4F 4F 4B 20 49 53 20 52 45 43 4F 4D 4D 45 4E 44 |OOK IS RECOMMEND|
00002EE0: 45 44 2E 0D 5E 0D 0D 63 68 72 6F 75 74 20 24 46 |ED..^..chrout $F|
00002EF0: 46 44 32 20 20 74 48 49 53 20 52 4F 55 54 49 4E |FD2 tHIS ROUTIN|
00002F00: 45 20 50 52 49 4E 54 53 20 54 48 45 20 20 20 20 |E PRINTS THE |
00002F10: 20 43 48 41 52 41 43 54 45 52 20 49 4E 20 54 48 | CHARACTER IN TH|
00002F20: 45 20 41 43 43 55 4D 55 4C 41 54 4F 52 2E 0D 63 |E ACCUMULATOR..c|
00002F30: 68 72 69 6E 20 20 24 46 46 43 46 20 72 45 54 55 |hrin $FFCF rETU|
00002F40: 52 4E 53 20 41 20 43 48 41 52 41 43 54 45 52 20 |RNS A CHARACTER |
00002F50: 46 52 4F 4D 20 20 20 20 20 54 48 45 20 49 4E 50 |FROM THE INP|
00002F60: 55 54 20 42 55 46 46 45 52 20 49 4E 20 54 48 45 |UT BUFFER IN THE|
00002F70: 20 41 43 43 55 4D 55 4C 41 54 4F 52 2E 20 20 20 | ACCUMULATOR. |
00002F80: 20 69 46 20 54 48 45 20 42 55 46 46 45 52 27 53 | iF THE BUFFER'S|
00002F90: 20 45 4D 50 54 59 2C 20 46 49 4C 4C 53 20 49 54 | EMPTY, FILLS IT|
00002FA0: 20 42 59 20 20 20 20 20 20 41 43 43 45 50 54 49 | BY ACCEPTI|
00002FB0: 4E 47 20 41 20 4C 49 4E 45 20 55 4E 54 49 4C 20 |NG A LINE UNTIL |
00002FC0: 41 20 72 65 74 75 72 6E 2E 0D 67 65 74 69 6E 20 |A return..getin |
00002FD0: 20 24 46 46 45 34 20 6C 49 4B 45 20 62 41 53 49 | $FFE4 lIKE bASI|
00002FE0: 43 20 67 65 74 2E 20 72 45 54 55 52 4E 53 20 20 |C get. rETURNS |
00002FF0: 20 20 20 20 44 41 54 41 20 49 4E 20 54 48 45 20 | DATA IN THE |
00003000: 41 43 43 55 4D 55 4C 41 54 4F 52 2C 20 4F 52 20 |ACCUMULATOR, OR |
00003010: 30 20 49 46 20 4E 4F 20 20 20 20 20 4B 45 59 20 |0 IF NO KEY |
00003020: 48 41 53 20 42 45 45 4E 20 50 52 45 53 53 45 44 |HAS BEEN PRESSED|
00003030: 2E 0D 20 20 20 20 20 20 20 24 42 44 43 44 20 70 |.. $BDCD p|
00003040: 52 49 4E 54 53 20 28 49 4E 20 44 45 43 49 4D 41 |RINTS (IN DECIMA|
00003050: 4C 29 20 54 48 45 20 32 2D 20 20 20 42 59 54 45 |L) THE 2- BYTE|
00003060: 20 4E 55 4D 42 45 52 20 49 4E 20 54 48 45 20 41 | NUMBER IN THE A|
00003070: 43 43 55 4D 55 4C 41 54 4F 52 20 41 4E 44 20 58 |CCUMULATOR AND X|
00003080: 20 20 20 20 52 45 47 49 53 54 45 52 20 28 4C 4F | REGISTER (LO|
00003090: 57 20 48 41 4C 46 20 49 4E 20 58 29 2E 0D 70 6C |W HALF IN X)..pl|
000030A0: 6F 74 20 20 20 24 46 46 46 30 20 63 55 52 53 4F |ot $FFF0 cURSO|
000030B0: 52 20 43 4F 4C 55 4D 4E 20 49 4E 20 58 20 41 4E |R COLUMN IN X AN|
000030C0: 44 20 20 20 20 20 20 20 43 55 52 53 4F 52 20 52 |D CURSOR R|
000030D0: 4F 57 20 49 4E 20 59 2E 20 69 46 20 63 20 49 53 |OW IN Y. iF c IS|
000030E0: 20 53 45 54 2C 20 52 45 54 55 52 4E 53 20 20 20 | SET, RETURNS |
000030F0: 54 48 45 20 43 55 52 52 45 4E 54 20 56 41 4C 55 |THE CURRENT VALU|
00003100: 45 53 2E 20 69 46 20 63 3D 30 2C 20 53 45 54 53 |ES. iF c=0, SETS|
00003110: 20 54 48 45 20 20 20 20 43 55 52 53 4F 52 20 54 | THE CURSOR T|
00003120: 4F 20 54 48 45 20 53 50 45 43 49 46 49 45 44 20 |O THE SPECIFIED |
00003130: 50 4F 53 49 54 49 4F 4E 2E 0D 20 20 20 20 20 20 |POSITION.. |
00003140: 20 24 41 34 37 34 20 74 48 49 53 20 48 41 53 20 | $A474 tHIS HAS |
00003150: 54 48 45 20 53 41 4D 45 20 45 46 46 45 43 54 20 |THE SAME EFFECT |
00003160: 41 53 20 20 20 48 49 54 54 49 4E 47 20 73 74 6F |AS HITTING sto|
00003170: 70 2F 72 65 73 74 6F 72 65 2E 0D 20 20 20 20 20 |p/restore.. |
00003180: 20 20 24 46 43 45 32 20 74 48 49 53 20 49 53 20 | $FCE2 tHIS IS |
00003190: 54 48 45 20 53 41 4D 45 20 41 53 20 54 55 52 4E |THE SAME AS TURN|
000031A0: 49 4E 47 20 20 20 54 48 45 20 43 4F 4D 50 55 54 |ING THE COMPUT|
000031B0: 45 52 20 4F 46 46 20 41 4E 44 20 4F 4E 20 41 47 |ER OFF AND ON AG|
000031C0: 41 49 4E 0D 5E 0D 20 20 20 20 20 20 20 20 20 20 |AIN.^. |
000031D0: 74 48 41 54 27 53 20 61 4C 4C 20 66 4F 4C 4B 53 |tHAT'S aLL fOLKS|
000031E0: 0D 0D 20 20 74 48 55 53 20 45 4E 44 53 20 54 48 |.. tHUS ENDS TH|
000031F0: 49 53 20 50 4F 54 50 4F 55 52 52 49 20 4F 46 20 |IS POTPOURRI OF |
00003200: 49 44 45 41 53 2E 20 20 20 20 74 48 45 20 4E 45 |IDEAS. tHE NE|
00003210: 58 54 20 49 4E 53 54 41 4C 4D 45 4E 54 20 57 49 |XT INSTALMENT WI|
00003220: 4C 4C 20 57 52 41 50 20 55 50 20 54 48 45 20 20 |LL WRAP UP THE |
00003230: 20 20 53 45 52 49 45 53 20 57 49 54 48 20 41 20 | SERIES WITH A |
00003240: 4E 55 4D 42 45 52 20 4F 46 20 53 41 4D 50 4C 45 |NUMBER OF SAMPLE|
00003250: 20 6D 6C 20 20 20 20 20 20 20 50 52 4F 47 52 41 | ml PROGRA|
00003260: 4D 53 20 54 4F 20 52 55 4E 20 54 48 52 4F 55 47 |MS TO RUN THROUG|
00003270: 48 20 41 4E 20 41 53 53 45 4D 42 4C 45 52 20 41 |H AN ASSEMBLER A|
00003280: 4E 44 4D 4F 52 45 20 49 4E 46 4F 52 4D 41 54 49 |NDMORE INFORMATI|
00003290: 4F 4E 20 41 4E 44 20 44 45 54 41 49 4C 20 4F 4E |ON AND DETAIL ON|
000032A0: 20 6D 6C 20 41 43 43 45 53 53 54 4F 20 62 41 53 | ml ACCESSTO bAS|
000032B0: 49 43 20 46 55 4E 43 54 49 4F 4E 53 2E 20 69 46 |IC FUNCTIONS. iF|
000032C0: 20 59 4F 55 27 56 45 20 4D 41 44 45 20 49 54 20 | YOU'VE MADE IT |
000032D0: 20 20 54 48 49 53 20 46 41 52 20 54 48 52 4F 55 | THIS FAR THROU|
000032E0: 47 48 20 54 48 45 20 4A 55 4E 47 4C 45 2C 20 59 |GH THE JUNGLE, Y|
000032F0: 4F 55 27 52 45 20 50 41 53 54 54 48 45 20 48 41 |OU'RE PASTTHE HA|
00003300: 52 44 20 50 41 52 54 2E 20 69 54 27 53 20 4A 55 |RD PART. iT'S JU|
00003310: 53 54 20 44 45 54 41 49 4C 53 20 54 48 41 54 20 |ST DETAILS THAT |
00003320: 20 20 41 52 45 20 4C 45 46 54 20 54 4F 20 57 4F | ARE LEFT TO WO|
00003330: 52 52 59 20 41 42 4F 55 54 2E 20 67 45 54 20 41 |RRY ABOUT. gET A|
00003340: 20 47 4F 4F 44 20 20 20 20 20 52 45 46 45 52 45 | GOOD REFERE|
00003350: 4E 43 45 20 42 4F 4F 4B 20 41 4E 44 20 54 52 59 |NCE BOOK AND TRY|
00003360: 20 54 48 49 4E 47 53 20 4F 55 54 21 20 79 4F 55 | THINGS OUT! yOU|
00003370: 20 20 41 52 45 20 41 54 20 54 48 45 20 53 54 41 | ARE AT THE STA|
00003380: 47 45 20 4F 46 20 6D 6C 20 45 51 55 49 56 41 4C |GE OF ml EQUIVAL|
00003390: 45 4E 54 20 54 4F 20 20 20 20 59 4F 55 52 20 46 |ENT TO YOUR F|
000033A0: 49 52 53 54 20 45 46 46 4F 52 54 53 20 49 4E 20 |IRST EFFORTS IN |
000033B0: 62 41 53 49 43 2E 20 79 4F 55 20 4B 4E 4F 57 20 |bASIC. yOU KNOW |
000033C0: 20 20 54 48 45 20 46 41 43 54 53 2C 20 41 4E 44 | THE FACTS, AND|
000033D0: 20 50 52 41 43 54 49 53 45 20 57 49 4C 4C 20 45 | PRACTISE WILL E|
000033E0: 4E 41 42 4C 45 20 59 4F 55 20 54 4F 20 44 4F 20 |NABLE YOU TO DO |
000033F0: 53 4F 4D 45 54 48 49 4E 47 20 57 49 54 48 20 57 |SOMETHING WITH W|
00003400: 48 41 54 20 59 4F 55 20 4B 4E 4F 57 2E 0D 0D 20 |HAT YOU KNOW... |
00003410: 20 72 45 4D 45 4D 42 45 52 3A 20 54 48 45 52 45 | rEMEMBER: THERE|
00003420: 27 53 20 34 6B 20 4F 46 20 4D 45 4D 4F 52 59 20 |'S 4k OF MEMORY |
00003430: 46 52 4F 4D 20 20 20 24 43 30 30 30 20 4F 4E 20 |FROM $C000 ON |
00003440: 4A 55 53 54 20 57 41 49 54 49 4E 47 20 54 4F 20 |JUST WAITING TO |
00003450: 42 45 20 46 49 4C 4C 45 44 20 57 49 54 48 20 6D |BE FILLED WITH m|
00003460: 6C 20 4F 46 20 59 4F 55 52 20 44 45 56 49 53 49 |l OF YOUR DEVISI|
00003470: 4E 47 2E 0D 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E |NG..^^^^^^^^^^^^|
00003480: 5E 5E 5E 5E |^^^^ |
JK^.. AN INTRODUCTION TO MACHINE LANGUA
GE.. THIS IS THE THIRD IN A SERIES OF
TUTORIALS ON MACHINE LANGUAGE. THE F
IRSTTWO COVERED THE CONCEPT OF AN ASSEMB
LER AND MANY OF THE ASSEMBLY-LANGUAGE 65
10 INSTRUCTIONS, APPLICABLE TO ANY COMP
UTERWHICH USES THE 6510 OR 6502 CPU.
KNOWLEDGE OF BINARY AND HEX IS ASSUM
ED... THIS INSTALMENT WILL COVER SOME O
THER,LESS COMMON INSTRUCTIONS, SOME TECH
NICALDETAILS, AND HOW TO USE BASIC FUNCT
IONS (LIKE PRINT,INPUT) FROM ML... ANYT
HING IN [SQUARE BRACKETS] IS THE NAME O
F A PIECE OF INFORMATION (A NUMBEROR BIT
OF PROGRAM) WHICH HAS BEEN LEFT OUT FO
R THE SAKE OF CLARITY AND BREVITY.SOMETH
ING MUST TAKE ITS PLACE TO MAKE A WORKIN
G ML PROGRAM...^. REVIEW OF PART
2.. IT IS ASSUMED THAT YOU KNOW THIS:..
6510 ML INSTRUCTIONS:.TAX, TXA, TAY &
TYA; LDA, LDX, LDY, STA,STX & STY; ADC,
SBC, CLC & SEC; BCC, BCS, BEQ, BNE, B
MI, BPL, BVS, & BVC; CMP; INX, INY, D
EX & DEY; JMP, JSR, RTS,AND JUMP INDIRE
CT [E.G. JMP($0306)]... ADDRESSING MODE
S:.IMMEDIATE; ABSOLUTE; ZERO PAGE;
ABSOLUTE,X; ABSOLUTE,Y; ZERO PAGE,X;
INDIRECT,Y; INDIRECT,X; AND RELATIVE.
.. 6510 STATUS FLAGS, ESPECIALLY:.C (CA
RRY), Z (ZERO), V (OVERFLOW), AND N
(NEGATIVE)... NEGATIVE NUMBERS IN BINA
RY...^.. BIT-MANIPULATION INSTRUCTIO
NS.. ALTHOUGH YOU NOW KNOW HOW TO ADD,
SUBTRACT, COMPARE AND MOVE BYTES AS
A WHOLE, THIS INSTALMENT WILL START WI
TH THE INSTRUCTIONS USED TO MANIPULATE
THE INDIVIDUAL BITS WITHIN A BYTE. THE F
IRSTOF THESE INSTRUCTIONS ARE:..ML BASI
C EXPLANATION..AND AND LOGICAL AND..OR
A OR LOGICAL OR. ("OR ACCUMULATOR")EO
R LOGICAL "EXCLUSIVE OR"...NOTE: E
OR HAS NO BASIC EQUIVALENT... BECAUSE T
HEY ARE NOT OFTEN USED THIS WAY, THE BA
SIC EQUIVALENTS MAY BE MISLEADING
IF YOU MAY HAVE ONLY USED.THEM WITH IF (
EG IF A=0 AND B=0 THEN..).^.. BIT-MANIP
ULATION INSTRUCTIONS (CONT'D). THESE CO
MMANDS TAKE TWO BYTES (ONE IN THE ACCUMU
LATOR AND ANOTHER SPECIFIED BYONE OF THE
ADDRESSING MODES), AND APPLY A RULE TO
CORRESPONDING BITS TO PRODUCE THE BITS O
F A RESULT BYTE, LEFT IN THE ACCUMULATO
R. THESE RULES ARE:..AND: IF A GIVEN BIT
IN BYTE 1 AND THE CORRESPONDING
BIT IN BYTE 2 IS SET, THE BIT IN THE
RESULT IS SET..ORA: IF A GIVEN BIT IN B
YTE 1 OR THE CORRESPONDING BIT I
N BYTE 2, OR BOTH, IS SET, THE B
IT IN THE RESULT IS SET..EOR: IF A G
IVEN BIT IN BYTE 1 OR THE CORRES
PONDING BIT IN BYTE 2, BUT NOT BO
TH, IS SET, THE BIT IN THE RESULT
IS SET..^.. BIT-MANIPULATION INSTRUCTI
ONS (CONT'D). HERE ARE SOME EXAMPLES US
ING 3 AND 6:..AND: %00000011 (3) 0
AND 0 = 0. %00000110 (6) 0 AND
1 = 0. --------- 1 AND 0 =
0. %00000010 (2) 1 AND 1 = 1...
OR: %00000011 (3) 0 OR 0 = 0.
%00000110 (6) 0 OR 1 = 1. ----
----- 1 OR 0 = 1. %00000111
(7) 1 OR 1 = 1...EOR: %00000011 (3
) 0 EOR 0 = 0. %00000110 (6)
0 EOR 1 = 1. --------- 1
EOR 0 = 1. %00000101 (5) 1 EOR
1 = 0.^.. BIT-MANIPULATION INSTRUCTIONS
(CONT'D). AS AN EXAMPLE OF USING THESE
INSTRUCTIONS, NOTE THAT MEMORY
ADDRESSESFROM 1024 TO 2023 ARE WHERE TH
E CONTENTSOF THE VIDEO SCREEN ARE STORED
, AND THATNORMAL CHARACTERS ARE REPRESEN
TED BY.VALUES FROM %00000000 TO %0111111
1, WITHTHEIR REVERSE FIELD EQUIVALENTS U
SING VALUES FROM %10000000 TO %1111111
1... THUS SWITCHING ONE BIT (BIT 7, IN
THE 128'S POSITION) ON (TO A 1) WILL REV
ERSEA CHARACTER ON THE SCREEN. FOR EXAMP
LE:..LDA 1024.ORA #%10000000.STA 1024..W
ILL REVERSE THE TOP LEFT CHARACTER..^..
BIT-MANIPULATION INSTRUCTIONS (CONT'D).
REPLACING "ORA %10000000" WITH "AND
%01111111" WOULD FORCE BIT 7 TO BE "0",
CAUSING THE PROGRAM TO CHANGE AN
INVERTED CHARACTER TO A NORMAL ONE... U
SING "EOR %10000000" INSTEAD OF "ORA %10
000000" WOULD FLIP BIT 7, INVERTING A "
NORMAL" CHARACTER AND RENDERING AN INV
ERTED CHARACTER NORMAL... THESE INSTRUC
TIONS ARE USED ANY TIME YOU NEED TO SET
, CLEAR, OR FLIP ONE OR AGROUP OF BITS.
THIS HAPPENS A LOT WITH THE C-64'S SPEC
IAL SOUND AND VIDEO CAPABILITIES, I
F YOU GET INTO THEM... THESE INSTRUCTIO
NS CAN USE ANY ADDRESSING MODES A
VAILABLE TO LDA AND ALL TAKE THE SAME
AMOUNT OF TIME AS LDA.^.. MORE BI
T-JUGGLING.. SOME OTHER INSTRUCTIONS US
ED TO MANIPULATE THE BITS IN A BYT
E ARE ASL (ARITHMETIC SHIFT LEFT), LSR
(LOGICAL SHIFT RIGHT), ROL (ROTATE LE
FT) AND ROR (ROTATE RIGHT). THESE INSTRU
CTIONS MOVE ALL THE BITS IN A BYTE LEFT
OR RIGHT, MULTIPLYING OR DIVIDING THE
BYTE'S VALUEBY 2... ALL THESE INSTRUCTI
ONS SET THE Z AND NFLAGS ACCORDING TO TH
E VALUE LEFT IN THEBYTE, AND THE BIT SHI
FTED OFF THE END OFTHE BYTE IS PLACED IN
THE C FLAG... ASL AND LSR ALWAYS SHIFT
A 0 INTO THE APPLICABLE END OF THE BYTE
, WHILE ROL AND ROR USE THE VALUE OF T
HE CARRY FLAG BEFORE THE OPERATION..^..
MORE BIT-JUGGLING (CONTINUED)..THUS,
TO MULTIPLY A TWO-BYTE NUMBER BY 2, USE
THE CARRY BIT TO HOLD THE BIT THAT J
UMPS THE BORDER BETWEEN BYTES:..LSR [LOW
BYTE OF NUMBER].ROL [HIGH BYTE OF NUMBE
R].. ADDING MORE ROL'S ALLOWS YOU TO US
E ANY NUMBER OF BYTES IN YOUR NUMBER..
. THESE INSTRUCTIONS CAN USE THE ZERO
PAGE; ZERO PAGE,X; ABSOLUTE AND
ABSOLUTE,X ADDRESSING MODES, AND ONE
FOUND NOWHERE ELSE: ACCUMULATOR... IN
THE ACCUMULATOR ADDRESSING MODE, THE A
CCUMULATOR IS SHIFTED INSTEAD OF A SPECI
FIED MEMORY LOCATION..^.. MORE BIT-JU
GGLING (CONTINUED).. SOME ASSEMBLERS US
E THE FORMAT "ASL", WITHOUT ANY FOLLOWIN
G ADDRESS TO INDICATE THAT THE AC
CUMULATOR MODE IS TO BE USED BY THE
ASL INSTRUCTION. SOME OTHER ASSEMBLER
S REQUIRE "ASL A", SPECIFYING THE ACCUM
ULATOR. THE GOLD DISK ASSEMBLER IN VO
LUME 11, WHICH YOU MAY BE USING, DOES N
OT REQUIRE THE EXTRA"A". SIMILARLY FOR L
SR, ROL AND ROR... AS AN ASIDE, OTHER I
NSTRUCTIONS SUCH AS TXA, PHP, ETC., WHI
CH "DON'T REALLY HAVE" ADDRESSING MODES
ARE SAID TO USE THE "IMPLIED" ADDRESSI
NG MODE IN ORDER TO GIVE ALL INSTRUCTIO
NS ADDRESSING MODES. THE DISTINCTION
FROM ACCUMULATOR MODE IS THAT OPCODES L
IKE ASL CAN.SPECIFY SEVERAL MODES, INCLU
DING.ACCUMULATOR..^.. MORE BIT-JUGGLI
NG (CONTINUED).. THESE INSTRUCTIONS ARE
USUALLY USED TOMULTIPLY NUMBERS TOGETHE
R. TO MULTIPLY BY THREE, FOR EXAMPLE, T
AKE THE NUMBER TO BE MULTIPLIED, ASL IT
, STORING THE RESULT OF THE SHIFT TEMP
ORARILY, AND ADDTHE UNDISTURBED ORIGINAL
NUMBER TO IT. [NUMBER]+[2XNUMBER]=[3XN
UMBER]. ANY NUMBER CAN BE USED IN SU
CH A PROCEDURE. TO MULTIPLY BY 6, SHIFT
THE RESULT OVER AGAIN... A GENERAL PROC
EDURE TO MULTIPLY ANY TWO VALUES TOGET
HER IS SOMEWHAT MORE.COMPLEX, BUT USES T
HE SAME IDEAS. ON THENEXT SCREEN IS A PR
OGRAM WHICH WILL DO THIS. IT WORKS RATH
ER LIKE THE LONG MULTIPLICATION YOU
LEARNED IN SCHOOL, TAKING TWO 1-BYTE N
UMBERS TO PRODUCE A 2-BYTE RESULT. WHY?
255*255=65025..^.. NUM1=$FB ;OR
ANYPLACE HANDY. NUM2=$FC. PRODUC
T=$FD ;$FE WILL BE USED ALSO. LDA #$
00 ;CLEAR RESULT AREA. STA PRODUC
T. STA PRODUCT+1. LDX #$08 ;C
OUNT # OF BITS.LOOP ASL NUM2 ;ISOLATE LE
FT-HAND BIT. BCC ZERO ;IF ZERO, DON'
T ADD NUM1. CLC ;PREPARE FOR AD
DITION. LDA NUM1 ;ADD NUM1 TO PRODUC
T. ADC PRODUCT. STA PRODUCT.
BCC ZERO ;TAKE CARE OF CARRY.
INC PRODUCT+1 ;IF TWO BYTES NEEDED.ZERO
DEX ;DO IT 8 TIMES. BNE OU
T ;IF FINISHED, LEAVE. ASL PRO
DUCT ;PRODUCT=PRODUCT*2. ROL PRODU
CT+1. JMP LOOP.OUT .....^.. MORE
BIT-JUGGLING (CONTINUED).. USING THE E
QUIVALENT STEPS IN DECIMAL AS EXAMPLES,
MULTIPLICATION BY A SINGLE DI
GIT IS VERY EASY WHEN IT'S F 716 ON
LY POSSIBLE VALUES ARE 0.I X342 AND
1. ALSO, INSTEAD OF.G ------- WAITING U
NTIL THE END TO ADD,U 1432 THE BINAR
Y METHOD FINDS R 2864 3X716, BU
MPS THE RESULT OVER E +2142 ONE COLUM
N, ADDS 4X716, BUMPS ------- THE RESUL
T OVER ONE COLUMN, 1 244272 ADDS 4X71
6, BUMPS THAT OVER, THEN ADDS
2X716 AND QUITS. THIS PARTICULAR SYST
EM SAVES TIME AND MEMORY. ANOTHER TRIC
K USED IS THE "BCC ZERO INC PRODUCT+1
" PART OF THE PROGRAM, WHICH SAVES
AN ADDITION. IF YOUCAN UNDERSTAND THIS
MULTIPLICATION, YOU CAN CALL YOURSELF LI
TERATE IN ML. JOLLY GOOD SHOW, MATE! ON
TO LITERATURE.....^.. THE STAC
K.. WHEN THE 6510 EXECUTES A JSR COMMAN
D, IT HAS TO REMEMBER WHERE IT'S JSR-ING
FROM, SO IT CAN GO BACK THERE WHEN IT
HITS THE NEXT RTS. BUT IT ALSO LETS Y
OU HAVE A SECOND, OR A THIRD,OR ANY NUMB
ER OF JSR'S WITHIN EACH OTHER BEFORE THE
FIRST RTS. IT MANAGES THIS BY LEAVING
EACH ADDRESS JSR-ED FROM ON TOP OF A
STACK IT KEEPS IN PAGE 1 OF MEMORY (F
ROM$0100 TO $01FF). WHEN IT COMES TO A R
TS,IT PULLS THE ADDRESS TO RETURN TO OFF
THE TOP OF THE STACK, LEAVING THE NEX
T ADDRESS DOWN FOR THE NEXT RTS... THE
STACK STARTS AT $01FF AND GROWS DOWNW
ARDS TOWARDS $0100. SINCE ONE ADDRE
SS IS TWO BYTES LONG, ONLY 128 ADDRE
SSES CAN BE KEPT ON THE STACK..^..
THE STACK (CONTINUED).. IF YOU TRY TO
PUT MORE ON THE STACK, IT "WRAPS AROUND
" AND STARTS OVER AT $01FF, DESTROYIN
G THE FIRST FEW BITS OF INFORMATION THER
E. NORMALLY, THIS IS NOTA PROBLEM. THE S
TACK IS BIG ENOUGH... THE 6510 KEEPS TR
ACK OF THE TOP OF THESTACK WITH THE SP R
EGISTER, THE STACK POINTER. WHEN IT PU
TS SOMETHING ON OR TAKES SOMETHING OFF
THE STACK, IT ADJUSTS THE STACK P
OINTER SO IT ALWAYS POINTS TO THE ADDRE
SS OF THE TOP ITEM ON THE STACK. IF YO
U NEED TO KNOW WHAT'SIN THE STACK POINTE
R (FEW PEOPLE DO), TXS AND TSX TRANSFE
R THE X REGISTER TO THE STACK POINTER A
ND VICE VERSA. THE $01 AT THE START OF
THE ADDRESS IS NOT TRANSFERRED, BUT SI
MPLY ASSUMED..^.. THE STACK (CONTI
NUED).. MORE USEFUL STACK INSTRUCTIONS
ARE PHA("PUSH ACCUMULATOR ONTO STACK") A
ND PLA ("PULL ACCUMULATOR OFF STACK"), W
HICH ALLOW THE ACCUMULATOR TO BE GOTTE
N OUT OF THE WAY TEMPORARILY WITHOUT HA
VING TOSPECIALLY RESERVE A PLACE IN MEMO
RY FOR IT. SOMETIMES YOU WILL SEE "PHA
TXA PHA TYA PHA" USED TO STORE ALL
THE 6510'S REGISTERS OUT OF HARM'S WA
Y... NOTE THAT THIS CAN ONLY BE USED
TEMPORARILY, BECAUSE IF AN RTS IS
EXECUTED BEFORE THE VALUE IS REMOVED
AGAIN (BY PLA), THEN THE 6510 WILL T
AKE THE ACCUMULATOR'S STORED VALUE AND T
HE WRONG HALF OF THE ADDRESS BELOW IT A
S ANADDRESS, AND RTS TO NEVER-NEVER LAND
. BECAREFUL!.^.. THE STACK (CONTIN
UED).. YOU CAN, HOWEVER, LEAVE A NUMBER
ON THESTACK, DO A JSR, AND RETRIEVE IT A
FTER THE RTS. THIS IS VERY USEFUL IF YO
U WANTA SUBROUTINE TO CALL ITSELF BUT TO
KEEP SOME VALUE FOR USE AFTER THE END O
F THE SUBROUTINE. ADVANCED, BUT USEFUL..
. THE REMAINING TWO INSTRUCTIONS WHICH
AFFECT THE STACK ARE PHP (PUSH P
REGISTER) AND PLP (PULL P REGISTER),
WHICH ALLOW YOU TO KEEP ALL THE FLAGS
SAFE ON THE STACK FOR A WHILE. PHP PLA
IS ALSO THE ONLY WAY TO LOOK AT SOME
FLAGS,NOTABLY THE 1 FLAG AND THE B FLAG
.. LIKE PHA, A PHP MUST BE BALANCED BY
A PLP BEFORE AN RTS ATTEMPTS TO USE THE
STORED P REGISTER AS PART OF AN ADDRES
S.^.. THE STACK (CONTINUED).. THI
S CAN BE USED TO YOUR ADVANTAGE IF YOU W
ANT TO, RTS TO, SAY, THE JSR TWO STEPS
BACK, INSTEAD OF THE USUAL ONE. "PLA
PLA" WILL REMOVE THE MOST RECENT ADDRE
SS FROM THE STACK, LEAVING THE NEXTONE D
OWN ON TOP... YOU CAN ALSO FOOL RTS INT
O RETURNING TO A DIFFERENT ADDRESS FROM
THE ONE JSR-ED FROM. PHA THE ADDRESS ON
TO THE STACK AND JMP TO THE SUBROUTINE.
ACTUALLY YOU SHOULD PHA THE ADDRESS-1 (M
INUS ONE) ONTO THE STACK, HIGH BYTE (
THE $AB IN $ABCD) FIRST... THIS IS GE
TTING PRETTY ABTRUSE, AND IT WILL PROB
ABLY BE A WHILE BEFORE YOU START PLAYIN
G WITH THE STACK. BUT IT IS WORTH KNOWIN
G WHAT THE STACK CAN DO..^. USING
BASIC FROM ML.. AS YOU KNOW, BASIC IS
AN ML PROGRAM. SOME BITS OF IT DO USEFU
L THINGS SUCH ASCLEARING THE SCREEN, PRI
NTING CHARACTERSTO THE SCREEN (EASY, EH?
TRY "DELETE".) AND COMMUNICATING WITH T
HE DISK DRIVE... ON THE NEXT PAGE ARE J
UST A FEW OF THEEASIER ROUTINES TO USE.
THERE ARE OVER 100 AVAILABLE, AND THE U
SE OF A GOOD.REFERENCE BOOK IS RECOMMEND
ED..^..CHROUT $FFD2 THIS ROUTINE PRINTS
THE CHARACTER IN THE ACCUMULATOR..C
HRIN $FFCF RETURNS A CHARACTER FROM
THE INPUT BUFFER IN THE ACCUMULATOR.
IF THE BUFFER'S EMPTY, FILLS IT BY
ACCEPTING A LINE UNTIL A RETURN..GETIN
$FFE4 LIKE BASIC GET. RETURNS DATA
IN THE ACCUMULATOR, OR 0 IF NO KEY
HAS BEEN PRESSED.. $BDCD PRINTS (I
N DECIMAL) THE 2- BYTE NUMBER IN THE A
CCUMULATOR AND X REGISTER (LOW HALF I
N X)..PLOT $FFF0 CURSOR COLUMN IN X AN
D CURSOR ROW IN Y. IF C IS SET, RE
TURNS THE CURRENT VALUES. IF C=0, SETS
THE CURSOR TO THE SPECIFIED POSITION
.. $A474 THIS HAS THE SAME EFFECT
AS HITTING STOP/RESTORE.. $FCE2
THIS IS THE SAME AS TURNING THE COMPUT
ER OFF AND ON AGAIN.^. THAT'S A
LL FOLKS.. THUS ENDS THIS POTPOURRI OF
IDEAS. THE NEXT INSTALMENT WILL WRAP
UP THE SERIES WITH A NUMBER OF SAMPLE
ML PROGRAMS TO RUN THROUGH AN ASS
EMBLER ANDMORE INFORMATION AND DETAIL ON
ML ACCESSTO BASIC FUNCTIONS. IF YOU'VE
MADE IT THIS FAR THROUGH THE JUNGLE, Y
OU'RE PASTTHE HARD PART. IT'S JUST DETAI
LS THAT ARE LEFT TO WORRY ABOUT. GET A
GOOD REFERENCE BOOK AND TRY THINGS
OUT! YOU ARE AT THE STAGE OF ML EQUIVAL
ENT TO YOUR FIRST EFFORTS IN BASIC. Y
OU KNOW THE FACTS, AND PRACTISE WILL E
NABLE YOU TO DO SOMETHING WITH WHAT YOU
KNOW... REMEMBER: THERE'S 4K OF MEMORY
FROM $C000 ON JUST WAITING TO BE FILLE
D WITH ML OF YOUR DEVISING..^^^^^^^^^^^^
^^^^
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL