DOXCODE867

(George Source)

Macros used: ALTLEN, ALTLENG, BACKSPACE, BRUSEN, CHNUMCON, CLOSETOP, COMERR, COOR3, ENDCOM, FJOCA, FREECORE, GEOERR, JBS, MBS, MHUNT, MHUNTW, MONOUT, OPENDIR, OUTNULL, OUTPARAM, PARAPASS, SEG, SEGENTRY, SETNCORE, SPARAPAS, STEPAGAIN, STEPREWRITE, TESTRPN2, TOPFCB2

DOXCODE867.txt
22FL ...      SEG      DOXCODE,,CENT(INSTALLATION HOOKS),,G400  
22^=    [   
23DW    [ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
23YG    [   
24D6    #   
24XQ          SEGENTRY K1DOXCODE,START  
25CB    #   
25X2    #     THIS CHAPTER IS FOR G3PLUS-IH MK2 
26BL    #   
26HS ...#     THIS CHAPTER IMPLEMENTS THE EXTRACODE COMMAND 
26P2 ...#   
26W=    #     STORED WORDS  
27*W          SEGENTRY G400HKD2 
27TG    UHOOK          12HHOOKS 
28*6    NLOC           1,0.2,0  
28SQ    T501           +501 
29#B    THIR           +13  
29S2    TA             #41  
2=?L    TZ             #73  
2=R=    T9             +10  
2?=W    TMINUS         #35  
2?QG    TBMISC         +BMISC   
2#=6    TNOHKMESS   
2#PQ                   32HHOOK SPECIFIED DOES NOT EXIST 
2*9B    TSP            #20  
2*P2    MASKCTXT       #60777777
2B8L    TON            4HON00   
2BN=    TOF            4HOF00   
2C7W    #   
2CMG    #    SUBROUTINE TO LOCATE THE HOOKS BLOCK   
2D76    #    ON EXIT :- RESULT IN X3
2DLQ    #               X0 OVERWRITTEN  
2F6B    #   
2FL2    THKBLK  
2G5L    #HAL IUSER+G400BLK,0
2GK=    #   
2H4W    #   
2HJG    SFNDHKBLK   
2J46          LDN   3  BMISC               [START ADDRESS   
2JHQ    SFNDHKBLK2  
2K3B          LDX   3  BPTR(3)             [NEXT BLK
2KH2          SMO      FX1  
2L2L          TXU   3  TBMISC   
2LG=          BCS      SFNDHKBLK1          [STILL OK
2L^W          GEOERR   1,DSKHKBLK          [BREAK-LOST HK BLK   
2MFG    SFNDHKBLK1  
2M^6          LDX   0  ATYPE(3) 
2NDQ          SMO      FX1  
2NYB          TXU   0  THKBLK   
2PD2          BCS      SFNDHKBLK2          [NOT HK BLK  
2PXL          LDX   0  A1(3)
2QC=          SBN   0  7
2QWW          BNZ   0  SFNDHKBLK2          [NOT HK BLK  
2RBG          EXIT  7  0
2RW6    #   
2S*Q    #     SUBROUTINE TO LOCATE ENTRY HOOK BLK   
2STB    #     ON ENTRY :- ADDRESS OF BLOCK IN X3
2T*2    #                 HOOK NAME IN ACOMMUNE1-3 OF CPAT  
2TSL    #                 LINK IN X7
2W#=    #     ON EXIT :- RESULT IN X4   
2WRW    #                  X1 =FX1  
2X?G    #                   X2 =FX2 
2XR6    #                   X0 ,X5 OVERWRITTEN  
2Y=Q    #   
2YQB    #      EXIT 1     IF HOOK ENTRY FOUND   
2^=2    #      EXIT 0     IF NOT FOUND  
2^PL    #   
329=    SFNDENTRY   
32NW          LDX   2  FX2  
338G          LDX   4  A1+2(3)             [COUNT OF HOOKS  
33N6          LDN   1  A1+3(3)  
347Q          BZE   4  SFNDENTRY2   
34MB          LDN   5  A1(3)
3572          ADX   5  ALOGLEN(3)          [END OF HOOK BLOCK   
35LL    SFNDENTRY3  
366=          TXL   5  1
36KW          BCS      SFNDENTRY9          [J IF END OF HOOK BLOCK  
375G          LDX   0  1(1) 
37K6          TXU   0  ACOMMUNE2(2) 
384Q          BCS      SFNDENTRY1          [J IF NOT MATCH  
38JB          LDX   0  2(1) 
3942          TXU   0  ACOMMUNE3(2) 
39HL          BCS      SFNDENTRY1          [J IF NOT MATCH  
3=3=          LDX   0  3(1) 
3=GW          TXU   0  ACOMMUNE4(2) 
3?2G          BCS      SFNDENTRY1          [J IF NOT MATCH  
3?G6          LDX   4  1                   [ADDRESS OF HOOK ENTRY   
3?^Q          ADN   7  1                   [LINK TO EXIT + 1
3#FB          BRN      SFNDENTRY2          [EXIT
3#^2    SFNDENTRY1  
3*DL          ADN   1  5
3*Y=          BCT   4  SFNDENTRY3          [LOOP BACK   
3BCW    SFNDENTRY2  
3BXG          LDX   1  FX1  
3CC6          EXIT  7  0
3CWQ    SFNDENTRY9  
3DBB          GEOERR   1,DSKHKCNT          [ INCORRECT COUNT OF HOOKS   
3DW2    #   
3F*L    #     SUBROUTINES TO OBTAIN COMMAND PARAMETERS : SPAR,PARA  
3FT=    #     LINK X7   
3G#W    #     EXIT    + 0    IF NULL
3GSG    #             + 1    IF NON-EXISTENT
3H#6    #             + 2    OTHERWWISE 
3HRQ    #   
3J?B    SPAR
3JR2          SBX   7  FX1  
3K=L          SPARAPAS  
3KQ=          BRN      PAR  
3L9W    PARA
3LPG          SBX   7  FX1  
3M96          PARAPASS  
3MNQ    PAR 
3N8B          ADX   7  FX1  
3NN2          MHUNT    3,CPB,CUNI   
3P7L          LDX   0  ANUM(3)  
3PM=          BZE   0  PAR0 
3Q6W          BNG   0  PAR1 
3QLG          EXIT  7  2
3R66    PAR1
3RKQ          EXIT  7  1
3S5B    PAR0
3SK2          EXIT  7  0
3T4L    #   
3TJ=    #     1 - CHECK THAT THIS USER IS ALLOWED TO
3W3W    #               USE THE EXTRACODE COMMAND   
3WHG    #   
3X36    P1SR
3XGQ          BRUSEN   P1C  
3Y2B          FJOCA    3,2  
3YG2          LDN   4  3                   [COUNT FOR 3WD NAME  
3Y^L    P1B 
3^F=          SMO      4
3^YW          LDX   0  UHOOK-1(1)          [WD OF REQUIRED NAME 
42DG          SMO      4
42Y6          TXU   0  JUSER-1(3)          [WD OF ACTUAL NAME   
43CQ          BCC      P1A  
43XB    P1C 
44C2          COMERR   ANOTKNOWN
44WL    P1A 
45B=          BCT   4  P1B  
45TW          EXIT  7  0
46*G    #   
46T6    # DECODE PARAMETERS :-  
47#Q    #   
47SB    # 2A      - COMMAND / MACRO NAME
48#2    #     CHECK LOCAL NAME FORMAT   
48RL    #           AND STORE IN ACOMMUNE2-4
49?=    #   
49QW      SEGENTRY K9DOXCODE
4==G    #   
4=Q6    #     ############################################################# 
4?9Q    #   
4?PB    #           K    K            1 
4#92    #           K   K            11 
4#NL    #           K  K              1 
4*8=    #           K K               1 
4*MW    #           KKK               1 
4B7G    #           K  K              1 
4BM6    #           K   K             1 
4C6Q    #           K    K            1 
4CLB    #           K     K           1 
4D62    #   
4DKL    #     ############################################################# 
4F5=    #   
4FJW    START   
4G4G          CALL  7  P1SR 
4GJ6          CALL  7  SPAR                [1ST PARAMETER   
4H3Q          BRN      PARMIS              [PARAMETER MISSING   
4HHB          BRN      PARMIS              [DITTO   
4J32          LDX   6  ANUM(3)  
4JGL          ANDN  6  #7777               [CHARACTER COUNT 
4K2=          TXL   6  THIR(1)             [TEST IF > 12CHS 
4KFW          BCC      PARFORM             [..IF SO FORMAT ERROR
4K^G          LDX   2  3
4LF6          LDCH  0  APARA(2)            [1ST CHAR
4LYQ          TXL   0  TZ(1)
4MDB          BCC      PARFORM             [ERROR IF > Z
4MY2          TXL   0  TA(1)
4NCL          BCS      PARFORM             [J IF < A
4NX=          BCHX  2  £                   [STEP PTR
4PBW          LDX   5  6
4PWG          SBN   5  1                   [COUNT OF REMAINING CHARS
4QB6          BZE   5  ST4  
4QTQ    ST2 
4R*B          LDCH  0  APARA(2)            [NEXT CHAR   
4RT2          TXL   0  T9(1)
4S#L          BCS      ST1                 [J IF NUMERIC
4SS=          TXU   0  TMINUS(1)
4T?W          BCC      ST1  
4TRG          TXL   0  TA(1)
4W?6          BCS      PARFORM             [ERROR IF < A
4WQQ          TXL   0  TZ(1)
4X=B          BCC      PARFORM             [OR > Z  
4XQ2    ST1 
4Y9L          BCHX  2  £
4YP=          BCT   5  ST2                 [LOOP BACK IF ANY CHARS LEFT 
4^8W    ST4 
4^NG          LDX   2  FX2  
5286          LDX   0  ACES 
52MQ          STO   0  ACOMMUNE1(2)        [SPACE FILL ACOM1-4  
537B          STO   0  ACOMMUNE2(2) 
53M2          STO   0  ACOMMUNE3(2) 
546L          STO   0  ACOMMUNE4(2) 
54L=          LDN   4  APARA(3) 
555W          LDN   5  ACOMMUNE2(2) 
55KG          SMO      6
5656          MVCH  4  0                   [SAVE NAME   
56JQ    #   
574B    #     2B - ABBREVIATED NAME 
57J2    #   
583L    #             CHECK 2 CHARS AND STORE IN ACOMMUNE1  
58H=          CALL  7  PARA                [CHECK 2ND PARAMETER 
592W          BRN      ST3                 [J IF NULL=MACRO 
59GG          BRN      PARMIS              [NO MORE PARAMS  
5=26          ANDN  0  #7777               [CHAR COUNT  
5=FQ          SBN   0  2
5=^B          BNZ   0  PARFORM             [FORMAT ERROR IF NOT 2   
5?F2          LDN   4  ACOMMUNE1(2) 
5?YL          LDN   3  APARA(3) 
5#D=          MVCH  3  2                   [SAVE ABBREV NAME
5#XW    #   
5*CG    #      2C - CONTEXT,INTO ACOMMUNE5  
5*X6    #   
5BBQ    ST3 
5BWB          CALL  7  PARA 
5CB2          BRN      PARMIS              [PARAMETER MISSING   
5CTL          BRN      PARMIS              [PARAMETER MISSING   
5D*=          CHNUMCON                     [COMVERT TO BINARY   
5DSW          TESTREPN OK,XEND             [ENDCOM IF ERROR 
5F#G          MHUNT    3,CPAR,GNUMCON   
5FS6          LDX   6  A1+1(3)  
5G?Q          ANDX  6  MASKCTXT(1)  
5GRB          STO   6  ACOMMUNE5(2) 
5H?2          FREECORE 3                   [FREE GNUMCON BLOCK  
5HQL    #   
5J==    #     2D - ON,OR OFF--INTO ACOMMUNE6
5JPW    #   
5K9G          CALL  7  PARA 
5KP6          BRN      XON                 [IF NOT PRESENT  
5L8Q          BRN      XON                 [ASSUME "ON" 
5LNB          LDX   0  APARA(3) 
5M82          ANDX  0  HALFTOP  
5MML          TXU   0  TON(1)   
5N7=          BCC      XON                 [J IF ON 
5NLW          TXU   0  TOF(1)              [TEST IF "OF"
5P6G          BCS      PARFORM             [IF NOT ERROR
5PL6          STOZ     ACOMMUNE6(2) 
5Q5Q          BRN      P3A  
5QKB    XON 
5R52          LDN   0  1
5RJL          STO   0  ACOMMUNE6(2) 
5S4=    #   
5SHW    #     3 - LOCATE AND LOCK HOOK BLOCK,ADDRESS TO X3  
5T3G    #   
5TH6    P3A 
5W2Q          CALL  7  SFNDHKBLK
5WGB          LDX   0  GSIGN
5X22          ANDX  0  A1+1(3)  
5XFL          BZE   0  P3B                 [J IF NOT LOCKED OUT 
5X^= ...      COOR3  #41
5YDW          BRN      P3A  
5YYG    P3B 
5^D6          LDX   0  GSIGN
5^XQ          ORS   0  A1+1(3)  
62CB    #   
62X2    #     4 - MAKE CHANGE TO HOOK LIST  
63BL    #   
63W=          LDX   0  ACOMMUNE6(2) 
64*W          BNZ   0  P4A                 [J IF "ON"   
64TG    #   
65*6    #     "OFF" CASE
65SQ    #   
66#B          CALL  7  SFNDENTRY           [ADDRESS TO X5   
66S2          BRN      P4B                 [NO SUCH HOOK
67?L          LDX   5  4
67R=          ADN   4  5                   ['FROM' ADDRESS  
68=W    #   
68QG    # CALCULATE NR OF HOOKS TO BE MOVED INTO
69=6    #   
69PQ          LDX   0  A1+2(3)             [TOTAL NR OF HOOKS   
6=9B          SLL   0  2                   [MULTIPLY BYN4   
6=P2          ADX   0  A1+2(3)             [+1,=5 TIMES 
6?8L          ADN   0  A1+3(3)             [END OF BLOCK ADDRESS
6?N=          SBX   0  4                   [THOSE BEFORE HOOK REQD DONT MOVE
6#7W    P4B4
6#MG          BZE   0  P4B1                [NONE TO MOVE
6*76    #   
6*LQ    # MOVE UP FOLLOWING ENTRIES 
6B6B    #   
6BL2          SMO      FX1  
6C5L          TXL   0  T501 
6CK=          BCS      P4B2                [J IF NEED ONLY ONE MOVE 
6D4W          SBN   0  500                 [REDUCE WORD COUNT   
6DJG          LDN   1  500  
6F46          BRN      P4B3 
6FHQ    P4B2
6G3B          LDX   1  0                   [MOVE ALL WORDS  
6GH2          LDN   0  0                   [SET COUNT ZERO  
6H2L    P4B3
6HG=          SMO      1
6H^W          MOVE  4  0                   [DO MOVE 
6JFG          ADX   4  1
6J^6          ADX   5  1
6KDQ          BRN      P4B4                [J FOR FURTHER MOVES 
6KYB          ADX   4  1
6LD2    #   
6LXL    #     SHORTEN BLOCK 
6MC=    #   
6MWW    P4B1
6NBG          LDX   5  ALOGLEN(3)   
6NW6          SBN   5  5
6P*Q          ALTLENG  3,5                 [DO SHORTENING   
6PTB          CALL  7  SFNDHKBLK
6Q*2          LDX   6  A1+2(3)  
6QSL          SBN   6  1
6R#=          STO   6  A1+2(3)             [REDUCE HOOK COUNT   
6RRW          BRN      P5                  [J IF 'ON'   
6S?G    P4B 
6SR6          SETNCORE 9,3,IUSER,G400BLK   [DOESNT EXIST
6T=Q          LDN   4  TNOHKMESS(1) 
6TQB          LDN   5  A1+1(3)  
6W=2          MOVE  4  8
6WPL          LDN   4  8
6X9=          STO   4  A1(3)
6XNW          LDN   4  32   
6Y8G          OUTPARAM 4,A1+1,IUSER,G400BLK 
6YN6          MONOUT   G400MESSAGE  
6^7Q          CALL  7  SFNDHKBLK
6^MB          BRN      P5   
7272    #   
72LL    #     'ON' CASE 
736=    #   
73KW    P4A 
745G          CALL  7  SFNDENTRY           [ADDRESS TO X4   
74K6          BRN      P4D  
754Q          LDX   5  4
75JB          BRN      P4C                 [TIDY AND EXIT   
7642    P4D 
76HL          LDX   6  ALOGLEN(3)          [INCREASE BLOCK SIZE 
773=          ADN   6  5
77GW          ALTLEN   3,6  
782G          CALL  7  SFNDHKBLK
78G6          LDX   6  A1+2(3)  
78^Q          ADN   6  1                   [STEP COUNT OF HOOKS 
79FB          STO   6  A1+2(3)             [AND STORE   
79^2          LDN   5  A1(3)
7=DL          ADX   5  ALOGLEN(3)   
7=Y=          SBN   5  5
7?CW    P4C 
7?XG          LDN   4  ACOMMUNE1(2) 
7#C6          MOVE  4  5                   [INSERT HOOK 
7#WQ    #   
7*BB    #     5 - UNLOCK HOOK BLOCK 
7*W2    #   
7B*L    P5  
7BT=          NGN   0  1
7C#W          ERX   0  GSIGN
7CSG          ANDS  0  A1+1(3)             [UNLOCK  
7D#6          LDX   0  ACOMMUNE6(2) 
7DRQ          BZE   0  XEND                [J IF NOT 'ON'   
7F?B    #   
7FR2    #     NOW MARK DIRECTORY AS 'ALWAYSDUMP' AND 'DONT OFFLINE' 
7G=L    #   
7GQ=          SETNCORE 10,2,FILE,FABSNB 
7H9W          MHUNT    2,FILE,FABSNB
7HPG          LDN   0  10   
7J96          STO   0  A1(2)
7JNQ          ADN   1  UHOOK
7K8B          ADN   2  A1+1 
7KN2          MVCH  1  12                  [ USERNAME   
7L7L          SMO      FX2  
7LM=          LDN   1  ACOMMUNE2
7M6W          MVCH  1  12                  [ FILENAME   
7MLG          SMO      FX1  
7N66          LDN   1  NLOC 
7NKQ          MVCH  1  12   
7P5B          OPENDIR  P5,GENERAL,QUERY    [ TRY TO OPEN HOOK FILE  
7PK2          TESTRPN2 OK,XEND             [ DOESN'T EXIST  
7Q4L          TOPFCB2  1
7QJ=                                       [ENSURE THAT THE HOOKS DIRECTORY 
7R3W          JBS      SETALREADY,1,BFALLINCS   
7RHG                                       [IS ALWAYS SCANNED BY DUMPER 
7S36          MBS      1,BFALLINCS,BFDIRUPDATE  
7SGQ    SETALREADY  
7T2B          MHUNTW   1,FILE,ENT   
7TG2          LDEX  6  ECOPS(1) 
7T^L          FREECORE 1
7WF=          BZE   6  WOFF 
7WYW          BACKSPACE 
7XDG    WOFF
7XY6          STEPAGAIN 
7YCQ          MBS      3,BNONLINE,BNALLINCS 
7YXB          STEPREWRITE                  [REWRITE DIRECTORY ENTRY 
7^C2          CLOSETOP  
7^WL    #   
82B=    #     6 - EXIT COMMAND  
82TW    #   
83*G    XEND
83T6          ENDCOM
84#Q    #   
84SB    #     VARIOUS COMMAND ERRORS
85#2    #   
85RL    PARMIS  
86?=          OUTNULL   
86QW          COMERR   JPARMIS  
87=G    PARFORM 
87Q6          COMERR   APFERR   
889Q    #END
^^^^ ...724010070002