From 74b9e4831a87440484ac8b98e9a3c54847d11532 Mon Sep 17 00:00:00 2001 From: cuz Date: Fri, 21 Jun 2002 21:15:46 +0000 Subject: [PATCH] Working git-svn-id: svn://svn.cc65.org/cc65/trunk@1317 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- asminc/tgi-kernel.inc | 2 ++ include/tgi/tgi-kernel.h | 4 +++- libsrc/tgi/tgi-kernel.s | 24 +++++++++++++++++++++--- libsrc/tgi/tgi_getxres.s | 8 +++----- libsrc/tgi/tgi_getyres.s | 7 +++---- 5 files changed, 32 insertions(+), 13 deletions(-) diff --git a/asminc/tgi-kernel.inc b/asminc/tgi-kernel.inc index 554cde196..96183bf69 100644 --- a/asminc/tgi-kernel.inc +++ b/asminc/tgi-kernel.inc @@ -66,6 +66,8 @@ TGI_HDR_JUMPCOUNT = 12 ; Number of jump vectors .global _tgi_drv ; Pointer to driver .global _tgi_error ; Last error code .global _tgi_mode ; Graphics mode or zero + .global _tgi_xres ; X resolution of the current mode + .global _tgi_yres ; Y resolution of the current mode ;------------------------------------------------------------------------------ ; Driver entry points diff --git a/include/tgi/tgi-kernel.h b/include/tgi/tgi-kernel.h index 263fac514..3e11ba94f 100644 --- a/include/tgi/tgi-kernel.h +++ b/include/tgi/tgi-kernel.h @@ -80,6 +80,8 @@ typedef struct { extern tgi_drv_header* tgi_drv; /* Pointer to driver */ extern unsigned char tgi_error; /* Last error code */ extern unsigned char tgi_mode; /* Graphics mode or zero */ +extern unsigned tgi_xres; /* X resolution of the current mode */ +extern unsigned tgi_yres; /* Y resolution of the current mode */ @@ -91,7 +93,7 @@ extern unsigned char tgi_mode; /* Graphics mode or zero */ const char* __fastcall__ tgi_map_mode (unsigned char mode); /* Map a tgi mode to a driver name. Returns NULL if no driver available. */ - + void __fastcall__ tgi_setup (void); /* Setup the driver and graphics kernel once the driver is loaded */ diff --git a/libsrc/tgi/tgi-kernel.s b/libsrc/tgi/tgi-kernel.s index 3d1ab24b1..521ecb741 100644 --- a/libsrc/tgi/tgi-kernel.s +++ b/libsrc/tgi/tgi-kernel.s @@ -18,7 +18,9 @@ _tgi_drv: .res 2 ; Pointer to driver _tgi_error: .res 1 ; Last error code _tgi_mode: .res 1 ; Graphics mode or zero - +_tgi_xres: .res 2 ; X resolution of the current mode +_tgi_yres: .res 2 ; Y resolution of the current mode + .data @@ -51,17 +53,33 @@ copy: lda (ptr1),y _tgi_setup: - jsr tgi_set_ptr + jsr tgi_set_ptr ; load _tgi_drv into ptr1 + +; Copy the jump vectors ldy #TGI_HDR_JUMPTAB ldx #0 - @L1: inx ; Skip JMP opcode jsr copy ; Copy one byte jsr copy ; Copy one byte cpx #(TGI_HDR_JUMPCOUNT*3) bne @L1 +; Copy the screen dimensions + + ldy #TGI_HDR_XRES + lda (ptr1),y + sta _tgi_xres + iny + lda (ptr1),y + sta _tgi_xres+1 + ldy #TGI_HDR_YRES + lda (ptr1),y + sta _tgi_yres + iny + lda (ptr1),y + sta _tgi_yres+1 + ; Initialize variables lda #$00 diff --git a/libsrc/tgi/tgi_getxres.s b/libsrc/tgi/tgi_getxres.s index 0bb58fe43..2a85205c8 100644 --- a/libsrc/tgi/tgi_getxres.s +++ b/libsrc/tgi/tgi_getxres.s @@ -7,13 +7,11 @@ .include "tgi-kernel.inc" .export _tgi_getxres - .import ldaxidx _tgi_getxres: - lda _tgi_drv - ldx _tgi_drv+1 - ldy #TGI_HDR_XRES+1 - jmp ldaxidx + lda _tgi_xres + ldx _tgi_xres+1 + rts diff --git a/libsrc/tgi/tgi_getyres.s b/libsrc/tgi/tgi_getyres.s index 4b8b26d45..172d64f12 100644 --- a/libsrc/tgi/tgi_getyres.s +++ b/libsrc/tgi/tgi_getyres.s @@ -11,9 +11,8 @@ _tgi_getyres: - lda _tgi_drv - ldx _tgi_drv+1 - ldy #TGI_HDR_YRES+1 - jmp ldaxidx + lda _tgi_yres + ldx _tgi_yres+1 + rts