From b0dd6c614ff422a6136d90549358e3a139584056 Mon Sep 17 00:00:00 2001
From: Oliver Schmidt 
Date: Sat, 1 Jun 2013 12:42:00 +0200
Subject: [PATCH] Added library reference tgi_libref to TGI interface.
---
 asminc/tgi-kernel.inc                 |  1 +
 libsrc/apple2/libref.s                |  3 ++-
 libsrc/apple2/tgi/a2.hi.s             |  1 +
 libsrc/apple2/tgi/a2.lo.s             |  1 +
 libsrc/atari/libref.s                 |  3 ++-
 libsrc/atari/tgi/atari_tgi_common.inc |  1 +
 libsrc/atmos/libref.s                 |  3 ++-
 libsrc/atmos/tgi/atmos-228-200-3.s    |  1 +
 libsrc/atmos/tgi/atmos-240-200-2.s    |  1 +
 libsrc/c128/libref.s                  |  3 ++-
 libsrc/c128/tgi/c128-vdc.s            |  1 +
 libsrc/c128/tgi/c128-vdc2.s           |  1 +
 libsrc/c64/libref.s                   |  3 ++-
 libsrc/c64/tgi/c64-hi.s               |  1 +
 libsrc/geos-cbm/system/libref.s       |  3 ++-
 libsrc/geos-cbm/tgi/geos-tgi.s        |  1 +
 libsrc/lynx/libref.s                  |  3 ++-
 libsrc/lynx/tgi/lynx-160-102-16.s     |  1 +
 libsrc/nes/libref.s                   |  3 ++-
 libsrc/nes/tgi/nes-64-56-2.s          |  3 ++-
 libsrc/tgi/tgi-kernel.s               | 16 +++++++++++++---
 21 files changed, 42 insertions(+), 12 deletions(-)
diff --git a/asminc/tgi-kernel.inc b/asminc/tgi-kernel.inc
index c1182d371..6e687315d 100644
--- a/asminc/tgi-kernel.inc
+++ b/asminc/tgi-kernel.inc
@@ -39,6 +39,7 @@
 .struct TGI_HDR
         ID                  .byte   3   ; Contains 0x74, 0x67, 0x69 ("tgi")
         VERSION             .byte   1   ; Interface version
+        LIBREF              .addr       ; Library reference
         VARS                .struct
             XRES            .word   1   ; X resolution
             YRES            .word   1   ; Y resolution
diff --git a/libsrc/apple2/libref.s b/libsrc/apple2/libref.s
index 898a92f18..fb22515bd 100644
--- a/libsrc/apple2/libref.s
+++ b/libsrc/apple2/libref.s
@@ -2,10 +2,11 @@
 ; Oliver Schmidt, 2013-05-31
 ;
 
-        .export         em_libref, joy_libref, mouse_libref, ser_libref
+        .export         em_libref, joy_libref, mouse_libref, ser_libref, tgi_libref
         .import         _exit
 
 em_libref       := _exit
 joy_libref      := _exit
 mouse_libref    := _exit
 ser_libref      := _exit
+tgi_libref      := _exit
diff --git a/libsrc/apple2/tgi/a2.hi.s b/libsrc/apple2/tgi/a2.hi.s
index 145b78e4a..2f00c83da 100644
--- a/libsrc/apple2/tgi/a2.hi.s
+++ b/libsrc/apple2/tgi/a2.hi.s
@@ -77,6 +77,7 @@ Y2      :=      ptr4
 
         .byte   $74, $67, $69   ; "tgi"
         .byte   TGI_API_VERSION ; TGI API version number
+        .addr   $0000           ; Library reference
         .word   280             ; X resolution
         .word   192             ; Y resolution
         .byte   8               ; Number of drawing colors
diff --git a/libsrc/apple2/tgi/a2.lo.s b/libsrc/apple2/tgi/a2.lo.s
index 7ac43e6cc..5c20ca4d2 100644
--- a/libsrc/apple2/tgi/a2.lo.s
+++ b/libsrc/apple2/tgi/a2.lo.s
@@ -47,6 +47,7 @@ Y2      :=      ptr4
 
         .byte   $74, $67, $69   ; "tgi"
         .byte   TGI_API_VERSION ; TGI API version number
