Kernel 0.9.2

This commit is contained in:
Rémy GIBERT 2018-11-06 17:31:13 +01:00
parent e0c4bab81f
commit 846ce0f76e
13 changed files with 243 additions and 135 deletions

View File

@ -91,7 +91,7 @@ CC: A = hSOCKET
CS: A = EC CS: A = EC
# Connect # Connect
Iinitiate a connection on a socket Initiate a connection on a socket
## C ## C
`int connect(hFD fd, const struct sockaddr *addr);` `int connect(hFD fd, const struct sockaddr *addr);`

Binary file not shown.

Binary file not shown.

View File

@ -20,7 +20,7 @@ CS.START cld
jmp (.1,x) jmp (.1,x)
.DA #$61 6502,Level 1 (65c02) .DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1 .DA #1 BIN Layout Version 1
.DA #S.PS.F.EVENT S.PS.F .DA #0 S.PS.F
.DA #0 .DA #0
.DA CS.END-CS.START CS .DA CS.END-CS.START CS
.DA DS.END-DS.START DS .DA DS.END-DS.START DS
@ -36,6 +36,7 @@ CS.START cld
.DA CS.QUIT .DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE L.MSG.USAGE .DA MSG.USAGE
L.MSG.LINENUM .DA MSG.LINENUM L.MSG.LINENUM .DA MSG.LINENUM
L.MSG.Pause .DA MSG.Pause
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT clc CS.INIT clc
@ -77,9 +78,9 @@ CS.RUN
.4 >LDA.G hFile .4 >LDA.G hFile
bne .99 bne .99
>LDYA ZPPtr1
jsr CS.RUN.OPEN jsr CS.RUN.OPEN
bcs .9 bcs .9
>STA.G hFile
bra .1 scan for any other args bra .1 scan for any other args
@ -100,15 +101,23 @@ CS.RUN
CS.RUN.LOOP >SLEEP CS.RUN.LOOP >SLEEP
>LDA.G hFILE >LDA.G hFILE
beq .11 bne .1
>SYSCALL GetChar ldy #S.PS.hStdErr
bcs .10 no char lda (pPS),y
>SYSCALL GetC
bra .2
.1 >SYSCALL GetChar
.2 bcs .10 no char
cmp #$03 Ctrl-C cmp #$03 Ctrl-C
beq .9 Abort.... bne .3
cmp #$13 Ctrl-S sec Abort....
rts
.3 cmp #C.SPACE
bne .10 bne .10
>LDA.G bPause >LDA.G bPause
@ -131,14 +140,21 @@ CS.RUN.LOOP >SLEEP
>PUSHW ZPBufPtr >PUSHW ZPBufPtr
pla pla
>SYSCALL fgets >SYSCALL fgets
>DEBUG
bcs .13 bcs .13
>LDYA ZPBufPtr >LDA.G LineCount
bne .22
>LDA.G bPage
beq .22
lda #C.FF
>SYSCALL putchar
.22 >LDYA ZPBufPtr
>SYSCALL puts >SYSCALL puts
>INC.G LineCount >INC.G LineCount
cmp #20 cmp #23
bne .8 bne .8
lda #0 lda #0
sta (pData),y sta (pData),y
@ -146,6 +162,10 @@ CS.RUN.LOOP >SLEEP
dec dec
>STA.G bPause >STA.G bPause
>PUSHBI 0
>LDYA L.MSG.Pause
>SYSCALL printf
.8 jmp CS.RUN.LOOP .8 jmp CS.RUN.LOOP
.13 cmp #MLI.E.EOF .13 cmp #MLI.E.EOF
@ -157,29 +177,21 @@ CS.RUN.LOOP >SLEEP
*-------------------------------------- *--------------------------------------
CS.RUN.OPEN >SYSCALL RealPath CS.RUN.OPEN >SYSCALL RealPath
bcs .9 bcs .9
phx save hMem phy
pha pha
txa
>STA.G hFullPath
>PUSHWI 0 Aux type >PUSHWI 0 Aux type
>PUSHBI S.FI.T.TXT >PUSHBI S.FI.T.TXT
>PUSHBI O.RDONLY+O.TEXT >PUSHBI O.RDONLY+O.TEXT
pla pla
ply
>SYSCALL FOpen >SYSCALL FOpen
plx bcs .9
bcs .99 >STA.G hFile
pha
jsr .99
pla
clc
rts
.99 pha
txa
>SYSCALL FreeMem
pla
sec
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.PRINTNUM clc CS.RUN.PRINTNUM clc
@ -199,10 +211,15 @@ CS.QUIT >LDA.G hBuf
>SYSCALL FreeMem >SYSCALL FreeMem
.1 >LDA.G hFILE .1 >LDA.G hFILE
beq .8 beq .2
>SYSCALL FClose >SYSCALL FClose
.2 >LDA.G hFullPath
beq .8
>SYSCALL FreeMem
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
@ -211,23 +228,27 @@ CS.DOEVENT sec
*-------------------------------------- *--------------------------------------
CS.END CS.END
*-------------------------------------- *--------------------------------------
OptionList >PSTR "NnHh" OptionList >PSTR "NnHhPp"
OptionVars .DA #bLineNum,#bLineNum,#bHelp,#bHelp OptionVars .DA #bLineNum,#bLineNum,#bHelp,#bHelp,#bPage,#bPage
*-------------------------------------- *--------------------------------------
MSG.USAGE .AS "Usage : MORE <File>\r\n" MSG.USAGE .AS "Usage : MORE <File>\r\n"
.AS " -H : This Help Screen\r\n" .AS " -H : This help screen\r\n"
.AZ " -N : Number all output lines\r\n" .AS " -N : Number all output lines\r\n"
.AZ " -P : Page mode, no scroll\r\n"
MSG.LINENUM .AZ "%5D:" MSG.LINENUM .AZ "%5D:"
MSG.Pause .AZ "\e[7m --- More --- \e[0m\r"
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0
DS.START DS.START
ArgCount .BS 1 ArgCount .BS 1
hFullPath .BS 1
hFile .BS 1 hFile .BS 1
LineCount .BS 1 LineCount .BS 1
LineNum .BS 2 LineNum .BS 2
bPause .BS 1 bPause .BS 1
bLineNum .BS 1 bLineNum .BS 1
bPage .BS 1
bHelp .BS 1 bHelp .BS 1
ArgIndex .BS 1 ArgIndex .BS 1
hBuf .BS 1 hBuf .BS 1

