'ORIGINAL "AK14B.QLB" von Andre Klein
'
' VERSION 1.4 Beta
'
' "AK14B.QLB" ist eine SVGA/VESA-Bibliothek.
'
'  - untersttzt alle Auflsungen mit 256c, 32Kc und 64Kc.
'  - Dazu gehrt auch der SCREEN 13 von Qbasic (&H13).
'    Desweiteren gehren nun auch &H8, &H9 und &H12 dazu.
'    Dies ist jeweils SCREEN 8,9 und 12 von QB.
'  - Alle Grafik-Routinen sind in Assembler geschrieben.
'
'  Wie kann ich diese Bibliothek benutzen?
'  - um diese Bibliothek zu laden mut du QB mit der Option /L aufrufen
'
'    QB.EXE /L AK14.QLB
'
'  - beachte das sich die QLB in dem Verzeichnis befinden mu wo du diese
'    Eingabe machst
'  - Wenn du das gemacht hast siehst du einen leeren QB-Editor und kannst
'    dort sofort mit den Befehlen loslegen.
'  - WICHTIG: Du brauchst KEINEN INCLUDE-Befehl
'
'
' Was ist neu in dieser Gesamt-Version?
'  SUB XFORM            - malt eine Form auf den Bildschirm (FENSTER)
'  SUB LOAD.CMD         - ldt einen Button
'  SUB SAVE.CMD         - speichert einen Button
'  SUB XCMD             - Kontrollieren, ndern... von Buttons
'  SUB MSGBOX           - malt eine MessageBox und bergibt Kontrolle
'  SUB GET.INFO         - zeigt sehr viele Information ber Bilder an
'
' Was ist neu in dieser Beta-Version?
'  Komplette-Erweiterung der LIB um die Grafik-Moden &H8,&H9,&H12
'  Diese stehen fr jeweils SCREEN 8,9 und 12 von QB.
'
'  SUB SET.XLINE.MASK   - setzt eine Maske fr Linien
'  SUB SET.PICTURE      - untersttzt jetzt auch KMX-Bilder mit den Versionen
'                         1 und 2. Das Bildformat ist von Mecki. 
'
'
'
' Bekannte Bugs: - wenn Schrift ber den Bildschirm(X-Richtung) gemalt wird
'                  wird sie nicht mehr richtig angezeigt
'                - flackern des Mauszeigers bei schnellen CPU's
'                  (was noch zu testen ist!)
'
' Bei weiteren Fehlern oder Anregungen: Bescheid sagen!
'
'
'====================================================================================
'  alle enthaltenen Subs ohne Erklrung
'====================================================================================
'  DECLARE SUB XSCREEN (mode%)
'  DECLARE SUB XPSET (X%, y%, f%)
'  DECLARE SUB XPOINT (X%, y%, f%)
'  DECLARE SUB SET.XLINE.MASK (opt$, mask%)
'  DECLARE SUB XLINE (x1%, y1%, x2%, y2%, f%, xlo$)
'
'  DECLARE SUB SET.FILTER (opt$, wert%)
'  DECLARE SUB XVIEW (xmin%, ymin%, xmax%, ymax%)
'  DECLARE SUB XPUT (X%, y%, putdat$)
'  DECLARE SUB XGET (x1%, y1%, x2%, y2%, getdat$)
'
'  DECLARE SUB SET.PICTURE (picx%, picy%, picfile$)
'  DECLARE SUB XSAVE (x1%, y1%, x2%, y2%, xsfile$)
'
'  DECLARE SUB LOAD.PAL (palfile$)
'  DECLARE SUB SAVE.PAL (palfile$)
'
'  DECLARE SUB SET.VIEW.PAGE (page%)
'  DECLARE SUB SET.WORK.PAGE (page%)
'
'  DECLARE SUB LOAD.ARL (arlfile$)
'  DECLARE SUB XCOLOR (vordergrund%, hintergrund%, ha%)
'  DECLARE SUB XPRINT (xpx%, xpy%, xptext$)
'  DECLARE SUB XINPUT (xix%, xiy%, xitext$, laenge%)
'
'  DECLARE SUB LOAD.XMO (xmofile$)
'  DECLARE SUB XMOUSE (opt$, xmt%, xmx%, xmy%)
'
'  DECLARE SUB XFORM (option$, formname$, wert%, x%, y%)
'
'  DECLARE SUB LOAD.CMD (cmdfile$)
'  DECLARE SUB SAVE.CMD (cmdname$, cmdfile$)
'  DECLARE SUB XCMD (option$, cmdname$, wert%, x%, y%)
'  DECLARE SUB MsgBOX (CAPTION$, text$, typ%, wert$)
'
'  DECLARE SUB RGBto16 (r%, g%, b%, wert16%)
'  DECLARE SUB RGBto15 (r%, g%, b%, wert15%)
'  DECLARE SUB GET.RGB (colornr%, r%, g%, b%)
'  DECLARE SUB PALto15 (farbnr%, wert15%)
'  DECLARE SUB PALto16 (farbnr%, wert16%)
'
'  DECLARE SUB XSLEEP (msec%)
'  DECLARE SUB XTRIGGER (option$, msec%, puls%)
'
'  DECLARE SUB LOAD.INT.C2 ()
'  DECLARE SUB LOAD.ASM (code$, programm$)
'
'  DECLARE SUB GET.INFO (objekt$, was$, wert1$, wert2 AS DOUBLE)




