;*****  Serial-Device-Demonstration  6/87  S.D.  *****


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

output    = -60     ;Send standard output
write     = -48     ;Display data


run:
     move.l  execbase,a6      ;Pointer to EXEC library
     sub.l   a1,a1            ;Your own task
     jsr     FindTask(a6)     ;Search for task

     move.l  d0,reply+$10     ;Set SigTask
     lea     reply,a1
     jsr     AddPort(a6)      ;Add Reply-Port

     lea     devio,a1         ;Pointer to I/O-Structure
     clr.l   d0
     clr.l   d1
     lea     devicename,a0
     jsr     openDev(a6)      ;Open serial device
     tst.l   d0               ;OK?
     bne     error            ;NO: End

     lea     devio,a1

     move.l  #reply,14(a1)    ;set Reply-Port

     move    #11,28(a1)       ;Command: SETPARAMS
     move.l  #1200,ioextd+12  ;1200 baud
     jsr     DoIo(a6)         ;Set parameters

     move    #3,28(a1)        ;Command: WRITE
     move.l  #ttext,40(a1)    ;Buffer
     move.l  #textl,36(a1)    ;length
     jsr     DoIo(a6)         ;Send text

error:
     lea     reply,a1
     jsr     RemPort(a6)      ;Remove Port

     lea     devio,a1
     jsr     CloseDev(a6)     ;Close Device


     rts                     ;End


devicename:  dc.b "serial.device",0
ttext:       dc.b "hello, world!"
textl:       = 13
 align                        ;some assemblers use even
devio:
message:  blk.w 10,0
io:       blk.w  6,0
ioreq:    blk.w  8,0
ioextd:   blk.w 17,0
reply:    blk.l  8,0

 end