View File

@ -283,9 +283,9 @@ WRITE.COUT bit bEscMode
.1 pha .1 pha
jsr CUROFF jsr CUROFF
pla pla
cmp #$7f cmp #C.DEL
beq DEL beq DEL
cmp #32 cmp #C.SPACE
bcc COUT.Ctrl bcc COUT.Ctrl
ora INVFLG ora INVFLG
@ -776,9 +776,9 @@ Esc.Query ldx EscSeqParamCnt
cmp #6 cmp #6
bne .8 bne .8
lda #$1B lda #C.ESC
jsr Char.Out.Put jsr Char.Out.Put
lda #$5B lda #'['
jsr Char.Out.Put jsr Char.Out.Put
lda CV lda CV
inc inc

View File

@ -5,11 +5,19 @@ AUTO 4,1
*-------------------------------------- *--------------------------------------
S.ETH.DSTMAC .EQ 0 S.ETH.DSTMAC .EQ 0
S.ETH.SRCMAC .EQ 6 S.ETH.SRCMAC .EQ 6
S.ETH.ETHERTYPE .EQ 12 S.ETH.EII.TYPE .EQ 12
S.ETH.ETHERTYPE.IP .EQ $800 S.ETH.EII.TYPE.IP .EQ $800
S.ETH.ETHERTYPE.ARP .EQ $806 S.ETH.EII.TYPE.ARP .EQ $806
* *
S.ETH .EQ 6+6+2 S.ETH.EII .EQ 14
*
S.ETH.802.3.LENGTH .EQ 12
S.ETH.802.2.DSTSAP .EQ 14
S.ETH.802.2.SRCSAP .EQ 15
S.ETH.802.2.CTRL .EQ 16
S.ETH.SNAP.PROTO .EQ 17
*
S.ETH.SNAP .EQ 22
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE INC/ETH.I SAVE INC/ETH.I

