15 228Y ... SEG IFNUMS,,CENT(COMMAND PROCESSOR),,G250 4 22CW ...[ 15 22LS ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 13 22TQ ...[ THIS EXCLUDES CODE UNDER #SKI G250 4 234N ...[ 7 23?L ...#OPT G250 = 0 6 23GJ ...#SKI G250&1 16 23PG ...# WITH UGUG EDIT M250 (ADDITIONAL NUMBER FORMATS) 21 23YG # THIS SEGMENT IS ENTERED FROM IFEXPAN TO DEAL WITH THE SIMPLE CONDI 12 24D6 # :- ON OFF ZERO MEMBER 21 24XQ # XCHARS CONTAINS COUNT OF CHARS REMAINING IN LINE BUFFER 16 25CB # ON EXIT :XCHPTR & XCHARS MAY HAVE BEEN UPDATED 21 25X2 # X7 CONTAINS RESULT- 0-TRUW,1-FALSE,B0=1-ERROR,B1=1-ERROR 8 26BL # ENTRY POINTS 8 26W= [ THE ENTRY POINTS 18 27*W [ THESE LOCATIONS MUST BE KEPT FIXED WITHIN THE SEGMENT 14 27TG SEGENTRY K1IFNUMS,XZERO [IF ZERO 15 28*6 SEGENTRY K2IFNUMS,XON [IF ON ETC. 10 28SQ SEGENTRY K3IFNUMS,XOFF 11 29#B SEGENTRY K4IFNUMS,XMEMBER 10 29S2 SEGENTRY K5IFNUMS,XPOS 10 2=?L SEGENTRY K7IFNUMS,XNEG 15 2=R= # WORKING SPACE IN COM PROC ACTIVITY BLOCK 10 2?=W #DEF XSTATE=EXT+3 9 2?QG #DEF XLBP=EXT 10 2#=6 #DEF XCHARS=EXT+1 10 2#PQ #DEF XCHPTR=EXT+2 21 2*9B # THIS SECTION SETS THE RESULT OF THE CONDITION IN X7 & RETURNS TO I 7 2*P2 XTRUE LDN 7 0 9 2B8L XRET ACROSS IFEXPAN,3 5 2BN= XFALSE 7 2C7W LDN 7 1 8 2CMG BRN XRET 5 2D76 XERROR 8 2DLQ LDCT 7 #400 8 2F6B BRN XRET 5 2FL2 XERROR1 8 2G5L LDCT 7 #600 8 2GK= BRN XRET 5 2H4W XBREAK 8 2HJG LDCT 7 #700 8 2J46 BRN XRET 21 2JHQ # THIS SECTION MOVES A NUMBER LIST INTO A CPB,CUNI BLOCK & APPLIES 21 2K3B # CHNUMCON TO IT.IT REMOVE SPACES & STRIPS BRACKETS OFF THE LIST. 19 2KH2 # [THIS IS FIDDLED BY INSERTING EXTRA ')'&'('ROUND COMMAS] 21 2L2L # IT CHECKS THE REPLY FROM CHNUMCON & SETS PTR TO GNUMCON BLOCK IN X 8 2LG= QMIN #40 8 2L_W QMAX #72 8 2MFG QSP #20 8 2M_6 QBRA #30 8 2NDQ QKET #31 8 2NYB QCOMMA #34 8 2P88 QK #53 8 2PD2 Q1 +1 10 2PXL QINSERT 4H),( 8 2QC= #DEF XUNI=ACOMMUNE1 9 2QWW #DEF XARITHL=ACOMMUNE2 5 2RBG XARITH 8 2RW6 SBX 7 FX1 10 2S*Q SETNCORE 17,2,CPB,CUNI 8 2STB SMO FX2 8 2T*2 STO 2 XUNI 15 2TSL LDN 0 1 [NO OF PARAM 10 2W#= STO 0 JPARNUM(2) 18 2WRW LDN 5 ANUM+1 [INITIALISE 'CHAR DUMPER' 20 2X?G LDN 6 0 [ BRACKET DEPTH COUNT 8 2XR6 BCT 4 ZX7A 8 2Y=Q BRN XERR 17 2YQB ZX3 BZE 6 ZXIT [FINISH IF DEPTH=0 17 2_=2 BCT 5 ZX3A [ROOM IN CPB/CUNI? 8 2_PL BRN ZX7 17 329= ZX4 BCT 5 ZX4A [ROOM IN CPB/CUNI? 8 32NW BRN ZX7 16 338G ZX3A SBN 6 2 [INCREASE DEPTH 17 33N6 ZX4A ADN 6 1 [DECREASE DEPTH 8 347Q BRN ZX6 19 34MB ZX5 BCT 5 ZX6 [JUMP IF SPACE IN CPB,CUNI 7 3572 ZX7 LDX 5 2 8 35LL LDX 2 FX2 10 366= LDX 7 XARITHL(2) 9 36KW LDX 1 XUNI(2) 7 375G SBX 5 1 10 37K6 LDX 0 ALOGLEN(1) 7 384Q ADN 0 8 9 38JB SBX 3 XLBP(2) 15 3942 STO 1 XCHPTR(2) [PTR TO BLOCK 9 39HL STO 0 XCHARS(2) 11 3=3= #SKIP K6IFEXPAN>999-999 10 3=GW TRACE 0,IFARITH2 14 3?2G ALTLEN XCHPTR(2),XCHARS(2),CPB,CUNI 10 3?G6 HUNT 2,CPB,CUNI 8 3?M# SMO FX2 17 3?SG STO 2 XUNI [RESET ADDR. OF CPB/CUNI 10 3?_Q ZX7A LDX 0 ALOGLEN(2) 8 3#FB SMO FX2 9 3#_2 STO 7 XARITHL 7 3*DL SLL 0 2 7 3*Y= ADX 2 5 7 3BCW SLC 5 2 9 3BXG SBN 5 4*A1+1 7 3CC6 SBX 0 5 7 3CWQ LDX 5 0 15 3DBB CALL 7 XFLB [RESET GETTER 8 3DW2 BRN ZX1B 17 3F*L ZX6 DCH 0 0(2) [DUMP CHAR IN CUNI 15 3FT= BCHX 2 / [STEP PTRS 7 3G#W ZX2 BCHX 3 / 18 3GSG ZX1 BCT 4 ZX1B [CHECK FOR END OF LINE 8 3H#6 BRN XERR 8 3HRQ ZX1B LDCH 0 0(3) 9 3J?B TXU 0 QSP(1) 15 3JR2 BCC ZX2 [IGNORE SPACE 9 3K=L TXU 0 QBRA(1) 15 3KQ= BCC ZX4 [JUMP IF BRA 9 3L9W TXU 0 QKET(1) 15 3LPG BCC ZX3 [JUMP IF KET 16 3M96 TXL 0 QMIN(1) [JUMP IF NUMBER 8 3MNQ BCS ZX1A 8 3MTY TXU 0 QK(1) 15 3N36 BCC ZX1A [JUMP IF ^K^ 9 3N8B TXL 0 QMAX(1) 18 3ND8 BCS ZXITA [JUMP IF OTHER LETTER 2 3NN2 4 3P7L ZX1A 17 3PM= TXU 0 QCOMMA(1) [JUMP UNLESS COMMA 8 3Q6W BCS ZX5 11 3QLG #SKIP K6IFEXPAN>999-999 10 3R66 TRACE 6,IFARITH3 17 3RKQ BZE 6 ZXIT [FINISH IF DEPTH=0 17 3S5B TXU 6 Q1(1) [JUMP UNLESS DEPTH=1 8 3SK2 BCS ZX5 18 3T4L SBN 5 3 [TEST THAT THERE IS ROOM 8 3TJ= BZE 5 ZX7 8 3W3W BNG 5 ZX7 15 3WHG ADN 1 QINSERT [INSERT'),(' 7 3X36 MVCH 1 3 8 3XGQ LDX 1 FX1 8 3Y2B BRN ZX2 6 3Y6? ...#SKI G250&1 8 3Y=8 ...ZXITA BNZ 6 ZX5 7 3YB5 ...#SKI G250&1$1 8 3YG2 ZXITA BNZ 6 XERR 18 3Y_L ZXIT SBN 2 ANUM+1 [STORE NUMBER OF CHARS 8 3_F= SMO FX2 8 3_YW SBX 2 XUNI 7 42DG SLC 2 2 18 42Y6 BZE 2 XERR [NULL STRING NOT ALLOWED 8 43CQ SMO FX2 8 43XB LDX 0 XUNI 7 44C2 SMO 0 8 44WL STO 2 ANUM 8 45B= LDX 2 FX2 15 45TW ADN 4 1 [ADJUST COUNT 9 46*G SBX 3 XLBP(2) 9 46T6 STO 3 XCHPTR(2) 9 47#Q STO 4 XCHARS(2) 10 47SB LDX 7 XARITHL(2) 9 48#2 CHNUMCON ,XBREAK 17 48RL HUNT 3,CPB,CUNI [FREE PARAM BLOCK 7 49?= FREECORE 3 20 49QW TESTRPN2 OK,XERROR1 [JUMP IF ERROR DISCOVERED BY CHNUMCON 14 4==G HUNTW 3,CPAR,GNUMCON [SET PTR 20 4=Q6 # THIS INSTRUCTION SHOULD BE UNECESSARY-BUT IS PUT IN FOR SAFETY 9 4?9Q BNG 3 XERROR 8 4?PB ADX 7 FX1 7 4#92 EXIT 7 0 8 4#NL XERR LDX 2 FX2 16 4*8= FREECORE XUNI(2) [FREE PARAM BLOCK 16 4*MW BRN XERROR [& REPORT ERROR 19 4B7G # THIS SUBR FINDS THE LINE BUFFER AND SETS X3 AS THE CHAR PTR 9 4BM6 XFLB HUNTACTF CLB,1,FX2 8 4C6Q SMO FX2 8 4CLB STO 1 XLBP 7 4D62 ADX 3 1 8 4DKL LDX 1 FX1 10 4F5= #SKIP K6IFEXPAN>999-999 9 4FJW TRACE 3,IFXFLB 7 4G4G EXIT 7 0 21 4GJ6 # THIS SUBR FINDS AN APED & SETS A PTR IN X3 TO THE EVENT INFORMATIO 21 4H3Q # IN APED,ANEVENT THIS IS AT APEDSP1;IN AN APED,ADELETE AT APEDSP2 5 4HHB XFAPED 8 4J32 LDX 2 FX2 8 4JGL LDX 6 FX2 8 4K2= ZH3 STO 2 FX2 9 4KFW HUNT 2,APED 8 4K_G STO 6 FX2 8 4LF6 BNG 2 ZH1 9 4LYQ LDX 0 ATYPE(2) 16 4MDB [EXTACT SUBTYPE 10 4MY2 #SKIP K6IFEXPAN>999-999 10 4NCL TRACE 0,IFXFAPED 8 4NX= SRL 0 12 8 4PBW ANDN 0 #77 19 4PWG TXU 0 QEVENT(1) [JUMP UNLESS'ANEVENT'SUBTYPE 8 4QB6 BCS ZH2 16 4QTQ ZH2A ADN 2 APEDSP1 [SET PTR TO INF 7 4R*B EXIT 7 1 4 4RT2 ZH2 10 4S#L TXU 0 QDELETE(1) 8 4SS= BCS ZH3 9 4T?W ADN 2 APEDSP2 7 4TRG EXIT 7 1 17 4W?6 ZH1 EXIT 7 0 [EXIT BLOCK NOT FOUND 12 4WQQ # TERMINAL SUBTYPES OF APED BLOCK 9 4X=B QEVENT +ANEVENT 9 4XQ2 QDELETE +ADELETE 13 4Y9L # THIS SECTION DEALS WITH IF ZERO 21 4YP= # THE NUMBER LIST IS READ & EVALUATED ONLY IF EACH NUMBER IS ZERO IS 11 4_8W # THE CONDITION SATISFIED 9 4_NG XZERO CALL 7 XARITH 19 5286 LDN 6 0 [SET INDICATOR TO'IF ZERO' 19 52MQ ZERO [ENTRY FROM IF POS & IF NEG 8 537B LDCT 7 #400 18 53M2 LDX 4 A1(3) [THIS TEST IS REDUNDANT 8 546L BZE 4 ZERO2 18 54L= LDN 7 1 [SET'FALSE'REPLY IN X7 8 555W LDN 2 A1(3) 18 55KG ZERO1 ADN 2 1 [LOOK FOR NON ZERO EXPR 8 5656 LDX 0 0(2) 11 56JQ #SKIP K6IFEXPAN>999-999 9 574B TRACE 0,IFZERO 8 57J2 BNZ 6 ZERO5 16 583L BNZ 0 ZERO2 ['IF ZERO'FALSE 8 58H= BRN ZERO4 8 592W ZERO5 BPZ 6 ZERO3 17 59GG BPZ 0 ZERO2 ['IF NEGATIVE'FALSE 8 5=26 BRN ZERO4 19 5=FQ ZERO3 BNG 0 ZERO2 [JUMP IF^IF POSITIVE^FALSE 8 5=_B BZE 0 ZERO2 8 5?F2 ZERO4 BCT 4 ZERO1 16 5?YL LDN 7 0 [SET'TRVE' REPLY 7 5#D= ZERO2 FREECORE 3 8 5#XW BRN XRET 17 5*CG # THESE SECTIONS DEAL WITH IF POSITIVE & IF NEGATIVE 9 5*X6 XPOS CALL 7 XARITH 16 5BBQ LDN 6 1 [SET INDICATOR TVE 8 5BWB BRN ZERO 9 5CB2 XNEG CALL 7 XARITH 7 5CTL NGN 6 1 8 5D*= BRN ZERO 15 5DSW # THESE SECTIONS DEAL WITH'IF ON'&'IF OFF' 21 5F#G # THE NUMBER LIST IS READ & CONVERTED & THEN CHECKED AGAINST THE SWI 21 5FS6 # WORD IN THE OBJECT PROGRAM.IT IS SATISFIED IF THE SPECIFIED SWITCH 21 5G?Q # ARE'ON'OR'OFF'.THE SWITCHES ARE NUMBERED FROM 0 TO 23 & SWITCHES 21 5GRB # OUTSIDE THIS RANGE GIVES THE VALUE'FALSE'TO BOTH ON & OFF & THIS 16 5H?2 # IS THE REPLY GIVEN IF THERE IS NO CORE IMAGE 18 5HQL # [SWITCH N IS HELD IN BIT N-1 OF THE OBJ PROG WORD 30] 15 5J== XOFF CALL 7 XARITH [READ EXPR 17 5JPW LDN 6 1 [SET'OFF'INDICATOR 8 5K9G BRN ZON1 15 5KP6 XON CALL 7 XARITH [READ EXPR 17 5L8Q LDN 6 0 [SET 'ON' INDICATOR 15 5LNB ZON1 LDX 4 A1(3) [NO.IN LIST 9 5M82 BZE 4 ZONERR 15 5MML LDN 2 A1(3) [INITIATE PTR 15 5N7= LDN 5 0 [ADN BIT WORD 18 5NLW ZON2 ADN 2 1 [SET BIT IN X5 ACCORDING 18 5P6G LDX 7 0(2) [TO EACH NO.IN THE LIST 11 5PL6 #SKIP K6IFEXPAN>999-999 9 5Q5Q TRACE 7,IFONOFF 19 5QKB TXL 7 Q24(1) [IF A SWITCH IS OUTSIDE THE 19 5R52 BCS ZON2B [RANGE 0-23 IS REFERRED TO 18 5RJL ZON2A LDN 7 1 [THE CONDITION IS FALSE 8 5S4= BRN ZERO2 8 5SHW ZON2B LDCT 0 #400 7 5T3G SMO 7 7 5TH6 SRC 0 0 7 5W2Q ORX 5 0 8 5WGB BCT 4 ZON2 18 5X22 FREECORE 3 [RELEASE CHNUMCON BLOCK 8 5XFL LDN 3 30 6 5X_= #SKI ADELO 11 5YDW GETWORD 3,7,READ,,,XBREAK 7 5YYG #SKI ADELO<1$1 9 5_D6 GETWORD 3,7,READ 10 5_XQ TESTREP NOCORE,XFALSE 11 62CB TESTREPN RESVIOL,XALLRIGHT 10 62X2 GEOERR 1,NOWORD30 6 63BL XALLRIGHT 7 63W= SMO 7 7 64*W LDX 4 0 11 64TG #SKIP K6IFEXPAN>999-999 10 65*6 TRACE 4,IFSWITCH 7 65SQ WORDFIN 18 66#B ANDX 4 5 [COMPARE BITS WITH SWITCH 8 66S2 BNZ 6 ZON3 7 67?L ERX 4 5 13 67R= ZON3 BZE 4 XTRUE [TRVE 14 68=W BRN XFALSE [FALSE 5 68QG ZONERR 8 69=6 LDCT 7 #400 8 69PQ BRN ZERO2 8 6=9B Q24 +24 13 6=P2 # THIS SECTION DEALS WITH'IF MEMBER' 21 6?8L # THE NUMBER IS READ & CONVERTED & THIS IS CHECKED AGAINST THE MEMBE 21 6?N= # NUMBER GIVEN IN THE APED BLOCK & THE CONDITION IS SATISFIED IF THE 18 6#7W # MATCH.IT IS NOT SATISFIED IF THERE IS NO APED BLOCK. 21 6#MG # [IN FACT A NUMBER LIST IS ALLOWED BUT ONLY THE FIRST NUMBER IS SIG 5 6*76 XMEMBER 15 6*LQ CALL 7 XARITH [READ EXPR 8 6B6B LDX 4 A1(3) 9 6BL2 BZE 4 ZONERR 17 6C5L LDX 4 A1+1(3) [PICK UP MEMBER NO. 7 6CK= FREECORE 3 18 6D4W CALL 7 XFAPED [FIND TERMINAL APED BLOCK 17 6DJG BRN XFALSE [FALSE IF NONE FOUND 11 6F46 #SKIP K6IFEXPAN>999-999 10 6FHQ TRACE 0(2),IFMEMBER 17 6G3B TXU 4 0(2) [COMPARE MEMBER NOS 8 6GH2 BCC XTRUE 9 6H2L BRN XFALSE 10 6HG= MENDAREA 30,GAPIFNUMS 4 6H_W #END 8 ____ ...35050303000200000000