diff --git a/asminc/tgi-kernel.inc b/asminc/tgi-kernel.inc index c8a7667e8..ea71f5dbf 100644 --- a/asminc/tgi-kernel.inc +++ b/asminc/tgi-kernel.inc @@ -48,7 +48,7 @@ TGI_HDR_JUMPTAB = 16 TGI_HDR_INSTALL = TGI_HDR_JUMPTAB+0 ; INSTALL routine TGI_HDR_DEINSTALL = TGI_HDR_JUMPTAB+2 ; DEINSTALL 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_CLEAR = TGI_HDR_JUMPTAB+10 ; CLEAR 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_error ; Last error code + .global _tgi_mode ; Graphics mode or zero ;------------------------------------------------------------------------------ ; Driver entry points @@ -72,7 +73,7 @@ TGI_HDR_JUMPCOUNT = 12 ; Number of jump vectors .global tgi_install .global tgi_deinstall .global tgi_init - .global tgi_post + .global tgi_done .global tgi_control .global tgi_clear .global tgi_setcolor diff --git a/include/tgi.h b/include/tgi.h index cd0389047..64db5fcbd 100644 --- a/include/tgi.h +++ b/include/tgi.h @@ -88,7 +88,9 @@ void __fastcall__ tgi_done (void); /* End graphics mode, switch back to text mode. Will NOT unload the driver! */ 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); /* Clear the screen */ @@ -140,7 +142,7 @@ void __fastcall__ tgi_lineto (int x2, int y2); * 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 */ void __fastcall__ tgi_outtext (int x, int y, const char* text); diff --git a/include/tgi/tgi-kernel.h b/include/tgi/tgi-kernel.h index 384537d54..946b3ca02 100644 --- a/include/tgi/tgi-kernel.h +++ b/include/tgi/tgi-kernel.h @@ -62,7 +62,7 @@ typedef struct { void* install; /* INSTALL routine */ void* deinstall; /* DEINSTALL routine */ void* init; /* INIT routine */ - void* post; /* POST routine */ + void* done; /* DONE routine */ void* control; /* CONTROL routine */ void* clear; /* CLEAR routine */ void* setcolor; /* SETCOLOR routine */ @@ -79,6 +79,7 @@ typedef struct { /* TGI kernel variables */ 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 */ @@ -98,3 +99,4 @@ const char* __fastcall__ tgi_map_mode (unsigned char mode); + diff --git a/libsrc/tgi/Makefile b/libsrc/tgi/Makefile index e6978e7e3..5c0c8255b 100644 --- a/libsrc/tgi/Makefile +++ b/libsrc/tgi/Makefile @@ -14,17 +14,21 @@ C_OBJS = S_OBJS = tgi-kernel.o \ + tgi_bar.o \ tgi_circle.o \ tgi_clear.o \ tgi_done.o \ tgi_geterror.o \ tgi_getmaxx.o \ tgi_getmaxy.o \ + tgi_getpixel.o \ tgi_getxres.o \ tgi_getyres.o \ tgi_init.o \ tgi_line.o \ tgi_map_mode.o \ + tgi_setcolor.o \ + tgi_setpixel.o \ tgi_unload.o diff --git a/libsrc/tgi/tgi_bar.s b/libsrc/tgi/tgi_bar.s new file mode 100644 index 000000000..3f0050f64 --- /dev/null +++ b/libsrc/tgi/tgi_bar.s @@ -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 + + diff --git a/libsrc/tgi/tgi_getpixel.s b/libsrc/tgi/tgi_getpixel.s new file mode 100644 index 000000000..6af67a816 --- /dev/null +++ b/libsrc/tgi/tgi_getpixel.s @@ -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 + + + diff --git a/libsrc/tgi/tgi_setcolor.s b/libsrc/tgi/tgi_setcolor.s new file mode 100644 index 000000000..abf054abc --- /dev/null +++ b/libsrc/tgi/tgi_setcolor.s @@ -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 + + diff --git a/libsrc/tgi/tgi_setpixel.s b/libsrc/tgi/tgi_setpixel.s new file mode 100644 index 000000000..cab5618cd --- /dev/null +++ b/libsrc/tgi/tgi_setpixel.s @@ -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 +