NEW
PREFIX
AUTO 4,1
				.LIST OFF
				.OP	65C02
				.OR	$2000
				.TF BIN/LSDEV
*--------------------------------------
				.INB INC/MACROS.I
				.INB INC/MLI.I
				.INB INC/A2OSX.I
				.INB INC/KERNEL.I
*--------------------------------------
				.DUMMY
				.OR ZPBIN
ZS.START
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					S.PS.F.EVENT
				.DA #0
				.DA CS.END-CS.START		Code Size (without Constants)
				.DA DS.END-DS.START		Data SegmentSize
				.DA #16					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
L.MSG2.ERR		.DA MSG2.ERR
L.MSG2			.DA MSG2
L.MSG2.C		.DA MSG2.C
L.MSG2.B		.DA MSG2.B
L.MSG3			.DA MSG3
L.MSG4			.DA MSG4
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			lda #1
				>STA.G Table.Index

				jsr DumpDev
				bcs .9
				
				lda #2
				>STA.G Table.Index
				
				jsr DumpNod
				bcs .9
				
.8				lda #0					tell TSKMGR that all done ok, but 
				sec						we do not want to stay in memory
.9				rts
*--------------------------------------
DumpDev			>LDYA L.MSG0
				>SYSCALL puts

				>LDA.G Table.Index
				
.1				tax
				lda Dev.Table-1,x
				sta ZPFDPtr
				lda Dev.Table,x
				sta ZPFDPtr+1
				beq .8
				
				jsr DumpDevFD
				bcs .9

				>PUSHEA.G DEV.DIB
				>LDA.G Table.Index
				>SYSCALL GetDevStatus
				bcc .6
				
				>PUSHA
				>PUSHBI 1
				>LDYA L.MSG2.ERR
				>SYSCALL printf
				
				bcs .9
				bra .7
				
.6				jsr DumpDevDIB

.7				>INC.G Table.Index
				>INC.G Table.Index
				cmp #K.DEV.MAX*2+1
				bne .1

.8				clc
.9				rts
*--------------------------------------
DumpDevFD		ldy #S.FD.DEV.DRVPTR+1
				>PUSHB (ZPFDPtr),y

				dey
				>PUSHB (ZPFDPtr),y
				
				lda ZPFDPtr
				clc
				adc #S.FD.DEV
				tay
				lda ZPFDPtr+1
				adc /S.FD.DEV
				
				>PUSHYA
				
				>PUSHB (ZPFDPtr)		S.FD.T	

				>PUSHB.G Table.Index
				
				>PUSHBI 6
				>LDYA L.MSG1
				>SYSCALL printf
				rts
*--------------------------------------
DumpDevDIB		>PUSHB.G DEV.DIB+S.DIB.VERSION+1
				>PUSHB.G DEV.DIB+S.DIB.VERSION
				
				>PUSHEA.G DEV.DIB+S.DIB.IDS
				
				>PUSHB.G DEV.DIB+S.DIB.ST
				>PUSHB.G DEV.DIB+S.DIB.T
				
				>LDA.G DEV.DIB+S.DIB.S

				ldy #DEV.SFLAGS+7
				ldx #7
				
.1				lsr
				pha
				lda #'-'
				bcc .2
				
				lda MSG.SFLAGS,x
				
.2				sta (pData),y
				pla
				dey
				dex
				bpl .1
				
				>PUSHEA.G DEV.SFLAGS
				>PUSHBI 8
				>LDYA L.MSG2
				>SYSCALL printf
				bcs .9
				
				>LDA.G DEV.DIB+S.DIB.S
				bpl .4					char device...
				
				>PUSHBI 0
				
				>PUSHB.G DEV.DIB+S.DIB.SIZE+2
				>PUSHB.G DEV.DIB+S.DIB.SIZE+1
				>PUSHB.G DEV.DIB+S.DIB.SIZE
				
				>PUSHBI 4
				>LDYA L.MSG2.B
				bra .8
				
.4				>PUSHBI 0
				>LDYA L.MSG2.C
				
.8				>SYSCALL printf
.9				rts
*--------------------------------------
DumpNod			>LDYA L.MSG3
				>SYSCALL puts

				>LDA.G Table.Index
				
.1				tax

				lda Nod.Table.hPath-2,x
				beq .7
				>SYSCALL GetMemPtr
				>PUSHYA
				
				>LDA.G Table.Index
				tax
				lda Nod.Table.hFD-2,x
				>SYSCALL GetMemPtr
				>STYA ZPFDPtr
				
				lda (ZPFDPtr)
				tax
				>PUSHW L.FD.T,x
				
				>LDA.G Table.Index
				tax
				lda Nod.Table.hFD-2,x
				>PUSHA
				txa
				>PUSHA
				
				>PUSHBI 6
				>LDYA L.MSG4
				>SYSCALL printf
				
.7				>INC.G Table.Index
				cmp #K.NOD.MAX+2
				bne .1

				clc
.9				rts
*--------------------------------------
CS.EVENT		sec
				rts
*--------------------------------------
CS.QUIT			clc
				rts
*--------------------------------------
CS.END
MSG0			.AZ "hDev Tp Name         Addr. Status   Typ/Sub IDString         Version Size (BLK)"
MSG1			.AZ "%03d  %h %12s $%H "
MSG2.ERR		.AZ "Device Error : $%h\r\n"
MSG2			.AZ "%s $%h/$%h %16S %03d.%03d "
MSG2.B			.AZ "%10u\r\n"
MSG2.C			.AZ "n/a\r\n"
MSG.SFLAGS		.AS "BWRLNEIO" 
*--------------------------------------
MSG3			.AZ "hNod hFD Type  Filepath"
MSG4			.AZ "%03d  $%h %5s %s\r\n"
FD.T.REG		.AZ "REG"
FD.T.DIR		.AZ "DIR"
FD.T.CDEV		.AZ "CDEV"
FD.T.BDEV		.AZ "BDEV"
FD.T.LNK		.AZ "LNK"
FD.T.DSOCK		.AZ "DSOCK"
FD.T.SSOCK		.AZ "SSOCK"
FD.T.PIPE		.AZ "PIPE"
*--------------------------------------
				.DUMMY
				.OR 0
DS.START
Table.Index		.BS 1
DEV.DIB			.BS S.DIB
DEV.SFLAGS		.BS 9
DS.END
				.ED
*--------------------------------------
MAN
SAVE USR/SRC/BIN/LSDEV.S
ASM
