From 7d755dab016362c8dc4c1c7e8bbedbc69a9d9b3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Victor?= Date: Tue, 22 Jun 2021 11:25:48 +0200 Subject: [PATCH] Use CH11 address Use the Chaosnet address reported by the CH11 device, rather than the statically defined one. --- src/system/{chaos.289 => chaos.290} | 29 +++++++++++++++++++++++++---- src/system/{its.1650 => its.1651} | 11 +++++++++++ 2 files changed, 36 insertions(+), 4 deletions(-) rename src/system/{chaos.289 => chaos.290} (99%) rename src/system/{its.1650 => its.1651} (99%) diff --git a/src/system/chaos.289 b/src/system/chaos.290 similarity index 99% rename from src/system/chaos.289 rename to src/system/chaos.290 index c039fa0c..ef628bb4 100644 --- a/src/system/chaos.289 +++ b/src/system/chaos.290 @@ -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 diff --git a/src/system/its.1650 b/src/system/its.1651 similarity index 99% rename from src/system/its.1650 rename to src/system/its.1651 index 954b8858..36b2bb82 100644 --- a/src/system/its.1650 +++ b/src/system/its.1651 @@ -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