;;; -*- Mode: asm; indent-tabs-mode: t; tab-width: 8 -*- ;; petski: https://www.c64-wiki.com/wiki/File:ASCII-Codes.gif ;;https://www.c64-wiki.com/wiki/Character_set ;; Takes in a PETSKI-code in CODE ;; And prints it ON X_pos, Y_pos ;; Note that this is the real positions divided by 8 .proc char_draw Y_pos_offset = $F9F8 ;Reuses from Y_pos X_pos_offset = $FAF7 X_pos = $FA Y_pos = $F9 charset = $FB code = $FE petski_position = $FEFF ;reuses code:s memory screen_position = $FCFD ;#### TEMP INIT DATA #### LDA #$10 STA code LDA #04 STA X_pos LDA #02 STA Y_pos ;;Do arithimatic to know where to read and write bytes. initial: ;We first need to clear some memory LDA #$00 STA petski_position, petski_position, petski_position, Character_generator_ROM, ! ;;Calculate screen_position to use Mov_16 >screen_position, VIC_bank ;; Add the X_pos has a offset multiplier of *8 because 1 chunk = 8 addresses ;; *8 Mult_16 >X_pos_offset, X_pos_offset, X_pos_offset, screen_position, Y_pos_offset, Y_pos_offset, Y_pos_offset, Y_pos_offset, Y_pos_offset, Y_pos_offset, Y_pos_offset, Y_pos_offset, Y_pos_offset, screen_position, Y_pos_offset, petski_position), Y STA (>screen_position), Y DEY BNE @loop LDA (>petski_position), Y STA (>screen_position), Y RTS .endproc