home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / documents / chipdata / 65ce02.txt < prev    next >
Encoding:
Text File  |  1999-01-09  |  32.6 KB  |  1,086 lines

  1.  
  2.           cOMMODORE sEMICONDUCTOR gROUP csg65ce02 tECHNICAL rEFERENCE
  3.           {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  4.  
  5. tHIS IS VERSION 0.9 OF THIS DOCUMENT, DATED 08 jAN 99.
  6. tHE AUTHOR IS mICHAEL sTEIL <MIST@C64.ORG>, <MICHAEL.STEIL@WRITEME.COM>.
  7. i GIVE NO WARRANTY THAT THE INFORMATION SUPPLIED HEREIN IS CORRECT. i 
  8. APPRECIATE CORRECTIONS AND ADDITIONAL INFORMATION ON THE TOPIC DESCRIBED.
  9. tHIS DOCUMENT MAY BE REPUBLISHED IF IT IS FREE OF CHARGE AND NOT ALTERED
  10. IN ANY WAY. oTHERWISE MY WRITTEN PERMISSION IS REQUIRED. iF YOU FIND THE
  11. INFORMATION SUPPLIED IN THIS DOCUMENT USEFUL FOR YOUR OWN SOFTWARE, PLEASE
  12. REFER TO THIS DOCUMENT IN THE CREDITS OF YOUR SOFTWARE.
  13. tHE LATEST VERSION OF THIS DOCUMENT CAN BE DOWNLOADED VIA ANONYMOUS FTP
  14. FROM FTP://FTP.FUNET.FI/PUB/CBM/C65
  15.  
  16.  
  17. aBSTRACT
  18. {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  19. tHIS DOCUMENT DESCRIBES THE DIFFERENCES BETWEEN THE wdc 65c02 (rOCKWELL)
  20. AND THE csg65ce02 cpu USED IN THE 4510 MICRO CONTROLLER OF THE
  21. cOMMODORE c64dx/c65.
  22.  
  23. tABLE OF cONTENTS
  24. {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  25. 1. iNTRODUCTION
  26. 2. gENERAL DIFFERENCES BETWEEN THE 65c02 AND THE 65ce02
  27. 2.1 eNHANCEMENTS OF THE 65sc02
  28. 2.1.1 bIT oPERATIONS
  29. 2.1.2 zERO pAGE tEST rELATIVE
  30. 2.1.3 rELATIVE sUBROUTINE aDDRESSING
  31. 2.1.4 eNHANCED bit INSTRUCTION
  32. 2.2 eNHANCEMENTS OF THE 65sc02
  33. 2.2.1 tHE z rEGISTER
  34. 2.2.2 dIRECT pAGE
  35. 2.2.3 16 bIT rEAD-mODIFY-wRITE
  36. 2.2.4 rELATIVE jUMP iNSTRUCTIONS
  37. 2.2.5 sTACK pOINTER rELATIVE aDDRESSING mODE
  38. 2.2.6 dIVERSE NEW ADDRESSING MODES AND ADD. MODE / INSTRUCTION COMBINATIONS
  39. 3. aLPHABETICAL mNEMONIC iNDEX
  40. 4. aSSUMPTIONS/eRRORS (important!)
  41. 5. rEFERENCES
  42.  
  43.  
  44. 1. iNTRODUCTION
  45.    {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  46.    tHE csg65ce02 IS A cpu CORE DEVELOPED BY cOMMODORE sEMICONDUCTOR gROUP
  47.    (FORMERLY KNOWN AS cOMMODORE mos) THAT HAS BEEN USED IN THE csg4510
  48.    MICRO CONTROLLER (THAT COMBINED A cpu AND SEVERAL i/o COMPONENTS) IN
  49.    THE cOMMODORE c64dx/c65. aLTHOUGH THE cOMMODORE c64dx/c65 HAS NEVER BEEN
  50.    RELEASED, SEVERAL HUNDRED TEST/DEMO MACHINES APPEARED ON THE MARKET IN 1994.
  51.    tHIS DOCUMENT WILL MOST PROBABLY BE OF NO PRACTICAL USE TO PROGRAMMERS,
  52.    BUT IT MAY HELP TO UNDERSTAND THE NEW IDEAS OF THE DESIGNERS OF THE 65ce02,
  53.    THE WAY OF EVOLUTION OF THE 6502 CREATED 15 YEARS EARLIER BY THE SAME
  54.    COMPANY.
  55.    iT MAY BE USEFUL TO EMULATION PROGRAMMERS, IF SOMEONE SHOULD WANT TO WRITE
  56.    A c65 EMULATOR ONE DAY.
  57.  
  58.    tHE FOLLOWING CHART SHOWS A PART OF THE 65XX cpu EVOLUTION TIMELINE:
  59.  
  60.            nec      mos   wdc
  61.      
  62.    1975             6502
  63.                       \
  64.                        \
  65.                         \
  66.    1981[7]              65c02
  67.                         /  {$7c}
  68.                        /   {$7c}
  69.    ????        ?gte65sc02? {$7c}
  70.    1984[7]         / {$7c}   65816
  71.                   /  {$7c}    /?
  72.    1986     hUc6280  {$7c}   /?
  73.    1990            65ce02
  74.  
  75.    aNNOTATIONS:
  76.     65c02:   REFERRED TO AS "rOCKWELL" IN [1] (rOCKWELL WAS A POPULAR
  77.              LICENSEE OF THE 65c02)
  78.     65ce02:  THE c64 PRELIMINARY DOCUMENTATION HAS BEEN WRITTEN IN jANUARY 1991
  79.  
  80.    iN 1975, mos sEMICONDUCTORS INTRODUCED THE 6502. iT HAS BEEN REDESIGNED AND
  81.    ENHANCED BY wESTERN dESIGN cENTER (wdc) IN 1981. iT IS UNKNOWN WHO DESIGNED
  82.    THE 65sc02, AN ENHANCED 65c02 THAT HAS BEEN LICENSED BY gte. wdc DEVELOPED
  83.    THE 16-BIT SUCCESSOR OF THE 65c02, WHICH DID NOT IMPLEMENT THE ADDITIONAL
  84.    INSTRUCTIONS OF THE 65sc02. bUT THE 65sc02 IS THE BASE OF BOTH THE hUc6280
  85.    BY nec USED IN THEIR VIDEO GAME CONSOLE tg-16 (pc-eNGINE) AND THE 65ce02
  86.    BY cOMMODORE mos (csg). sOME INSTRUCTIONS SHOW THAT THE DESIGNERS OF THE
  87.    65ce02 HAVE ALSO BEEN INFLUENCED BY THE 65816. tHE PRELIMINARY
  88.    "c64dx system specification" [1] SAYS THAT THE 65ce02 CONTAINED "NEW
  89.    INSTRUCTIONS, INCLUDING rOCKWELL [65c02] AND gte [65sc02] EXTENSIONS".
  90.  
  91.    tHIS DOCUMENT ONLY SHOWS UP THE DIFFERENCES BETWEEN THE 65c02 AND THE
  92.    65ce02, AND ASSUMES THAT YOU ARE FAMILIAR WITH THE 65c02.
  93.    iNFORMATION ABOUT THE 65c02 IS EASY TO FIND. [2] IS A GOOD BOOK ON 65c02
  94.    PROGRAMMING.
  95.  
  96.    aLL INFORMATION CONTAINED IN THIS DOCUMENT IS HEAVILY BASED ON THE
  97.    INFORMATION GAINED FROM THE "uNOFFICIAL pc-eNGINE REFERENCE" BY jENS cHR.
  98.    rESTEMEIER [4], "pROGRAMMING THE 65816" BY dAVID eYES [2], THE OPCODE
  99.    LIST AS SHOWN OF THE c64dx/c65 BUILT-IN MONITOR [3], AND GUESSWORK.
  100.    tHERE HAVE BEEN FEW RELIABLE SOURCES, THEREFORE IT IS QUITE LIKELY
  101.    THAT SOME OF THE INFORMATIONED CONTAINED HEREIN MAY BE FALSE. sEE cHAPTER 4
  102.    FOR MORE DETAILS.
  103.  
  104. 2. gENERAL DIFFERENCES BETWEEN THE 65c02 AND THE 65ce02
  105.    {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  106. 2.1 eNHANCEMENTS OF THE 65sc02
  107.     {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  108. 2.1.1 bIT oPERATIONS
  109.       {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  110.       bOTH THE 6502'S AND THE 65c02'S BIT OPERATION CAPABILITIES WERE POOR.
  111.       tHIS CAN BE PROVEN BY THE FACT THAT HARDLY ANY BIT-ORIENTED COMPRESSION
  112.       OR DECOMPRESSION PROGRAMS LIKE hUFFMAN COMPRESSION EXIST ON 6502/65c02
  113.       BASED COMPUTERS.
  114.       tHE 65sc02 THEREFORE INTRODUCED THESE BIT-ORIENTED COMMANDS:
  115.  
  116.         bbrI $NN,$NN  If   bRANCH ON bIT rESET
  117.         bbsI $NN,$NN 80+If bRANCH ON bIT sET
  118.         rmbI $NN      I7   rESET mEMORY bIT I
  119.         smbI $NN     80+I7 sET MEMORY bIT I
  120.         trb  $NN      14   tEST AND rESET mEMORY bITS aGAINST aCCUMULATOR
  121.              $NNNN    1c
  122.         tsb  $NN      04   tEST AND sET mEMORY bITS aGAINST aCCUMULATOR
  123.              $NNNN    0c
  124.  
  125.       oN A 6502/65c02, THESE INSTRUCTIONS WOULD HAVE TO BE REWRITTEN WITH 
  126.       SEVERAL INSTRUCTIONS EACH THAT WOULD HAVE BEEN A LOT SLOWER, ALL IN ALL.
  127.  
  128. 2.1.2 zERO pAGE tEST rELATIVE
  129.       {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  130.       tHE bbrI AND bbsI INSTRUCTIONS INTRODUCED ANOTHER ADDRESSING MODE
  131.       CALLED zERO pAGE tEST rELATIVE. iT NEEDS TWO ONE-BYTE OPERANDS, ONE FOR
  132.       THE ZERO PAGE ADDRESS THAT IS USED FOR THE BIT TEST, AND ONE INDICATING
  133.       THE SIGNED RELATIVE pc OFFSET IF THE BRANCH IS TAKEN.
  134.       tHIS MAKES bbrI AND bbsI THE SINGLE INSTRUCTIONS WITH TWO EXPLICIT
  135.       OPERANDS.
  136.  
  137. 2.1.3 rELATIVE sUBROUTINE aDDRESSING
  138.       {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  139.       wITH THE 65sc02, THE bsr (bRANCH TO sUBROUTINE) COMMAND WAS INTRODUCED.
  140.       iT ALLOWS TO WRITE MORE RELOCATIBLE CODE BY SPECIFYING RELATIVE
  141.       SUBROUTINE ADDRESSES.
  142.       tHIS WAY, THE 65sc02 ALSO INTRODUCED THE 16 bIT rELATIVE ADDRESSING MODE.
  143.  
  144. 2.1.4 eNHANCED bit INSTRUCTION
  145.       {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  146.       tHE bit INSTRUCTION ALSO ALLOWS THE iMMEDIATE, zERO pAGE x iNDEXED AND
  147.       aBSOLUTE iNDEXED ON THE 65sc02.
  148.  
  149. 2.2 eNHANCEMENTS OF THE 65sc02
  150.     {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  151. 2.2.1 tHE z rEGISTER
  152.       {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  153.       tHE 65ce02 HAS A THIRD INDEX REGISTER: THE z REGISTER. tHE ZERO PAGE
  154.       INDIRECT ADDRESSING MODE HAS BEEN COMPLETELY REPLACED BY THE ZERO
  155.       PAGE INDIRECT, z INDEXED ADDRESSING MODE. aS LONG AS THE z REGISTER
  156.       IS NOT USED AND THEREFORE 0, THESE COMMANDS ARE FULLY
  157.       BACKWARDS-COMPATIBLE.
  158.  
  159. 2.2.2 dIRECT pAGE
  160.       {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  161.       jUST LIKE ON THE 65816, THE ZERO PAGE CAN BE RELOCATED TO ANY PAGE (BLOCK)
  162.       WITHIN THE 64 kb OF MEMORY THAT ARE CURRENTLY "IN SIGHT" OF THE cpu.
  163.       tHE b (BLOCK) REGISTER CAN BE LOADED WITH THE CONTENTS OF THE ACCUMULATOR,
  164.       AND ITS CONTENTS CAN BE WRITTEN BACK INTO THE ACCUMULATOR, TOO.
  165.  
  166. 2.2.3 16 bIT rEAD-mODIFY-wRITE
  167.       {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  168.       aLTHOUGH ALL REGISTERS ARE STILL JUST 8 BITS WIDE, THE 65ce02 PROVIDES
  169.       SOME 16 BIT INSTRUCTIONS, MAINLY IN rED-mODIFY-wRITE INSTRUCTIONS:
  170.                      
  171.         asw $NNNN   cb  aRITHMETIC sHIFT lEFT wORD
  172.         dew $NNNN   c3  dECREMENT wORD
  173.         inw $NNNN   e3  iNCREMENT wORD (error in 64net.opc?)
  174.         phw #$NNNN  f4  pUSH wORD
  175.             $NNNN   fc
  176.         row $NNNN   eb  rOTATE rIGHT wORD
  177.  
  178.       nOTE THAT SOME OF THESE INSTRUCTIONS SUPPORT THE 16-BIT ROTATE/SHIFT
  179.       INSTRUCTIONS OF THE 65sc02 MENTIONED ABOVE.
  180.  
  181. 2.2.4 rELATIVE jUMP iNSTRUCTIONS
  182.       {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  183.       dUE TO OF THE EXISTENCE OF A RELATIVE VERSION OF jmp (16 BIT bra)
  184.       SUPPORTING THE 65sc02 RELATIVE jsr (bsr), IT IS NOW POSSIBLE TO
  185.       WRITE FULLY RELOCATIBLE CODE.
  186.  
  187. 2.2.5 sTACK pOINTER rELATIVE aDDRESSING mODE
  188.       {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  189.       tHE 65ce02 PROVIDES A NEW ADDRESSING MODE CALLED sTACK pOINTER rELATIVE
  190.       iNDIRECT y iNDEXED, WHICH LOOKS LIKE THIS: lda/sta ($NN,sp),y
  191.       tHE SUM OF THE 8 BIT OPERAND AND THE STACK POINTER FORM THE INDIRECT
  192.       ADDRESS. tHE EFFECTIVE ADDRESS IS THE SUM OF THE y REGISTER AND THE
  193.       16 BIT VALUE LOCATED AT THE INDIRECT ADDRESS.
  194.       nOTE THAT THIS ADDRESSING MODE IS ALSO AVAILABLE ON THE 65816, BUT
  195.       USING DIFFERENT OPCODES.
  196.  
  197. 2.2.6 dIVERSE NEW ADDRESSING MODES AND ADD. MODE / INSTRUCTION COMBINATIONS
  198.       {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  199.       16 BIT BRANCHES, IMMEDIATE AND INDEXED BIT TESTS (bit), INDEXED INDIRECT
  200.       JUMPS AS WELL AS INDIRECT AND INDEXED INDIRECT jsr'S ARE POSSIBLE ON
  201.       THE 65ce02.
  202.  
  203. 3. aLPHABETICAL mNEMONIC iNDEX
  204.    {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  205.  
  206.    aLL 256 OPCODES ARE VALID ON THE 65ce02.
  207.  
  208. adc
  209.  aDD WITH cARRY
  210.   oPERATION AS OF 65c02. nOTE THAT zERO pAGE iNDIRECT HAS BEEN REPLACED BY
  211.   zERO pAGE iNDIRECT z iNDEXED.
  212.  
  213.    adc #$NN            69   6502
  214.    adc $NN             65   6502
  215.    adc $NN,x           75   6502
  216.    adc $NNNN           6d   6502
  217.    adc $NNNN,x         7d   6502
  218.    adc $NNNN,y         79   6502
  219.    adc ($NN),y         71   6502
  220.    adc ($NN),z         72   65c02/65ce02
  221.    adc ($NN,x)         61   6502
  222.  
  223. and
  224.  aND
  225.   oPERATION AS OF 65c02. nOTE THAT zERO pAGE iNDIRECT HAS BEEN REPLACED BY
  226.   zERO pAGE iNDIRECT z iNDEXED.
  227.  
  228.    and #$NN            29   6502
  229.    and $NN             25   6502
  230.    and $NN,x           35   6502
  231.    and $NNNN           2d   6502
  232.    and $NNNN,x         3d   6502
  233.    and $NNNN,y         39   6502
  234.    and ($NN),y         31   6502
  235.    and ($NN),z         32   65c02/65ce02
  236.    and ($NN,x)         21   6502
  237.  
  238. asl
  239.  aRITHMETIC sHIFT lEFT
  240.   oPERATION AS OF 6502.
  241.  
  242.    asl a               0a   6502
  243.    asl $NN             06   6502
  244.    asl $NN,x           16   6502
  245.    asl $NNNN           0e   6502
  246.    asl $NNNN,x         1e   6502
  247.  
  248. asr
  249.  aRITHMETIC sHIFT rIGHT
  250.   sHIFTS THE CONTENTS OF THE LOCATION SPECIFIED BY THE OPERAND RIGHT ONE BIT.
  251.   bIT 0 IS TRANSFERRED INTO THE CARRY FLAG AND BIT 7 WILL KEEP ITS ORIGINAL
  252.   VALUE, THUS NEGATIVE VALUES STAYING NEGATIVE.
  253.   tHE ARITHMETIC RESULT OF THE OPERATION IS A SIGNED DIVISION BY TWO.
  254.  
  255.             7 6 5 4 3 2 1 0  c
  256.    BEFORE   1 0 1 1 0 0 1 1  ?
  257.    AFTER    1 1 0 1 1 0 0 1  1
  258.  
  259.    fLAGS aFFECTED: N - - - - - Z C
  260.  
  261.                    N sET IF MOST SIGNIFICANT BIT OF RESULT IS SET; ELSE
  262.                      CLEARED.
  263.                    Z sET IF RESULT IS ZERO; ELSE CLEARED.
  264.                    C bIT ZERO BECOMES CARRY.
  265.  
  266.    asr a               43   65ce02
  267.    asr $NN             44   65ce02
  268.    asr $NN,x           54   65ce02
  269.  
  270. asw
  271.  aRITHMETIC sHIFT lEFT wORD
  272.  
  273.    asw $NNNN           cb   65ce02
  274.  
  275. bbrI
  276.  bRANCH ON bIT rESET [4]
  277.   bIT I IN THE ZERO PAGE ADDRESS INDICATED BY THE FIRST OPERAND IS TESTED.
  278.   iF IT IS CLEAR, A BRANCH IS TAKEN; IF IT IS SET, THE INSTRUCTION
  279.   IMMEDIATELY FOLLOWING THE THREE-BYTE bbrI INSTRUCTION IS EXECUTED.
  280.   iF THE BRANCH IS TAKEN, A ONE-BYTE SIGNED DISPLACEMENT, FETCHED FROM THE
  281.   THIRD BYTE OF THE INSTRUCTION, IS SIGN-EXTENDED TO SIXTEEN BITS AND ADDED
  282.   TO THE PROGRAM COUNTER. oNCE THE BRANCH ADDRESS HAS BEEN CALCULATED, THE
  283.   RESULT IS LOADED INTO THE PROGRAM COUNTER, TRANSFERRING CONTROL TO THAT
  284.   LOCATION.
  285.   tHE ALLOWABLE RANGE OF THE DISPLACEMENT IS -128 TO +127 (FROM THE
  286.   INSTRUCTION IMMEDIATELY FOLLOWING THE BRANCH).
  287.  
  288.    fLAGS aFFECTED: - - - - - - - -
  289.  
  290.    bbr0 $ZP,$NN        0f   65sc02
  291.    bbr1 $ZP,$NN        1f   65sc02
  292.    bbr2 $ZP,$NN        2f   65sc02
  293.    bbr3 $ZP,$NN        3f   65sc02
  294.    bbr4 $ZP,$NN        4f   65sc02
  295.    bbr5 $ZP,$NN        5f   65sc02
  296.    bbr6 $ZP,$NN        6f   65sc02
  297.    bbr7 $ZP,$NN        7f   65sc02
  298.  
  299. bbsI
  300.  bRANCH ON bIT sET [4]
  301.   bIT I IN THE ZERO PAGE ADDRESS INDICATED BY THE FIRST OPERAND IS TESTED.
  302.   iF IT IS SET, A BRANCH IS TAKEN; IF IT IS CLEAR, THE INSTRUCTION
  303.   IMMEDIATELY FOLLOWING THE THREE-BYTE bbsI INSTRUCTION IS EXECUTED.
  304.   iF THE BRANCH IS TAKEN, A ONE-BYTE SIGNED DISPLACEMENT, FETCHED FROM THE
  305.   THIRD BYTE OF THE INSTRUCTION, IS SIGN-EXTENDED TO SIXTEEN BITS AND ADDED
  306.   TO THE PROGRAM COUNTER. oNCE THE BRANCH ADDRESS HAS BEEN CALCULATED, THE
  307.   RESULT IS LOADED INTO THE PROGRAM COUNTER, TRANSFERRING CONTROL TO THAT
  308.   LOCATION.
  309.   tHE ALLOWABLE RANGE OF THE DISPLACEMENT IS -128 TO +127 (FROM THE
  310.   INSTRUCTION IMMEDIATELY FOLLOWING THE BRANCH).
  311.  
  312.    fLAGS aFFECTED: - - - - - - - -
  313.  
  314.    bbs0 $NN,$NN        8f   65sc02
  315.    bbs1 $NN,$NN        9f   65sc02
  316.    bbs2 $NN,$NN        af   65sc02
  317.    bbs3 $NN,$NN        bf   65sc02
  318.    bbs4 $NN,$NN        cf   65sc02
  319.    bbs5 $NN,$NN        df   65sc02
  320.    bbs6 $NN,$NN        ef   65sc02
  321.    bbs7 $NN,$NN        ff   65sc02
  322.    
  323. bcc
  324.  bRANCH ON cARRY cLEAR
  325.   oPERATION AS OF 6502.
  326.   nOTE THAT bcc ALSO EXISTS IN A 16-bIT rELATIVE ADDRESSING MODE.
  327.   iF THE BRANCH IS TAKEN, A TWO-BYTE DISPLACEMENT, FETCHED
  328.   FROM THE BYTES TWO TO THREE OF THE INSTRUCTION, IS ADDED TO THE PROGRAM
  329.   COUNTER. oNCE THE BRANCH ADDRESS HAS BEEN CALCULATED, THE RESULT IS LOADED
  330.   INTO THE PROGRAM COUNTER, TRANSFERRING CONTROL TO THAT LOCATION.
  331.   tHE ALLOWABLE RANGE OF THE DISPLACEMENT IS 0 TO 65535, THUS ALLOWING
  332.   BRANCHES OF UP TO 64 kb IN ANY DIRECTION.
  333.  
  334.    bcc $NN             90   6502
  335.    bcc $NNNN           93   65ce02
  336.  
  337. bcs
  338.  bRANCH ON cARRY sET
  339.   oPERATION AS OF 6502.
  340.   nOTE THAT bcs ALSO EXISTS IN A 16-bIT rELATIVE ADDRESSING MODE.
  341.   sEE bcc FOR FURTHER DETAILS.
  342.  
  343.    bcs $NN             b0   6502
  344.    bcs $NNNN           b3   65ce02
  345.  
  346. beq
  347.  bRANCH ON eQUAL
  348.   oPERATION AS OF 6502.
  349.   nOTE THAT beq ALSO EXISTS IN A 16-bIT rELATIVE ADDRESSING MODE.
  350.   sEE bcc FOR FURTHER DETAILS.
  351.  
  352.    beq $NN             f0   6502
  353.    beq $NNNN           f3   65ce02
  354.  
  355. bit
  356.  
  357.    bit #$NN            89   65sc02
  358.    bit $NN             24   6502
  359.    bit $NN,x           34   65sc02
  360.    bit $NNNN           2c   6502
  361.    bit $NNNN,x         3c   65sc02
  362.  
  363. bmi
  364.  bRANCH ON mINUS
  365.   oPERATION AS OF 6502.
  366.   nOTE THAT bmi ALSO EXISTS IN A 16-bIT rELATIVE ADDRESSING MODE.
  367.   sEE bcc FOR FURTHER DETAILS.
  368.  
  369.    bmi $NN             30   6502
  370.    bmi $NNNN           33   65ce02
  371.  
  372. bne
  373.  bRANCH ON nOT eQUAL
  374.   oPERATION AS OF 6502.
  375.   nOTE THAT bne ALSO EXISTS IN A 16-bIT rELATIVE ADDRESSING MODE.
  376.   sEE bcc FOR FURTHER DETAILS.
  377.  
  378.    bne $NN             d0   6502
  379.    bne $NNNN           d3   65ce02
  380.  
  381. bpl
  382.  bRANCH ON pLUS
  383.   oPERATION AS OF 6502.
  384.   nOTE THAT bpl ALSO EXISTS IN A 16-bIT rELATIVE ADDRESSING MODE.
  385.   sEE bcc FOR FURTHER DETAILS.
  386.  
  387.    bpl $NN             10   6502
  388.    bpl $NNNN           13   65ce02
  389.  
  390. bra
  391.  bRANCH aLWAYS
  392.   oPERATION AS OF 6502.
  393.   nOTE THAT bra ALSO EXISTS IN A 16-bIT rELATIVE ADDRESSING MODE.
  394.   sEE bcc FOR FURTHER DETAILS.
  395.   bra WITH A 16 BIT OPERAND ALLOWS AN UNLIMITED RELATIVE JUMP. tHIS WAY
  396.   IT IS POSSIBLE TO WRITE FULLY RELOCATIBLE CODE. sEE ALSO bsr.
  397.  
  398.    bra $NN             80   65c02
  399.    bra $NNNN           83   65ce02
  400.  
  401. brk
  402.  bREAK
  403.   oPERATION AS OF 6502.
  404.  
  405.    brk                 00   6502
  406.  
  407. bsr
  408.  bRANCH TO sUBROUTINE
  409.  
  410.    bsr $NNNN           63   65sc02
  411.  
  412. bvc
  413.  bRANCH ON
  414.   oPERATION AS OF 6502.
  415.   nOTE THAT bvc ALSO EXISTS IN A 16-bIT rELATIVE ADDRESSING MODE.
  416.   sEE bcc FOR FURTHER DETAILS.
  417.  
  418.    bvc $NN             50   6502
  419.    bvc $NNNN           53   65ce02
  420.  
  421. bvs
  422.  bRANCH ON
  423.   oPERATION AS OF 6502.
  424.   nOTE THAT bvs ALSO EXISTS IN A 16-bIT rELATIVE ADDRESSING MODE.
  425.   sEE bcc FOR FURTHER DETAILS.
  426.  
  427.    bvs $NN             70   6502
  428.    bvs $NNNN           73   65ce02
  429.  
  430. clc
  431.  cLEAR cARRY fLAG
  432.   oPERATION AS OF 6502.
  433.  
  434.    clc                 18   6502
  435.  
  436. cld
  437.  cLEAR dECIMAL fLAG
  438.   oPERATION AS OF 6502.
  439.  
  440.    cld                 d8   6502
  441.  
  442. cle
  443.  cLEAR ??? fLAG             
  444.  
  445.    cle                 02   65ce02
  446.  
  447. cli
  448.  cLEAR iNTERRUPT dISABLE fLAG
  449.   oPERATION AS OF 6502.
  450.  
  451.    cli                 58   6502
  452.  
  453. clv
  454.  cLEAR oVERFLOW fLAG
  455.   oPERATION AS OF 6502.
  456.  
  457.    clv                 b8   6502
  458.  
  459. cmp
  460.  cOMPARE
  461.   oPERATION AS OF 65c02. nOTE THAT zERO pAGE iNDIRECT HAS BEEN REPLACED BY
  462.   zERO pAGE iNDIRECT z iNDEXED.
  463.  
  464.    cmp #$NN            c9   6502
  465.    cmp $NN             c5   6502
  466.    cmp $NN,x           d5   6502
  467.    cmp $NNNN           cd   6502
  468.    cmp $NNNN,x         dd   6502
  469.    cmp $NNNN,y         d9   6502
  470.    cmp ($NN),y         d1   6502
  471.    cmp ($NN),z         d2   65c02/65ce02
  472.    cmp ($NN,x)         c1   6502
  473.  
  474. cpx
  475.  cOMPARE x rEGISTER
  476.   oPERATION AS OF 6502.
  477.  
  478.    cpx #$NN            e0   6502
  479.    cpx $NN             e4   6502
  480.    cpx $NNNN           ec   6502
  481.  
  482. cpy
  483.  cOMPARE y rEGISTER
  484.   oPERATION AS OF 6502.
  485.  
  486.    cpy #$NN            c0   6502
  487.    cpy $NN             c4   6502
  488.    cpy $NNNN           cc   6502
  489.  
  490. cpz
  491.  cOMPARE z rEGISTER
  492.  
  493.    cpz #$NN            c2   65ce02
  494.    cpz $NN             d4   65ce02
  495.    cpz $NNNN           dc   65ce02
  496.  
  497. dec
  498.  dECREMENT
  499.  
  500.    dec                 3a   65c02
  501.    dec $NN             c6   6502
  502.    dec $NN,x           d6   6502
  503.    dec $NNNN           ce   6502
  504.    dec $NNNN,x         de   6502
  505.  
  506. dew
  507.  dECREMENT wORD
  508.  
  509.    dew $NN             c3   65ce02
  510.  
  511. dex
  512.  dECREMENT x rEGISTER
  513.  
  514.    dex                 ca   6502
  515.  
  516. dey
  517.  dECREMENT y rEGISTER
  518.  
  519.    dey                 88   6502
  520.  
  521. dez
  522.  dECREMENT z rEGISTER
  523.  
  524.    dez                 3b   65ce02
  525.  
  526. eor
  527.  eXCLUSIVE oR
  528.   oPERATION AS OF 65c02. nOTE THAT zERO pAGE iNDIRECT HAS BEEN REPLACED BY
  529.   zERO pAGE iNDIRECT z iNDEXED.
  530.  
  531.    eor #$NN            49   6502
  532.    eor $NN             45   6502
  533.    eor $NN,x           55   6502
  534.    eor $NNNN           4d   6502
  535.    eor $NNNN,x         5d   6502
  536.    eor $NNNN,y         59   6502
  537.    eor ($NN),y         51   6502
  538.    eor ($NN),z         52   65c02/65ce02
  539.    eor ($NN,x)         41   6502
  540.  
  541. inc
  542.  iNCREMENT
  543.   oPERATION AS OF 6502.
  544.  
  545.    inc                 1a   65c02
  546.    inc $NN             e6   6502
  547.    inc $NN,x           f6   6502
  548.    inc $NNNN           ee   6502
  549.    inc $NNNN,x         fe   6502
  550.  
  551. inw
  552.  iNCREMENT wORD
  553.  
  554.    inw $NNNN           e3   65ce02
  555.  
  556. inx
  557.  iNCREMENT x rEGISTER
  558.   oPERATION AS OF 6502.
  559.  
  560.    inx                 e8   6502
  561.  
  562. iny
  563.  iNCREMENT y rEGISTER
  564.   oPERATION AS OF 6502.
  565.  
  566.    iny                 c8   6502
  567.  
  568. inz
  569.  iNCREMENT z rEGISTER
  570.  
  571.    inz                 1b   65ce02
  572.  
  573. jmp
  574.  jUMP
  575.  
  576.    jmp $NNNN           4c   6502
  577.    jmp ($NNNN)         6c   6502
  578.    jmp ($NNNN,x)       7c   65c02
  579.  
  580. jsr
  581.  jUMP TO sUBROUTINE
  582.   nOTE THAT THE 65816 ALSO HAS THE jsr ($NNNN,x) INSTRUCTION, BUT ITS OPCODE
  583.   IS $fc.
  584.  
  585.    jsr $NNNN           20   6502
  586.    jsr ($NNNN)         22   65ce02
  587.    jsr ($NNNN,x)       23   65ce02
  588.  
  589. lda
  590.  lOAD aCCUMULATOR
  591.   oPERATION AS OF 65c02. nOTE THAT zERO pAGE iNDIRECT HAS BEEN REPLACED BY
  592.   zERO pAGE iNDIRECT z iNDEXED, AND THERE IS THE A sTACK pOINTER rELATIVE
  593.   ADDRESSING MORE.
  594.  
  595.    lda #$NN            a9   6502
  596.    lda $NN             a5   6502
  597.    lda $NN,x           b5   6502
  598.    lda $NNNN           ad   6502
  599.    lda $NNNN,x         bd   6502
  600.    lda $NNNN,y         b9   6502
  601.    lda ($NN),y         b1   6502
  602.    lda ($NN),z         b2   65c02/65ce02
  603.    lda ($NN,sp),y      e2   65ce02
  604.    lda ($NN,x)         a1   6502
  605.                             
  606. ldx
  607.  lOAD x rEGISTER
  608.   oPERATION AS OF 6502.
  609.  
  610.    ldx #$NN            a2   6502
  611.    ldx $NN             a6   6502
  612.    ldx $NN,y           b6   6502
  613.    ldx $NNNN           ae   6502
  614.    ldx $NNNN,y         be   6502
  615.  
  616. ldy
  617.  lOAD y rEGISTER
  618.   oPERATION AS OF 6502.
  619.  
  620.    ldy #$NN            a0   6502
  621.    ldy $NN             a4   6502
  622.    ldy $NN,x           b4   6502
  623.    ldy $NNNN           ac   6502
  624.    ldy $NNNN,x         bc   6502
  625.  
  626. ldz
  627.  lOAD z rEGISTER
  628.  
  629.    ldz #$NN            a3   65ce02
  630.    ldz $NNNN           ab   65ce02
  631.    ldz $NNNN,x         bb   65ce02
  632.  
  633. lsr
  634.  lOGICAL sHIFT rIGHT
  635.   oPERATION AS OF 6502.
  636.  
  637.    lsr $NN             46   6502
  638.    lsr $NN,x           56   6502
  639.    lsr $NNNN           4e   6502
  640.    lsr $NNNN,x         5e   6502
  641.    lsr a               4a   6502
  642.  
  643. map
  644.  ???
  645.   iT IS UNKNOWN WHAT THIS INSTRUCTION DOES.
  646.  
  647.    map                 5c   65ce02
  648.  
  649. neg
  650.  nEGATE aCCUMULATOR
  651.  
  652.    neg                 42   65ce02
  653.  
  654. nop
  655.  nO oPERATION
  656.   oPERATION AS OF 6502.
  657.  
  658.    nop                 ea   6502
  659.  
  660. ora
  661.  oR aCCUMULATOR
  662.   oPERATION AS OF 65c02. nOTE THAT zERO pAGE iNDIRECT HAS BEEN REPLACED BY
  663.   zERO pAGE iNDIRECT z iNDEXED.
  664.  
  665.    ora #$NN            09   6502
  666.    ora $NN             05   6502
  667.    ora $NN,x           15   6502
  668.    ora $NNNN           0d   6502
  669.    ora $NNNN,x         1d   6502
  670.    ora $NNNN,y         19   6502
  671.    ora ($NN),y         11   6502
  672.    ora ($NN),z         12   65c02/65ce02
  673.    ora ($NN,x)         01   6502
  674.  
  675. pha
  676.  pUSH aCCUMULATOR
  677.   oPERATION AS OF 6502.
  678.  
  679.    pha                 48   6502
  680.  
  681. php
  682.  pUSH pROCESSOR sTATUS rEGISTER
  683.   oPERATION AS OF 6502.
  684.  
  685.    php                 08   6502
  686.  
  687. phw
  688.  pUSH wORD
  689.  
  690.    phw #$NNNN          f4   65ce02
  691.    phw $NNNN           fc   65ce02
  692.  
  693. phx
  694.  pUSH x rEGISTER
  695.   oPERATION AS OF 65c02.
  696.  
  697.    phx                 da   65c02
  698.  
  699. phy
  700.  pUSH y rEGISTER
  701.   oPERATION AS OF 65c02.
  702.  
  703.    phy                 5a   65c02
  704.  
  705. phz
  706.  pUSH z rEGISTER
  707.  
  708.    phz                 db   65ce02
  709.  
  710. pla
  711.  pULL aCCUMULATOR
  712.   oPERATION AS OF 6502.
  713.  
  714.    pla                 68   6502
  715.  
  716. plp
  717.  pULL pROCESSOR sTATUS rEGISTER
  718.   oPERATION AS OF 6502.
  719.  
  720.    plp                 28   6502
  721.  
  722. plx
  723.  pULL x rEGISTER
  724.   oPERATION AS OF 65c02.
  725.  
  726.    plx                 fa   65c02
  727.  
  728. ply
  729.  pULL y rEGISTER
  730.   oPERATION AS OF 65c02.
  731.  
  732.    ply                 7a   65c02
  733.  
  734. plz
  735.  pULL z REGISTER
  736.  
  737.    plz                 fb   65ce02
  738.  
  739. rmb
  740.  rESET mEMORY bIT I [4]
  741.   cLEAR THE SPECIFIED BIT IN THE ZERO PAGE MEMORY LOCATION SPECIFIED IN THE
  742.   OPERAND. tHE BIT TO CLEAR IS SPECIFIED BY A NUMBER CONCATENATED TO THE END
  743.   OF THE MNEMONIC, RESULTING IN 8 DISTINCT OPCODES.
  744.  
  745.    rmb0 $NN            07   65sc02
  746.    rmb1 $NN            17   65sc02
  747.    rmb2 $NN            27   65sc02
  748.    rmb3 $NN            37   65sc02
  749.    rmb4 $NN            47   65sc02
  750.    rmb5 $NN            57   65sc02
  751.    rmb6 $NN            67   65sc02
  752.    rmb7 $NN            77   65sc02
  753.  
  754. rol
  755.  rOTATE lEFT
  756.   oPERATION AS OF 6502.
  757.  
  758.    rol $NN             26   6502
  759.    rol $NN,x           36   6502
  760.    rol $NNNN           2e   6502
  761.    rol $NNNN,x         3e   6502
  762.    rol a               2a   6502
  763.  
  764. ror
  765.  rOTATE rIGHT
  766.   oPERATION AS OF 6502.
  767.  
  768.    ror $NN             66   6502
  769.    ror $NN,x           76   6502
  770.    ror $NNNN           6e   6502
  771.    ror $NNNN,x         7e   6502
  772.    ror a               6a   6502
  773.  
  774. row
  775.  rOTATE rIGHT wORD
  776.  
  777.    row $NNNN           eb   65ce02
  778.  
  779. rti
  780.  rETURN FROM iNTERRUPT
  781.   oPERATION AS OF 6502.
  782.  
  783.    rti                 40   6502
  784.  
  785. rts
  786.  rETURN FROM sUBROUTINE
  787.   oPERATION AS OF 6502. nOTE THE NEW ADDRESSING MODE. iT IS UNKNOWN HOW IT
  788.   WORKS.
  789.  
  790.    rts                 60   6502
  791.    rts #$NN            62   65ce02
  792.  
  793. sbc
  794.  sUBTRACT WITH cARRY fLAG
  795.    oPERATION AS OF 65c02. nOTE THAT zERO pAGE iNDIRECT HAS BEEN REPLACED BY
  796.   zERO pAGE iNDIRECT z iNDEXED.
  797.  
  798.    sbc #$NN            e9   6502
  799.    sbc $NN             e5   6502
  800.    sbc $NN,x           f5   6502
  801.    sbc $NNNN           ed   6502
  802.    sbc $NNNN,x         fd   6502
  803.    sbc $NNNN,y         f9   6502
  804.    sbc ($NN),y         f1   6502
  805.    sbc ($NN),z         f2   65c02/65ce02
  806.    sbc ($NN,x)         e1   6502
  807.  
  808. sec
  809.  sET cARRY fLAG
  810.   oPERATION AS OF 6502.
  811.  
  812.    sec                 38   6502
  813.  
  814. sed
  815.  sET dECIMAL fLAG
  816.   oPERATION AS OF 6502.
  817.  
  818.    sed                 f8   6502
  819.  
  820. see
  821.  sET ??? fLAG
  822.  
  823.    see                 03   65ce02
  824.  
  825. sei
  826.  sET iNTERRUPT dISABLE fLAG
  827.   oPERATION AS OF 6502.
  828.  
  829.    sei                 78   6502
  830.  
  831. smb
  832.  sET mEMORY bIT I [4]
  833.   sET THE SPECIFIED BIT IN THE ZERO PAGE MEMORY LOCATION SPECIFIED IN THE
  834.   OPERAND. tHE BIT TO SET IS SPECIFIED BY A NUMBER CONCATENATED TO THE END
  835.   OF THE MNEMONIC, RESULTING IN 8 DISTINCT OPCODES.
  836.  
  837.    smb0 $NN            87   65sc02
  838.    smb1 $NN            97   65sc02
  839.    smb2 $NN            a7   65sc02
  840.    smb3 $NN            b7   65sc02
  841.    smb4 $NN            c7   65sc02
  842.    smb5 $NN            d7   65sc02
  843.    smb6 $NN            e7   65sc02
  844.    smb7 $NN            f7   65sc02
  845.  
  846. sta
  847.  sTORE a rEGISTER TO mEMORY
  848.   oPERATION AS OF 65c02. nOTE THAT zERO pAGE iNDIRECT HAS BEEN REPLACED BY
  849.   zERO pAGE iNDIRECT z iNDEXED, AND THERE IS THE A sTACK pOINTER rELATIVE
  850.   ADDRESSING MORE.
  851.  
  852.    sta $NN             85   6502
  853.    sta $NN,x           95   6502
  854.    sta $NNNN           8d   6502
  855.    sta $NNNN,x         9d   6502
  856.    sta $NNNN,y         99   6502
  857.    sta ($NN),y         91   6502
  858.    sta ($NN),z         92   65c02/65ce02
  859.    sta ($NN,sp),y      82   65ce02
  860.    sta ($NN,x)         81   6502
  861.  
  862. stx
  863.  sTORE x rEGISTER TO mEMORY
  864.  
  865.    stx $NN             86   6502
  866.    stx $NN,y           96   6502
  867.    stx $NNNN           8e   6502
  868.    stx $NNNN,y         9b   65ce02
  869.  
  870. sty
  871.  sTORE y rEGISTER TO mEMORY
  872.  
  873.    sty $NN             84   6502
  874.    sty $NN,x           94   6502
  875.    sty $NNNN           8c   6502
  876.    sty $NNNN,x         8b   65ce02
  877.  
  878. stz
  879.  sTORE z rEGISTER TO mEMORY
  880.   nOTE THAT ON THE 65c02, THE stz INSTRUCTION DOES NOT STORE THE VALUE OF
  881.   ZERO INTO MEMORY, BUT THE CONTENTS OF THE z rEGISTER. aS LONG AS THE z
  882.   REGISTER IS NOT USED AND THEREFORE ZERO, THIS DOES NOT MAKE ANY DIFFERENCE,
  883.   THOUGH.
  884.  
  885.    stz $NN             64   65c02/65ce02
  886.    stz $NN,x           74   65c02/65ce02
  887.    stz $NNNN           9c   65c02/65ce02
  888.    stz $NNNN,x         9e   65c02/65ce02
  889.  
  890. tab
  891.  tRANSFER aCCUMULATOR TO b rEGISTER
  892.   COMPARE 65816 tcd/tad
  893.  
  894.    tab                 5b   65ce02
  895.  
  896. tax
  897.  tRANSFER aCCUMULATOR TO x rEGISTER
  898.   oPERATION AS OF 6502.
  899.  
  900.    tax                 aa   6502
  901.  
  902. tay
  903.  tRANSFER aCCUMULATOR TO y rEGISTER
  904.   oPERATION AS OF 6502.
  905.  
  906.    tay                 a8   6502
  907.  
  908. taz
  909.  tRANSFER aCCUMULATOR TO z rEGISTER
  910.  
  911.    taz                 4b   65ce02
  912.  
  913. tba
  914.  tRANSFER b rEGISTER tO aCCUMULATOR
  915.   COMPARE 65816 tdc/tda
  916.  
  917.    tba                 7b   65ce02
  918.  
  919. trb
  920.  tEST AND rESET mEMORY bITS aGAINST aCCUMULATOR [4]
  921.   bITWISE LOGICALLY and THE DATA LOCATED AT THE EFFECTIVE ADDRESS SPECIFIED
  922.   BY THE OPERAND WITH THE COMPLEMENT OF THE CONTENTS OF THE ACCUMULATOR. tHE
  923.   RESULT IS STORED AT THE MEMORY LOCATION.
  924.   tHIS WAY, trb CLEARS THE BITS AT THE MEMORY LOCATION CORRESPONDING TO THE
  925.   BITS SET IN THE ACCUMULATOR.
  926.   tHE STATUS REGISTER IS AFFECTED JUST LIKE IT IS BY THE bit INSTRUCTION.
  927.  
  928.    fLAGS aFFECTED: N V - - - Z -
  929.                    N tAKES VALUE OF SEVENTH BIT OF RESULTING DATA
  930.                    V tAKES VALUE OF SIXTH BIT OF RESULTING DATA
  931.                    Z sET IF RESULT IS ZERO; ELSE CLEARED.
  932.  
  933.    trb $NN             14   65sc02
  934.    trb $NNNN           1c   65sc02
  935.  
  936. tsb
  937.  tEST AND sET mEMORY bITS aGAINST aCCUMULATOR [4]
  938.   bITWISE LOGICALLY or THE DATA LOCATED AT THE EFFECTIVE ADDRESS SPECIFIED BY
  939.   THE OPERAND WITH THE CONTENTS OF THE ACCUMULATOR. tHE RESULT IS STORED AT
  940.   THE MEMORY LOCATION.
  941.   tHIS WAY, tsb SETS THE BITS AT THE MEMORY LOCATION CORRESPONDING TO THE
  942.   BITS SET IN THE ACCUMULATOR.
  943.   tHE STATUS REGISTER IS AFFECTED JUST LIKE IT IS BY THE bit INSTRUCTION.
  944.  
  945.    fLAGS aFFECTED: N V - - - Z -
  946.                    N tAKES VALUE OF SEVENTH BIT OF RESULTING DATA
  947.                    V tAKES VALUE OF SIXTH BIT OF RESULTING DATA
  948.                    Z sET IF RESULT IS ZERO; ELSE CLEARED.
  949.  
  950.    tsb $NN             04   65sc02
  951.    tsb $NNNN           0c   65sc02
  952.  
  953. tsx
  954.  tRANSFER sTACK pOINTER TO x rEGISTER
  955.   oPERATION AS OF 6502.
  956.  
  957.    tsx                 ba   6502
  958.  
  959. tsy
  960.  tRANSFER sTACK pOINTER TO y rEGISTER
  961.  
  962.    tsy                 0b   65ce02
  963.  
  964. txa
  965.  tRANSFER x rEGISTER tO aCCUMULATOR
  966.   oPERATION AS OF 6502.
  967.  
  968.    txa                 8a   6502
  969.  
  970. txs
  971.  tRANSFER x rEGISTER TO sTACK pOINTER
  972.   oPERATION AS OF 6502.
  973.  
  974.    txs                 9a   6502
  975.  
  976. tya
  977.  tRANSFER y rEGISTER TO aCCUMULATOR
  978.   oPERATION AS OF 6502.
  979.                             
  980.    tya                 98   6502
  981.  
  982. tys                         
  983.  tRANSFER y rEGISTER TO sTACK pOINTER
  984.  
  985.    tys                 2b   65ce02
  986.  
  987. tza
  988.  tRANSFER z rEGISTER TO aCCUMULATOR
  989.  
  990.    tza                 6b   65ce02
  991.  
  992.  
  993. 4. aSSUMPTIONS/eRRORS
  994.    {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  995.    sINCE i DO NOT HAVE A 65ce02 cpu, MUCH OF THIS INFORMATION IS BASED ON
  996.    GUESSWORK.
  997.    asw SHIFTS _LEFT_, BECAUSE THE ORIGINAL 6502 "aRITHMETIC sHIFT" COMMAND
  998.        SHIFTS LEFT, TOO, AND THE aRITHMETIC sHIFT lEFT IS THE MORE COMMON
  999.        WAY TO DO AN ARITHMETICAL SHIFT.
  1000.    row MUST BE A ROTATE RIGHT, SO THAT THERE IS A 16 BIT COMMAND BOTH FOR
  1001.        ROTATING/SHIFTING LEFT AND RIGHT.
  1002.    inw'S OPERAND AS DESCRIBED IN 64net.opc IS 8 BIT AND THEREFORE A ZEROPAGE
  1003.        ADDRESS. tHIS IS NOT CONSEQUENT WHEN COMPARED TO THE OTHER NEW rmw
  1004.        COMMANDS THAT HAVE 16 BIT ADDRESSES AS OPERANDS; THEREFORE IT WAS ASSUMED
  1005.        THAT THIS IS A MISTAKE IN 64net.opc.
  1006.    tab/tba COMMANDS COULD MEAN "tRANSFER bANK rEGISTER" IN THE SENSE OF THE BANK
  1007.        INDEX THE CURRENT DATA REFFERED TO BY MEMORY ADDRESSING IS STORED IN.
  1008.        tHIS MODEL WOULD IMPLY THAT DATA CAN BE STORED IN UP TO 256 BANKS OF
  1009.        64 kb EACH (THAT IS A TOTAL OF 16 mb), BUT CODE CAN ONLY BE RUN IN BANK
  1010.        0, AND A CROSS-BANK MOVE OF DATA WOULD MEAN MODIFYING THE b REGISTER
  1011.        TWICE PER BYTE COPIED (8+ CYCLES).
  1012.        sINCE THE 65ce02 HAS BEEN DESIGNED BY cOMMODORE, IT IS MORE LIKELY THAT
  1013.        THEY MAINTAINED THEIR CONVENTIONAL BANKING TECHNIQUES AS USED IN THE c64
  1014.        AND THE c128 WITH SWITCHABLE BANKS OF VARIABLE SIZE, CONTROLLED BY A
  1015.        SEPARATE ic. fURTHERMORE, THE c65 PRELIMINARY DOCUMENTATION [1] SAYS THAT
  1016.        THE c64dx/c65 CAN ONLY ADDRESS UP TO 1 mb OF MEMORY, AND THAT THE MEMORY
  1017.        MAPPER IS NOT PART OF THE cpu CORE.
  1018.        oN THE 65816, THE OPCODES OF tab AND tba STAND FOR tcd AND tdc (OR
  1019.        tad/tda)[8], THAT IS tRANSFER [16-BIT] aCCUMULATOR [c] TO dIRECT pAGE
  1020.        rEGISTER d (AND THE OTHER WAY ROUND). tHE 65ce02 HAS BEEN DESIGNED
  1021.        FAR AFTER THE wdc 65816 HAD APPEARED, AND BECAUSE THESE COMMANDS
  1022.        LOOK QUITE SIMILAR, IT IS QUITE LIKELY THAT b STANDS FOR THE BANK THE
  1023.        ZERO PAGE IS STORED IN, THUS MEANING THE 65ce02 WOULD ALSO HAVE DIRECT
  1024.        PAGE FUNCTIONS JUST LIKE THE 65816.
  1025.        (iT MIGHT HAVE BEEN BECAUSE OF "INTELLECTUAL PROPERTY" REASONS THAT
  1026.        THEY CALLED IT DIFFERENTLY.)
  1027.        tHE b COULD THEREFORE STAND FOR "bLOCK rEGISTER", BECAUSE cOMMODORE
  1028.        SOMETIMES USED TO CALL A PAGE OF MEMORY (THAT IS 256 BYTES) A BLOCK.
  1029.        iT IS THEREFORE ASSUMED THAT THE 65ce02 PROVIDES DIRECT PAGE FUNCTIONS.
  1030.    asr WITH THE OPCODE OF 43, AS LISTED IN 64net.opc IS MOST PROBABLY asr a
  1031.        (COMPARE TO asl a).
  1032.        fURTHERMORE, THE CORRECT OPERATION OF asr HASN'T BEEN DESCRIBED ANYWHERE.
  1033.        iT IS NOT JUST THE INVERSE OPERATION OF asl, BECAUSE lsr ALREDAY DOES
  1034.        THAT. mOST PROBABLY IT WORKS LIKE THE I8086 sar (sHIFT aRITHMETICALLY
  1035.        rIGHT) INSTRUCTION[9], WHICH WORKS JUST LIKE 6502 lsr, BUT DOESN'T CHANGE
  1036.        THE VALUE OF THE UPPERMOST BIT, THUS MAKING A SIGNED DIVISION BY TWO
  1037.        POSSIBLE. nOTE THAT THE I8086 sal IS ALSO EQUIVALENT TO 6502 asl.[9]
  1038.    lda'S OPCODE b2 SHOULD MEAN lda ($NN),z AND b1 SHOULD MEAN lda ($NN),y.
  1039.        iN 64net.opc, BOTH OPCODES ARE TRANSLATED INTO lda ($NN),y.
  1040.    neg'S OPERATION IS NOT DESCRIBED ANYWHERE, BUT BECAUSE OF ITS mNEMONIC
  1041.        IT HAS BEEN ASSUMED THAT IT OPERATES JUST LIKE THE I8086 neg INSTRUCTION.
  1042.    tHE OPERATION OF THE map, see AND cle INSTRUCTIONS ARE UNKNOWN, AS WELL AS
  1043.    THE OPERATION OF THE rts INSTRUCTION WITH AN IMMEDIATE OPERAND. iT MIGHT
  1044.    MODIFY THE STATUS REGISTER OR PULL ADDITIONAL BYTES FROM THE STACK BEFORE
  1045.    RETURNING (COMPARE I8086 ret).
  1046.    fURTHER RESEARCH, USING THE c64dx/c65 rom, WILL BE NECESSARY.
  1047.  
  1048. 5. rEFERENCES
  1049.    {$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}{$7e}
  1050. [1] c64dx system specification [PRELIMINARY]/ fRED bOWEN, pAUL lASSA, bILL
  1051.     gARDEI, vICTOR aNDRADE. oNLINE PUBLICATION, DATED jANUARY 31, 1991,
  1052.     FTP://FTP.FUNET.FI/PUB.CBM/C65/C65-PRE2.ZIP
  1053. [2] eYES, dAVID: pROGRAMMING THE 65816: INCLUDING THE 6502, 65c02 AND 65802 /
  1054.     dAVID eYES AND rON lICHTY
  1055.     nEW yORK, ny: pRENTICE hALL, 1986. isbn: 0-89303-789-3
  1056. [3] gARDNER-sTEPHEN, pAUL: 64net.opc
  1057.     sUPPORT FILE OF THE SAME AUTHOR'S 64net, PROBABLY BASED ON THE OUTPUT
  1058.     OF THE BUILT-IN ml MONITOR OF THE c64/c64dx.
  1059.     tHE DOCUMENT IN THE VERSION OF nOVEMBER 12, 1994 APPARENTLY CONTAINS
  1060.     SOME ERRORS.
  1061. [4] rESTEMEIER, jENS cH.: uNOFFICIAL pc-eNGINE REFERENCE.
  1062.     oNLINE PUBLICATION, DATED jUNE 8, 1997
  1063. [5] tHE vice eMULATOR / sIMULATOR fOR uNIX. pROGRAMMERS' rEVENGE mANUAL.
  1064.     sPECIAL FEATURES IN cbm 8-BIT EMULATION AND eMULATOR fILE cONVERSIONS.
  1065.     oNLINE PUBLICATION, DATED mAY 22, 1996.
  1066.     HTTP://WWW.TU-CHEMNITZ.DE/{$7e}FACHAT/VICE/OLDDOC/eMULATION.HTML
  1067. [6] bAYKO, jOHN: gREAT mICROPROCESSORS OF THE pAST AND pRESENT (v 11.2.0)
  1068.     oNLINE PUBLICATION, DATED sEPTEMBER 1998.
  1069.     HTTP://INFOPAD.EECS.BERKELEY.EDU/cic/ARCHIVE/CPU_HISTORY.HTML
  1070. [7] ip lICENSING. ip pROVIDER bUSINESS mODEL-cREATING a sTANDARD.
  1071.     oNLINE PUBLICATION.
  1072.     HTTP://WWW.WDESIGNC.COM/LICENSING.HTML
  1073. [8] vALTA, jOUKO: g65sc802 / g65sc816 dATA sHEETS.
  1074.     oNLINE PUBLICATION DATED dECEMBER 4, 1995. (qUOTED PAGE DATED sEPTEMBER
  1075.     12, 1994)
  1076.     FTP://FTP.FUNET.FI/PUB/CBM/DOCUMENTS/CHIPDATA/GTE65.ZIP
  1077. [9] iNTEL 80386 pROGRAMMER'S rEFERENCE mANUAL
  1078.     oNLINE PUBLICATION, DATED mAY 26, 1987
  1079.     386INTEL.TXT
  1080.  
  1081. --------------------------------------------------------------------------------
  1082. hELP ME MAKE THIS DOCUMENT GROW!                  gREETINGS TO rrby,ftgljrwuah,m
  1083. --------------------------------------------------------------------------------
  1084. eND OF "65ce02 tECHNICAL rEFERENCE",             (c)mICHAEL sTEIL <MIST@C64.ORG>
  1085.  
  1086.