View File

@ -144,6 +144,7 @@ S.SOCKET.REM.PORT .EQ S.FD.DSOCK+14
* Listen type Queue * Listen type Queue
* Raw Type Queue * Raw Type Queue
* Datagram type Queue * Datagram type Queue
* Seq Packet type Queue
S.SOCKET.HQ.HEAD .EQ S.FD.DSOCK+16 S.SOCKET.HQ.HEAD .EQ S.FD.DSOCK+16
S.SOCKET.HQ.TAIL .EQ S.FD.DSOCK+17 S.SOCKET.HQ.TAIL .EQ S.FD.DSOCK+17
S.SOCKET.HQ .EQ S.FD.DSOCK+18 S.SOCKET.HQ .EQ S.FD.DSOCK+18
@ -189,34 +190,34 @@ S.SOCKET.TCP.OUTACKNUM .EQ S.SOCKET+34 Send:ACK to send to remote
* *
S.SOCKET.TCP .EQ S.SOCKET+38 S.SOCKET.TCP .EQ S.SOCKET+38
*-------------------------------------- *--------------------------------------
S.ARP.HTYPE .EQ S.ETH+0 $0001 S.ARP.HTYPE .EQ S.ETH.EII+0 $0001
S.ARP.PTYPE .EQ S.ETH+2 $0800 S.ARP.PTYPE .EQ S.ETH.EII+2 $0800
S.ARP.HLEN .EQ S.ETH+4 $06 S.ARP.HLEN .EQ S.ETH.EII+4 $06
S.ARP.PLEN .EQ S.ETH+5 $04 S.ARP.PLEN .EQ S.ETH.EII+5 $04
S.ARP.OPERATION .EQ S.ETH+6 REQ=$0001,REPLY=$0002 S.ARP.OPERATION .EQ S.ETH.EII+6 REQ=$0001,REPLY=$0002
S.ARP.OPERATION.REQ .EQ 1 S.ARP.OPERATION.REQ .EQ 1
S.ARP.OPERATION.REP .EQ 2 S.ARP.OPERATION.REP .EQ 2
S.ARP.SHA .EQ S.ETH+8 Sender MAC S.ARP.SHA .EQ S.ETH.EII+8 Sender MAC
S.ARP.SPA .EQ S.ETH+14 Sender IP S.ARP.SPA .EQ S.ETH.EII+14 Sender IP
S.ARP.THA .EQ S.ETH+18 Target MAC S.ARP.THA .EQ S.ETH.EII+18 Target MAC
S.ARP.TPA .EQ S.ETH+24 Target IP S.ARP.TPA .EQ S.ETH.EII+24 Target IP
* *
S.ARP .EQ S.ETH+28 S.ARP .EQ S.ETH.EII+28
*-------------------------------------- *--------------------------------------
S.IP.V.IHL.DSCP.ECN .EQ S.ETH+0 $0045, IPV4,HDR=5DWORDs S.IP.V.IHL.DSCP.ECN .EQ S.ETH.EII+0 $0045, IPV4,HDR=5DWORDs
S.IP.TOTAL.LENGTH .EQ S.ETH+2 S.IP.TOTAL.LENGTH .EQ S.ETH.EII+2
S.IP.IDENTIFICATION .EQ S.ETH+4 S.IP.IDENTIFICATION .EQ S.ETH.EII+4
S.IP.FRAGMENT.FLAGS .EQ S.ETH+6 S.IP.FRAGMENT.FLAGS .EQ S.ETH.EII+6
S.IP.TTL .EQ S.ETH+8 S.IP.TTL .EQ S.ETH.EII+8
S.IP.PROTOCOL .EQ S.ETH+9 S.IP.PROTOCOL .EQ S.ETH.EII+9
S.IP.PROTOCOL.ICMP .EQ 1 S.IP.PROTOCOL.ICMP .EQ 1
S.IP.PROTOCOL.TCP .EQ 6 S.IP.PROTOCOL.TCP .EQ 6
S.IP.PROTOCOL.UDP .EQ 17 S.IP.PROTOCOL.UDP .EQ 17
S.IP.HDR.CHECKSUM .EQ S.ETH+10 S.IP.HDR.CHECKSUM .EQ S.ETH.EII+10
S.IP.SRC .EQ S.ETH+12 S.IP.SRC .EQ S.ETH.EII+12
S.IP.DST .EQ S.ETH+16 S.IP.DST .EQ S.ETH.EII+16
* *
S.IP .EQ S.ETH+20 S.IP .EQ S.ETH.EII+20
*-------------------------------------- *--------------------------------------
S.ICMP.TYPE .EQ S.IP+0 S.ICMP.TYPE .EQ S.IP+0
S.ICMP.TYPE.ECHOREP .EQ 0 S.ICMP.TYPE.ECHOREP .EQ 0

