WHENEVER867

(George Source)

Macros used: ALTLEN, BXE, CHAIN, CHARMOVE, COMERRX, ENDCOM, FINDCORE, GETCORE, MARKAXES, MENDAREA, MHUNT, MHUNTW, NAMEX, PARAPASS, SEG, SEGENTRY, SIX, TAB

WHENEVER867.txt
228Y ...      SEG WHENEVER,,CENT(COMMAND PROCESSOR),,G286   
22CW ...[   
22LS ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
22TQ ...[     THIS EXCLUDES CODE UNDER #SKI G286
234N ...[   
23?L ...#OPT G286 = 0   
23GJ ...#SKI G286&1 
23PG ...# WITH UGUG EDIT M286 (MULTI-COMMAND LINES) 
23YG    [ ENTRY POINT.  THIS LOCATION MUST REMAIN FIXED 
24D6          SEGENTRY K1WHENEVER,QENTRY1   
24XQ    [   
25CB    [   
25X2    [     THIS SEGMENT CONTAINS THE CODE NECESSARY TO IMPLEMENT THE 
26BL    [     WHENEVER COMMAND.THE COMMAND PARAMETER OF THE WHENEVER COMMAND
26W=    [     IS STORED IN A COMDAT/CWHEN BLOCK WHICH IS CHAINED BEHIND THE 
27*W    [     CURRENT LINE BUFFER.THIS CONSTITUTES A WHENEVER LEVEL IF A
27TG    [     WHENEVER LEVEL EXISTS ALREADY IT IS REPLACED BY NEW ONE   
28*6    #   
28SQ    QENTRY1 
29#B          MHUNTW   2,CPB,CALAS         [CURRENT /CALAS BLOCK
29S2          LDX   4  CPBFSD(2)           [LOAD MACRO INDICATOR
2=?L          BNG   4  WRONGLEV            [JUMP IF NOT MACRO   
2=R=          PARAPASS                     [GET THE 1ST PARAMETER   
2?=W          MHUNT    2,CPB,CUNI          [FIND PARAMETER BLOCK
2?QG          LDX   4  ANUM(2)  
2#=6          BNG   4  NOTEXIST            [JUMP IF PARAMETER NON EXISTENT  
2#PQ          BZE   4  NOTEXIST            [JUMP IF PARAMETER NULL  
2*9B          ANDN  4  #7777               [GET LENGTH OF PARAMETER 
2*P2          ADN   2  APARA               [GET POINTER TO THE PARAMETER
2B8L          LDCH  6  0(2)                [LOAD 1ST CHAR   
2BDD          BXE   6  SJ(1),XJTEX     [J IF J  
2BN=          TXU   6  SF(1)
2C7W          BCS      NFIN                [J IF STRING DOES NOT START WITH 'F' 
2CMG          LDN   6  2
2D76          TXU   4  SIX(1)   
2DLQ          BCC      NFID 
2F6B          LDN   6  3
2FL2    NFID
2G5L          LDN   3  TABLEF(1)           [SET PTR TO TABLE
2GK=          BRN      SFIN 
2GNB    XJTEX   
2GRG          LDN   3  TABLEJ(1)
2GWL          LDN   6  4
2G^Q          BRN      SFIN 
2H4W    NFIN
2HJG          SBN   6  #42  
2J46          BNG   6  NOLUCK   
2JHQ          TXL   6  TWO(1)   
2K3B          BCC      NOLUCK              [J IF 1ST CHAR NOT B OR C
2KH2          SMO      6
2L2L          LDX   3  TAB(1)              [GET ADDRESS OF REQUIRED TABLE   
2LG=          ADX   3  1                   [CONVERT TO ABSOLUTE ADDRESS 
2L^W    SFIN
2MFG          SBN   4  1                   [REDUCE COUNT BY 1   
2M^6          BZE   4  NOLUCK              [J IF NO MORE CHARS IN /CUNI 
2NDQ          BCHX  2  £                   [UPDATE /CUNI POINTER
2NYB          LDX   7  2                   [DUPLICATE POINTER   
2PD2          BRN      X2   
2PXL    UPDATE2 
2QC=          LDX   2  7                   [RELOAD POINTER TO PARAMETER 
2QWW    UPDATE1 
2RBG          SLC   3  2                   [FIND THE START  
2RW6          ADX   3  0                   [OF THE NEXT 
2S*Q          SRC   3  2                   [CHARACTER STRING
2STB    X2    LDCH  0  0(3)                [LOAD LENGTH OF STRING IN TABLE  
2T*2          BZE   0  NOLUCK              [J IF END OF TABLE REACHED   
2TSL          BCHX  3  £                   [UPDATE TABLE POINTER
2W#=          TXU   4  0                   [J IF PARAMETER IS NOT THE SAME  
2WRW          BCS      UPDATE1             [LENGTH AS STRING IN TABLE   
2X?G    X1    LDCH  5  0(2)                [GET NEXT CHAR OF PARAM. 
2XR6          LDCH  1  0(3)                [GET NEXT CHAR OF STRING 
2Y=Q          TXU   5  1
2YQB          BCS      UPDATE2             [J IF CHARS. DO NOT MATCH
2^=2          BCHX  2  £                   [UPDATE BOTH 
2^PL          BCHX  3  £                   [POINTERS
329=          BCT   0  X1                  [J IF MORE TO COMPARE
32NW          LDX   1  FX1                 [RESET X1
338G          TXU   6  THREE(1) 
33N6          BCS      X3                  [J IF NOT W/FINISHED 
347Q          SMO      FX2  
34MB          LDX   2  CONTEXT  
3572          BPZ   2  NOTSYS              [J IF NOT SYSTEM ISSUED JOB  
35LL    X3  
366=          MHUNTW   2,CLB
36KW          LDX   7  ANUMCHA(2)          [LOAD THE LENGTH OF THE WHENEVER 
375G          LDX   3  2                   [DUPLICATE POINTER TO CLB
37K6          ADN   2  CLBFIR              [POINTER TO THE WHENEVER 
384Q    PV    LDCH  5  0(2)                [LOAD NEXT CHARACTER 
38JB          BCHX  2  £                   [UPDATE POINTER  
3942          BCT   7  PV1                 [J IF MORE CHARACTERS
39HL          BRN      PV2  
3=3=    PV1   TXU   5  PCOMMA(1)           [JUMP IF CHARACTER   
3=GW          BCS      PV                  [IS NOT COMMA
3?2G    PV2   LDX   5  7                   [LOAD NO OF CHARACTERS TO BE MOVED   
3?G6          ADN   5  3                   [CONVERT TO SIZE NEEDED FOR  
3?^Q          SRL   5  2                   [COMDAT/CWHEN BLOCK  
3#FB          ADN   5  CPDATA-A1           [NO. WORDS REQUIRED FOR REC HDR. 
3#^2          SBX   2  3                   [RELATIVE POINTER TO CHARACTERS  
3*DL          STO   2  4                   [STORE RELATIVE PTR IN X4
3*Y=          LDN   2  JWHEN               [SET COUNT OF NO. TYPES OF WHENEVER  
3BCW    WLOOP LDX   3  FPTR(3)             [PTR TO 1ST/NEXT BLOCK AFTER CLB 
3BXG          LDX   0  ATYPE(3) 
3CC6          SRL   0  12   
3CWQ          TXU   0  XCALAS(1)
3DBB          BCC      XGCOR
3DW2          SMO      6
3F*L          TXU   0  TYPE(1)  
3FT=          BCC      WCHANG              [J IF CORRECT TYPE OF COMDAT/- BLOCK 
3G#W          BCT   2  WLOOP               [J IF STILL MORE BLOCKS TO CHECK 
3GSG    XGCOR GETCORE  5,1  
3H#6          FINDCORE 3
3HRQ          SMO      6
3J?B          LDX   0  TYPE(1)             [GET TYPE OF BLOCK TO BE SET UP  
3JR2          SLL   0  12   
3K=L          NAMEX    3                   [NAME THE BLOCK  
3KQ=    WCHAIN  
3L9W          MHUNTW   2,CLB
3L?4 ...#SKI G286&1 
3L#= ...(   
3L*D ...      LDX   5  2                   [ HOLD CLB IN X5 
3LBL ...      LDX   2  FPTR(2)  
3LCS ...      LDX   0  ATYPE(2) 
3LF2 ...      SRL   0  12   
3LG8 ...      SBN   0  IUSER+HULL   
3LHB ...      BZE   0  XCCS                [ IF CLB POINTS TO IUSER THEN
3LJJ ...                                   [ CHAIN COMDAT AFTER IUSER   
3LKQ ...      LDX   2  5                   [ ELSE CHAIN AFTER CLB   
3LLY ...XCCS
3LN6 ...)   
3LPG          CHAIN    3,2                 [CHAIN AFTER LINE BUFFER 
3LTC ...#SKI G286&1 
3L^# ...      LDX   2  5                   [ RELOCATE CLB   
3M59 ...#SKI G286&1$1   
3M96          LDX   2  BPTR(3)             [RELOCATE LINE BUFFER
3MNQ    X4    STO   7  A1(3)               [STORE CHARACTER COUNT IN COMDAT 
3N8B          BZE   7  PV3                 [JUMP IF NO CHARS TO MOVE
3NN2          ADX   2  4                   [POINTER TO CHAR STRING  
3P7L          ADN   3  CPDATA              [PTR. TO START OF AREA   
3PM=          CHARMOVE 2,7                 [MOVE CHARACTER STRING FROM LINE 
3Q6W                                       [BUFFER TO COMDAT/CWHEN  
3QLG    PV3   MARKAXES                     [MARK ALL PARAMETERS ACCESSED
3R66          SBN   6  2
3RKQ          BNZ   6  XFINISHED
3S5B          LDN   0  #1000
3SK2          SMO      FX2  
3T4L          ORS   0  EXT+11   
3TJ=          BRN      XENDCOM  
3W3W    XFINISHED   
3WB?          BCT   6  XENDCOM            [J IF NOT X6=1
3WNN
3X36          LDCT  0  #40  
3XGQ          ANDX  0  FINISH   
3Y2B          BZE   0  XENDCOM  
3YG2          LDCT  0  #400 
3Y^L          ADN   0  1                   [ MARK 'SEARCH FOR WE FINISH BLOCK'  
3^F=          STO   0  JOBEVENTS(2) 
3^YW    XENDCOM 
42DG          ENDCOM                       [TERMINATE COMMAND   
42Y6    WCHANG  
43CQ          LDN   6  JWHEN+1             [SET UP COUNT FOR
43XB          SBX   6  2                   [SET UP COUNT FOR REHUNTING THIS BLOC
44C2          ALTLEN   3,5                 [ALTER WHENEVER BLK TO NEW SIZE  
44WL          MHUNTW   2,CLB               [RE-HUNT CLB 
45B=          LDX   3  2
45TW    WLOP1 LDX   3  FPTR(3)             [RELOCATE POINTER TO 
46*G          BCT   6  WLOP1               [BLO 
46T6          BRN      X4   
47#Q    TAB   +TABLEB   
47SB          +TABLEC   
48#2    TABLEB      8H6REAKIN0  
48RL    TABLEC      19H5OMERR;OMMANDERROR0  
49?=    TABLEF      15H5INISH7INISHED0  
49H4    TABLEJ         20H3TEX>OBTIMEEXCEEDED0  
49QW    TYPE        +COMDAT+CBRK
4==G                +COMDAT+CWHEN   
4=Q6                +COMDAT+CFIN
4?9Q                +COMDAT+CFIND   
4?FJ                   +COMDAT+CJTEX
4?PB    XCALAS         +CPB+CALAS   
4#92    TWO         +2  
4#NL    PCOMMA         #34  
4*8=    SF             #46  
4*D4    SJ             #52  
4*MW    SIX            +6   
4B7G    THREE +3
4BM6    #   
4C6Q    [     COMMAND ERROR REPORTS 
4CLB    #   
4D62    NOTEXIST
4DKL          LDX   6  Y1(1)               [CONDITION PARAM. MISSING
4F5=          LDX   7  Y2(1)
4FJW          BRN      RERR 
4G4G    NOLUCK  
4GJ6          LDX   1  FX1                 [PARAMETER FORMAT ERROR  
4H3Q          LDX   6  Y3(1)
4HHB          BRN      RER1 
4J32    NOTSYS  
4JGL          LDX   6  Y5(1)               [ONLY ALLOWED FOR SYSTEM JOB 
4K2=          BRN      RER1 
4KFW    WRONGLEV
4K^G          LDX   6  Y4(1)               [ONLY ALLOWED IN A MACRO 
4LF6    RER1  NGN   7  1                   [NO SUBMESSAGE   
4LYQ    RERR  COMERRX  6,7                 [REPORT THE ERROR
4MDB    #   
4MY2    Y1    +JPARMIS  
4NCL    Y2    +JCOND
4NX=    Y3    +APFERR   
4PBW    Y4    +JMDF 
4PWG    Y5    +JNOTSYS  
4QB6          MENDAREA 50,K99WHENEVER   
4QTQ    #END
^^^^ ...74136456000100000000