;***  Trackdisk Device Demo: Read sectors 6/87  S.D. ***

ExecBase  = 4                 ;EXEC-Base address
FindTask  = -294              ;Search for Task-Structure
AddPort   = -354              ;Create port
RemPort   = -360              ;Remove port
OpenLib   = -408              ;Open library
CloseLib  = -414              ;Close library
OpenDev   = -444              ;Open device
CloseDev  = -450              ;Close device
DoIo      = -456              ;Start I/O and wait

run:
     move.l  execbase,a6      ;Pointer to EXEC library
     sub.l   a1,a1            ;Set up own task
     jsr     FindTask(a6)     ;Search for task
     move.l  d0,readreply+$10 ;SigTask: own task

     lea     readreply,a1
     jsr     AddPort(a6)      ;Add Reply-Port

     lea     diskio,a1        ;I/O-Struktur
     move.l  #0,d0            ;Drive DF0:
     clr.l   d1               ;No flags
     lea     trddevice,a0     ;Device-Name
     jsr     OpenDev(a6)      ;Open trackdisk.device
     tst.l   d0               ;OK?
     bne     error            ;NO: An error occurred

     lea     diskio,a1
     move.l  #readreply,14(a1) ;set Reply-Port
     move    #2,28(a1)        ;Command: READ
     move.l  #diskbuff,40(a1) ;Buffer
     move.l  #2*512,36(a1)    ;Length: 2 sectors
     move.l  #880*512,44(a1)  ;Offset: 880 sectors (Root)
     move.l  execbase,a6      ;EXEC base address
     jsr     DoIo(a6)         ;Read sectors

     move.l  diskio+32,d6     ;IO_ACTUAL in D6

     lea     diskio,a1
     move    #9,28(a1)        ;Command: TD_MOTOR
     move.l  #0,36(a1)        ;Turn
     jsr     DoIo(a6)         ;motor off

     lea     readreply,a1
     jsr     RemPort(a6)      ;Remove port

     lea     diskio,a1
     jsr     closedev(a6)     ;Close Trackdisk-Device

error:
     rts                      ;End


trddevice:   dc.b 'trackdisk.device',0
 align                        ;some assemblers use even

diskio:      blk.l 20,0
readreply:   blk.l 8,0
diskbuff:    blk.b 512*2,0

 end
