6502 에뮬레이터 및 비트맵 디스플레이 작업.
이미 노란색으로 비트맵 표시를 채웠습니다. 이 게시물에서는 코드를 변경하여 몇 가지 다른 결과를 얻을 것입니다.
소스 코드는 다음에서 작동합니다.
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
코드가 생성하는 결과입니다.
조립 > 실행 > 오류 없음 > 노란색 출력.
이제 코드를 수정하여 다음과 같이 변경해 보겠습니다.
변경하기.
색상을 노란색에서 밝은 파란색으로 변경합니다.
색상을 노란색에서 하늘색으로 변경하려면 선을 변경할 수 있습니다.
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
에뮬레이터로 더 많이 작업할수록 더 많이 이해하게 됩니다.
Reference
이 문제에 관하여(6502 에뮬레이터 및 비트맵 디스플레이 작업.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/smitgabani/working-with-6502-emulator-and-bitmapped-display-37fl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)