DEV Community 👩‍💻👨‍💻

Joyce Wei
Joyce Wei

Posted on

SPO600 Lab2 - 6502 Assembly Language Lab

In lab2 we are going to draw borders around the bitmap screen with 4 different colours using 6502 assembly language.

result

Source Code

    LDA #$00    ; set a pointer at $40 to point to $0200
    STA $40
    LDA #$02
    STA $41

    LDA #$05    ; colour number: green
    LDY #$00    ; set index to 0

; draw green line at the top of the bitmap screen

top:    
    STA ($40),y ; set pixel at the address (pointer)+Y
    INY         ; increment index
    CPY #$20    ; 
    BNE top         ; continue until done the page


    LDA #$05    ; set page to 5
    STA $41     ; 

    LDA #$06    ; colour number: blue
    LDY #$E0    ; set index to starting index of last line in pg.5

; draw blue line at the bottom of the bitmap screen

bottom: 
    STA ($40),y ; set pixel at the address (pointer)+Y
    INY         ; increment index
    CPY #$00    ; 
    BNE bottom      ; continue until done the page


    LDA #$02    ; set page to 2
    STA $41     ; 

    LDY #$00    ; set index to starting index of pg.2

; draw yellow line to the left and 
; purple line to the right of the bitmap screen

sides:  
    CLC     ; clear carry to prevent accumulating of a value
    LDA #$07    ; colour number: yellow
    STA ($40),y ; set pixel at the address (pointer)+Y
    TYA     ; transfer y to a
    ADC #$1F    ; increment memory (a) by 1f (32 in hex = 1 line)
    TAY     ; transfer a to y
    LDA #$04    ; colour number: purple
    STA ($40),y ; set pixel at the address (pointer)+Y
    INY     ; increment y (to first index of next line)
    CPY #$00    ; 
    BNE sides   ; continue until done the page

    INC $41     ; increment 1 page
    LDX $41     ; get current page number
    CPX #$06    ; compare with 6
    BNE sides   ; continue until done the page
Enter fullscreen mode Exit fullscreen mode

I have break down the process of drawing the borders into 3 parts.

  1. loop "top" draws a green border at the top of the bitmap screen top
  2. loop "bottom draws a blue border at the bottom of the bitmap screen by setting the starting index to $05E0 bottom
  3. loop "sides" draws a yellow border to the left and a purple border to the right of the bitmap screen by keep switching between the two colours and increasing the index of the current line. sides

Top comments (0)

Update Your DEV Experience Level:

Settings

Go to your customization settings to nudge your home feed to show content more relevant to your developer experience level. 🛠