0 'MVCWM3.BA is MINIVC.WM3 rewritten by Woods Martin [70235,232] 01/15/84 1 'CLUB 100 Library - 415/939-1246 BBS, 937-5039 NEWSLETTER, 932-8856 VOICE 2 'EXTF.WM3 1,4810-4818,7080 3 'XFER.WM3 2,5212,22,32,5332 4 'REPL.WM3 3,5600-5695 5 'INDE.WM3 4,5110-5198 (5600-5695 reqd) 6 'SIZE.WM3 5,7010-7030 7 'EDIT.WM3 6,5020-5042 idea Joel Hassel 8 'Orig by Terry Dettman[70076,260]-mods by Don Hergert[72235,32], Gary Bender[70375,1070], Chris Young[70136,62] 9 ' 10 MAXFILES=1:CLEAR3209:DEFINTA-Z:DEFSTRS:DIMI,J,C1,R1,C,R,F,P:CM=19:RM=20:SU="S":GOSUB7000:GOSUB5870:GOTO200 20 PRINT@83+40*(R-R1)+9*(C-C1),"";:GOSUB28 25 GOSUB30:IFP<0THENPRINTSR(X)USINGSF;S(I,J),SM;:RETURNELSEPRINTSR(X);USINGSE(F);V(I,J),SM;:RETURN 28 I=R:J=C:RETURN 30 P=ABS(T(I,J))-1:IFP<0THENRETURN 31 F=-(ABS(V(I,J))>99999999/(10^(P+1+(P=0))))OR-(P=8):IFF=0THENMID$(SE(0),1)=SE:IFPTHENMID$(SE(0),9-P,1)="." 32 RETURN 35 IFHTHENGOSUB5030:RETURNELSEPRINTSI;S;:ST=S:GOTO40 38 ST="" 40 GOSUB75:IFKTHENRETURNELSEIFS=SDTHENST="":GOTO1350 45 IFA=8THENIFLEN(ST)>0THENPRINTS" "S;:ST=MID$(ST,1,LEN(ST)-1):GOTO40ELSE1350 50 IFA=127ORA<32THEN40ELSEST=ST+S:PRINTS;:GOTO40 60 CL=CL-(J-CL)*(CL=97ANDA<=122THENS=CHR$(A-32):RETURNELSERETURN 100 PRINT@40,CHR$(J+65)MID$(STR$(I),2)SPACE$(-(I<10));:RETURN 200 U=0:H=0:GOSUB75:IFK>1THEN400ELSEIFKTHENGOSUB28:IFT(I,J)=0THEN200ELSEGOSUB4300:GOSUB2400:GOTO200 210 ONINSTR("/>!#",S)+1GOSUB220,5000,5100,5400,5450:IFK>1THEN400ELSE200 220 IFINSTR("1234567890.+-(@",S)THEN4000ELSEIFA>31ANDA<>127THEN3000ELSERETURN 400 X=0:GOSUB20 401 C=C-(K=2)+(K=3)-(K=6)*((C=C1)*4+(C<>C1)*(C-C1))+(K=7)*((C=C1+3)*4-(C<>C1+3)*(C-C1-3))+(K=10)*C-(K=11)*(CL-C) 402 R=R+(K=4)-(K=5)-(K=8)*((R=R1)*6+(R<>R1)*(R-R1))+(K=9)*((R=R1+5)*6-(R<>R1+5)*(R-R1-5))+(K=12)*R-(K=13)*(RL-R) 405 GOSUB2400:GOTO200 1000 CLS:PRINT:PRINT"mvc";:FORI=C1TOC1+3:PRINTUSINGSY;CHR$(65+I);:NEXT:PRINT 1040 X=0:FORI=R1TOR1+5:PRINTUSINGSR+"###"+SM;I;:FORJ=C1TOC1+3:GOSUB25:NEXT:IFIRMORC<0ORC>CMTHENBEEP:R=-R*(R>=0ANDR<=RM)-RM*(R>RM):C=-C*(C>=0ANDC<=CM)-CM*(C>CM) 2430 GOSUB28:GOSUB60 2460 IFR-R1>5THENR1=R-5:B=1ELSEIFR-R1<0THENR1=R:B=1 2470 IFC-C1>3THENC1=C-3:B=1ELSEIFC-C1<0THENC1=C:B=1 2500 IFBTHENGOSUB1000 2510 GOSUB1300:S="":RETURN 3000 U=0:IFA=34THENS="" 3010 GOSUB35:IFST=""THENS=ST:RETURNELSEGOSUB65:S(R,C)=ST 3030 GOSUB2400:RETURN 4000 U=1:GOSUB35:IFST=""THENS=ST:RETURNELSEGOSUB28:S(I,J)=ST:T=ABS(T(I,J)):IFT=0THENT=G 4010 FORX=1TOLEN(ST):A=ASC(MID$(ST,X)):IF(A<48+6*(X=1)ORA>57)ANDA<>46THENT=-T:X=256 4020 NEXT:T(I,J)=T:GOSUB4300:PRINTSI;:GOSUB2400:RETURN 4300 IFT(I,J)>0THENVI=VAL(S(I,J))ELSEST=S(I,J):VI=0:IFT(I,J)<0THENSC="+":L=1:N=0:GOSUB4320 4310 V(I,J)=VI:RETURN 4320 GOSUB4500:IFQ=1THENRETURNELSEIFSL="("THENW=0:GOSUB4900:GOTO4350ELSEIFINSTR(SN,SL)<>0THENSC=SL:GOTO4320ELSE4340 4340 A=ASC(SL):IFA>=65ANDA<=90THENVX=V(VAL(MID$(SL,2)),ASC(SL)-65)ELSEIFA=64THENGOSUB4800ELSEVX=VAL(SL) 4350 A=INSTR(SN,SC):IFA<2ORA=6THENVI=VI+VXELSEIFA=2THENVI=VI-VXELSEIFA=3THENVI=VI*VXELSEIFA=4THENVI=VI/VX 4360 IFA=5THENVI=VI^VXELSEIFA=7THENVY=VI:VZ=VX 4370 GOTO 4320 4500 IFL>LEN(ST)THENQ=1:RETURNELSEQ=0:SL=MID$(ST,L,1):L=L+1:IFINSTR(SN,SL)<>0THENRETURNELSEIFSL=")"THENQ=1:RETURN 4540 IFL>LEN(ST)THENRETURNELSES=MID$(ST,L,1):IFINSTR(SN,S)<>0ORS=")"THENRETURNELSEL=L+1:IFS=","THENRETURN 4541 SL=SL+S:GOTO4540 4800 W=INSTR(SG,SL+" "):IFW=0THENGOSUB9040:RETURNELSEW=W/7+1 4802 GOSUB4900:IFW=5ORW=6THENRETURNELSEIFW=1THENVX=ABS(VX)ELSEIFW=2THENVX=INT(VX)ELSEIFW=3THENVX=SQR(VX) 4804 IFW=4THENVI=SGN(VI)*(INT(ABS(VI)*10^VX+.5))/10^VX:VX=1 4810 IFW=7THENVX=EXP(VX)ELSEIFW=8THENVX=LOG(VX)ELSEIFW=9THENVX=SIN(VX)ELSEIFW=10THENVX=COS(VX)ELSEIFW=11THENVX=TAN(VX) 4812 IFW=12THENVX=ATN(VX)ELSEIFW=13THENVX=FIX(VX)ELSEIFW=14THENIFVYVZTHENVX=VYELSEVX=VZ 4816 IFW=16THENVX=VYMODVZELSEIFW=17THENVX=-(VYVZ) 4818 IFW=20THENVX=-(VY>=VZ)ELSEIFW=21THENVX=-(VY=VZ)ELSEIFW=22THENVX=-(VY<>VZ)ELSEIFW=23THENVX=3.1415926536 4840 RETURN 4870 GOSUB4890:CA=CB:RA=RB:GOSUB4890:L=L+1 4872 VI=0:X=0:IFCA=CBTHEN4874ELSEIFRA=RBTHEN4876ELSEGOSUB9045:GOTO4878 4874 FORRI=RATORB:VI=VI+V(RI,CA):X=X-(T(RI,CA)<>0):NEXT:GOTO4878 4876 FORCI=CATOCB:VI=VI+V(RA,CI):X=X-(T(RA,CI)<>0):NEXT 4878 IFW=6THENVI=VI/X:RETURNELSERETURN 4890 L=L+1:GOSUB4500 4895 CB=ASC(SL)-65:RB=VAL(MID$(SL,2)):RETURN 4900 SO(N)=SC:SC=SL:VS(N)=VI:W(N)=W:N=N+1:VI=0:IFW=5ORW=6THENGOSUB4870ELSEL=L-(W>0):GOSUB4320 4910 N=N-1:VX=VI:W=W(N):VI=VS(N):SC=SO(N):RETURN 5000 CLOSE:PRINTSI"cmd: Ed In De Re Bl Fm Gl Pr St Cl Me ";:U=1:E=0:GOSUB75 5010 ONINSTR("EIDRBFGPSCM",S)+1GOSUB5880,5020,5110,5150,5600,5050,5500,5550,5700,5200,5850,5870:RETURN 5020 H=1:ST=S(R,C):IFT(R,C)THENGOSUB4000ELSEGOSUB3000 5022 GOTO5890 5030 SX=ST:PRINT@40,"edt";:H=LEN(SX) 5032 H=H-(H<0)+(H>LEN(SX)):PRINTSI;SX;:PRINT@H,"";:GOSUB75:IFK=1THENST=SX:RETURN 5034 IFKTHENH=H+(K=3)-(K=2)+H*(K=10)-(LEN(SX)-H)*(K=11):GOTO5032 5036 IFA>31ANDA<>127THENSX=LEFT$(SX,H)+S+MID$(SX,H+1):H=H+1:GOTO5032 5038 IFA=27THENST="":RETURN 5040 IFA=8THENSX=LEFT$(SX,H-1-(H=0))+MID$(SX,H+1):H=H-1ELSEIFA=127THENSX=LEFT$(SX,H)+MID$(SX,H+2) 5042 GOTO5032 5050 PRINTSI;"Blank ";:GOSUB75:IFKTHENGOSUB65:GOTO3030ELSE5880 5070 PRINTSIUSING"wm3 CM=! RM=### P=!";CHR$(CM+65),RM,SU;:RETURN 5100 PRINTSI"GOTO: ";:U=1:GOSUB38:IFLEN(ST)<2THEN5880 5101 X=0:GOSUB20:C=ASC(ST)-65:R=VAL(MID$(ST,2)):GOSUB2400:GOTO5890 5110 ST="Insert":GOSUB5190:IFCA=0THEN5880ELSE:IFCA=82THEN5130 5120 IFCL=CMTHEN5180ELSEZ=1:FORY=CL+1TOC+1STEP-1:CW=Y-1:GOSUB5192:NEXT:Y=R:GOSUB5168:R=Y:GOTO5198 5130 IFRL=RMTHEN5180ELSEZ=2:FORY=RL+1TOR+1STEP-1:RW=Y-1:GOSUB5194:NEXT:Y=C:GOSUB5178:C=Y:GOTO5198 5150 ST="Delete":GOSUB5190:IFCA=0THEN5880ELSEIFCA=82THEN5170 5160 Z=1:IFC0):R=RE:GOTO5198 5168 FORR=0TORL:GOSUB65:NEXT:RETURN 5170 Z=2:IFR0):GOTO5198 5178 FORC=0TOCL:GOSUB65:NEXT:RETURN 5180 E=9:GOSUB5280:GOTO5880 5190 PRINTSI;ST" Col Row ";:GOSUB75:CA=ASC(S):IFCA=67ORCA=82THENRETURNELSECA=0:RETURN 5192 RW=0:RX=RL:RY=0:CX=CW:CY=Y:GOTO5196 5194 CW=0:CX=CL:CY=0:RX=RW:RY=Y 5196 CZ=CY:RZ=RY:GOSUB5606:RETURN 5198 Z=0:GOTO5400 5200 D=0:PRINTSI"Store: # L S Q ";:GOSUB75:ONINSTR("#LSQ",S)+1GOTO5880,5212,5300,5220,5800 5212 D=1:PRINTSI"Data: L S ";:GOSUB75:IFS="L"THEN5300ELSEIFS<>"S"THEN5880 5220 CLOSE:PRINTSI"Save File:";:GOSUB38:IFST=""THEN5880ELSESC=ST:IFD=0THENRA=0:RB=RL:CA=0:CB=CL:GOTO5230 5222 GOSUB5790:IFST=""ORCB=0))" "; 5255 IFDANDT>0THENPRINT#1,MID$(STR$(V),1-(V>=0))ELSEPRINT#1,SP;S(I,J);SP 5260 GOSUB100:NEXT:NEXT:PRINT#1,"-1 -1 0 END"SZ:CLOSE:GOSUB1350:GOTO5890 5270 GOSUB5280:GOTO5220 5280 IFE=9THENS="model too big"ELSES="invalid file" 5290 GOSUB9060:RETURN 5300 CLOSE:CLS:PRINT@80,"";:FILES:PRINTSJ"Load File:";:GOSUB38:IFST="" THEN5865 5330 OPENSTFORINPUTAS1:INPUT#1,RA,CA,RB,CB 5332 IFDTHENIFRA=-1THENRO=R:CO=C:GOTO5350ELSE5340 5334 IFRA<0ORRB<1ORRB>9ORCB<0ORCB>1THEN5340ELSERL=RA:CL=CA:G=RB:O=CB:IFRL<=RMANDCL<=CMTHENR=0:RO=0:C=0:CO=0:GOTO5350 5335 E=9 5340 GOSUB5280:GOTO5300 5350 IFEOF(1)THEN5370ELSEINPUT#1,I,J,T,ST:IFI>=0THENI=I+RO:J=J+CO:T(I,J)=T:S(I,J)=ST:GOSUB60:GOSUB100:GOTO5350 5370 CLOSE:IFD=0THENR=0:C=0:R1=0:C1=0 5400 PRINTSI"Recalc by "SQ(O);:IFOTHEN5420 5410 FORJ=0TOCL:FORI=0TORL:GOTO5425 5420 FORI=0TORL:FORJ=0TOCL 5425 GOSUB5430:NEXT:NEXT:GOTO5865 5430 GOSUB100:IFT(I,J)THENGOSUB4300:RETURNELSERETURN 5450 IFT(R,C)=0THEN5880ELSES(R,C)=MID$(STR$(V(R,C)),1-(V(R,C)>=0)):T(R,C)=ABS(T(R,C)):GOTO5890 5500 IFT(R,C)=0THENPRINTSI"not val";:GOTO5875ELSEGOSUB5510:T(R,C)=SGN(T(R,C))*(VAL(S)+1):GOTO5890 5510 PRINTSI"Format: Decimal 0-7 or S ";:GOSUB75:IFS="S"THENS="8" 5520 IFS<"0"ORS>"8"THENBEEP:GOTO5510ELSERETURN 5550 PRINTSI"Global: O F ";:GOSUB75:IFS="O"THENGOSUB5565ELSEIFS<>"F"THEN5880ELSEGOSUB5510:G=VAL(S)+1 5560 GOTO5890 5565 PRINTSI"Recalc Order: R C ";:GOSUB75:O=-(S="R"):RETURN 5600 Z=0:SL=CHR$(C+65)+MID$(STR$(R),2):CO=C:RO=R:PRINTSI"Source: ";:GOSUB5692:CW=CO:RW=RO 5602 GOSUB5690:CX=CO:RX=RO:IFEOR(CW<>CXANDRW<>RX)ORRW>RX ORCW>CXTHEN5608 5604 SL="":PRINT" Target: ";:GOSUB5692:IFST=""THEN5608ELSECY=CO:RY=RO:GOSUB5690:CZ=CO:RZ=RO 5606 IFEOR(CY<>CZANDRY<>RZ)ORCZ>CMORRZ>RMORCY>CZORRY>RZORCZ>CMORRZ>RMTHEN5608ELSERT=RY:CT=CY:GOTO5610 5608 S=SC+"..."+SL+"90THEN5670ELSERI=VAL(MID$(SL,2)) 5657 IF(Z=1AND(CI-65)"R"THEN5670 5665 CI=CI+CO:RI=RI+RO:IFCI<65ORRI<0THENSL="err"ELSESL=CHR$(CI)+MID$(STR$(RI),2) 5670 SK=SK+SL:IFL<=LEN(ST)THEN5655ELSEST=SK:RETURN 5690 PRINT"..."; 5692 SC=SL:PRINTSL;STRING$(LEN(SL),8);:GOSUB38:IFST=""THENPRINTSL;ELSECO=ASC(ST)-65:RO=VAL(MID$(ST,2)):SL=ST 5694 E=((CO>CM)+(RO>RM)):RETURN 5695 IFZTHENRETURNELSE5865 5700 PRINTSI"Print: Printer, Device ";:GOSUB75:IFS="P"THENSV="LPT:":GOTO5710ELSEIFS<>"D"THEN5880 5705 PRINT"Spec: ";:GOSUB38:IFINSTR(ST,":")=0ORLEFT$(ST,4)="RAM:"THEN5880ELSESV=ST 5710 GOSUB5790:IFST=""THEN5880 5720 OPENSVFOROUTPUTAS1:FORI=RTORB:FORJ=CTOCB:GOSUB30:IFP<0THENPRINT#1,USINGSF;S(I,J);ELSEPRINT#1,USINGSE(F);V(I,J); 5740 NEXT:PRINT#1,"":NEXT:PRINT#1,SZ;:CLOSE:GOTO5890 5790 PRINT SI"Lower right ";:GOSUB38:IFST=""THENRETURNELSESL=ST:GOSUB4895:RETURN 5800 S="Quit: ":GOSUB5860:IFS="Y"THENMENUELSE5880 5850 S="Clear: ":GOSUB5860:IFS="Y"THENRUNELSE5880 5860 S=S+" Confirm=Y Abort=":GOSUB9060:RETURN 5865 GOSUB1000:GOTO5890 5870 GOSUB1000:GOSUB5070:PRINTUSING" G# \ \ #####M ####S";G-1,SQ(O),FRE(0),FRE(""); 5875 BEEP:FORX=1TO4000:NEXT 5880 BEEP 5890 GOSUB1300 5895 S="":RETURN 7000 SA=CHR$(13)+CHR$(28)+CHR$(29)+CHR$(30)+CHR$(31)+CHR$(1)+CHR$(6)+CHR$(20)+CHR$(2)+CHR$(17)+CHR$(18)+CHR$(23)+CHR$(26) 7010 U=1:M=(CM+1)*RM 7020 CLS:RM=M/(CM+1):GOSUB5070:PRINT" "Z"THENBEEP:GOTO7020 7030 CM=ASC(S)-65:PRINT:PRINT" Precision:S or D ";:GOSUB75:SU=CHR$(83+15*(S="D")):GOTO7020 7040 IFSU="S"THENDEFSNGVELSEDEFDBLV 7050 DIML,ST,Q,SL,SC,CA,RA,VX,W,N,VI,CB,RB,X,T(RM,CM),S(RM,CM),V(RM,CM),VS(10),SO(10),W(10),SR(1),SE(1),SQ(1) 7070 SP=CHR$(34):SN="+-*/^(,":SD=CHR$(27):SZ=CHR$(26):SG="@ABS @INT @SQRT @ROUND @SUM @AVG " 7080 SG=SG+"@EXP @LN @SIN @COS @TAN @ATAN @FIX @MIN @MAX @MOD @< @<= @> @>= @= @<> @PI " 8100 SR=SD+CHR$(112):SM=SD+CHR$(113):SY=SR+". ! ."+SM:SB=SD+"K":SJ=SD+"Y ":SI=SJ+SB:SQ(1)="row":SQ(0)="col":G=1 8110 SE="#########\\":SE(0)=SE:SE(1)="#####^^^^\\":SF="\ \\\":SR(0)="":SR(1)=SR:ONERRORGOTO9000:RETURN 9000 E=ERR:IFERL<5000THEN9020ELSEIFERL=5230THENRESUME5270ELSEIFERL=5330ORERL=5350THENRESUME5340 9010 IFERL=5010ORERL=5200THENS="Cmd NA":GOSUB9060ELSEGOSUB9050 9015 RESUME5890 9020 IFERL<4300THENGOSUB9050ELSEGOSUB9040 9030 PRINTSI;ST;SJ;:RESUME200 9040 ST=LEFT$(ST,L-1):R=I:C=J:V(I,J)=0:VX=0:GOSUB2400 9045 S=ST+"";:GOSUB75:RETURN