{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: IPBSCAN867)}}
====== IPBSCAN867 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:BXE|BXE]], [[george:macro:CCERROR|CCERROR]], [[george:macro:CHAIN|CHAIN]], [[george:macro:COOR1|COOR1]], [[george:macro:DETACH|DETACH]], [[george:macro:DOWN|DOWN]], [[george:macro:FPUT|FPUT]], [[george:macro:FREECORE|FREECORE]], [[george:macro:FSHCODE|FSHCODE]], [[george:macro:FSHSKIP|FSHSKIP]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETACT|GETACT]], [[george:macro:HUNT2|HUNT2]], [[george:macro:HUNT2J|HUNT2J]], [[george:macro:HUNTW|HUNTW]], [[george:macro:JENVNOT|JENVNOT]], [[george:macro:JV7900|JV7900]], [[george:macro:LGEOG|LGEOG]], [[george:macro:LINKSET|LINKSET]], [[george:macro:LOCK|LOCK]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MURDER|MURDER]], [[george:macro:OPEN|OPEN]], [[george:macro:PAIR|PAIR]], [[george:macro:PHOTO|PHOTO]], [[george:macro:RERING|RERING]], [[george:macro:RESET|RESET]], [[george:macro:RING2CHK|RING2CHK]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:SUICIDE|SUICIDE]], [[george:macro:TESTMOVE|TESTMOVE]], [[george:macro:UP|UP]], [[george:macro:UPDATE|UPDATE]], [[george:macro:UPPLUS|UPPLUS]], [[george:macro:WRONG|WRONG]]
22FL #SEG IPBSCAN8 [R.WEYAND
22PD ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD. 1982
22^= #LIS K0IPBSCAN>K0IPB>K0ALLGEO
23DW 8HIPBSCAN
23YG #
24D6 #
24XQ # THIS SEGMENT PERFORMS THE DEVICE INITIALISATION ROUTINES REQUIRED FOR
25CB # SYSTEM USE OF THE DCP.
25X2 #
26BL SEGENTRY K1IPBSCAN,SK1IPBSCAN
26W= # K1IPBSCAN IS THE ENTRY POINT FOR A SCANNING ACTIVITY AT THE END OF
27*W # E.M.S. OR AFTER A "MOP ON" COMMAND. IT GETS AN IPB OUTPUT ACTIVITY AND
27TG # THEN SCANS EACH IDENTIFIER IN TURN. IT SETS UP A CPA FOR EACH MOP
28*6 # TELETYPE, AND OPENS AND STARTS ALL BULK INPUT DEVICES.
28SQ #
29#B SEGENTRY K2IPBSCAN,SK2IPBSCAN
29S2 # K2IPBSCAN IS ENTERED FROM A CPA SET UP ON RECEIVING INPUT FROM A
2=?L # PREVIOUSLY IDLE LINE. IT CHECKS THE IDF TO SEE THAT GEORGE MAY USE
2=R= # THE IDENTIFIER, THEN GOES ACROSS TO THE APPROPRIATE INPUT ROUTINE.
2?=W # AN "AVAILABLE" REPORT FOR A PREVIOUSLY IDLE OUTPUT IDENTIFIER
2?QG # CAUSES AN ACTLF TO BE SET UP, ALSO WITH A LINK TO THIS ENTRY POINT.
2#=6 # THE SAME CHECKS ARE PERFORMED AND THE ACTIVITY CROSSES TO K2IPBLISTA
2#PQ #
2*9B SEGENTRY K3IPBSCAN,SK3IPBSCAN
2*P2 # K3IPBSCAN IS USED BY A MOP CPA SET UP BY THE SCANNING ACTIVITY.
2B8L # IT SETS UP A DEVICE CONTROL BLOCK AND ISSUES THE APPROPRIATE
2BN= # SUPERVISORY CODES TO OPEN THE IDENTIFIER AND SET THE CORRECT PRIORITY,
2C7W # MODE AND NPU SIZE, THEN LEAVES THE DEVICE STARTED FOR INPUT AND
2CMG # GOES ACROSS TO K3MORNING TO OUTPUT THE "THIS IS GEORGE THREE" MESSAGE.
2D76 #
2DLQ SEGENTRY K4IPBSCAN,SK4IPBSCAN
2F6B # K4IPBSCAN IS USED BY A 7023 CONSOLE ACTIVITY IN ROUGHLY THE SAME WAY
2FL2 # AS A MOP CPA USES K3IPBSCAN.
2G5L #
2GK= SEGENTRY K5IPBSCAN,SK5IPBSCAN
2H4W # ENTRY FOR SCANNING ACTIVITY AFTER CANCEL ATTACH , CANCEL CONCEPTUAL,
2HJG # CONCEPTUAL PERI MODE #1000 OR SUP. SEG 'IDENTIFIER FREE'
2J46 #
2J5# SEGENTRY K7IPBSCAN,SK7IPBSCAN
2J6G # ENTRY BY MACRO CHANGMOD TO CHANGE MODE
2J7N #
2J7X SEGENTRY K8IPBSCAN,SK8IPBSCAN
2J86 # ENTRY POINT (FOR SEGMENT IDFPER) TO EXTRACT THE MODE/NPU SIZE FROM
2J8* # IPBSCAN AND COPY IT TO THE CURRENT ACTIVITY'S ADCB
2J8J #
2JGP SEGENTRY K11IPBSCAN,SK11IPBSCAN
2JH4 [ ENTRY FROM IPBSCANB TO CALLING SUBROUTINE
2JHC [ NEBUL AND THEN RETURN TO IPBSCANB
2JHG ... SEGENTRY K12IPBSCAN,SK12IPBSCAN
2JHK ...[ ENTRY FROM IPBSCANB
2JHQ PAIR1 PAIR IPBOUT,1
2K3B PAIR2 PAIR IPBSCAN,3
2KH2 #SKI 0?-PAIR2<2$2
2L2L (
2LG= #REP 0?-PAIR2$3-1
2L^W +0
2MFG )
2M^6 PAIR3 PAIR IPBSCAN,4
2NDQ #
2NYB #DEF ZLEN=PAIR3-PAIR2
2PD2 #
2PXL XPAIR2
2QC= #HAL CPAT,0
2QWW XPLUS +CPATLEN
2RBG #SKI 2 THE IPB OUTPUT ACTIVITY
434S # IF A VIRTUAL 7900, EXITS WITH X1=FX1 AND X4 UNDEFINED
435? # LINK IN X7
435Q #
4369 V7900IPBOUT
436N JV7900 CPPTR(2),V7900OPACT
4377 BRN V7900OPEX [IPB IS NOT A VIRTUAL 7900 : EXIT
437L V7900OPACT
4385 LDX 0 BIT9 [SET 'IPB IS A VIRTUAL 7900' FLAG
438J ORS 0 IPBSW(2)
4393 LDCT 0 #010 [PRESET THE REPLY "TRANSFER
439G STO 0 CPRW1(2) [COMPLETED SUCCESSFULLY"
439^ LDX 4 2 [PRESERVE X2
43=D SCHSS HUNTW 2,AMXOR,IOUT [CHAIN SS BLOCK AFTER OUTPUT ACT
43=X BNG 2 NBLKSS [J IF CHAINED ALL BLOCKS
43?B CHAIN 2,4
43?T BRN SCHSS
43## NBLKSS
43#R LDX 2 4 [RESET X2
43*= V7900OPEX
43*P EXIT 7 0
43B8 #
43B= ...
43B# ...SHUNT2
43BB ... LDX 3 AMOPADDR(2)
43BD ...SHUNT3
43BG ... HUNT2J 3,AMXOR,ADEVS,,SUIC
43BJ ... EXIT 4 0
43BM #
43C? ...[
43CD ...[ K1IPBSCAN - AMSCAN IPBTYPE ACTIVITY
43CK ...[
43CQ SK1IPBSCAN
43XB GETACT BMOP,IPBOUT,1 [SET UP AN OUTPUT ACTIVITY.
44WL LDX 2 BPTR(2)
45B= LDCT 4 #100 [SET "ASLEEP" MARKER.
45TW LINKSET 2,PAIR1(1) [STORE LINK TO K1IPBOUT
46*G LDX 7 CPPTR(3) [POINTER TO IPB DEVICE CONTROL AREA.
46T6 STO 4 IPBSW(2)
47#Q STO 7 CPPTR(2)
47M6 CALL 7 V7900IPBOUT [ADDITIONAL ACTION FOR A V7900
47SB LDN 1 IPBRING(3) [RING THE INPUT ACTIVITY TO
48#2 RERING 1,IPBRING(2) [THE NEW OUTPUT ACTIVITY.
48RL LDX 2 FX2
493D STO 3 AMOPADDR(2) [SAVE ADDRESS OF IPBIN
49?= NXTP LDX 3 FPTR(3) [FIND THE ROUTING BLOCK.
49QW LDX 0 ATYPE(3)
4==G TXL 0 CACT
4=Q6 BCS NOTAC
4?9Q LDX 3 BPTR(2) [NO ADEVS : MOPPED OFF
4?PB LOCK 3
4#92 MURDER 3
4#NL BRN SUIC
4*8= NOTAC TXU 0 MXORADEVS(1)
4*MW BCS NXTP
4B7G #
4BM6 # FRIG UNTIL DECIDED WHETHER TO LOCK INPUT BUFFER PERMANENTLY IN E.M.S.
4C6Q HUNT2 2,AMXOR,INBF,AMOPADDR(2)
4CLB LOCK 2
4D62 MHUNTW 1,IDF,IDENTIFIERS [FIND THE IDENTIFIER DESCRIPTION BLK.
4DKL LDX 7 A1(1) [LOWEST IDENTIFIER NO. ON THIS UNIT.
4F5= LDX 6 ALOGLEN(1) [NUMBER OF IDENTIFIERS ON THIS UNIT.
4FJW STO 7 A1+FOURTHWD(3)
4G4G STO 7 ACOMMUNE5(2)
4GJ6 ADX 3 ALOGLEN(3)
4H3Q SBN 6 1
4HHB #
4J32 # STEP THROUGH THE BLOCK (BACKWARDS) CHECKING EACH IDENTIFIER IN TURN.
4JGL #
4K2= NXTR LDCT 4 #40 [ALREADY DEALT WITH?
4KFW SBN 3 4
4K^G ANDX 4 A1+FOURTHWD(3)
4LF6 BZE 4 NXTS [J. IF SO.
4LYQ LDCT 0 #20 [SET "SETTING UP CPA" MARKER.
4MDB SMO 6
4MY2 ORX 0 A1(1)
4NCL LDX 5 0 [TEST "TYPE UNCERTAIN" MARKER.
4NX= ANDN 5 #400
4PBW BNZ 5 NNOWN [J IF SET
4PWG ORX 0 BIT9 [SET "CLOSED" BIT
4QB6 BRN NOWN
4QTQ NNOWN ORX 0 GSIGN
4R*B DEX 4 0 [CLEAR THE DEVICE TYPE BITS.
4RT2 NOWN STOC 0 A1+FOURTHWD(3) [STORE MARKER & IDENTIFIER TYPE.
4S#L BCS UNOWN [J. IF TYPE NOT KNOWN BY IDF.
4SDH LDX 5 0
4SQF ANDN 5 #40
4SR2 BNZ 5 RESET [J IF WRONGED IN IDF
4SS= ANDN 0 #77 [EXTRACT DEVICE TYPE.
4T?W BZE 0 PCONS [J. IF MOP CONSOLE.
4TRG SBN 0 5
4W?6 BZE 0 YBULK [J IF 7023 CONSOLE
4WD# SBN 0 5
4WKG BZE 0 PCONS [J. IF MOP DISPLAY.
4WKP ... SBN 0 3
4WKY ... SEGENTRY K70IPBSCAN
4WL7 ... BZE 0 UNOWN
4WMJ ... SBN 0 #15
4WP2 BZE 0 PCONS [J IF RIGHTED PSEUDO VDU
4WQQ ORS 4 A1+FOURTHWD(3) [MARK "NOT FINISHED SCANNING YET"
4X=B BRN NXTS
4XCJ RESET LDCT 0 #22 [RESET ROUTING BLOCK ENTRY
4XJQ BRN SEMA4
4XMB ... SEGENTRY K71IPBSCAN
4XQ2 UNOWN LDCT 0 #20 [RESE0 ROUTING BLOCK ENTRY
4Y9L ADN 0 #400 [SET "UNKNOWN TYPE" BIT
4YP= SEMA4 ERS 0 A1+FOURTHWD(3)
4^8W BRN NXTS
4^NG #
5286 YBULK LDN 0 ZLEN
52#3 ... BRN PCONB
52CY ... SEGENTRY K72IPBSCAN
52G4 ...PCONS
52J8 ... LDX 0 A1+FOURTHWD(3)
52L# ... ANDN 0 #17
52ND ... SBN 0 #15
52QJ ... BNZ 0 PCONA [J NOT ERROR LOGGER
52SN ... JENVNOT UNOWN,CME [J. ERROR LOGGER BUT NOT CME ENVIR
52WS ...PCONA
52YY ... LDN 0 0
5334 ...PCONB
5358 ... CALL 7 NECON
53?6 ... LDX 1 3
53F4 ... CALL 4 SHUNT2
53M2 ADX 3 1
546L MHUNTW 1,IDF,IDENTIFIERS
54L= NXTS BCT 6 NXTR [J. FOR NEXT, UNLESS FINISHED PASS.
555W #
55KG # GO THROUGH BLOCK AGAIN DEALING WITH BULK DEVICES.
5656 #
56JQ SBN 3 4
574B LDX 6 ALOGLEN(1)
57J2 PHOTO 4
583L FREECORE 1
58H= LDX 5 AMOPADDR(2) [IPBIN ADDRESS
592W STO 5 AWORK1(2) [FOR OUTPT & START SUBROUTINES
59GG CALL 7 SETDB [SET UP DCB FOR BULK IDENTIFIERS
5=26 TESTMOVE 4,NMVD2
5=#H ... LDX 3 5
5=LY ... CALL 4 SHUNT3
5=^B NMVD2 STO 5 IADIN(2)
5?F2 ADX 3 ALOGLEN(3) [SET POINTERS.
5?YL SBN 6 1
5#D= ADN 3 A1
5#XW NXTT SBN 3 4
5*CG LDCT 0 #40
5*X6 ANDX 0 FOURTHWD(3)
5BBQ BZE 0 NXTA [IDENTIFIER ALREADY DEALT WITH
5BWB ERS 0 FOURTHWD(3)
5CB2 CALL 7 NEBUL
5CKS RNEBUL1 [THIS LABEL MUST ALWAYS FOLLOW CALL TO NEBUL
5CTL NXTA BCT 6 NXTT
5D5D FSHSKIP
5D*= SUIC SUICIDE
5DGD FSHCODE AORB
5DML SUIC ACROSS IPBSCANB,10
5DSW #
5F#G # SUBROUTINE TO SET UP DUMMY ADCB BLOCK FOR INITIALISING BULK IDENTS.
5FS6 #
5G?Q SETDB SBX 7 FX1
5GL7 DOWN IPBSCANB,1 [SET UP DCB
5GYJ MHUNTW 2,AMXOR,ADCB
5H?2 ADX 7 FX1
5HQL EXIT 7 0
5J== #
5JPW # SUBROUTINES TO INITIALISE IDENTIFIERS NEWLY MOPPED ON , OR FREED
5K9G # ON ENTRY X6 CONTAINS IDENTIFIER NUMBER RELATIVE TO LOWEST ON IPB
5KP6 # X3 POINTS TO ADEVS ENTRY FOR THIS IDENTIFIER ; CALL ON X7
5L8Q #
5LNB # 1 : CONSOLES : X0=0 IF MOP , =ZLEN IF 7023
5M82 #
5MML NECON SBX 7 FX1
5N7= LDX 3 0
5NLW DOWN IPBSCANB,2 [GET ACTIVITY AND START IT GOING
5P6G LDX 3 6
5PL6 SLL 3 2
5^D6 ADX 7 FX1
5^XQ EXIT 7 0
62CB #
62X2 # 2 : BULK : X2 POINTS TO DUMMY ADCB BLOCK
63BL #
63W= NEBUL SBX 7 FX1
64*W SMO FX2
64TG STO 7 AWORK2 [PRESERVE LINK
65*6 LDX 1 FX1
65SQ LDN 4 PRESET1(1) [INITIALISE THE DCB.
66#B LDN 5 ISTATUS(2)
66S2 MOVE 4 P1LEN
67?L LDN 0 7
67#F #UNS AHRET
67*# (
67B7 LDCT 4 #11
67C2 ANDX 4 FOURTHWD(3)
67CT ORX 4 BPTR(3)
67DN BNZ 4 OBULK [J IF RINGED OR ONLINING
67FH LDEX 4 FOURTHWD(3)
67GB ERN 4 5
67H9 BZE 4 ZJCON [J IF 7020 CONSOLE
67HL LDCT 4 #201 [CHECK BIT 1 AND BIT 8
67J4
67JX ZJCON
67KQ ... ORN 4 #77
67LK [ TEST FOR AH IF NOT CONSOLE
67MD ANDX 4 FOURTHWD(3)
67N? )
67P6 #UNS AHRET
67P^ #SKI
67QK ...(
67R= LDEX 4 FOURTHWD(3) [EXTRACT THE DEVICE TYPE.
67^5 ... ANDN 4 #77
686^ ...)
68=W LDX 7 6 [GET THE RELATIVE IDENTIFIER NUMBER.
68QG TXL 0 4
69=6 BCS OBULK [DEVICE TYPE >7 : IGNORE
69PQ SMO FX2 [SAVE TYPE.
6=9B STO 4 AWORK4 [SAVE TYPE
6=P2 SMO BSTART(3) [TURN INTO ACTUAL IDENTIFIER NUMBER.
6?8L ADX 7 A1+FOURTHWD(3)
6?=J #UNS CCERROR
6?#G (
6?BD STO 7 IDENTNO(2) [SET UP IDENT NUMBER
6?DB SMO FX2
6?G# LDX 0 AWORK1
6?J= STO 0 IADIN(2) [AND IPBIN ADDR
6?L8 )
6?N= SMO 4
6#7W BRN TABL1-1
6#MG #
6*76 TABL1 BRN OBULK [7100 - 5-TRACK TELETYPE.
6*LQ BRN OBULK [REMOTE AVDU.
6B6B BRN TYP3 [POLLED LP.
6BL2 BRN TYP4 [POLLED CR.
6C5L BRN NXTV [POLLED TW.
6CK= BRN TYP6 [POLLED TR.
6D4W BRN TYP7 [POLLED TP.
6DJG #
6F46 TYP3
6FHQ TYP7 [ENRING THE DCB & THE ADEVS ENTRY.
6G3B CALL 4 OPEN [OPEN THE IDENTIFIER.
6GH2 BRN NXTU [J. IF FAILED.
6H2L ERN 5 2 [SHOULD BE OUTPUT DEVICE.
6HG= BNZ 5 NOIDE
6H^W LDCT 0 #400
6JFG ORS 0 AWORK4(2) [SET OUTPUT MARKER
6J^6 BRN XMODE
6KDQ #
6KYB TYP4
6LD2 TYP6 [ENRING THE DCB & THE ADEVS ENTRY.
6LXL CALL 4 OPEN [OPEN THE IDENTIFIER.
6MC= BRN NXTU [J. IF FAILED.
6MWW BCT 5 NOIDE
6NBG XMODE CALL 5 XCHNG [CHANGE MODE/NPU SIZE IF NECESSARY
6NW6 BRN NXTU [UNABLE TO RUN ID IN MODE(S) REQUIRED
6QSL LDXC 0 AWORK4(2) [J IF MARKED AS INPUT DEVICE
6R#= BCC NXTB
6RD7 ... LDN 5 #40
6RJ4 ... ANDX 5 IWAIT(3)
6RM^ ... BNZ 5 NXTY
6RRW LDN 5 0 [SET UP ACTLF/GREMOTE ACT.
6S?G STOZ A1+BPTR(3) [CLEAR THE RING
6SR6 LDX 3 A1+FPTR(3)
6TQB STOZ BPTR(3)
6W=2 DOWN IPBINB,30
6WPL ... CALL 4 SHUNT2
6X9= MHUNTW 2,AMXOR,ADCB
6XNW LDX 1 6 [REFIND ADEVS ENTRY
6Y8G SLL 1 2
6YN6 ADN 3 A1(1)
6^7Q BRN NXTV
6^#8 NXTB LDCT 0 2 [IF (CR) ID IS IN REMOTE MODE (2)
6^DL ANDX 0 IMDNPU(3) [SET B12 OF FOURTHWD BECAUSE
6^K4 SRL 0 5 [WE CAN'T RECORD THIS FACT IN IPBSCAN
6^PG SMO A1+FPTR(3)
6^TY ORS 0 FOURTHWD
722B LDCT 5 #400 [SET SWITCH FOR "ONE SHOT INPUT"
7272 CALL 0 START [OUTPUT THE MESSAGE.
72LL NXTU MHUNTW 2,AMXOR,ADCB [LOCATE THE DEVICE CONTROL BLOCK.
72N3 ... LDN 5 #40
72PD ... ANDX 5 IWAIT(2)
72QT ... BZE 5 NXTW
72S= ...NXTY
72TM ... LDN 7 1
72X4 ... DOWN IPBSCANB,3
72YF ... MHUNTW 3,AMXOR,IOUT
72^W ... CALL 5 OUTPT
733? ... MHUNTW 2,AMXOR,ADCB
734N ...NXTW
736= LDX 3 A1+FPTR(2) [CLEAR THE RING & RESET THE POINTERS.
73KW STOZ A1+BPTR(2)
745G STOZ BPTR(3)
74K6 OBULK LDCT 0 #20 [UNSET THE "SETTING UP" MARKER.
74SY ANDX 0 FOURTHWD(3)
754Q ERS 0 FOURTHWD(3)
75JB NXTV SMO FX2
7642 LDX 4 AWORK2 [LINK ACCUMULATOR
76HL SMO FX1
773= EXIT 4 0
774H #UNS JSKI36+JSKI38
775S (
7775 #
778B # SUBROUTINE TO UNSET BIT8 IN IWAIT,THE GIVE REPLY BIT
779M #
77=Y XUNBIT
77#9 MHUNTW 3,AMXOR,ADCB
77*G LDCT 0 1
77BR ERS 0 IWAIT(3)
77D4 EXIT 7 0
77F* )
77GW #
782G # SUBROUTINE TO OUTPUT SUPERVISORY SEGMENTS & WAIT FOR REPLIES.
78G6 #
78^Q OUTPT SBX 5 FX1 [LINK.
79FB LDX 1 3 [ADDRESS OF IOUT BLOCK.
79H^ #UNS CCERROR
79LJ (
79P7 ... BRN STEZ [GO TO CHECK MOP OFF OR WRONG BIT IN
79RQ STEZRT [RETURN HERE IF NOT SET
79W* )
79^2 SMO AWORK1(2) [FIND THE OUTPUT ACTIVITY
7=DL LDX 3 IPBRING
7=Y= SBN 3 IPBRING [ADDRESS OF IPBOUT ACTIVITY
7?CW LDX 2 ACTRING(3)
7?XG SBN 2 ACTRING
7#C6 CHAIN 1,BPTR(2) [CHAIN AT END OF IPBOUT ACTIVITY
7#WQ LDCT 0 #100 [TEST & J. IF ALREADY AWAKE.
7*BB ANDX 0 IPBSW(3)
7*W2 BZE 0 NXTX
7B*L ERS 0 IPBSW(3)
7BT= LDX 2 3
7C#W FPUT
7CSG NXTX BZE 5 XIT [ENTERED FROM "START"
7D#6 MHUNTW 3,AMXOR,ADCB
7DRQ LDX 0 GSIGN
7F?B ORS 0 IWAIT(3) [SET THE ASLEEP MARKER.
7FR2 COOR1 [WAIT FOR INPUT
7G=L ... MHUNTW 3,AMXOR,ADCB
7GQ= ... HUNT2J 3,AMXOR,IDATSG,,STO2G
7H9W ADN 2 ACOMMUNE6
7HPG LDN 1 A1+1(3)
7J96 MOVE 1 4 [CONTENTS OF IDATSG BLOCK
7JNQ FREECORE 3 [AMXOR,IDATSG
7K8B LDN 3 ACOMMUNE5-A1(2)
7KN2 SMO FX1
7L7L EXIT 5 0 [EXIT.
7L*D STO2G LDX 0 AWORK3(2)
7LCB BPZ 0 STOP2 [J IF NOT CHANGMOD
7LD2 #UNS CCERROR
7LDL ZMM
7LF# CALL 7 XUNBIT [UNSET BIT8
7LH= UP [MOP OFF EXIT
7LM= #
7M6W # SUBROUTINE TO SET UP "OPEN IDENTIFIER" COMMAND & DEAL WITH THE ANSWER.
7MLG #
7N66 OPEN SBX 4 FX1
7NJC RING2CHK A1+FPTR(2),FPTR(3) [ENRING THE DCB & THE ADEVS ENTRY.
7NSW ... SETNCORE P3LEN,3,AMXOR,IOUT
7P5B LDN 0 PRESET4(1)
7PK2 LDN 1 IMOPTY(3)
7Q4L MOVE 0 P3LEN
7QJ= DSA 7 IPBIDE(3) [IDENTIFIER NUMBER.
7QS3 #UNS JSKI36+JSKI38
7QWL STOZ AWORK3(2) [NOT CHANGMOD MACRO
7R3W CALL 5 OUTPT [OUTPUT THE SEGMENT.
7RHG LDXC 0 A1+1(3) [J. IF DATA SEG. : DEVICE NOT STARTED
7S36 BCC NSUPS
7SGQ LDX 1 3 [SAVE POINTER.
7T2B BCHX 3 £
7TG2 LDCH 0 A1+2(3) [GET SEGMENT TYPE.
7T^L ERN 0 48 [J. IF "IDENTIFIER OPENED".
7WF= BZE 0 ZOPEN
7XY6 ERN 0 37$48 [J. IF "ILLEGAL", OTHERWISE ERROR.
7YCQ BZE 0 OPILL
7YW# #UNS CCERROR
7YWS #SKI
7YXB SRONG GEOERR 1,SS WRONG
7Y^^ #UNS CCERROR
7^4J (
7^77 SRONG CALL 5 NSW
7^9Q BRN XOP
7^#* )
7^C2 OPILL
82B= LDCH 5 A1+3(1) [GET TYPE OF ILLEGAL.
82TW ERN 5 16 [J. IF NOT "IDENTIFIER NON-EXISTENT".
83*G BNZ 5 NOT16
83T6 # "IDENTIFIER DOES NOT EXIST" OR THE DEVICE TYPE DIFFERS FROM THE IDF'S.
84#Q NOIDE MHUNTW 3,AMXOR,ADCB
84SB LDN 0 #400
85#2 SMO A1+FPTR(3)
85RL DEX 0 FOURTHWD [MARK "UNKNOWN" IN ADEVS
86?= LDX 1 AWORK1(2)
86H4 UPDATE XBI,CPPTR(1),7 [MARK "UNKNOWN" IN IDF
87=G XOP SMO FX1
87Q6 EXIT 4 0
889Q #
88PB NOT16 ERN 5 28$16
8992 BZE 5 XOP [IDETIFIER ON TEST : LEAVE CLOSED
899D ... LDX 5 A1+3(1)
899W ... SRL 5 12
89=# ... SBN 5 #2420
89=Q ... BNZ 5 NOT20
89?8 ... MHUNTW 3,AMXOR,ADCB
89?L ... LDX 1 A1+FPTR(3)
89#4 ... LDX 5 FOURTHWD(1)
89#G ... SLL 5 1
89#Y ... BPZ 5 NOTAH
89*B ... LDCT 0 #210
89*S ... ORS 0 FOURTHWD(1)
89B= ... ERS 0 FOURTHWD(1)
89BN ... LDX 0 IDENTNO(3)
89C6 ... SLL 0 12
89CJ ... LDX 3 IADIN(3)
89D2 ... LGEOG CPPTR(3),5
89DD ... ADX 0 5
89DW ... DETACH XBI,NOTAH,0,0,NOTAH
89F2 ... NGN 7 1
89F6 ... DOWN IPBSCANB,3
89F# ...NOTAH
89FQ ... MHUNTW 3,AMXOR,ADCB
89G8 ... LDX 1 A1+FPTR(3)
89GL ... LDX 0 BIT11
89H4 ... ORS 0 FOURTHWD(1)
89JB ... BRN XOP
89JS ...NOT20
89L2 #UNS CCERROR
89M? #SKI
89NL BRN NILL
89R9 #UNS CCERROR
89TS (
89YC CALL 5 NSL
8=32 BRN XOP
8=5K )
8=8= #
8=LL #UNS CCERROR
8=M= #SKI
8=MW NSUPS GEOERR 1,DATANOW?
8=QF #UNS CCERROR
8=T4 (
8=XM NSUPS CALL 5 NSU
8?2= BRN XOP
8?4T )
8?7G #
8?M6 ZOPEN LDCH 5 A1+4(1) [GET THE DEVICE TYPE CODE.
8#6Q ANDN 5 7 [ISOLATE THE CODE BITS.
8#LB SMO FX1
8*62 EXIT 4 1
8*6T #
8*7N # ENTERED HERE BY CHANGMOD MACRO
8*8H #
8*9B SK7IPBSCAN
8*=9 #UNS JSKI36+JSKI38
8*?4 (
8*?X LDX 0 GSIGN
8*#Q STO 0 AWORK3(2) [MARKER TO INDICATE K7 ENTRY
8**K LDX 5 ACOMMUNE1(2) [NEW MODE AND NPU
8*BD MHUNTW 3,AMXOR,ADCB [GET IPBIN ADDRESS
8*C? LDX 0 IADIN(3)
8*D6 STO 0 AWORK1(2)
8*D^ LDX 7 IDENTNO(3) [IDENTIFIER NO
8*FS LDCT 0 1 [WE WANT TO GET
8*GM ORS 0 IWAIT(3) [THE REPLY
8*HG BRN XCHMD
8*J* )
8*KL #
8B5= # SUBROUTINE TO SET UP "CHANGE MODE" COMMAND AND DEAL WITH THE REPLY.
8B*4 # IF MODE CHANGE SUCCEEDS, EXITS +1 WITH X3 -> ADCB
8BJW #
8C4G XCHNG SBX 5 FX1 [RELATIVISE AND SAVE THE LINK.
8CJ6 LDX 2 FX2
8CK2 LDN 4 0 [INITIALISE RELATIVE ENTRY POINTER
8CKW MHUNTW 1,AMXOR,ADCB
8CLQ LDX 0 A1+3(3)
8CML STO 0 IMDNPU(1) [STORE CURRENT MODE/NPU
8CN4 LDX 3 1 [X3 -> ADCB
8CT# ANDX 5 BITS22LS [MAKE SURE BIT 0 NOT SET
8CTQ STO 5 AWORK3(2)
8CWL NXMN SMO A1+FPTR(1)
8CXG LDEX 1 FOURTHWD [DEVICE TYPE
8CY3 LDN 0 #32
8CY4 ERX 0 1
8CY5 BNZ 0 USMN [J IF NOT PSEUDO VDU
8CY6 LDN 1 T26MN [MODE/NPUSIZE ADDRESS
8CY7 BRN SPECMN
8CY8 USMN
8CY* ... LDN 0 #15
8CYF ... SBX 0 1
8CYK ... BNZ 0 XNER [J IPB ERROR LOGGER
8CYP ... LDN 1 T13MN
8CYT ... BRN SPECMN
8CY^ ...XNER
8C^5 ... SMO FX1
8C^= LDX 1 TYPEINDEX(1) [RELATIVE MODE/NPU LIST POINTER
8C^S SPECMN
8D26 ADX 1 FX1
8D32 ADX 1 4 [CURRENT ENTRY POINTER
8DM6 LDX 5 0(1)
8DN2 BPZ 5 TB1 [NOT END OF LIST
8DNW ORX 4 GSIGN [END OF LIST : SET B0 OF X4
8DPQ TB1 SLC 5 1
8DQ9 # IF THE IPB IS A VIRTUAL 7900, ACCESS THE NEXT VIRTUAL 7900
8DQB # MODE/NPU SIZE ENTRY
8DQH SMO IADIN(3)
8DQN LDX 0 IPBSW
8DQT SLL 0 9
8DR2 BPZ 0 TESTENTRY [IPB NOT A VIRTUAL 7900
8DR7 BPZ 5 NOTMAC1 [NOT V7900 ENTRY : TRY NEXT ENTRY
8DR# BRN USEENTRY [V7900 ENTRY : USE THIS ENTRY
8DRF #
8DRL TESTENTRY
8DRR BNG 5 TEND [NO MORE APT ENTRIES : TAKE END OF
8DRY [LIST ACTION
8DS5 USEENTRY
8DW6 SRC 5 1
8DX2 ANDX 5 BITS22LS
8DXW STO 5 ACOMMUNE1(2) [STORE MODE/NPU REQUIRED
8DYM BXE 5 IMDNPU(3),YMODE [MATCH FOUND : CURRENT MODE/NPU VALID
8D^D #UNS JSKI36+JSKI38
8F29 XCHMD [CHANGMOD MACRO
8F=C ... SETNCORE P5LEN,3,AMXOR,IOUT
8FGL LDN 0 PRESET5(1)
8G2= LDN 1 IMOPTY(3)
8GFW STO 5 IMOPTY+P4LEN(3)
8G^G MOVE 0 P4LEN
8HF6 DSA 7 IPBIDE(3)
8HYQ CALL 5 OUTPT [OUTPUT THE MESSAGE.
8KCL LDXC 0 A1+1(3) [SHOULD NOT BE A DATA SEGMENT.
8KJS #UNS CCERROR
8KQ2 #SKI
8KX= BCC NSUPS
8L37 #UNS CCERROR
8L74 (
8L=^ BCS NDAS [J UNLESS DATA SEG
8LBW CALL 5 NSU
8LGR BRN ZTE
8LLN NDAS
8LQK )
8LWG BCHX 3 £
8M8? LDCH 0 A1+2(3)
8MG4 ERN 0 37
8MRT BZE 0 THILL [ILLEGAL CODE
8N5L ERN 0 56$37
8NCC BZE 0 YMODE [MODE CHANGED SUCCEEDED
8NP8 ERN 0 58$56
8P2^ #UNS CCERROR
8P#Q #SKI
8PLH (
8PY# BNZ 0 SRONG [NOT UNAVAILABLE EITHER : GEOERR
8Q=5 BRN NXTX [UNAVAILABLE : COOR1 WITH X5 LINK
8QHW )
8QTM #UNS CCERROR
8R7D (
8RF9 BZE 0 NXTX [J IF AVAILABILITY WRONG
8RR2 CALL 5 NSW [NOTHING ELSE SHOULD BE WRONG
8S4R BRN ZTE
8SBJ )
8SN* #
8T26 THILL LDCH 0 ACOMMUNE8(2)
8T?X ERN 0 6 [ILLEGAL TYPE "MODE NOT AVAILABLE"
8TKN BNZ 0 NILL [NOT "MODE NOT AVAILABLE"
8TXP #UNS JSKI36+JSKI38
8TY* (
8TY^ LDX 0 AWORK3(2)
8T^K BPZ 0 NOTMAC1 [J IF NOT CHANGMOD MACRO
8W29 CALL 7 XUNBIT [UNSET BIT8
8W2T UPPLUS 1
8W3F NOTMAC1
8W45 )
8W4Y BNG 4 TEND [END OF LIST
8W=R ADN 4 1 [UPDATE ENTRY POINTER
8W#P MHUNTW 1,AMXOR,ADCB [TRY NEXT ENTRY
8WBM LDX 3 1 [X3 -> ADCB
8WDL BRN NXMN
8WLF TEND LDX 1 FX1 [EXIT TO LINK+0
8WS# SMO AWORK3(2)
8X27 EXIT 1 0
8X46 #UNS CCERROR
8X65 #SKI
8X86 NILL GEOERR 1,ILLEGAL? [SHOULD NOT BE ILLEGAL FOR ANY OTHER
8X=P #UNS CCERROR
8X*# (
8XCX NILL CALL 5 NSL
8XGG BRN ZTE
8XK5 )
8XMQ # REASON.
8XQJ YMODE
8XTB #UNS JSKI36+JSKI38
8XY8 (
8Y32 LDX 0 AWORK3(2)
8Y5S BPZ 0 NOTMAC2 [J IF NOT CHANGMOD
8Y8L CALL 7 XUNBIT [UNSET BIT8
8Y?D UPPLUS 2 [MODE CHANGED OK
8YB= NOTMAC2
8YF4 )
8YHW MHUNTW 3,AMXOR,ADCB [LOCATE THE DEVICE CONTROL BLOCK.
8YM2 LDX 0 ACOMMUNE1(2) [STORE NEW MODE/NPU
8^6L STO 0 IMDNPU(3)
8^BD LDX 1 FX1
925W SMO AWORK3(2) [EXIT TO LINK + 1.
92KG EXIT 1 1
9356 #
93JQ # SUBROUTINE TO OUTPUT "START INPUT" AND (OPTIONALLY) "SET PRIORITY".
944B #
94J2 START SBX 0 1 [RELATIVISE & SAVE LINK.
953L STO 0 AWORK3(2)
95H= SMO 5 [SET UP OUTPUT BLOCK TO CONTAIN
962W OBEY ORDER(1)
96GG ... SETUPCORE 4,3,AMXOR,IOUT
9726 LDN 0 PRESET7(1) [START INPUT
97FQ LDN 1 IMOPTY(3) [(& CHANGE PRIORITY, IF NECESSARY).
97^B SMO 4
98F2 MOVE 0 0
98YL DSA 7 IPBIDE(3)
99D= BZE 5 SONLY
99XW BNG 5 SINSH [BULK INPUT : SINGLE SHOT
9=CG DSA 7 IPBIDE+P7LEN-P6LEN(3)
9=X6 BRN SONLY
9?BQ SINSH LDX 0 BIT11
9?WB ADS 0 IPBIDE(3) [START INPUT = 17 ; ONE SHOT = 18
9#B2 SONLY LDX 5 FX1 [DONT COOR1 AFTER CHAIN
9#TL BRN OUTPT
9**= XIT SMO AWORK3(2) [EXIT TO THE LINK.
9*SW EXIT 1 0
9B#G #
9BS6 # DEVICE INITIALISATION CODE FOR MOP TERMINALS.
9BY3 ...SSETUP
9B^^ ... SBX 4 FX1
9C3Y ... SETUPCORE 2,3,AMXOR,ADCB,,1,2
9C5W ... ADX 4 FX1
9C7T ... EXIT 4 0
9C?Q #
9CRB SK3IPBSCAN
9D5R ... LDN 2 ADCBLEN
9DD8 ... CALL 4 SSETUP
9DQL LDN 4 PRESET1(1) [AND INITIALISE IT.
9F== LDN 5 ISTATUS(3)
9FPW STO 7 IDENTNO(3)
9G9G LDX 2 AWORK1(2)
9GP6 MOVE 4 P1LEN
9H8Q STO 2 IADIN(3)
9HNB HUNT2J 2,AMXOR,ADEVS,,SUIC [RING IT TO THE ROUTING BLOCK.
9J82 ADX 2 6
9J?J ... LDEX 0 A1+FOURTHWD(2)
9JC6 ... ANDN 0 #17
9JGN ... SBN 0 #15
9JL= ... BZE 0 XERL [J. ERROR LOGGING DEVICE
9JPT LDN 4 PRESET2+1(1) [COMPLETE DCB INITIALISATION
9JS4 ... ADN 0 #15
9JW? BZE 0 TMDCB [MOP CONSOLE
9JYG LDN 4 PRESET2V(1) [MOP DISPLAY
9K2P TMDCB LDN 5 ICHAR(3)
9K4Y MOVE 4 P2MOPLEN-1
9K65 ADN 3 A1
9K67 LDX 4 TYPEAH(1) [MASK OF TYPE BITS + AH BIT
9K69 ANDX 4 A1+FOURTHWD(2)
9K6? ERX 4 PVDUAH(1)
9K6* BZE 4 TLEAVE [LEAVE ATTACHED PVDUS UNINITIALISED
9K6C LDCT 4 #11
9K6F ANDX 4 A1+FOURTHWD(2)
9K6H ORX 4 A1+BPTR(2)
9K6K BZE 4 ZNOL [J UNLESS RINGED OR ONLINING
9K6M TLEAVE
9K6P LDCT 0 #20
9K6Q ANDX 0 A1+FOURTHWD(2)
9K6R ERS 0 A1+FOURTHWD(2)
9K6T BRN SUIC
9K6X ZNOL
9K7= CALL 4 OPEN [ATTEMPT TO OPEN DEVICE.
9KLW BRN STOP2 [J. IF NOT THERE.
9KWN ERN 5 3 [J. IF DEVICE TYPE INTERACTIVE.
9LB# BNZ 5 NOIDE
9M5Q LDCH 6 A1+4(3) [CHECK THE PRIORITY
9MKB SBN 6 16
9N52 BZE 6 PRIOK
9NJL LDN 6 1 [SET MARK TO REMEMBER TO CH. PRIORITY
9P4= PRIOK CALL 5 XCHNG [CHANGE MODE IF NECESSARY
9QH6 BRN STOP0 [J. IF CHANGE FAILED.
9QHK ... JV7900 ,POPEN
9QJ4 ... BRN NPOPEN
9QJH ...POPEN
9QK2 ... SEGENTRY K74IPBSCAN
9QKF ... BRN NPOPEN
9QKY ... SETNCORE P9LEN,3,AMXOR,IOUT
9QLC ... LDN 0 PRESET9(1)
9QLW ... LDN 1 IMOPTY(3)
9QM* ... MOVE 0 P9LEN
9QMS ... DSA 7 IPBIDE(3)
9QN? ... STOZ AWORK3(2)
9QNQ ... CALL 5 OUTPT
9QP9 ... LDXC 0 A1+1(3)
9QPN ... BCC PNSUPS
9QQ7 ... BCHX 3 £
9QQL ... LDCH 0 A1+2(3)
9QR5 ... ERN 0 48
9QRJ ... BNZ 0 WRSUP
9QS3 ... MHUNTW 3,AMXOR,ADCB
9QSG ... LDX 0 BIT11
9QS^ ... LDX 3 A1+FPTR(3)
9QTD ... ORS 0 FOURTHWD(3)
9QTX ... BRN STOP2
9QWB ...WRSUP
9QWT ... CALL 5 NSW
9QX# ... BRN STOP2
9QXR ...PNSUPS
9QY= ... CALL 5 NSU
9QYP ... BRN STOP2
9Q^8 ... SEGENTRY K75IPBSCAN
9Q^M ...NPOPEN
9R2Q LDX 5 6 [SWITCH WORD FOR PRIORITY CHANGE.
9RGB CALL 0 START [OUTPUT THE MESSAGE(S).
9S22 MHUNTW 3,AMXOR,ADCB [UNSET THE "REPORT SUP. SEGMENTS" BIT
9SFL LDCT 0 1
9S^= ERS 0 IWAIT(3)
9T74 SMO A1+FPTR(3)
9T92 LDEX 0 FOURTHWD
9T=Y ERN 0 #32 [IF PSEUDO VDU
9T#W BZE 0 STOP3 [JUMP TO SUICIDE
9TDW LDXC 0 ISTATUS(3)
9TYG BCS STOP3
9WD6 RCONS LDX 4 XMXMSK(1) [SET CONTEXT & REPORT MASK BITS
9WXQ SMO A1+FPTR(3) [EXTRACT THE ADEVS MODIFIER
9XCB NGX 5 BSTART [FOR USE BY MORNING.
9XX2 LDX 6 XCONTEXT(1)
9YBL LDEX 0 IBIL(3)
9YW= STO 4 AMXMSK(2)
9^*W SBN 5 A1
9^TG STO 6 CONTEXT(2)
=2*6 LDN 4 24 [IPB TYPE.
=2SQ LGEOG ,6 [IPB GEOG. NO.
=3#B STO 7 JSOURCE2(2) [SET UP THE JOBSOURCE WORDS
=3S2 STO 6 JSOURCE1(2) [FOR A MOP CONSOLE ON A 7900.
=4?L DCH 4 JSOURCE1(2)
=4R= LDX 4 WORD(1)
=5=W BZE 0 ZERO [J. IF BREAK-IN LEVEL CLEARED.
=5QG LDX 6 GSIGN [SET THE "ASLEEP" BIT.
=6=6 WAIT ORS 6 IWAIT(3)
=6PQ COOR1 [WAIT FOR END OF BREAK-IN STATE.
=79B MHUNTW 3,AMXOR,ADCB
=7P2 SMO A1+FPTR(3)
=88L LDX 0 FOURTHWD
=8N= SLL 0 2 [B2 : MOPPING OFF
=97W BNG 0 TMOF
=9MG LDEX 0 IBIL(3) [BREAK-IN LEVEL
==76 BNZ 0 WAIT
==LQ ZERO SMO A1+FPTR(3) [UNSET IPBIN'S SETTING UP BIT IF SET.
=?6B ANDS 4 FOURTHWD
=?L2 STOZ CPPTR(2) [CLEAR MOP CPAT'S CPPTR
=?NK TOSS HUNTW 2,AMXOR,IDATSG [DISCARD ANY REVERTED BIACKS OR VD DATA
=?R8 BNG 2 OHELLO
=?TR FREECORE 2
=?YB BRN TOSS
=#2^ OHELLO
=#5L ACROSS MORNING,3 [GO TO OUTPUT PRELIMINARIES.
=#78 ...TMOF LDX 3 A1+FPTR(3) [ENTRY IF MOPOFF WHILE SETTING UP
=#8Q ... SBN 3 A1
=#=# ...NOTON SMO A1+FPTR(3) [CLEAR THE RING ELEMENTS.
=#?W ... STOZ BPTR
=#*D ... LDCT 4 #24 [UNSET THE SETTING UP BITS.
=#C2 ... STOZ A1+BPTR(3)
=#DJ ... ANDX 4 A1+FOURTHWD(3)
=#G6 ... ERS 4 A1+FOURTHWD(3)
=#HN ... BRN SUIC [CLEAR UP.
=#K= #
=*4W STOP0 SMO AWORK1(2) [FIND THE OUTPUT ACTIVITY
=*JG LDX 3 IPBRING
=B46 SBN 3 IPBRING
=C8J #UNS CCERROR
=C*Q #SKI
=CH2 STOP4 LGEOG ,4
=CHN #UNS CCERROR
=CJB (
=CK4 STOP4 LDXC 0 IPBSW(3)
=CKQ BCS STOP2 [J IF ERROR OR INOP SET
=CMS #UNS CCERROR
=CNG (
=CP8 SMO FX2
=CPW STOZ AWORK3 [SHOW NOT CHANGMOD MACRO
=CQJ LDN 1 0
=CR= [ SO GO STRAIGHT ON AFTER MOP OFF BIT
=CRY STEZ [CAN COME HERE FROM OUTPT
=CSL MHUNTW 2,AMXOR,ADCB
=CT# ... LDCT 0 #100
=CW2 SMO A1+FPTR(2)
=CWN ANDX 0 FOURTHWD
=CXB LDX 2 FX2 [RESET X2
=CY4 ... BNZ 0 STO2G
=CYQ BNZ 1 STEZRT [J IF CAME FROM OUTPT
=C^D )
=C^H ... STOZ 7
=C^L DOWN IPBSCANB,3 [REPORT "THE WRONG TP FOR MOP USE IS
=C^N [LOADED"
=C^Q [(IF NOT ALREADY REPORTED)
=C^S [REGARDLESS OF DEVICE TYPE
=C^W [AND SET UP A "CLOSE" IDENTIFIER SEG
=C^Y MHUNTW 3,AMXOR,IOUT [FIND THE "CLOSE" IDENTIFIER SEG
=N*H #UNS CCERROR
=NBS #SKI
=ND5 (
=NFD #UNS JSKI36+JSKI38
=NLL STOZ AWORK3(2) [NOT CHANGMOD MACRO
=NP= )
=NRW CALL 5 OUTPT [DO THE OUTPUT.
=P?G LDX 1 3
=QQB LDXC 0 A1+1(3) [J. IF DATA SEG. : DEVICE NOT STARTED
=QXJ #UNS CCERROR
=R4Q #SKI
=R=2 BCC NSUPS
=R?Y #UNS CCERROR
=R*W (
=RCS BCS NZDA [J IF NOT DATA SEG
=RFQ CALL 5 NSU
=RHN BRN STOP2
=RKL NZDA
=RMJ )
=RPL BCHX 3 £
=S9= LDCH 0 A1+2(3) [J. IF "CLOSE IMPLEMENTED" REPLY.
=SNW ERN 0 54
=T8G BZE 0 ZCLOS
=T*N #UNS CCERROR
=TGW #SKI
=TN6 GEOERR 1,NOTCLOSE
=TQ4 #UNS CCERROR
=TS2 (
=TTY SMO FX1
=TXW LDN 5 STOP2 [EXIT AFTER CCERROR MACRO
=T^S CALL 2 ZEA2
=W3Q +CCNOTCLOSE
=W5N )
=W7Q ZCLOS
=X72 STOP2 MHUNTW 3,AMXOR,ADCB [RESET THE DCB & UNRING IT.
=XLL STOP3 STOZ A1+BPTR(3)
=Y6= LDX 3 A1+FPTR(3)
=YCL STOZ BPTR(3)
=YP2 STOP5
=^2B LDCT 0 #20
=^?Q ANDX 0 FOURTHWD(3)
=^K6 ERS 0 FOURTHWD(3) [RESET THE ADEVS BLOCK ENTRY.
?24Q BRN SUIC [FINISH.
?25K ...[
?26D ...[ DEVICE INITIALISATION CODE FOR THE ERROR LOGGER
?27? ...[
?286 ...XERL
?28H ... ADN 3 A1
?28^ ... CALL 4 OPEN [THIS WILL RING ADCB AND ADEV'S
?29S ... BRN STOP2 [OPEN FAILED
?2=B ... ERN 5 1
?2=Y ... BNZ 5 NOIDE
?2?G ... CALL 5 XCHNG [CHANGE MODE TO THAT IN THE TABLE
?2#* ... BRN STOP2 [J CHNG MD DID NOT WORK
?2*8 ... LDN 5 0 [START INPU ONLY
?2B3 ... CALL 0 START [SUBROUTINE START INPUT
?2BW ... MHUNTW 3,AMXOR,ADCB
?2CP ... LDCT 0 #400
?2DJ ... ADN 0 #2000 [INDICATE ACTIVITY ASLEEP
?2FC ... ORS 0 IWAIT(3)
?2FJ ... LDX 3 A1+FPTR(3)
?2FP ... LDCT 0 #20
?2FW ... ANDX 0 FOURTHWD(3)
?2G3 ... ERS 0 FOURTHWD(3)
?2G= ... COOR1
?2H5 ... ACROSS IPBLOG,1 [GO ACROSS TO ERROR LOGGER
?2JB #
?342 # DEVICE INITIALISATION CODE FOR REMOTE OPERATORS (7023) CONSOLES.
?3HL #
?43= SK4IPBSCAN
?4*M ... LDN 2 ADCB7023LEN
?4N4 ... CALL 4 SSETUP
?52G LDN 4 PRESET1(1) [AND INITIALISE IT.
?5G6 LDN 5 ISTATUS(3)
?5^Q LDX 2 AWORK1(2)
?6FB MOVE 4 P1LEN
?6^2 ADN 5 P1LEN [MOVE IN NL SEQUENCE.
?7DL LDN 4 PRESET3(1)
?7Y= STO 7 IDENTNO(3)
?8CW MOVE 4 P2OPSLEN
?8XG STO 2 IADIN(3)
?9C6 HUNT2J 2,AMXOR,ADEVS,,SUIC [RING IT TO THE ROUTING BLOCK.
?9WQ ADX 2 6
?=BB ADN 3 A1
?=FG LDCT 4 #11
?=JL ANDX 4 A1+FOURTHWD(2)
?=MQ ORX 4 A1+BPTR(2)
?=QW BNZ 4 TLEAVE [LEAVE UNINIALISED IF ONLINING
?=W2 CALL 4 OPEN [ATTEMPT TO OPEN THE IDENTIFIER.
??*L BRN STOP2 [J. IF OPEN FAILED.
??T= ERN 5 3 [J. IF NOT CORRECT DEVICE TYPE.
?#8^ BNZ 5 NOIDE
?*RQ CALL 5 XCHNG [ATTEMPT TO CHANGE THE MODE.
?B22 BRN STOP2 [J. IF FAILED TO CHANGE MODE.
?BR2 LDN 5 0 [SET SWITCH WORD.
?C=L CALL 0 START [ISSUE START INPUT COMMAND.
?CQ= LGEOG ,5 [SET UP A JSOURCE1 & JSOURCE2 PAIR
?D9W LDN 0 #77 [FOR USE BY IPBCONS IN SETTING UP
?DPG STO 7 AWORK3(2) [CPATS TO DEAL WITH CONSOLE INPUT
?F96 ORX 5 CACT
?FNQ DCH 0 AWORK3(2)
?G8B STO 5 AWORK4(2)
?GN2 ACROSS MORNING,4 [AND OFF WE GO!
?H7L #
?HM= # ENTRY POINT TO CHECK THE IDF IF INPUT IS RECEIVED FROM AN IDLE IDENT.
?J6W #
?JLG SK2IPBSCAN
?K66 ... ACROSS IPBSCANB,14
#P=B #
#PQ2 # ENTRY POINT TO INITIALISE IDENTIFIERS NEWLY DETACHED OR OFF-TEST
#Q9L #
#QP= SK5IPBSCAN
#R8W ACROSS IPBSCANB,11
*JKC #
*JKD # ENTRY POINT (FOR SEGMENT IDFPER) TO EXTRACT THE MODE/NPU SIZE FROM
*JKF # IPBSCAN AND COPY IT TO THE CURRENT ACTIVITY'S ADCB
*JKG #
*JKH SK8IPBSCAN
*JKJ CALL 7 SMDNPU
*JKK UP
*JKL SMDNPU [COPY IDEN'S MODE/NPU SIZE TO ADCB
*JKM MHUNTW 3,AMXOR,ADCB
*JKN SMO A1+FPTR(3)
*JKP LDEX 5 FOURTHWD
*JKQ ... ANDN 5 #17
*JKR ...SMDNPU1
*JKS ... SMO 5
*JKT ... LDX 1 TYPEINDEX(1) [(RELATIVE MODE/NPU LIST POINTER)
*JKW ... ADX 1 FX1
*JKY # IF IPB IS A VIRTUAL 7900 EXTRACT THE FIRST VIRTUAL 7900
*JK^ # ENTRY OF THE DEVICE TYPE OTHERWISE EXTRACT JUST THE
*JL2 # FIRST ENTRY OF THE DEVICE TYPE
*JL3 SMO IADIN(3)
*JL4 LDX 0 IPBSW
*JL5 SLL 0 9
*JL6 BPZ 0 SMNEXTRACT [IPB NOT A VIRTUAL 7900
*JL7 SNXVE ADN 1 1 [ASSUME FIRST ENTRY NOT A V7900 ENTRY
*JL8 LDX 0 0(1)
*JL9 SLC 0 1
*JL= BPZ 0 SNXVE [NOT A V7900 ENTRY : TRY NEXT
*JL? SMNEXTRACT
*JL* LDX 0 0(1)
*JLB LDX 1 FX1
*JLC ANDX 0 BITS22LS [(IGNORE BITS 0&1)
*JLD STO 0 IMDNPU(3)
*JLF EXIT 7 0
*K2N [
*K2P [ ENTRY POINT TO CALL SUBROUTINE NEBUL FOR IPBSCANB
*K2Q [
*K2R SK11IPBSCAN
*K2T ... CALL 4 SHUNT2
*K2X LDX 0 6
*K2Y SLL 0 2
*K32 ADX 3 0
*K33 ADN 3 A1
*K34 MHUNTW 2,AMXOR,ADCB
*K35 [X3 - PTR TO IDENT IN ADEVS
*K36 [X2 - PTR TO ADCB BLK
*K37 CALL 7 NEBUL
*K38 RNEBUL2 [THIS LABEL MUST ALWAYS FOLLOW THIS CALL TO
*K39 ACROSS IPBSCANB,12 [RETURN TO IPBSCANB
*K3# ...[
*K3C ...[ ENTRY FROM IPBSCANB TO DO THE ROUTINE RCONS
*K3G ...[
*K3K ...SK12IPBSCAN
*K3N ... MHUNTW 3,AMXOR,ADCB
*K3R ... LDX 5 ICHARS(3)
*K3W ... BRN RCONS
*K49 XBI GEOERR 1,BREAKIN! [CANT HAVE BREAK-IN
*K52 MENDAREA 50,K100IPBSCAN
*KJL #END
^^^^ ...75026041002300000000