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:
@@ -100,6 +100,7 @@ TGI_TEXT_VERTICAL = 1
|
|||||||
.global _tgi_color ; Current drawing color
|
.global _tgi_color ; Current drawing color
|
||||||
.global _tgi_font ; Which font to use
|
.global _tgi_font ; Which font to use
|
||||||
.global _tgi_textdir ; Current text direction
|
.global _tgi_textdir ; Current text direction
|
||||||
|
.global _tgi_vectorfont ; Pointer to vector font
|
||||||
.global _tgi_textscalew ; Text magnification for the width
|
.global _tgi_textscalew ; Text magnification for the width
|
||||||
.global _tgi_textscaleh ; Text magnification for the height
|
.global _tgi_textscaleh ; Text magnification for the height
|
||||||
.global _tgi_charwidth ; Width of scaled system font char
|
.global _tgi_charwidth ; Width of scaled system font char
|
||||||
@@ -184,6 +185,7 @@ TGI_TEXT_VERTICAL = 1
|
|||||||
.global _tgi_imulround
|
.global _tgi_imulround
|
||||||
.global _tgi_init
|
.global _tgi_init
|
||||||
.global _tgi_install
|
.global _tgi_install
|
||||||
|
.global _tgi_install_vectorfont
|
||||||
.global _tgi_ioctl
|
.global _tgi_ioctl
|
||||||
.global _tgi_line
|
.global _tgi_line
|
||||||
.global _tgi_lineto
|
.global _tgi_lineto
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ struct tgi_vectorfont {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void __fastcall__ tgi_vectorchar (const unsigned char* Ops);
|
void __fastcall__ tgi_vectorchar (char C);
|
||||||
/* Draw one character of the vector font at the current graphics cursor
|
/* Draw one character of the vector font at the current graphics cursor
|
||||||
* position using the current font magnification.
|
* position using the current font magnification.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ S_OBJS = tgi-kernel.o \
|
|||||||
tgi_gotoxy.o \
|
tgi_gotoxy.o \
|
||||||
tgi_imulround.o \
|
tgi_imulround.o \
|
||||||
tgi_init.o \
|
tgi_init.o \
|
||||||
|
tgi_install_vectorfont.o\
|
||||||
tgi_ioctl.o \
|
tgi_ioctl.o \
|
||||||
tgi_line.o \
|
tgi_line.o \
|
||||||
tgi_linepop.o \
|
tgi_linepop.o \
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ _tgi_cury: .res 2 ; Current drawing cursor Y
|
|||||||
_tgi_color: .res 1 ; Current drawing color
|
_tgi_color: .res 1 ; Current drawing color
|
||||||
_tgi_font: .res 1 ; Which font to use
|
_tgi_font: .res 1 ; Which font to use
|
||||||
_tgi_textdir: .res 1 ; Current text direction
|
_tgi_textdir: .res 1 ; Current text direction
|
||||||
|
_tgi_vectorfont: .res 2 ; Pointer to vector font
|
||||||
; The following two store an 8.8 fixed point value in the first two bytes,
|
; The following two store an 8.8 fixed point value in the first two bytes,
|
||||||
; and a rounded integer value in the third byte. The latter is passed to the
|
; and a rounded integer value in the third byte. The latter is passed to the
|
||||||
; driver to scale the bitmap font. The variables are expected to be in
|
; driver to scale the bitmap font. The variables are expected to be in
|
||||||
|
|||||||
24
libsrc/tgi/tgi_install_vectorfont.s
Normal file
24
libsrc/tgi/tgi_install_vectorfont.s
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
;
|
||||||
|
; Ullrich von Bassewitz, 2009-11-06
|
||||||
|
;
|
||||||
|
|
||||||
|
.include "tgi-kernel.inc"
|
||||||
|
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------------
|
||||||
|
; void __fastcall__ tgi_install_vectorfont (const tgi_vectorfont* font);
|
||||||
|
; /* Install a vector font for use. More than one vector font can be loaded,
|
||||||
|
; * but only one can be active. This function is used to tell which one. Call
|
||||||
|
; * with a NULL pointer to uninstall the currently installed font.
|
||||||
|
; */
|
||||||
|
;
|
||||||
|
|
||||||
|
.code
|
||||||
|
.proc _tgi_install_vectorfont
|
||||||
|
|
||||||
|
sta _tgi_vectorfont
|
||||||
|
stx _tgi_vectorfont+1
|
||||||
|
rts
|
||||||
|
|
||||||
|
.endproc
|
||||||
|
|
||||||
@@ -7,13 +7,13 @@
|
|||||||
; */
|
; */
|
||||||
;
|
;
|
||||||
|
|
||||||
.export _tgi_vectorchar
|
.import _toascii, imul16x16r32, umul16x16r32, negax, negeax
|
||||||
|
|
||||||
.import imul16x16r32, umul16x16r32, negax, negeax
|
|
||||||
|
|
||||||
.include "tgi-kernel.inc"
|
.include "tgi-kernel.inc"
|
||||||
|
.include "tgi-vectorfont.inc"
|
||||||
.include "zeropage.inc"
|
.include "zeropage.inc"
|
||||||
|
|
||||||
|
.macpack longbranch
|
||||||
|
|
||||||
;----------------------------------------------------------------------------
|
;----------------------------------------------------------------------------
|
||||||
; Data
|
; Data
|
||||||
@@ -28,17 +28,21 @@ X2: .res 2
|
|||||||
Y2: .res 2
|
Y2: .res 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;----------------------------------------------------------------------------
|
;----------------------------------------------------------------------------
|
||||||
;
|
;
|
||||||
|
|
||||||
.code
|
.code
|
||||||
.proc _tgi_vectorchar
|
.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
|
; 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.
|
; need the zero page, make room in the register bank.
|
||||||
|
|
||||||
tay
|
|
||||||
lda Ops
|
lda Ops
|
||||||
pha
|
pha
|
||||||
lda Ops+1
|
lda Ops+1
|
||||||
@@ -46,9 +50,26 @@ Y2: .res 2
|
|||||||
lda Flag
|
lda Flag
|
||||||
pha
|
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
|
stx Ops+1
|
||||||
|
|
||||||
; Main loop executing vector operations
|
; Main loop executing vector operations
|
||||||
@@ -112,7 +133,7 @@ Loop: lda _tgi_textscalew+0
|
|||||||
|
|
||||||
; Done. Restore zp and return.
|
; Done. Restore zp and return.
|
||||||
|
|
||||||
@Done: pla
|
Done: pla
|
||||||
sta Flag
|
sta Flag
|
||||||
pla
|
pla
|
||||||
sta Ops+1
|
sta Ops+1
|
||||||
|
|||||||
Reference in New Issue
Block a user