'====================================================================================
'  alle enthaltenen Subs mit Erklrung
'====================================================================================

'====================================================================================
' DECLARE SUB XSCREEN (mode%)
'====================================================================================
'  - setzt den angegebenen Grafik-Modus und initialisiert alle Grafik-Subs
'  - vom Programm untersttze Grafik-Moden:
'       ============================
'        Modus   Auflsung   Farben
'       ============================
'        &H13     320x200     256  (QB SCREEN 13)
'        &H100    640x400     256
'        &H101    640x480     256
'        &H103    800x600     256
'        &H105   1024x768     256
'        &H107   1280x1024    256
'        &H120   1600x1200    256
'
'        &H10D    320x200     32k
'        &H110    640x480     32k
'        &H113    800x600     32k
'        &H116   1024x768     32k
'        &H119   1280x1024    32k
'        &H121   1600x1200    32k
'
'        &H10E    320x200     64k
'        &H111    640x480     64k
'        &H114    800x600     64k
'        &H117   1024x768     64k
'        &H11A   1280x1024    64k
'        &H122   1600x1200    64k
'
' BEISPIEL: CALL XSCREEN (&H101)    '640x480x256 setzen
'
' - WICHTIG: bei nicht untersttzten oder nicht vorhandenen MODEN
'            wird automatisch mit Fehlermeldung beendet
' - WICHTIG: Sollte der Monitor sich abschalten oder das Bild
'            sich berlagern usw. dann wird die gewhlte
'            Auflsung nicht vom MONITOR untersttzt!
' - WICHTIG: alle Grafik-Sub's werden erst durch XSCREEN
'            freigeschaltet
'
 
'====================================================================================
' DECLARE SUB XPSET (X%, y%, f%)
' DECLARE SUB XPOINT (X%, y%, f%)
' DECLARE SUB SET.XLINE.MASK (opt$, mask%)
' DECLARE SUB XLINE (x1%, y1%, x2%, y2%, f%, xlo$)
'====================================================================================
' SUB SET.XLINE.MASK:- legt eine Maske fr das Linienzeichnen fest
'                       opt$ = "ON": mask% = Linienmaske
'                       opt$ = "OFF": mask% = dummy%
'                    - LINE "" - Masken funktionieren in allen Moden
'                      LINE "B"- Masken funtkionieren nur in MODEN <= &H12
'
' SUB XLINE: xlo$ = ""   - zeichnet ein Linie
'            xlo$ = "B"  - zeichnet ein Rechteck
'            xlo$ = "BF" - zeichnet ein ausgeflltes Rechteck
'
' BEISPIEL: CALL XPSET (100, 100, 15)    
' BEISPIEL: CALL XPOINT (100, 100, f%)    
' BEISPIEL: CALL XLINE (0, 0, 639, 479, 15, "BF")    

