{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: WHENEVER867)}}
====== WHENEVER867 ======
(George Source)
**Macros used:** [[george:macro:ALTLEN|ALTLEN]], [[george:macro:BXE|BXE]], [[george:macro:CHAIN|CHAIN]], [[george:macro:CHARMOVE|CHARMOVE]], [[george:macro:COMERRX|COMERRX]], [[george:macro:ENDCOM|ENDCOM]], [[george:macro:FINDCORE|FINDCORE]], [[george:macro:GETCORE|GETCORE]], [[george:macro:MARKAXES|MARKAXES]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:NAMEX|NAMEX]], [[george:macro:PARAPASS|PARAPASS]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SIX|SIX]], [[george:macro:TAB|TAB]]
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