mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-15 22:30:13 +00:00
Kernel 0.92
This commit is contained in:
parent
d62a6b1a8e
commit
da6265c0cd
Binary file not shown.
@ -562,6 +562,6 @@ BasePath..1 lda (pData),y
|
|||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/BIN/X.FILEENUM.S
|
SAVE USR/SRC/BIN/X.FILEENUM.S
|
||||||
LOAD USR/SRC/BIN/BIN/LS.S
|
LOAD USR/SRC/BIN/LS.S
|
||||||
ASM
|
ASM
|
||||||
|
@ -84,6 +84,8 @@ E.OOM .EQ $FF Out Of Memory Error
|
|||||||
E.OOH .EQ $FE Out Of Handle Error
|
E.OOH .EQ $FE Out Of Handle Error
|
||||||
E.INVH .EQ $FD Invalid Handle
|
E.INVH .EQ $FD Invalid Handle
|
||||||
E.BUF .EQ $FC Buffer Overflow
|
E.BUF .EQ $FC Buffer Overflow
|
||||||
|
E.BADPATH .EQ $FB
|
||||||
|
E.BADARG .EQ $FA
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
E.NSP .EQ $DD No Such Process Error
|
E.NSP .EQ $DD No Such Process Error
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -109,21 +111,21 @@ C.ESC .EQ 27
|
|||||||
C.SPACE .EQ 32
|
C.SPACE .EQ 32
|
||||||
C.DEL .EQ 127
|
C.DEL .EQ 127
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
AF.LOCAL .EQ 0
|
AF.LOCAL .EQ 0
|
||||||
AF.INET .EQ 2
|
AF.INET .EQ 2
|
||||||
AF.APPLETALK .EQ 4
|
AF.APPLETALK .EQ 4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
O.RDONLY .EQ %00000001
|
O.RDONLY .EQ %00000001
|
||||||
O.WRONLY .EQ %00000010
|
O.WRONLY .EQ %00000010
|
||||||
O.RDWR .EQ %00000011
|
O.RDWR .EQ %00000011
|
||||||
O.TRUNC .EQ %00000100
|
O.TRUNC .EQ %00000100
|
||||||
O.APPEND .EQ %00001000
|
O.APPEND .EQ %00001000
|
||||||
O.TEXT .EQ %01000000
|
O.TEXT .EQ %01000000
|
||||||
O.CREATE .EQ %10000000
|
O.CREATE .EQ %10000000
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SEEK.SET .EQ $00
|
SEEK.SET .EQ $00
|
||||||
SEEK.CUR .EQ $02
|
SEEK.CUR .EQ $02
|
||||||
SEEK.END .EQ $04
|
SEEK.END .EQ $04
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* A2osX.SYSCALL Functions Indexes
|
* A2osX.SYSCALL Functions Indexes
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -204,7 +206,7 @@ SYS.StrMatch .EQ $7E
|
|||||||
SYS.StrLen .EQ $80
|
SYS.StrLen .EQ $80
|
||||||
SYS.StrCpy .EQ $82
|
SYS.StrCpy .EQ $82
|
||||||
SYS.StrCat .EQ $84
|
SYS.StrCat .EQ $84
|
||||||
* .EQ $86
|
* .EQ $86
|
||||||
SYS.StrUpr .EQ $88
|
SYS.StrUpr .EQ $88
|
||||||
SYS.StrLwr .EQ $8A
|
SYS.StrLwr .EQ $8A
|
||||||
SYS.StrCmp .EQ $8C
|
SYS.StrCmp .EQ $8C
|
||||||
|
@ -248,14 +248,14 @@ OApple+1,OApple+2,OApple+3 to switch between screens : Kernel Log, text, DHGR.
|
|||||||
| Name | Status | Comment | K.Ver |
|
| Name | Status | Comment | K.Ver |
|
||||||
| ---- | ------ | ------- | ------|
|
| ---- | ------ | ------- | ------|
|
||||||
| INSDRV | Working | | 0.92 |
|
| INSDRV | Working | | 0.92 |
|
||||||
| GETTY | Working | | 0.92 |
|
| GETTY | Working | -E : Exit on remote close | 0.92 |
|
||||||
| LOGIN | In Progress | no auth using /etc/passwd yet | 0.92 |
|
| LOGIN | In Progress | no auth using /etc/passwd yet | 0.92 |
|
||||||
| SHELL | Working | (See Internal Shell commands) | 0.92 |
|
| SHELL | Working | (See Internal Shell commands) | 0.92 |
|
||||||
| KCONFIG | Working | Kernel Configuration Utility | 0.92 |
|
| KCONFIG | Working | Kernel Configuration Utility | 0.92 |
|
||||||
| ---- | ------ | ------- | ----- |
|
| ---- | ------ | ------- | ----- |
|
||||||
| TCPIPD | Working | Socket API.ARP,IP,ICMP,UDP & TCP ok | 0.92 |
|
| TCPIPD | Working | ARP,IP,ICMP,UDP & TCP ok | 0.92 |
|
||||||
| DHCPCLNT| Working | rewritten to use new Socket API | 0.92 |
|
| DHCPCLNT| Working | rewritten to use new Socket API | 0.92 |
|
||||||
| TELNETD | In Progress | | 0.92 |
|
| TELNETD | Working | | 0.92 |
|
||||||
| HTTPD | In Progress | | 0.9 |
|
| HTTPD | In Progress | | 0.9 |
|
||||||
|
|
||||||
## Internal Shell commands:
|
## Internal Shell commands:
|
||||||
@ -288,7 +288,8 @@ OApple+1,OApple+2,OApple+3 to switch between screens : Kernel Log, text, DHGR.
|
|||||||
| | | [ int32 -le int32 ] |
|
| | | [ int32 -le int32 ] |
|
||||||
| | | [ int32 -gt int32 ] |
|
| | | [ int32 -gt int32 ] |
|
||||||
| | | [ int32 -ge int32 ] |
|
| | | [ int32 -ge int32 ] |
|
||||||
|
| SHIFT | Working | Remove $1 from cmd line |
|
||||||
|
| WHILE BREAK LOOP | Working | [ same as IF ] |
|
||||||
|
|
||||||
## Shell variables:
|
## Shell variables:
|
||||||
|
|
||||||
|
114
SBIN/GETTY.S.txt
114
SBIN/GETTY.S.txt
@ -12,6 +12,8 @@ AUTO 4,1
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TIMEOUT.MAX .EQ 100 10 sec.
|
TIMEOUT.MAX .EQ 100 10 sec.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
ZPPtr1 .EQ ZPBIN
|
||||||
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.START cld
|
CS.START cld
|
||||||
@ -23,7 +25,7 @@ CS.START cld
|
|||||||
.DA CS.END-CS.START CS
|
.DA CS.END-CS.START CS
|
||||||
.DA DS.END-DS.START DS
|
.DA DS.END-DS.START DS
|
||||||
.DA #64 SS
|
.DA #64 SS
|
||||||
.DA #0 ZP
|
.DA #2 ZP
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Relocation Table
|
* Relocation Table
|
||||||
@ -38,7 +40,6 @@ L.TELNETOPTS .DA TELNETOPTS
|
|||||||
L.TELNETOPT.TTYPE .DA TELNETOPT.TTYPE
|
L.TELNETOPT.TTYPE .DA TELNETOPT.TTYPE
|
||||||
L.TELNETOPT.LMODE .DA TELNETOPT.LMODE
|
L.TELNETOPT.LMODE .DA TELNETOPT.LMODE
|
||||||
L.ENV.TERM .DA ENV.TERM
|
L.ENV.TERM .DA ENV.TERM
|
||||||
L.MSG.DEBUG .DA MSG.DEBUG
|
|
||||||
.DA 0 End Of Reloc Table
|
.DA 0 End Of Reloc Table
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT clc
|
CS.INIT clc
|
||||||
@ -48,16 +49,52 @@ CS.RUN ldy #S.PS.ARGC
|
|||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
cmp #3
|
cmp #3
|
||||||
|
|
||||||
bcc .90
|
bcc .9
|
||||||
|
|
||||||
|
.1 >INC.G ArgIndex
|
||||||
|
>SYSCALL ArgV
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
>STYA ZPPtr1
|
||||||
|
|
||||||
|
jsr CkeckOption
|
||||||
|
bcs .9
|
||||||
|
beq .1 valid option, check next arg
|
||||||
|
|
||||||
|
>LDA.G ArgDev
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
>LDA.G ArgIndex
|
||||||
|
>STA.G ArgDev
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.2 >LDA.G ArgProg
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
>LDA.G ArgIndex
|
||||||
|
>STA.G ArgProg
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.9 >PUSHBI 0
|
||||||
|
>LDYA L.MSG.USAGE
|
||||||
|
>SYSCALL printf
|
||||||
|
lda #E.SYN
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
|
|
||||||
|
.8 >LDA.G ArgDev
|
||||||
|
beq .9
|
||||||
|
>LDA.G ArgProg
|
||||||
|
beq .9
|
||||||
|
|
||||||
>PUSHWI 0 auxtype
|
>PUSHWI 0 auxtype
|
||||||
>PUSHBI 0 type
|
>PUSHBI 0 type
|
||||||
>PUSHBI O.RDWR
|
>PUSHBI O.RDWR
|
||||||
lda #1
|
>LDA.G ArgDev
|
||||||
>SYSCALL ArgV get /dev/xxx
|
>SYSCALL ArgV
|
||||||
|
|
||||||
>SYSCALL fopen
|
>SYSCALL fopen
|
||||||
bcs .9
|
bcs .99
|
||||||
|
|
||||||
ldy #S.PS.hStdIn
|
ldy #S.PS.hStdIn
|
||||||
sta (pPs),y
|
sta (pPs),y
|
||||||
@ -66,15 +103,7 @@ CS.RUN ldy #S.PS.ARGC
|
|||||||
iny #S.PS.hStdErr
|
iny #S.PS.hStdErr
|
||||||
sta (pPs),y
|
sta (pPs),y
|
||||||
|
|
||||||
>STA.G hDEV
|
>STA.G hFILE
|
||||||
bra CS.RUN.LOOP0
|
|
||||||
|
|
||||||
.90 >PUSHBI 0
|
|
||||||
>LDYA L.MSG.USAGE
|
|
||||||
>SYSCALL printf
|
|
||||||
lda #E.SYN
|
|
||||||
sec
|
|
||||||
.9 rts
|
|
||||||
|
|
||||||
CS.RUN.LOOP0 >LDYA L.ENV.TERM
|
CS.RUN.LOOP0 >LDYA L.ENV.TERM
|
||||||
>SYSCALL UnSetEnv
|
>SYSCALL UnSetEnv
|
||||||
@ -119,16 +148,20 @@ CS.RUN.LOOP1 >SLEEP
|
|||||||
|
|
||||||
.2 >PUSHBI S.PS.F.DUPENV+S.PS.F.HOLD
|
.2 >PUSHBI S.PS.F.DUPENV+S.PS.F.HOLD
|
||||||
|
|
||||||
lda #2
|
>LDA.G ArgProg
|
||||||
>SYSCALL ArgV
|
>SYSCALL ArgV
|
||||||
>SYSCALL ExecV
|
>SYSCALL ExecV
|
||||||
bcs CS.RUN.9
|
bcs CS.RUN.9
|
||||||
|
|
||||||
>SLEEP
|
>SLEEP
|
||||||
|
|
||||||
|
>LDA.G bExitOnClose
|
||||||
|
bmi .8
|
||||||
|
|
||||||
jmp CS.RUN.LOOP0
|
jmp CS.RUN.LOOP0
|
||||||
|
|
||||||
clc
|
.8 lda #0
|
||||||
|
sec
|
||||||
CS.RUN.9 rts
|
CS.RUN.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.IACMODE >SLEEP Wait for IAC CMD (or SB)
|
CS.RUN.IACMODE >SLEEP Wait for IAC CMD (or SB)
|
||||||
@ -222,7 +255,7 @@ CS.RUN.IAC.SB
|
|||||||
>SYSCALL SetEnv
|
>SYSCALL SetEnv
|
||||||
|
|
||||||
.8 jmp CS.RUN.LOOP1
|
.8 jmp CS.RUN.LOOP1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.DOEVENT lda (pEvent)
|
CS.DOEVENT lda (pEvent)
|
||||||
bpl .9 is it a TIMER event?
|
bpl .9 is it a TIMER event?
|
||||||
|
|
||||||
@ -235,7 +268,7 @@ CS.DOEVENT lda (pEvent)
|
|||||||
.9 sec do not discard TIMER event
|
.9 sec do not discard TIMER event
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT >LDA.G hDEV
|
CS.QUIT >LDA.G hFILE
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
>SYSCALL fclose
|
>SYSCALL fclose
|
||||||
@ -253,13 +286,41 @@ Wait.TimeOut sec
|
|||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CkeckOption lda (ZPPtr1)
|
||||||
|
cmp #'-'
|
||||||
|
bne .8
|
||||||
|
|
||||||
|
ldy #2
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
bne .8
|
||||||
|
|
||||||
|
dey
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
|
||||||
|
ldx OptionList
|
||||||
|
|
||||||
|
.2 cmp OptionList,x
|
||||||
|
beq .3
|
||||||
|
dex
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
sec invalid option
|
||||||
|
rts
|
||||||
|
|
||||||
|
.3 ldy OptionVars-1,x
|
||||||
|
eor #$80 toggle option
|
||||||
|
sta (pData),y
|
||||||
|
lda #0 exit with 0
|
||||||
|
|
||||||
|
.8 clc !0 if bot an option
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
OptionList >PSTR "Ee"
|
OptionList >PSTR "Ee"
|
||||||
OptionVars .DA #bCloseOnExit,#bCloseOnExit
|
OptionVars .DA #bExitOnClose,#bExitOnClose
|
||||||
MSG.USAGE .AZ "Usage : GETTY <DEV> <PROGRAM>\r\n"
|
MSG.USAGE .AS "Usage : GETTY <DEV> <PROGRAM>\r\n"
|
||||||
.AZ " -E : Close DEV on exit\r\n"
|
.AZ " -E : Exit on disconnect\r\n"
|
||||||
MSG.GREETINGS .AZ "\r\nA2osX-GeTTY %d.%d\r\n"
|
MSG.GREETINGS .AZ "\r\nA2osX-GeTTY %d.%d\r\n"
|
||||||
MSG.DEBUG .AZ "{%h}"
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TELNETOPTS .DA #IAC,#WILL,#TELOPT.BINARY
|
TELNETOPTS .DA #IAC,#WILL,#TELOPT.BINARY
|
||||||
.DA #IAC,#WILL,#TELOPT.ECHO
|
.DA #IAC,#WILL,#TELOPT.ECHO
|
||||||
@ -280,8 +341,11 @@ ENV.TERM .AZ "TERM"
|
|||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
DS.START
|
DS.START
|
||||||
hDEV .BS 1
|
ArgIndex .BS 1
|
||||||
bCloseOnExit .BS 1
|
ArgDev .BS 1
|
||||||
|
ArgProg .BS 1
|
||||||
|
hFILE .BS 1
|
||||||
|
bExitOnClose .BS 1
|
||||||
TimeOut .BS 1
|
TimeOut .BS 1
|
||||||
IAC.CMD .BS 1
|
IAC.CMD .BS 1
|
||||||
IAC.SUBCMD .BS 1
|
IAC.SUBCMD .BS 1
|
||||||
|
@ -184,7 +184,7 @@ INPUT.LINEIN ldy #INPUT.Status
|
|||||||
CS.END
|
CS.END
|
||||||
MSG.LOGIN .AZ "\r\nlogin:"
|
MSG.LOGIN .AZ "\r\nlogin:"
|
||||||
MSG.PASSWORD .AZ "\r\npassword:"
|
MSG.PASSWORD .AZ "\r\npassword:"
|
||||||
SHELL .AZ "${A2OSX}SBIN/SHELL"
|
SHELL .AZ "${ROOT}SBIN/SHELL"
|
||||||
.HS 00
|
.HS 00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
|
@ -39,17 +39,13 @@ Cmd.Exec >LDA.G CMD.IntCmd
|
|||||||
cpx #C.ELSE always execute ELSE,FI
|
cpx #C.ELSE always execute ELSE,FI
|
||||||
bcs .1
|
bcs .1
|
||||||
|
|
||||||
jsr CMD.StkGet
|
jsr CMD.StkGet IF,WHILE,FOR ?
|
||||||
bcs .1 no particular context
|
bcs .1 no particular context
|
||||||
|
|
||||||
bpl .8 context is FALSE, skip line
|
bpl .8 context is FALSE, skip line
|
||||||
|
|
||||||
.1 jmp (J.CMD.INT,x)
|
.1 jmp (J.CMD.INT,x)
|
||||||
|
|
||||||
.99 lda #E.SYN
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.2 >PUSHB.G CMD.PSFlags
|
.2 >PUSHB.G CMD.PSFlags
|
||||||
>LDYA ZPArgVBuf
|
>LDYA ZPArgVBuf
|
||||||
>SYSCALL execv
|
>SYSCALL execv
|
||||||
@ -59,7 +55,7 @@ Cmd.Exec >LDA.G CMD.IntCmd
|
|||||||
|
|
||||||
>LDA.G CMD.PSFlags
|
>LDA.G CMD.PSFlags
|
||||||
and #S.PS.F.HOLD
|
and #S.PS.F.HOLD
|
||||||
bne .3
|
bne .4
|
||||||
|
|
||||||
txa
|
txa
|
||||||
>PUSHA
|
>PUSHA
|
||||||
@ -68,45 +64,53 @@ Cmd.Exec >LDA.G CMD.IntCmd
|
|||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.3 >SLEEP Suspend this PID
|
.4 >SLEEP Suspend this PID
|
||||||
|
|
||||||
ldy #S.PS.RC
|
ldy #S.PS.RC
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
bne .9
|
bne .99
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
|
.99 sec
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* STARTPROC : intcmd = 0
|
* STARTPROC : intcmd = 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Cmd.INT.STARTPROC
|
Cmd.INT.STARTPROC
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
Cmd.INT.SHIFT lda #1
|
||||||
|
jmp ShiftA
|
||||||
|
*--------------------------------------
|
||||||
Cmd.INT.PWD ldy #S.PS.hPREFIX
|
Cmd.INT.PWD ldy #S.PS.hPREFIX
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>SYSCALL puts
|
>SYSCALL puts
|
||||||
Cmd.INT.PWD.RTS rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Cmd.INT.CD ldx #1
|
Cmd.INT.CD ldx #1
|
||||||
jsr Cmd.GetArgX
|
jsr Cmd.GetArgX
|
||||||
bcc Cmd.INT.CD.ARG
|
bcs Cmd.INT.CD.HOME
|
||||||
|
|
||||||
|
>SYSCALL RealPath
|
||||||
|
bcc Cmd.INT.CD.1
|
||||||
|
|
||||||
|
Cmd.INT.CD.RTS rts
|
||||||
|
|
||||||
Cmd.INT.CD.HOME >LDYA L.ENV.HOME
|
Cmd.INT.CD.HOME >LDYA L.ENV.HOME
|
||||||
>SYSCALL GetEnv
|
>SYSCALL GetEnv
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
>LDYA L.ENV.ROOT
|
>LDYA L.ENV.ROOT
|
||||||
>SYSCALL GetEnv
|
>SYSCALL GetEnv
|
||||||
bcs Cmd.INT.PWD.RTS
|
bcs Cmd.INT.PWD
|
||||||
|
|
||||||
.1 >SYSCALL ExpandStr
|
.1 >SYSCALL ExpandStr
|
||||||
bcs Cmd.INT.PWD.RTS
|
bcs Cmd.INT.CD.RTS
|
||||||
bra Cmd.INT.CD.1
|
|
||||||
|
|
||||||
Cmd.INT.CD.ARG >SYSCALL RealPath
|
|
||||||
bcs Cmd.INT.PWD.RTS
|
|
||||||
|
|
||||||
Cmd.INT.CD.1 >STYA ZPPtr1
|
Cmd.INT.CD.1 >STYA ZPPtr1
|
||||||
txa
|
txa
|
||||||
>STA.G CMD.hCmdLine
|
>STA.G CMD.hCmdLine
|
||||||
@ -170,7 +174,7 @@ Cmd.Exec.ERRSYN lda #E.SYN
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Cmd.INT.SET ldx #1
|
Cmd.INT.SET ldx #1
|
||||||
jsr Cmd.GetArgX
|
jsr Cmd.GetArgX
|
||||||
bcc Cmd.INT.SETVAR
|
bcc Cmd.INT.SET.1
|
||||||
|
|
||||||
* No arg, print all ENV
|
* No arg, print all ENV
|
||||||
|
|
||||||
@ -220,8 +224,19 @@ Cmd.INT.SET ldx #1
|
|||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Cmd.INT.SETVAR jsr CMD.IsSwitch
|
* SET +X VAR = VALUE1 op VALUE2 op VALUE3 ...
|
||||||
bcs .10
|
*--------------------------------------
|
||||||
|
Cmd.INT.SET.1 >STZ.G CMD.Varname
|
||||||
|
|
||||||
|
lda #1
|
||||||
|
>STA.G CMD.ArgIndex
|
||||||
|
|
||||||
|
.1 tax
|
||||||
|
jsr Cmd.GetArgX
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
jsr CMD.IsSwitch
|
||||||
|
bcs .2
|
||||||
|
|
||||||
cmp #'X'
|
cmp #'X'
|
||||||
bne .99
|
bne .99
|
||||||
@ -229,49 +244,67 @@ Cmd.INT.SETVAR jsr CMD.IsSwitch
|
|||||||
lda #$ff
|
lda #$ff
|
||||||
>EOR.G bSET.X
|
>EOR.G bSET.X
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
>INC.G CMD.ArgIndex
|
||||||
|
tax
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.2 >LDA.G CMD.ArgIndex
|
||||||
|
>STA.G CMD.Varname
|
||||||
|
|
||||||
|
>INC.G CMD.ArgIndex
|
||||||
|
tax
|
||||||
|
jsr Cmd.GetArgX
|
||||||
|
bcs Cmd.INT.SET.GET
|
||||||
|
|
||||||
|
>STYA ZPPTR1
|
||||||
|
|
||||||
|
lda (ZPPTR1)
|
||||||
|
|
||||||
|
cmp #'='
|
||||||
|
bne .99
|
||||||
|
|
||||||
|
ldy #1
|
||||||
|
lda (ZPPTR1),y
|
||||||
|
bne .99
|
||||||
|
|
||||||
|
>INC.G CMD.ArgIndex
|
||||||
|
tax
|
||||||
|
jsr Cmd.GetArgX
|
||||||
|
bcs Cmd.INT.SET.UNSET
|
||||||
|
|
||||||
|
>PUSHYA
|
||||||
|
>LDA.G CMD.Varname
|
||||||
|
tax
|
||||||
|
jsr Cmd.GetArgX
|
||||||
|
>SYSCALL SetEnv
|
||||||
|
rts
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.10 lda (ZPPTR1) set by CMD.IsSwitch
|
|
||||||
cmp #'=' string is '=value' ?
|
|
||||||
beq .99 syntax error
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
.1 iny
|
|
||||||
lda (ZPPTR1),y
|
|
||||||
beq .3 no =, GetEnv
|
|
||||||
|
|
||||||
cmp #'=' ARGS contains =, PutEnv
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
iny
|
|
||||||
lda (ZPPTR1),y
|
|
||||||
beq .2 "VAR=" go UnsetEnv
|
|
||||||
|
|
||||||
>LDYA ZPPTR1 String is VAR=VALUE...
|
|
||||||
>SYSCALL PutEnv
|
|
||||||
rts
|
|
||||||
|
|
||||||
.2 dey String is "VAR=", Remove ending '='
|
|
||||||
lda #0
|
|
||||||
sta (ZPPTR1),y
|
|
||||||
|
|
||||||
>LDYA ZPPTR1 String is "VAR"...
|
|
||||||
>SYSCALL UnsetEnv
|
|
||||||
rts
|
|
||||||
|
|
||||||
.99 lda #E.SYN
|
.99 lda #E.SYN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
* Print requested VAR
|
|
||||||
|
|
||||||
.3 >LDYA ZPPTR1
|
Cmd.INT.SET.UNSET
|
||||||
|
>LDA.G CMD.Varname
|
||||||
|
tax
|
||||||
|
jsr Cmd.GetArgX
|
||||||
|
>SYSCALL UnsetEnv
|
||||||
|
rts
|
||||||
|
|
||||||
|
Cmd.INT.SET.GET
|
||||||
|
>LDA.G CMD.Varname
|
||||||
|
tax
|
||||||
|
jsr Cmd.GetArgX
|
||||||
>SYSCALL GetEnv
|
>SYSCALL GetEnv
|
||||||
bcs .8
|
rts
|
||||||
|
|
||||||
>PUSHYA push value
|
>PUSHYA push value
|
||||||
>PUSHW ZPPTR1 push name
|
>LDA.G CMD.Varname
|
||||||
|
tax
|
||||||
|
jsr Cmd.GetArgX
|
||||||
|
>PUSHYA push name
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Cmd.INT.SET.PRINT
|
Cmd.INT.SET.PRINT
|
||||||
>PUSHBI 4
|
>PUSHBI 4
|
||||||
@ -753,6 +786,9 @@ Cmd.INT.FI jsr CMD.StkPull
|
|||||||
Cmd.INT.NEXT
|
Cmd.INT.NEXT
|
||||||
.9 jmp Cmd.Exec.ERRSYN
|
.9 jmp Cmd.Exec.ERRSYN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
Cmd.INT.BREAK
|
||||||
|
.9 jmp Cmd.Exec.ERRSYN
|
||||||
|
*--------------------------------------
|
||||||
Cmd.INT.LOOP jsr CMD.StkPull
|
Cmd.INT.LOOP jsr CMD.StkPull
|
||||||
bcs .9
|
bcs .9
|
||||||
tax
|
tax
|
||||||
|
@ -13,27 +13,29 @@ History.MAX .EQ 256
|
|||||||
CMD.STACK.MAX .EQ 64
|
CMD.STACK.MAX .EQ 64
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
C.STARTPROC .EQ 0
|
C.STARTPROC .EQ 0
|
||||||
C.CD .EQ 2
|
C.BREAK .EQ 2
|
||||||
C.DATE .EQ 4
|
C.CD .EQ 4
|
||||||
C.ECHO .EQ 6
|
C.DATE .EQ 6
|
||||||
C.EXIT .EQ 8
|
C.ECHO .EQ 8
|
||||||
C.FOR .EQ 10
|
C.EXIT .EQ 10
|
||||||
C.IF .EQ 12
|
C.FOR .EQ 12
|
||||||
C.MD .EQ 14
|
C.IF .EQ 14
|
||||||
C.PAUSE .EQ 16
|
C.MD .EQ 16
|
||||||
C.PWD .EQ 18
|
C.PAUSE .EQ 18
|
||||||
C.RD .EQ 20
|
C.PWD .EQ 20
|
||||||
C.READ .EQ 22
|
C.RD .EQ 22
|
||||||
C.REN .EQ 24
|
C.READ .EQ 24
|
||||||
C.SET .EQ 26
|
C.REN .EQ 26
|
||||||
C.SLEEP .EQ 28
|
C.SET .EQ 28
|
||||||
C.TIME .EQ 30
|
C.SLEEP .EQ 30
|
||||||
C.WHILE .EQ 32
|
C.SHIFT .EQ 32
|
||||||
C.NEXT .EQ 34
|
C.TIME .EQ 34
|
||||||
C.LOOP .EQ 36
|
C.WHILE .EQ 36
|
||||||
|
C.NEXT .EQ 38
|
||||||
|
C.LOOP .EQ 40
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
C.ELSE .EQ 38
|
C.ELSE .EQ 42
|
||||||
C.FI .EQ 40
|
C.FI .EQ 44
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
E.SYNTAX .EQ $C0
|
E.SYNTAX .EQ $C0
|
||||||
E.STKOVERFLOW .EQ $C1
|
E.STKOVERFLOW .EQ $C1
|
||||||
@ -116,6 +118,7 @@ J.CL.IO .DA CL.IO.AMP
|
|||||||
.DA CL.IO.2OUT
|
.DA CL.IO.2OUT
|
||||||
L.CMD.INT .DA CMD.INT
|
L.CMD.INT .DA CMD.INT
|
||||||
J.CMD.INT .DA Cmd.INT.STARTPROC
|
J.CMD.INT .DA Cmd.INT.STARTPROC
|
||||||
|
.DA Cmd.INT.BREAK
|
||||||
.DA Cmd.INT.CD
|
.DA Cmd.INT.CD
|
||||||
.DA Cmd.INT.DATE
|
.DA Cmd.INT.DATE
|
||||||
.DA Cmd.INT.ECHO
|
.DA Cmd.INT.ECHO
|
||||||
@ -130,6 +133,7 @@ J.CMD.INT .DA Cmd.INT.STARTPROC
|
|||||||
.DA Cmd.INT.REN
|
.DA Cmd.INT.REN
|
||||||
.DA Cmd.INT.SET
|
.DA Cmd.INT.SET
|
||||||
.DA Cmd.INT.SLEEP
|
.DA Cmd.INT.SLEEP
|
||||||
|
.DA Cmd.INT.SHIFT
|
||||||
.DA Cmd.INT.TIME
|
.DA Cmd.INT.TIME
|
||||||
.DA Cmd.INT.WHILE
|
.DA Cmd.INT.WHILE
|
||||||
.DA Cmd.INT.NEXT
|
.DA Cmd.INT.NEXT
|
||||||
@ -168,6 +172,9 @@ CS.RUN jsr Cmd.INT.CD.HOME
|
|||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPFileBufPtr
|
>STYA ZPFileBufPtr
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
jsr ShiftA Remove $0=/bin/shell
|
||||||
|
|
||||||
.DO CSH=1
|
.DO CSH=1
|
||||||
jsr CSH.Init
|
jsr CSH.Init
|
||||||
.FIN
|
.FIN
|
||||||
@ -435,6 +442,49 @@ SetPWD.I >SYSCALL GetMemPtr
|
|||||||
>SYSCALL SetEnv
|
>SYSCALL SetEnv
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
ShiftA >SYSCALL ArgV
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
>STYA ZPPtr1
|
||||||
|
>STYA ZPPtr2
|
||||||
|
|
||||||
|
.10 ldy #$ff
|
||||||
|
|
||||||
|
.1 iny Compute ArgX len
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
.2 tya
|
||||||
|
sec
|
||||||
|
adc ZPPtr1
|
||||||
|
sta ZPPtr1
|
||||||
|
bcc .3
|
||||||
|
inc ZPPtr1+1
|
||||||
|
|
||||||
|
.3 ldy #$ff
|
||||||
|
|
||||||
|
.4 iny
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
sta (ZPPtr2),y
|
||||||
|
bne .4
|
||||||
|
tya
|
||||||
|
beq .7
|
||||||
|
|
||||||
|
sec
|
||||||
|
adc ZPPtr2
|
||||||
|
sta ZPPtr2
|
||||||
|
bcc .2
|
||||||
|
inc ZPPtr2+1
|
||||||
|
bra .2
|
||||||
|
|
||||||
|
.7 ldy #S.PS.ARGC
|
||||||
|
lda (pPS),y
|
||||||
|
dec
|
||||||
|
sta (pPS),y
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
Lookup >STYA ZPPtr2
|
Lookup >STYA ZPPtr2
|
||||||
>PULLW ZPPtr1
|
>PULLW ZPPtr1
|
||||||
|
|
||||||
@ -489,7 +539,7 @@ MSG.TRACE .AS ">%s"
|
|||||||
MSG.ECHOCRLF .AZ "\r\n"
|
MSG.ECHOCRLF .AZ "\r\n"
|
||||||
MSG.BATCHERR .AZ "^\r\nLine #%D:"
|
MSG.BATCHERR .AZ "^\r\nLine #%D:"
|
||||||
MSG.ERROR .AZ "[$%h]:%S.\r\n"
|
MSG.ERROR .AZ "[$%h]:%S.\r\n"
|
||||||
MSG.PRINTENV .AZ "%s=%s\r\n"
|
MSG.PRINTENV .AZ "%s = %s\r\n"
|
||||||
MSG.PID .AZ "PID=%d\r\n"
|
MSG.PID .AZ "PID=%d\r\n"
|
||||||
FMT.DATE .AZ "%A (%w), %B %d %Y"
|
FMT.DATE .AZ "%A (%w), %B %d %Y"
|
||||||
FMT.TIME .AZ "%H:%M:%S (%I:%M:%S%p)"
|
FMT.TIME .AZ "%H:%M:%S (%I:%M:%S%p)"
|
||||||
@ -514,6 +564,7 @@ CL.IO .AZ "&"
|
|||||||
.HS 00
|
.HS 00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.INT .AZ "STARTPROC"
|
CMD.INT .AZ "STARTPROC"
|
||||||
|
.AZ "BREAK"
|
||||||
.AZ "CD"
|
.AZ "CD"
|
||||||
.AZ "DATE"
|
.AZ "DATE"
|
||||||
.AZ "ECHO"
|
.AZ "ECHO"
|
||||||
@ -528,6 +579,7 @@ CMD.INT .AZ "STARTPROC"
|
|||||||
.AZ "REN"
|
.AZ "REN"
|
||||||
.AZ "SET"
|
.AZ "SET"
|
||||||
.AZ "SLEEP"
|
.AZ "SLEEP"
|
||||||
|
.AZ "SHIFT"
|
||||||
.AZ "TIME"
|
.AZ "TIME"
|
||||||
.AZ "WHILE"
|
.AZ "WHILE"
|
||||||
.AZ "NEXT"
|
.AZ "NEXT"
|
||||||
@ -605,6 +657,7 @@ CMD.hCmdLine .BS 1
|
|||||||
CMD.hArgVBuf .BS 1
|
CMD.hArgVBuf .BS 1
|
||||||
|
|
||||||
CMD.ArgIndex .BS 1
|
CMD.ArgIndex .BS 1
|
||||||
|
CMD.Varname .BS 1
|
||||||
CMD.Test .BS 1
|
CMD.Test .BS 1
|
||||||
CMD.Operator .BS 1
|
CMD.Operator .BS 1
|
||||||
CMD.NumArg1 .BS 4
|
CMD.NumArg1 .BS 4
|
||||||
|
@ -280,7 +280,7 @@ MSG.INCOMING .AZ "TELNETD:Incoming Connection [SKT=%h] From : %d.%d.%d.%d\r\n"
|
|||||||
MSG.EXECERR .AZ "TELNETD:ExecL failed $%h."
|
MSG.EXECERR .AZ "TELNETD:ExecL failed $%h."
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
NOD.Template .AZ "/DEV/TTY%h"
|
NOD.Template .AZ "/DEV/TTY%h"
|
||||||
CMD.Template .AZ "${ROOT}SBIN/GETTY %s ${ROOT}SBIN/LOGIN"
|
CMD.Template .AZ "${ROOT}SBIN/GETTY -E %s ${ROOT}SBIN/LOGIN"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SA.LOCAL .DA #AF.INET S.SOCKADDR.AF
|
SA.LOCAL .DA #AF.INET S.SOCKADDR.AF
|
||||||
.BS 1
|
.BS 1
|
||||||
|
@ -29,7 +29,7 @@ K.OpenDir jsr PFT.CheckPathYA
|
|||||||
sta (pFD),y
|
sta (pFD),y
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPPtr2),y One char ?
|
lda K.Buf256,y One char ("/") ?
|
||||||
beq .8 No, Go open dir....
|
beq .8 No, Go open dir....
|
||||||
|
|
||||||
>MLICALL MLIGETFILEINFO
|
>MLICALL MLIGETFILEINFO
|
||||||
@ -50,7 +50,7 @@ K.OpenDir jsr PFT.CheckPathYA
|
|||||||
sta (pFD),y
|
sta (pFD),y
|
||||||
|
|
||||||
.8 ldx #$ff Self Modified
|
.8 ldx #$ff Self Modified
|
||||||
>LDYA ZPPtr2
|
>LDYAI K.Buf256
|
||||||
jsr STDIO.NewHFileYAX
|
jsr STDIO.NewHFileYAX
|
||||||
|
|
||||||
bcc .99
|
bcc .99
|
||||||
|
@ -1148,7 +1148,7 @@ K.FSeek jsr PFT.CheckNodeA
|
|||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
.98 lda #E.SYN
|
.98 lda #E.BADARG
|
||||||
.HS 2C bit abs
|
.HS 2C bit abs
|
||||||
.99 lda #E.FTB
|
.99 lda #E.FTB
|
||||||
sec
|
sec
|
||||||
|
@ -398,7 +398,7 @@ K.realpath.I clc
|
|||||||
>LDYAI K.Buf256
|
>LDYAI K.Buf256
|
||||||
jmp K.NewStr
|
jmp K.NewStr
|
||||||
|
|
||||||
.90 lda #E.SYN
|
.90 lda #E.BADPATH
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user