USERLIB867

(George Source)

Macros used: ACROSS, BBS, BBUS, BRUSEN, BXGE, CLOSETOP, DOWN, FINDCORE, FJOCA, FREECORE, FREETAB, GEOERR, GETCORE, HUNT2, KEEPREP, LOGACCESS, MENDAREA, MFREE, MFREEW, MHUNT, MHUNTW, NAME, OPENCREX, PICKREP2, PREP, PUTREP2, READ, READAGAIN, SEG, SEGENTRY, SETNCORE, TABULATE, TESTMODE, TESTREP2, TESTRPN2, TOPFCB2, TRACE, UP, UPPLUS

USERLIB867.txt
22FL          SEG   USERLIB,,C DONG,USEROPES
22^=    [   
2394 ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1983
23DW    [   
23YG          SEGENTRY K1USERLIB,ZENTRY 
24D6    [   
24XQ    [   
25CB    READ  +AREAD
25X2    NDIR  1,1,4HC1  
26BL    TWO   2 
26W=    TRAP  +CREAD
27*W          +CWRITE   
27TG    [   
28#6 ...[   
28*6    [     AWORK3-B0 SET IF TEMP DIRECTORY HAS BEEN SEARCHED 
28SQ    [            B23 SET IF GLIST BLOCK SET UP  
29#B    [   
29S2    [           ENTRY FROM USEROPEN-ENTRANT APPEARS TO BE A MAG TAPE
2=?L    [           MAIN MODESIN X5,SUBSIDIARY MODES IN AWORK1  
2=R=    [   
2?=W    [   
2?QG    [     ENTRY POINT K1
2#=6    [   
2#PQ    [   
2*9B    ZENTRY  
2*P2    #SKI  K6USERLIB>99-99   
2B8L    (   
2BN=          TRACE    5,USERLIB
2C7W          MHUNT    2,FILE,FABSNB
2CMG          BBUS     13,ATYPE(2),PR2     [J IF NO TSN GIVEN   
2D76          SMO      A1(2)
2DLQ          LDX   0  A1+1(2)  
2F6B          BPZ   0  PR2  
2FL2          GEOERR   1,XENOTAPE   
2G5L    PR2 
2GK=    )   
2H4W          LDN   6  0                   [MARKS NO GLIST BLK  
2HJG          TESTMODE 5,ULIB,,CREATE      [IF CREATE MODE GIVEN,DIR.ENTRY TO BE
2J46    [ SET UP-DONT BOTHER TO LOOK IN TEMPORARY DIRECTORY 
2JHQ          MHUNT    2,FILE,FABSNB
2K3B          BBS      16,ATYPE(2),ULIB    [J IF NAMED WORKTAPE-DONT INSPECT THE
2KH2                                       [TEMP.DIR.   
2L2L    [   
2LG=    [     IF TSN GIVEN,LOOK IN TEMPORARY DIRECTORY FIRST -BUG 3816  
2L^W    [   
2MFG          BBS      13,ATYPE(2),TSNGIVN  
2M^6          BBUS     14,ATYPE(2),PR2A    [J IF NOT LOCAL NAME 
2NDQ    TSNGIVN                            [LOOK IN JOB'S TEMPORARY DIRECTORY   
2NYB    #SKI ANOUSER
2PD2          BRUSEN   NOJOB               [J IF NO JOB BLOCK   
2PXL          FJOCA    1,FX2
2QC=          LDCT  0  #002                [THIS BIT SHOULD BE SET IF AND ONLY I
2QWW          ANDX  0  JMISC(1)            [THE TEMP DIR EXISTS.
2RBG          BZE   0  P2                  [BIT UNSET IN ERASE  
2RW6    [   
2S*Q    [     SET UP FABSNB FOR TEMP.DIR AND INSERT LOCAL NAME OF MT
2STB    [   
2T*2          MHUNT    2,FILE,FABSNB
2TSL          LDX   4  ALOGLEN(2)   
2W#=          SBX   4  A1(2)
2WRW          LDX   7  4
2X?G          ADN   7  16   
2XR6          GETCORE  7,1                 [SET UP NEW FABSNB   
2Y=Q          FINDCORE 3
2YQB          SBX   7  4
2^=2          STO   7  A1(3)
2^PL          MHUNT    2,FILE,FABSNB
329=          LDX   7  ATYPE(2) 
32NW          STO   7  ATYPE(3)            [NAME SAME AS THE OTHER  
338G          SMO      A1(2)
33N6          ADN   2  A1-6 
347Q          ADN   3  A1+10
34MB          SMO      4
3572          MOVE  2  6                   [MOVE WHOLE OF LOCAL NAME
35LL          FJOCA    2,FX2
366=          SBN   3  6
36KW          ADN   2  JNAME
375G          MOVE  2  3                   [TEMPORARY DIRECTORY 
37K6          SBN   3  3
384Q          ADN   2  JUSER-JNAME  
38JB          MOVE  2  3                   [PROPER USER 
3942          ADN   3  6
39HL          LDN   2  NDIR(1)  
3=3=          MOVE  2  3
3=GW    [     POSSIBLY MANY ENTRANTS WILL SUIT DESCRIPTION-LIST ALL IN GLIST
3?2G          CALL  4  SLIST
3?G6    [     ENTER USERDIR IN ATTEMPT TO FIND ENTRANT IN TEMP.DIR-NO CREATE MOD
3?^Q          DOWN     USERDIR,1
3#FB          BRN      XBR                 [BREAK -IN   
3#^2          BRN      PR2B                [ERROR   
3*DL          LDX   0  GSIGN               [MARK SYS.SERIAL OPEN
3*Y=          ORS   0  AWORK3(2)
3BCW          TESTRPN2 OK,PFND             [IF REPLY NOT OK,SHD BE NOFILE IF UP2
3BXG    [ OTHERWISE ENTRANT FOUND IN TEMP.DIR.  
3CC6          MHUNT    1,FILE,FABSNB
3CWQ          HUNT2    1,FILE,FABSNB       [FREE GIVEN FABSNB   
3DBB          FREECORE 1                   [LEAVING ONE APPROPRIATE TO ENTRANT  
3DW2                                       [IN TEMP.DIR.
3F*L          BRN      PR1  
3FT=    PFND
3G#W          MFREE    FILE,FABSNB         [FREE FABSNB FOR TEMP.DIR
3GSG    P2  
3H#6          MHUNT    2,FILE,FABSNB
3HRQ    PR2A
3J?B    [     REMEMBER REL AND ZERO GEN 
3JR2          SMO      A1(2)               [NUMBER MARKERS FOR USE IF REPLY IS  
3K=L          LDX   3  A1-2(2)             [NOFILE AND THERE IS NO CREATE MODE  
3KQ=          BNZ   6  ULIB                [J IF GLIST ALREADY SET UP   
3L9W          CALL  4  SLIST
3LPG    ULIB
3M96          DOWN      USERDIR,1   
3MNQ          BRN      XBR  
3N8B          BRN      UDREP
3NN2          LDN   4  ACREATE  
3P7L          ANDX  4  5
3PM=          TESTREP2 NOFILE,PREP  
3Q6W          BNZ   4  RALR 
3QLG    PR1 
3R66          BZE   6  NOLIST              [J IF NO GLIST   
3RKQ    [     OTHERWISE MARK TSNS IN GLIST.SET B0 OF TSN IF WRITE TRAP GIVEN,AND
3S5B    [     ZEROISE TSN IF NO TRAP GIVEN  
3SK2          MHUNTW   2,AONBS,GLIST
3T4L          LDX   6  A1(2)               [NO OF TAPES OF THIS NAME
3TJ=          TABULATE  
3W3W          LDN   3  1                   [POS IN GLIST BLK
3WHG          BXGE  6  TWO(1),TLIST        [IF MORE THAN ONE TSN IN LIST,CHECK  
3X36                                       [ALL 
3XGQ    NOLIST  
3Y2B          CALL  7  TC   
3YG2          BRN      NOTR                [ERROR EXIT  
3Y^L          MHUNTW   2,CPAR,GPERCON      [CHECK WPR QUALIFIERS
3^F=          LDX   0  A1+2(2)  
3^YW          ANDN  0  7
42DG          BZE   0  NOQUAL              [NO QUAL GIVEN   
42Y6          LDX   0  A1+1(2)  
43CQ          ANDN  0  1                   [SEE DOC. FOR CPAR/GPERCON   
43XB          SMO      0
44C2          ANDX  4  TRAP(1)             [CHECK TRAP APPROP TO QUALIFIER  
44WL          BZE   4  NOTR 
45B=    TCD 
45TW          BZE   6  NOLIST1             [ORDINARY CASE   
46*G    [ CONVERT GLIST CASE TO SINGLE ENTRANT CASE IF GLIST CONTAINS ONLY ONE  
46T6          TABULATE  
47#Q          READAGAIN 
47SB          MHUNTW   2,FILE,FRB   
48#2          NAME     2,FILE,ENT   
48RL          MFREEW   AONBS,GLIST  
49?=          LDN   0  1
49QW          ERS   0  AWORK3(2)
4==G    YLIST   
4=Q6          FREETAB   
4?9Q    NOLIST1 
4?PB          MFREE    FILE,FLOCNB  
4#92          CLOSETOP                     [DIRECTORY   
4#NL    [   
4*8=    [     PUT USEROPEN'S MAIN,SUB MODES IN ACOMMUNE1,2 FOR LIBRARIAN
4*MW    [   
4B7G          STO   5  ACOMMUNE1(2) 
4BM6          LDX   0  AWORK1(2)
4C6Q          STO   0  ACOMMUNE2(2) 
4CLB          LDEX  0  AWORK3(2)
4D62          BNZ   0  MANY 
4DKL    [     ENTER LIBSEC IF ONLY ONE USEABLE MT   
4F5=          ACROSS   LIBSEC,1 
4FJW
4G4G
4GJ6    NOQUAL  
4H3Q          ANDN  4  CWRITE   
4HHB          BNZ   4  TCD                 [DO WHAT YOU WANT IF WRITE TRAP  
4J32          LDN   0  1
4JGL          ORS   0  A1+2(2)             [PRETEND USER SET READ QUALIFIER 
4K2=          BRN      TCD  
4KFW
4K^G
4LF6    [     ENTER LIBMANY IF MORE THAN ONE USEABLE MT 
4LYQ    MANY
4MDB          ACROSS   LIBMANY,1
4MY2
4NCL
4NX=    TLIST1  
4PBW          ADN   3  1
4PWG          TABULATE ,1   
4QB6    TLIST   
4QTQ    [     GLIST CONTAINING ENTRANTS-CHECK TRAPS 
4R*B          CALL  7  TC   
4RT2          BRN      TLISTA              [ERROR EXIT  
4S#L          ANDN  4  CWRITE   
4SS=          BZE   4  TLISTB              [NO WRITE TRAP   
4T?W          MHUNTW   2,AONBS,GLIST
4TRG          LDCT  0  #400 
4W?6          SMO      3
4WQQ          ORS   0  A1(2)               [SET B0 OF TSN FOR WRITE TRAP
4X=B    TLISTB  
4XQ2    #SKI  K6USERLIB>99-99   
4Y9L    (   
4YP=          SMO      3
4^8W          LDX   0  A1(2)
4^NG          TRACE    0,LIST TSN   
5286    )   
52MQ          BCT   6  TLIST1   
537B          BRN      YLIST
53M2    TLISTA  
546L          MHUNTW   2,AONBS,GLIST
54L=    #SKI  K6USERLIB>99-99   
555W    (   
55KG          SMO      3
5656          LDX   0  A1(2)
56JQ          TRACE    0,TSNXTRAP   
574B    )   
57J2          SMO      3
583L          STOZ     A1(2)               [REMOVE TSN WITHOUT TRAPS
58H=          LDN   0  1
592W          SBS   0  A1(2)               [DECR.CT.OF USEFUL TAPES 
59GG          BCT   6  TLIST1   
5=26          LDX   0  A1(2)
5=FQ          BNZ   0  YLIST
5=^B          BRN      NOTR                [NO TAPES WITH CORRECT TRAPS 
5?F2
5?YL
5#D=    PR3 
5#XW          LDX   2  FX2  
5*CG          STO   5  ACOMMUNE1(2) 
5*X6          LDX   0  AWORK1(2)
5BBQ          STO   0  ACOMMUNE2(2) 
5BWB    [     ONLY ENTER LIBTSN IF TSN ONLY GIVEN   
5CB2          ACROSS   LIBTSN,1 
5CTL
5D*=
5DSW    [     FREE GLIST IF SET UP  
5F#G    PREP
5FS6          BZE   6  PREP1
5G?Q          MFREEW   AONBS,GLIST  
5GRB    PREP1   
5H?2          BZE   4  PR4                 [J IF NO CREATE MODE GIVEN   
5HQL          MHUNT    3,FILE,FLOCNB
5J==          LDX   0  A1+4(3)             [CHECK GEN.NO.NOT OUT OF RANGE   
5JPW          BNG   0  WRGEN
5K9G    [     LIBRARIAN REQUIRES AN ADICT IN CREATE CASE
5KP6          SETNCORE 3,3,FILE,ADICT   
5L8Q          TOPFCB2  2
5LNB          ADN   2  FME1 
5M82          ADN   3  A1   
5MML          MOVE  2  3
5N7=          OPENCREX XBRC,5   
5NLW          TESTRPN2  OK,OREP 
5P6G    #SKI  K6USERLIB>99-99   
5PL6          TRACE    EXEC3(2),USERREP 
5Q5Q          MFREE    FILE,FLOCNB         [FREED HERE COS DIRCLOSE REPLY GOES  
5QKB          BRN      UP   
5R52                                       [BACK TO USEROPEN AND REQUIRES A 
5RJL                                       [FLOCNB TO FREE THERE.   
5S4=    [   
5SHW    [     ENTER LIBINSEC IF TSN + NAME,OR NAME,GIVEN
5T3G    [     IF TSN ONLY,ENTER LIBTSN  
5TH6    [   
5W2Q    PR4 
5WGB          BNZ   6  NOFLOC              [IF GLIST,THEN NO FLOCNB 
5X22          MFREE    FILE,FLOCNB  
5XFL    NOFLOC  
5X^=          LDX   6  3
5YDW          MHUNT    3,FILE,FABSNB
5YYG          LDN   0  #200 
5^D6          ANDX  0  ATYPE(3)            [NAMED WORK TAPE 
5^XQ          BNZ   0  PRX  
62CB          LDN   2  #2000
62X2          ANDX  2  ATYPE(3)            [X2 NON-ZERO IF TSN GIVEN
63BL          ADX   3  A1(3)
63W=          LDX   0  A1-6(3)             [FIRST WORD OF LAST LOCAL NAME   
64*W          BNZ   0  PRZN         [[J IF NAEE NON-ZERO-NOT NEC ALPHABETIC 
64TG          BNZ   2  PR3                 [J IF TSN BUT ZERO NAME-BUG 7245 
65*6    PRZN
65SQ          STO   6  A1-2(3)             [RESET RELATIVE AND NULL GENERATION  
66#B          LDX   2  FX2  
66S2          STO   5  ACOMMUNE1(2) 
67?L          LDX   0  AWORK1(2)
67R=          STO   0  ACOMMUNE2(2) 
68=W          ACROSS   LIBINSEC,1   
68QG
69=6    PRX   PICKREP2 7
69PQ          CLOSETOP                     [SERIAL  
6=9B          PUTREP2  7
6=P2    UP    UPPLUS   1
6?8L
6?N=    TC  
6#7W          LDN   4  CREAD+CWRITE 
6#MG          TESTMODE 5,TCOUTA,,UNTRAP 
6*76          SBX   7  FX1  
6*LQ          CHECKTRAPS
6B6B          ANDX  4  EXEC1(2) 
6BL2          ADX   7  FX1  
6C5L          BNZ   4  TCOUTA              [   SOME TRAPS THERE 
6CK=          EXIT  7  0
6D4W    TCOUTA  
6DJG          EXIT  7  1
6F46
6FHQ
6G3B    SLIST   
6GH2          MHUNT    2,FILE,FABSNB
6H2L          LDX   0  ATYPE(2) 
6HG=          ANDN  0  #2000
6H^W          BNZ   0  SLEX                [NO GLIST SET UP IF TSN GIVEN
6JFG          SBX   4  FX1  
6J^6          SETNCORE 1,1,AONBS,GLIST  
6KDQ          STOZ     A1(1)
6KYB          LDN   6  1
6LD2          ORS   6  AWORK3(2)           [MARKER USED IN USERDIR  
6LXL          ADX   4  FX1  
6MC=    SLEX
6MWW          EXIT  4  0
6NBG
6NW6
6P*Q    PR2B
6PTB          TESTRPN2 NOFILE,RE
6Q*2          BRN      PFND                [SERIAL CLOSED AGAIN 
6QSL    UDREP   
6R#=          TESTREP2 NOFILE,UDREP1
6RRW          BRN      RE   
6S?G    WRGEN KEEPREP  6,WRGEN  
6SR6          BRN      RE4FREE  
6T=Q    RALR
6TQB          KEEPREP  6,ALREADY
6W=2          BRN      NOGLIST  
6WPL    UDREP1  
6X9=          MHUNT    2,FILE,FABSNB
6XNW          BBS      16,ATYPE(2),UP      [UP+1 IF NOFILE ON NAMED WORKTAPE
6Y8G          KEEPREP  6,NAME   
6YN6          BRN      RE4  
6^7Q    NOTR
6^8H ...#UNS  ILOGACC   
6^9# ...(   
6^=5 ...      SMO      FX2  
6^=W ...      LDEX  0  AWORK3   
6^?M ...      BZE   0  XLOG                [NO GLIST THEREFORE THERE IS AN ENT  
6^#D ...      TABULATE  
6^*9 ...      READAGAIN                    [GET ENT FOR ANY TAPE IN GLIST   
6^B2 ...      MHUNTW   1,FILE,FRB   
6^BR ...      NAME     1,FILE,ENT   
6^CJ ...XLOG
6^D* ...      LDX   0  5
6^F6 ...      ANDN  0  #7000
6^FX ...      SBN   0  #3000
6^GN ...      LDN   1  CREAD
6^HF ...      BNG   0  XLOG1
6^J= ...      LDN   1  CWRITE   
6^K3 ...XLOG1   
6^KS ...      LOGACCESS 7,1 
6^LK ...)   
6^MB          CLOSETOP                     [DIR 
7272          CLOSETOP                     [SERIAL  
72LL          KEEPREP  6,NOTRAP 
736=          LDEX  0  AWORK3(2)
73KW          BZE   0  NOGLIST  
745G          MFREEW   AONBS,GLIST         [FREE EITHER GLIST   
74=N ...#UNS  ILOGACC   
74CW ...#SKI
74K6          BRN      RE4FREE             [OR  
754Q    NOGLIST 
75JB          MFREEW   FILE,ENT            [ENT 
7642    RE4FREE 
76HL          MFREE    FILE,FLOCNB  
773=    RE4 
77GW          ACROSS   REPERR,4 
782G
78G6    [     BREAK-IN EXIT SECTION 
78^Q    XBRC  MFREEW   FILE,ADICT   
79FB          MFREE    FILE,FLOCNB  
79^2    XBR 
7=DL          LDEX  0  AWORK3(2)
7=Y=          BZE   0  XUP  
7?CW          MFREEW   AONBS,GLIST         [FREE GLIST IF SET UP
7?XG    XUP 
7#C6          UP
7#WQ
7*BB
7*W2    [     MAIN ERROR SECTION
7B*L    OREP                               [REPLY FROM OPENCREX IS NOT OK   
7BT=          MFREEW   FILE,ADICT   
7C#W          TESTREP2 DIRCLOSE,TAGN
7CSG          MFREE    FILE,FLOCNB  
7D#6    RE  
7DRQ          ACROSS   REPERR,2 
7F?B    TAGN
7FR2          ACROSS   USERONE,2
7G=L    NOJOB GEOERR   1,NOJOB  
7GQ=    [   
7H9W    [   
7HPG ...      MENDAREA 20,K99USERLIB
7JNQ    #END
^^^^ ...43032536000100000000