1 2console_pos = $7f2 3console_pos_h = $7f3 4 5; Print char A to console 6; Preserved: A, X, Y 7print_char: 8 jsr wait_vbl ; wait for safe access 9print_char_no_wait: 10 pha 11 lda console_pos_h 12 sta $2006 13 inc console_pos 14 lda console_pos 15 sta $2006 16 lda #0 ; restore scroll 17 sta $2005 18 sta $2005 19 pla 20 sta $2007 21 rts 22 .code 23 24; Go to next line 25; Preserved: A, X, Y 26console_newline: 27 pha 28 lda console_pos 29 and #$e0 30 clc 31 adc #$21 32 sta console_pos 33 lda console_pos_h 34 adc #0 35 sta console_pos_h 36 pla 37 rts 38 .code 39 40; Initialize console 41init_console: 42 lda #$81 43 sta console_pos 44 lda #$20 45 sta console_pos_h 46 47 jsr wait_vbl ; init ppu 48 lda #0 49 sta $2000 50 sta $2001 51 52 lda #$3f ; load palette 53 jsr set_vpage 54 lda #15 ; bg 55 ldx #48 ; fg 56 ldy #8 57pal: sta $2007 58 stx $2007 59 stx $2007 60 stx $2007 61 dey 62 bne pal 63 64 lda #$02 ; load tiles 65 jsr set_vpage 66 lda #chr_data.lsb 67 sta <$f0 68 lda #chr_data.msb 69 sta <$f1 70 ldy #0 71 lda #59 ; 59 chars in data 72 sta <$f2 73chr_loop: 74 ldx #8 75 lda #0 76: sta $2007 77 dex 78 bne - 79 80 ldx #8 81: lda ($f0),y 82 iny 83 sta $2007 84 dex 85 bne - 86 87 tya 88 bne + 89 inc <$f1 90: dec <$f2 91 bne chr_loop 92 93 lda #32 94 jsr fill_nametable 95 96 jsr wait_vbl ; enable ppu 97 lda #0 98 sta $2005 99 sta $2005 100 lda #$0a 101 sta $2001 102 rts 103 .code 104 105chr_data: 106 .incbin "chr.bin" 107 108