View File

@ -102,11 +102,11 @@ FRM.NewIP stx .8+1
and #S.DCB.NIC.FLAGS.IPOFFLOAD and #S.DCB.NIC.FLAGS.IPOFFLOAD
bne .7 bne .7
ldy #S.ETH.ETHERTYPE ldy #S.ETH.EII.TYPE
lda /S.ETH.ETHERTYPE.IP lda /S.ETH.EII.TYPE.IP
sta (ZPFrameOutPtr),y sta (ZPFrameOutPtr),y
iny iny
lda #S.ETH.ETHERTYPE.IP lda #S.ETH.EII.TYPE.IP
sta (ZPFrameOutPtr),y sta (ZPFrameOutPtr),y
ldy #S.IP.V.IHL.DSCP.ECN ldy #S.IP.V.IHL.DSCP.ECN
@ -165,11 +165,11 @@ FRM.SendIP ldx #3 Copy SRC.IP even if IP offload
ldy #S.IP.TOTAL.LENGTH+1 ldy #S.IP.TOTAL.LENGTH+1
lda ZPFrameOutLen lda ZPFrameOutLen
sec sec
sbc #S.ETH sbc #S.ETH.EII
sta (ZPFrameOutPtr),y sta (ZPFrameOutPtr),y
dey dey
lda ZPFrameOutLen+1 lda ZPFrameOutLen+1
sbc /S.ETH sbc /S.ETH.EII
sta (ZPFrameOutPtr),y sta (ZPFrameOutPtr),y
lda #0 lda #0

View File

