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