Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Master instruction tracker #6

Open
1 of 78 tasks
goblinoats opened this issue Aug 17, 2023 · 9 comments
Open
1 of 78 tasks

Master instruction tracker #6

goblinoats opened this issue Aug 17, 2023 · 9 comments
Labels
Core Missing functionality core to a working product good first issue Good for newcomers help wanted Extra attention is needed

Comments

@goblinoats
Copy link
Collaborator

goblinoats commented Aug 17, 2023

This is a master tracker for completing instructions.

How to contribute an instruction

If you see an instruction unchecked and want to take it on please do the following:

  1. Open an issue where the title of the issue is the instruction
  2. Provide a description of the instruction functionality
  1. Make it clear that you will be taking this instruction on
  2. Once implemented, create a pull request according to the contribution guidelines
  3. Reference this issue and the issue you opened in the pull request
  4. Add tests to the instruction. (All instruction files are stubbed with their inputs and expected outputs and format of the trace is explained in the notes folder.)

You may reference How to Write an Instruction for a brief walkthrough on how to think about writing opcodes. If you have questions, you may ask them in the discord or in the issue itself. Common questions will be collated into documentation.

Once the implementation is reviewed and the test looks good it will be merged in and the instruction will be checked off.


Good for starters


  • clc
  • cld
  • cli
  • clv
  • dec
  • dex
  • dey
  • eor
  • inc
  • inx
  • iny
  • lda
  • ldx
  • ldy
  • ora
  • sta
  • stx
  • sty
  • sxa
  • sya
  • tax
  • tay
  • txa
  • tya

For intermediate
(These instructions have more diverse address modes)


  • adc
  • cmp
  • cpx
  • cpy
  • lsr
  • asl
  • rol
  • ror
  • bit
  • sbc

More involved
(illegal instr, stack operations, jmps, branches, system functions)

Some of the illegal instructions are simple, but we are leaving them here for now to fill those out last.


  • alr
  • anc
  • and
  • arr
  • ahx
  • axs
  • dcp
  • pha
  • php
  • pla
  • ign
  • isb
  • plp
  • tsx
  • txs
  • tas
  • nop
  • rla
  • rra
  • rti
  • rts
  • sax
  • sec
  • sed
  • sei
  • skb
  • slo
  • sre
  • jsr
  • jmp
  • bcc
  • bcs
  • beq
  • bmi
  • bne
  • bpl
  • branch
  • brk
  • bvc
  • bvs
  • las
  • lax
  • xaa
  • xxx
@goblinoats goblinoats added help wanted Extra attention is needed Core Missing functionality core to a working product labels Aug 17, 2023
@goblinoats goblinoats added this to the Complete all the opcodes milestone Aug 17, 2023
@goblinoats goblinoats changed the title Master opcode tracker Master instruction tracker Sep 11, 2023
@ameya-deshmukh
Copy link

@goblinoats looking for contributors to these? Would love to take a stab at some

@goblinoats
Copy link
Collaborator Author

@ameya-deshmukh Yeah! Take your pic of which instruction you'd like to take on and then just open a separate issue for it so that we know it's in progress and that you've claimed it. Lmk if you run into any speed bumps. Some of the instructions will require more thought than others.

@ameya-deshmukh
Copy link

Got it! Thanks, will let you know my pick

@baz-lightyear baz-lightyear added the good first issue Good for newcomers label Mar 16, 2024
@TAdev0
Copy link

TAdev0 commented Mar 18, 2024

@baz-lightyear @goblinoats hey :) I would like to implement one of these opcodes to get started, is one of them especially easy for a first contribution? Thank you!

@goblinoats
Copy link
Collaborator Author

@TAdev0 You could take a look at iny or dex/dey as they are very similar to inx (which already has an example implementation). The simple operations like binary operations and arithmetic operations are the easiest ones to reason about.

@TAdev0
Copy link

TAdev0 commented Mar 18, 2024

Thank you @goblinoats. I ll work on these !

@yehia67
Copy link

yehia67 commented Mar 18, 2024

Hi @goblinoats, I would like to help😄 Which opcode should I start with? 👀

@goblinoats
Copy link
Collaborator Author

Hey @yehia67, I've sorted the instructions now into categories.

@TAdev0
Copy link

TAdev0 commented Mar 19, 2024

@goblinoats should i rename the check_op function as main function just like INY after implementing the opcode?

And where do these values come from in the INX example?


//PC = 8203
//X = 8201
//Y = 8202
//A = 8200
//SR = 8205

thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Core Missing functionality core to a working product good first issue Good for newcomers help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

5 participants