execbase = 4
findtask = -294
addport = -354
remport = -360
opendevice = -444
closedevice = -450
doio = -456

run:
 move.l execbase,a6       ;Exec-Basisadresse
 sub.l  a1,a1             ;0 als Argument => eigener Task
 jsr    findtask(a6)      ;Task suchen
 move.l d0,replyport+16   ;Task als Empfänger in MsgPort eintragen

 lea    replyport,a1      ;Zeiger auf Reply-Port
 jsr    addport(a6)       ;Reply-Port in globale Liste eintragen

 lea    diskio,a1         ;Zeiger auf IOStdReq-Struktur
 move.l #replyport,14(a1) ;Reply-Port in Message eintragen
 move.l #0,d0             ;Laufwerksnummer (hier df0:)
 clr.l  d1                ;keine Flags
 lea    trdname,a0        ;Zeiger auf Devicename
 jsr    opendevice(a6)    ;Trackdisk-Device öffnen
 tst.l  d0                ;Fehler?
 bne    error             ;Ja! Programm beenden

 lea    irqstruct,a0      ;Zeiger auf Interrupt-Struktur
 move.l #0,14(a0)         ;kein Datenspeicher
 move.l #routine,18(a0)   ;Adresse der Irq-Routine

 move   #12,28(a1)        ;Kommando: REMOVE
 move.l #irqstruct,40(a1) ;Adresse der Interrupt-Struktur
 jsr    doio(a6)          ;Interrupt installieren

wait:
 btst   #6,$bfe001        ;Auf linke Maustaste warten
 bne    wait

 move   #13,28(a1)        ;Kommando: CHANGENUM
 jsr    doio(a6)          ;Befehl ausfÜhren
 move.l 32(a1),d7         ;Zählerstand in D7

 move   #10,28(a1)        ;Kommando: SEEK
 move.l #0,44(a1)         ;Zuerst nach Cylinder 0
 jsr    doio(a6)          ;Kopf bewegen
 move   #1759*512,44(a1)  ;dann nach Cylinder 79
 jsr    doio(a6)          ;Kopf bewegen

 lea    replyport,a1      ;Zeiger auf Reply-Port
 jsr    remport(a6)       ;MsgPort aus globaler Liste entfernen

 lea    diskio,a1         ;Zeiger auf IOStdReq-Struktur
 jsr    closedevice(a6)   ;Trackdisk-Device schließen

error:
 rts                      ;Programmende

routine:
 lea    $dff180,a2        ;Hintergrundfarbregister
 move.l #10000,d0         ;9999 Schleifendurchläufe
loop:
 add.w  #1,(a2)           ;Hintergrundfarbe ändern
 dbra   d0,loop
rts                       ;Ende der Interrupt-Routine

trdname: dc.b "trackdisk.device",0
even
replyport: blk.l 8,0
diskio: blk.l 20,0
irqstruct: blk.l 6,0
