1
0
mirror of https://github.com/cc65/cc65.git synced 2025-01-14 00:32:08 +00:00

Hold the maximum X and Y coordinate in variables instead of calculating them

when needed. The variables make signed compares in the line clipper easier.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4450 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz 2009-11-06 12:02:52 +00:00
parent eee4430061
commit e319fc217b
4 changed files with 37 additions and 12 deletions

View File

@ -17,6 +17,8 @@
.bss .bss
_tgi_drv: .res 2 ; Pointer to driver _tgi_drv: .res 2 ; Pointer to driver
; From here on, variables get cleared when a new driver is loaded
cstart:
_tgi_error: .res 1 ; Last error code _tgi_error: .res 1 ; Last error code
_tgi_gmode: .res 1 ; Flag: Graphics mode active _tgi_gmode: .res 1 ; Flag: Graphics mode active
_tgi_curx: .res 2 ; Current drawing cursor X _tgi_curx: .res 2 ; Current drawing cursor X
@ -35,6 +37,13 @@ _tgi_textscaleh: .res 3 ; Text scale for the height
_tgi_charwidth: .res 1 ; Char width of system font _tgi_charwidth: .res 1 ; Char width of system font
_tgi_charheight: .res 1 ; Char height of system font _tgi_charheight: .res 1 ; Char height of system font
; End of section that gets cleared when a new driver is loaded
csize = * - cstart
; Maximum X and Y coordinate (that is, xres-1 and yres-1)
_tgi_xmax: .res 2
_tgi_ymax: .res 2
; The following variables are copied from the driver header for faster access ; The following variables are copied from the driver header for faster access
; fontwidth and fontheight are expected to be in order and adjacent. ; fontwidth and fontheight are expected to be in order and adjacent.
tgi_driver_vars: tgi_driver_vars:
@ -51,6 +60,7 @@ _tgi_aspectratio: .res 2 ; Aspect ratio in 8.8 fixed point
; Jump table for the driver functions. ; Jump table for the driver functions.
jumpvectors:
tgi_install: jmp $0000 tgi_install: jmp $0000
tgi_uninstall: jmp $0000 tgi_uninstall: jmp $0000
tgi_init: jmp $0000 tgi_init: jmp $0000
@ -134,17 +144,17 @@ _tgi_install:
; Initialize some other variables ; Initialize some other variables
lda #$00 lda #$00
@L4: ldx #8-1 @L4: ldx #csize-1
@L5: sta _tgi_error,x ; Clear error/mode/curx/cury/textdir @L5: sta cstart,x ; Clear error/mode/curx/cury/...
dex dex
bpl @L5 bpl @L5
rts rts
; Copy one byte from the jump vectors ; Copy one byte to the jump vectors
copy: lda (ptr1),y copy: lda (ptr1),y
sta tgi_install,x sta jumpvectors,x
iny iny
inx inx
rts rts

View File

@ -8,13 +8,12 @@
.include "tgi-kernel.inc" .include "tgi-kernel.inc"
.import decax1
.proc _tgi_getmaxx .proc _tgi_getmaxx
jsr _tgi_getxres lda _tgi_xmax
jmp decax1 ldx _tgi_xmax+1
rts
.endproc .endproc

View File

@ -7,12 +7,12 @@
; */ ; */
.include "tgi-kernel.inc" .include "tgi-kernel.inc"
.import decax1
.proc _tgi_getmaxy .proc _tgi_getmaxy
jsr _tgi_getyres lda _tgi_ymax
jmp decax1 ldx _tgi_ymax+1
rts
.endproc .endproc

View File

@ -8,9 +8,13 @@
.include "tgi-kernel.inc" .include "tgi-kernel.inc"
.include "tgi-error.inc" .include "tgi-error.inc"
.import pushax, pusha .import pushax, pusha, decax1
.importzp ptr1 .importzp ptr1
;----------------------------------------------------------------------------
.code
.proc _tgi_init .proc _tgi_init
jsr _tgi_done ; Switch off graphics if needed jsr _tgi_done ; Switch off graphics if needed
@ -22,6 +26,18 @@
inc _tgi_gmode ; Remember that graph mode is active inc _tgi_gmode ; Remember that graph mode is active
; Get the maximum X and Y coordinate
jsr _tgi_getxres
jsr decax1
sta _tgi_xmax
stx _tgi_xmax+1
jsr _tgi_getyres
jsr decax1
sta _tgi_ymax
stx _tgi_ymax+1
; Do driver initialization. Set draw and view pages. ; Do driver initialization. Set draw and view pages.
lda #0 lda #0