.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
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 */
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 */
_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
_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
.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
_tgi_getyres:
- lda _tgi_drv
- ldx _tgi_drv+1
- ldy #TGI_HDR_YRES+1
- jmp ldaxidx
+ lda _tgi_yres
+ ldx _tgi_yres+1
+ rts