'====================================================================================
' DECLARE SUB XVIEW (xmin%, ymin%, xmax%, ymax%)
'====================================================================================
' - definiert einen Bereich auf dem Bildschirm auf den Grafik ausgegeben
'   werden kann
' - Standart ist der ganze Bildschirm
' - hat nur Auswirkungen auf XPUT,XGET,SET.PICTURE
'
' BEISPIEL: CALL XVIEW (0, 0, 100, 100) 'Grafikausgabe nur in diesem Bereich
'
'====================================================================================
' DECLARE SUB XPUT (x%, y%, putdat$)
' DECLARE SUB XGET (x1%, y1%, x2%, y2%, getdat$)
' DECLARE SUB SET.FILTER (opt$, wert%)
'====================================================================================
' - Aufbau put/get-dat$ : Byte 1   = Bytes pro Pixel
'                              2-3 = Breite
'                              4-5 = Hhe
'                              6-x = Daten
'
' - SET.FILTER: - definiert eine Farbe die beim Zeichnen mit XPUT,SET.PICTURE
'                 nicht gezeichnet wird!
'               - opt$ = "ON"  / wert% = Farbe die nicht gezeichnet werden soll
'               - opt$ = "OFF" / wert% = dummy
'
'  BEISPIEL:
'  CALL XLINE (0, 0, 50, 50, 10, "BF")    ' Grnes ausgeflltes Rechteck
'  CALL XLINE (20, 20, 30, 30, 12, "BF")  ' mit rotem Rechteck in der Mitte
'
'  CALL XGET (0, 0, 50, 50, bild$)        ' Bildbereich Getten
'
'  CALL XPUT (100, 100, bild$)            ' normales Bild an 100,100 setzen
'
'  CALL SET.FILTER ("ON", 12)             ' bei allen weiteren Aktionen soll
'                                         ' die Farbe 12 nicht gezeichnet werden
'  CALL XPUT (100, 200, bild$)            ' jetzt wird durch den Filter nur der
'                                         ' Grne Rahmen gezeichnet
'

'====================================================================================
' DECLARE SUB SET.PICTURE (picx%, picy%, picfile$)
' DECLARE SUB XSAVE (x1%, y1%, x2%, y2%, xsfile$)
'====================================================================================
' SUB SET.PICTURE
' - setzt ein Bild an die angegebene Position
' - selbststndiges Unterprogramm fr jeweilige Datei-Endung
' - mgliche Bildformate : ".BMP"  2c, 16c, 256c, 32kc, 64kc, 16.7Mc
'                          ".PCX"  256c
'                          ".GIF"  2c, 16c, 256c (sehr langsam)
'                          ".JPG"  noch nicht
'                          ".ICO"  16c
'                          ".QBP"  eigenes Format (256c, 32Kc, 64Kc)
' SUB XSAVE
' - speichert einen Grafikbereich als Bilddatei
' - mgliche Bildformate : ".QBP" 256c, 32Kc, 64Kc (je nach Modus)
'                          ".BMP" 256c (nur in einem 256c-Modus)
'
' BEISPIEL: CALL SET.PICTURE (0, 0, "C:\WINDOWS\setup.bmp")
' BEISPIEL: CALL XSAVE (0, 0, 639, 479,"screen.qbp")
' BEISPIEL: CALL XSAVE (0, 0, 639, 479,"screen.bmp")


'====================================================================================
' DECLARE SUB LOAD.PAL (palfile$)
' DECLARE SUB SAVE.PAL (palfile$)
'====================================================================================
' - LOAD.PAL setzt die angegebene Pallette
' - SAVE.PAL speichert die aktuelle Pallette in der angegebenen Datei
'
' BEISPIEL: LOAD.PAL ("pal1.pal")
' BEISPIEL: SAVE.PAL ("aktuell.pal")

