10 ! 1994-03-19 20 EXTEND 22 INTEGER 24 OPTION BASE 0 82 ; '*** Unsqueeze utility, for BASIC II ***' 125 ; ' Extended version, based on versions' 126 ; ' 02.07 from SH-System Elektronik and' 127 ; ' 02.10 from Luxor Datorer AB' 158 ; ' Copyright 1984 SH-System Elektronik' 160 Max=200 163 DIM G$=Max 180 H=(SYS(4)-3000)/Max 185 IF H<5 ; CHR$(7) : ; "Warning: stack size is" H "items" 196 DIM I$(H)=Max 235 G$=CHR$(8,4,0,7,3,1,0,2) 249 Netused=0 : Doused=0 253 I$(0)=CHR$(13)+SPACE$(79)+CHR$(13) 307 DATA " EQV "," IMP "," OR "," XOR "," AND ",=,=,=,<>,<>,<> 364 DATA <,<,<,>=,>=,>=,>,>,>,<=,<=,<=,+,+,+,-,-,*,*,/,/,^,^,^ 421 DATA eof 428 DATA FN,FIX,INT,SIN,COS,TAN,ATN,SQR,PI,RND,SGN,ASCII,CHR$,LEFT$,RIGHT$ 497 DATA MID$,LEN,INSTR,SPACE$,STRING$,SWAP%,PEEK,INP,CALL,ERRCODE,SYS,ABS 566 DATA ADD$,NUM$,TAB,SUB$,CUR,MUL$,TXPOINT,DIV$,EXP,LOG,LOG10,COMP%,VAL 634 DATA MID$,TIME$,POSIT,VARPTR,VAROOT,PEEK2,MOD,CVT%$,CVT$%,CVTF$,CVT$F 702 DATA HEX$,OCT$,DOT,eof 723 DATA BLK,RED,GRN,YEL,BLU,MAG,CYA,WHT,FLSH,STDY,ULN,NULN,NRML,DBLE,EL,,GBLK 788 DATA GRED,GGRN,GYEL,GBLU,GMAG,GCYA,GWHT,HIDE,GCON,GSEP,,BLBG 847 DATA NWBG,GHOL,GREL,eof 869 ; 870 ON ERROR GOTO 968 873 ; I$(0) "Input file" TAB(21); 901 INPUT ": "P$; 910 IF P$='' THEN GOTO 2172 921 IF INSTR(1,P$,'.')=0 THEN P$=P$+'.BAC' : ; '.BAC'; 956 OPEN P$ AS FILE 1 965 GOTO 971 968 RESUME 870 971 ; 972 ON ERROR GOTO 1123 975 ; I$(0) "Output file" TAB(21); 1004 INPUT ": "Q$; 1013 IF Q$='' THEN S=0 : GOTO 1126 ELSE S=2 1034 IF INSTR(1,'PR:pr:',LEFT$(LEFT$(Q$+SPACE$(3),3),3))<>0 THEN GOTO 1103 1065 IF INSTR(1,Q$,'.')=0 THEN Q$=Q$+'.BAS' : ; '.BAS'; 1103 IF S<>0 THEN PREPARE Q$ AS FILE S 1120 GOTO 1126 1123 RESUME 972 1126 ; 1127 ON ERROR GOTO 1204 1130 ; I$(0) "Offset" TAB(21); 1154 INPUT ": "T$; 1163 IF T$='' THEN ; CHR$(9,50,48) : V=20 ELSE V=VAL(T$) : ; 1201 GOTO 1207 1204 RESUME 1127 1207 ON ERROR GOTO 1272 1210 ; I$(0) 'Options (B,FS,?)' TAB(21); 1248 INPUT ": "T$; 1250 IF T$<>"?" GOTO 1257 1251 ; I$(0) "Options:" 1252 ; "B - go backwards on unknown instructions, else skip" 1254 ; "FS - add function size and variable space information" 1255 ; : GOTO 1210 1257 W=0 1265 Y=0 1269 GOTO 1275 1272 RESUME 1207 1275 WHILE LEN(T$)>0 1286 B1$='' 1292 WHILE INSTR(1,', /',CHR$(ASCII(T$)))=0 AND LEN(T$)>=1 1321 B1$=B1$+CHR$(ASCII(T$)) 1336 IF LEN(T$)>=2 THEN T$=RIGHT$(T$,2) ELSE T$='' 1361 WEND 1364 E1=INSTR(1,'B b FSfs',B1$)+3 1389 ON E1/4+1 GOTO 1207,1409,1423 1409 W=-1 1413 GOTO 1430 1423 Y=-1 1430 WHILE INSTR(1,', /',CHR$(ASCII(T$)))<>0 AND LEN(T$)>=1 1459 IF LEN(T$)>=2 THEN T$=RIGHT$(T$,2) ELSE T$='' 1485 WEND 1488 WEND 1491 ; 1492 G1=(PEEK(SYS(10)+29) AND 1)=1 1510 H1$='' 1515 J1=(PEEK(SYS(10)+29) AND 2)=2 1532 ; 1533 IF G1 THEN I$(0)='INTEGER' ELSE H1$='%' : I$(0)='FLOAT' 1575 ; 'Default ' I$(0) ' mode.' 1603 IF J1 THEN GOTO 1658 1612 ; "Set EXTEND mode, if you load the BAS-file." 1658 ; 1659 POSIT #1,235 1670 FOR L=1 TO LEN(G$) 1685 IF MID$(G$,L,1)<>CHR$(FNR2173-221) THEN GOTO 1721 1712 NEXT L 1715 E1=PEEK(0) 1721 POSIT #1,0 1730 IF (FNR2173+1 AND 254)<>144 THEN ; FLSH 'Unknown BASIC version.' STDY : GOTO 2169 1778 L1=FNR2173 1786 L1=FNR2173 1794 E1=FNR2173 1802 M1=FNR2225 1810 IF (L1 AND 1)=0 THEN ; FLSH "Warning, program isn't fixed up." STDY 1862 ON ERROR GOTO 1863 POSIT #1,V 1874 N1=0 1879 O1=1 1883 P1=0 1887 L1=FNR2173 1895 WHILE NOT N1 1903 S1=L1 1910 IF S1=135 THEN S1=FNR9644(3) 1928 IF S1=141 OR S1=153 OR S1=155 THEN T1=2 ELSE T1=0 1963 IF U1-T1<0 THEN U1=0 : T1=0 1982 IF P1 THEN GOTO 2096 1990 ; #S USING "#####"+SPACE$(U1-T1+1),POSIT(1)-O1; 2028 IF S<>0 THEN ; USING CHR$(13)+'Line ##### ###%' FNR9275.(POSIT(1)-O1) FNR9275.(POSIT(1))*100./M1; 2096 P1=0 2101 O1=1 2105 E1=FNR2310 2113 IF V1$="88" THEN P1=-1 : GOTO 2149 2131 IF P1=0 THEN ; #S 2144 W1=0 2149 WEND 2152 CLOSE 2154 ; 2155 ; 'End-Of-Job' 2169 GOTO 235 2172 END 2173 DEF FNR2173 LOCAL La$=1,Lb 2189 GET #1,La$ 2199 Lb=ASCII(La$) 2208 V1$=FNR2260$(Lb) 2219 RETURN Lb 2224 FNEND 2225 DEF FNR2225 LOCAL La$=2 2239 GET #1,La$ COUNT 2 2252 RETURN CVT$%(La$) 2259 FNEND 2260 DEF FNR2260$(La) LOCAL Lb$=2 2276 Lb$=HEX$(La) 2285 IF LEN(Lb$)=1 THEN Lb$="0"+Lb$ 2304 RETURN Lb$ 2309 FNEND 2310 DEF FNR2310 2318 ON ERROR GOTO 2580 2321 IF V1$<"80" THEN 2378 2335 IF V1$<"A5" THEN E1=FNR2641 : GOTO 2560 2356 IF V1$>"BF" THEN E1=FNR5125(0) : GOTO 2560 2378 IF X1=0 THEN GOTO 2448 ELSE ; #S,'! '; 2403 WHILE V1$<'80' 2415 ; #S,CHR$(L1); 2429 L1=FNR2173 2438 WEND 2441 X1=0 2445 RETURN 0 2448 IF W THEN E1=FNR8543+FNR8543 ELSE ; 'Synk --- ';V1$ 2488 W1=W1+1 2497 IF W1<253 THEN GOTO 2560 2509 ; 2510 ; 'Illegal statement loop found, program stopped' 2558 STOP 2560 L1=FNR2173 2569 RETURN 0 2572 A2=0 2577 GOTO 2560 2580 RESUME 2572 2583 FNEND 2584 DEF FNR2584(La$) 2594 B2=POSIT(1)+1 2605 C2=FNR2225 2613 ; #S,La$;NUM$(B2+C2); 2637 RETURN 0 2640 FNEND 2641 DEF FNR2641 LOCAL La 2653 D2=L1-127 2664 IF D2>10 THEN 2859 2674 ON D2 GOTO 2702,2716,2725,2740,2757,2773,2796,2803,2845,2856 2702 RETURN FNR2584("GOTO ") 2716 RETURN FNR2584("") 2725 RETURN FNR2584("GOSUB ") 2740 RETURN FNR2584("RESTORE ") 2757 RETURN FNR2584("RESUME ") 2773 RETURN FNR2584("ON ERROR GOTO ") 2796 RETURN FNR6516 2803 E2=FNR2173 2812 L1=FNR2173 2820 L1=FNR2173 2828 N1=(E2=1) 2837 P1=-1 2842 GOTO 5121 2845 P1=0 2849 O1=2 2853 GOTO 5121 2856 GOTO 5057 2859 IF D2>20 THEN 3802 2871 ON D2-10 GOTO 2901,3050,3074,3546,3644,3672,3690,3737,3760,3782 2901 ; #S,' ELSE '; 2918 La=POSIT(1)+FNR2173+1 2936 L1=FNR2173 2944 E1=FNR2310 2952 IF V1$='88' AND POSIT(1)'8A' AND (POSIT(1)0 THEN ; #S,"("; 3277 FOR L=1 TO J2 3290 L1=FNR2173 3299 E1=FNR8843 3307 ; #S,FNR10060$; 3321 IF L0 THEN ; #S,")"; 3365 L1=FNR2173 3374 IF V1$<>"B6" THEN 3499 3387 J2=FNR2173 3395 ; #S," LOCAL "; 3413 H2=-1 3419 FOR L=1 TO J2 3432 L1=FNR2173 3441 E1=FNR8843 3449 ; #S,FNR10060$; 3463 IF L30 THEN 4762 3814 ON D2-20 GOTO 3846,4083,4094,4295,4378,4549,4610,4645,4680,4759 3846 ; #S,'; '; 3859 L1=FNR2173 3868 E1=FNR8421 3876 IF FNR8486 THEN 3927 3886 IF V1$<>"B8" THEN 3927 3899 E1=FNR9304(" USING ") 3916 L1=FNR2173 3924 GOTO 3966 3927 IF FNR5336 THEN GOTO 4071 3937 L1=FNR2173 3945 IF A2>0 THEN ; #S,FNR10060$; 3966 IF FNR8486 THEN 3927 3977 IF CHR$(ASCII(V1$))<'B' THEN 4071 3993 O2=POSIT(1) 4000 L1=FNR5369 4008 IF V1$='B7' OR V1$='B8' OR V1$='B9' THEN ; #S,' '; : L1=FNR5369 : GOTO 3937 4060 POSIT #1,O2 4071 E1=FNR8543 4080 GOTO 5121 4083 E1=FNR8998 4091 GOTO 5121 4094 L1=FNR2173 4102 ; #S,"INPUT "; 4119 E1=FNR8421 4128 IF FNR5336 THEN 4169 4138 ; #S,FNR10060$; 4152 L1=FNR2173 4161 E1=FNR8486 4169 P2=0 4173 S1=FNR2173 4181 P2=P2+1 4189 IF S1<8 THEN GOTO 4173 4199 L1=FNR2173 4207 IF FNR5336 THEN 4264 4217 ; #S,FNR10060$; 4231 L1=FNR2173 4240 IF FNR5336=0 THEN ; #S,","; : GOTO 4217 4264 IF FNR8486 AND (V1$<>'87') THEN 5121 4284 E1=FNR8543 4292 GOTO 5121 4295 L1=FNR2173 4303 ; #S,"INPUT LINE "; 4325 E1=FNR8421 4334 IF FNR5336 THEN 4375 4344 ; #S,FNR10060$; 4358 L1=FNR2173 4367 E1=FNR8486 4375 GOTO 4071 4378 ; #S,'FOR '; 4393 U1=U1+2 4402 L1=FNR2173 4410 E1=FNR5369+FNR5125(0) 4425 R2$(Q2)=I$(A2+1) 4443 Q2=Q2+1 4452 L1=FNR2173 4460 IF V1$='BD' THEN ; #S,' TO '; ELSE STOP 4489 E1=FNR9304('') 4500 L1=FNR2173 4508 IF V1$='BE' THEN ; #S,' STEP '; : GOTO 4489 4538 E1=FNR2225 4546 GOTO 5121 4549 ; #S,'NEXT '; 4565 U1=U1-2 4574 E1=FNR2225 4582 Q2=Q2-1 4590 ; #S,R2$(Q2); 4607 GOTO 5121 4610 U1=U1+2 4618 C2=FNR2225 4626 E1=FNR9304("WHILE ") 4642 GOTO 5121 4645 ; #S,"WEND"; 4660 U1=U1-2 4669 C2=FNR2225 4677 GOTO 5121 4680 ; #S,'READ '; 4696 C2=FNR2225 4705 E1=FNR9304('') 4715 L1=FNR2173 4723 E1=FNR8543 4731 IF V1$='B7' THEN ; #S,','; : GOTO 4696 4756 GOTO 5121 4759 GOTO 5057 4762 ON D2-30 GOTO 4788,4808,4836,4899,4995,5017,5037 4788 ; #S,"RESUME"; 4805 GOTO 5121 4808 ; #S,'ON ERROR GOTO '; 4833 GOTO 5121 4836 ; #S,"RETURN "; 4854 L1=FNR2173 4863 IF FNR5336=0 THEN ; #S,FNR10060$; ELSE E1=FNR8543 4896 GOTO 5121 4899 E1=FNR10443("ON ")+FNR9716('') 4920 S1=FNR2173 4928 S1=FNR2173 4936 L1=FNR2173 4944 E1=FNR2310 4952 E1=FNR8543 4960 WHILE S1>1 4969 E1=FNR2584(",") 4981 S1=S1-1 4989 WEND 4992 GOTO 5121 4995 RETURN FNR9304('')+FNR9304(CHR$(FNR2173)) 5017 ; #S,"SINGLE"; 5034 GOTO 5121 5037 ; #S,"DOUBLE"; 5054 GOTO 5121 5057 ; #S,' ! **** Stat1: unknown p-code segment --- ' V1$ ' ****' 5121 RETURN 0 5124 FNEND 5125 DEF FNR5125(La) LOCAL Lb,Lc 5141 IF La THEN L1=FNR2173 5155 Lc=A2 5161 Lb=POSIT(1) 5168 E1=FNR5369 5176 IF V1$<>'BD' AND V1$<>'BE' THEN 5229 5198 POSIT #1,Lb-1 5211 A2=Lc 5218 E1=FNR8998 5226 RETURN 0 5229 IF V1$>"B6" THEN RETURN FNR10492(FNR10060$) 5252 IF V1$>"B3" THEN 5299 5266 ; #S,FNR10365$ FNR10060$ "=" FNR10060$; 5296 RETURN 0 5299 E1=FNR8568(0) 5308 ; #S,FNR10060$ "=" FNR10060$; 5332 RETURN 0 5335 FNEND 5336 DEF FNR5336 5344 IF V1$<"C0" THEN RETURN -1 ELSE RETURN FNR5369 5368 FNEND 5369 DEF FNR5369 LOCAL La 5377 WHILE -1 5382 IF V1$<"7E" THEN 6512 5396 IF V1$>"80" THEN 5412 5409 GOTO 6500 5412 IF V1$>"83" THEN 5428 5425 GOTO 6500 5428 IF V1$>"A6" THEN 5482 5441 E1=FNR9977(FNR10365$+FNR10060$+FNR9620$(L1-132)+FNR10060$) 5479 GOTO 6500 5482 IF V1$>"A7" THEN 5519 5495 E1=FNR9977("("+FNR10060$+")") 5516 GOTO 6500 5519 IF V1$>"AF" THEN 5650 5532 IF V1$="AA" THEN 6437 5545 IF V1$="AB" THEN L1=FNR2173 : GOTO 6500 5566 IF V1$="AC" THEN L1=FNR2173 : GOTO 6500 5587 IF V1$="AD" THEN L1=FNR2173 : GOTO 6500 5608 IF V1$="AE" THEN 6437 5615 IF V1$="AF" THEN E1=FNR9977("NOT "+FNR10060$) : GOTO 6500 5621 E1=FNR9977("-"+FNR10060$) 5647 GOTO 6500 5650 IF V1$>"BF" THEN 5666 5660 IF V1$="B0" THEN E1=FNR9977("DL") : Z$=FNR10365$ : GOTO 6500 ! 5663 GOTO 6512 5666 IF V1$>"CA" THEN 5777 5679 IF V1$="C7" THEN E1=FNR9977(NUM$(FNR9275.(FNR2225))+H1$) : GOTO 6500 5716 IF V1$>"C7" THEN 5766 5729 IF V1$="C3" THEN E1=FNR9977("DS") : GOTO 6500 5755 E1=FNR8568(0) 5763 GOTO 6500 5766 E1=FNR8568(0) 5774 GOTO 6500 5777 IF V1$>"CF" THEN 6152 5790 IF V1$<"CF" THEN 6072 5803 J2=FNR2173 5811 L1=FNR2173 5819 C2=FNR2225 5827 H2=0 5831 W2=POSIT(1) 5838 POSIT #1,W2+C2-5 5855 L1=FNR2173 AND 127 5868 E1=FNR8568(0) 5876 A2=A2-1 5884 T$=RIGHT$(I$(A2),LEN(I$(A2))) 5907 IF INSTR(1,'.%$',T$)=0 THEN T$='' 5927 X2$='R'+NUM$(POSIT(1)-5)+T$ 5946 POSIT #1,W2 5957 IF J2=0 THEN E1=FNR9977('') : GOTO 6047 5978 FOR W2=1 TO J2-1 5993 E1=FNR9977(FNR10365$+FNR10060$+","+FNR10060$) 6023 NEXT W2 6026 E1=FNR9977("("+FNR10060$+")") 6047 E1=FNR9977("FN"+X2$+FNR10060$) 6069 GOTO 6500 6072 IF V1$>"CC" THEN 6149 6085 IF V1$="CB" THEN C3$='"' ELSE C3$="'" 6109 GET #1,G$ COUNT FNR2173 6112 FOR W2=1 TO LEN(G$) 6114 La=La OR (ASCII(RIGHT$(G$,W2))<32 OR ASCII(RIGHT$(G$,W2))>127) 6116 NEXT W2 6118 IF La THEN 6130 6126 E1=FNR9977(C3$+G$+C3$) 6127 GOTO 6500 6130 E1=FNR9977("CHR$(") 6132 FOR W2=1 TO LEN(G$) 6134 E1=FNR9977(FNR10060$+NUM$(ASCII(RIGHT$(G$,W2)))) 6136 IF W2"D4" THEN 6309 6165 IF L1=208 THEN E1=FNR9977('') : GOTO 6282 6187 IF V1$='D4' THEN L1=FNR2173 6205 L1=L1-209 6215 FOR W2=1 TO L1 6228 E1=FNR9977(FNR10365$+FNR10060$+","+FNR10060$) 6258 NEXT W2 6261 E1=FNR9977("("+FNR10060$+")") 6282 E1=FNR9977(FNR9513$(FNR2173)+FNR10060$) 6306 GOTO 6500 6309 IF V1$>"DC" THEN 6399 6322 GET #1,G$ COUNT L1-212 6341 G$=NUM$(CVT$F(G$+STRING$(8,0))) 6357 IF (INSTR(1,G$,'.')=0) AND G1 THEN G$=G$+'.' 6385 E1=FNR9977(G$) 6396 GOTO 6500 6399 IF V1$>"ED" THEN 6437 6412 E1=FNR9977(NUM$(L1-221)+H1$) 6434 GOTO 6500 6437 ; #S,' ! **** Expr: unknown p-code segment --- ' V1$ ' ****' 6500 L1=FNR2173 6509 WEND 6512 RETURN 0 6515 FNEND 6516 DEF FNR6516 LOCAL La$=160 6530 L1=FNR2173 6539 IF L1>9 THEN 7220 6549 ON L1+1 GOTO 6579,6921,6956,6976,6995,7063,7085,7166,7184,7197 6579 ; #S,"DIM "; 6603 F3=0 6607 G3=A2 6610 L1=FNR2173 6613 E1=FNR5369 6642 IF V1$<>"CD" AND V1$<>"CE" THEN 6851 6660 L1=FNR2173 6674 IF (L1 AND 2)=2 THEN La$='='+FNR10060$ ELSE La$='' 6675 IF La$="=DS" THEN La$="" ! 6825 E1=FNR8568(1) 6833 ; #S,FNR10060$ La$; 6851 IF F3 THEN POSIT #1,POSIT(1)+2 6860 L1=FNR2173 6881 IF FNR5336 THEN 6906 6891 ; #S,","; 6903 GOTO 6642 6906 E1=FNR8543 6914 ! A2=0 6918 RETURN 0 6921 ; #S,"COMMON "; 6948 F3=-1 6953 GOTO 6610 6956 RETURN FNR9304('POKE ')+FNR9370 6976 RETURN FNR9304('OUT ')+FNR9370 6995 E1=FNR9304('OPEN ') 7011 L1=FNR2173 7019 IF V1$='BB' THEN ; #S,' AS FILE '; ELSE GOTO 8243 7054 RETURN FNR9304('') 7063 E1=FNR9304('PREPARE ') 7082 GOTO 7011 7085 ; #S,'CLOSE '; 7102 L1=FNR2173 7111 IF FNR5336 THEN RETURN FNR8543 7125 E1=FNR5369 7134 A2=A2-1 7142 ; #S,I$(A2); 7159 RETURN FNR9370 7166 RETURN FNR9716("RANDOMIZE") 7184 RETURN FNR9716("STOP") 7197 RETURN FNR9304('TXPOINT ')+FNR9370 7220 IF L1>19 THEN 7459 7233 ON L1-9 GOTO 7263,7320,7335,7350,7367,7378,7394,7410,7425,7443 7263 E1=FNR9304("GET ") 7277 L1=FNR2173 7285 IF V1$='B9' THEN RETURN FNR9304(' COUNT ') ELSE RETURN FNR8543 7320 RETURN FNR9304('CHAIN ') 7335 RETURN FNR9304("TRACE ") 7350 RETURN FNR9716("NO TRACE") 7367 RETURN FNR9304("PUT ") 7378 G1=-1 : H1$='' 7380 RETURN FNR9716("INTEGER") 7394 G1=0 : H1$='%' 7396 RETURN FNR9716("FLOAT") 7410 RETURN FNR9716("EXTEND") 7425 RETURN FNR9716("NO EXTEND") 7443 RETURN FNR9304('DIGITS ') 7459 IF L1>29 THEN 7586 7472 ON L1-19 GOTO 7492,7519,7540,7563 7492 RETURN FNR9304('OPTION BASE ')+FNR9370 7519 RETURN FNR9304('POSIT ')+FNR9370 7540 RETURN FNR9304('SET DOT ')+FNR9370 7563 RETURN FNR9304('CLR DOT ')+FNR9370 7586 IF L1>165 THEN 7689 7599 IF L1<160 THEN 8243 7611 ON L1-159 GOTO 7631,7643,7657,7676,7678,7680 7631 RETURN FNR9716("BYE") 7643 RETURN FNR9304('KILL ') 7657 P1=-1 7662 RETURN FNR9304('NAME ') 7676 RETURN FNR9304(' AS ') 7678 RETURN FNR9304('CD ') 7680 E1=FNR9716('FILESTAT') 7682 L1=FNR2173 7684 IF V1$<>'23' THEN RETURN FNR8543 7686 RETURN FNR8421+FNR5125(0) 7689 IF L1>197 OR L1<192 THEN 7887 7710 ON L1-191 GOTO 7734,7757,7779,7801,7822,7845 7734 RETURN FNR9304('FGPOINT ')+FNR9370 7757 RETURN FNR9304('FGLINE ')+FNR9370 7779 RETURN FNR9304('FGFILL ')+FNR9370 7801 RETURN FNR9304('FGCTL ')+FNR9370 7822 RETURN FNR9304('FGPAINT ')+FNR9370 7845 RETURN FNR9304('FGPICTURE ')+FNR9370 7887 IF L1>210 OR L1<200 THEN GOTO 8230 7908 ON L1-199 GOTO 7944,7986,8010,8030,8069,8090,8109,8179,8193,8208,8222 7944 RETURN FNR9304('ISAM OPEN ')+FNR2173+FNR9304(' AS FILE ') 7986 E1=FNR9304('ISAM READ ') 8007 GOTO 8126 8010 RETURN FNR9304('ISAM WRITE ') 8030 RETURN FNR9304('ISAM UPDATE ')+FNR2173+FNR9304(' TO ') 8069 RETURN FNR9304('ISAM DELETE ') 8090 E1=FNR9304(' KEY ') 8106 GOTO 8126 8109 E1=FNR9304(' INDEX ') 8126 IF FNR9644(0)<>134 OR FNR9644(1)<=204 OR FNR9644(1)>=211 THEN RETURN 0 8163 L1=FNR2173 8172 RETURN FNR6516 8179 RETURN FNR9716(' FIRST') 8193 RETURN FNR9716(' LAST') 8208 RETURN FNR9716(' NEXT') 8222 RETURN FNR9716(' PREVIOUS') 8230 IF L1<>224 THEN 8235 8231 IF Netused THEN RETURN FNR9716('NET') ELSE IF Doused THEN RETURN FNR9304('DO ') 8232 IF S<>0 THEN ; CHR$(13) SPACE$(79) CHR$(13); ELSE ; : ; 8233 INPUT "Is this a LuxNet program? (y/n) Y"+CHR$(8)La$; : ; CHR$(13) SPACE$(79) CHR$(13); 8234 Doused=(La$="N" OR La$="n") : Netused=NOT Doused : GOTO 8231 8235 IF L1=225 THEN RETURN FNR9716('UFD') 8237 IF L1=227 THEN RETURN FNR9304('DO ') 8240 IF L1=249 THEN RETURN FNR8266 8243 ; #S,'XSTM' L1; 8262 RETURN 0 8265 FNEND 8266 DEF FNR8266 8274 L1=FNR2173 8283 IF L1>2 THEN GOTO 8353 8293 ON L1+1 GOTO 8307,8328,8340 8307 RETURN FNR9304('WIDTH ')+FNR9370 8328 RETURN FNR9304('ATTRIBUTE ')+FNR9370 8340 RETURN FNR9304('LAMP ')+FNR9370 8353 ; #S,' ! **** Stat3: unknown p-code segment --- ' V1$ ' ****' 8417 RETURN 0 8420 FNEND 8421 DEF FNR8421 8429 IF L1<>35 THEN RETURN 0 8442 E1=FNR10443('#') 8454 L1=FNR2173 8462 IF NOT FNR8486 THEN ; #S;" "; 8482 RETURN 0 8485 FNEND 8486 DEF FNR8486 8488 IF NOT (L1=44 OR L1=59) THEN RETURN 0 8490 WHILE L1=44 OR L1=59 8494 ; #S,CHR$(L1); : L1=FNR2173 8495 WEND 8539 RETURN -1 8542 FNEND 8543 DEF FNR8543 8551 POSIT #1,POSIT(1)-1 8564 RETURN 0 8567 FNEND 8568 DEF FNR8568(La) LOCAL Lb$=80 8576 K3=(L1 AND 3) 8586 IF L1>199 THEN 8724 8598 IF L1>122 THEN 8647 8610 C2=FNR2173 8618 IF C2=255 THEN 8674 ELSE C2=L1+SWAP%(C2) : GOTO 8705 8647 C2=FNR2225 8655 IF (SWAP%(C2) AND 255)<>255 THEN 8705 8674 C2=C2 AND 255 8684 RETURN FNR9977(FNR9746$(-1,C2/2,K3)) 8705 RETURN FNR9977(FNR9746$(0,C2,K3)) 8724 P2=FNR2173 : IF La P2=P2*2 8733 G$=FNR9746$(0,FNR2225,K3)+'(' 8754 L3=P2 8760 WHILE P2>0 8765 IF La AND I$(A2-P2)<"" Lb$=I$(A2-P2)+":" ELSE Lb$="" 8769 IF A2>=P2 Lb$=Lb$+I$(A2-P2+La) ELSE Lb$=Lb$+"*" 8793 P2=P2-1-La 8800 G$=G$+Lb$+"," ! 8801 WEND 8804 A2=A2-L3 8814 MID$(G$,LEN(G$),1)=")" 8832 RETURN FNR9977(G$) 8842 FNEND 8843 DEF FNR8843 8851 K3=(L1 AND 3) 8861 C2=FNR2173 8869 E1=FNR9977(FNR9746$(-1,G2,K3)) 8889 IF H2=0 THEN 8986 8899 IF K3=1 THEN I2=I2+2 8914 IF K3=3 THEN I2=I2+8 8929 IF L1=122 OR K3=2 THEN C2=FNR2225 : E1=FNR9977(FNR10060$+"="+NUM$(C2)) : I2=I2+C2 8986 G2=G2+1 8994 RETURN 0 8997 FNEND 8998 DEF FNR8998 LOCAL La,Lb,Lc 9014 L1=FNR2173 9023 Lb=FNR5369 9031 Lc=FNR2173 9039 Lb=FNR9716("IF "+FNR10060$+" THEN") 9066 IF Lc=1 THEN ; #S,'GOTO ' NUM$(POSIT(1)); : L1=FNR2173 : GOTO 9223 9107 La=Lc+POSIT(1) 9119 L1=FNR2173 9127 Lb=FNR2310 9135 IF V1$="88" AND (POSIT(1)'8A' AND (POSIT(1)'eof' 9474 IF Lb=La THEN RETURN Lc$ 9489 READ Lc$ 9496 Lb=Lb+1 9505 WEND 9508 RETURN '' 9512 FNEND 9513 DEF FNR9513$(La) LOCAL Lb$=16 9529 IF La>127 THEN Lb$=FNR9596$(La-128) : GOTO 9571 9557 RESTORE 428 9560 Lb$=FNR9431$(La) 9571 IF Lb$='' THEN Lb$=FNR10138$(La) 9590 RETURN Lb$ 9595 FNEND 9596 DEF FNR9596$(La) 9606 RESTORE 723 9609 RETURN FNR9431$(La) 9619 FNEND 9620 DEF FNR9620$(La) 9630 RESTORE 307 9633 RETURN FNR9431$(La) 9643 FNEND 9644 DEF FNR9644(La) LOCAL Lb$=1,Lc 9662 Lc=POSIT(1) 9670 POSIT #1,Lc+La 9685 GET #1,Lb$ 9697 POSIT #1,Lc 9708 RETURN ASCII(Lb$) 9715 FNEND 9716 DEF FNR9716(La$) 9726 ; #S,La$+' '; 9742 RETURN 0 9745 FNEND 9746 DEF FNR9746$(La,Lb,Lc) LOCAL Ld,Le,Lf$=8 9770 Ld=Lc 9777 IF G1 AND Ld=1 THEN Ld=3 : GOTO 9812 9795 IF G1=0 AND Ld=0 THEN Ld=3 9812 IF La THEN Le=(Lb AND 32767) : GOTO 9846 9831 Le=(Lb AND 32767)/6+1 9846 IF Le/25<>0 THEN Lf$=NUM$(Le/25) ELSE Lf$='' 9875 Lf$=CHR$(65+MOD(Le,25))+Lf$ 9896 IF La THEN Lf$="L"+Lf$ : GOTO 9944 9918 IF ((SWAP%(Lb) AND 128)=128) THEN Lf$="C"+Lf$ 9944 IF Ld=3 THEN RETURN Lf$ 9956 RETURN Lf$+MID$(".%$ ",Ld+1,1) 9976 FNEND 9977 DEF FNR9977(La$) 9987 ON ERROR GOTO 10056 9990 IF H0 THEN 10173 10350 RETURN 'XFN'+NUM$(La) 10364 FNEND 10365 DEF FNR10365$ 10373 I$(H-1)=FNR10060$ 10389 I$(H)=FNR10060$ 10403 E1=FNR9977(I$(H-1)) 10422 E1=FNR9977(I$(H)) 10438 RETURN '' 10442 FNEND 10443 DEF FNR10443(La$) 10453 L1=FNR2173 10462 E1=FNR5369 10470 ; #S,La$ FNR10060$; 10488 RETURN 0 10491 FNEND 10492 DEF FNR10492(La$) LOCAL Lb,Lc 10508 Lb=2 10513 Lc=0 10517 WHILE Lb0 THEN 10832 10778 ; #S, USING CHR$(10,13)+'##### '+SPACE$(U1-T1) Lc+Lb; 10819 ; #S,'! '; 10832 IF MOD(Lb-2,4)<>0 THEN 10858 10846 ; #S,' '; 10858 ; #S,FNR2260$(ASCII(RIGHT$(La$,Lb))) ' '; 10886 Lb=Lb+1 10895 WEND 10898 ; #S, USING CHR$(10,13)+'##### '+SPACE$(U1-T1) Lc+Lb; 10939 ; #S,'! ------ End of Dump -------'; 10978 RETURN 0 10981 FNEND