NEW
  AUTO 3,1
				.LIST OFF
				.OP	65C02
				.OR	$2000
				.TF bin/lsof
*--------------------------------------
				.INB inc/macros.i
				.INB inc/mli.i
				.INB inc/a2osx.i
				.INB inc/kernel.i
*--------------------------------------
				.DUMMY
				.OR ZPBIN
ZS.START
ZPFDPtr			.BS 2
FILE.ID			.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		CS
				.DA DS.END-DS.START		DS
				.DA #16					SS
				.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.MSG.HEADER	.DA MSG.HEADER
L.MSG.BODY		.DA MSG.REGDIR
				.DA MSG.SPECIAL
L.FD.T			.DA FD.T.REG
				.DA FD.T.DIR
				.DA FD.T.CDEV
				.DA FD.T.BDEV
				.DA FD.T.LNK
				.DA FD.T.DSOCK
				.DA FD.T.SSOCK
				.DA FD.T.PIPE
				.DA 0
*--------------------------------------
CS.INIT			clc
				rts
*--------------------------------------
CS.RUN			>LDYA L.MSG.HEADER
				>SYSCALL PutS

				ldx #1

.1				stx FILE.ID

				lda hFDs-1,x
				beq .7

				>SYSCALL GetMemPtr
				>STYA ZPFDPtr

				ldx FILE.ID

				lda hFDs.oCnt-1,x
				beq .7

				ldy #0
				lda (ZPFDPtr)
				cmp #S.FD.T.DIR+1
				bcc .2

				iny
				iny

.2				>PUSHW L.MSG.BODY,y

				txa
				>PUSHA

				lda hFDs-1,x
				>PUSHA

				lda hFDs.oCnt-1,x
				>PUSHA

				lda (ZPFDPtr)
				tay
				>PUSHW L.FD.T,y
				
				jsr CS.RUN.GetName

				>PUSHYA

				>PUSHBI 7

				>SYSCALL PrintF

.7				ldx FILE.ID
				inx
				cpx #K.hFD.MAX+1
				bne .1

				lda #0
				sec
.9				rts
*--------------------------------------
CS.RUN.GetName	lda hFDs.hName-1,x
				bne .1

				lda ZPFDPtr
				clc
				adc #S.FD.DEV
				tay
				lda ZPFDPtr+1
				adc /S.FD.DEV

				rts

.1				>SYSCALL GetMemPtr

				rts
*--------------------------------------
CS.EVENT		sec
				rts
*--------------------------------------
CS.QUIT			clc
				rts
*--------------------------------------
CS.END
MSG.HEADER		.CZ "hFILE hFD Cnt Type Filepath"
MSG.REGDIR		.CZ "%3d   %3d %3d %4s %s\r\n"
MSG.SPECIAL		.CZ "%3d   %3d %3d %4s /dev/%s\r\n"
FD.T.REG		.CZ "REG"
FD.T.DIR		.CZ "DIR"
FD.T.CDEV		.CZ "CDEV"
FD.T.BDEV		.CZ "BDEV"
FD.T.LNK		.CZ "LNK"
FD.T.DSOCK		.CZ "DSCK"
FD.T.SSOCK		.CZ "SSCK"
FD.T.PIPE		.CZ "PIPE"
*--------------------------------------
				.DUMMY
				.OR 0
DS.START
DS.END  		.ED
*--------------------------------------
MAN
SAVE usr/src/bin/lsof.s
ASM
