{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: TRAPCHEC867)}} ====== TRAPCHEC867 ====== (George Source) **Macros used:** [[george:macro:BRUSEN|BRUSEN]], [[george:macro:BXU|BXU]], [[george:macro:CHAIN|CHAIN]], [[george:macro:CJOBLOCK|CJOBLOCK]], [[george:macro:CLOSE|CLOSE]], [[george:macro:COMBRKIN|COMBRKIN]], [[george:macro:COMERR|COMERR]], [[george:macro:ENDCOM|ENDCOM]], [[george:macro:FINDFEXTRA|FINDFEXTRA]], [[george:macro:FINDNAME|FINDNAME]], [[george:macro:FINDWFL|FINDWFL]], [[george:macro:FINDWFN|FINDWFN]], [[george:macro:FREECORE|FREECORE]], [[george:macro:FSHCODE|FSHCODE]], [[george:macro:FSHENTRY|FSHENTRY]], [[george:macro:FSHSKIP|FSHSKIP]], [[george:macro:GEOERR|GEOERR]], [[george:macro:HUNT|HUNT]], [[george:macro:JBS|JBS]], [[george:macro:LOGACCESS|LOGACCESS]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREE|MFREE]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MONOUT|MONOUT]], [[george:macro:NAME|NAME]], [[george:macro:NAMETOP|NAMETOP]], [[george:macro:OPENDIR|OPENDIR]], [[george:macro:OUTBLOCK|OUTBLOCK]], [[george:macro:OUTPARAM|OUTPARAM]], [[george:macro:PROPUSER|PROPUSER]], [[george:macro:READAGAIN|READAGAIN]], [[george:macro:REPALLER|REPALLER]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SIX|SIX]], [[george:macro:SPRIVTEST|SPRIVTEST]], [[george:macro:STEP|STEP]], [[george:macro:TESTHOOK|TESTHOOK]], [[george:macro:TESTNAMX|TESTNAMX]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:TESTREPNOT|TESTREPNOT]], [[george:macro:TESTUSER|TESTUSER]], [[george:macro:TRACE|TRACE]], [[george:macro:TRANSFIN|TRANSFIN]], [[george:macro:UNNORM|UNNORM]], [[george:macro:UP|UP]] 228= ... SEG TRAPCHEC,3,FILE,USERCOMS,G400 22BG ...[ 22JQ ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 22R2 ...[ 22^= ...# 23DW ...#UNS G400 23YG ...# THIS CHAPTER IS FOR G3PLUS-IH MK2 25CB # THIS SEGMENT IS USED BY THE TRAPCHECK COMMAND AND THE CHECKTRAP 25X2 # A SEARCH IS MADE FOR THE TRAP FOR THE GIVEN USER (OR HIS GROUP) OR 26BL # GROUP TRAP OF A SUPEROOR USER. AN APPROPRIATE REPLY IS GIVEN. ERRO 26W= # ARE REPORTED WHERE A USER ATTEMPTS TO ASCERTAIN THE ACCESS OF ANOT 27*W # IN ANOTHER USER'S FILE OR WHERE HE IS NOT ALLOWED ACCESS IN ANOTHE 27TG # USER'S FILE IE THE RESULT OF THE SEARCH IS NEGATIVE. 28*6 [ 28SQ SEGENTRY K3TRAPCHEC,PARAMSDONE 29#B SEGENTRY K5TRAPCHEC,ZCHECKTRA 29LR ... SEGENTRY K7TRAPCHEC,(GEOERR)[OLD AND REDUNDANT ENTRYPOINT 29^8 ... 2=6C ... FSHENTRY K8TRAPCHEC,,RETFROMA,RETFROMA 2=?L [ 2J46 ONE +1 2JHQ PARA1 2K3B +5 2KH2 8HGROUP 2L2L PARA2 2LG= +3 2L^W 8HALL 2MFG PARA3 2M^6 +5 2NDQ 8HERASE 2NYB +5 2PD2 8HWRITE 2PXL +6 2QC= 8HAPPEND 2QWW +4 2RBG 8HREAD 2RW6 +7 2S*Q 8HEXECUTE 2STB PARA4 2T*2 PM6 4H: 2TSL MASTER 12HMASTER 2W#= MANAG 12HMANAGER 2WRW ZGEOER1 2X?G GEOERR 1,JBBLOCK? 2XR6 RCHEQNAME 2Y=Q # ROUTINE CHECKS IF THE NAME IN THE "TRAP-TYPE" BLOCK AT X1 IS 2YQB # EQUAL TO ANY OF THE NAMES IN THE FULLY EXPANDED ABS.NAME BLOCK 2^=2 # AT X2.CALLED BY X7,USES X2,X3,X4,X0. 2^PL LDX 4 A1(2) [ 329= SBN 4 4 [ 32NW STOZ 3 [X4= COUNT OF NAMES IN FABSNB LESS 1 338G SMO FX1 [MUST BE 1 OR MORE 33N6 DVD 3 SIX [ 347Q ADX 2 A1(2) [A1(2) NOW 34MB TESTA [POINTS TO 3572 SBN 2 6 [NEXT NAME UP 35LL TESTNAMX 3,A1+1(2),ETRUSER1(1),TBCT,3 [J IF NAMES ONEQUAL 366= EXIT 7 1 [EXIT +1 IF OK 36KW TBCT 375G BCT 4 TESTA [J FOR NEXT NAME 37K6 EXIT 7 0 [TOP NAME IS :MASTER,SO DON'T NEED 384Q [TO CHECK IT. 38JB SIX +6 3942 # X7 IS USED TO INDICATE WHETHER TRAPCHECK COMMAND OR MACRO 39HL # B1=1,B2=0 INDICATES COMMAND 3=3= # B1=1,B2=1 INDICATES MACRO 3=GW [ 3*Y= ZCHECKTRA 3DBB # THIS SECTION INITIALISES ACCUMULATORS 3DW2 LDCT 7 #300 [MACRO MARKER 3F*L LDCT 4 #400 [TO SET B0 OF X4 =1 AS A MARKER 3FT= LDN 6 0 [INITIALISE X6 3G#W LDN 5 0 3GBK ...#UNS G400 3GC2 ...( 3GCC ... SEGENTRY K20TRAPCHEC 3GCS ... NULL 3GD# ... TESTHOOK XCHWF [ IGNORE ALL TRAPS IF IN A HOOK 3GDW ... SEGENTRY K21TRAPCHEC 3GFD ...) 3GG4 ... SEGENTRY K90TRAPCHEC 3GM= ... NULL 3GSG ... JBS XCHWF,2,CXTSYSIS [J IF SYSISSUED ACT 3H4# ... SEGENTRY K91TRAPCHEC 3H#6 BRUSEN T30Q [J IF NO JOBBLOCK 3HRQ CJOBLOCK 3 [FIND CURRENT JOBLOCK 3M96 SPRIVTEST JSSTART,3,T30Q [TEST IF PRIV,J TO T30Q IF NOT HELD 3MNQ XCHWF 3N8B HUNT 1,FILE,FABSNB [J ROUND WINDING THRU'ENTRY 3NN2 LDN 0 #200 [FOR W/F'S 3P7L ANDX 0 ATYPE(1) 3PM= BNZ 0 QEOF 3Q6W RSTEP STEP [THIS SECTION SETS POINTER TO END OF 3QLG BZE 3 QEOF 3R66 LDX 5 ERES-A1(3) 3RKQ BNZ 5 RSTEP [ZERO IF NEXT ENTRY 3S5B QEOF 3SK2 LDN 5 CALL 3T4L #SKI K6TRAPCHEC>99-99 3TJ= TRACE 3,PRIVHELD 3W3W BRN PRIV2 3W?N ... SEGENTRY K92TRAPCHEC 3WHG T30Q 3X36 MHUNT 1,FILE,FABSNB 3XGQ LDN 0 #200 3Y2B ANDX 0 ATYPE(1) 3YG2 BZE 0 NOWF1 3Y^L LDN 0 1 [IN CASE OF NON-FILESTORE ENTRANT WHI 3^F= ANDX 0 ATYPE(1) [IS WORKFILE, TREAT AS ORDINARY FILE 3^YW BNZ 0 NOWF1 [IT WILL BE A WORKTAPE 42DG FINDWFN ,3 [X3->FCB 42Y6 FINDFEXTRA 3,3 [X3 -> FEXTRA 43CQ LDX 5 FWORKTRAP(3) [TRAPS. 43XB BRN PRIV4 44C2 NOWF1 44WL SETNCORE 4,3,FILE,FAPB, [SET UP FAPB FOR COMPARISON 45B= LDN 0 4 45TW STO 0 A1(3) [R.H. 46*G #SKI ANOUSER 46T6 BRUSEN NOJOBLOCK [J IF NO JOBLOCK 47#Q CJOBLOCK 2 [JOBLOCK 47SB LDX 0 ALOGLEN(2) [FOR A CHECKTRAPS IN NO USER 48#2 SBN 0 ASTJOB [CONTEXT,WE NEED THE USER-NAME 48RL BNZ 0 YJOBLK [J IF EXISTS JOBBLK 49?= PROPUSER [GET PROPER USER 49QW MHUNTW 3,FILE,FAPB 4==G TESTREP2 OK,NOJOBLO [J IF ALREADY PROPER 4=Q6 ADN 2 ACOMMUNE1 4?9Q BRN MOIT 4?PB YJOBLK 4#92 ADN 2 JUSER [ORIGIN 4#NL MOIT 4*8= ADN 3 A1+1 [DESTINATION 4*MW MOVE 2 3 [NAME GOES ACROSS 4B7G BRN T30 [J. TO SET UP FABSNB 4BM6 NOJOBLOCK 4C6Q NOJOBLOK 4CLB LDX 2 FX2 [PTR TO CPREFIX IN CURRENT 4D62 NOJOBLO 4DKL ADN 2 CPREFIX [ACTIVITY 4F5= BRN MOIT 4FJW # 4G4G # THIS ROUTINE CHECKS THAT,IF A USER PARAM IS GIVEN 4GJ6 # AND THE CURRENT USER DOES NOT OWN THE FILE-NAME GIVEN, 4H3Q # THE USERNAME PARAMETER IS EQUAL TO THE CURRENT USER. 4HHB # IF NOT,AN ERROR IS REPORTED 4J32 TSEST 4JGL BNG 4 T43A [MARKER SET BY TRAPPARA,NO USER PARAM 4K2= #SKI ANOUSER 4KFW ( 4K^G #SKI K6TRAPCHEC 4LF6 BRUSEN ZGEOER1 [ERROR IF NO JOBLOCK 4LYQ ) 4MDB CJOBLOCK 3 4MY2 MHUNTW 1,FILE,FAPB [COMPARE 4NCL LDN 2 3 [3.WORDS 4NX= QLP 4PBW SMO 2 [IN FAPB 4PWG LDX 0 A1(1) [WITH JOB'S PROPER 4QB6 SMO 2 [USER-NAME 4QTQ BXU 0 JUSER-1(3),QUEER 4R*B BCT 2 QLP 4RT2 BRN T43A 4S#L QUEER 4SS= CLOSE 4T?W ... COMERR ERNOAUTH 4TRG ...# 4WQQ # ENTRY FROM TRAPPARA. THE FAPB HAS BEEN SET UP AND B0 OF X6 SET IF 4X=B # A'GROUP'PARAMETER GINEN. 4XQ2 # THE DIRECTORY IS OPENED AND OWNERSHIP OF THE FILE CHECKED 4Y9L [ 4YP= PARAMSDONE 4^8W [ 4^NG LDN 5 0 5286 MHUNTW 3,FILE,FTRAP [RENAME FTRAP BLOCK 52MQ NAMETOP 3,FILE,FAPB 537B MHUNT 2,FILE,FABSNB 53M2 LDN 0 2 546L ORS 0 ATYPE(2) 54L= LDN 0 #200 555W ANDX 0 ATYPE(2) 55KG BZE 0 NOTWF5 5656 LDN 0 1 56JQ ANDX 0 ATYPE(2) [IF NON-FILESTORE I.E. WORKTAPE, TREA 574B BNZ 0 NOTWF5 [AS NON-WORKFILE 57J2 FINDWFL 3 [-> FCB 583L FINDFEXTRA 3 [-> FEXTRA 58H= LDX 5 FWORKTRAP(3) 592W MHUNT 1,FILE,FNAME 59GG NAMETOP 1,CPB,CUNI 59Q# ... FSHSKIP 5=26 BRN YZYZ 5=7# ... FSHCODE AORB 5=#G ... BRN YYYZ 5=FQ NOTWF5 5=^B OPENDIR ZBRAK,READ,QUERY 5?F2 MHUNT 3,FILE,FNAME 5?YL CHAIN 3,FX2 5#D= NAMETOP 3,CPB,CUNI [RENAME FNAME BLOCK 5#XW TESTREP2 OK,OKDIROP [JIF OK 5*CG ... REPALLER [REPORT ERRORS 5*G5 ... FSHCODE A,SKIPINB2 5*JN ...( 5*M? ... TRANSFIN ,,ALIEN 5*PW ...SKIPINB2 5*SF ...) 5*X6 ... ENDCOM 5G?Q OKDIROP 5GRB OWNERCHECK 5H?2 TESTREPNOT OK,TSEST [J IF NOT OWNER 5HQL LDCT 5 #400 [MARKER 5J== T43A 5JPW T30 [ENTRY FOR CHECKTRAPS MACRO 5K9G SETNCORE 4,3,FILE,FABSNB [SET UP FABSNB 5KP6 MHUNTW 2,FILE,FAPB 5L8Q ADN 2 ETRUSER1 [MOVE PTRS 5LNB ADN 3 A1+1 [ 5M82 MOVE 2 3 [MOVE IN USER-NAME 5MML SBN 3 A1+1 5N7= LDN 0 4 5NLW STO 0 A1(3) [R.H. 5P6G SEARCH 5PL6 STEP [STEP ONTO 1ST TRAPS RECORD 5Q5Q BZE 3 NDENT [JIF END-OF-FILE 5QKB LDX 0 ERES-A1(3) [X0=2ND WORD OF RECORD 5R52 BZE 0 NDENT [JIF NEXT NAME REC 5RJL BPZ 0 SEARCH [JIF NOT TRAP REC 5RLT ... LDEX 0 ETRAPMODES-A1(3) [TRAPS IN RECORD 5RP4 ... LDEX 4 5 [TRAPS FOUND SO FAR 5RR? ... ANDX 4 0 [TRAPS IN RECORD WE HAVE ALREADY 5RTG ... [FOUND USER TO POSSESS 5RXP ... ERX 4 0 [ARE THERE ANY OTHER TRAPS IN REC 5R^Y ... BZE 4 SEARCH [IF NOT, IGNORE RECORD 5S4= LDX 0 ETRAPMODES-A1(3) [MODES WORD 5SHW BPZ 0 TCNOGRUP [J IF NOT GROUP TRAP 5T3G LDX 0 MANAG(1) 5TH6 BXU 0 ETRUSER1-A1(3),MACROCHTR [J IF NOT :MANAGER 5W2Q LDX 0 MANAG+1(1) 5WGB LDX 2 MANAG+2(1) 5X22 TXU 0 ETRUSER2-A1(3) 5XFL BXU 2 ETRUSER3-A1(3),MACROCHTR 5X^= LDEX 0 ETRAPMODES-A1(3) [MANAGER,GROUP = EVERYONE 5YDW ORX 5 0 5YYG BRN XMANAT 5^D6 MACROCHTR 5^XQ # THIS SECTION LOOKS TO SEE WHETHER A USER IS ALLOWED ACCESS TO A FI 62CB # AS A MEMBER OF A GROUP BY COMPARING THE TRAP USERNAME WITH EACH 62X2 # COMPONENT OF THE EXPANDED FULL ABSOLUTE NAME OF THE TRAPEE 63BL # IF OK THE TRAPSTYLE BITS ARE CRED INTO X5 63W= HUNT 2,FILE,FABSNB 64*W TESTNAMX 3,A1+1(2),MASTER(1),YFOUND,3 64TG BRN YFIND [IF NAME ALREADY UP TO :MASTER 65*6 YFOUND [DO NOT EXPAND USING FINDNAME 65SQ FINDNAME 66#B TESTREPN NOUSER,YFIND [J IF OK 66S2 GEOERR 1,CORRDICT 67?L YFIND 67R= READAGAIN 68=W MHUNTW 1,FILE,FRB 68QG STO 7 AWORK1(2) 69=6 HUNT 2, FILE,FABSNB 69PQ CALL 7 RCHEQNAME [CHECK NAMES IN FABSNB 6=9B BRN T7 [NAMES NOT EQUAL 6=P2 LDEX 0 ETRAPMODES(1) [OR IN TRAPBITS,EX. FOR 6?8L ORS 0 5 [GROUP BIT 6?N= SMO FX2 6#7W LDX 7 AWORK1 6#MG FREECORE 1 [FREE FRB 6*76 XMANAT 6*LQ LDEX 0 5 6B6B SBN 0 CALL [J IF"ALL"NOT YET ESTABLISHED 6BL2 BNZ 0 SEARCH 6C5L BRN NDENTF 6CK= T7 6D4W MFREE FILE,FRB 6DJG LDX 7 AWORK1(2) 6F46 BRN SEARCH 6FHQ TCNOGRUP 6G3B BNG 6 SEARCH [JIF NOT GROUP BUT GROUP REQD 6GH2 MHUNTW 2,FILE,FAPB 6H2L LDN 1 3 6HG= TCLOOPQ 6H^W SMO 1 6JFG LDX 0 A1(2) [CHECK IF NAMES THE SAME 6J^6 SMO 1 [IN FAPB & TRAP 6KDQ BXU 0 0(3),SEARCH 6KYB BCT 1 TCLOOPQ 6LD2 LDEX 0 4(3) [TRAPBITS 6LXL ORX 5 0 [DON'T WANT"GROUP" BIT 6MC= LDEX 0 5 6MWW SBN 0 CALL [J BACK TO FINISH SEARCH THROUGH 6NBG BNZ 0 SEARCH 6NW6 NDENTF 6P*Q #SKI K6TRAPCHEC>99-99 6PTB TRACE 5,TRAPBITS 6Q*2 T49 STEP 6QSL BZE 3 NDENT 6R#= LDX 0 ERES-A1(3) [LOOP THRU TO 6RRW BNZ 0 T49 6S?G NDENT 6SR6 SLL 7 2 6T=Q BZE 7 YY 7G=L PRIV 7GQ= MFREE FILE,FABSNB [FREE FABSNB 7H9W PRIV3 7HPG MFREE FILE,FAPB 7J96 PRIV4 7JNQ ANDX 5 BITS22LS 7K8B PRIV2 7KD8 ... LDX 2 FX2 7KN2 STO 5 ACOMMUNE7(2) [STORE REPLY 7L7L UP 7L9T ...YY 7L#4 ...#UNS ILOGACC 7LB? ...( 7LDG ...# LOG THIS ACCESS OR ATTEMPTED ACCESS 7LGP ... MHUNTW 2,FILE,FAPB 7LJY ... NAME 2,FILE,FTRAP 7LM7 ... ORS 6 ETRAPMODES(2) [INDICATE IF GROUP 7LPB ... LOGACCESS 10 7LRK ... MHUNTW 2,FILE,FTRAP 7LTS ... NAME 2,FILE,FAPB 7LY3 ... ERS 6 ETRAPMODES(2) 7M2= ...) 7M4F ... CLOSE [CLOSE DIRECTORY 7M6W MFREE FILE,FABSNB 7M8K ...YYYZ 7M=# ... FSHCODE A,SKIPINB1 7M#3 ...( 7M*Q ... LDN 7 1 7MCF ... TRANSFIN 7,,ALIEN 7MF8 ...SKIPINB1 7MGX ...) 7MJL ...RETFROMA 7MLG BNZ 5 YZYZ [DO NOT JUMP IF NOT OWNER AND NO ACCE 7N66 # NORMALLY WHEN THERE IS A NEGATIVE RESPONSE TO A CHECK BY A USER AB 7NKQ # HIS ACCESS TO ANOTHER USER'S FILE AN ERROR IS REPORTED, BUT FOR TE 7P5B # PURPOSES, A REPLY WILL BE GIVEN INDICATING THAT NO ACCESS IS PERMI 7PK2 MONOUT JNOACC 7Q4L BRN TERM 7QJ= YZYZ ANDX 5 BITS22LS [CLEAR B0 OF X5 7R3W BNZ 5 Y14 7RHG MICH MONOUT CHTRAPREP2 7S36 BRN TERM 7SGQ Y14 ORX 5 6 7T2B LDN 7 4 [X7 CONTAINS SIZE FOR OUTBLOCK 7TG2 BPZ 5 NOGPOUT [J IF NEED NO GROUP PARM 7T^L ADN 7 3 7WF= NOGPOUT 7WYW LDN 3 4 [DEFAULT COUNT FOR LOOP 7XDG LDEX 0 5 7XY6 SBN 0 CALL 7YCQ BNZ 0 NOTALLP [J IF NOT ALL 7YXB ADN 7 3 [ONLY NEED ONE MORE PARAM IF ALL 7^C2 BRN SETBLOQ 7^WL NOTALLP 82B= ADN 0 CALL 82TW Y59 83*G SRC 0 1 83T6 BPZ 0 PARACT [J IF NEXT BIT NOT SET 84#Q ADN 7 3 [IF IT IS,ADD ANOTHER 3WDS TO OUTBLOK 84SB PARACT 85#2 BCT 3 Y59 [BRN ON COUNT 85RL SETBLOQ 86?= MHUNT 1,FILE,FABSNB 86QW LDX 0 ALOGLEN(1) [IF FABSNB ONLY & 6 WDS LONG,USE CUNI 87=G SBN 0 4 [BLOCK TO OUTPARAM ENTRANT NAME.O/W 87Q6 BZE 0 USECUNIPARA [USE LOCAL NAME IN FABSNB FOR UP-TO- 889Q [DATE DETAILS 88PB LDN 0 #200 8992 ANDX 0 ATYPE(1) 89NL BNZ 0 USECUNIPARA [J IF W/F. 8=8= ADX 1 ALOGLEN(1) 8=MW LDX 0 A1-6(1) 8?7G BZE 0 USECUNIPARA [EXIT IF NAMELESS FILE(I.E.M.T.). 8?M6 TESTUSER A1-6(1),USECUNIPARA [OR IF DIR BEING TRAPCHECKED-ELSE 8#6Q [NNORM GOES POTTY & GEOERRS SHORTFAB. 8#LB SETNCORE 10+CPDATA-A1+1,1,ADATA,CREADL 8*62 STOZ A1(1) 8*KL UNNORM TWO [CONVERT ABSOLUTE NAME 8B5= MHUNTW 1,ADATA,CREADL 8BJW LDX 6 A1(1) [CHAR.CT. 8C4G LDX 0 6 8CJ6 ADN 0 1 [MIN NO. WDS. TO CONTAIN PARAM 8D3Q SRA 0 2 8DHB ADX 7 0 8F32 OUTBLOCK 7 [PARAM BLOCK 8FGL OUTPARAM 6,CPDATA,ADATA,CREADL 8G2= MFREE CPB,CUNI 8GFW BRN OUTUSER 8G^G USECUNIPARA 8HF6 MHUNT 2,CPB,CUNI 8HYQ ADX 7 ALOGLEN(2) [SIZE OF FILENAME PARAM 8JDB SBN 7 1 8JY2 OUTBLOCK 7 [OUTPUT BLOCK 8KCL MHUNT 1,CPB,CUNI 8KX= LDEX 6 ANUM(1) 8LBW OUTPARAM 6,APARA,CPB,CUNI [OUTPARAM FILE NAME 8LWG MFREE CPB,CUNI 8MB6 OUTUSER 8MTQ LDN 6 12 8N*B OUTPARAM 6,A1+1,FILE,FAPB [OUTPARAM USERNAME 8NT2 BPZ 5 NOGRPAR [J IF NO GP. MODE 8P#L ADN 1 PARA1 8PS= CALL 6 OUTPARAM [OUTPUT GROUP PARAM 8Q?W NOGRPAR 8QRG LDEX 0 5 8R?6 SBN 0 CALL [J IF NOT ALL 8RQQ BNZ 0 PARALOOP 8S=B ADN 1 PARA2 8SQ2 CALL 6 OUTPARAM [OUTPUT "ALL" PARAM 8T9L BRN MONOUT 8TP= PARALOOP 8W8W LDN 3 PARA4-PARA3 8WNG ZP2Q SRC 5 1 8X86 BPZ 5 NOLUK [J IF NEXT BIT NOT SET 8XMQ ADN 1 PARA3-3(3) 8Y7B CALL 6 OUTPARAM [OUTPUT APPR. PARAM 8YM2 NOLUK 8^6L SBN 3 3 8^L= BNZ 3 ZP2Q [J BACK IF COUNT NOT EXPIRED 925W MONOUT 92KG MFREE FILE,FAPB [FREE OUR TRUSTY FAPB 9356 MONOUT CHTRAPREP [OUTPUT MESSAGE 93JQ TERM 944B ENDCOM 94J2 OUTPARAM 953L SBX 6 FX1 95H= LDX 4 0(1) [NO. CHARS 962W ADN 1 1 [PTR FOR MOVE 96GG MHUNTW 2,FILE,FAPB [MOVE IN 2 WORDS 9726 ADN 2 A1 97FQ MOVE 1 2 97^B OUTPARAM 4,A1,FILE,FAPB [OUTPARAM PARAMETER FROM FAPB 98F2 ADX 6 FX1 98YL EXIT 6 0 99D= ZBRAK 99N4 ... FSHSKIP 99XW COMBRKIN 9=54 ... FSHCODE AORB 9=== ... BRN (GEOERR) 9=CG [ 9=X6 MENDAREA 25,K99TRAPCHEC 9?BQ #END ^^^^ ...12764344000200000000