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   ;Eigenen Task als Empfänger eintragen

 lea    replyport,a1      ;Zeiger auf Reply-Port
 jsr    addport(a6)       ;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 verlassen

 move   #16,28(a1)        ;Kommando: RAWREAD
 move.l #32760,36(a1)     ;Anzahl zu lesender Bytes
 move.l #puffer,40(a1)    ;Zeiger auf Datenpuffer
 move.l #3,44(a1)         ;Nummer der Tracks (nicht Cylinder!)
 jsr    doio(a6)          ;Daten einlesen

 move   #9,28(a1)         ;Kommando: MOTOR
 move.l #0,36(a1)         ;Motor aus-
 jsr    doio(a6)          ;schalten

wait:
 btst   #6,$bfe001        ;Linke Maustaste gedrÜckt?
 bne    wait              ;Nein, warten

 move   #17,28(a1)        ;Kommando: RAWWRITE
 move.l #10000,36(a1)     ;Anzahl zu schreibender Bytes
 jsr    doio(a6)          ;Restlichen Werte bleiben unverändert

 move   #9,28(a1)         ;Kommando: MOTOR
 move.l #0,36(a1)         ;Motor aus-
 jsr    doio(a6)          ;schalten

 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                      ;Ende

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