+        .addr   $0000           ; Library reference
         .word   40              ; X resolution
         .word   48              ; Y resolution
         .byte   16              ; Number of drawing colors
diff --git a/libsrc/atari/libref.s b/libsrc/atari/libref.s
index 933eb5911..8d9ff3e08 100644
--- a/libsrc/atari/libref.s
+++ b/libsrc/atari/libref.s
@@ -2,8 +2,9 @@
 ; Oliver Schmidt, 2013-05-31
 ;
 
-        .export         em_libref, joy_libref
+        .export         em_libref, joy_libref, tgi_libref
         .import         _exit
 
 em_libref       := _exit
 joy_libref      := _exit
+tgi_libref      := _exit
diff --git a/libsrc/atari/tgi/atari_tgi_common.inc b/libsrc/atari/tgi/atari_tgi_common.inc
index 9190fe8c8..7dba884fa 100644
--- a/libsrc/atari/tgi/atari_tgi_common.inc
+++ b/libsrc/atari/tgi/atari_tgi_common.inc
@@ -18,6 +18,7 @@
 
         .byte   $74, $67, $69           ; "tgi"
         .byte   TGI_API_VERSION         ; TGI API version number
+        .addr   $0000                   ; Library reference
         .word   x_res                   ; X resolution
         .word   y_res                   ; Y resolution
         .byte   colors                  ; Number of drawing colors
diff --git a/libsrc/atmos/libref.s b/libsrc/atmos/libref.s
index 0bda1e7e8..62c78b8c5 100644
--- a/libsrc/atmos/libref.s
+++ b/libsrc/atmos/libref.s
@@ -2,8 +2,9 @@
 ; Oliver Schmidt, 2013-05-31
 ;
 
-        .export         joy_libref, ser_libref
+        .export         joy_libref, ser_libref, tgi_libref
         .import         _exit
 
 joy_libref      := _exit
 ser_libref      := _exit
+tgi_libref      := _exit
diff --git a/libsrc/atmos/tgi/atmos-228-200-3.s b/libsrc/atmos/tgi/atmos-228-200-3.s
index 9417fff0d..e03376015 100644
--- a/libsrc/atmos/tgi/atmos-228-200-3.s
+++ b/libsrc/atmos/tgi/atmos-228-200-3.s
@@ -26,6 +26,7 @@ YSIZE   =       8               ; System font height
 
         .byte   "tgi"
         .byte   TGI_API_VERSION ; TGI API version number
+        .addr   $0000           ; Library reference
         .word   228             ; x resolution
         .word   200             ; y resolution
         .byte   3               ; Number of drawing colors
diff --git a/libsrc/atmos/tgi/atmos-240-200-2.s b/libsrc/atmos/tgi/atmos-240-200-2.s
index 735d75f93..e58ac36d2 100644
--- a/libsrc/atmos/tgi/atmos-240-200-2.s
+++ b/libsrc/atmos/tgi/atmos-240-200-2.s
@@ -26,6 +26,7 @@ YSIZE   =       8                       ; System font height
 
         .byte   $74, $67, $69           ; "tgi"
         .byte   TGI_API_VERSION         ; TGI API version number
+        .addr   $0000                   ; Library reference
         .word   240                     ; X resolution
         .word   200                     ; Y resolution
         .byte   2                       ; Number of drawing colors
diff --git a/libsrc/c128/libref.s b/libsrc/c128/libref.s
index 898a92f18..fb22515bd 100644
--- a/libsrc/c128/libref.s
+++ b/libsrc/c128/libref.s
@@ -2,10 +2,11 @@
 ; Oliver Schmidt, 2013-05-31
 ;
 
