NEW
  AUTO 3,1
				.LIST OFF
				.OP	65C02
				.OR	$2000
				.TF bin/kill
*--------------------------------------
				.INB inc/macros.i
				.INB inc/a2osx.i
*--------------------------------------
* Zero Page Segment, up to 32 bytes
*--------------------------------------
				.DUMMY
				.OR ZPBIN
ZS.START
ZPTmpPtr		.BS 2
ZS.END			.ED
*--------------------------------------
*			File Header (16 Bytes)
*--------------------------------------
CS.START		cld
				jmp (.1,x)
				.DA #$61				6502,Level 1 (65c02)
				.DA #1					BIN Layout Version 1
				.DA #0					S.PS.F
				.DA #0
				.DA CS.END-CS.START		Code Length To Relocate
				.DA DS.END-DS.START		Data Segment to Allocate
				.DA #16					Stack Size
				.DA #ZS.END-ZS.START	Zero Page Size
				.DA 0
*--------------------------------------
.1				.DA CS.INIT
				.DA CS.RUN
				.DA CS.DOEVENT
				.DA	CS.QUIT
L.MSG.USAGE		.DA MSG.USAGE
L.SSCANF.PID	.DA SSCANF.PID
				.DA 0
*--------------------------------------
CS.INIT			clc
				rts
*--------------------------------------
CS.RUN			ldy #S.PS.ARGC
				lda (pPS),y
				beq .9

				lda #1
				>STA.G Signal
.1				>INC.G ArgIndex
				>SYSCALL ArgV
				bcs .9
				>STYA ZPTmpPtr
				lda (ZPTmpPtr)
				cmp #'-'
				bne .2

				ldy #1
				lda (ZPTmpPtr),y
				beq .9

				cmp #'0'
				bcc .9
				cmp #'9'+1
				bcs .9
				and #$0F
				>STA.G Signal
				bra .1

.9				>LDYA L.MSG.USAGE
				>SYSCALL PutS

				lda #E.SYN
				sec
				rts

.2				>PUSHW ZPTmpPtr
				>PUSHW L.SSCANF.PID
				>PUSHEA.G PID
				>PUSHBI 2				1 Ptr
				>SYSCALL SScanF
				bcs .9

				>PUSHB.G PID
				>PUSHB.G Signal
				>SYSCALL Kill
				bcs .99
				lda #0
				sec
.99				rts
*--------------------------------------
CS.DOEVENT		sec						do not discard TIMER event
				rts
*--------------------------------------
CS.QUIT			clc
				rts
*--------------------------------------
CS.END
MSG.USAGE		.CS "Usage : KILL <signal> PID\r\n"
				.CS " -0 : No Signal\r\n"
				.CS " -1 : SIGQUIT\r\n"
				.CZ " -2 : SIGKILL\r\n"
SSCANF.PID		.CZ "%d"
*--------------------------------------
				.DUMMY
				.OR 0
DS.START
ArgIndex		.BS 1
Signal			.BS 1
PID				.BS 1
DS.END
				.ED
*--------------------------------------
MAN
SAVE usr/src/bin/kill.s
ASM
