; 0001 module zap (main = zap)= ; 0002 begin ; 0003 ; 0004 ! Performs the $forcex system service on a process. This is about ; 0005 ! the same as ^Y. The PID is obtained via GET_PID. ; 0006 ! ; 0007 ! R.J. FitzPatrick July 1979 ; 0008 ! Smithsonian Astrophysical Observatory, Cambridge MA ; 0009 ! ; 0010 ; 0011 library 'SYS$LIBRARY:STARLET.L32'; ; 0012 ; 0013 own ; 0014 pid: long; ; 0015 ; 0016 external routine ; 0017 get_pid; ; 0018 ; 0019 global routine zap (start_add, cli_callback) = ; 0020 begin ; 0021 ; 0022 local ; 0023 status; ; 0024 ; 0025 status = get_pid (.cli_callback, pid) ; ; 0026 if .status neq ss$_normal then return .status; ; 0027 if .pid eql 0 then return ss$_nonexpr; ; 0028 $forcex( pidadr=pid, code=ss$_abort ) ; 0029 end; .TITLE ZAP .PSECT $OWN$,NOEXE,2 PID: .BLKB 4 .EXTRN GET_PID, SYS$FORCEX .PSECT $CODE$,NOWRT,2 .ENTRY ZAP, ^M ;ZAP, Save R2 ; 0019 MOVAB W^PID, R2 ;PID, R2 ; PUSHL R2 ;R2 ; 0025 PUSHL 8(AP) ;CLI_CALLBACK ; CALLS #2, W^GET_PID ;#2, GET_PID ; CMPL R0, #1 ;STATUS, #1 ; 0026 BNEQ 2$ ;2$ ; TSTL (R2) ;PID ; 0027 BNEQ 1$ ;1$ ; MOVZWL #2280, R0 ;#2280, R0 ; RET ; ; 1$: PUSHL #44 ;#44 ; 0028 CLRL -(SP) ;-(SP) ; PUSHL R2 ;R2 ; CALLS #3, @#SYS$FORCEX ;#3, @#SYS$FORCEX ; 2$: RET ; ; 0019 ; Routine Size: 46 bytes ; 0030 end ; 0031 eludom ; PSECT SUMMARY ; ; Name Bytes Attributes ; ; $OWN$ 4 WRT, RD ,NOEXE,NOSHR, LCL, REL, CON,NOPIC,ALIGN(2) ; $CODE$ 46 NOWRT, RD , EXE,NOSHR, LCL, REL, CON,NOPIC,ALIGN(2) ; LIBRARY STATISTICS ; ; -------- Symbols -------- Blocks ; File Total Loaded Percent Read ; ; DBA0:[SYSLIB]STARLET.L32;2 2688 4 0 110 ; Compilation Complete .END ZAP