@ -128,10 +128,7 @@ SKT.bind >SYSCALL GetMemPtr
.1 jsr SKT.FindMatchingLoc .1 jsr SKT.FindMatchingLoc
bcc .9 bcc .9
jsr SKT.SetLocAddr jmp SKT.SetLocAddr
clc
rts
.9 lda #ERR.SKT.BUSY .9 lda #ERR.SKT.BUSY
sec sec
@ -161,9 +158,7 @@ SKT.connect >SYSCALL GetMemPtr
jmp (J.SKT.connect,x) jmp (J.SKT.connect,x)
SKT.connect.RAW SKT.connect.RAW
SKT.connect.DGRAM SKT.connect.DGRAM
jsr SKT.SetRemAddr jmp SKT.SetRemAddr
clc
rts
SKT.connect.STREAM SKT.connect.STREAM
SKT.connect.SEQPACKET SKT.connect.SEQPACKET
jsr SKT.SetRemAddr jsr SKT.SetRemAddr
@ -276,22 +271,30 @@ SKT.Accept >SYSCALL GetMemPtr
* `>LIBCALL hLIBTCPIP,LIBTCPIP.shutdown` * `>LIBCALL hLIBTCPIP,LIBTCPIP.shutdown`
* ## RETURN VALUE * ## RETURN VALUE
*\-------------------------------------- *\--------------------------------------
SKT.shutdown >SYSCALL GetMemPtr SKT.shutdown pha
>SYSCALL GetMemPtr
>STYA ZPPtrSKT >STYA ZPPtrSKT
ldy #S.SOCKET.O
lda (ZPPtrSKT),y
and #S.SOCKET.O.ACCEPTCONN
bne SKT.shutdown.LISTEN
ldy #S.SOCKET.T ldy #S.SOCKET.T
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
tax
jmp (J.SKT.shutdown,x)
cmp #S.SOCKET.T.STREAM SKT.shutdown.LISTEN
beq .10 TCP SKT.shutdown.RAW
cmp #S.SOCKET.T.RAW+1 SKT.shutdown.DGRAM
bcs .9 no #S.SOCKET.T.DGRAM, nor #S.SOCKET.T.RAW SKT.shutdown.SEQPACKET
.1 ldy #S.SOCKET.HQ.TAIL .1 ldy #S.SOCKET.HQ.TAIL
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
ldy #S.SOCKET.HQ.HEAD ldy #S.SOCKET.HQ.HEAD
cmp (ZPPtrSKT),y cmp (ZPPtrSKT),y
beq .8 No frame in Queue, close.. beq .3 No frame in Queue, close..
pha save tail... pha save tail...
clc clc
@ -313,36 +316,42 @@ SKT.shutdown >SYSCALL GetMemPtr
>SYSCALL FreeMem >SYSCALL FreeMem
bra .1 bra .1
.8 clc .3 pla get hFD...
ldx #0
.4 cmp SKT.TABLE,x
beq .5
inx
cpx #K.SKTTABLE.SIZE
bne .4
.5 stz SKT.TABLE,x
>SYSCALL freemem
clc
rts rts
.9 lda #ERR.SKT.BAD SKT.shutdown.STREAM
sec pla
.99 rts
.10 ldy #S.SOCKET.O
lda (ZPPtrSKT),y
bit #S.SOCKET.O.ACCEPTCONN
bne * TO DO: Listening socket
ldy #S.SOCKET.TCP.S ldy #S.SOCKET.TCP.S
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.S.CLWAIT cmp #S.SOCKET.TCP.S.CLWAIT
bne .11 bne .1
lda #S.SOCKET.TCP.S.LASTACK lda #S.SOCKET.TCP.S.LASTACK
bra .12 bra .2
.11 lda #S.SOCKET.TCP.S.FINWT1 .1 lda #S.SOCKET.TCP.S.FINWT1
.12 sta (ZPPtrSKT),y .2 sta (ZPPtrSKT),y
ldy #S.SOCKET.TCP.O ldy #S.SOCKET.TCP.O
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
ora #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK ora #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK
sta (ZPPtrSKT),y sta (ZPPtrSKT),y
jmp TCP.OUT Try to push FIN/ACK jmp TCP.OUT
*/-------------------------------------- */--------------------------------------
* # Read (STREAM) * # Read (STREAM)
* ## C * ## C
@ -651,20 +660,22 @@ SKT.PullRemAddr >PULLW ZPTmpPtr1
bpl .1 bpl .1
rts rts
*-------------------------------------- *--------------------------------------
SKT.SetLocAddr ldy #S.SOCKET.LOC.ADDR SKT.SetLocAddr ldy #S.SOCKET.LOC.PORT+1
.1 lda SKT.LOC.ADDR+S.SOCKADDR.ADDR-S.SOCKET.LOC.ADDR,y .1 lda SKT.LOC.ADDR+S.SOCKADDR.ADDR-S.SOCKET.LOC.ADDR,y
sta (ZPPtrSKT),y sta (ZPPtrSKT),y
iny dey
cpy #S.SOCKET.LOC.PORT+2 cpy #S.SOCKET.LOC.ADDR
bne .1 bcs .1
* clc
rts rts
*-------------------------------------- *--------------------------------------
SKT.SetRemAddr ldy #S.SOCKET.REM.ADDR SKT.SetRemAddr ldy #S.SOCKET.REM.PORT+1
.1 lda SKT.REM.ADDR+S.SOCKADDR.ADDR-S.SOCKET.REM.ADDR,y .1 lda SKT.REM.ADDR+S.SOCKADDR.ADDR-S.SOCKET.REM.ADDR,y
sta (ZPPtrSKT),y sta (ZPPtrSKT),y
iny dey
cpy #S.SOCKET.REM.PORT+2 cpy #S.SOCKET.REM.ADDR
bne .1 bcs .1
* clc
rts rts
*-------------------------------------- *--------------------------------------
SKT.FindMatchingLocRem SKT.FindMatchingLocRem

