A2osX/BIN/UNAME.S.txt
2022-12-23 17:50:50 +01:00

426 lines
7.3 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
hFILE .BS 1
bHostName .BS 1
bMachineType .BS 1
bCPUType .BS 1
bCPUSpeed .BS 1
bAltCPU .BS 1
bKernelVersion .BS 1
bKernelBuild .BS 1
bKernelMode .BS 1
bKernelClk .BS 1
bFSID .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.ETCHOSTNAME .DA ETCHOSTNAME
L.ETCVERSION .DA ETCVERSION
L.TYPES .DA TYPE.UNKNOWN
.DA TYPE.IIe
.DA TYPE.IIc
.DA TYPE.IIgs
L.SUBT.ROM .DA SUBT.ROM
L.SUBT.IIE .DA SUBT.ENH
.DA SUBT.LCCARD
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
L.FSID .DA FSID.PRODOS
.DA FSID.FX
.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 >LDYA L.MSG.USAGE
>SYSCALL PutS
lda #E.SYN
sec
rts
.8 lda #$ff
sta bKernelVersion
sta bKernelBuild
sta bKernelMode
sta bMachineType
sta bCPUType
sta bCPUSpeed
sta bFSID
*--------------------------------------
CS.RUN.PRINT bit bHostName
bpl .1
jsr CS.RUN.GetHostName
bcs .1
>LDYA pData
jsr CS.RUN.PRINTYA
.1 bit bMachineType
bpl .2
jsr CS.RUN.TYPESUBT
.2 bit bCPUType
bpl .3
jsr CS.RUN.CPUType
.3 bit bCPUSpeed
bpl .4
jsr CS.RUN.CPUSpeed
.4 bit bAltCPU
bpl .5
.5 bit bKernelVersion
bpl .6
jsr CS.RUN.KVER
.6 bit bKernelBuild
bpl .7
jsr CS.RUN.GetBuild
bcs .7
>LDYA pData
jsr CS.RUN.PRINTYA
.7 bit bKernelMode
bpl .8
jsr CS.RUN.KMode
.8 bit bKernelClk
bpl .9
.9 bit bFSID
bpl .10
jsr CS.RUN.FSID
.10 >PUSHW L.MSG.CRLF
>PUSHBI 0
>SYSCALL PrintF
lda #0
sec
rts
*--------------------------------------
CS.RUN.GetHostName
>LDYA L.ETCHOSTNAME
bra CS.RUN.GetFile
CS.RUN.GetBuild >LDYA L.ETCVERSION
CS.RUN.GetFile stz hFILE
>PUSHYA
>PUSHBI O.RDONLY
>PUSHBI 0
sta (pData)
>PUSHWZ
>SYSCALL FOpen
bcs .9
sta hFILE
>LEA.G FGetSBuf
>STYA ZPPtr1
.1 >PUSHB hFILE
>PUSHW ZPPtr1
>PUSHWI 64
>SYSCALL FGetS
bcs .8
lda (ZPPtr1)
beq .1
cmp #'#'
beq .1
ldy #$ff
.2 iny
lda (ZPPtr1),y
sta (pData),y
bne .2
.8 clc
.9 php
pha
lda hFILE
beq .90
>SYSCALL FClose
.90 pla
plp
rts
*--------------------------------------
CS.RUN.TYPESUBT lda A2osX.HWType
asl
tax
>LDYA L.TYPES,x
jsr CS.RUN.PRINTYA
lda A2osX.HWType
beq .8 Unknown
cmp #A2osX.HWType.IIc
bcc .1
>PUSHW L.SUBT.ROM //c & IIgs
>PUSHB A2osX.HWSubT
>PUSHBI 1
>SYSCALL PrintF
rts
.1 lda A2osX.HWSubT //e
beq .8
asl
tax
>PUSHW L.SUBT.IIE-2,x
>PUSHBI 0
>SYSCALL PrintF
.8 rts
*--------------------------------------
CS.RUN.FSID ldx #0
bit A2osX.FSID
bpl .1
inx
inx
.1 >LDYA L.FSID,x
jmp CS.RUN.PRINTYA
*--------------------------------------
CS.RUN.KVER >PUSHW L.KERNEL.VER
>PUSHW A2osX.KVER
>PUSHBI 2
jmp CS.RUN.PRINTF
*--------------------------------------
CS.RUN.KMode ldx #0
bit A2osX.IRQMode
bpl .1
inx
inx
bit A2osX.F
bvc .1
inx
inx
.1 >LDYA L.KERNEL.MODES,x
jmp CS.RUN.PRINTYA
*--------------------------------------
CS.RUN.CPUSpeed >PUSHW L.CPU.SPEED
>PUSHW A2osX.CPUSPEED
>PUSHBI 2
jmp CS.RUN.PRINTF
*--------------------------------------
CS.RUN.CPUType lda A2osX.CPUTYPE
asl
and #$0F
tax
>LDYA L.CPUS-2,x
*--------------------------------------
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 "HhMmCcSsAaVvBbKkZzXx"
OptionVars .DA #bHostName,#bHostName
.DA #bMachineType,#bMachineType
.DA #bCPUType,#bCPUType
.DA #bCPUSpeed,#bCPUSpeed
.DA #bAltCPU,#bAltCPU
.DA #bKernelVersion,#bKernelVersion
.DA #bKernelBuild,#bKernelBuild
.DA #bKernelMode,#bKernelMode
.DA #bKernelClk,#bKernelClk
.DA #bFSID,#bFSID
*--------------------------------------
MSG.USAGE .CS "Usage : UNAME\r\n"
.CS " -H : Hostname\r\n"
.CS " -M : Machine Type/SubType\r\n"
.CS " -C : CPU Type\r\n"
.CS " -S : CPU Speed\r\n"
.CS " -A : Alternate CPU\r\n"
.CS " -V : Kernel Version\r\n"
.CS " -B : Kernel Build\r\n"
.CS " -K : Kernel Mode\r\n"
.CS " -Z : Kernel Timing\r\n"
.CS " -X : ProDOS | FX"
MSG.CRLF .CZ "\r\n"
*--------------------------------------
ETCHOSTNAME .AZ "${ROOT}etc/hostname"
ETCVERSION .AZ "${ROOT}etc/version"
*--------------------------------------
TYPE.UNKNOWN .AZ "Unknown_HW"
TYPE.IIe .AZ "Apple//e"
TYPE.IIc .AZ "Apple//c"
TYPE.IIgs .AZ "AppleIIgs"
SUBT.ROM .AZ "_ROM%h"
SUBT.ENH .AZ "_Enh"
SUBT.LCCARD .AZ "_LCCard"
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"
KERNEL.50 .AZ "50hz"
KERNEL.60 .AZ "60hz"
FSID.PRODOS .AZ "ProDOS"
FSID.FX .AZ "FX"
*--------------------------------------
.DUMMY
.OR 0
DS.START .BS 65
FGetSBuf .BS 65
DS.END .ED
*--------------------------------------
MAN
SAVE usr/src/bin/uname.s
ASM