A2osX/BIN/UNAME.S.txt
2020-12-15 14:23:22 +01:00

270 lines
4.9 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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