View File

@ -278,12 +278,12 @@ TCP.IN.SetDataInPtrAndLen
ldy #S.IP.TOTAL.LENGTH+1 ldy #S.IP.TOTAL.LENGTH+1
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
sec sec
sbc #S.IP-S.ETH sbc #S.IP-S.ETH.EII
sta ZPDataInLen sta ZPDataInLen
dey dey
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
sbc /S.IP-S.ETH sbc /S.IP-S.ETH.EII
sta ZPDataInLen+1 sta ZPDataInLen+1
ldy #S.TCP.DATAOFFSET ldy #S.TCP.DATAOFFSET

View File

@ -139,6 +139,10 @@ J.SKT.connect .DA SKT.connect.RAW
.DA SKT.connect.DGRAM .DA SKT.connect.DGRAM
.DA SKT.connect.SEQPACKET .DA SKT.connect.SEQPACKET
.DA SKT.connect.STREAM .DA SKT.connect.STREAM
J.SKT.shutdown .DA SKT.shutdown.RAW
.DA SKT.shutdown.DGRAM
.DA SKT.shutdown.SEQPACKET
.DA SKT.shutdown.STREAM
J.SKT.send .DA SKT.send.RAW J.SKT.send .DA SKT.send.RAW
.DA SKT.send.DGRAM .DA SKT.send.DGRAM
.DA SKT.send.SEQPACKET .DA SKT.send.SEQPACKET
@ -190,22 +194,22 @@ POLL >PUSHW L.IOCTL
dex dex
bpl .10 bpl .10
ldy #S.ETH.ETHERTYPE ldy #S.ETH.EII.TYPE
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
tax tax
iny iny
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
cmp #S.ETH.ETHERTYPE.ARP cmp #S.ETH.EII.TYPE.ARP
bne .1 bne .1
cpx /S.ETH.ETHERTYPE.ARP cpx /S.ETH.EII.TYPE.ARP
bne .1 bne .1
jmp ARP.IN jmp ARP.IN
.1 cmp #S.ETH.ETHERTYPE.IP .1 cmp #S.ETH.EII.TYPE.IP
bne .9 bne .9
cpx /S.ETH.ETHERTYPE.IP cpx /S.ETH.EII.TYPE.IP
bne .9 bne .9
jmp IP.IN jmp IP.IN
@ -289,8 +293,6 @@ CFG.hCfgFile .BS 1
CFG.IP .BS 4 CFG.IP .BS 4
CFG.HOSTS.SScanF .AZ "%d.%d.%d.%d %s %s" CFG.HOSTS.SScanF .AZ "%d.%d.%d.%d %s %s"
*-------------------------------------- *--------------------------------------
SKT.TABLE .BS K.SKTTABLE.SIZE
*--------------------------------------
SA.LOCAL .DA #AF.INET S.SOCKADDR.AF SA.LOCAL .DA #AF.INET S.SOCKADDR.AF
.BS 1 .BS 1
.BS 4 S.SOCKADDR.ADDR .BS 4 S.SOCKADDR.ADDR
@ -337,8 +339,8 @@ DNS.CACHE .BS K.DNSCACHE.SIZE*S.DNSCACHE
*-------------------------------------- *--------------------------------------
ARP.REQ .HS FFFFFFFFFFFF S.ETH.DSTMAC ARP.REQ .HS FFFFFFFFFFFF S.ETH.DSTMAC
ARP.REQ.SRCMAC .BS 6 ARP.REQ.SRCMAC .BS 6
ARP.REQ.ETYPE .DA /S.ETH.ETHERTYPE.ARP ARP.REQ.ETYPE .DA /S.ETH.EII.TYPE.ARP
.DA #S.ETH.ETHERTYPE.ARP .DA #S.ETH.EII.TYPE.ARP
.HS 0001.0800.06.04 .HS 0001.0800.06.04
ARP.REQ.OP .DA /S.ARP.OPERATION.REQ ARP.REQ.OP .DA /S.ARP.OPERATION.REQ
.DA #S.ARP.OPERATION.REQ .DA #S.ARP.OPERATION.REQ
@ -350,8 +352,8 @@ ARP.REQ.TPA .BS 4
ARP.REP .EQ * ARP.REP .EQ *
ARP.REP.DSTMAC .BS 6 ARP.REP.DSTMAC .BS 6
ARP.REP.SRCMAC .BS 6 ARP.REP.SRCMAC .BS 6
ARP.REP.ETYPE .DA /S.ETH.ETHERTYPE.ARP ARP.REP.ETYPE .DA /S.ETH.EII.TYPE.ARP
.DA #S.ETH.ETHERTYPE.ARP .DA #S.ETH.EII.TYPE.ARP
.HS 0001.0800.06.04 .HS 0001.0800.06.04
ARP.REP.OP .DA /S.ARP.OPERATION.REP ARP.REP.OP .DA /S.ARP.OPERATION.REP
.DA #S.ARP.OPERATION.REP .DA #S.ARP.OPERATION.REP
@ -383,6 +385,8 @@ DYNPORT.LAST .DA K.DYNPORT.START
hDNSSocket .BS 1 hDNSSocket .BS 1
DNS.TmpCache .BS S.DNSCACHE DNS.TmpCache .BS S.DNSCACHE
ARP.TmpCache .BS S.ARP ARP.TmpCache .BS S.ARP
*--------------------------------------
SKT.TABLE .BS K.SKTTABLE.SIZE
SKT.LOC.ADDR .BS S.SOCKADDR SKT.LOC.ADDR .BS S.SOCKADDR
SKT.REM.ADDR .BS S.SOCKADDR SKT.REM.ADDR .BS S.SOCKADDR
SKT.TmpCache .BS S.SOCKET.TCP SKT.TmpCache .BS S.SOCKET.TCP

