6502 에뮬레이터 및 비트맵 디스플레이 작업.

4473 단어
이번 포스팅에서는 6502 Emulator을 이용하여 연습을 해보도록 하겠습니다.

이미 노란색으로 비트맵 표시를 채웠습니다. 이 게시물에서는 코드를 변경하여 몇 가지 다른 결과를 얻을 것입니다.

소스 코드는 다음에서 작동합니다.

    lda #$00    ; set a pointer in memory location $40 to point to $0200
    sta $40     ; ... low byte ($00) goes in address $40
    lda #$02    
    sta $41     ; ... high byte ($02) goes into address $41

    lda #$07    ; colour number

    ldy #$00    ; set index to 0

loop:   sta ($40),y ; set pixel colour at the address (pointer)+Y

    iny     ; increment index
    bne loop    ; continue until done the page (256 pixels)

    inc $41     ; increment the page
    ldx $41     ; get the current page number
    cpx #$06    ; compare with 6
    bne loop    ; continue until done all pages


코드가 생성하는 결과입니다.


조립 > 실행 > 오류 없음 > 노란색 출력.

이제 코드를 수정하여 다음과 같이 변경해 보겠습니다.


  • 디스플레이를 노란색 대신 밝은 파란색으로 채우도록 코드를 변경합니다. (팁: 6502 에뮬레이터 페이지에서 색상 코드를 찾을 수 있습니다.)
  • 각 페이지에서 디스플레이를 다른 색상으로 채우도록 코드를 변경합니다(각 "페이지"는 비트맵 디스플레이의 1/4이 됨).

  • 변경하기.


    색상을 노란색에서 밝은 파란색으로 변경합니다.



    색상을 노란색에서 하늘색으로 변경하려면 선을 변경할 수 있습니다.lda #$07 ~ lda #$e색상 번호는 다음과 같습니다.

    $0: Black
    $1: White
    $2: Red
    $3: Cyan
    $4: Purple
    $5: Green
    $6: Blue
    $7: Yellow
    $8: Orange
    $9: Brown
    $a: Light red
    $b: Dark grey
    $c: Grey
    $d: Light green
    $e: Light blue
    $f: Light grey
    


    원하는 결과가 얻어집니다.

    밝은 파란색이 어떻게 저장되는지 확인하기 위해 모니터 체크박스를 체크했습니다.



    코드를 변경하여 각 페이지에서 다른 색상으로 디스플레이를 채우십시오.



    이제 각 페이지(각 페이지: 비트맵 디스플레이의 1/4)에서 다른 색상으로 디스플레이를 채우도록 코드를 변경하겠습니다.

    이 선은 임의의 색상 생성을 담당합니다. (정확히 무작위는 아님).

    inc $10 ; increment the color number
    


    이것은 최종 코드입니다.

            lda #$00    ; set a pointer at $40 to point to $0200
            sta $40
            lda #$02
            sta $41
    
            lda #$07    ; colour number
            sta $10 ; store colour number to memory location $10
    
            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
    
            inc $10 ; increment the color number
            lda $10 ; colour number
    
            ldx $41 ; get the current page number
            cpx #$06 ; compare with 6
            bne loop ; continue until done all pages
    
    


    최종 결과:



    이 코드는 임의의 색상 번호($fe)를 사용하여 rendom 색상 페이지를 생성합니다.
    $fe에서 의사 난수 생성기(PRNG)를 사용하여 첫 번째 색상을 임의 색상(lda $fe)으로 설정할 수도 있습니다.

      lda #$00    ; set a pointer at $40 to point to $0200
            sta $40
            lda #$02
            sta $41
    
            lda $fe ; random color
            sta $10 ; store colour number to memory location $10
    
            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
    
            inc $10 ; increment the color number
            lda $10 ; colour number
    
            ldx $41 ; get the current page number
            cpx #$06 ; compare with 6
            bne loop ; continue until done all pages
    






    에뮬레이터로 더 많이 작업할수록 더 많이 이해하게 됩니다.

    좋은 웹페이지 즐겨찾기