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

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

 lea    replyport,a1      ;Zeiger auf Reply-Port
 jsr    addport(a6)       ;In globale Liste der MsgPorts 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)    ;Device öffnen
 tst.l  d0                ;Fehler?
 bne    error             ;Ja! Programm beenden

 lea    diskio,a1         ;Zeiger auf IOStdReq-Struktur
 move   #2,28(a1)         ;Kommando: READ
 move.l #diskbuff,40(a1)  ;Puffer fÜr Zieldaten
 move.l #7*512,36(a1)     ;Länge: 7 Sektoren
 move.l #400*512,44(a1)   ;Offset: 400 Sektoren
 jsr    doio(a6)          ;Sektoren lesen
 move.l 32(a1),d7         ;Anzahl gelesener Bytes in D7
 move.b 31(a1),d6         ;Eventueller Fehler in D6

 bsr    wait              ;Auf linke Maustaste warten

 lea    diskio,a1         ;Zeiger auf IOStdReq-Struktur
 move   #3,28(a1)         ;Kommando: WRITE
 move.l #diskbuff,40(a1)  ;Adresse des Datenpuffers
 move.l #4*512,36(a1)     ;Länge: 4 Sektoren
 move.l #400*512,44(a1)   ;Offset: 400 Sektoren
 jsr    doio(a6)          ;Sektoren schreiben
 move.l 32(a1),d7         ;Anzahl geschriebener Bytes in D7
 move.b 31(a1),d6         ;Eventueller Fehler in D6

 lea    diskio,a1         ;Zeiger auf IOStdReq-Struktur
 move   #9,28(a1)         ;Kommando: MOTOR
 move.l #0,36(a1)         ;0:=Ausschalten / 1:=Einschalten
 jsr    doio(a6)          ;Motor ausschalten

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

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

error:
 rts                      ;Programm beenden

wait:
 btst   #6,$bfe001        ;Linke Maustaste gedrÜckt?
 bne    wait              ;Nein, warten
 rts                      ;ZurÜck zum Hauptprogramm

trdname: dc.b "trackdisk.device",0
even
diskio: blk.l 20,0
replyport: blk.l 8,0
diskbuff: blk.b 7*512,0
