1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-22 12:30:41 +00:00

TGI Implementation

git-svn-id: svn://svn.cc65.org/cc65/trunk@1314 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz 2002-06-21 14:16:32 +00:00
parent 2614d20153
commit 7fc24b058a
8 changed files with 103 additions and 5 deletions

View File

@ -48,7 +48,7 @@ TGI_HDR_JUMPTAB = 16
TGI_HDR_INSTALL = TGI_HDR_JUMPTAB+0 ; INSTALL routine TGI_HDR_INSTALL = TGI_HDR_JUMPTAB+0 ; INSTALL routine
TGI_HDR_DEINSTALL = TGI_HDR_JUMPTAB+2 ; DEINSTALL routine TGI_HDR_DEINSTALL = TGI_HDR_JUMPTAB+2 ; DEINSTALL routine
TGI_HDR_INIT = TGI_HDR_JUMPTAB+4 ; INIT routine TGI_HDR_INIT = TGI_HDR_JUMPTAB+4 ; INIT routine
TGI_HDR_POST = TGI_HDR_JUMPTAB+6 ; POST routine TGI_HDR_DONE = TGI_HDR_JUMPTAB+6 ; DONE routine
TGI_HDR_CONTROL = TGI_HDR_JUMPTAB+8 ; CONTROL routine TGI_HDR_CONTROL = TGI_HDR_JUMPTAB+8 ; CONTROL routine
TGI_HDR_CLEAR = TGI_HDR_JUMPTAB+10 ; CLEAR routine TGI_HDR_CLEAR = TGI_HDR_JUMPTAB+10 ; CLEAR routine
TGI_HDR_SETCOLOR = TGI_HDR_JUMPTAB+12 ; SETCOLOR routine TGI_HDR_SETCOLOR = TGI_HDR_JUMPTAB+12 ; SETCOLOR routine
@ -65,6 +65,7 @@ TGI_HDR_JUMPCOUNT = 12 ; Number of jump vectors
.global _tgi_drv ; Pointer to driver .global _tgi_drv ; Pointer to driver
.global _tgi_error ; Last error code .global _tgi_error ; Last error code
.global _tgi_mode ; Graphics mode or zero
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; Driver entry points ; Driver entry points
@ -72,7 +73,7 @@ TGI_HDR_JUMPCOUNT = 12 ; Number of jump vectors
.global tgi_install .global tgi_install
.global tgi_deinstall .global tgi_deinstall
.global tgi_init .global tgi_init
.global tgi_post .global tgi_done
.global tgi_control .global tgi_control
.global tgi_clear .global tgi_clear
.global tgi_setcolor .global tgi_setcolor

View File

@ -88,7 +88,9 @@ void __fastcall__ tgi_done (void);
/* End graphics mode, switch back to text mode. Will NOT unload the driver! */ /* End graphics mode, switch back to text mode. Will NOT unload the driver! */
unsigned char __fastcall__ tgi_geterror (void); unsigned char __fastcall__ tgi_geterror (void);
/* Return the error code for the last operation. */ /* Return the error code for the last operation. This will also clear the
* error.
*/
void __fastcall__ tgi_clear (void); void __fastcall__ tgi_clear (void);
/* Clear the screen */ /* Clear the screen */
@ -140,7 +142,7 @@ void __fastcall__ tgi_lineto (int x2, int y2);
* new end point. * new end point.
*/ */
void __fastcall__ tgi_circle (int x, int y, unsigned radius); void __fastcall__ tgi_circle (int x, int y, unsigned char radius);
/* Draw a circle in the current drawing color */ /* Draw a circle in the current drawing color */
void __fastcall__ tgi_outtext (int x, int y, const char* text); void __fastcall__ tgi_outtext (int x, int y, const char* text);

View File

