diff --git a/mandel.s b/mandel.s index b7c323b..ed7ae40 100644 --- a/mandel.s +++ b/mandel.s @@ -142,26 +142,32 @@ KEY_0 = 50 strings: str_self: - .byte "MANDEL-6502", 0 + .byte "MANDEL-6502" str_self_end: + .byte 0 str_speed: - .byte "us/iter: ", 0 + .byte "us/iter: " str_speed_end: + .byte 0 str_run: - .byte " RUN", 0 + .byte " RUN" str_run_end: + .byte 0 str_done: - .byte "DONE", 0 + .byte "DONE" str_done_end: + .byte 0 +str_padding: + .byte " " +str_padding_end: + .byte 0 -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 -speed_precision = 6 +str_padding_len = str_padding_end - str_padding -speed_start = 40 - str_done_len - str_speed_len - speed_precision - 1 -speed_len = 14 + str_speed_len +speed_start = 40 - str_done_len - str_speed_len - str_padding_len - 1 char_map: @@ -1288,6 +1294,14 @@ done: rts .endproc +.macro draw_string_const str + lda #.lobyte(str) + sta INBUFF + lda #.hibyte(str) + sta INBUFF + 1 + jsr draw_string +.endmacro + .proc vblank_handler inc count_frames @@ -1506,19 +1520,11 @@ zero_byte_loop: sta text_col lda #0 sta text_row - lda #.lobyte(str_self) - sta INBUFF - lda #.hibyte(str_self) - sta INBUFF + 1 - jsr draw_string + draw_string_const str_self lda #(40 - str_run_len) sta text_col - lda #.lobyte(str_run) - sta INBUFF - lda #.hibyte(str_run) - sta INBUFF + 1 - jsr draw_string + draw_string_const str_run rts .endproc @@ -1773,11 +1779,13 @@ update_status: sta text_col lda #0 sta text_row - lda #.lobyte(str_speed) - sta INBUFF - lda #.hibyte(str_speed) - sta INBUFF + 1 - jsr draw_string + draw_string_const str_speed + + lda text_col + pha + draw_string_const str_padding + pla + sta text_col ; convert to ASCII in INBUFF and print jsr FASC @@ -1834,11 +1842,7 @@ loop: sta text_col lda #0 sta text_row - lda #.lobyte(str_done) - sta INBUFF - lda #.hibyte(str_done) - sta INBUFF + 1 - jsr draw_string + draw_string_const str_done jsr keycheck beq loop