NEW
  AUTO 3,1
				.LIST OFF
				.OP	65C02
				.OR	$2000
				.TF bin/who
*--------------------------------------
				.INB inc/macros.i
				.INB inc/io.i
				.INB inc/mli.i
				.INB inc/a2osx.i
				.INB inc/kernel.i
*--------------------------------------
				.DUMMY
				.OR ZPBIN
ZS.START
SessionID		.BS 1
hSession		.BS 1
ZPSessionPtr	.BS 2
ZPFDPtr			.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
				.DA CS.END-CS.START		Code Size (without Constants)
				.DA DS.END-DS.START		Data SegmentSize
				.DA #64					Stack Size
				.DA #ZS.END-ZS.START	Zero Page Size
				.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1				.DA CS.INIT
				.DA CS.RUN
				.DA CS.EVENT		
				.DA	CS.QUIT
L.MSG0			.DA MSG0
L.MSG1			.DA MSG1
				.DA 0
*--------------------------------------
CS.INIT			clc
				rts
*--------------------------------------
CS.RUN			>LDYA L.MSG0
				>SYSCALL PutS

				ldx #1
				stx SessionID

.1				lda USRs.hSID-1,x
				beq .7

				>SYSCALL GetStkObj
				>STYA ZPSessionPtr
				stx hSession

				>PUSHW L.MSG1			format
				>PUSHB SessionID		1 byte		SID

				ldx SessionID
				lda USRs.hSID-1,x
				>PUSHA					1 byte		hSession
				
				>PUSHB (ZPSessionPtr)	1 byte		PRIVILEGE

				ldy #S.SESSION.UID
				>PUSHB (ZPSessionPtr),y	1 byte		UID

				iny						#S.SESSION.UID
				>PUSHB (ZPSessionPtr),y	1 byte		GID

				lda ZPSessionPtr
				clc
				adc #S.SESSION.NAME
				tay
				lda ZPSessionPtr+1
				adc /S.SESSION.NAME
				>PUSHYA					2 bytes		NAME

				jsr CS.RUN.GetDevName	3 bytes		hFD DEV

				>PUSHBI 10				total = 10 ... bytes

				>SYSCALL PrintF

				lda hSession
				>SYSCALL FreeMem
				
.7				inc SessionID
				ldx SessionID
				cpx #K.USR.MAX+1
				bcc .1

.8				lda #0					tell TSKMGR that all done ok, but 
				sec						we do not want to stay in memory
.9				rts
*--------------------------------------
CS.RUN.GetDevName
				lda USRs.hFile-1,x
				>PUSHA
				tax
				lda FILEs.hName-1,x
				bne .1
				
				lda FILEs.hFD-1,x
				tay
				ldx FILEs.hFD-1,y
				ldy FDs.pLO-1,x
				lda FDs.pHI-1,x
				>STYA ZPFDPtr
				
				lda ZPFDPtr
				clc
				adc #S.FD.DEV
				tay
				lda ZPFDPtr+1
				adc /S.FD.DEV
				>PUSHYA					

				rts
				
.1				>SYSCALL GetMemPtr
				>PUSHYA					

				rts
*--------------------------------------
CS.EVENT		sec
				rts
*--------------------------------------
CS.QUIT			clc
				rts
*--------------------------------------
CS.END
MSG0			.CZ "SID hSD Privilege UID GID Name             hFD Dev"
MSG1			.CZ "%3d %3d %b  %3d %3d %16s %3d %s\r\n"
*--------------------------------------
				.DUMMY
				.OR 0
DS.START
DS.END			.ED
*--------------------------------------
MAN
SAVE usr/src/bin/who.s
ASM
