

* Usage: 33mWBC0m [1] [2] [F]

* WBC V0.03 installiert neue Farbwerte für die Workbench !

* 32m 1  0minstalliert die Farbwerte von OS1.3 !
* 32m 2  0minstalliert die Farbwerte von OS2.0 !
* 32m F  0minstalliert die Farbwerte von der FRANZ PD Serie !

* 33mWBC 0m(p) 20. Mai, 1993 von  * Volker Stepprath
                             * Spandauerstr.4
                             * 40789 Monheim
                             * Deutschland



* Varablen definieren
* -------------------
_LVOExecBase        equ     4
_LVOOldOpenLibrary  equ     -408
_LVOCloseLibrary    equ     -414

_LVOOutput          equ      -60
_LVOWrite           equ      -48

_LVOGetPrefs        equ     -132
_LVOSetPrefs        equ     -324



* Kurzer Parametertest
* --------------------
        cmp.l   #2,d0                       * wurde Parse übergeben
        bne     _USAGE                      * Nein
        move.b  (a0),d2                     * Parse retten



* intuition.library öffnen
* ------------------------
        move.l  _LVOExecBase,a6             * Systembasis nach a6
        lea     Intname,a1                  * intuition.library
        jsr     _LVOOldOpenLibrary(a6)      * öffnen
        move.l  d0,IntBase                  * Zeiger retten



* WBC Einstellungen ermitteln
* ---------------------------
        move.l  IntBase,a6                  * Intuitonbasis nach a6
        lea     Buffer,a0                   * WBC-Puffer angeben
        move.b  #232,d0                     * in Bytes
        jsr     _LVOGetPrefs(a6)            * WBC ermitteln



* Parameter auswerten
* -------------------
        cmp.b   #'1',d2                     * WBC von OS1.3
        beq     setSYS1                     * ist erwünscht

        cmp.b   #'2',d2                     * WBC von OS2.0
        beq     setSYS2                     * möschtigern`

        bclr    #5,d2                       * in großbuchstaben wandeln

        cmp.b   #'F',d2                     * WBC von FRANZ PD
        beq     setFRNZ                     * ismilieba

        bsr     _USAGE                      * Ungültiger Parse
        bra     _CINT                       * wurde übergeben



* Systemfarben angeben
* --------------------
setSYS1 lea     SYS13,a0                    * Farbwerte von OS1.3
        bra     _WBC                        * einstellen

setSYS2 lea     SYS20,a0                    * Farbwerte von OS2.0
        bra     _WBC                        * einstellen

setFRNZ lea     FRANZ,a0                    * FRANZ PD Farbwerte
        bra     _WBC                        * einstellen



* Farbdaten installieren
* ----------------------
_WBC    lea     Buffer,a1                   * Preferences angeben
        adda.l  #110,a1                     * Farben der WB ab #110
        move.w  (a0)+,(a1)+                 * Colour 0 installieren
        move.w  (a0)+,(a1)+                 * Colour 1 installieren
        move.w  (a0)+,(a1)+                 * Colour 2 installieren
        move.w  (a0),(a1)                   * Colour 3 installieren

        lea     Buffer,a0                   * Prefrences angeben
        move.l  #232,d0                     * Länge in Bytes
        move.l  #-1,d1                      * NewPrefs -> TRUE
        jsr     _LVOSetPrefs(a6)            * Farben setzen

_CINT   move.l  _LVOExecBase,a6             * Systembasis nach a6
        move.l  IntBase,a1                  * Intuitionbasis angeben
        jsr     _LVOCloseLibrary(a6)        * int.lib. schließen

        RTS                                 * WBC verlassen



* Keine gültigen Parameter
* ------------------------
_USAGE  move.l  _LVOExecBase,a6             * Systembasis nach a6
        lea     Dosname,a1                  * Name dos.library
        jsr     _LVOOldOpenLibrary(a6)      * dos.library öffnen
        move.l  d0,DosBase                  * Zeiger retten

        move.l  DosBase,a6                  * DOS zeiger nach a6
        jsr     _LVOOutput(a6)              * Ausgabekanal ermitteln
        move.l  d0,Handle                   * und retten

        move.l  Handle,d1                   * Wohin
        move.l  #Usage,d2                   * Was
        moveq   #33,d3                      * Wieviel
        jsr     _LVOWrite(a6)               * Ausgeben

_CDOS   move.l  _LVOExecBase,a6             * s. 14 Zeilen vorher
        move.l  DosBase,a1                  * DOS Zeiger angeben
        jsr     _LVOCloseLibrary(a6)        * dos.library schließen

        rts                                 * Hässchen... hüpf



* Speicherreservierung
* --------------------
DosBase dc.l 0
IntBase dc.l 0
Handle  dc.l 0
Buffer  ds.b 232
Dosname dc.b 'dos.library',0
Intname dc.b 'intuition.library',0

Usage   dc.b 'Usage: ',$9b,'33;40mWBC',$9b,'0m [1] [2] [F]',10

SYS13   dc.w $5A,$FFF,$2,$F80
SYS20   dc.w $AAA,$0,$FFF,$68B
FRANZ   dc.w $23,$FFF,$AAA,$F40
