Introduction
Today, I will discuss my first experience working on 6502 Emulator.
The 6502 is an 8-bit processor with a 16-bit address bus. It is, therefore, able to access 64 kilobytes (216 bytes). Since each 16-bit address is comprised of two 8-bit bytes, memory can be viewed as 256 pages of 256 bytes each.
We have two tasks to do:
Calculate how long it takes for the code to execute, assuming a 1 MHz clock speed?
Calculate the execution time of the fastest version of this program that you can create?
Calculate how long it takes for the code to execute, assuming a 1 MHz clock speed?
First of all, below, you can see the code I'm about to work with and count how long it takes to execute it.
    lda #$00    ; set a pointer at $40 to point to $0200
    sta $40
    lda #$02
    sta $41
    lda #$07    ; colour number
    ldy #$00    ; set index to 0
loop:   sta ($40),y ; set pixel at the address (pointer)+Y
    iny     ; increment index
    bne loop    ; continue until done the page
    inc $41     ; increment the page
    ldx $41     ; get the current page number
    cpx #$06    ; compare with 6
    bne loop    ; continue until done all pages
To calculate this code, we will need special docs with the time of each command execution.
I've decided to share my calculation via a photo of excel because it seems more informational.

Calculate the execution time of the fastest version of this program ?
I tried to optimize code and decided to see how different our professor did the same work in class. Code below.
    LDA #$00
    STA $10
    LDY #$02
    STA $11
    LDA #$07
    LDY #$00    
LOOP:   STA ($10),Y
    INY 
    BNE LOOP
    INC $11
    LDX #$06
    CPX $11
    BNE LOOP
I didn't find what I could change to make the first code faster, but I think this code can execute in fewer cycles after I did small calculations.
Conclusion
While working on these experiments, I did solve a minor bug in Assembly Compiler. See the Link to the pull request.
⚠️ Open Source For Developers Blog Post: Link
Links
🖇 git https://github.com/aserputov
🖇 twitter https://twitter.com/aserputov\
p.s This post was made for my SPO class Lab 2 assignment
 

 
    
Top comments (0)