;
; LowPass.asm - für den A68k-PD-Assembler von Charlie Gibbs
;               (W) 1989 by Holger Lubitz, Freeware !!!
;               Hoffentlich das KÜRZESTE Programm zum Abschalten des
;               Low-Pass-Filters in den A500/A2000 von der WB aus.
;               (Mein 1000er hat für sowas einen Schalter !)
;
; Wettbewerb: - Wer es noch kürzer hinbekommt (kleiner als 92 Bytes, aber
;               natürlich ebenfalls mit WB-Startupcode) bekommt von mir
;               eine Tüte Gummibärchen !
;
; Optimiert:  - 1989 von Fridtjof Siebert auf die Länge von 84 Bytes
;               gekürzt !!! Ich hoffe doch sehr, daß mir dies eine Tüte Gummi-
;               bärchen einbringen wird. Für eine noch kürzere Version setze
;               ich den Preis jedoch noch einmal aus (natürlich werde ich
;               bis dahin die Bärchen gegessen haben und eine neue Tüte kaufen)
;
; Optimiert:  - 1989 von Christian Kläger auf die Länge von 80 Bytes
;               gekürzt !!! Ich liebe Gummibärchen ! Wer es schafft, das
;               Programm noch weiter zu verkürzen, wird auch eine Tüte
;               Gummibärchen bekommen.
;
; 1> A68k LowPass.asm
; 1> BLink FROM LowPass.o TO LowPass
;
; Quellen: A68k von Fish 186, BLink 6.7 von Fish 110, Small.Lib von Fish 92
;

_AbsExecBase   = 4;
_LVOReplyMsg   = -378;
_LVOWaitPort   = -384;

ThisTask    =  276;
TDNestCnt   =  295;
pr_CLI      =  $ac;
pr_MsgPort  =  $5c;

; Dies ist das eigentliche 'Programm'

   bchg     #1,$bfe001        ; LED umschalten

; ... und dieser ganze Müll ist nötig, damits auch von der Workbench läuft

   move.l   _AbsExecBase,a6   ; Exec-Basisadresse
   move.l   ThisTask(a6),a5;  ; FindTask(0) nach a5;
   tst.l    pr_CLI(a5)        ; Sind wir vom CLI aus gestartet worden ?
   bne.s    CLI               ; Ja, dann ab nach Hause

   lea.l    pr_MsgPort(a5),a0 ; Sonst auf die Message warten
   jsr      _LVOWaitPort(a6)  ; die die Workbench sendet
   addq.b   #1,TDNestCnt(a6)  ; Forbid();
   move.l   d0,a1             ; MsgPtr an ReplyMsg
   jsr      _LVOReplyMsg(a6)  ; und antworten

CLI:
   moveq    #0,d0             ; Kein Fehler (woher auch)
   rts                        ; Wahnsinn, wir haben es geschafft...

   END
