NEW
  AUTO 3,1
				.LIST OFF
				.OP	65C02
				.OR	$2000
				.TF bin/uname
*--------------------------------------
				.INB inc/macros.i
				.INB inc/a2osx.i
				.INB inc/mli.e.i
*--------------------------------------
				.DUMMY
				.OR ZPBIN
ZS.START
ZPPtr1			.BS 2
ZPPtr2			.BS 2

Index			.BS 1
Count			.BS 1

bHostName		.BS 1
bMachineType	.BS 1
bCPUType		.BS 1
bCPUSpeed		.BS 1
bAltCPU			.BS 1
bKernelVersion	.BS 1
bKernelMode		.BS 1
bKernelClk		.BS 1
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 #32					Stack Size
				.DA #ZS.END-ZS.START	Zero Page Size
				.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1				.DA CS.INIT
				.DA CS.RUN
				.DA CS.DOEVENT
				.DA	CS.QUIT
L.MSG.USAGE		.DA MSG.USAGE
L.MSG.CRLF		.DA MSG.CRLF
L.TYPES			.DA TYPE.UNKNOWN
				.DA TYPE.IIe
				.DA TYPE.IIc
				.DA TYPE.IIgs
L.CPUS			.DA CPU.65C02
				.DA CPU.65R02
				.DA CPU.65816
L.CPU.SPEED		.DA CPU.SPEED
L.KERNEL.VER	.DA KERNEL.VER
L.KERNEL.MODES	.DA	KERNEL.POLLING
				.DA	KERNEL.IRQ
				.DA	KERNEL.PREEMPT
				.DA 0
*--------------------------------------
CS.INIT			clc
				rts
*--------------------------------------
CS.RUN			ldy #S.PS.ARGC
				lda (pPS),y
				beq .8

.1				inc Index
				lda Index
				>SYSCALL ArgV
				bcs CS.RUN.PRINT

				>STYA ZPPtr1
				lda (ZPPtr1)
				cmp #'-'
				bne .99

				ldy #1 
				lda (ZPPtr1),y
				beq .99

				jsr CS.RUN.CheckOpt
				bcc .1
			
.99				>PUSHW L.MSG.USAGE
				>PUSHBI 0
				>SYSCALL PrintF

				lda #E.SYN
				sec
				rts

.8				lda #$ff
				sta bKernelVersion
				sta bKernelMode
				sta bMachineType
				sta bCPUType
				sta bCPUSpeed
*--------------------------------------
CS.RUN.PRINT	bit bHostName
				bpl .1
				
				

.1				bit bMachineType
				bpl .2
				
				lda A2osX.HWType
				asl
				tax
				
				>LDYA L.TYPES,x
				jsr CS.RUN.PRINTYA
				
.2				bit bCPUType
				bpl .3
				
				lda A2osX.CPUTYPE
				
				asl
				and #$0F
				tax
				
				>LDYA L.CPUS-2,x
				jsr CS.RUN.PRINTYA
				
.3				bit bCPUSpeed
				bpl .4
	
				>PUSHW L.CPU.SPEED
				>PUSHW A2osX.CPUSPEED
				>PUSHBI 2
				jsr CS.RUN.PRINTF

.4				bit bAltCPU
				bpl .5
				
				
				
				

.5				bit bKernelVersion
				bpl .6
				
				>PUSHW L.KERNEL.VER
				>PUSHW A2osX.KVER
				>PUSHBI 2
				jsr CS.RUN.PRINTF

.6				bit bKernelMode
				bpl .7
				
				ldx #0
				bit A2osX.IRQMode
				bpl .60

				inx
				inx
				bit A2osX.F
				bvc .60

				inx
				inx
				
.60				>LDYA L.KERNEL.MODES,x		
				jsr CS.RUN.PRINTYA
				
.7				bit bKernelClk
				bpl .8
				
				
.8				>PUSHW L.MSG.CRLF
				>PUSHBI 0
				>SYSCALL PrintF
				

				lda #0
				sec
				rts
*--------------------------------------
CS.RUN.PRINTYA	>PUSHYA
				>PUSHBI 0
				
CS.RUN.PRINTF	lda Count
				beq .1
				
				lda #C.SPACE
				>SYSCALL PutChar
				
.1				>SYSCALL PrintF

				inc Count

CS.DOEVENT		sec
				rts
*--------------------------------------
CS.QUIT			
.8				clc
				rts
*--------------------------------------
CS.RUN.CheckOpt	ldy #1 
				lda (ZPPtr1),y

				ldx #OptionVars-OptionList-1

.2				cmp OptionList,x
				beq .3

				dex
				bpl .2

				sec
				rts

.3				ldy OptionVars,x
				ldx #$ff
				stx 0,y
				clc
				rts
*--------------------------------------
CS.END
*--------------------------------------
OptionList		.AS "HhMmCcSsAaVvKkZz"
OptionVars		.DA #bHostName,#bHostName
				.DA #bMachineType,#bMachineType
				.DA #bCPUType,#bCPUType
				.DA #bCPUSpeed,#bCPUSpeed
				.DA #bAltCPU,#bAltCPU
				.DA #bKernelVersion,#bKernelVersion
				.DA #bKernelMode,#bKernelMode
				.DA #bKernelClk,#bKernelClk
*--------------------------------------
MSG.USAGE		.AS "Usage : UNAME\r\n"
				.AS "   -H : Hostname\r\n"
				.AS "   -M : Machine Type/SubType\r\n"
				.AS "   -C : CPU Type\r\n"
				.AS "   -S : CPU Speed\r\n"
				.AS "   -A : Alternate CPU\r\n"
				.AS "   -V : Kernel Version\r\n"
				.AS "   -K : Kernel Mode\r\n"
				.AS "   -Z : Kernel Timing\r\n"
MSG.CRLF		.AZ "\r\n"
TYPE.UNKNOWN	.AZ "Unknown_HW"
TYPE.IIe		.AZ "Apple//e"
TYPE.IIc		.AZ "Apple//c"
TYPE.IIgs		.AZ "AppleIIgs"
CPU.65C02		.AZ "65c02"
CPU.65R02		.AZ "65r02"
CPU.65816		.AZ "65816"
CPU.SPEED		.AZ "%d.%02dmhz"
KERNEL.VER		.AZ "A2osX_%d.%02d"
KERNEL.POLLING	.AZ "Polling_Mode"
KERNEL.IRQ		.AZ "IRQ_Mode"
KERNEL.PREEMPT	.AZ "Preemptive_Mode"
*--------------------------------------
				.DUMMY
				.OR 0
DS.START
DS.END			.ED
*--------------------------------------
MAN
SAVE usr/src/bin/uname.s
ASM