-        .export         em_libref, joy_libref, mouse_libref, ser_libref
+        .export         em_libref, joy_libref, mouse_libref, ser_libref, tgi_libref
         .import         _exit
 
 em_libref       := _exit
 joy_libref      := _exit
 mouse_libref    := _exit
 ser_libref      := _exit
+tgi_libref      := _exit
diff --git a/libsrc/c128/tgi/c128-vdc.s b/libsrc/c128/tgi/c128-vdc.s
index 226d2aea2..394f4080a 100644
--- a/libsrc/c128/tgi/c128-vdc.s
+++ b/libsrc/c128/tgi/c128-vdc.s
@@ -55,6 +55,7 @@ VDC_DATA          = 31
 
         .byte   $74, $67, $69           ; "tgi"
         .byte   TGI_API_VERSION         ; TGI API version number
+        .addr   $0000                   ; Library reference
 xres:   .word   640                     ; X resolution
 yres:   .word   200                     ; Y resolution
         .byte   2                       ; Number of drawing colors
diff --git a/libsrc/c128/tgi/c128-vdc2.s b/libsrc/c128/tgi/c128-vdc2.s
index e3c08037f..2e1d26ae5 100644
--- a/libsrc/c128/tgi/c128-vdc2.s
+++ b/libsrc/c128/tgi/c128-vdc2.s
@@ -56,6 +56,7 @@ VDC_DATA          = 31
 
         .byte   $74, $67, $69           ; "tgi"
         .byte   TGI_API_VERSION         ; TGI API version number
+        .addr   $0000                   ; Library reference
 xres:   .word   640                     ; X resolution
 yres:   .word   480                     ; Y resolution
         .byte   2                       ; Number of drawing colors
diff --git a/libsrc/c64/libref.s b/libsrc/c64/libref.s
index 898a92f18..fb22515bd 100644
--- a/libsrc/c64/libref.s
+++ b/libsrc/c64/libref.s
@@ -2,10 +2,11 @@
 ; Oliver Schmidt, 2013-05-31
 ;
 
-        .export         em_libref, joy_libref, mouse_libref, ser_libref
+        .export         em_libref, joy_libref, mouse_libref, ser_libref, tgi_libref
         .import         _exit
 
 em_libref       := _exit
 joy_libref      := _exit
 mouse_libref    := _exit
 ser_libref      := _exit
+tgi_libref      := _exit
diff --git a/libsrc/c64/tgi/c64-hi.s b/libsrc/c64/tgi/c64-hi.s
index 1e829d274..d91196649 100644
--- a/libsrc/c64/tgi/c64-hi.s
+++ b/libsrc/c64/tgi/c64-hi.s
@@ -23,6 +23,7 @@
 
         .byte   $74, $67, $69           ; "tgi"
         .byte   TGI_API_VERSION         ; TGI API version number
+        .addr   $0000                   ; Library reference
         .word   320                     ; X resolution
         .word   200                     ; Y resolution
         .byte   2                       ; Number of drawing colors
diff --git a/libsrc/geos-cbm/system/libref.s b/libsrc/geos-cbm/system/libref.s
index 933eb5911..8d9ff3e08 100644
--- a/libsrc/geos-cbm/system/libref.s
+++ b/libsrc/geos-cbm/system/libref.s
@@ -2,8 +2,9 @@
 ; Oliver Schmidt, 2013-05-31
 ;
 
-        .export         em_libref, joy_libref
+        .export         em_libref, joy_libref, tgi_libref
         .import         _exit
 
 em_libref       := _exit
 joy_libref      := _exit
+tgi_libref      := _exit
diff --git a/libsrc/geos-cbm/tgi/geos-tgi.s b/libsrc/geos-cbm/tgi/geos-tgi.s
index dbf9f4fc4..617e322ff 100644
--- a/libsrc/geos-cbm/tgi/geos-tgi.s
+++ b/libsrc/geos-cbm/tgi/geos-tgi.s
@@ -40,6 +40,7 @@ VDC_DATA        = 31
 
         .byte $74, $67, $69     ; "tgi"
         .byte TGI_API_VERSION   ; TGI API version number
