1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-13 15:27:28 +00:00

Use CH11 address

Use the Chaosnet address reported by the CH11 device, rather than the statically defined one.
This commit is contained in:
Björn Victor 2021-06-22 11:25:48 +02:00 committed by Lars Brinkhoff
parent 559f48fa57
commit 7d755dab01
2 changed files with 36 additions and 4 deletions

View File

@ -57,6 +57,13 @@ MXWIND==100 ;MAXIMUM WINDOW SIZE (8K WORDS)
.SEE CH10P ;1 MEANS USE CH10 HARDWARE TO GET TO CHAOS NET
.SEE CH11P ;1 MEANS USE UNIBUS CHAOSNET HARDWARE ON KS10
IFN CH11P,[
;; BV: Read this from the CH11 at boot, see IORDI A,CAIMYN in SYSTEM;ITS
MYCHDR: MYCHAD
;; my subnet, constructed from the above
MYCHSN: MYCHAD_-8
]
;Internet address of my Chaosnet Interface
.SEE IMPUS4 ; Should now be defined in CONFIG >
;IMPUS4==<.BYTE 4 ? 0 ? .BYTE 8 ? 128. ? 31. ? .BYTE 16. ? MYCHAD>
@ -318,6 +325,11 @@ CHASO4: SETZM CHSNBF(I)
SETZM CHSIBC(I)
MOVSI T,%CFOFF .SEE %CSCLS
MOVEM T,CHSSTA(I)
IFN CH11P,[
;; BV: initialize our local address
MOVE T,MYCHDR
DPB T,[.BP (777774),CHSLCL(I)]
]
LDB TT,[$CHXUN+40000,,CHSLCL(I)]
CAIE TT,CHXMUN ;INCREMENT THE UNIQUIZER
AOSA TT
@ -1261,7 +1273,8 @@ CHAPII: MOVE B,RECHDP ;SAVE HEADER FOR DEBUGGING IN RING BUFFER
JUMPN D,CHABRT ;FLUSH, NOT SUPPORTED
LDB D,[$CPKOP(A)] ;GET OPCODE
LDB B,[$CPKDA(A)] ;CHECK DESTINATION
CAIE B,MYCHAD ;IF FOR ME,
IFN CH11P, CAME B,MYCHDR
.ELSE CAIE B,MYCHAD ;IF FOR ME,
SKIPN B ;OR FOR ME BY VIRTUE OF BROADCAST
AOSA CHNPI ;ACCEPT IT
JRST CHAPFW ;NOT ME, FORWARD
@ -1472,6 +1485,11 @@ EXPUNGE FOO,BAR
HRRI B,%CPKDT+2(A)
BLT B,%CPKDT+7(A)
MOVE B,[.BYTE 8 ? MYCHAD/400 ? 1 ? 4+IFN CH10P+CH11P,[10.] ? 0 ]
IFN CH11P,[
;; BV: plug in my actual subnet at the right place
MOVE T,MYCHSN
DPB T,[.BP (776000),B]
]
MOVEM B,%CPKDT+10(A)
MOVEI B,%CPKDT+11(A)
HRLI B,441000
@ -1530,7 +1548,8 @@ CHIBRD: LDB T,[$CPKAN(A)] ;NUMBER OF BITMAP BYTES
BLT D,(TT)
SETZI TT,
DPB TT,[$CPKAN(A)] ;ZERO THE ACK FIELD
MOVEI TT,MYCHAD
IFN CH11P,MOVE TT,MYCHDR
.ELSE MOVEI TT,MYCHAD
DPB TT,[$CPKDA(A)] ;PRETEND IT WAS FOR ME
JRST CHIRFC ;AND HANDLE IT AS AN RFC
@ -2237,7 +2256,8 @@ CHXBK7: SETZM CHOSTA ;TRANSMITTER IDLE, LOOK FOR NEXT PACKET
LDB T,[$CPKDN(A)] ;GET DESTINATION SUBNET
HRRZ D,SBNRUT(T) ;GATEWAY TO THAT SUBNET
CAIGE T,NSUBNT
CAIN T,MYCHAD_-8 ;IF ON LOCAL CABLE
IFN CH11P,CAMN T,MYCHSN
.ELSE CAIN T,MYCHAD_-8 ;IF ON LOCAL CABLE
LDB D,[$CPKDA(A)] ;GO DIRECT
LSH D,16.+4
DATAO CHX,D ;STORE HARDWARE DESTINATION ADDRESS
@ -2469,7 +2489,8 @@ CHXXM6: JUMPGE H,CHXXM7 ;Jump if even packet length
CHXXM7: LDB T,[$CPKDN(A)] ;Get destination subnet
HRRZ D,SBNRUT(T) ;Gateway to that subnet
CAIGE T,NSUBNT
CAIN T,MYCHAD_-8 ;If on local cable,
IFN CH11P,CAMN T,MYCHSN
.ELSE CAIN T,MYCHAD_-8 ;If on local cable,
LDB D,[$CPKDA(A)] ; go direct
IOWRI D,CAIWBF ;Store hardware destination address
IORDI T,CAIXMT ;Transmit packet

View File

@ -21648,6 +21648,17 @@ IFN CH11P,[
XCTRI [IORDI A,CAIMYN]
CAIA
BUG HALT,[CHAOSNET INTERFACE NOT RESPONDING (CHECK THE BREAKER ON THE UNIBUS)]
;; BV: save the address the interface has
MOVEM A,MYCHDR
;; and hack symbol table for backwards compatibility (PEEK, at least)
MOVE B,[SQUOZE 0,MYCHAD]
PUSHJ P,SYMLK ;clobbers A,B,C, skip returns with ptr in C if successful
BUG HALT,[MYCHAD symbol not found]
MOVE A,MYCHDR
MOVEM A,(C)
;; and separately, the subnet part
LSH A,-8
MOVEM A,MYCHSN
] ;CH11P
IFN CHAOSP,[ IFN T11CHP,[
SKIPE TEN11F ;SET UP TEN-11 CHAOS NET INTERFACE PAGE