    psect

sigmask:
        link a5,#$0000
        move.l d1,-(a7)
        move.l d0,d1
        moveq #0,d0
        os9 F$SigMask
        bcs.s sigerr
        moveq #0,d0
sigret
        move.l (a7)+,d1
        unlk a5
        rts
sigerr
        move.l d1,errno(a6)
        moveq #-1,d0
        bra.s sigret

remove_alarm:
        link a5,#$0000
        movem.l d1,-(a7)
        moveq.l #0,d0
        move.w  #A$Delete,d1
        os9     F$Alarm
        exg     d0,d1
        movem.l (a7)+,d1
        bcc.s   return_success
        bra.s   return_error

add_alarm:
        link a5,#$0000
        movem.l d1-d3,-(a7)
        move.l  d0,d3
        move.l  d1,d2
        moveq.l #0,d0
        move.w  #A$Set,d1
        lsl.l   #8,d3                   times 256
        bset.l  #31,d3                  1/256 seconds
        os9     F$Alarm
        exg     d0,d1
        movem.l (a7)+,d1-d3
        bcc.s   return_success

return_error
        move.l  d0,errno(a6)
        moveq   #-1,d0
        bra.s   ret
return_success
        moveq #0,d0
ret
        unlk a5
        rts

*int    send_break(path) int path;
* sends a break on path using the SS_break setstat call to the driver
* return 0 on success, -1 on error with appropriate errorcode in errno
send_break:
        link a5,#$0000
        movem.l d1,-(a7)
        move.w  #SS_Break,d1
        os9     I$SetStt
        exg     d0,d1
        movem.l (a7)+,d1
        bcc.s   return_success
        bra.s   return_error


    ends
