Hello everyone, I'm Tuan Thanh Tan aka Dustin. If you happen to read this blog. Thank you!
This is the lab 2 for my SPO course. This lab is about writing code in 6502 assembly language. One of the most difficult and cumbersome lab I've ever had.
lda #$00 ; set a pointer at $40 to point to $0200
sta $40
lda #$02
sta $41
lda #$05 ; colour number
ldy #$00 ; set index to 0
top: sta ($40), y;
top: sta ($40), y ; set pixel
iny ; increment index
cpy #$20 ; compare y value with 20. If the index is 20, end the loop
bne top
lda #$05
sta $41 ; point the last page
lda #$06 ; set color blue
ldy #$e0 ; set the index to indicate the last linex
bottom: sta ($40), y ; set pixel
iny ; increment index
bne bottom ; continue until done the line
right_left: lda #$07 ; set index to 0
sta ($40), y ; set the color yellow
tax ; transfer a to x
tya ; transfer y to a
clc ; clear carry flag to do ADC (add with carry)
adc #$1f ; add with #$1f so it indicates the last line
tay ; transfer a to y
txa ; transfer x to a
lda #$04 ; set the color purple
sta ($40), y ; set pixel
iny ; increment index
bne right_left ; continue until done the page : 2
inc $41 ; increment the page
ldx $41 ; get the page
cpx #$06 ; compare with 6 (the last page is 05 so if it is 06, it means all pages are already painted)
bne right_left ; continue until done all page
I found this language has a great deal of complexity and difficulties. But as time goes on, I'll get used to it.
For the performance, I used this website to get the number of circles of each instruction and sum it up. The result that I have is 106.
Top comments (0)