'====================================================================================
' DECLARE SUB SET.VIEW.PAGE (page%)
' DECLARE SUB SET.WORK.PAGE (page%)
'====================================================================================
' VIEW.PAGE - die Seite die zu sehen sein soll
' WORK.PAGE - die Seite auf der gearbeitet werden soll
'
' Beispiel:
' CALL SET.WORK.PAGE (1)
' CALL XLINE (0, 0, 639, 479, 10, "BF")
' SLEEP
' CALL SET.VIEW.PAGE (1)
'

'====================================================================================
' DECLARE SUB LOAD.ARL (arlfile$)
' DECLARE SUB XCOLOR (vordergrund%, hintergrund%, ha%)
' DECLARE SUB XPRINT (xpx%, xpy%, xptext$)
' DECLARE SUB XINPUT (xix%, xiy%, xitext$, laenge%)
'====================================================================================
' LOAD.ARL - ldt eine Schrift die dann benutzt wird (.ARL-Datei)
'          - bei arlfile$ = "8x16" wird die Bios-Standartschrift geladen
'          - bei arlfile$ = "8x8" wird die Bios-Standartschrift geladen
' XCOLOR   - ha% = 1 mit Hintergrund, ha% = 0 ohne Hintergrund
' XINPUT   - laenge% = Eingabe-Maximum
'
' BEISPIEL:
' LOAD.ARL ("8x8")
' CALL XPRINT (0,0,"Hallo")
' CALL XINPUT (100, 100, text$, 20)
' CALL XPRINT (100, 200, text$)

'====================================================================================
' DECLARE SUB LOAD.XMO (xmofile$)
' DECLARE SUB XMOUSE (opt$, xmt%, xmx%, xmy%)
'====================================================================================
' LOAD.XMO - ldt einen Mauszeiger (.XMO-Datei)
'          - bei xmofile$ = "NORMAL" wird ein Standartzeiger geladen
' XMOUSE   - steuert Maus
' WICHTIG: vor Aufruf von XMOUSE mu ein Maustreiber geladen werden
' opt$ = "LIMIT": xmx% = X-LIMIT: xmy% = Y-Limit
' opt$ = "ON"   : Mauszeiger wird eingeschaltet (restl. Var. sind dummys)
' opt$ = "OFF"  : Mauszeiger wird ausgeschaltet (restl. Var. sind dummys)
' opt$ = "CTRL" : Mauszeiger wird kontrolliert (siehe Beispiel)
'
' Beispiel:
' CALL XSCREEN (&H101)
' CALL XMOUSE ("ON", 0, 0, 0)
' DO
' CALL XMOUSE ("CTRL", t%, x%, y%)
' IF t% = 1 THEN CALL XPRINT (0, 0, "Linke Taste wird gedrckt")
' IF t% = 2 THEN CALL XPRINT (0, 0, "Rechte Taste wird gedrckt")
' IF t% = 3 THEN CALL XPRINT (0, 0, "Linke und Rechte Taste werden gedrckt")
' IF t% = 4 THEN CALL XPRINT (0, 0, "Linke Taste wurde gedrckt")
' LOOP UNTIL INKEY$ = CHR$(27)
'
' - Anmerkung: der Hintergrund wird Automatisch gespeichert
'              und gesetzt
'
' - bei Vernderungen auf dem Bildschirm (SET.PICTURE, XPUT...)
'   sollte man vorher die Maus ausschalten und danach wieder einschalten
'   sonst knnte es zu unschnen Grafik-Fehlern kommen
' - probiers einfach mal aus!
'

