diff --git a/pat80-io-devices/composite-pal-adapter/software/avr-assembly/character_generator.asm b/pat80-io-devices/composite-pal-adapter/software/avr-assembly/character_generator.asm index 084946f..d5b8e3b 100644 --- a/pat80-io-devices/composite-pal-adapter/software/avr-assembly/character_generator.asm +++ b/pat80-io-devices/composite-pal-adapter/software/avr-assembly/character_generator.asm @@ -37,17 +37,18 @@ draw_char: call update_mem_pointer ; The drawing consist of FONT_HEIGHT cycles. Every glyph byte is placed on its own line ; on screen. To do this, we place it LINE_COLUMNS bytes after the previous one. - ldi HIGH_ACCUM, FONT_HEIGHT + clr HIGH_ACCUM draw_char_loop: ; Load glyph line byte from program memory (and point to the next) - lpm r1, Z+ + lpm A, Z+ ; Write glyph line to framebuffer at chunk cursor position (Y) - st Y, r1 + st Y, A ; Increment chunk cursor position (Y) to next line of the same char column adiw YH:YL,LINE_COLUMNS ; Decrement loop counter and exit if reached 0 - dec HIGH_ACCUM - brne draw_char_loop + inc HIGH_ACCUM + cpi HIGH_ACCUM, FONT_HEIGHT + brlo draw_char_loop ; Char drawing is complete. Increment cursor position inc POS_COLUMN diff --git a/pat80-io-devices/composite-pal-adapter/software/avr-assembly/main.asm b/pat80-io-devices/composite-pal-adapter/software/avr-assembly/main.asm index 2cdb80a..e0b95ed 100644 --- a/pat80-io-devices/composite-pal-adapter/software/avr-assembly/main.asm +++ b/pat80-io-devices/composite-pal-adapter/software/avr-assembly/main.asm @@ -121,16 +121,53 @@ main: ; wait ser r19 dc_wait_loop_1: - ldi r24, 64 + ser r16 dc_wait_loop_2: - dec r24 + dec r16 brne dc_wait_loop_2 dec r19 brne dc_wait_loop_1 + ; wait + ; ser r19 + ; dc_wait_loop_a1: + ; ser r16 + ; dc_wait_loop_a2: + ; dec r16 + ; brne dc_wait_loop_a2 + ; dec r19 + ; brne dc_wait_loop_a1 + ; ; wait + ; ser r19 + ; dc_wait_loop_s1: + ; ser r16 + ; dc_wait_loop_s2: + ; dec r16 + ; brne dc_wait_loop_s2 + ; dec r19 + ; brne dc_wait_loop_s1 + ; ; wait + ; ser r19 + ; dc_wait_loop_d1: + ; ser r16 + ; dc_wait_loop_d2: + ; dec r16 + ; brne dc_wait_loop_d2 + ; dec r19 + ; brne dc_wait_loop_d1 + ; ; wait + ; ser r19 + ; dc_wait_loop_f1: + ; ser r16 + ; dc_wait_loop_f2: + ; dec r16 + ; brne dc_wait_loop_f2 + ; dec r19 + ; brne dc_wait_loop_f1 + inc r18 cpi r18, 0x5B brne draw_chars - ; call draw_carriage_return + call draw_carriage_return jmp dctest