@ -62,7 +62,7 @@ typedef struct {
void* install; /* INSTALL routine */ void* install; /* INSTALL routine */
void* deinstall; /* DEINSTALL routine */ void* deinstall; /* DEINSTALL routine */
void* init; /* INIT routine */ void* init; /* INIT routine */
void* post; /* POST routine */ void* done; /* DONE routine */
void* control; /* CONTROL routine */ void* control; /* CONTROL routine */
void* clear; /* CLEAR routine */ void* clear; /* CLEAR routine */
void* setcolor; /* SETCOLOR routine */ void* setcolor; /* SETCOLOR routine */
@ -79,6 +79,7 @@ typedef struct {
/* TGI kernel variables */ /* TGI kernel variables */
extern tgi_drv_header tgi_drv; /* Pointer to driver */ extern tgi_drv_header tgi_drv; /* Pointer to driver */
extern unsigned char tgi_error; /* Last error code */ extern unsigned char tgi_error; /* Last error code */
extern unsigned char tgi_mode; /* Graphics mode or zero */
@ -98,3 +99,4 @@ const char* __fastcall__ tgi_map_mode (unsigned char mode);

View File

@ -14,17 +14,21 @@
C_OBJS = C_OBJS =
S_OBJS = tgi-kernel.o \ S_OBJS = tgi-kernel.o \
tgi_bar.o \
tgi_circle.o \ tgi_circle.o \
tgi_clear.o \ tgi_clear.o \
tgi_done.o \ tgi_done.o \
tgi_geterror.o \ tgi_geterror.o \
tgi_getmaxx.o \ tgi_getmaxx.o \
tgi_getmaxy.o \ tgi_getmaxy.o \
tgi_getpixel.o \
tgi_getxres.o \ tgi_getxres.o \
tgi_getyres.o \ tgi_getyres.o \
tgi_init.o \ tgi_init.o \
tgi_line.o \ tgi_line.o \
tgi_map_mode.o \ tgi_map_mode.o \
tgi_setcolor.o \
tgi_setpixel.o \
tgi_unload.o tgi_unload.o

29
libsrc/tgi/tgi_bar.s Normal file
View File

@ -0,0 +1,29 @@
;
; Ullrich von Bassewitz, 21.06.2002
;
; void __fastcall__ tgi_bar (int x1, int y1, int x2, int y2);
; /* Draw a bar (a filled rectangle) using the current color */
.include "tgi-kernel.inc"
.import popax
.importzp ptr1, ptr2, ptr3, ptr4
.export _tgi_bar
_tgi_bar:
sta ptr4 ; Get the coordinates
stx ptr4+1
jsr popax
sta ptr3
stx ptr3+1
jsr popax
sta ptr2
stx ptr2+1
jsr popax
sta ptr1
stx ptr1+1
jmp tgi_line ; Call the driver

24
libsrc/tgi/tgi_getpixel.s Normal file
View File

@ -0,0 +1,24 @@
;
; Ullrich von Bassewitz, 21.06.2002
;
; unsigned char __fastcall__ tgi_getpixel (int x, int y);
; /* Get the color value of a pixel */
.include "tgi-kernel.inc"
.import popax
.importzp ptr1, ptr2
.export _tgi_getpixel
_tgi_getpixel:
sta ptr2 ; Get the coordinates
stx ptr2+1
jsr popax
sta ptr1
stx ptr1+1
jmp tgi_getpixel ; Call the driver

14
libsrc/tgi/tgi_setcolor.s Normal file
View File

@ -0,0 +1,14 @@
;
; Ullrich von Bassewitz, 21.06.2002
;
; void __fastcall__ tgi_setcolor (unsigned char color);
; /* Set the current drawing color */
.include "tgi-kernel.inc"
.export _tgi_setcolor
_tgi_setcolor = tgi_setcolor ; Call the driver

22
libsrc/tgi/tgi_setpixel.s Normal file
View File

@ -0,0 +1,22 @@
;
; Ullrich von Bassewitz, 21.06.2002
;
; void __fastcall__ tgi_setpixel (int x, int y);
; /* Plot a point in the current drawing color */
.include "tgi-kernel.inc"
.import popax
.importzp ptr1, ptr2
.export _tgi_setpixel
_tgi_setpixel:
sta ptr2 ; Get the coordinates
stx ptr2+1
jsr popax
sta ptr1
stx ptr1+1
jmp tgi_setpixel ; Call the driver