'====================================================================================
'  DECLARE SUB LOAD.CMD (cmdfile$)
'  DECLARE SUB SAVE.CMD (cmdname$, cmdfile$)
'====================================================================================
'  SUB LOAD.CMD: - cmdfile$ = ".cmd" Datei die geladen werden soll
'  SUB SAVE.CMD: - cmdname$ = Name des Buttons der gespeichert werden soll
'                - cmdfile$ = ".cmd" Datei in die gespeichert werden soll
'

'====================================================================================
'  DECLARE SUB XCMD (option$, cmdname$, wert%, x%, y%)
'====================================================================================
'  option$ = "NEW"  - erstellt neuen Button
'                     cmdname$  = Definitionen fr den Button
'                     wert%     = dummy
'                     x% und y% = dummy
'
'  alle Definitionsmglichkeiten im berblick.
'   Def             Bedeutung                           DEFAULT
'  [NAME= ]      Name des Buttons             (8 Byte)  KEIN DEFAULT
'  [CAPTION= ]   sagt was draufsteht          (20 Byte) ""
'  [X=0]         X-Start des Buttons in Pixel           0
'  [Y=0]         Y-Start des Buttons in Pixel           0
'  [XLEN=0]      Breite des Buttons in Pixel            0
'  [YLEN=0]      Breite des Buttons in Pixel            0
'  [HC=15]       HI-Color (helle Randfarbe fr 3D)      je nach Bpp wei
'  [LC=8]        LO-Color (dunkle Randfarbe fr 3D)     je nach Bpp dunkelgrau
'  [BC=7]        Button-Color                           je nach Bpp grau
'  [TC=0]        Text-Color                             je nach Bpp schwarz
'  [VALUE=0]     1 = gedrckt: 0 = nicht gedrckt       0
'  [ENABLED=0]   siehe option$ = "SET"                  0
'  [TABINDEX=0]  siehe option$ = "SET.TAB"              0
'  [PICYES=0]    1 = Text nein/Bild ja: 0 = andersrum   0
'  [PICNAME= ]   Name des Bildes              (40 BYTE) ""
'  [FORM= ]      Button/Fenster (8 Byte) (s. "CTRL")    ""
'  [TABLESS=0]   1 = Button ist nicht "anTABbar"        0
'  [RELX=0]      Relatives XY. Wenn Button zu einer Form0
'  [RELY=0]      gehrt dann wird das dazugezhlt       0
'
'  - Alle Definitionen knnen hintereinander in CMDNAME$ stehen
'  - Es men nicht alle Definitionen angegeben werden(siehe Default).
'
'  option$ = "CHANGE" - ndert einen vorhandenen Button
'                       cmdname$ = neue Teil-Definitionen fr den Button
'                       wert%     = dummy
'                       x% und y% = dummy
'                     - Definitionen siehe "NEW": [NAME= ] MU angegeben werden
'
'  option$ = "SET"    - setzt einen Button auf den Bildschirm
'                     - cmdname$ ist der Name des Buttons
'                       wert%     = dummy
'                       x% und y% = dummy
'                     - ENABLED wird auf 1 gesetzt. Damit ist der Button
'                       jetzt drckbar
'
' option$ = "SET.ON"  - schaltet den angegebenen Button an, setzt VALUE
'                       auf 1 und zeichnet den gedrckten Button
'                     - cmdname$ ist Name des Buttons
'                       wert%     = dummy
'                       x% und y% = dummy
'
' option$ = "SET.OFF" - schaltet den angegebenen Button aus, setzt VALUE
'                       auf 0 und zeichnet den nicht gedrckten Button
'                     - cmdname$ ist Name des Buttons
'                       wert%     = dummy
'                       x% und y% = dummy
'
'option$ = "SET.VALUE"- setzt VALUE des angegebenen Buttons auf wert% (0/1)
'                     - cmdname$ ist Name des Buttons
'                       x% und y% = dummy
'
'option$ = "GET.VALUE"- gibt VALUE des angegebenen Buttons in wert% zurck
'                     - cmdname$ ist Name des Buttons
'                       x% und y% = dummy
'
' option$ = "SET.TAB" - setzt einen Schwarzen Rand um den angegebenen Button
'                     - beim Setzen des nchsten TABs wird der alte Rand
'                       wieder hergestellt!
'
' option$ = "KILL"    - lscht den angegebenen Button aus dem Speicher.
'                       auf dem Bildschirm ist er aber noch vorhanden
'
' option = "CTRL"      - kontrolliert ALLE Buttons auf Mausklicks
'                      - die Maus sollte eingeschaltet werden (XMOUSE)
'                      - die Maus braucht nicht mehr extra kontrolliert
'                        werden (siehe XMOUSE / CTRL)
'                      - wert%     = gedrckte Taste
'                      - x% und y% = momentane Koordinaten der Maus
'                      - wenn ein Button gedrckt wurde liefert
'                        cmdname$ den Namen des gedrckten Buttons zurck
'                        ansonsten ist cmdname$=""
'
' option = "CTRL.bla"  - kontrolliert alle Buttons in dem angegebenen Fenster
'                      - bei bla mu der Name der/des FORM/FENTERS angegeben
'                        werden
'                      - Rckgabewerte siehe "CTRL"
'
' BEISPIEL:
' defi$ = "[NAME=button1] [CAPTION=drck mich] [X=100] [Y=100] [XLEN=80] [YLEN=20]"
' CALL XCMD ("NEW", defi$, 0, 0, 0) 'Button erstellen der in defi$ ist
' CALL XCMD ("SET", "button1", 0, 0, 0)
' CALL XMOUSE ("ON",0,0,0)
' DO
' button$=""
' CALL XCMD ("CTRL", button$, 0, 0, 0)
' LOOP UNTIL button$ = "button1"
'
'
'====================================================================================
'  DECLARE SUB XFORM (option$, formname$, wert%, x%, y%)
'====================================================================================
'  option$ = "NEW"  - erstellt neue Form
'                     formname$  = Definitionen fr den Button
'                     wert%     = dummy
'                     x% und y% = dummy
'
'  alle Definitionsmglichkeiten im berblick.
'   Def             Bedeutung                           DEFAULT
'  [NAME= ]      Name des Buttons             (8 Byte)  KEIN DEFAULT
'  [CAPTION= ]   sagt was draufsteht          (20 Byte) ""
'  [X=0]         X-Start des Buttons in Pixel           0
'  [Y=0]         Y-Start des Buttons in Pixel           0
'  [XLEN=0]      Breite des Buttons in Pixel            0
'  [YLEN=0]      Breite des Buttons in Pixel            0
'  [HC=15]       HI-Color (helle Randfarbe fr 3D)      je nach Bpp wei
'  [LC=8]        LO-Color (dunkle Randfarbe fr 3D)     je nach Bpp dunkelgrau
'  [BC=7]        Button-Color                           je nach Bpp grau
'  [TC=0]        Text-Color                             je nach Bpp schwarz
'  [ENABLED=0]   siehe option$ = "SET"                  0
'  [PICYES=0]    1 = Text nein/Bild ja: 0 = andersrum   0
'  [PICNAME= ]   Name des Bildes              (40 BYTE) ""
'  [SIZEABLE=0]  hat noch keine Auswirkung!!!
'
'  - Alle Definitionen knnen hintereinander in FORMNAME$ stehen
'  - Es men nicht alle Definitionen angegeben werden(siehe Default).
'
'  option$ = "CHANGE" - ndert eine vorhandene Form
'                       formname$ = neue Teil-Definitionen fr die FORM
'                       wert%     = dummy
'                       x% und y% = dummy
'                     - Definitionen siehe "NEW": [NAME= ] MU angegeben werden
'
'  option$ = "SET"    - setzt eine Form auf den Bildschirm mit allen
'                       Elementen die dazugehren (z.B. Button's)
'                     - formname$ ist der Name der Form
'                       wert%     = dummy
'                       x% und y% = dummy
'                     - ENABLED wird auf 1 gesetzt. Damit ist die Form
'                       jetzt aktiv

