{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: COMHOOK867)}}
====== COMHOOK867 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:BRUSEN|BRUSEN]], [[george:macro:CLOSE|CLOSE]], [[george:macro:COMBRKIN|COMBRKIN]], [[george:macro:FJOCA|FJOCA]], [[george:macro:FREECORE|FREECORE]], [[george:macro:MFREE|MFREE]], [[george:macro:MHUNT|MHUNT]], [[george:macro:OPEN|OPEN]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETHOOK|SETHOOK]], [[george:macro:SETHSTAR|SETHSTAR]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SPRIVJUMP|SPRIVJUMP]], [[george:macro:TESTHOOK|TESTHOOK]], [[george:macro:TESTREP|TESTREP]], [[george:macro:USEROPEN|USEROPEN]]
22FL ... SEG COMHOOK,,CENT(INSTALLATION HOOKS),,G400
22^= [
23DW [ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
23YG [
24D6 #
24XQ # THIS SEGMENT DEALS WITH ENTERING A COMMAND HOOK
25CB # IF ONE HAS BEEN SPECIFIED.
25X2 #
26BL # THIS CHAPTER IS FOR G3PLUS-IH MK2
26W= #
27*W SEGENTRY K1COMHOOK,START
27TG #
28*6 # PRESETS
28SQ #
29#B SEGENTRY G400HKD1
29S2 USERN 12HHOOKS [HOOKS USER NAME
2=?L NMDTLS
2=R= +1 [DETAILS FOR HOOK BODY
2?=W #20000000
2?QG +0
2#=6 TWO +2 [FOR COUNTING 0-3
2#PQ THREE +3
2*9B MASKETM #67777777
2*P2 MASKCONT #77777
2B8L TBLK
2BN= #HAL IUSER+G400BLK,0
2C7W #
2CMG # SUBROUTINE
2D76 # LOCATES HOOK BLOCK
2DLQ # LINK X6,RESULT X3,X0 OVERWRITTEN
2F6B #
2FL2 PHKB
2G5L LDN 3 BMISC [START OF MISC CHAIN
2GK= PHKB1
2H4W LDX 3 BPTR(3) [SCAN BACKWARDS
2HJG LDX 0 ATYPE(3) [TYPE
2J46 ANDX 0 HALFTOP [MASK TOP 12 BITS
2JHQ TXU 0 TBLK(1)
2K3B BCS PHKB1 [IF NOT,TRY NEXT
2KH2 LDX 0 A1(3)
2L2L SBN 0 7
2LG= BNZ 0 PHKB1 [IF NOT,TRY NEXT
2L^W EXIT 6 0
2MFG #
2M^6 # #############################################################
2NDQ #
2NYB # K K 1
2PD2 # K K 11
2PXL # K K 1
2QC= # K K 1
2QWW # KKK 1
2RBG # K K 1
2RW6 # K K 1
2S*Q # K K 1
2STB # K K 1
2T*2 #
2TSL # #############################################################
2W#= #
2WRW START
2X?G TESTHOOK NOHK [IF WITHIN HOOK,CONTINUE
2XR6 CALL 6 PHKB [LOCATE HOOKS BLK
2Y=Q LDX 7 A1+2(3) [COUNT OF HOOKS
2YQB ADN 3 A1-2 [START OF TABLE - 5
2^=2 LDN 6 0 [MARK 'NOT ABBREVIATION'
2^PL LDX 4 AWORK1(2) [NO OF CHARS IN VB
329= TXL 4 THREE(1) [MORE THAN TWO ?
32NW BCC P1 [IF SO,JUMP
338G LDN 6 1 [ELSE MARK 'TRY ABBREVIATION'
33N6 P1
347Q BZE 7 NOHK
34MB NXT
3572 ADN 3 5
35LL BZE 6 P2 [J IF NOT ABBREVIATION
366= LDX 0 AWORK2(2) [LOAN 1ST TWO CHARS
36KW ERX 0 0(3) [COMPARE WITH ABBREV FORM
375G BZE 0 PHOUND [J IF FOUND
37K6 P2
384Q LDN 4 0 [PREPARE FOR FULL COMPARISON
38JB P3
3942 SMO 4
39HL LDX 0 1(3) [LOAD NEXT WD FROM TABLE
3=3= SMO 4
3=GW TXU 0 AWORK2(2) [COMPARE AGAINST VERB
3?2G BCC P4
3?G6 BCT 7 NXT
3?^Q BRN NOHK
3#FB P4
3#^2 TXU 4 TWO(1) [TEST IF ANY MORE WDS OF VERB
3*DL BCC PHOUND [J IF NOT,FOUND!
3*Y= ADN 4 1 [ELSE UPDATE COUNT
3BCW BRN P3 [AND COMPARE NEXT WORD
3BXG #
3CC6 # THIS SECTION OF CODE ATTEMPTS TO OPEN THE HOOK
3CWQ # JUST FOUND
3DBB #
3DW2 PHOUND
3F*L LDX 4 4(3)
3FT= LDX 6 CONTEXT(2)
3G#W ANDX 6 MASKCONT(1)
3GSG ANDX 6 4
3H#6 BNZ 6 NOHK [WRONG CONTEXT
3HRQ LDX 5 1(3)
3J?B LDX 6 2(3)
3JR2 LDX 7 3(3)
3K=L SETNCORE 10,3,FILE,FABSNB [SET UP ABSOLUTE NAME BLOCK
3KQ= STO 5 A1+4(3)
3L9W STO 6 A1+5(3)
3LPG STO 7 A1+6(3)
3M96 LDN 0 10
3MNQ STO 0 A1(3) [HEADER
3N8B LDN 5 USERN(1)
3NN2 LDN 6 A1+1(3)
3P7L MOVE 5 3 [USER NAME
3PM= LDN 5 NMDTLS(1)
3Q6W LDN 6 A1+7(3)
3QLG MOVE 5 3 [DETAILS
3R66 USEROPEN PBREAK,EXECUTE,UNTRAP,LEAVE,NOERREP [OPEN HOOK
3RKQ TESTREP OK,OPEN,NOFILE,NHK1
3S5B BRN NHK1 [FAIL CASE
3SK2 #
3T4L # HAVING OPENED THE HOOK IT IS CHECKED FOR PERIPHERAL
3TJ= # TYPE, AND IF OK,ENTERED
3W3W #
3WHG OPEN [CLEAR UP AFTER OPEN
3X36 MFREE FILE,FABSNB
3XGQ MHUNT 3,FILE,ENT
3Y2B LDX 7 ETM(3)
3YG2 BZE 7 PHAIL1 [WRONG PERIPHERAL TYPE
3Y^L SLL 67 9 [TYPE IN X6
3^F= SRL 7 9 [MODE IN X7
3^YW ANDN 6 #377 [MASK FOR BASIC PERIPHERAL FILE
42DG BNZ 6 PHAIL1 [ERROR IF NOT
42Y6 LDX 0 MASKETM(1)
43CQ ANDS 0 EXT+9(2)
43XB ERN 7 #12
44C2 BNZ 7 OUT [J IF SHIFT FILE
44WL LDCT 0 #400
45B= ORS 0 EXT+9(2) [DENOTE GRAPHIC FILE
45TW OUT
46*G FREECORE 3
46T6 STOZ EXT+3(2)
47#Q BNG 4 OUT1
47SB BRUSEN OUT2
48#2 SLL 4 1
48RL BPZ 4 OUT2 [J IF HOOK-STARTING NOT REQUIRED
49?= FJOCA 2
49QW SPRIVJUMP JSSTART,2,OUT2 [J IF ALREADY SYSTEM STARTED
4==G SETHSTAR [SET HOOK-STARTED BIT
4=Q6 OUT2
4?9Q LDX 2 FX2
4?PB SETHOOK 2
4#92 OUT1
4#NL ACROSS ALASB,2 [ENTER HOOK
4*8= #
4*MW # IF NO HOOK IS FOUND,CONTINUE WITH VERBCLAS
4B7G # IN STANDARD WAY.
4BM6 #
4C6Q NHK1
4CLB MFREE FILE,FABSNB
4D62 NOHK
4DKL LDCH 4 AWORK2(2) [1ST CHAR
4F5= SBN 4 #56
4FJW BPZ 4 NOH1 [J IF N-Z INCLUSIVE
4G4G ACROSS VERBCLAS,1
4GJ6 NOH1
4H3Q ACROSS VCLASTWO,1
4HHB #
4J32 # FAIL CASE
4JGL #
4K2= PHAIL1
4KFW CLOSE [CLOSE HOOK
4K^G MFREE FILE,ENT
4LF6 PHAIL
4LYQ BRN NOHK
4MDB #
4MY2 # BREAKIN CASE
4NCL #
4NX= PBREAK
4PBW COMBRKIN
4PWG # HOOK TABLE
4QB6 #END
^^^^ ...003137010001