8 22FL #OPT K0CHNUMCON=0 17 22_= #LIS K0CHNUMCON>K0ALLGEO>K0GREATGEO>K0UTILITY 14 235Y ... SEG CHNUMCON,867,SECTION CENT,,G250 4 23=L ...[ 15 23C# ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 13 23J2 ...[ THIS EXCLUDES CODE UNDER #SKI G250 4 23NN ...[ 7 23TB ...#OPT G250 = 0 6 2424 ...#SKI G250&1 16 246Q ...# WITH G3UG EDIT M250 (ADDITIONAL NUMBER FORMATS) 15 24?D ...# THIS MEND IS ALSO USED BY INSTALLATION HOOKS 4 24D6 # 21 24XQ # THIS ROUTINE EVALUATES A NUMERICAL EXPRESSION OR SERIES OF SUCH 19 25CB # EXPRESSIONS SEPARATED BY COMMAS : THE RESULT IS IN BINARY 8 25X2 # ENTRY POINTS 21 26BL SEGENTRY K1CHNUMCON,ZEP1 [CHNUMCON MACRO WHEN ERROR MESS REQD 20 26W= SEGENTRY K11CHNUMCON,ZEP11 [ SAME WITH BREAK-IN INHIBITED 21 27*W SEGENTRY K3CHNUMCON,ZEP3 [CHNUMCON MACRO WHEN NO ERR MESS REQD 20 27TG SEGENTRY K31CHNUMCON,ZEP31 [ SAME WITH BREAK-IN INHIBITED 21 28*6 SEGENTRY K4CHNUMCON,ZEP4 [CHNUMCO1 MACRO WHEN ERROR MESS REQD 20 28SQ SEGENTRY K41CHNUMCON,ZEP41 [ SAME WITH BREAK-IN INHIBITED 21 29#B SEGENTRY K5CHNUMCON,ZEP5 [CHNUMCO1 MACRO WHEN NO ERR MESS REQD 20 29S2 SEGENTRY K51CHNUMCON,ZEP51 [ SAME WITH BREAK-IN INHIBITED 4 2=?L # 21 2=R= [THIS ROUTINE LOOKS FOR THE INPUT BLOCK ,TYPE CPB,CUNI ,CHECKS FOR NO 18 2?=W [OR NULL PARAMETER,AND SCANS THE INPUT STRING FOR COMMAS. 9 2?QG #DEF Z=A1+8 8 2#=6 OCT +8 8 2#PQ SCOMMA #34 5 2#WY P8388608 18 2*46 8H8388608 [PRESET IN CASE -8388608 9 2*9B SMA #17777777 5 2*P2 STRING 9 2B8L 4H0(+- 8 2BN= #FID 0 5 #73 7 2BS7 ...#SKI G250&1$1 13 2BY4 22H*/><$_&])#,0123456789K 6 2C7W ...#SKI G250&1 19 2CCN ... 23H*/><$_&])#@,0123456789K[ @ IS HEXADECIMAL SIGN 13 2CMG # ENTRY POINTS TO INHIBIT BREAKIN 5 2D76 ZEP51 9 2DLQ CALL 7 XFIDDLE 9 2F6B BRN NUMCON5 5 2FL2 ZEP41 9 2G5L CALL 7 XFIDDLE 9 2GK= BRN NUMCON4 5 2H4W ZEP31 9 2HJG CALL 7 XFIDDLE 8 2J46 BRN NUMCON3 5 2JHQ ZEP11 9 2K3B CALL 7 XFIDDLE 9 2KH2 BRN NUMCON1 4 2L2L # 12 2LG= # ROUTINE FOR FIDDLING JOBEVENTS 4 2L_W # 5 2MFG XFIDDLE 10 2M_6 LDX 0 JOBEVENTS(2) 18 2NDQ STO 0 AWORK3(2) [REMEMBER OLD CONTENTS 8 2NYB LDCT 0 #40 16 2PD2 STO 0 JOBEVENTS(2) [INHIBIT BREAKIN 16 2PXL STO 0 AWORK4(2) [INDICATE FIDDLE 7 2QC= EXIT 7 0 4 2QWW ZEP5 9 2RBG STOZ AWORK4(2) 5 2RW6 NUMCON5 20 2S*Q STOZ AWORK2(2) [SHOW NO ERROR MESSAGE REQUIRED 8 2STB BRN ROUTT 4 2T*2 ZEP4 9 2TSL STOZ AWORK4(2) 5 2W#= NUMCON4 7 2WRW LDN 3 1 19 2X?G STO 3 AWORK2(2) [SHOW ERROR MESSAGE REQUIRED 5 2XR6 ROUTT 9 2Y=Q HUNT 3,CPB,CUNI 9 2YQB BNG 3 UPERR1 9 2_=2 NGX 4 ANUM(3) 9 2_PL BPZ 4 UPERR1 21 329= STO 4 AWORK1(2) [FLAG INDICATING RESULT OF CONVERTION 17 32NW [ TO GO TO ACOMMUNE1 9 338G BRN XSTABL 4 33N6 ZEP3 9 347Q STOZ AWORK4(2) 5 34MB NUMCON3 20 3572 STOZ AWORK2(2) [SHOW NO ERROR MESSAGE REQUIRED 8 35LL BRN ROUTS 4 366= ZEP1 9 36KW STOZ AWORK4(2) 5 375G NUMCON1 9 37K6 #SKIP K6CHNUMCON>399-399 10 384Q TRACE 1,CHNUMCON 7 38JB LDN 3 1 19 3942 STO 3 AWORK2(2) [SHOW ERROR MESSAGE REQUIRED 5 39HL ROUTS 17 3=3= HUNT 3,CPB,CUNI [HUNT FOR UNIBLOCK 17 3=GW BNG 3 UPERR1 [ERROR NOT PRESENT 21 3?2G STOZ AWORK1(2) [FLAG INDICATING RESULT OF CONVERTION 18 3?G6 [ TO GO TO GNUMCON BLOCK 16 3?_Q LDX 4 ANUM(3) [PAR TYPE INTO X4 17 3#FB BNG 4 UPERR1 [ERROR NO PARAMETER 17 3#_2 BZE 4 UPERR1 [ERROR NULL PARAMETER 19 3*DL ANDN 4 #7777 [NUMBER OF CHARACTERS IN X4 19 3*Y= LDX 2 3 [POINTER TO PAR BLOCK INTO X2 19 3BCW LDN 7 0 [ZEROISE COMMA COUNT IN X7 15 3BXG NYCH LDCH 5 APARA(2) [CHAR INTO X5 16 3CC6 TXU 5 SCOMMA(1) [TEST IF COMMA 18 3CWQ BCS NXCH [IF NOT,EXAMINE NEXT CHAR 20 3DBB ADN 7 1 [IF COMMA,ADD 1 TO COMMA COUNT 15 3DW2 NXCH BCHX 2 / [STEP POINTER 17 3F*L SBN 4 1 [REDUCE CHAR COUNT 19 3FT= BNZ 4 NYCH [IF ANOTHER CHAR,J TO TEST IT 8 3G#W [SET UP OUTPUT BLOCK 7 3GSG ADN 7 2 8 3H#6 GETCORE 7,1 7 3HRQ FINDCORE 2 11 3J?B NAME 2,CPAR,GNUMCON 18 3JR2 STOZ A1(2) [SET PARAMETER COUNT ZERO 8 3K=L [SET UP STACK BLOCK 5 3KQ= XSTABL 20 3L9W GETCOREN 20,1 [GET AND NAME BLOCK FOR STACKS 7 3LPG FINDCORE 3 10 3M96 NAME 3,CPAR,GSTACK 10 3MNQ MHUNT 2,CPB,CUNI 9 3N8B STO 2 A1+1(3) 9 3NN2 LDX 4 ANUM(2) 8 3P7L ANDN 4 #7777 5 3PM= RESET 20 3Q6W STO 4 A1+2(3) [COUNT OF CHARACTERS INTO A1+2 17 3QLG STOZ A1+3(3) [SET SWITCH S ZERO 17 3R66 STOZ A1+4(3) [SET SB COUNT ZERO 17 3RKQ STOZ A1+5(3) [SET CB COUNT ZERO 17 3S5B STOZ Z(3) [SET FIRST PAR ZERO 8 3SK2 LDN 5 11 20 3T4L STO 5 A1+6(3) [SET POINTER TO OPERATOR STACK 18 3TJ= STOZ Z+11(3) [SET FIRST OPERATOR ZERO 7 3W3W NGN 5 1 19 3WHG STO 5 A1+7(3) [SET POINTER TO PAR STACK=-1 19 3X36 POINTA [TEST IF ANY MORE CHARACTERS 11 3XGQ #SKIP K6CHNUMCON>599-599 11 3Y2B TRACE A1+2(3),POINTA 9 3YG2 LDX 4 A1+2(3) 20 3Y_L BNZ 4 TECH [IF MORE J TO READ NEXT CHARACTER 11 3_F= #SKIP K6CHNUMCON>599-599 10 3_YW TRACE A1+6(3),OFF 19 42DG CALL 0 STACKCLEAR [CLEAR STACK AND STORE RESULT 5 42Y6 UPOUT 8 43CQ SETREP OK 7 43XB FREECORE 3 8 44C2 BRN UP 4 44WL TERM 11 45B= #SKIP K6CHNUMCON>599-599 9 45TW TRACE 7,TERM 10 46*G CALL 0 STACKCLEAR 8 46T6 BRN RESET 4 47#Q TECH 17 47SB LDCH 6 APARA(2) [CHARACTER INTO X6 21 4848 LDX 5 2 [KEEP POINTER FOR -8388608 POSSIBILIT 15 48#2 BCHX 2 / [STEP POINTER 7 48RL LDN 7 1 17 49?= SBS 7 A1+2(3) [REDUCE CHAR COUNT 17 49QW LDN 7 0 [SET COUNT IN X7 ZERO 7 49WR ...#SKI G250&1$1 8 4=2N LDN 4 27 6 4==G ...#SKI G250&1 8 4=G# ... LDN 4 28 20 4=Q6 NECH LDCH 0 STRING(1) [LOAD CHAR FOR COMPARISON INTO X5 15 4?9Q BCHX 1 / [STEP POINTER 17 4?PB TXU 0 6 [TEST IF SAME CHARS 21 4#92 BCC REBR [IF SO,J TO SELECT APPROPRIATE ROUTIN 15 4#NL ADN 7 1 [STEP COUNT 18 4*8= TXL 7 4 [IF NOT A LEGAL CHARACTER 15 4*MW BCC UPERR [J FOR ERROR 8 4B7G BRN NECH 8 4BM6 REBR LDX 1 FX1 17 4C6Q BZE 7 SBRAC [J FOR LEFT BRACKET 11 4CLB #SKIP K6CHNUMCON>599-599 9 4D62 TRACE 7,REBR 7 4DKL SBN 7 1 18 4F5= BZE 7 SPAR [J FOR LEFT PARENTHESIS 8 4FJW SBN 7 10 16 4G4G BNG 7 SOP [J FOR OPERATOR 17 4GJ6 BZE 7 RBRAC [J FOR RIGHT BRACKET 7 4H3Q SBN 7 1 18 4HHB BZE 7 RPAR [J FOR RIGHT PARENTHESIS 7 4J32 SBN 7 1 16 4JGL BZE 7 OCTAL [J FOR HASH SIGN 6 4JK9 ...#SKI G250&1 4 4JMS ...( 7 4JQC ... SBN 7 1 8 4JT2 ... BZE 7 XHEX 4 4JXK ...) 7 4K2= SBN 7 1 15 4KFW BZE 7 TERM [J FOR COMMA 8 4K_G SBN 7 11 15 4LF6 BNG 7 NUM [J FOR DIGIT 14 4LRG BZE 7 SKOP [J FOR K 18 4LYQ BRN UPERR [J FOR ERROR OTHERWISE 12 4MDB [ROUTINE TO STACK AWAY LEFT BRACKET 15 4MY2 SBRAC LDX 4 A1+3(3) [S INTO X4 11 4NCL #SKIP K6CHNUMCON>599-599 9 4NX= TRACE 4,SBRAC 15 4PBW BNZ 4 UPERR [ERROR S SET 7 4PWG LDN 4 1 18 4QB6 ADS 4 A1+4(3) [ADD 1 TO SQ BRAC COUNT 7 4QTQ LDN 7 1 14 4R*B CALL 0 OSTACK [STACK [ 9 4RT2 BRN POINTA 14 4S#L [THIS ROUTINE STACKS AWAY LEFT PARENTHESIS 15 4SS= SPAR LDX 4 A1+3(3) [S INTO X4 11 4T?W #SKIP K6CHNUMCON>599-599 9 4TRG TRACE 4,SPAR 15 4W?6 BNZ 4 UPERR [ERROR S SET 7 4WQQ LDN 4 1 19 4X=B ADS 4 A1+5(3) [ADD 1 TO PARENTHESIS COUNT 7 4XQ2 LDN 7 2 14 4Y9L CALL 0 OSTACK [STACK C 17 4YP= BRN POINTA [J FOR NEXT CHARACTER 17 4_8W [THIS ROUTINE STACKS OPERATORS , CHECKING THEIR PRIORITY 16 4_NG SOP ADN 7 12 [PRIORITY INTO X7 11 5286 #SKIP K6CHNUMCON>599-599 8 52MQ TRACE 7,SOP 9 537B LDX 4 A1+3(3) 16 53M2 BZE 4 UNARY [ERROR S UNSET 14 546L STOZ A1+3(3) [ UNSET S 9 54L= PARD SMO A1+6(3) 8 555W LDX 6 Z(3) 17 55KG TXL 6 7 [COMPARE PRIORITIES 20 5656 BCS UNEFF [IF MORE POWERFUL,PUT ON STACK 19 56JQ CALL 0 OEFF [IF NOT,EFFECT TOP OF STACK 16 574B BRN PARD [AND TRY AGAIN 9 57J2 UNEFF CALL 0 OSTACK 16 583L BRN POINTA [J FOR NEXT CHAR 7 58H= UNARY SBN 7 3 19 592W BZE 7 POINTA [BRANCH IF + FOR NEXT CHAR 7 59GG SBN 7 1 17 5=26 BNZ 7 UPERR [IF NOT + OR -,ERROR 8 5=FQ LDN 7 12 16 5=_B CALL 0 OSTACK [IF,STACK UNARY 17 5?F2 BRN POINTA [J FOR NEXT CHARACTER 16 5?H* [ THIS ROUTINE DEALS WITH THE SPECIAL 'K' OPERATOR. 16 5?J6 [ IT STACKS THE '*' OPERATOR THEN JUMPS INTO 'NUM' 8 5?JX [ AND STACKS 1024 7 5?KN SKOP LDN 7 5 9 5?LF LDX 4 A1+3(3) 16 5?M= BZE 4 UNARY [ERROR S UNSET 14 5?N3 STOZ A1+3(3) [UNSET S 9 5?NS SKOP2 SMO A1+6(3) 8 5?PK LDX 6 Z(3) 19 5?QB BXL 6 7,SKOP4 [J IF MORE POWERFUL OPERATOR 18 5?R7 CALL 0 OEFF [ELSE EFFECT TOP OF STACK 16 5?RY BRN SKOP2 [AND TRY AGAIN 9 5?SP SKOP4 CALL 0 OSTACK 7 5?TG LDN 6 0 8 5?W? LDN 7 1024 17 5?X4 BRN ND2 [PUT 1024 IN STACK 13 5?YL [THIS ROUTINE DEALS WITH RIGHT BRACKETS 15 5#D= RBRAC LDX 7 A1+3(3) [S INTO X7 11 5#XW #SKIP K6CHNUMCON>599-599 9 5*CG TRACE 7,RBRAC 16 5*X6 BZE 7 UPERR [ERROR S UNSET 18 5BBQ LDX 7 A1+4(3) [SQ BRAC COUNT INTO X4 16 5BWB SBN 7 1 [REDUCE BY ONE 19 5CB2 BNG 7 UPERR [ERROR SQ BRAC COUNT NEGATIVE 18 5CTL STO 7 A1+4(3) [STORE AWAY UPDATED COUNT 9 5D*= PARC SMO A1+6(3) 18 5DSW LDX 7 Z(3) [TOP OF OSTACK INTO X4 18 5F#G BZE 7 UPERR [ERROR IF END OF OSTACK 7 5FS6 SBN 7 1 19 5G?Q BZE 7 SLOC [J TO EFFECT IF LEFT BRACKET 7 5GRB SBN 7 1 19 5H?2 BZE 7 UPERR [ERROR IF LEFT PARENTHESIS 7 5HQL ADN 7 2 7 5J== LDX 6 7 19 5JPW CALL 0 OEFF [OTHERWISE EFFECT OPERATOR 17 5K9G BRN PARC [AND J TO TEST NEXT 14 5KP6 [THIS ROUTINE DEALS WITH RIGHT PARENTHESIS 15 5L8Q RPAR LDX 7 A1+3(3) [S INTO X7 11 5LNB #SKIP K6CHNUMCON>599-599 9 5M82 TRACE 7,RPAR 16 5MML BZE 7 UPERR [ERROR S UNSET 16 5N7= LDX 7 A1+5(3) [CB COUNT INTO X7 15 5NLW SBN 7 1 [REDUCE BY 1 18 5P6G BNG 7 UPERR [ERROR CB COUNT NEGATIVE 16 5PL6 STO 7 A1+5(3) [STORE NEW COUNT 9 5Q5Q PARB SMO A1+6(3) 17 5QKB LDX 7 Z(3) [TOP OPERATOR INTO X4 18 5R52 BZE 7 UPERR [ERROR IF END OF STACK 7 5RJL SBN 7 1 18 5S4= BZE 7 UPERR [ERROR IF LEFT BRACKET 7 5SHW SBN 7 1 18 5T3G BNZ 7 PARK [TEST IF LEFT PARENTHESIS 7 5TH6 LDN 7 1 19 5W2Q ADS 7 A1+6(3) [YES-UPDATE POINTER TO OSTACK 17 5WGB BRN POINTA [AND J FOR NEXT CHAR 7 5X22 PARK ADN 7 2 7 5XFL LDX 6 7 17 5X_= CALL 0 OEFF [NO-EFFECT OPERATOR 7 5YDW BRN PARB 4 5YF7 ...[ 4 5YFD ...[ 6 5YFP ...#SKI G250&1 4 5YG2 ...( 12 5YG? ...# HEXADECIMAL PRECEDED BY @ SIGN 8 5YGJ ...XTEN +10 8 5YGT ...XSIX +6 4 5YH6 ...# 9 5YHC ...XHEX LDX 4 A1+2(3) 11 5YHN ...#SKIP K6CHNUMCON>599-599 17 5YH_ ... TRACE 4,XHEX [ WHEN IN ROME, ... 8 5YJ= ... BZE 4 UPERR 7 5YJH ... LDN 5 6 7 5YJS ... LDN 7 0 9 5YK5 ...XHEX1 LDCH 6 APARA(2) 9 5YKB ... TXL 6 XTEN(1) 15 5YKM ... BCS XHEX2 [ ACCEPT 0-9 8 5YKY ... SBN 6 #41 15 5YL9 ... TXL 6 XSIX(1) [ ACCEPT A-F 15 5YLG ... BCC XHEX3 [ TERMINATOR 17 5YLR ... ADN 6 10 [ CORRECT DIGIT VALUE 7 5YM4 ...XHEX2 SLL 7 4 7 5YM* ... ORX 7 6 7 5YML ... SBN 5 1 8 5YMX ... BNG 5 UPERR 7 5YN8 ... BCHX 2 / 8 5YNF ... BCT 4 XHEX1 9 5YNQ ...XHEX3 TXU 5 XSIX(1) 15 5YP3 ... BCC UPERR [ NO DIGITS 16 5YP# ... BRN ND [ STACK NUMBER 4 5YPK ...# 12 5YPW ...# POSSIBLE HOLLERITH 19 5YQ7 ...XHOLL LDCH 6 APARA(2) [ CHECK IF DECIMAL TERMINATOR 17 5YQD ... ERN 6 #50 [ OR HOLLERITH 'H' 8 5YQP ... BNZ 6 ND 7 5YR2 ... SMO 7 7 5YR? ... SBN 4 1 8 5YRJ ... BNG 4 UPERR 18 5YRT ... LDX 5 7 [ HOLLERITH CHAR COUNT 7 5YS6 ... SBN 7 1 7 5YSC ... SRL 7 2 16 5YSN ... BNZ 7 UPERR [ NOT 1-4 CHARS 7 5YS_ ...XHOL1 BCHX 2 / 9 5YT= ... LDCH 6 APARA(2) 7 5YTH ... SLL 7 6 7 5YTS ... ORX 7 6 8 5YW5 ... BCT 5 XHOL1 7 5YWB ... BCHX 2 / 20 5YWM ... BRN ND [ STORE VALUE (RIGHT-JUSTIFIED) 4 5YWY ...# 4 5YX9 ...) 4 5YXG ...[ 4 5YXR ...[ 20 5YYG [THIS ROUTINE LOOKS FOR AND CONVERTS THE OCTAL NUMBER PRECEDED BY 16 5_D6 [A HASH SIGN AND STORES IT ON THE PARAMETER STACK 9 5_XQ OCTAL LDX 4 A1+2(3) 11 62CB #SKIP K6CHNUMCON>599-599 9 62X2 TRACE 4,OCTAL 8 63BL BZE 4 UPERR 7 63W= LDN 5 8 7 64*W STOZ 7 9 64TG OC1 LDCH 6 APARA(2) 9 65*6 TXL 6 OCT(1) 8 65SQ BCC OC2 7 66#B SLL 7 3 7 66S2 ORX 7 6 7 67?L SBN 5 1 8 67R= BNG 5 UPERR 7 68=W BCHX 2 / 8 68QG BCT 4 OC1 18 69=6 OC2 TXL 5 OCT(1) [ERROR NO OCTAL NUMERALS 8 69PQ BCC UPERR 8 6=9B BRN ND 14 6=P2 [THIS ROUTINE CONVERTS DECIMALS TO BINARY 9 6?8L NUM LDX 4 A1+2(3) 17 6?DD [ -8388608 IS ALLOWED BUT HAS TO BE TESTED EXPLICITLY 11 6?N= #SKIP K6CHNUMCON>599-599 8 6#7W TRACE 4,NUM 7 6#MG LDX 7 6 7 6*76 LDN 6 0 8 6*LQ BZE 4 ND 9 6B6B ND1 CDB 6 APARA(2) 6 6B=? ...#SKI G250&1 17 6BB8 ... BCS XHOLL [ COULD BE HOLLERITH 7 6BG5 ...#SKI G250&1$1 8 6BL2 BCS ND 7 6C5L BCHX 2 / 9 6CK= BNZ 6 X8388608 8 6D4W BCT 4 ND1 10 6DJG [STACK CONVERTED PARAMETER 9 6F46 ND STO 4 A1+2(3) 7 6F?Y ND2 LDN 4 1 14 6G3B STO 4 A1+3(3) [SET S 9 6GH2 LDX 4 A1+7(3) 7 6H2L ADN 4 1 18 6HG= TXL 4 A1+6(3) [TEST IF ROOM IN BLOCK 8 6H_W BCS OKTS 8 6JFG CALL 0 XBLK 7 6J_6 OKTS LDN 4 1 18 6KDQ ADS 4 A1+7(3) [UPDATE PARAMETER POINTER 9 6KYB SMO A1+7(3) 8 6LD2 STO 7 Z(3) 9 6LXL BRN POINTA 19 6LY7 [ SPECIAL ROUTINE FOR -8388608: ONLY ALLOWED IF OPERATOR AT TOP 20 6LYN [ OF STACK IS MINUS.IF SO,VALUE IS SET TO #40000000,OTHERWISE ERROR 5 6L_9 X8388608 17 6L_Q LDX 2 5 [POINTER INPUT STRING 8 6M2? LDX 1 FX1 16 6M2S LDN 6 7 [CHARACTER COUNT 5 6M3* SPECLOOP 9 6M3W LDCH 0 APARA(2) 10 6M4C LDCH 7 P8388608(1) 16 6M4Y BXU 0 7,UPERR [ERROR IF UNEQUAL 7 6M5F BCHX 2 / 7 6M62 BCHX 1 / 17 6M6H BCT 6 SPECLOOP [DROP THRU IF MATCH 20 6M74 SMO A1+6(3) [NOW CHECK IF OPERATOR IS MINUS 18 6M7K LDX 0 Z(3) [OPERATOR AT TOP OF STACK 8 6M86 SBN 0 12 18 6M8M BNZ 0 UPERR [ERROR IF NOT NEGATIVE 9 6M98 LDX 0 A1+2(3) 7 6M9P SBN 0 6 18 6M== STO 0 A1+2(3) [UPDATE CHARACTER COUNT 9 6M=R BZE 0 SPECOK 9 6M?# LDCH 0 APARA(2) 8 6M?T SBN 0 10 21 6M#B BNG 0 UPERR [ERROR IF FOLLOWED BY ANOTHER DIGIT 5 6M#X SPECOK 8 6M*D LDX 7 GSIGN 8 6M*_ LDX 1 FX1 8 6MBG BRN ND2 20 6MC= [THIS ROUTINE STACKS AN OPERATOR ,ENLARGING THE STACK BLOCK WHERE 6 6MWW [NECESSARY. 5 6NBG OSTACK 11 6NW6 #SKIP K6CHNUMCON>599-599 11 6P*Q TRACE A1+6(3),OSTACK 17 6PTB LDX 5 A1+7(3) [PARAMETER POINTER 16 6Q*2 LDX 6 A1+6(3) [OPERATOR POINTER 7 6QSL ADN 5 1 15 6R#= TXU 5 6 [ENOUGH ROOM? 16 6RRW BCS OKFS [IF SO J TO STACK 8 6S?G SBX 0 FX1 18 6SR6 STO 0 A1(3) [OTHERWISE EXTEND BLOCK 8 6T=Q CALL 0 XBLK 15 6TQB LDX 0 A1(3) [RESTORE LINK 8 6W=2 ADX 0 FX1 7 6WPL OKFS LDN 4 1 18 6X9= SBS 4 A1+6(3) [UPDATE OPERATOR POINTER 9 6XNW SMO A1+6(3) 16 6Y8G STO 7 Z(3) [STACK OPERATOR 13 6YN6 EXIT 0 0 [EXIT 8 6_7Q XBLK SBX 0 FX1 19 6_MB SBX 2 A1+1(3) [RELATIVISE CHARACTER POINTER 9 7272 STO 0 A1+1(3) 18 72LL STO 2 4 [STORE CHARACTER POINTER 10 736= LDX 6 ALOGLEN(3) 7 73KW ADX 6 6 11 745G ALTLEN 3,6,CPAR,GSTACK 10 74K6 MHUNT 2,CPB,CUNI 10 754Q MHUNTW 3,CPAR,GSTACK 20 75JB ADX 2 4 [POINT TO NEXT CHAR. OF PARAMETER 9 7642 SMO A1+6(3) 20 76HL LDN 4 Z(3) [ADDRESS OF 'OLD' TOP OPERATOR 17 773= SRL 6 1 [OLD LENGTH OF BLOCK 7 77GW STO 6 0 9 782G SBX 6 A1+6(3) 19 78G6 SBN 6 Z-A1 [NUMBER OF OPERATORS SO FAR 7 78_Q LDX 5 4 20 79FB ADX 5 0 [ADDRESS OF 'NEW' TOP OPERATOR 7 79_2 SMO 6 18 7=DL MOVE 4 0 [MOVE DOWN OPERATOR STACK 18 7=Y= ADS 0 A1+6(3) [RESET OPERATOR POINTER 9 7?CW LDX 0 A1+1(3) 15 7?XG ADX 0 FX1 [RESTORE LINK 13 7#C6 EXIT 0 0 [EXIT 19 7#WQ [SUBROUTINE TO EFFECT THE OPERATOR ON TOP OF THE OPERATOR STACK 4 7*BB OEFF 7 7*W2 LDN 5 1 9 7B*L ADS 5 A1+6(3) 7 7BT= SMO 6 19 7C#W TABER BVCR TABER [J FOR APPROPRIATE ROUTINE 9 7CSG BRN UPERR2 9 7D#6 BRN UPERR2 8 7DRQ BRN PLUS 8 7F?B BRN MINUS 8 7FR2 BRN MULT 8 7G=L BRN OVER 8 7GQ= BRN MAX 8 7H9W BRN MIN 8 7HPG BRN NOTEQ 8 7J96 BRN OR 8 7JNQ BRN MASK 8 7K8B BRN NEG 4 7KN2 PLUS 11 7L7L #SKIP K6CHNUMCON>599-599 9 7LM= TRACE 5,PLUS 8 7M6W CALL 4 OPSET 7 7MLG ADX 5 6 8 7N66 BRN SWAY 5 7NKQ MINUS 11 7P5B #SKIP K6CHNUMCON>599-599 9 7PK2 TRACE 5,MINUS 8 7Q4L CALL 4 OPSET 7 7QJ= SBX 5 6 8 7R3W BRN SWAY 4 7RHG MULT 11 7S36 #SKIP K6CHNUMCON>599-599 9 7SGQ TRACE 5,MULT 8 7T2B CALL 4 OPSET 7 7TG2 BVCR / 7 7T_L MPY 5 6 8 7WF= BVSR UPERR 8 7WYW BZE 5 OKAY 7 7XDG ADN 5 1 8 7XY6 BNZ 5 UPERR 8 7YCQ LDCT 5 256 7 7YXB ORS 5 6 7 7_C2 OKAY LDX 5 6 8 7_WL BRN SWAY 4 82B= OVER 11 82TW #SKIP K6CHNUMCON>599-599 9 83*G TRACE 5,OVER 8 83T6 CALL 4 OPSET 7 84#Q DVS 4 6 8 84SB BVSR UPERR 8 85#2 BRN SWAY 4 85RL MIN 11 86?= #SKIP K6CHNUMCON>599-599 8 86QW TRACE 5,MIN 8 87=G CALL 4 OPSET 7 87Q6 TXL 5 6 8 889Q BCS SWAY 7 88PB LDX 5 6 8 8992 BRN SWAY 4 89NL MAX 11 8=8= #SKIP K6CHNUMCON>599-599 8 8=MW TRACE 5,MAX 8 8?7G CALL 4 OPSET 7 8?M6 TXL 6 5 8 8#6Q BCS SWAY 7 8#LB LDX 5 6 8 8*62 BRN SWAY 5 8*KL NOTEQ 11 8B5= #SKIP K6CHNUMCON>599-599 9 8BJW TRACE 5,NOTEQ 8 8C4G CALL 4 OPSET 7 8CJ6 ERX 5 6 8 8D3Q BRN SWAY 4 8DHB OR 11 8F32 #SKIP K6CHNUMCON>599-599 8 8FGL TRACE 5,OR 8 8G2= CALL 4 OPSET 7 8GFW ORX 5 6 8 8G_G BRN SWAY 4 8HF6 MASK 11 8HYQ #SKIP K6CHNUMCON>599-599 9 8JDB TRACE 5,MASK 8 8JY2 CALL 4 OPSET 7 8KCL ANDX 5 6 8 8KX= BRN SWAY 4 8LBW NEG 11 8LWG #SKIP K6CHNUMCON>599-599 8 8MB6 TRACE 5,NEG 9 8MTQ SMO A1+7(3) 8 8N*B LDX 5 Z(3) 9 8NT2 SMO A1+7(3) 8 8P#L NGS 5 Z(3) 7 8PS= EXIT 0 0 5 8Q?W OPSET 9 8QRG LDX 5 A1+7(3) 11 8R?6 #SKIP K6CHNUMCON>599-599 9 8RQQ TRACE 5,OPSET 7 8S=B SBN 5 1 8 8SQ2 BNG 5 UPERR 9 8T9L STO 5 A1+7(3) 8 8TP= SMO A1+7(3) 8 8W8W LDX 5 Z(3) 9 8WNG SMO A1+7(3) 9 8X86 LDX 6 Z+1(3) 7 8XMQ EXIT 4 0 4 8Y7B SWAY 14 8YC8 BVS UPERR [J IF OVERFLOW 9 8YM2 SMO A1+7(3) 8 8_6L STO 5 Z(3) 7 8_L= EXIT 0 0 11 925W [CLEAR STACK AND STORE RESULT 6 92KG STACKCLEAR 11 9356 #SKIP K6CHNUMCON>599-599 10 93JQ TRACE A1+7(3),CLEAR 14 944B LDX 4 A1+3(3) [ S SET ? 8 94J2 BZE 4 UPERR 16 953L LDX 4 A1+4(3) [SB COUNT ZERO ? 8 95H= BNZ 4 UPERR 14 962W LDX 4 A1+5(3) [CB COUNT 8 96GG BNZ 4 UPERR 8 9726 SBX 0 FX1 15 97FQ STO 0 A1(3) [DEPOSIT LINK 9 97_B SEEP SMO A1+6(3) 8 98F2 LDX 6 Z(3) 9 98YL BZE 6 STOPAR 8 99D= CALL 0 OEFF 8 99XW BRN SEEP 5 9=CG STOPAR 11 9=X6 #SKIP K6CHNUMCON>599-599 11 9?BQ TRACE A1+7(3),STOPAR 9 9?WB LDX 4 A1+7(3) 8 9#B2 BNZ 4 UPERR 7 9#TL LDX 5 2 8 9**= LDX 2 FX2 9 9*SW LDX 4 AWORK1(2) 21 9B#G BZE 4 XHBL [J IF CHNUMCON MACRO - NOT CHNUMCO1 8 9BS6 LDX 4 Z(3) 10 9C?Q STO 4 ACOMMUNE1(2) 8 9CRB BRN UPOUT 4 9D?2 XHBL 11 9DQL MHUNTW 2,CPAR,GNUMCON 7 9F== LDN 4 1 8 9FPW ADS 4 A1(2) 8 9G9G LDX 4 Z(3) 8 9GP6 SMO A1(2) 8 9H8Q STO 4 A1(2) 12 9HNB #SKI K6CHNUMCON>499-499 10 9J82 TRACE 4,CHNUMBER 9 9JML LDX 4 A1+2(3) 7 9K7= LDX 2 5 8 9KLW LDX 0 A1(3) 8 9L6G ADX 0 FX1 7 9LL6 EXIT 0 0 4 9M5Q SLOC 11 9MKB #SKIP K6CHNUMCON>599-599 10 9N52 TRACE A1+7(3),SLOC 9 9NJL SMO A1+7(3) 17 9P4= LDX 6 Z(3) [WORD TO BE LOCATED 19 9PHW GETWORD 6,6,READ,,,ZBRK [GEQ ADDR OF O/P WORD INTO X6 11 9Q3G TESTREP2 LOADERR,UPERRC 11 9QH6 TESTREPNOT NOCORE,XNEXT 20 9QQY JANAL UPERRC [J IF STILL PROCESSING COMMAND 9 9R2Q ERROR GWERNO 9 9RGB BRN UPERRC 11 9S22 XNEXT TESTREPNOT RESVIOL,XOK 20 9S9S JANAL X237 [J IF STILL PROCESSING COMMAND 9 9SFL ERROR GWERRES 8 9S_= BRN X237 4 9TDW XOK 7 9TYG SMO 6 7 9WD6 LDX 6 0 16 9WXQ WORDFIN [TIDY UP OBJ PROG 10 9XCB MHUNT 2,CPB,CUNI 10 9XX2 MHUNTW 3,CPAR,GSTACK 9 9YBL STO 2 A1+1(3) 21 9YW= LDX 4 ANUM(2) [TOTAL NR OF CHARS TO BE CONVERTED 8 9_*W ANDN 4 #7777 16 9_TG SBX 4 A1+2(3) [SUBTRACT NR LEFT 7 =2*6 SRC 4 2 17 =2SQ ADX 2 4 [POINTS TO NEXT CHAR 16 =3#B LDX 4 A1+2(3) [RELOAD NR LEFT 9 =3S2 SMO A1+7(3) 15 =4?L STO 6 Z(3) [STORE VALUE 7 =4R= LDN 6 1 19 =5=W ADS 6 A1+6(3) [UPDATE POINTER TO OPERATOR 9 =5QG BRN POINTA 17 =6=6 X237 WORDFIN [TIDY UP OBJ. PROG. 9 =6PQ BRN UPERRC 5 =79B UPERR 8 =7P2 SMO FX2 9 =88L LDX 4 AWORK2 19 =8N= BZE 4 UPERRC [J IF NO ERROR MESSAGE REQD. 20 =8Y4 JANAL UPERRC [J IF STILL PROCESSING COMMAND 17 =97W ERROR CHNUMERR [OUTPUT ERROR MESSAGE 16 =9MG UPERRC SETREP CHNUMERR [SET ERROR REPLY 10 ==76 MFREEW CPAR,GSTACK 10 ==LQ VFREEW CPAR,GNUMCON 4 =?6B UP 9 =?L2 LDX 0 AWORK4(2) 8 =#5L BZE 0 NOEV 9 =#K= LDX 0 AWORK3(2) 19 =*4W STO 0 JOBEVENTS(2) [RESTORE ORIGINAL CONTENTS 5 =*JG UP 4 =B46 NOEV 7 =BHQ UPPLUS 1 10 =C3B UPERR1 GEOERR 1,NOPARA 11 =CH2 UPERR2 GEOERR 1,CHNUMCON 4 =D2L ZBRK 5 =DG= UP 8 =D_W MENDAREA 20 4 =FFG #END 8 ____ ...30474262000200000000