+        .addr $0000             ; Library reference
 xres:   .word 320               ; X resolution
 yres:   .word 200               ; Y resolution
         .byte 2                 ; Number of drawing colors
diff --git a/libsrc/lynx/libref.s b/libsrc/lynx/libref.s
index 0bda1e7e8..62c78b8c5 100644
--- a/libsrc/lynx/libref.s
+++ b/libsrc/lynx/libref.s
@@ -2,8 +2,9 @@
 ; Oliver Schmidt, 2013-05-31
 ;
 
-        .export         joy_libref, ser_libref
+        .export         joy_libref, ser_libref, tgi_libref
         .import         _exit
 
 joy_libref      := _exit
 ser_libref      := _exit
+tgi_libref      := _exit
diff --git a/libsrc/lynx/tgi/lynx-160-102-16.s b/libsrc/lynx/tgi/lynx-160-102-16.s
index 4542cae1d..ef2eabf1d 100644
--- a/libsrc/lynx/tgi/lynx-160-102-16.s
+++ b/libsrc/lynx/tgi/lynx-160-102-16.s
@@ -27,6 +27,7 @@
 
         .byte   $74, $67, $69           ; "tgi"
         .byte   TGI_API_VERSION         ; TGI API version number
+        .addr   $0000                   ; Library reference
         .word   160                     ; X resolution
         .word   102                     ; Y resolution
         .byte   16                      ; Number of drawing colors
diff --git a/libsrc/nes/libref.s b/libsrc/nes/libref.s
index e4afa7eb1..d947c1aa4 100644
--- a/libsrc/nes/libref.s
+++ b/libsrc/nes/libref.s
@@ -2,7 +2,8 @@
 ; Oliver Schmidt, 2013-05-31
 ;
 
-        .export         joy_libref
+        .export         joy_libref, tgi_libref
         .import         _exit
 
 joy_libref      := _exit
+tgi_libref      := _exit
diff --git a/libsrc/nes/tgi/nes-64-56-2.s b/libsrc/nes/tgi/nes-64-56-2.s
index cce83e231..512810b4c 100644
--- a/libsrc/nes/tgi/nes-64-56-2.s
+++ b/libsrc/nes/tgi/nes-64-56-2.s
@@ -26,13 +26,14 @@
 
         .byte   $74, $67, $69           ; "tgi"
         .byte   TGI_API_VERSION         ; TGI API version number
+        .addr   $0000                   ; Library reference
 xres:   .word   charsperline*2          ; Max X resolution
 yres:   .word   56                      ; Max Y resolution
         .byte   2                       ; Number of drawing colors
         .byte   1                       ; Number of screens available
         .byte   2                       ; System font X size
         .byte   2                       ; System font Y size
-        .word   $100                    ; Aspect ratio
+        .word   $0100                   ; Aspect ratio
         .byte   0                       ; TGI driver flags
 
 ; Next comes the jump table. Currently all entries must be valid and may point
diff --git a/libsrc/tgi/tgi-kernel.s b/libsrc/tgi/tgi-kernel.s
index d5b025506..3781795f6 100644
--- a/libsrc/tgi/tgi-kernel.s
+++ b/libsrc/tgi/tgi-kernel.s
@@ -4,12 +4,13 @@
 ; Common functions of the tgi graphics kernel.
 ;
 
-        .include        "tgi-kernel.inc"
-        .include        "tgi-error.inc"
-
+        .import         tgi_libref
         .importzp       ptr1
         .interruptor    tgi_irq         ; Export as IRQ handler
 
+        .include        "tgi-kernel.inc"
+        .include        "tgi-error.inc"
+
 
 ;----------------------------------------------------------------------------
 ; Variables
@@ -108,6 +109,15 @@ _tgi_install:
         dey
         bpl     @L0
 
+; Set the library reference
+
+        ldy     #TGI_HDR::LIBREF
+        lda     #tgi_libref
+        sta     (ptr1),y
+
 ; Copy the jump vectors
 
         ldy     #TGI_HDR::JUMPTAB
-- 
2.39.5