1
0
mirror of synced 2026-03-12 21:53:56 +00:00

Avoids making copy of \10MBLOCALNDB as \MAIKO.10MB.NDB for \MAIKO.ETHER-INTERRUPT

This commit is contained in:
Nick Briggs
2026-01-23 18:51:15 -08:00
parent 09b6b1e854
commit 1bf3f50d98
2 changed files with 110 additions and 139 deletions

View File

@@ -1,14 +1,14 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
(FILECREATED "25-Oct-2021 15:12:33" |{DSK}<home>larry>medley>sources>MAIKOETHER.;2| 28792
(FILECREATED "30-Dec-2025 19:09:34" |{DSK}<Users>briggs>projects>medley>sources>MAIKOETHER.;7| 26899
|changes| |to:| (FNS \\DISPLAYLINE)
(VARS MAIKOETHERCOMS)
:EDIT-BY |nhb|
|previous| |date:| "25-Mar-2021 09:50:57" |{DSK}<home>larry>medley>sources>MAIKOETHER.;1|)
:CHANGES-TO (VARS MAIKOETHERCOMS)
:PREVIOUS-DATE "30-Dec-2025 18:50:46" |{DSK}<Users>briggs>projects>medley>sources>MAIKOETHER.;6|
)
; Copyright (c) 1988-1991, 2021 by Venue & Xerox Corporation.
(PRETTYCOMPRINT MAIKOETHERCOMS)
@@ -23,10 +23,6 @@
(DECLARE\: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP)
10MBDRIVER)
(GLOBALVARS \\MAIKO.INPUT.PACKET |\\ETHERtopMonitor|)
(* |;;| "The NDB for Maiko's 10MB connection; used by \\MAIKO.ETHER-INTERRUPT:")
(GLOBALVARS \\MAIKO.10MB.NDB)
(GLOBALVARS \\MAIKO.IO-INTERRUPT-FLAGS \\MAIKO.IO-INTERRUPT-VECTOR))
(ADDVARS (\\MAIKO.MOVDS (\\MAIKO.10MBSTARTDRIVER \\10MB.STARTDRIVER)
(\\MAIKO.10MBWATCHER \\10MBWATCHER)
@@ -35,9 +31,13 @@
(\\MAIKO.10MBTURNONETHER \\10MB.TURNONETHER)
(\\MAIKO.ETHERRESUME \\10MB.RESTART.ETHER)
(\\MAIKO.CHECKSUM \\CHECKSUM)))
(COMS (* \; "MAIKO handler for new interrupt-driven incoming ethernet communication, rather than polling for it.")
(COMS
(* |;;| "MAIKO handler for new interrupt-driven incoming ethernet communication, rather than polling for it.")
(FNS \\MAIKO.ETHER-INTERRUPT))
(COMS (* \; "MAIKO Log & Console message handling. Interrupt-driven message printing, instead of polled printing.")
(COMS
(* |;;| "MAIKO Log & Console message handling. Interrupt-driven message printing, instead of polled printing.")
(FNS \\MAIKO.CONSOLE-LOG-PRINT))
(COMS
(* |;;| "Asynchronous I/O handling")
@@ -48,13 +48,12 @@
(DEFINEQ
(\\10MB.RESTART.ETHER
(LAMBDA NIL (* \; "Edited 11-May-88 16:09 by MASINTER")
(LAMBDA NIL (* \; "Edited 11-May-88 16:09 by MASINTER")
(SUBRCALL ETHER-RESUME)))
(\\10MB.STARTDRIVER
(LAMBDA (NDB RESTARTFLG MYNSNUMBER) (* \; "Edited 5-Apr-89 15:03 by snow")
(DECLARE (GLOBALVARS \\MAIKO.INPUT.PACKET \\10MB.EXPECTED.RECEIVE.INTERVAL
\\10MB.INPUT.TIMEOUT))
(LAMBDA (NDB RESTARTFLG MYNSNUMBER) (* \; "Edited 5-Apr-89 15:03 by snow")
(DECLARE (GLOBALVARS \\MAIKO.INPUT.PACKET \\10MB.EXPECTED.RECEIVE.INTERVAL \\10MB.INPUT.TIMEOUT))
(SUBRCALL ETHER-SUSPEND)
(OR (\\INIT.ETHER.BUFFER.POOL)
(ERROR "Unable to create buffer pool"))
@@ -65,21 +64,17 @@
0 0)
(PROG ((CSB (|fetch| NDBCSB |of| NDB)))
(OR \\MAIKO.INPUT.PACKET (SETQ \\MAIKO.INPUT.PACKET (\\ALLOCATE.ETHERPACKET)))
(|replace| DLFIRSTICB |of| (|fetch| NDBCSB |of| NDB) |with|
\\ES.PENDING)
(SUBRCALL ETHER-GET \\10MBPACKETLENGTH (|fetch| 10MBPACKETBASE |of|
\\MAIKO.INPUT.PACKET
))
(|replace| NDBWATCHER |of| NDB |with| (ADD.PROCESS (LIST '\\10MBWATCHER
(KWOTE NDB))
'RESTARTABLE
'SYSTEM
'AFTEREXIT
'DELETE))
(|replace| DLFIRSTICB |of| (|fetch| NDBCSB |of| NDB) |with| \\ES.PENDING)
(SUBRCALL ETHER-GET \\10MBPACKETLENGTH (|fetch| 10MBPACKETBASE |of| \\MAIKO.INPUT.PACKET))
(|replace| NDBWATCHER |of| NDB |with| (ADD.PROCESS (LIST '\\10MBWATCHER (KWOTE NDB))
'RESTARTABLE
'SYSTEM
'AFTEREXIT
'DELETE))
(RETURN NDB))))
(\\10MB.TURNOFFETHER
(LAMBDA NIL (* \; "Edited 11-May-88 16:11 by MASINTER")
(LAMBDA NIL (* \; "Edited 11-May-88 16:11 by MASINTER")
(SUBRCALL ETHER-SUSPEND)))
(\\10MB.TURNONETHER
@@ -92,20 +87,16 @@
(PROG ((CSB (|fetch| NDBCSB |of| NDB)))
(\\MAIKO.ETHERSUSPEND)
(OR CSB (|replace| NDBCSB |of| NDB |with| (SETQ CSB
(LOCF (|fetch| DLETHERNET
|of| \\IOPAGE)))))
(OR CSB (|replace| NDBCSB |of| NDB |with| (SETQ CSB (LOCF (|fetch| DLETHERNET |of| \\IOPAGE
)))))
(|replace| DLFIRSTOCB |of| CSB |with| 0)
(|replace| DLFIRSTICB |of| CSB |with| 0)
(AND NSHOSTNUMBER (COND
((EQ NSHOSTNUMBER T)
(\\BLT (LOCF (|fetch| DLLOCALHOST0 |of| CSB))
(LOCF (|fetch| (IFPAGE |NSHost0|) |of|
|\\InterfacePage|)
)
(LOCF (|fetch| (IFPAGE |NSHost0|) |of| |\\InterfacePage|))
\\#WDS.NSHOSTNUMBER))
(T (\\STORENSHOSTNUMBER (LOCF (|fetch| DLLOCALHOST0 |of|
CSB))
(T (\\STORENSHOSTNUMBER (LOCF (|fetch| DLLOCALHOST0 |of| CSB))
NSHOSTNUMBER))))
(AND OUTINTERRUPT (|replace| DLOUTPUTMASK |of| CSB |with| OUTINTERRUPT))
(AND ININTERRUPT (|replace| DLINPUTMASK |of| CSB |with| ININTERRUPT))
@@ -117,7 +108,7 @@
(RETURN NDB))))
(\\10MBSENDPACKET
(LAMBDA (NDB PACKET) (* \; "Edited 11-May-88 16:10 by MASINTER")
(LAMBDA (NDB PACKET) (* \; "Edited 11-May-88 16:10 by MASINTER")
(PROG NIL
(COND
(\\RAWTRACING (\\MAYBEPRINTPACKET PACKET 'RAWPUT)))
@@ -125,23 +116,23 @@
((OR (|fetch| 10MBMULTICASTP |of| PACKET)
(EQNSADDRESS.HOST \\MY.NSADDRESS (|fetch| 10MBDESTHOSTBASE |of| PACKET)))
(* \;
 "We would hear this packet if our hardware let us, so fake receipt")
 "We would hear this packet if our hardware let us, so fake receipt")
(PROG ((COPYPACKET (\\ALLOCATE.ETHERPACKET)))
(\\BLT (LOCF (|fetch| 10MBLENGTH |of| COPYPACKET))
(LOCF (|fetch| 10MBLENGTH |of| PACKET))
(ADD1 (|fetch| 10MBLENGTH |of| PACKET)))
(* \;
 "Copy all data that would have been transmitted")
 "Copy all data that would have been transmitted")
(|replace| EPNETWORK |of| COPYPACKET |with| NDB)
(|replace| EPTYPE |of| COPYPACKET
|with| (|for| PAIR |in| \\10MBTYPE.TRANSLATIONS
|bind| (TYPE _ (|fetch| 10MBTYPE |of| PACKET))
|when| (EQ TYPE (CAR PAIR)) |do|
|bind| (TYPE _ (|fetch| 10MBTYPE |of| PACKET))
|when| (EQ TYPE (CAR PAIR)) |do|
(* |;;| "TYPE is the raw type of the etherpacket. These do not always correspond one-to-one with the EPTYPE constants we use (in particular, for pups), so translate if necessary.")
(RETURN (CDR PAIR))
|finally| (RETURN TYPE)))
(RETURN (CDR PAIR))
|finally| (RETURN TYPE)))
(COND
(\\RAWTRACING (\\MAYBEPRINTPACKET COPYPACKET 'RAWGET)))
(\\HANDLE.RAW.PACKET COPYPACKET))))
@@ -154,20 +145,21 @@
(RETURN T))))
(\\10MBWATCHER
(LAMBDA (NDB) (* \; "Edited 16-May-88 22:24 by MASINTER")
(LAMBDA (NDB) (* \; "Edited 16-May-88 22:24 by MASINTER")
(* |;;| "merge message and packet reading")
(PROG ((CNTR 0)
MESSAGE-BUFFER MESSAGE-LENGTH PACKET)
LP (IF (SUBRCALL MESSAGE-READP)
THEN (PROMPTPRINT (IF (SETQ MESSAGE-LENGTH (SUBRCALL MESSAGE-READ
(OR MESSAGE-BUFFER
(SETQ MESSAGE-BUFFER
(ALLOCSTRING 1024)))
1024))
THEN (SUBSTRING MESSAGE-BUFFER 1 MESSAGE-LENGTH)
ELSE "?? system message: polling failed")))
THEN (PROMPTPRINT (IF (SETQ MESSAGE-LENGTH (SUBRCALL MESSAGE-READ (OR MESSAGE-BUFFER
(SETQ
MESSAGE-BUFFER
(ALLOCSTRING
1024)))
1024))
THEN (SUBSTRING MESSAGE-BUFFER 1 MESSAGE-LENGTH)
ELSE "?? system message: polling failed")))
(UNINTERRUPTABLY
(SUBRCALL ETHER-CHECK)
(SETQ PACKET (\\MAIKO.INPUT.INTERRUPT NDB)))
@@ -182,31 +174,31 @@
(GO LP))))
(\\MAIKO.10MBSENDPACKET
(LAMBDA (NDB PACKET) (* \; "Edited 31-Oct-89 14:10 by bvm")
(LAMBDA (NDB PACKET) (* \; "Edited 31-Oct-89 14:10 by bvm")
(PROG NIL
(COND
(\\RAWTRACING (\\MAYBEPRINTPACKET PACKET 'RAWPUT)))
(COND
((OR (|fetch| 10MBMULTICASTP |of| PACKET)
(EQNSADDRESS.HOST \\MY.NSADDRESS (|fetch| 10MBDESTNSADDRESSBASE |of| PACKET
)))(* \;
 "We would hear this packet if our hardware let us, so fake receipt")
(EQNSADDRESS.HOST \\MY.NSADDRESS (|fetch| 10MBDESTNSADDRESSBASE |of| PACKET)))
(* \;
 "We would hear this packet if our hardware let us, so fake receipt")
(PROG ((COPYPACKET (\\ALLOCATE.ETHERPACKET)))
(\\BLT (LOCF (|fetch| 10MBLENGTH |of| COPYPACKET))
(LOCF (|fetch| 10MBLENGTH |of| PACKET))
(ADD1 (|fetch| 10MBLENGTH |of| PACKET)))
(* \;
 "Copy all data that would have been transmitted")
 "Copy all data that would have been transmitted")
(|replace| EPNETWORK |of| COPYPACKET |with| NDB)
(|replace| EPTYPE |of| COPYPACKET
|with| (|for| PAIR |in| \\10MBTYPE.TRANSLATIONS
|bind| (TYPE _ (|fetch| 10MBTYPE |of| PACKET))
|when| (EQ TYPE (CAR PAIR)) |do|
|bind| (TYPE _ (|fetch| 10MBTYPE |of| PACKET))
|when| (EQ TYPE (CAR PAIR)) |do|
(* |;;| "TYPE is the raw type of the etherpacket. These do not always correspond one-to-one with the EPTYPE constants we use (in particular, for pups), so translate if necessary.")
(RETURN (CDR PAIR))
|finally| (RETURN TYPE)))
(RETURN (CDR PAIR))
|finally| (RETURN TYPE)))
(COND
(\\RAWTRACING (\\MAYBEPRINTPACKET COPYPACKET 'RAWGET)))
(\\HANDLE.RAW.PACKET COPYPACKET))))
@@ -219,20 +211,21 @@
(RETURN T))))
(\\MAIKO.10MBWATCHER
(LAMBDA (NDB) (* \; "Edited 16-May-88 22:24 by MASINTER")
(LAMBDA (NDB) (* \; "Edited 16-May-88 22:24 by MASINTER")
(* |;;| "merge message and packet reading")
(PROG ((CNTR 0)
MESSAGE-BUFFER MESSAGE-LENGTH PACKET)
LP (IF (SUBRCALL MESSAGE-READP)
THEN (PROMPTPRINT (IF (SETQ MESSAGE-LENGTH (SUBRCALL MESSAGE-READ
(OR MESSAGE-BUFFER
(SETQ MESSAGE-BUFFER
(ALLOCSTRING 1024)))
1024))
THEN (SUBSTRING MESSAGE-BUFFER 1 MESSAGE-LENGTH)
ELSE "?? system message: polling failed")))
THEN (PROMPTPRINT (IF (SETQ MESSAGE-LENGTH (SUBRCALL MESSAGE-READ (OR MESSAGE-BUFFER
(SETQ
MESSAGE-BUFFER
(ALLOCSTRING
1024)))
1024))
THEN (SUBSTRING MESSAGE-BUFFER 1 MESSAGE-LENGTH)
ELSE "?? system message: polling failed")))
(UNINTERRUPTABLY
(SUBRCALL ETHER-CHECK)
(SETQ PACKET (\\MAIKO.INPUT.INTERRUPT NDB)))
@@ -247,15 +240,15 @@
(GO LP))))
(\\MAIKO.ETHERRESUME
(LAMBDA NIL (* \; "Edited 11-May-88 16:09 by MASINTER")
(LAMBDA NIL (* \; "Edited 11-May-88 16:09 by MASINTER")
(SUBRCALL ETHER-RESUME)))
(\\MAIKO.ETHERSUSPEND
(LAMBDA NIL (* \; "Edited 11-May-88 16:11 by MASINTER")
(LAMBDA NIL (* \; "Edited 11-May-88 16:11 by MASINTER")
(SUBRCALL ETHER-SUSPEND)))
(\\MAIKO.INPUT.INTERRUPT
(LAMBDA (NDB) (* \; "Edited 11-May-88 16:05 by MASINTER")
(LAMBDA (NDB) (* \; "Edited 11-May-88 16:05 by MASINTER")
(* |;;| "This routine gets called when 10MB input signals an interrupt. See if the \\MAIKO.INPUT.PACKET has indeed been processed, and if so, take care of it")
@@ -266,43 +259,38 @@
(|replace| 10MBLENGTH |of| PACKET |with| LENGTH)
(\\RCLK (LOCF (|fetch| EPTIMESTAMP |of| PACKET)))
(|replace| EPNETWORK |of| PACKET |with| NDB)
(|replace| EPTYPE |of| PACKET |with| (|for| PAIR |in|
\\10MBTYPE.TRANSLATIONS
|bind| (TYPE _
(|fetch|
10MBTYPE
|of| PACKET
))
|when| (EQ TYPE (CAR PAIR))
|do| (RETURN (CDR PAIR))
|finally| (RETURN TYPE)))
(|replace| EPTYPE |of| PACKET |with| (|for| PAIR |in| \\10MBTYPE.TRANSLATIONS
|bind| (TYPE _ (|fetch| 10MBTYPE |of| PACKET))
|when| (EQ TYPE (CAR PAIR))
|do| (RETURN (CDR PAIR))
|finally| (RETURN TYPE)))
(COND
(\\RAWTRACING (\\MAYBEPRINTPACKET PACKET 'RAWGET)))
(RETURN (PROG1 PACKET
(SETQ \\MAIKO.INPUT.PACKET (\\ALLOCATE.ETHERPACKET))
(|replace| DLFIRSTICB |of| (|fetch| NDBCSB |of| NDB)
|with| \\ES.PENDING)
(SUBRCALL ETHER-GET \\10MBPACKETLENGTH (|fetch| 10MBPACKETBASE
|of| \\MAIKO.INPUT.PACKET))))
)
(|replace| DLFIRSTICB |of| (|fetch| NDBCSB |of| NDB) |with| \\ES.PENDING)
(SUBRCALL ETHER-GET \\10MBPACKETLENGTH (|fetch| 10MBPACKETBASE |of|
\\MAIKO.INPUT.PACKET
)))))
(T (RETURN NIL))))))
(\\NS.SETTIME
(LAMBDA (RETFLG) (* \; "Edited 13-May-88 15:22 by MASINTER")
(LAMBDA (RETFLG) (* \; "Edited 13-May-88 15:22 by MASINTER")
(CL:UNLESS (AND RETFLG (NOT (STRINGP RETFLG)))
(SETQ |\\TimeZoneComp| (SUBRCALL GETUNIXTIME 8 NIL)))
(\\PROCESS.RESET.TIMERS)
(DAYTIME)))
(\\PUP.SETTIME
(LAMBDA (RETFLG) (* \; "Edited 13-May-88 15:22 by MASINTER")
(LAMBDA (RETFLG) (* \; "Edited 13-May-88 15:22 by MASINTER")
(CL:UNLESS (AND RETFLG (NOT (STRINGP RETFLG)))
(SETQ |\\TimeZoneComp| (SUBRCALL GETUNIXTIME 8 NIL)))
(\\PROCESS.RESET.TIMERS)
(DAYTIME)))
(\\MAIKO.10MBSTARTDRIVER
(LAMBDA (NDB RESTARTFLG MYNSNUMBER) (* \; "Edited 4-May-91 15:50 by jds")
(LAMBDA (NDB RESTARTFLG MYNSNUMBER) (* \; "Edited 30-Dec-2025 18:50 by nhb")
(* \; "Edited 4-May-91 15:50 by jds")
(* |;;| "Start the \"driver\" for the 10MB ethernet on Sun Medley. In particular, turn on the C ehternet code, queue up the first input packet, and start the \\10MBWATCHER process.")
@@ -312,13 +300,11 @@
(|replace| NDBTQ |of| NDB |with| (|create| SYSQUEUE))
(SETQ \\10MB.RAWPACKETQ (|create| SYSQUEUE))
(SETQ \\10MB.INPUT.TIMEOUT (TIMES \\RCLKSECOND \\10MB.EXPECTED.RECEIVE.INTERVAL))
(SETQ \\MAIKO.10MB.NDB NDB)
(\\10MB.TURNONETHER NDB NIL NIL (OR MYNSNUMBER T)
0 0)
(PROG ((CSB (|fetch| NDBCSB |of| NDB)))
(OR \\MAIKO.INPUT.PACKET (SETQ \\MAIKO.INPUT.PACKET (\\ALLOCATE.ETHERPACKET)))
(|replace| DLFIRSTICB |of| (|fetch| NDBCSB |of| NDB) |with|
\\ES.PENDING)
(|replace| DLFIRSTICB |of| (|fetch| NDBCSB |of| NDB) |with| \\ES.PENDING)
(AND (SUBRCALL ETHER-GET \\10MBPACKETLENGTH (|fetch| 10MBPACKETBASE |of|
\\MAIKO.INPUT.PACKET
))
@@ -340,20 +326,16 @@
(PROG ((CSB (|fetch| NDBCSB |of| NDB)))
(\\MAIKO.ETHERSUSPEND)
(OR CSB (|replace| NDBCSB |of| NDB |with| (SETQ CSB
(LOCF (|fetch| DLETHERNET
|of| \\IOPAGE)))))
(OR CSB (|replace| NDBCSB |of| NDB |with| (SETQ CSB (LOCF (|fetch| DLETHERNET |of| \\IOPAGE
)))))
(|replace| DLFIRSTOCB |of| CSB |with| 0)
(|replace| DLFIRSTICB |of| CSB |with| 0)
(AND NSHOSTNUMBER (COND
((EQ NSHOSTNUMBER T)
(\\BLT (LOCF (|fetch| DLLOCALHOST0 |of| CSB))
(LOCF (|fetch| (IFPAGE |NSHost0|) |of|
|\\InterfacePage|)
)
(LOCF (|fetch| (IFPAGE |NSHost0|) |of| |\\InterfacePage|))
\\#WDS.NSHOSTNUMBER))
(T (\\STORENSHOSTNUMBER (LOCF (|fetch| DLLOCALHOST0 |of|
CSB))
(T (\\STORENSHOSTNUMBER (LOCF (|fetch| DLLOCALHOST0 |of| CSB))
NSHOSTNUMBER))))
(AND OUTINTERRUPT (|replace| DLOUTPUTMASK |of| CSB |with| OUTINTERRUPT))
(AND ININTERRUPT (|replace| DLINPUTMASK |of| CSB |with| ININTERRUPT))
@@ -365,14 +347,14 @@
(RETURN NDB))))
(\\MAIKO.10MB.RESTART.ETHER
(LAMBDA (NDB) (* \; "Edited 11-May-88 16:08 by MASINTER")
(LAMBDA (NDB) (* \; "Edited 11-May-88 16:08 by MASINTER")
(* |;;;| "Kick the Ethernet receiver task to restart the Ethernet receiver task. This function gets called when the 10MBDRIVER thinks the Ethernet has been accidentally disabled")
(SUBRCALL ETHER-RESUME)))
(\\MAIKO.CHECKSUM
(LAMBDA (BASE NWORDS INITSUM) (* \; "Edited 20-May-88 11:48 by MASINTER")
(LAMBDA (BASE NWORDS INITSUM) (* \; "Edited 20-May-88 11:48 by MASINTER")
(SUBRCALL CHECK-SUM BASE NWORDS INITSUM)))
)
@@ -391,41 +373,37 @@
(DECLARE\: DOEVAL@COMPILE DONTCOPY
(GLOBALVARS \\MAIKO.10MB.NDB)
)
(DECLARE\: DOEVAL@COMPILE DONTCOPY
(GLOBALVARS \\MAIKO.IO-INTERRUPT-FLAGS \\MAIKO.IO-INTERRUPT-VECTOR)
)
)
(ADDTOVAR \\MAIKO.MOVDS (\\MAIKO.10MBSTARTDRIVER \\10MB.STARTDRIVER)
(\\MAIKO.10MBWATCHER \\10MBWATCHER)
(\\MAIKO.10MBSENDPACKET \\10MBSENDPACKET)
(\\MAIKO.ETHERSUSPEND \\10MB.TURNOFFETHER)
(\\MAIKO.10MBTURNONETHER \\10MB.TURNONETHER)
(\\MAIKO.ETHERRESUME \\10MB.RESTART.ETHER)
(\\MAIKO.CHECKSUM \\CHECKSUM))
(\\MAIKO.10MBWATCHER \\10MBWATCHER)
(\\MAIKO.10MBSENDPACKET \\10MBSENDPACKET)
(\\MAIKO.ETHERSUSPEND \\10MB.TURNOFFETHER)
(\\MAIKO.10MBTURNONETHER \\10MB.TURNONETHER)
(\\MAIKO.ETHERRESUME \\10MB.RESTART.ETHER)
(\\MAIKO.CHECKSUM \\CHECKSUM))
(* \;
(* |;;|
"MAIKO handler for new interrupt-driven incoming ethernet communication, rather than polling for it.")
(DEFINEQ
(\\MAIKO.ETHER-INTERRUPT
(LAMBDA NIL (* \; "Edited 4-May-91 13:46 by jds")
(LAMBDA NIL (* \; "Edited 30-Dec-2025 18:36 by nhb")
(* \; "Edited 4-May-91 13:46 by jds")
(* |;;| "This routine gets called when 10MB input signals an interrupt. See if the \\MAIKO.INPUT.PACKET has indeed been processed, and if so, take care of it")
(PROG ((NDB \\MAIKO.10MB.NDB)
(PROG ((NDB \\10MBLOCALNDB)
LENGTH)
(* |;;| "First, turn off the interrupt flag:")
(REPLACE (INTERRUPTSTATE ETHERINTERRUPT) OF \\INTERRUPTSTATE WITH NIL)
(|replace| (INTERRUPTSTATE ETHERINTERRUPT) |of| \\INTERRUPTSTATE |with| NIL)
(* |;;| "Now handle it:")
@@ -437,33 +415,27 @@
READ-MORE-LOOP
(COND
((NEQ (SETQ LENGTH (|fetch| DLFIRSTICB |of| (|fetch| NDBCSB
|of| NDB)))
((NEQ (SETQ LENGTH (|fetch| DLFIRSTICB |of| (|fetch| NDBCSB |of| NDB)))
\\ES.PENDING)
(|replace| 10MBLENGTH |of| PACKET |with| LENGTH)
(\\RCLK (LOCF (|fetch| EPTIMESTAMP |of| PACKET)))
(|replace| EPNETWORK |of| PACKET |with| NDB)
(|replace| EPTYPE |of| PACKET
|with| (|for| PAIR |in| \\10MBTYPE.TRANSLATIONS
|bind| (TYPE _ (|fetch| 10MBTYPE |of| PACKET
))
|when| (EQ TYPE (CAR PAIR))
|do| (RETURN (CDR PAIR)) |finally| (RETURN
TYPE)))
|bind| (TYPE _ (|fetch| 10MBTYPE |of| PACKET))
|when| (EQ TYPE (CAR PAIR)) |do| (RETURN (CDR PAIR))
|finally| (RETURN TYPE)))
(COND
(\\RAWTRACING (\\MAYBEPRINTPACKET PACKET 'RAWGET)))
(\\HANDLE.RAW.PACKET PACKET)
(SETQ \\MAIKO.INPUT.PACKET (\\ALLOCATE.ETHERPACKET))
(|replace| DLFIRSTICB |of| (|fetch| NDBCSB |of| NDB)
|with| \\ES.PENDING)
(|replace| DLFIRSTICB |of| (|fetch| NDBCSB |of| NDB) |with| \\ES.PENDING)
(COND
((SUBRCALL ETHER-GET \\10MBPACKETLENGTH (|fetch| 10MBPACKETBASE
|of|
\\MAIKO.INPUT.PACKET)
)
|of| \\MAIKO.INPUT.PACKET))
(* |;;|
 "Returned T, so there's another packet waiting already. Process it.")
 "Returned T, so there's another packet waiting already. Process it.")
(SETQ PACKET \\MAIKO.INPUT.PACKET)
(GO READ-MORE-LOOP)))))))))))
@@ -471,7 +443,7 @@
(* \;
(* |;;|
"MAIKO Log & Console message handling. Interrupt-driven message printing, instead of polled printing."
)
@@ -527,14 +499,13 @@
(RPAQ \\MAIKO.IO-INTERRUPT-FLAGS (\\CREATECELL \\FIXP))
(RPAQQ \\MAIKO.IO-INTERRUPT-VECTOR NIL)
(PUTPROPS MAIKOETHER COPYRIGHT ("Venue & Xerox Corporation" 1988 1989 1990 1991 2021))
(DECLARE\: DONTCOPY
(FILEMAP (NIL (2591 22216 (\\10MB.RESTART.ETHER 2601 . 2761) (\\10MB.STARTDRIVER 2763 . 4522) (
\\10MB.TURNOFFETHER 4524 . 4684) (\\10MB.TURNONETHER 4686 . 7056) (\\10MBSENDPACKET 7058 . 9429) (
\\10MBWATCHER 9431 . 10770) (\\MAIKO.10MBSENDPACKET 10772 . 13150) (\\MAIKO.10MBWATCHER 13152 . 14497)
(\\MAIKO.ETHERRESUME 14499 . 14658) (\\MAIKO.ETHERSUSPEND 14660 . 14821) (\\MAIKO.INPUT.INTERRUPT
14823 . 17085) (\\NS.SETTIME 17087 . 17367) (\\PUP.SETTIME 17369 . 17650) (\\MAIKO.10MBSTARTDRIVER
17652 . 19307) (\\MAIKO.10MBTURNONETHER 19309 . 21684) (\\MAIKO.10MB.RESTART.ETHER 21686 . 22039) (
\\MAIKO.CHECKSUM 22041 . 22214)) (23271 26336 (\\MAIKO.ETHER-INTERRUPT 23281 . 26334)) (26458 27821 (
\\MAIKO.CONSOLE-LOG-PRINT 26468 . 27819)) (27867 28547 (\\MAIKO.IO-INTERRUPT 27877 . 28545)))))
(FILEMAP (NIL (2301 20787 (\\10MB.RESTART.ETHER 2311 . 2475) (\\10MB.STARTDRIVER 2477 . 3863) (
\\10MB.TURNOFFETHER 3865 . 4029) (\\10MB.TURNONETHER 4031 . 6121) (\\10MBSENDPACKET 6123 . 8481) (
\\10MBWATCHER 8483 . 9926) (\\MAIKO.10MBSENDPACKET 9928 . 12296) (\\MAIKO.10MBWATCHER 12298 . 13747) (
\\MAIKO.ETHERRESUME 13749 . 13912) (\\MAIKO.ETHERSUSPEND 13914 . 14079) (\\MAIKO.INPUT.INTERRUPT 14081
. 15925) (\\NS.SETTIME 15927 . 16211) (\\PUP.SETTIME 16213 . 16498) (\\MAIKO.10MBSTARTDRIVER 16500 .
18150) (\\MAIKO.10MBTURNONETHER 18152 . 20247) (\\MAIKO.10MB.RESTART.ETHER 20249 . 20606) (
\\MAIKO.CHECKSUM 20608 . 20785)) (21751 24528 (\\MAIKO.ETHER-INTERRUPT 21761 . 24526)) (24652 26015 (
\\MAIKO.CONSOLE-LOG-PRINT 24662 . 26013)) (26061 26741 (\\MAIKO.IO-INTERRUPT 26071 . 26739)))))
STOP

Binary file not shown.