home *** CD-ROM | disk | FTP | other *** search
/ Carousel / CAROUSEL.cdr / mactosh / code / asm_send.sit < prev    next >
Text File  |  1988-05-14  |  3KB  |  91 lines

  1. 11-May-88 21:26:13-MDT,2727;000000000000
  2. Return-Path: <u-lchoqu%sunset@cs.utah.edu>
  3. Received: from cs.utah.edu by SIMTEL20.ARPA with TCP; Wed, 11 May 88 21:26:10 MDT
  4. Received: by cs.utah.edu (5.54/utah-2.0-cs)
  5.     id AA03924; Wed, 11 May 88 21:26:47 MDT
  6. Received: by sunset.utah.edu (5.54/utah-2.0-leaf)
  7.     id AA29300; Wed, 11 May 88 21:26:45 MDT
  8. Date: Wed, 11 May 88 21:26:45 MDT
  9. From: u-lchoqu%sunset@cs.utah.edu (Lee Choquette)
  10. Message-Id: <8805120326.AA29300@sunset.utah.edu>
  11. To: rthum@simtel20.arpa
  12. Subject: SendBreak.asm
  13.  
  14. ;------------------------
  15. ; SendBreak desk accessory
  16. ;    by Brian H. Powell    brian@sally.UTEXAS.EDU
  17. ;                cs.Powell@r20.UTEXAS.EDU
  18. ;                brian@ut-sally.UUCP
  19. ;
  20. ;    This desk accessory is used to send a break out the modem port
  21. ; with the serial driver.  The break condition lasts about 12 ticks
  22. ; (one-fifth of a second.)
  23. ;------------------------
  24.  
  25.     include    :equ_files:traps.txt
  26.     include    :equ_files:sysequ.txt
  27.  
  28. OrnEntry
  29.     dc.w    0        ; We don't need time, need a goodbye kiss,
  30.                 ;  or respond to control calls.
  31.     dc.w    0        ; We don't need time
  32.     dc.w    0        ; We don't respond to any events
  33.     dc.w    0        ; We don't have a menu
  34.  
  35. ; offsets to driver routines:
  36.     dc.w    OrnOpen-OrnEntry    ; Open
  37.     dc.w    done-OrnEntry        ; Prime
  38.     dc.w    done-OrnEntry        ; Control
  39.     dc.w    done-OrnEntry        ; Status
  40.     dc.w    done-OrnEntry        ; Close
  41.  
  42. OrnTitle    dc.b    10,0
  43.         dc.b    'SendBreak'
  44.         .align    2
  45.  
  46. ; The following are the driver reference numbers for the two output ports.
  47. modemPort    equ    -7
  48. printerPort    equ    -9
  49.  
  50. ; We'll need 28 bytes for the parameter block.
  51. paramblocksize    equ    28
  52.  
  53. ; misc. equates
  54. numTicks    equ    12    ; number of ticks to delay (one-fifth second)
  55. SetBrk        equ    12    ; Control code for set break
  56. ClrBrk        equ    11    ; Control code for clear break
  57.  
  58. ;______________________________________________________________________
  59.  
  60. OrnOpen
  61.     move.l    #paramblocksize,d0    ; Create a pointer to a parameter
  62.     _NewPtr                ;   block.
  63.     bne.s    error1            ; If it failed, beep
  64.     move.l    a0,a1            ; make a copy of the pointer.
  65.  
  66.     clr.l    ioCompletion(a0)    ; no completion routine
  67.     move.w    #modemPort,ioRefNum(a0)    ; use the modem port
  68.     move.w    #SetBrk,csCode(a0)    ; secret code for the start break
  69.     _Control            ;  control call.
  70.     tst.w    d0            ; Was there an error?
  71.     bne.s    error2            ; If so, release memory and beep
  72.  
  73.     move.l    #numticks,a0        ; we want to delay for "numticks".
  74.     _Delay
  75.  
  76.     move.l    a1,a0            ; restore the pointer to a0
  77.     move.w    #ClrBrk,csCode(a0)    ; secret code for the clear break
  78.     _Control            ;  control call.
  79.     tst.w    d0            ; Was there an error?
  80.     bne.s    error2            ; If so, release memory and beep
  81.  
  82.     _DisposPtr            ; If not, release memory and return
  83.     bra.s    done
  84.  
  85. error2    _DisposPtr
  86. error1    move.w    #15,-(sp)        ; if there was an error, beep.
  87.     _SysBeep
  88. done    rts
  89.  
  90.     end
  91.