mirror of
https://github.com/PDP-10/its.git
synced 2026-05-01 14:06:28 +00:00
WIP: Telnet works!
This commit is contained in:
@@ -212,7 +212,7 @@ ETHRXI: PUSH P,Q ;IP can clobber all of these...
|
|||||||
PUSH P,H
|
PUSH P,H
|
||||||
|
|
||||||
MOVE A,I ;Compute number of words
|
MOVE A,I ;Compute number of words
|
||||||
AOS A
|
ADDI A,3
|
||||||
LSH A,-2
|
LSH A,-2
|
||||||
MOVE C,A
|
MOVE C,A
|
||||||
;BUG INFO,[IP ipgipt A=],OCT,A
|
;BUG INFO,[IP ipgipt A=],OCT,A
|
||||||
@@ -250,13 +250,6 @@ ETHTXI:
|
|||||||
PUSH P,I
|
PUSH P,I
|
||||||
PUSH P,R
|
PUSH P,R
|
||||||
|
|
||||||
; We'll either send this packet, or send an ARP request.
|
|
||||||
; Either way we'll need our MAC address in the Ethernet header.
|
|
||||||
LDB I,[%NEAT"HA01+ETHME]
|
|
||||||
LDB R,[%NEAT"HA2+ETHME]
|
|
||||||
DPB I,[%NEH"SMAC01+ETHHBF]
|
|
||||||
DPB R,[%NEH"SMAC2+ETHHBF]
|
|
||||||
|
|
||||||
; Search the ARP table for the destination address.
|
; Search the ARP table for the destination address.
|
||||||
MOVE C,PK.DST(A)
|
MOVE C,PK.DST(A)
|
||||||
BUG INFO,[ethtxi A=],OCT,A,[ dest=],OCT,C
|
BUG INFO,[ethtxi A=],OCT,A,[ dest=],OCT,C
|
||||||
@@ -290,6 +283,9 @@ ETHTX2: ;Not found in ARP table
|
|||||||
;requests rather than building it each time...
|
;requests rather than building it each time...
|
||||||
DPB C,[%NEAH"THA0+ETHABF]
|
DPB C,[%NEAH"THA0+ETHABF]
|
||||||
DPB C,[%NEAH"THA12+ETHABF]
|
DPB C,[%NEAH"THA12+ETHABF]
|
||||||
|
|
||||||
|
LDB I,[%NEAT"HA01+ETHME]
|
||||||
|
LDB R,[%NEAT"HA2+ETHME]
|
||||||
DPB I,[%NEAH"SHA01+ETHABF]
|
DPB I,[%NEAH"SHA01+ETHABF]
|
||||||
DPB R,[%NEAH"SHA2+ETHABF]
|
DPB R,[%NEAH"SHA2+ETHABF]
|
||||||
|
|
||||||
@@ -334,7 +330,9 @@ ETHTX5: PUSHJ P,ETHTX ;Send it!
|
|||||||
POP P,C
|
POP P,C
|
||||||
POPJ P,
|
POPJ P,
|
||||||
|
|
||||||
;Send an Ethernet packet (if possible).
|
;Send an Ethernet packet.
|
||||||
|
;The source MAC address in the Ethernet header will be filled in
|
||||||
|
;automatically (by the adapter).
|
||||||
;Unpacked header is in ETHHBF. R contains pointer to unpacked data.
|
;Unpacked header is in ETHHBF. R contains pointer to unpacked data.
|
||||||
;I contains data length in bytes.
|
;I contains data length in bytes.
|
||||||
;Clobbers A, B, C, TT, I.
|
;Clobbers A, B, C, TT, I.
|
||||||
@@ -361,7 +359,7 @@ ETHTX: BUG INFO,[ethtx ptr ],OCT,R,[ len ],OCT,I
|
|||||||
BLTBU TT,(A)
|
BLTBU TT,(A)
|
||||||
|
|
||||||
ADDI I,%NEH"LENGTH-%NEH"PAD ;Add length of header
|
ADDI I,%NEH"LENGTH-%NEH"PAD ;Add length of header
|
||||||
;BUG INFO,[ethtx end desc ],OCT,D,[ len ],OCT,I
|
BUG INFO,[ethtx end desc ],OCT,D,[ len ],OCT,I
|
||||||
JRST UNATX ;Transmit it
|
JRST UNATX ;Transmit it
|
||||||
|
|
||||||
;Check whether the interface is able to send a packet.
|
;Check whether the interface is able to send a packet.
|
||||||
|
|||||||
@@ -2059,6 +2059,7 @@ SUBTTL TCP Input Interrupt Level
|
|||||||
%TSIFL==4 ; Bad seq, flush after handling RST/ACK/URG
|
%TSIFL==4 ; Bad seq, flush after handling RST/ACK/URG
|
||||||
|
|
||||||
TCPIS: METER("TCP: Segs rcvd")
|
TCPIS: METER("TCP: Segs rcvd")
|
||||||
|
BUG INFO,[tcpis]
|
||||||
SKIPN TCPUP ; Unless TCP claims to be up,
|
SKIPN TCPUP ; Unless TCP claims to be up,
|
||||||
JRST TSIFL ; Throw it away, no TCP yet, sigh.
|
JRST TSIFL ; Throw it away, no TCP yet, sigh.
|
||||||
|
|
||||||
@@ -2066,6 +2067,7 @@ TCPIS: METER("TCP: Segs rcvd")
|
|||||||
; checksumming it (sigh!). TT gets total # bytes in TCP segment.
|
; checksumming it (sigh!). TT gets total # bytes in TCP segment.
|
||||||
CALL THCKSI ; Get checksum in A for segment
|
CALL THCKSI ; Get checksum in A for segment
|
||||||
LDB B,[TH$CKS (H)] ; Get segment's checksum
|
LDB B,[TH$CKS (H)] ; Get segment's checksum
|
||||||
|
BUG INFO,[tcpis csum=],OCT,B,[ exp=],OCT,A
|
||||||
CAME A,B ; Should match.
|
CAME A,B ; Should match.
|
||||||
JRST TSIF01 ; Failed, go bump err count and flush it.
|
JRST TSIF01 ; Failed, go bump err count and flush it.
|
||||||
LDB T,[TH$THL (H)] ; Find TCP header length in words
|
LDB T,[TH$THL (H)] ; Find TCP header length in words
|
||||||
|
|||||||
Reference in New Issue
Block a user