Show pageBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. {{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]] <code - 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 </code> Last modified: 17/01/2024 11:55by 127.0.0.1 Log In