; Screen print. Draws a pixel at a specified position. .proc pixel_draw; Draws a pixel at [Y = FB , X = FC, FD]. Y = 0 - 320, X= 0 - 200 ;write_byte = 00010000, LDA $FC ; X (mod 8) AND #%00000111 ;Store pixel in byte TAX LDA #%10000000 INX tt: DEX BEQ end__;Y=0 end this CLC ROR A jmp tt end__: STA $FE ;FIND THE POSITION IN MEMORY TO WRITE PIXEL ; + + + + + > X ; + ; + ;\/ ; Y ; ; Let be this position in memory be stored in [$49, $4A] temporaraly ; pos = x_offset LDA #%11111000 AND $FC STA $49 LDA $FD STA $4A ; y_offset because chuncks aka y_offset_bc LDA #%00000111 ; A = y (mod 8) AND $FB ; pos += y_offset_bc CLC ADC $49 STA $49 LDA #$00 ADC $4A STA $4A LDY $FB LDA #$00 STA $4B ; y =8 translates to 320 bytes. LDA #%11111000 ; A = y - [y (mod 8)] AND $FB STA $FB ;We need to A = A*40 =A * 2^3 * 5 ; A = A*2^3 mult_16 $FB, $4B mult_16 $FB, $4B mult_16 $FB, $4B ; *5 Add_16 $49, $4A, $FB, $4B Add_16 $49, $4A, $FB, $4B Add_16 $49, $4A, $FB, $4B Add_16 $49, $4A, $FB, $4B Add_16 $49, $4A, $FB, $4B STY $FB ;; add offset for where bitmap is Add_16 $49, $4A, #Bitmap ;;Let draw some stuff LDX #$00 LDA $FE ORA ($49, X) STA ($49, X) RTS .endproc