IPBSCAN867

(George Source)

Macros used: ACROSS, BXE, CCERROR, CHAIN, COOR1, DETACH, DOWN, FPUT, FREECORE, FSHCODE, FSHSKIP, GEOERR, GETACT, HUNT2, HUNT2J, HUNTW, JENVNOT, JV7900, LGEOG, LINKSET, LOCK, MENDAREA, MHUNTW, MURDER, OPEN, PAIR, PHOTO, RERING, RESET, RING2CHK, SEGENTRY, SETNCORE, SETUPCORE, SUICIDE, TESTMOVE, UP, UPDATE, UPPLUS, WRONG

IPBSCAN867.txt
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<ZLEN$ZLEN   
2RW6    (   
2S*Q    #REP  ZLEN-2
2STB          +0
2T*2    )   
2TSL    XPAIR3  
2W#=    #HAL  CONSA+I7023,0 
2WRW          +CONSALEN+I7023LEN
2X?G    #   
2XR6    #   
2Y=Q    PRESET1 
2YQB          #140:0,#00110000,0           [PRESET CONTENTS OF MOP DCB. 
2^=2    #DEF  P1LEN=0?-PRESET1  
2^DH ...PRESET2 
2^M4 ...      0 
2^TK ...      SEGENTRY K31IPBSCAN          [FOR USE BY MOPWIDTH MACRO   
3246 ...      0 
32=M ...#FID  0,5,6 
32F8 ...#FID  15,23,72  
32GS ...#UNS ANOECHO
32JD ...#SKI
32L4 ...(   
32MP ...      10,#76357632,#76207603,#76130000,0,8,#76672076,#27760177  
32NR ...)   
32PT ...#UNS ANOECHO
32QX ...(   
32R^ ...      10,#76357632,#76207620,#76200000,0,8,#76672076,#27762077  
32T3 ...)   
32W= ...      SEGENTRY K30IPBSCAN          [FOR USE BY AUTMOP MACRO 
334R ...      0,#76037673,#76737673 
33?# ...      0 
33FT ...#DEF  P2MOPLEN=0?-PRESET2   
33NB ...#   
33WX ...PRESET2V
345D ...      0 
34?^ ...#FID  0,5,2 
34GG ...#FID  6,11,25   
34P3 ...#FID  15,23,80  
34XJ ...      2,#76320000,0 
3565 ...#UNS JSKI36 
35#L ...#FID  6,6,1 
35H7 ...      SEGENTRY K40IPBSCAN          [FOR USE BY VDUCODE MACRO
35PN ...      0 
35Y9 ...      0 
366Q ...      6,#14357613,#06200000 
36*? ...      #40000014,#77763300,#76317420,#76067606   
36JF    #   
36KW    #   
375G    PRESET3 
37K6          0,72,4,#76327620  
384Q    #DEF  P2OPSLEN=0?-PRESET3   
38JB    #   
3942    PRESET4 
39HL          0,#400:0,#01200000           ["OPEN IDENTIFIER" SUPERVISORY SEG.  
3=3=    #DEF  P3LEN=0?-PRESET4  
3=GW    #   
3?2G    PRESET5 
3?G6          0,#400:0,#02300000           ["CHANGE MODE" SUPERVISORY SEGMENT.  
3?^Q    #DEF  P4LEN=0?-PRESET5  
3#FB    #   
3#^2          0 
3*DL    #DEF  P5LEN=0?-PRESET5  
3JR2    #   
3K=L    PRESET7 
3KQ=          0,#400:0  
3L9W    #DEF  P6LEN=0?-PRESET7  
3LPG          #01210000                    ["START INPUT" SUPERVISORY SEGMENT.  
3M96    #DEF  P7LEN=0?-PRESET7  
3MNQ    #   
3N8B    PRESET8 
3NN2          #02310000,16                 ["SET PRIORITY TO 16" SUPERVISORY SEG
3P7L    #DEF  P8LEN=0?-PRESET8  
3RKQ    #   
3RNW ...PRESET9 
3RS2 ...#   
3RX6 ...      0,#400:0,#02770000,17 
3S2= ...#DEF  P9LEN=0?-PRESET9  
3S5B    #   
3SK2    MXORADEVS   
3T4L    #HAL  AMXOR+ADEVS,0 
3TJ=    #   
3W3W    #   
3WHG    ORDER LDN   4  P7LEN
3X36          LDN   4  P7LEN+P8LEN  
3XGQ    #   
3Y2B    WORD           #77377777
3YG2    #   
3Y^L    XCONTEXT       #20412   
3^P4          SEGENTRY K25IPBSCAN     [FOR USE BY PRESETRP MACRO
3^YW    XMXMSK         +AMXMSKPR
42DG    #   
42DT    #   
42F8    #     THIS TABLE HAS ONE ENTRY PER DEVICE TYPE IN ASCENDING ORDER   
42FH    #     CONTAINING A POINTER TO A LIST OF VALID MODES/NPUS FOR THAT TYPE. 
42FW    #   
42G9    TYPEINDEX   
42GJ                   +T0MN
42GX                   0
42H=                   0
42HK                   +T3MN
42HY                   +T4MN
42J?                   +T5MN
42JL                   +T6MN
42J^                   +T7MN
42K#                   0
42KM                   0
42L2                   +T10MN   
42L*    #   
42LN    #     LISTS OF VALID MODES/NPUS(B2-8/B9-23) IN ASCENDING DEVICE TYPE
42M3    #     ORDER. THE FIRST ENTRY PER TYPE IS THE ONE NORMALLY USED BY G.
42MC    #     VIRTUAL 7900 ENTRIES ARE AT THE END OF EACH LIST AND HAVE B1 SET. 
42MH    #     THE LAST ENTRY PER TYPE HAS B0 SET.   
42P5    #   
42P7    #              USE BY K2 OF THIS LIST INSTEAD OF THE IDF'S ENTRIES  
42P9    #              INHIBITS THE ADDITION OF FURTHER MODES/NPUS  
42P?    #              (NOTE FRIG FOR CR REMOTE MODE (B12 OF FOURTHWD)  
42P*    #   
42PD                   SEGENTRY K50IPBSCAN [FOR USE BY NPUSIZE MACRO
42PH    T0MN           #24:(64<INPUSIZE)       [TTW,TRANSPARENT CONVERS MODE
42PJ                   #24:(AVBUFFSIZE-3<64).3 [V7900 TTW,TRANS CONVERS MODE
42PK                   SEGENTRY K51IPBSCAN  
42PL    T3MN             3:(64<INPUSIZE)       [LP,REMOTE MODE  
42PM                     3:(AVBUFFSIZE-3<64).3 [V7900 LP,REMOTE MODE
42PN ...               SEGENTRY K53IPBSCAN  
42PP ...T4MN           #22:(40<INPUSIZE)
42PQ ...               SEGENTRY K52IPBSCAN  
42PR ...               #21:(40<INPUSIZE)
42PS ...                 1:(AVBUFFSIZE-3<40).1  
42PT ...                 2:(AVBUFFSIZE-3<40).3  
42PW                   SEGENTRY K54IPBSCAN  
42PX    T5MN           #21:(64<INPUSIZE)       [TW,POLLED TW1 MODE  
42PY                   #21:(AVBUFFSIZE-3<64).3 [V7900 TW,POLLED TW1 MODE
42P^                   SEGENTRY K55IPBSCAN  
42Q2    T6MN           #21:(41<INPUSIZE)       [TR,FULL CHARACTER MODE  
42Q3                   #21:(AVBUFFSIZE-3<41).3 [V7900 TR,FULL CHARACTER MODE
42Q4                   SEGENTRY K56IPBSCAN  
42Q5    T7MN             1:(41<INPUSIZE)       [TP,FULL CHARACTER MODE  
42Q6                     1:(AVBUFFSIZE-3<41).3 [V7900 TP,FULL CHARACTER MODE
42Q7                   SEGENTRY K57IPBSCAN  
42Q8    T10MN          #24:(53<INPUSIZE)       [VD,VDU4 GEORGE 3 MODE   
42Q9                   #24:(AVBUFFSIZE-3<53).3 [V7900 VD,VDU4 GEORGE 3 MODE 
42Q=                   SEGENTRY K58IPBSCAN  
42Q?    T26MN          #23:(38<INPUSIZE)       [PVDU,VDU FREE MODE  
42Q#                   #23:(AVBUFFSIZE-3<38).3 [V7900 PVDU,VDU FREE MODE
42Q* ...                SEGENTRY K73IPBSCAN 
42QB ...T13MN          #21:(28<INPUSIZE)
42WJ ...TYPEAH         #20000037
42WK ...PVDUAH         #20000032
42WL ...#   
42WM    #UNS  CCERROR   
42WP    (   
42WR    ZEA3  ADN   3  1                   [POINT TO CORRECT DATA WORD  
42WT    ZEA2  LDX   3  A1+2(3)             [GET DATA WORD   
42WX          LDX   2  0(2)                [8 CHAR STRING   
42W^          SBX   5  FX1  
42X3          CCERROR  2,3,STOP2A          [TELL OPERATORS  
42X5          ADX   5  FX1  
42X7          EXIT  5  0
42X9    NSU   CALL  2  ZEA3 
42X?                   +CCDATANOW   
42X*    NSW   CALL  2  ZEA2 
42XC                   +CCSSWRONG   
42XF    NSL   CALL  2  ZEA3 
42XH                   +CCWRONGILL  
42XK    ZTE   LDX   0  AWORK3(2)
42XM          BPZ   0  TEND                [J UNLESS CHANGMOD MACRO 
42XP          BRN      ZMM  
42XQ    STOP2A  
42XR          SMO      FX2  
42XS          LDX   0  AWORK2   
42XT          ANDN  0  #7777
42XW          SBN   0  RNEBUL1  
42XX          BZE   0  NXTU 
42XY          ADN   0  RNEBUL1  
42X^          SBN   0  RNEBUL2  
42Y2          BZE   0  NXTU 
42Y3          BRN      STOP2
42Y4    [ THE ABOVE ROUTINE CHECKS TO SEE IF ERROR OCCURRED DURING INITIALISATIO
42Y5    [ OF BULK DEVICES IF IT DID THE RETURN TO CONTINUE WITH OTHER DEVICES   
42Y6    )   
42Y7    #   
42^H    # SUBROUTINE TO TEST IF AN IPB IS A VIRTUAL 7900 AND IF TRUE TO 
4322    # INDICATE THIS FACT IN THE OUTPUT ACTIVITY AND TO CHAIN THE SYSTEM 
432F    # SUPERVISORIES BLOCK AFTER THE OUTPUT ACTIVITY(TO BE THE FIRST BLOCK   
432Y    # THE V7900(PROGRAM) READS).
433C    # ALSO PRESETS THE OUTPUT ACTIVITY'S REPLY WORD (CPRW1) WITH A  
433W    # SUCCESSFUL 7900 WRITE TRANSFER REPLY TO MINIMISE CHANGES TO K1IPBOUT  
434*    # ON ENTRY AND EXIT X2 -> 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
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1