diff --git a/mandel.s b/mandel.s index 25eaffd..6c9c42e 100644 --- a/mandel.s +++ b/mandel.s @@ -46,6 +46,38 @@ SDLSTH = $231 .data +strings: +str_self: + .byte "MANDEL-6502" +str_self_end: +str_speed: + .byte "ms/px" +str_speed_end: +str_run: + .byte "RUN " +str_run_end: +str_done: + .byte "DONE" +str_done_end: + +str_self_len = str_self_end - str_self +str_speed_len = str_speed_end - str_speed +str_run_len = str_run_end - str_run +str_done_len = str_done_end - str_done + +char_map: + ; Map ATASCII string values to framebuffer font entries + ; Sighhhhh + .repeat 32, i + .byte i + 64 + .endrepeat + .repeat 64, i + .byte i + .endrepeat + .repeat 32, i + .byte 96 + i + .endrepeat + aspect: ; aspect ratio! ; pixels at 320w are 5:6 (narrow) @@ -467,6 +499,22 @@ enough: rts .endproc +.macro draw_text col, len, cstr + ; clobbers A, X + .local loop + .local done + ldx #0 +loop: + cpx #len + beq done + ldy cstr,x + lda char_map,y + sta textbuffer + col,x + inx + jmp loop +done: +.endmacro + .proc start ; ox = 0; oy = 0; zoom = 0 @@ -507,6 +555,9 @@ zero_byte_loop: cmp #.hibyte(framebuffer_end) bne zero_page_loop + draw_text 0, str_self_len, str_self + draw_text 40 - str_run_len, str_run_len, str_run + ; Re-enable display DMA lda #$22 sta DMACTL @@ -562,6 +613,8 @@ loop_sx_done: loop_sy_done: + draw_text 40 - str_done_len, str_done_len, str_done + loop: ; finished jmp loop