View File

@ -77,7 +77,12 @@ Cmd.Parse >STZ.G CMD.IntCmd
rts rts
.6 jsr CMD.AddCmdBufTokenToArgV .6 jsr CMD.CheckIO
bcc .7
tay
bne .9
jsr CMD.AddCmdBufTokenToArgV
bcs .9 bcs .9
.7 jsr CMD.NextCmdBufToken .7 jsr CMD.NextCmdBufToken
@ -644,6 +649,55 @@ Cmd.INT.IF >STZ.G CMD.IFNOT
.9 jmp Cmd.Exec.ERRSYN .9 jmp Cmd.Exec.ERRSYN
*-------------------------------------- *--------------------------------------
CMD.CheckIO >LDYA L.CMD.IO
jsr CMD.Search
bcs .9 not a IO token...should be an arg....
phx
jsr CMD.NextCmdBufToken skip this IO token
plx
jmp (J.CMD.IO,x)
.9 lda #0
rts
*--------------------------------------
CMD.IO.AMP
clc
rts
CMD.IO.PIPE
clc
rts
CMD.IO.IN
clc
rts
CMD.IO.OUTA
CMD.IO.1OUTA lda #O.WRONLY+O.APPEND+O.CREATE
CMD.IO.OUT
CMD.IO.1OUT lda #O.WRONLY+O.TRUNC+O.CREATE
lda (ZPCMDBuf)
beq .99 no arg left....
>LDYA ZPCMDBuf
>SYSCALL realpath
bcs .9
jsr CMD.NextCmdBufToken skip arg
clc
rts
.99 lda #E.SYN
sec
.9 rts
CMD.IO.2OUTA lda #O.WRONLY+O.APPEND+O.CREATE
CMD.IO.2OUT lda #O.WRONLY+O.TRUNC+O.CREATE
clc
rts
*--------------------------------------
CMD.NextCmdBufToken CMD.NextCmdBufToken
lda (ZPCMDBuf) lda (ZPCMDBuf)
inc ZPCMDBuf inc ZPCMDBuf