'====================================================================================
'  DECLARE SUB MsgBOX (CAPTION$, text$, typ%, wert$)
'====================================================================================
' - zeichnet eine Message-Box mit Buttons auf den Bildschirm
'    - die MessageBox ist immer in der Mitte des Bildschirms
'      und kann nicht verschoben werden!
'    - CAPTION$ ist der Text der im Blauen Balken steht
'    - text$ ist die Nachricht/Message
'    - typ% ist die Art der Message-Box.
'           typ%     Buttons
'             0       Ok
'             1       Ok / Abbrechen
'             2       Beenden / Wiederholen / Ignorieren
'             3       Ja / Nein / Abbrechen
'             4       Ja / Nein
'             5       Wiederholen / Abbrechen
'
'    - wert$ liefert den Namen des gedrckten Buttons zurck
'      mgliche Namen: - "BOX_OK"   = Ok
'                      - "BOX_ABR"  = Abbrechen
'                      - "BOX_JA"   = Ja
'                      - "BOX_NEIN" = Nein
'                      - "BOX_IGN"  = Ignorieren
'                      - "BOX_WDH"  = Wiederholen
'                      - "BOX_END"  = Beenden
'                      - "BOX_X"    = X
'                      - "BOX_ESC"  = wenn Escape gedrckt wird
'
'    - wenn MSGBOX aufgerufen wird bernimmt es die Kontrolle solange bis
'      ESC oder ein Button gedrckt wird
'    - WICHTIG: beim Aufruf wird automatisch der Hintergrund in der Datei
'               "t~e~m~p~.qbp" gespeichert. Beim Verlassen des SUBS wird der
'               Hintergrund wiederhergestellt.
'
' BEISPIEL: CALL MSGBOX ("berschrift", "Text", 2, wert$)
'           XPRINT (0, 0, wert$)
'
'====================================================================================
' DECLARE SUB RGBto16 (r%, g%, b%, wert16%)
' DECLARE SUB RGBto15 (r%, g%, b%, wert15%)
' DECLARE SUB GET.RGB (colornr%, r%, g%, b%)
' DECLARE SUB PALto15 (farbnr%, wert15%)
' DECLARE SUB PALto16 (farbnr%, wert16%)
'====================================================================================
' RGBtoxx - wandelt RGB-Werte in 32kc-Werte oder 64kc-Werte um
' GET.RGB - liest RGB-Werte aus aktueller Palette


