]> git.sur5r.net Git - cc65/commitdiff
TGI Implementation
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 21 Jun 2002 14:16:32 +0000 (14:16 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 21 Jun 2002 14:16:32 +0000 (14:16 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@1314 b7a2c559-68d2-44c3-8de9-860c34a00d81

asminc/tgi-kernel.inc
include/tgi.h
include/tgi/tgi-kernel.h
libsrc/tgi/Makefile
libsrc/tgi/tgi_bar.s [new file with mode: 0644]
libsrc/tgi/tgi_getpixel.s [new file with mode: 0644]
libsrc/tgi/tgi_setcolor.s [new file with mode: 0644]
libsrc/tgi/tgi_setpixel.s [new file with mode: 0644]

index c8a7667e8d58b74f12deff8d22e16cbd8b15d055..ea71f5dbfbcf41564bba2f28015ee4f5f783196f 100644 (file)
@@ -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
index cd03890472eda80b24a69f035b75133a6dcbc2f3..64db5fcbd4c307277d6e9a69f5516ac27af0139f 100644 (file)
@@ -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);
index 384537d54a3ed98c52e94b46af2edfa6a50a8154..946b3ca022f7ca75b0f514a408320c2972918ffc 100644 (file)
@@ -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);
 
 
 
+                                                
index e6978e7e3da816e29a0d3626f78022a40c8309ef..5c0c8255b76b8120e51fd385a4acc4ef6c4a8345 100644 (file)
 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 (file)
index 0000000..3f0050f
--- /dev/null
@@ -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 (file)
index 0000000..6af67a8
--- /dev/null
@@ -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 (file)
index 0000000..abf054a
--- /dev/null
@@ -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 (file)
index 0000000..cab5618
--- /dev/null
@@ -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
+