diff --git a/.gitignore b/.gitignore index a91f608..3b2bc56 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ Desktop.ini Thumbs.db *.deb +*.swp diff --git a/data/opcodes.yaml b/data/opcodes.yaml index cd5180b..43e14aa 100644 --- a/data/opcodes.yaml +++ b/data/opcodes.yaml @@ -710,7 +710,7 @@ - :s - :z :implied: - :hex: 0xEA + :hex: 0xE8 :len: 1 :cycles: 2 :boundry_add: false diff --git a/lib/instruction.rb b/lib/instruction.rb index d48a47a..b43d05b 100644 --- a/lib/instruction.rb +++ b/lib/instruction.rb @@ -153,7 +153,7 @@ module Assembler6502 end ## We just don't recognize this line of asm, it must be a Syntax Error - fail(SyntaxError, sprintf("%.4X: #{asm_line}", address)) + fail(SyntaxError, sprintf("%.4X: ", address) + asm_line) end diff --git a/my_background.asm b/my_background.asm new file mode 100644 index 0000000..ce06b9b --- /dev/null +++ b/my_background.asm @@ -0,0 +1,55 @@ + ; Create an iNES header + .ines {"prog": 1, "char": 1, "mapper": 0, "mirror": 1} + + + ; Main code segment + .org $C000 +RESET: + SEI ; disable IRQs + CLD ; disable decimal mode + LDX #$40 + STX $4017 ; disable APU frame IRQ + LDX #$FF + TXS ; Set up stack + INX ; now X = 0 + STX $2000 ; disable NMI + STX $2001 ; disable rendering + STX $4010 ; disable DMC IRQs + +vblankwait1: ; First wait for vblank to make sure PPU is ready + BIT $2002 + BPL vblankwait1 + +clrmem: + LDA #$00 + STA $0000, X + STA $0100, X + STA $0200, X + STA $0400, X + STA $0500, X + STA $0600, X + STA $0700, X + LDA #$FE + STA $0300, X + INX + BNE clrmem + +vblankwait2: ; Second wait for vblank, PPU is ready after this + BIT $2002 + BPL vblankwait2 + + + LDA #$60 ;intensify blues + STA $2001 + +Forever: + JMP Forever ;jump back to Forever, infinite loop + +NMI: + RTI + + + .org $FFFA ;first of the three vectors starts here + .dw NMI ;when an NMI happens (once per frame if enabled) the processor will jump to the label NMI: + .dw RESET ;when the processor first turns on or is reset, it will jump to the label RESET: + .dw $0 ;external interrupt IRQ is not used in this tutorial