home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
c-kermit
/
ck9asm.a
< prev
next >
Wrap
Text File
|
2020-01-01
|
2KB
|
95 lines
* ck9asm.a
* ========
* Assembler code to give Kermit access to OS9 service calls
* that were not supported by the C libraries when it was
* written prior to the release of OS-9 v2.4
*
* Author: unknown
* Date: unknown
*
* Version 2.4 now supports signal masking, setting and deleting
* alarms, but still does not provide access to the I$SetStt SS_Break
* SCF driver function which causes a BREAK to be sent.
*
* As a consequence, and to avoid changing code that handles alarms
* the entire module has been retained.
*
* 27/06/1998 - Change by Martin Gregorie, gregorie@logica.com
*
* With Ckermit V193 the data area has expanded to
* more than 64K. Consequently this module has been
* changed so error exit paths use 32 bit offsets to
* set the errno global.
*
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 #errno,d2
move.l d1,0(a6,d2.l)
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 #errno,d2
move.l d0,0(a6,d2.l)
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