BMPRCHEK860

(George Source)

Macros used: BITDEFS, BXU, EMSCONWT, GRELOAD, HUNTMISB, JBC, JBS, MFREEW, MONOUT, MONOUTX, OUTPACK, OUTPACKX, SEG, SEGENTRY, SETNCORE, SWAPPR, TESTNAMX, UP, UPPLUS

BMPRCHEK860.txt
22FL          SEG      BMPRCHEK,860,EDWARD MOON,BMAP
22^=    [   
23DW
23YG ...[***********************************************************
24D6    [  THIS SEGMENT CHECKS A TABLE OF USERS 
24XQ    [  WHOSE PARTIAL RESTORE IS FORBIDDEN(NOPARTRES USED)   
25CB    [  OR WHICH MUST BE SWAPPED TO AN ALTERNATIVE USER  
25X2    [       (SWAPPR USED)   
26BL    [   
26W=          SEGENTRY K1BMPRCHEK,START 
27*W    [   
27TG    [   
28*6    [  TABLE OF USERS FORBIDDEN OR TO BE SWAPPED
28SQ    [  ENTRIES EITHER 4 WORDS OR 7 WORDS AS 
29#B    [  DEFINED BELOW :- 
29S2    [          WORD 0 - BIT 0=0  RESTORE FORBIDDEN  
2=?L    [                        =1  RESTORE OF PSEUDO USERSALSO FORBIDDEN  
2=R=    [                   BIT 1=0  NO SWAPPING ALLOWED
2?=W    [                        =1  SWAP TO SPECIFIED USER(WORDS 4-6) IF BIT 0=
2?QG    [                             ELSE SWAP TO PROPER OWNER(WORDS 1-3) IF BI
2#=6    [                   BITS 2-23 RECORD HEADER (4 OR 7)
2#PQ    [          WORDS 1-3         FORBIDDEN USER 
2*9B    [          WORDS 4-6         ALTERNATIVE USER FOR SWAPPING  
2*P2    [   
2B8L    #DEF  TYPEOFENT=0               [ STATEWORD AND RECORD HEADER   
2BN=    #DEF  USERFORBID=1              [ FORBIDDEN USER
2C7W    #DEF  USERSWAP=USERFORBID+3     [ USER FOR SWAPPING 
2CMG          BITDEFS  TYPEOFENT,0,SUDOFORBID,SWAPALLOWED   
2CX# ...[   
2D76          SEGENTRY AFORBIDN 
2DBY ...[   
2DLQ    #ALT  AFORBPTR=AFORBIDN 
2F6B    VFORBIDN
2FL2    #GAP 700
2G5L          SEGENTRY AFORBIDEND   
2GK=                   +0   
2H4W    [   
2HJG    PRNOTAL        +BMNOPARTRES 
2J46    SWAPPR         +BMPARTRES   
2JHQ ...STRING         24HINITIATED INSTEAD OF  
2K3B    [   
2KH2    OUTPACK 
2L2L          SBX   4  FX1  
2LG=          OUTPACKX 3,5,6
2L^W          ADX   4  FX1  
2MFG          EXIT  4  0
2M^6    [   
2NDQ    MONOUT  
2NYB          SBX   4  FX1  
2PD2          MONOUTX 3 
2PXL          ADX   4  FX1  
2QC=          EXIT  4  0
2QWW    [   
2RBG    [   
2RW6 ...[*******************************************************  SWAPUSER  
2S*Q ...[  SUBROUTINE TO SWAP THE USERNAMES OF A USER   
2STB ...[     BEING RESTORED FOR THE NOMINATED ALTERNATIVE  
2T*2    [   
2TSL    SWAPUSER
2W#=          SBX   7  FX1  
2WRW          NGS   2  AWORK1(2)         [ SET SWITCH -VE TO SHOW SWAP DONE 
2X?G          SBX   1  FX1  
2XR6          STO   1  AWORK2(2)         [ SAVE PTR. TO TABLE ENTRY 
2Y=Q          HUNTMISB 1,FI,FRESTUSER   
2YQB          SBX   3  1
2^=2          STO   3  AWORK3(2)         [ AND PTR. TO FRESTUSER ENTRY  
2^PL          LDX   1  FX1  
329=          SMO      AWORK2(2)
32NW          LDN   3  USERSWAP(1)       [ PTR. TO SWAPPED USER 
338G          LDN   5  3
33N6          LDN   6  JPDUSERNAME  
347Q          CALL  4  OUTPACK  
34MB ...      LDN   3  STRING(1)         [ 'INSTEAD OF ' STRING 
35LL          LDN   5  6
366=          LDN   6  JPDVARCHAR   
36KW          CALL  4  OUTPACK  
36MS ...      SETNCORE 4,3,FI,FUTILITY  
36PQ ...      LDX   0  ACES                [INIT LAST 3 SPACES  
36RN ...      STO   0  A1+3(3)  
36TL ...      ADN   3  A1   
36XJ ...      LDCT  0  #120                [COLON   
36^G ...      STO   0  0(3)                [1ST CHAR OF 16  
373D ...      BCHX  3  £
375G          HUNTMISB 1,FI,FRESTUSER   
37K6          SMO      AWORK3(2)
37S4 ...      LDN   2  FRUSE(1)            [ FORBIDDEN USER 
3832 ...      MVCH  2  12   
389Y ...      SBN   3  3                   [UNDO MVCH EFFECTS   
38DW ...      ANDX  3  BITS22LS 
38MS ...      LDN   5  4
38WQ ...      CALL  4  OUTPACK  
395N ...      MFREEW   FI,FUTILITY  
39#L ...      LDX   3  SWAPPR(1)
39HL          CALL  4  MONOUT            [ SEND SWAPPED MESSAGE 
3=3= ...      ADX   1  AWORK2(2)
3?2G          HUNTMISB 3,FI,FRESTUSER   
3?G6 ...      ADX   3  AWORK3(2)
3#FB          LDN   5  USERSWAP(1)  
3#^2          LDN   6  FRUSE(3) 
3*DL          MOVE  5  3                 [ SWAP USERNAMES   
3*Y= ...      NGN   0  1
3BCW          STO   0  FRINC(3) 
3BXG          STOZ     FRFIL(3)          [ SET INCR. NO. -VE AND FILE NO.   
3CC6          STOZ     FRSUP(3)          [ =0.SET SUP. USER 0   
3CWQ          ADX   7  FX1  
3DBB          EXIT  7  0
3DW2    [   
3F*L    [   
3FT= ...[*********************************************************  START   
3G#W    [  START OF MAIN SEGMENT TO CHECK USERNAMES 
3GSG    [   
3H#6    START   
3HRQ          STOZ     AWORK1(2)        [ SWITCH TO SEE IF ANY SWAPS DONE   
3J?B          HUNTMISB 3,FI,FRESTUSER   
3JR2 ...      LDX   7  A1(3)            [ PTR. TO END OF FRESTUSER  
3KQ=          STO   7  AWORK4(2)        [ SAVED FOR LATER CHECKS
3L9W    NXTFRUSE
3LFN ...      LDX   1  FX1  
3LPG          LDN   1  VFORBIDN(1)      [ PTR. TO START OF TABLE
3M96    NXTABENT
3MNQ          LDX   0  TYPEOFENT(1) 
3N8B          BZE   0  XENDOFTAB        [ J. IF END OF TAB  
3NN2          LDX   0  FRINC(3) 
3P7L          BZE   0  NXTPRUSER        [ IGNORE ANY DELETED ENTRIES
3PM=          SEGENTRY K50BMPRCHEK  
3Q6W          NULL  
3QLG          TESTNAMX 3,FRUSE(3),USERFORBID(1),NOTFORBIDN,4  [ J. IF NAMES NOT 
3R66          JBC      XFORBIDN,1,SWAPALLOWED  [ J. IF NO SWAPPING ALLOWED  
3R*Y ...      JBS   NOTFORBIDN,1,SUDOFORBID  [ NO SWAP IF ONLY PSEUDOS FORBIDDEN
3RKQ          CALL  7  SWAPUSER         [ ELSE SWAP USER
3S5B          BRN      NXTPRUSER        [ J. TO CHECK NEXT FRESTUSER ENTRY  
3SK2    NOTFORBIDN  
3T4L          LDEX  0  TYPEOFENT(1) 
3TJ=          ADS   0  1                [ UPDATE PTR. TO NEXT TABLE ENTRY   
3W3W          BRN      NXTABENT 
3WHG    XENDOFTAB   
3X36          TESTNAMX 3,FRUSE(3),FRSUP(3),PSEUDO,4  [ J. IF THIS USER PSEUDO   
3XGQ          BRN      NXTPRUSER
3Y2B    PSEUDO  
3Y=8 ...      LDX   1  FX1  
3YG2          LDN   1  VFORBIDN(1)      [ PTR. TO START OF TABLE AGAIN  
3Y^L    NEXTABUSE   
3^F=          LDX   0  TYPEOFENT(1) 
3^YW ...      BZE   0  NXTPRUSER        [J. IF END OF TABLE 
42DG          TESTNAMX 3,FRSUP(3),USERFORBID(1),NOFORBID,4  [ J. IF NAMES NOT SA
42Y6          JBC      NXTPRUSER,1,SUDOFORBID  [ J. IF PSEUDOS NOT FORBIDDEN
43CQ          JBC      XFORBIDN,1,SWAPALLOWED  [ J. IF SWAPPING NOT PERMITTED   
43XB ...      SBN   1  USERSWAP-USERFORBID  [ ADJUST PTR. SO THAT PROPER USER WI
44C2          CALL  7  SWAPUSER         [ BE SWAPPED FOR PSEUDO AND DO SWAP 
44FK ...      BRN      NXTPRUSER           [ TO CHECK NEXT FRESTUSER ENTRY  
44J8 ...NOFORBID
44LR ...      LDEX  0  TYPEOFENT(1) 
44PB ...      ADS   0  1                 [ UPDATE PTR. TO TABLE ENTRIES 
44R^ ...      BRN      NEXTABUSE
44WL    NXTPRUSER   
45B=          ADN   3  8                [ PTR. TO NEXT FRESTUSER ENTRY  
45L4 ...      HUNTMISB 1,FI,FRESTUSER   
45TW ...      LDX   0  3
465N ...      SBX   0  1
46*G          BXU   0  AWORK4(2),NXTFRUSE  [ J. IF NOT END OF FRESTUSER 
46T6          LDX   0  AWORK1(2)
47#Q          BZE   0  UP               [ UP IF NO SWAPS DONE   
47SB          UPPLUS   1                [ ELSE UP+1 
48#2    UP    UP
48RL    [   
49?= ...[***********************************************************  XFORBIDN  
49QW    [   THE RESTORE IS FORBIDDEN AND NO ALTERNATIVE IS ALLOWED  
4==G    [   THEREFORE  INFORM OPERATORS AND RELOAD  
4=Q6    [   
4?9Q          SEGENTRY K51BMPRCHEK  
4?PB    XFORBIDN
4#92          LDN   3  FRUSE(3)         [ FORBIDDEN USERNAME
4#NL          LDN   5  3
4*8=          LDN   6  JPDUSERNAME  
4*MW          CALL  4  OUTPACK  
4B7G          LDX   3  PRNOTAL(1)       [ OUTPUT 'FORBIDDEN' MESSAGE
4BM6          CALL  4  MONOUT   
4C6Q          EMSCONWT  
4CLB          GRELOAD                   [ AND RELOAD
4D62    #END
^^^^ ...611573620001
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1