mirror of
https://github.com/blondie7575/GSCats.git
synced 2024-11-22 06:31:48 +00:00
85 lines
1.5 KiB
ArmAsm
85 lines
1.5 KiB
ArmAsm
.include "equates.s"
|
|
.include "macros.s"
|
|
|
|
.org $0000
|
|
|
|
FIRST_CHAR = 32
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
; renderString (Far entry point)
|
|
;
|
|
; Draws a Pascal string
|
|
;
|
|
; PARAM0L = Pointer to string
|
|
; Y = VRAM position of lower right corner of string at which to draw
|
|
;
|
|
; Trashes SCRATCHL, X, Y, A
|
|
;
|
|
renderString:
|
|
NATIVE
|
|
sty SCRATCHL
|
|
|
|
BITS8
|
|
lda (PARAML0)
|
|
tax
|
|
BITS16
|
|
|
|
renderStringLoop:
|
|
|
|
; Fetch and render next character in string
|
|
txy
|
|
lda #0
|
|
BITS8A
|
|
lda (PARAML0),y
|
|
BITS16
|
|
ldy SCRATCHL
|
|
jsr renderChar
|
|
|
|
dex
|
|
beq renderStringDone
|
|
|
|
; Calculate VRAM pointer for position of next character
|
|
lda SCRATCHL
|
|
sec
|
|
sbc #8
|
|
sta SCRATCHL
|
|
bra renderStringLoop
|
|
|
|
renderStringDone:
|
|
rtl
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
; renderChar
|
|
;
|
|
; Draws a single character
|
|
;
|
|
; A = ASCII code to draw
|
|
; Y = VRAM position of lower right corner at which to draw
|
|
;
|
|
renderChar:
|
|
SAVE_AXY
|
|
|
|
sec ; Bounce off glyph-rendering jump table
|
|
sbc #FIRST_CHAR
|
|
asl
|
|
tax
|
|
FASTGRAPHICS
|
|
jmp (font16characterJumpTable,x)
|
|
|
|
renderCharJumpReturn: ; Compiled glyphs jump back here. Can't rts because stack is turboborked
|
|
SLOWGRAPHICS
|
|
RESTORE_AXY
|
|
rts
|
|
|
|
.include "font8x8.s"
|
|
.include "font16x16.s"
|
|
|
|
; Suppress some linker warnings - Must be the last thing in the file
|
|
; This is because Quinn doesn't really know how to use ca65 properly
|
|
.SEGMENT "ZPSAVE"
|
|
.SEGMENT "EXEHDR"
|
|
.SEGMENT "STARTUP"
|
|
.SEGMENT "INIT"
|
|
.SEGMENT "LOWCODE"
|
|
|