***********************************************************
*             Macros für die Reset-Routinen               *
* 1. PRUEFSUMME : Berechnet die LowMemChkSum für ExecBase *
* 2. DoSomethink : Eine kleine Farbspielerei, die als     *
*                  Programm genutzt wird, welches Reset-  *
*                  gemacht werden soll                    *
* Frank Schäfer & Kickstart in 88/89                      *
* Für den DevPac-Assembler                                *
***********************************************************


* Errechnen der ExecBase Prüfsumme

PRUEFSUMME  macro

        movem.l d0-d1/a0/a6,-(sp) * Register sichern
        moveq   #0,d1          * d1 für Summe löschen
        move.l  _SysBase,a6    * ExecBase nach a6
        lea.l   ChkBase(a6),a0 * Adresse von ChkBase -> a0
        move.w  SoftVer(a6),d1 * SoftVer erster Summand
        moveq   #$16,d0        * Über die nächsten 16 Worte
sum:    add.w   (a0)+,d1       * Prüfsumme bilden
        dbra    d0,sum         * Fertig ?
        not.w   d1             * Prüfsumme negieren
        move.w  d1,LowMemChkSum(a6) * Prüfumme abspeichern
        movem.l (sp)+,d0-d1/a0/a6 * Register setzen

        endm


* Irgent eine kleine Spielerei oder ein eigenes Programm

DoSomethink macro

        moveq   #0,d0           * d0 löschen
Maus:   move.w  d0,$dff180      * Hintergrundfarbe setzen
        add.w   #1,d0           * Nächste Farbe
        cmp.w   #$FFF,d0        * Alle 4096 Farben durch ?
        bne.s   Maus            * Nein, dann zu weiter
        moveq   #0,d0           * Ja, -> d0 löschen
        btst    #6,$bfe001      * linke Maustaste ?
        bne.s   Maus            * Nein, dann zu Label Maus
                                * Ja, weiter im Programm
        endm
