home *** CD-ROM | disk | FTP | other *** search
/ Go64! / Go64_1999-09_1999_CSW_Side_B.d64 / 6502-opcodes < prev    next >
Text File  |  2023-02-26  |  18KB  |  824 lines

  1. aSSEMBLY lANGUAGE iNSTRUCTION
  2.  
  3.  
  4.   compare instructions
  5.  
  6.  
  7.   cmp  (COMPARE WITH aCCUMULATOR)
  8.  
  9.  
  10.   cOMPARES THE ADDRESSED BYTE WITH THE aCCUMULATOR.
  11.   cHANGES FLAGS: n z c
  12.  
  13.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  14.  
  15.   IMMEDIATE             cmp #OP       $C9     2     2
  16.   DIRECT                cmp OP        $CD     3     4
  17.   ZERO PAGE             cmp OP        $C5     2     3
  18.   DIRECT x-INDEXED      cmp OP,X      $DD     3     4
  19.   DIRECT y-INDEXED      cmp OP,Y      $D9     3     4
  20.   ZERO PAGE x-INDEXED   cmp OP,X      $D5     2     4
  21.   INDIRECT x-INDEXED    cmp (OP,X)    $C1     2     6
  22.   INDIRECT y-INDEXED    cmp (OP),Y    $D1     2     5
  23.  
  24.  
  25.  
  26.   cpx  (COMPARE WITH X-REGISTER)
  27.  
  28.  
  29.   cOMPARES A BYTE TO THE X REGISTER.
  30.   cHANGES FLAGS: n z c
  31.  
  32.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  33.  
  34.   IMMEDIATE             cpx #OP       $E0     2     2
  35.   DIRECT                cpx OP        $EC     3     4
  36.   ZERO PAGE             cpx OP        $E4     2     3
  37.  
  38.  
  39.  
  40.   cpy  (COMPARE WITH Y-REGISTER)
  41.  
  42.  
  43.   cOMPARES A BYTE TO THE Y REGISTER.
  44.   cHANGES FLAGS: n z c
  45.  
  46.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  47.  
  48.   IMMEDIATE             cpx #OP       $C0     2     2
  49.   DIRECT                cpx OP        $CC     3     4
  50.   ZERO PAGE             cpx OP        $C4     2     3
  51.  
  52.  
  53.  
  54.   jump instructions
  55.  
  56.  
  57.  
  58.   bcc  (BRANCH IF CARRY CLEAR)
  59.  
  60.  
  61.   jUMPS IF THE CARRY FLAG IS CLEARED.
  62.   cHANGES FLAGS: NONE
  63.  
  64.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  65.  
  66.   RELATIVE              bcc OP        $90     2     2
  67.  
  68.  
  69.  
  70.   bcs  (BRANCH IF CARRY SET)
  71.  
  72.  
  73.   jUMPS IF THE CARRY FLAG IS SET.
  74.   cHANGES FLAGS: NONE
  75.  
  76.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  77.  
  78.   RELATIVE               bcs OP       $B0     2     2
  79.  
  80.  
  81.  
  82.   beq  (BRANCH IF EQUAL TO ZERO)
  83.  
  84.  
  85.   jUMPS IF THE ZERO FLAG IS SET.
  86.   cHANGES FLAGS: NONE
  87.  
  88.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  89.  
  90.   RELATIVE              beq OP        $F0     2     2
  91.  
  92.  
  93.  
  94.   bne  (BRANCH IF NOT EQUAL TO ZERO)
  95.  
  96.  
  97.   jUMPS IF THE ZERO FLAG IS CLEARED.
  98.   cHANGES FLAGS: NONE
  99.  
  100.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  101.  
  102.   RELATIVE              bne OP        $D0     2     2
  103.  
  104.  
  105.  
  106.   bmi  (BRANCH IF MINUS)
  107.  
  108.  
  109.   jUMPS IF THE NEGATIVE FLAG IS SET.
  110.   cHANGES FLAGS: NONE
  111.  
  112.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  113.  
  114.   RELATIVE              bmi OP        $30     2     2
  115.  
  116.  
  117.  
  118.   bpl  (BRANCH IF PLUS)
  119.  
  120.  
  121.   jUMPS IF THE NEGATIVE FLAG IS CLEARED.
  122.   cHANGES FLAGS: NONE
  123.  
  124.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  125.  
  126.   RELATIVE              bpl OP        $10     2     2
  127.  
  128.  
  129.  
  130.   bvc   (BRANCH IF OVERFLOW CLEAR)
  131.  
  132.  
  133.   jUMPS IF THE OVERFLOW FLAG IS CLEARED.
  134.   cHANGES FLAGS: NONE
  135.  
  136.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  137.  
  138.   RELATIVE              bvc OP        $50     2     2
  139.  
  140.  
  141.  
  142.   bvs  (BRANCH IF OVERFLOW SET)
  143.  
  144.  
  145.   jUMPS IF THE OVERFLOW FLAG IS SET.
  146.   cHANGES FLAGS: NONE
  147.  
  148.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  149.  
  150.   RELATIVE              bvs OP        $70     2     2
  151.  
  152.  
  153.  
  154.  
  155.   jmp  (JUMP)
  156.  
  157.  
  158.   jUMPS TO THE GIVEN ADDRESS.
  159.   cHANGES FLAGS: NONE
  160.  
  161.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  162.  
  163.   DIRECT                jmp OP        $4C     3     3
  164.   iNDIREKT              jmp (OP)      $6C     3     5
  165.  
  166.  
  167.  
  168.   jsr  (JUMP TO SUBROUTINE)
  169.  
  170.  
  171.   jUMPS TO THE GIVEN ADDRESS (SUB-ROUTINE) AFTER PUSHING THE
  172.   RETURN ADDRESS -1 ONTO THE STACK.
  173.   cHANGES FLAGS: NONE
  174.  
  175.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  176.  
  177.   DIRECT                jsr OP        $20     3     6
  178.  
  179.  
  180.  
  181.   nop  (NO OPERATION)
  182.  
  183.  
  184.   nO OPERATION.
  185.   cHANGES FLAGS: NONE
  186.  
  187.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  188.  
  189.   IMPLICIT              nop           $EA     1     2
  190.  
  191.  
  192.  
  193.   rts  (RETURN FROM SUBROUTINE)
  194.  
  195.  
  196.   rETURNS FROM A SUBROUTINE: PULLS THE RETURN ADDRESS (TWO BYTES) FROM
  197.   STACK AND JUMPS TO THIS ADDRESS PLUS 1.
  198.   cHANGES FLAGS: NONE
  199.  
  200.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  201.  
  202.   IMPLICIT              rts           $60     1     6
  203.  
  204.  
  205.  
  206.   interrupt instructions
  207.  
  208.  
  209.  
  210.   brk  (BREAK)
  211.  
  212.  
  213.   iNTERRUPTS PROGRAM EXECUTION.
  214.   cHANGES FLAGS: b
  215.  
  216.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  217.  
  218.   IMPLICIT              brk           $00     1     7
  219.  
  220.  
  221.  
  222.   cli  (CLEAR INTERRUPT FLAG)
  223.  
  224.  
  225.   cLEARS THE INTERRUPT FLAG.
  226.   cHANGES FLAGS: i
  227.  
  228.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  229.  
  230.   IMPLICIT              cli           $58     1     2
  231.  
  232.  
  233.  
  234.   rti  (RETURN FROM INTERRUPT)
  235.  
  236.  
  237.   rETURNS FROM AN INTERRUPT ROUTINE.
  238.   cHANGES FLAGS: n v b d i z c
  239.  
  240.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  241.  
  242.   IMPLICIT              rti           $40     1     6
  243.  
  244.  
  245.  
  246.   sei  (SET INTERRUPT)
  247.  
  248.  
  249.   sET THE INTERRUPT FLAG.
  250.   cHANGES FLAGS: i
  251.  
  252.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  253.  
  254.   IMPLICIT              sei           $78     1     2
  255.  
  256.  
  257.  
  258.   transfer instructions
  259.  
  260.  
  261.  
  262.   lda  (LOAD aCCUMULATOR)
  263.  
  264.  
  265.   lOAD aCCUMULATOR WITH GIVEN VALUE.
  266.   cHANGES FLAGS: n z
  267.  
  268.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  269.  
  270.   IMMEDIATE             lda #OP       $A9     2     2
  271.   DIRECT                lda OP        $AD     3     4
  272.   ZERO PAGE             lda OP        $A5     2     3
  273.   DIRECT x-INDEXED      lda OP,X      $BD     3     4
  274.   DIRECT y-INDEXED      lda OP,Y      $B9     3     4
  275.   ZERO PAGE x-INDEXED   lda OP,X      $B5     2     4
  276.   INDIRECT x-INDEXED    lda (OP,X)    $A1     2     6
  277.   INDIRECT y-INDEXED    lda (OP),Y    $B1     2     5
  278.  
  279.  
  280.  
  281.   ldx  (LOAD X-REGISTER)
  282.  
  283.  
  284.   lOAD X REGISTER WITH VALUE.
  285.   cHANGES FLAGS: n z
  286.  
  287.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  288.  
  289.   IMMEDIATE             ldx #OP       $A2     2     2
  290.   DIRECT                ldx OP        $AE     3     4
  291.   ZERO PAGE             ldx OP        $A6     2     3
  292.   DIRECT y-INDEXED      ldx OP,Y      $BE     3     4
  293.   ZERO PAGE y-INDEXED   ldx OP,Y      $B6     2     4
  294.  
  295.  
  296.  
  297.   ldy  (LOAD Y-REGISTER)
  298.  
  299.  
  300.   lOAD Y REGISTER WITH GIVEN VALUE.
  301.   cHANGES FLAGS: n z
  302.  
  303.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  304.  
  305.   IMMEDIATE             ldy #OP       $A0     2     2
  306.   DIRECT                ldy OP        $AC     3     4
  307.   ZERO PAGE             ldy OP        $A4     2     3
  308.   DIRECT x-INDEXED      ldy OP,X      $BC     3     4
  309.   ZERO PAGE x-INDEXED   ldy OP,X      $B4     4     2
  310.  
  311.  
  312.  
  313.   pha  (PUSH aCCUMULATOR)
  314.  
  315.  
  316.   pUSH THE VALUE IN aCCUMULATOR ONTO THE STACK.
  317.   cHANGES FLAGS: NONE
  318.  
  319.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  320.  
  321.   IMPLICIT              pha           $48     1     3
  322.  
  323.  
  324.  
  325.   php  (PUSH PROCESSOR-STATUS)
  326.  
  327.  
  328.   pUSHES THE PROCESSOR STATUS REGISTER ONTO THE STACK.
  329.   cHANGES FLAGS: NONE
  330.  
  331.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  332.  
  333.   IMPLICIT              php           $08     1     3
  334.  
  335.  
  336.  
  337.   pla  (PULL aCCUMULATOR)
  338.  
  339.  
  340.   lOAD THE aCCUMULATOR WITH THE BYTE ON TOP OF THE STACK.
  341.   cHANGES FLAGS: n z
  342.  
  343.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  344.  
  345.   IMPLICIT              pla           $68     1     3
  346.  
  347.  
  348.  
  349.   plp  (PULL PROCESSOR-STATUS)
  350.  
  351.  
  352.   lOAD THE STATUS REGISTER WITH THE BYTE ON TOP OF THE STACK.
  353.   cHANGES FLAGS: n v b d i z c
  354.  
  355.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  356.  
  357.   IMPLICIT              plp           $28     1     4
  358.  
  359.  
  360.  
  361.   sta  (STORE aCCUMULATOR)
  362.  
  363.  
  364.   wRITE THE BYTE IN aCCUMULATOR INTO THE ADDRESSED MEMORY CELL.
  365.   cHANGES FLAGS: NONE
  366.  
  367.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  368.  
  369.   DIRECT                sta OP        $8D     3     4
  370.   ZERO PAGE             sta OP        $85     2     3
  371.   DIRECT x-INDEXED      sta OP,X      $9D     3     5
  372.   DIRECT y-INDEXED      sta OP,Y      $99     3     5
  373.   ZERO PAGE x-INDEXED   sta OP,X      $95     2     4
  374.   INDIRECT x-INDEXED    sta (OP,X)    $81     2     6
  375.   INDIRECT y-INDEXED    sta (OP),Y    $91     2     6
  376.  
  377.  
  378.  
  379.   stx  (STORE X-REGISTER)
  380.  
  381.  
  382.   wRITES X REGISTER TO THE GIVEN ADDRESS.
  383.   cHANGES FLAGS: NONE
  384.  
  385.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  386.  
  387.   DIRECT                ldx OP        $BC     3     4
  388.   ZERO PAGE             ldx OP        $86     2     3
  389.   ZERO PAGE y-INDEXED   ldx OP,Y      $96     2     4
  390.  
  391.  
  392.  
  393.   sty  (STORE Y-REGISTER)
  394.  
  395.  
  396.   wRITES Y REGISTER TO THE GIVEN ADDRESS.
  397.   cHANGES FLAGS: NONE
  398.  
  399.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  400.  
  401.   DIRECT                sty OP        $BC     3     4
  402.   ZERO PAGE             sty OP        $84     2     3
  403.   ZERO PAGE x-INDEXED   sty OP,X      $94     4     2
  404.  
  405.  
  406.  
  407.   tax  (TRANSFER aCCUMULATOR TO X-REGSISTER)
  408.  
  409.  
  410.   cOPY BYTE IN aCCUMULATOR INTO THE X REGISTER.
  411.   cHANGES FLAGS: n z
  412.  
  413.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  414.  
  415.   IMPLICIT              tax           $AA     1     2
  416.  
  417.  
  418.  
  419.   tay  (TRANSFER aCCUMULATOR TO Y-REGISTER)
  420.  
  421.  
  422.   cOPY BYTE IN aCCUMULATOR INTO THE Y REGISTER.
  423.   cHANGES FLAGS: n z
  424.  
  425.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  426.  
  427.   IMPLICIT              tay           $A8     1     2
  428.  
  429.  
  430.  
  431.   txa  (TRANSFER X-REGISTER TO aCCUMULATOR)
  432.  
  433.  
  434.   cOPY THE BYTE IN X REGISTER INTO aCCUMULATOR.
  435.   cHANGES FLAGS: n z
  436.  
  437.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  438.  
  439.   IMPLICIT              txa           $8A     1     2
  440.  
  441.  
  442.  
  443.   tya  (TRANSFER Y-REGISTER TO aCCUMULATOR)
  444.  
  445.  
  446.   cOPY THE BYTE IN Y REGISTER INTO aCCUMULATOR.
  447.   cHANGES FLAGS: n z
  448.  
  449.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  450.  
  451.   IMPLICIT              tya           $98     1     2
  452.  
  453.  
  454.  
  455.   tsx  (TRANSFER STACKREGISTER TO X-REGISTER)
  456.  
  457.  
  458.   cOPIES THE STACK POINTER INTO THE X REGISTER.
  459.   cHANGES FLAGS: n z
  460.  
  461.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  462.  
  463.   IMPLICIT              tsx           $BA     1     2
  464.  
  465.  
  466.  
  467.   txs  (TRANSFER X-REGISTER TO STACKREGISTER)
  468.  
  469.  
  470.   cOPIES THE X REGISTER INTO THE STACK POINTER.
  471.   cHANGES FLAGS: NONE
  472.  
  473.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  474.  
  475.   IMPLICIT              txs           $9A     1     2
  476.  
  477.  
  478.  
  479.   increment/decrement commands
  480.  
  481.  
  482.  
  483.   dec  (DECREMENT MEMORY)
  484.  
  485.  
  486.   dECREMENTS THE BYTE IN THE ADDRESSSED MEMORY CELL BY 1.
  487.   cHANGES FLAGS: n z
  488.  
  489.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  490.  
  491.   DIRECT                dec OP        $CE     3     6
  492.   ZERO PAGE             dec OP        $C6     2     5
  493.   DIRECT x-INDEXED      dec OP,X      $DE     3     7
  494.   ZERO PAGE x-INDEXED   dec OP,X      $D6     2     6
  495.  
  496.  
  497.  
  498.   dex  (DECREMENT X-REGISTER)
  499.  
  500.  
  501.   dECREMENTS THE VALUE OF THE X REGISTER BY ONE.
  502.   cHANGES FLAGS: n z
  503.  
  504.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  505.  
  506.   IMPLICIT              dex           $CA     1     2
  507.  
  508.  
  509.  
  510.   dey  (DECREMENT Y-REGISTER)
  511.  
  512.  
  513.   dECREMENTS THE BYTE IN Y REGISTER BY ONE.
  514.   cHANGES FLAGS: n z
  515.  
  516.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  517.  
  518.   IMPLICIT              dey           $88     1     2
  519.  
  520.  
  521.   inc  (INCREMENT MEMORY)
  522.  
  523.  
  524.   iNCREMENTS THE BYTE AT THE GIVEN ADDRESS BY ONE.
  525.   cHANGES FLAGS: n z
  526.  
  527.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  528.  
  529.   DIRECT                inc OP        $EE     3     6
  530.   ZERO PAGE             inc OP        $E6     2     5
  531.   DIRECT x-INDEXED      inc OP,X      $FE     3     7
  532.   ZERO PAGE x-INDEXED   inc OP,X      $F6     2     6
  533.  
  534.  
  535.  
  536.   inx  (INCREMENT X-REGISTER)
  537.  
  538.  
  539.   iNCREMENTS THE X REGISTER BY ONE.
  540.   cHANGES FLAGS: n z
  541.  
  542.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  543.  
  544.   IMPLICIT              inx           $E8     1     2
  545.  
  546.  
  547.  
  548.   iny  (INCREMENT Y-REGISTER)
  549.  
  550.  
  551.   iNCREMENTS THE Y REGISTER BY ONE.
  552.   cHANGES FLAGS: n z
  553.  
  554.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  555.  
  556.   IMPLICIT              iny           $C8     1     2
  557.  
  558.  
  559.  
  560.   arithmetical instructions
  561.  
  562.  
  563.  
  564.   adc  (ADD WITH CARRY)
  565.  
  566.  
  567.   aDDS THE OPERAND & CARRY FLAG TO THE aCCUMULATOR.
  568.   cHANGES FLAGS: n v z c
  569.  
  570.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  571.  
  572.   IMMEDIATE             adc #OP       $69     2     2
  573.   DIRECT                adc OP        $6D     3     4
  574.   ZERO PAGE             adc OP        $65     2     3
  575.   DIRECT x-INDEXED      adc OP,X      $7D     3     4
  576.   DIRECT y-INDEXED      adc OP,Y      $79     3     4
  577.   ZERO PAGE x-INDEXED   adc OP,X      $75     2     4
  578.   INDIRECT x-INDEXED    adc (OP,X)    $61     2     6
  579.   INDIRECT y-INDEXED    adc (OP),Y    $71     2     5
  580.  
  581.  
  582.  
  583.   clc  (CLEAR CARRY)
  584.  
  585.  
  586.   cLEAR THE CARRY FLAG.
  587.   cHANGES FLAGS: c
  588.  
  589.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  590.  
  591.   IMPLICIT              clc           $18     1     2
  592.  
  593.  
  594.  
  595.   cld  (CLEAR DECIMAL MODE)
  596.  
  597.  
  598.   cLEAR THE DECIMAL MODE FLAG.
  599.   cHANGES FLAGS: d
  600.  
  601.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  602.  
  603.   IMPLICIT              cld           $D8     1     2
  604.  
  605.  
  606.  
  607.   clv  (CLEAR OVERFLOW FLAG)
  608.  
  609.  
  610.   cLEAR THE OVERFLOW FLAG.
  611.   cHANGES FLAGS: v
  612.  
  613.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  614.  
  615.   IMPLICIT              clv           $B8     1     2
  616.  
  617.  
  618.  
  619.   sbc  (SUBSTRACT WITH CARRY)
  620.  
  621.  
  622.   sUBTRACTS OPERAND + CARRY FALG FROM aCCUMULATOR.
  623.   cHANGES FLAGS: n v z c
  624.  
  625.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  626.  
  627.   IMMEDIATE             sbc #OP       $E9     2     2
  628.   DIRECT                sbc OP        $ED     3     4
  629.   ZERO PAGE             sbc OP        $E5     2     3
  630.   DIRECT x-INDEXED      sbc OP,X      $FD     3     4
  631.   DIRECT y-INDEXED      sbc OP,Y      $F9     3     4
  632.   ZERO PAGE x-INDEXED   sbc OP,X      $F5     2     4
  633.   INDIRECT x-INDEXED    sbc (OP,X)    $E1     2     6
  634.   INDIRECT y-INDEXED    sbc (OP),X    $F1     2     5
  635.  
  636.  
  637.  
  638.   sec  (SET CARRY)
  639.  
  640.  
  641.   sET THE CARRY FLAG.
  642.   cHANGES FLAGS: c
  643.  
  644.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  645.  
  646.   IMPLICIT              sec           $38     1     2
  647.  
  648.  
  649.  
  650.   sed  (SET DECIMAL MODE)
  651.  
  652.  
  653.   sET THE DECIMAL MODE FLAG.
  654.   cHANGES FLAGS: d
  655.  
  656.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  657.  
  658.   IMPLICIT              sed           $F8     1     2
  659.  
  660.  
  661.  
  662.   logical instructions
  663.  
  664.  
  665.  
  666.   and  (and aCCUMULATOR)
  667.  
  668.  
  669.   pERFORMS A LOGICAL and (CONJUNCTION) BETWEEN THE aCCUMULATOR AND THE
  670. OPERAND.
  671.   cHANGES FLAGS: n z
  672.  
  673.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  674.  
  675.   IMMEDIATE             and #OP       $29     2     2
  676.   DIRECT                and OP        $2D     3     4
  677.   ZERO PAGE             and OP        $25     2     3
  678.   DIRECT x-INDEXED      and OP,X      $3D     3     4
  679.   DIRECT y-INDEXED      and OP,Y      $39     3     4
  680.   ZERO PAGE x-INDEXED   and OP,X      $35     2     4
  681.   INDIRECT x-INDEXED    and (OP,X)    $21     2     6
  682.   INDIRECT y-INDEXED    and (OP),Y    $31     2     5
  683.  
  684.  
  685.  
  686.   bit  (TEST BITS)
  687.  
  688.   pERFORMS A LOGICAL and WITH THE aCCUMULATOR AND THE OPERAND AND SETS
  689. THE zERO FLAG
  690.   ACCORDINGLY. bIT 7 OF THE OPERAND IS COPIED INTO THE n FLAG, BIT 6
  691. INTO
  692.   THE v FLAG.
  693.   cHANGES FLAGS: n v z
  694.  
  695.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  696.  
  697.   DIRECT                bit OP        $2C     3     4
  698.   ZERO PAGE             bit OP        $24     2     3
  699.  
  700.  
  701.  
  702.   eor  (EXCLUSIVE-OR aCCUMULATOR)
  703.  
  704.  
  705.   pERFORMS AN EXCLUSIVE-OR BETWEEN THE aCCUMULATOR AND THE OPERAND.
  706.   cHANGES FLAGS: n z
  707.  
  708.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  709.  
  710.   IMMEDIATE             eor #OP       $49     2     2
  711.   DIRECT                eor OP        $4D     3     4
  712.   ZERO PAGE             eor OP        $45     2     3
  713.   DIRECT x-INDEXED      eor OP,X      $5D     3     4
  714.   DIRECT y-INDEXED      eor OP,Y      $59     3     4
  715.   ZERO PAGE x-INDEXED   eor OP,X      $55     2     4
  716.   INDIRECT x-INDEXED    eor (OP,X)    $41     2     6
  717.   INDIRECT y-INDEXED    eor (OP),Y    $51     2     5
  718.  
  719.  
  720.  
  721.   ora  (or aCCUMULATOR)
  722.  
  723.  
  724.   pERFORMS A LOGICAL or (DISJUNCTION) BETWEEN THE aCCUMULATOR AND THE
  725. OPERAND.
  726.   cHANGES FLAGS: n z
  727.  
  728.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  729.  
  730.   IMMEDIATE             ora #OP       $09     2     2
  731.   DIRECT                ora OP        $0D     3     4
  732.   ZERO PAGE             ora OP        $05     2     3
  733.   DIRECT x-INDEXED      ora OP,X      $1D     3     4
  734.   DIRECT y-INDEXED      ora OP,Y      $19     3     4
  735.   ZERO PAGE x-INDEXED   ora OP,X      $15     2     4
  736.   INDIRECT x-INDEXED    ora (OP,X)    $01     2     6
  737.   INDIRECT y-INDEXED    ora (OP),Y    $11     2     5
  738.  
  739.  
  740.  
  741.   shift and rotate instructions
  742.  
  743.  
  744.  
  745.   asl  (ARITHMETIC SHIFT LEFT)
  746.  
  747.  
  748.   sHIFTS THE BITS OF THE OPERAND ONE POSITION TO THE LEFT, ADDING A
  749. ZERO
  750.   BIT AT THE RIGHTMOST POSITION WHICH BECOMES FREE, AND SHIFTING THE
  751.   LEFTMOST BIT INTO THE CARRY FLAG (c).
  752.   tHIS OPERATION IS EQUAL TO MULTIPLYING BY TWO.
  753.  
  754.   cHANGES FLAGS: n z c
  755.  
  756.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  757.  
  758.   aCCUMULATOR           asl           $0A     1     2
  759.   DIRECT                asl OP        $0E     3     6
  760.   ZERO PAGE             asl OP        $06     2     5
  761.   DIRECT x-INDEXED      asl OP,X      $1E     3     7
  762.   ZERO PAGE x-INDEXED   asl OP,X      $16     2     6
  763.  
  764.  
  765.  
  766.   lsr  (LOGICAL SHIFT RIGHT)
  767.  
  768.   sHIFTS THE BITS OF THE OPERAND ONE BIT TO THE RIGHT, INSERTING A
  769. ZERO
  770.   AT THE LEFT END, AND SHIFTING THE RIGHTMOST BIT INTO THE CARRY FLAG.
  771.   tHIS OPERATION IS THE SAME AS DIVIDING BY TWO.
  772.  
  773.   cHANGES FLAGS: n z c
  774.  
  775.  
  776.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  777.  
  778.   aCCUMULATOR           lsr           $4A     1     2
  779.   DIRECT                lsr OP        $4E     3     6
  780.   ZERO PAGE             lsr OP        $46     2     5
  781.   DIRECT x-INDEXED      lsr OP,X      $5E     3     7
  782.   ZERO PAGE x-INDEXED   lsr OP,X      $56     2     6
  783.  
  784.  
  785.  
  786.   rol  (ROTATE LEFT)
  787.  
  788.  
  789.   rOTATES THE BITS OF THE OPERAND ONE POSITION TO THE LEFT, INSERTING
  790. THE
  791.   CURRENT BIT IN THE c FLAG AT THE RIGHT END, AND SHIFTS THE LEFTMOST
  792. BIT
  793.   INTO THE CARRY.
  794.  
  795.   cHANGES FLAGS: n z c
  796.  
  797.  
  798.  
  799.   aCCUMULATOR           rol           $2A     1     2
  800.   DIRECT                rol OP        $2E     3     6
  801.   ZERO PAGE             rol OP        $26     2     5
  802.   DIRECT x-INDEXED      rol OP,X      $3E     3     7
  803.   ZERO PAGE x-INDEXED   rol OP,X      $36     2     6
  804.  
  805.  
  806.  
  807.   ror  (ROTATE RIGHT)
  808.  
  809.  
  810.   rOTATES THE BITS OF THE OPERAND ONE BIT TO THE RIGHT. tHE LEFTMOST
  811. BIT
  812.   WHICH BECOMES FREE TAKES THE VALUE OF THE c FLAG, WHILE THE
  813. RIGHTMOST
  814.   BIT IS SHIFTED INTO THE c FLAG.
  815.  
  816.   cHANGES FLAGS: n z c
  817.  
  818.   ADDRESSING MODE       NOTATION      CODE  LENGTH  CYCLES
  819.  
  820.   aCCUMULATOR           ror           $6A     1     2
  821.   DIRECT                ror OP        $6E     3     6
  822.   ZERO PAGE             ror OP        $66     2     5
  823.   DIRECT x-INDEXED      ror OP,X      $7E     3     7
  824.   ZERO PAGE x-INDEXED   ror OP,X      $76     2     6