View File

@ -78,6 +78,15 @@ J.CMD.INT .DA Cmd.INT.STARTPROC
.DA Cmd.INT.SLEEP .DA Cmd.INT.SLEEP
.DA Cmd.INT.TIME .DA Cmd.INT.TIME
L.CMD.IO .DA CMD.IO L.CMD.IO .DA CMD.IO
J.CMD.IO .DA CMD.IO.AMP
.DA CMD.IO.PIPE
.DA CMD.IO.IN
.DA CMD.IO.OUTA
.DA CMD.IO.OUT
.DA CMD.IO.1OUTA
.DA CMD.IO.1OUT
.DA CMD.IO.2OUTA
.DA CMD.IO.2OUT
L.CSH.BOPS .DA CSH.BOPS L.CSH.BOPS .DA CSH.BOPS
J.CSH.BOPS .DA CSH.BOPS.ADD J.CSH.BOPS .DA CSH.BOPS.ADD
.DA CSH.BOPS.SUB .DA CSH.BOPS.SUB
@ -381,17 +390,6 @@ ENV.HOME .AZ "HOME"
*-------------------------------------- *--------------------------------------
* https://www.tldp.org/LDP/abs/html/io-redirection.html * https://www.tldp.org/LDP/abs/html/io-redirection.html
*-------------------------------------- *--------------------------------------
CMD.IO .AZ "&"
.AZ "|"
.AZ "<"
.AZ ">>"
.AZ ">"
.AZ "1>>"
.AZ "1>"
.AZ "2>>"
.AZ "2>"
.HS 00
*--------------------------------------
CMD.INT .AZ "STARTPROC" CMD.INT .AZ "STARTPROC"
.AZ "CD" .AZ "CD"
.AZ "DATE" .AZ "DATE"
@ -406,6 +404,17 @@ CMD.INT .AZ "STARTPROC"
.AZ "TIME" .AZ "TIME"
.HS 00 .HS 00
*-------------------------------------- *--------------------------------------
CMD.IO .AZ "&"
.AZ "|"
.AZ "<"
.AZ ">>"
.AZ ">"
.AZ "1>>"
.AZ "1>"
.AZ "2>>"
.AZ "2>"
.HS 00
*--------------------------------------
CMD.IF.Chars .AS "def" CMD.IF.Chars .AS "def"
CMD.IF.Chars.Cnt .EQ *-CMD.IF.Chars CMD.IF.Chars.Cnt .EQ *-CMD.IF.Chars
*-------------------------------------- *--------------------------------------