1
0
mirror of https://github.com/cc65/cc65.git synced 2026-04-26 13:18:31 +00:00

tgi_vectorchar takes now a char argument. Added tgi_install_vectorfont.

git-svn-id: svn://svn.cc65.org/cc65/trunk@4454 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz
2009-11-06 16:18:13 +00:00
parent ce02b5668c
commit 1154a11649
6 changed files with 59 additions and 10 deletions
+30 -9
View File
@@ -7,13 +7,13 @@
; */
;
.export _tgi_vectorchar
.import imul16x16r32, umul16x16r32, negax, negeax
.import _toascii, imul16x16r32, umul16x16r32, negax, negeax
.include "tgi-kernel.inc"
.include "tgi-vectorfont.inc"
.include "zeropage.inc"
.macpack longbranch
;----------------------------------------------------------------------------
; Data
@@ -28,17 +28,21 @@ X2: .res 2
Y2: .res 2
;----------------------------------------------------------------------------
;
.code
.proc _tgi_vectorchar
; Convert the character to ASCII, multiplicate by two and save into Y
jsr _toascii
asl a
tay
; Since we will call tgi_lineto, which uses the zero page, and we do also
; need the zero page, make room in the register bank.
tay
lda Ops
pha
lda Ops+1
@@ -46,9 +50,26 @@ Y2: .res 2
lda Flag
pha
; Save the pointer
; Calculate a pointer to the vector ops for the given char (now in Y).
sty Ops
lda _tgi_vectorfont+1
tax
ora _tgi_vectorfont
jeq Done ; Bail out if no font installed
lda _tgi_vectorfont
clc
adc #<(TGI_VECTORFONT::CHARS - 2*TGI_VF_FIRSTCHAR)
sta Ops
lda _tgi_vectorfont+1
adc #>(TGI_VECTORFONT::CHARS - 2*TGI_VF_FIRSTCHAR)
sta Ops+1
iny
lda (Ops),y
tax
dey
lda (Ops),y
sta Ops
stx Ops+1
; Main loop executing vector operations
@@ -112,7 +133,7 @@ Loop: lda _tgi_textscalew+0
; Done. Restore zp and return.
@Done: pla
Done: pla
sta Flag
pla
sta Ops+1