Start of TGI changes. Untested, may not work.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4404 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
@@ -1,42 +1,82 @@
|
||||
;
|
||||
; Ullrich von Bassewitz, 22.06.2002
|
||||
; Ullrich von Bassewitz, 2009-20-30
|
||||
;
|
||||
; void __fastcall__ tgi_textstyle (unsigned char magx, unsigned char magy,
|
||||
; void __fastcall__ tgi_textstyle (unsigned magwidth, unsigned magheight,
|
||||
; unsigned char dir);
|
||||
; /* Set the style for text output. */
|
||||
; /* Set the style for text output. The scaling factors for width and height
|
||||
; * are 8.8 fixed point values. This means that $100 = 1 $200 = 2 etc.
|
||||
; */
|
||||
|
||||
|
||||
.include "tgi-kernel.inc"
|
||||
|
||||
.import popax, incsp2
|
||||
.import popax
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; Calculate either the total height or the total width of a bitmapped
|
||||
; character, depending on the value in Y. On entry, X contains the scaling
|
||||
; factor. Since it is usually small, we multiplicate by doing repeated adds.
|
||||
; The function returns zero in X and the calculated value in A.
|
||||
|
||||
.proc charsize_helper
|
||||
|
||||
lda _tgi_fontwidth,y
|
||||
jmp @L2
|
||||
@L1: clc
|
||||
adc _tgi_fontwidth,y
|
||||
@L2: dex
|
||||
bne @L1
|
||||
sta _tgi_charwidth,y
|
||||
rts
|
||||
|
||||
.endproc
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
;
|
||||
|
||||
.proc _tgi_textstyle
|
||||
|
||||
pha
|
||||
jsr popax ; Get magx/magy in one call
|
||||
tay
|
||||
pla
|
||||
sta _tgi_textdir ; Remember the direction
|
||||
|
||||
; A = textdir, X = textmagx, Y = textmagy
|
||||
; The magheight value is in 8.8 fixed point. Store it and calculate a rounded
|
||||
; value for scaling the bitmapped system font in the driver.
|
||||
|
||||
cmp #TGI_TEXT_HORIZONTAL
|
||||
beq DirOk
|
||||
cmp #TGI_TEXT_VERTICAL
|
||||
beq DirOk
|
||||
Fail: jmp tgi_inv_arg ; Invalid argument
|
||||
DirOk: cpy #$00
|
||||
beq Fail ; Cannot have magnification of zero
|
||||
cpx #$00
|
||||
beq Fail ; Cannot have magnification of zero
|
||||
jsr popax ; magheight
|
||||
sta _tgi_textmagh+0
|
||||
stx _tgi_textmagh+1
|
||||
asl a ; Check value behind comma
|
||||
bcc @L1
|
||||
inx ; Round
|
||||
@L1: stx _tgi_textmagh+2 ; Store rounded value
|
||||
|
||||
; Parameter check ok, store them
|
||||
; Calculate the total height of the bitmapped font and remember it.
|
||||
|
||||
stx _tgi_textmagx
|
||||
sty _tgi_textmagy
|
||||
sta _tgi_textdir
|
||||
ldy #1
|
||||
jsr charsize_helper
|
||||
|
||||
; Call the driver, parameters are passed in registers
|
||||
; The magwidth value is in 8.8 fixed point. Store it and calculate a rounded
|
||||
; value for scaling the bitmapped system font in the driver.
|
||||
|
||||
jsr popax ; magheight
|
||||
sta _tgi_textmagw+0
|
||||
stx _tgi_textmagw+1
|
||||
asl a ; Check value behind comma
|
||||
bcc @L2
|
||||
inx ; Round
|
||||
@L2: stx _tgi_textmagw+2 ; Store rounded value
|
||||
|
||||
; Calculate the total width of the bitmapped font and remember it.
|
||||
|
||||
ldy #0
|
||||
jsr charsize_helper
|
||||
|
||||
; Load values and call the driver, parameters are passed in registers
|
||||
|
||||
ldx _tgi_textmagw+2
|
||||
ldy _tgi_textmagh+2
|
||||
lda _tgi_textdir
|
||||
jmp tgi_textstyle
|
||||
|
||||
.endproc
|
||||
|
||||
Reference in New Issue
Block a user