17 22FL #LIS K0MONFILE>K0SETMON>K0OBJPROG>K0ALLGEO>K0GREATGEO 14 22_= #SEG SETMON70 [R TERRY 7 23DW 8HSETMON70 11 23YG SEGENTRY K1SETMON,SENTRY1 11 24D6 SEGENTRY K2SETMON,SENTRY2 11 24XQ SEGENTRY K3SETMON,SENTRY3 11 25CB SEGENTRY K4SETMON,SENTRY4 11 25X2 SEGENTRY K5SETMON,SENTRY5 11 26BL SEGENTRY K7SETMON,SENTRY7 11 26W= SEGENTRY K8SETMON,SENTRY8 11 27*W SEGENTRY K9SETMON,SENTRY9 12 27TG SEGENTRY K10SETMON,SENTRY10 12 28*6 SEGENTRY K11SETMON,SENTRY11 12 28SQ SEGENTRY K12SETMON,SENTRY12 12 29#B SEGENTRY K13SETMON,SENTRY13 20 29S2 # THIS SEGMENT SETS UP PARAMETER BLOCKS FOR OUTPUT TO THE MONITORING 5 2=?L # FILE 9 2=R= XBIT0 7H8388608 9 2?=W MSK1 #77770000 11 2?QG XOUTMJPD #500:JPDJOBMILL 21 2#=6 # THIS SUBROUTINE GETS THE CORE FOR OUTBLOCK. AMONT OF CORE REQD IN X3 12 2#PQ # OR 56 WORDS, WHICH EVER IS GREATER 8 2*9B SR1 SBX 7 FX1 7 2*P2 LDX 4 3 8 2B8L SBN 4 24 8 2BN= BPZ 4 SRX1 8 2C7W LDN 3 24 4 2CMG SRX1 11 2D76 SETUPCORE 3,3,GMON,ASET 13 2DLQ LDCT 4 #100 [SET 14 2F6B ORS 4 CLONG1(2) [MARKER 16 2FL2 STOZ A1(3) [ZEROISE CH CT 8 2G5L LDN 4 A1+2 17 2GK= STO 4 A1+1(3) [PTR TO 1ST FREE WORD 14 2H4W STO 3 AWORK2(2) [SAVE PTR 8 2HJG ADX 7 FX1 7 2J46 EXIT 7 0 21 2JHQ # THIS SUBROUTINE CHECKS TO SEE IF THE BLOCK IS LONG ENOUGH. IF NOT IT 21 2K3B # DOES AN ALTLEN. X3 PTS. TO START OF GMON BLOCK, AND X5 CONTAINS NO. OF 10 2KH2 # WDS.NEEDED FOR NEXT PARAM. 5 2L2L TESTLEN 8 2LG= SBX 7 FX1 18 2L_W LDX 4 A1+1(3) [PTR TO NEXT PARAM POSN 17 2MFG SBN 4 A1-1 [NEXT PARAM. POSN. 7 2M_6 ADX 4 5 10 2NDQ TXL 4 ALOGLEN(3) 18 2NYB BCS NMOR [J IF BLOCK LONG ENOUGH 10 2PD2 TRACE 4,!ALTLEN! 8 2PXL ALTLEN 3,4 9 2QC= MHUNTW 3,GMON,ASET 17 2QWW NMOR STO 3 AWORK2(2) [SAVE BLOCK ADDRESS 9 2RBG ADX 3 A1+1(3) 8 2RW6 ADX 7 FX1 7 2S*Q EXIT 7 0 5 2STB SENTRY1 15 2T*2 LDX 3 HMON1(2) [LENGTH REQD 9 2TSL #SKI K6SETMON>199-199 10 2W#= TRACE HMON1(2),HOORAY! 7 2WRW ADN 3 4 20 2X?G CALL 7 SR1 [GET BLOCK AND INSERT RED TAPE 5 2XR6 UP 5 2Y=Q SENTRY2 15 2YQB LDCT 0 #100 [TEST IF ASET 15 2_=2 ANDX 0 CLONG1(2) [BLOCK THERE 8 2_PL BNZ 0 SFD1 7 329= LDN 3 3 16 32NW CALL 7 SR1 [GET GMON BLOCK 8 338G ADN 3 A1+2 8 33N6 BRN SETP 9 347Q SFD1 MHUNTW 3,GMON,ASET 7 34MB LDN 5 1 20 3572 CALL 7 TESTLEN [INCREASE BLOCK SIZE IF NECESSARY 15 35LL SETP STOZ 0(3) [ZERO CH CT 7 366= ADN 3 1 9 36KW BRN REDTAPE 8 375G SJ3 SBX 6 FX1 8 37K6 LDCT 0 #100 9 384Q ANDX 0 CLONG1(2) 8 38JB BNZ 0 SJ1 16 3942 LDX 3 ACOMMUNE1(2) [LOAD WORD COUNT 8 39HL CALL 7 SR1 8 3=3= ADN 3 A1+2 8 3=GW BRN SJ2 9 3?2G SJ1 MHUNTW 3,GMON,ASET 16 3?G6 LDX 5 ACOMMUNE1(2) [LOAD WORD COUNT 9 3?_Q CALL 7 TESTLEN 8 3#FB SJ2 ADX 6 FX1 7 3#_2 EXIT 6 0 5 3*DL SENTRY11 8 3*Y= CALL 6 SJ3 5 3BCW UP 5 3BXG SENTRY12 8 3CC6 CALL 6 SJ3 16 3CWQ LDX 1 ACOMMUNE1(2) [LOAD WORD COUNT 10 3DBB LDN 2 ACOMMUNE2(2) 8 3DW2 MOVE 2 0(1) 7 3F*L ADX 3 1 8 3FT= LDX 1 FX1 8 3G#W LDX 2 FX2 8 3GSG BRN REDTAPE 5 3H#6 SENTRY13 8 3HRQ LDCT 0 #100 9 3J?B ANDX 0 CLONG1(2) 8 3JR2 BNZ 0 S38 7 3K=L LDN 3 5 8 3KQ= CALL 7 SR1 8 3L9W ADN 3 A1+2 8 3LPG BRN S38A 9 3M96 S38 MHUNTW 3,GMON,ASET 7 3MNQ LDN 5 1 9 3N8B CALL 7 TESTLEN 10 3NN2 S38A LDX 0 XOUTMJPD(1) 8 3P7L STO 0 0(3) 7 3PM= ADN 3 1 9 3Q6W BRN REDTAPE 5 3QLG SENTRY3 11 3R66 # ENTRY FROM OUTNUM : OCTAL CASE 8 3RKQ #SKI K6SETMON>99-99 10 3S5B TRACE HMON1(2),NUMBER 15 3SK2 LDCT 0 #100 [TEST IF ASET 15 3T4L ANDX 0 CLONG1(2) [BLOCK EXISTS 8 3TJ= BNZ 0 S31 7 3W3W LDN 3 6 16 3WHG CALL 7 SR1 [GET GMON BLOCK 8 3X36 ADN 3 A1+2 8 3XGQ BRN S32 4 3Y2B S31 9 3YG2 MHUNTW 3,GMON,ASET 7 3Y_L LDN 5 4 18 3_F= CALL 7 TESTLEN [GET MORE IF NECESSARY 4 3_YW S32 8 42DG LDCT 6 #700 8 42Y6 S37 STO 6 0(3) 9 43CQ LDX 0 HMON1(2) 8 43XB STO 0 1(3) 7 44C2 ADN 3 2 9 44WL BRN REDTAPE 11 45B= # ENTRIES FOR DECIMAL CONVERSION 5 45TW SENTRY10 8 46*G LDCT 6 #660 8 46T6 BRN NDEC 5 47#Q SENTRY9 8 47SB LDCT 6 #640 8 48#2 BRN NDECA 5 48RL SENTRY8 8 49?= LDCT 6 #620 5 49QW NDECA 9 4==G ORX 6 HMON2(2) 4 4=Q6 NDEC 18 4?9Q # THIS SECTION IS COMMON TO ALL THE DEC CONVERSION ROUTINES 8 4?PB #SKI K6SETMON>99-99 10 4#92 TRACE HMON1(2),NUMBER 8 4#NL LDCT 0 #100 17 4*8= ANDX 0 CLONG1(2) [TEST IF ASET BLOCK 8 4*MW BNZ 0 S35 7 4B7G LDN 3 5 17 4BM6 CALL 7 SR1 [SET UP GMON BLOCK 8 4C6Q ADN 3 A1+2 8 4CLB BRN S36 9 4D62 S35 MHUNTW 3,GMON,ASET 7 4DKL LDN 5 3 21 4F5= CALL 7 TESTLEN [CHECK BLOCK LENGTH; GET MORE IF REQD 4 4FJW S36 8 4G4G BRN S37 5 4GJ6 SENTRY4 15 4H3Q # ENTRY FROM OUTPARAM(X),OUTEXES(X) MACROS 9 4HHB LDX 5 HMON1(2) 8 4J32 ANDN 5 #7777 7 4JGL ADN 5 3 15 4K2= SRL 5 2 [NO OF WORDS 20 4KFW ADN 5 1 [PLUS ONE FOR PARAM HEADER WORD 8 4K_G LDCT 0 #100 19 4LF6 ANDX 0 CLONG1(2) [TEST IF THERE IS ASET BLOCK 8 4LYQ BNZ 0 S42 7 4MDB LDX 3 5 7 4MY2 ADN 3 2 15 4NCL CALL 7 SR1 [SET UP BLOCK 8 4NX= ADN 3 A1+2 8 4PBW BRN S43 9 4PWG S42 MHUNTW 3,GMON,ASET 9 4QB6 CALL 7 TESTLEN 9 4QTQ S43 LDX 4 HMON1(2) 7 4R*B LDX 0 4 14 4RT2 ANDN 0 #7777 [CH CT 8 4S#L STO 0 0(3) 16 4SS= ADN 3 1 [UPDATE POINTER 7 4T?W STOZ 5 17 4TRG SRL 45 12 [ISOLATE TYPE/SUBTYPE 21 4W?6 # IF THE CH CT IS ZERO THE EFFECT IS AS FOR OUTNULL. OTHERWISE THE BLOCK 21 4WQQ # CONTAINING THE PARAM IS LOCATED(GEOERR IF IT CANNOT BE FOUND) AND A 20 4X=B # POINTER SET UP FOR THE PARAMETER. IF A ZERO TYPE/SUBTYPE IS PASSED 15 4XQ2 # ACROSS, THE CURRENT ACTIVITY BLOCK IS ASSUMED 16 4Y9L BZE 5 REDTAPE [J IF ZERO CH CT 20 4YP= BZE 4 XACT [JUMP IF PARAM IN ACTIVITY BLOCK 9 4_8W HUNTX 2,HMON1(2) 17 4_NG BNG 2 QRONG [GEOERR IF NOT THERE 14 5286 XACT SRL 5 12 [CH COUNT 8 52MQ SMO FX2 8 537B ADX 2 HMON2 20 53M2 # THE FOLLOWING SECTION ACTUALLY MOVES THE PARAM INTO THE ASET BLOCK 20 546L # IF THE PARAM IS LONGER THAN 512 CHARS. THE MOVE MUST BE MULTIPLE 8 54L= LDN 1 512 7 555W TESTA TXL 1 5 15 55KG BCC NORM [JUMP IF NOT 18 5656 LDN 7 0 [SET X7 ZERO AS MARKER 18 56JQ SBN 5 512 [SUBTRACT 512 FROM COUNT 8 574B BRN MISS 7 57J2 NORM LDN 7 1 7 583L LDX 1 5 15 58H= MISS MVCH 2 0(1) [MOVE PARAM 8 592W BZE 7 TESTA 8 59GG LDX 2 FX2 9 5=26 BRN REDTAPE 10 5=FQ QRONG GEOERR 1,RONG BLK 10 5=_B TOTNUMB +AMFNUMBER+1 4 5?F2 # 21 5?YL # THE FOLLOWING ROUTINE IS OBEYED BY THE MACRO OUTMESS(X). THE INITIAL 21 5#D= # PART DETERMINES IN WHICH SEGMENT THE SUBMESSAGE EXISTS. THEN AN ACROSS 21 5#XW # IS MADE TO THE APPROPRIATE SEGMENT USING THE LINK PAIRS TABULATED ABOV 4 5*CG # 5 5*X6 SENTRY5 9 5BBQ LDX 3 HMON1(2) 7 5BWB SRL 3 9 11 5CB2 BXGE 3 TOTNUMB(1),ZGER 9 5CTL LDEX 4 HMON1(2) 9 5D*= ADN 3 KMESSX 9 5DSW ACROSSX 3,K4MESSA 9 5F#G ZGER GEOERR 1,NOMESS 4 5FS6 # 21 5G?Q # THE ROUTINE IS REENTERED HERE AND GMON/ASET BLOCK SET UP IF NOT THERE 21 5GRB # ALREADY OR ANEXISTING ONE LENGTHENED IF NECESSARY. THE PARAMETER HEADE 9 5H?2 # WORD IS ALSO SET UP 4 5HQL # 5 5J== SENTRY7 16 5JPW LDX 5 3 [LENGTH OF ATEMP 15 5K9G LDCT 0 #100 [TEST IF ASET 15 5KP6 ANDX 0 CLONG1(2) [BLOCK EXISTS 8 5L8Q BNZ 0 SFOUN 17 5LNB ADN 5 1 [LENGTH OF PARAM + 3 7 5M82 LDX 3 5 15 5MML CALL 7 SR1 [SET UP BLOCK 8 5N7= ADN 3 A1+2 8 5NLW BRN XINS 21 5P6G SFOUN SBN 5 1 [LEN OF PARAM+1 FOR PARAMETER HEADER 9 5PL6 MHUNTW 3,GMON,ASET 19 5Q5Q CALL 7 TESTLEN [TEST IF BLOCK LONG ENOUGH 4 5QKB XINS 10 5R52 MHUNTW 2,GMON,ATEMP 15 5RJL LDX 7 A1(2) [NO OF CHARS 14 5S4= STO 7 0(3) [CH CT 10 5SHW LDX 1 ALOGLEN(2) 16 5T3G SBN 1 2 [NUMBER OF WORDS 7 5TH6 LDX 7 2 17 5W2Q ADN 2 A1+2 [POINTERS ESTABLISHED 16 5WGB ADN 3 1 [IN BOTH BLOCKS 17 5X22 MOVE 2 0(1) [MOVE IN PARAMETER 17 5XFL ADX 3 1 [UPDATE POINTER AGAIN 16 5X_= FREECORE 7 [FREE ATEMP BLOCK 19 5YDW # THIS SECTION ZEROISES THE 1ST WORD AND UPDATES A1 AND GOES UP 5 5YYG REDTAPE 7 5_D6 SLC 3 2 7 5_XQ ADN 3 3 7 62CB SRL 3 2 9 62X2 SBX 3 AWORK2(2) 9 63BL LDX 1 AWORK2(2) 17 63W= STO 3 A1+1(1) [PTR TO 1ST FREE WORD 7 64*W LDN 0 1 15 64TG ADS 0 A1(1) [NO OF PARS. 5 65*6 UP 10 65SQ MENDAREA 20,GAPSETMON 4 66#B #END 8 ____ ...40304513000300000000