'====================================================================================
' DECLARE SUB XSLEEP (msec%)
' DECLARE SUB XTRIGGER (option$, msec%, puls%)
'====================================================================================
' XSLEEP - wartet beim Aufruf die angegebenen Msec ab (je weniger desto ungenauer)
' XTRIGGER - option$ - "CTRL"
'          - puls% schaltet alle msec% zwischen 0 und 1 hin und her

'====================================================================================
' DECLARE SUB LOAD.INT.C2 ()
' DECLARE SUB LOAD.ASM (code$, programm$)
'====================================================================================
' LOAD.INT.C2 - ldt meinen eigenen Grafik-Interrupt &HC2.
'             - dieses Sub ist fr einen externen Aufruf gesperrt!
' LOAD.ASM    - wandelt einen HEX-String(code$) in einen ASCII-String um!

'====================================================================================
'  DECLARE SUB GET.INFO (objekt$, was$, wert1$, wert2 AS DOUBLE)
'====================================================================================
'   objekt$ = "PIC.bla.bla"
'                   - bla.bla ist durch den Datei-Namen des Bildes zu ersetzen
'                   - was$ = "VERSION" gibt die Version des Bildes
'                     in wert1$ zurck
'                   - was$ = "BPP" gibt Farbtiefe in wert2 zurck
'                   - was$ = "XLEN" gibt Breite in wert2 zurck
'                   - was$ = "YLEN" gibt Hhe in wert2 zurck
'                   - mgliche Bilder: BMP, PCX, GIF, ICO, QBP

