1 CLS:PRINT@42,"SECurities PoRTfolio v.2.1.":PRINT"(c) 1984,1985 by Michael A. Lampert":PRINT"All rights reserved":PRINT"Royalty free license for personal use granted members of the Model 100 SIG.":FORI=1TO2500:NEXT 2 PRINT"NO WARRANTIES, EXPRESS OR IMPLIED. USE AT YOUR OWN RISK; I DISCLAIM ALL LIABILITY, INCLUDING FOR CONSEQUENTIAL DAMAGES":FORI=1TO2500:NEXT:GOTO9100 3 CLS:PRINTP$;:PRINT@280,T9;:PRINT@300,"CLOS.DATE";:PRINT@315,"P/L";:PRINTQ$;:PRINTE$+"T";:PRINT@0,:FORI=1TOLC:PRINTSC(I);TAB(20);CD$(I);TAB(30);USINGPT$;PL(I);:PRINTTAB(40);:IFIMOD7THENNEXTELSEFORJ=1TO2000:NEXT:NEXT 4 FORJ=1TO2000:NEXT:PRINTU$;:RETURN 5 CLS:SC%=1:PRINTP$;:PRINT@280," #";T9;:PRINT@299,"UNTS";:PRINT@304,"PUR.PR.";:IFM%=5THENPRINT@312,"CUR.PR."; 6 PRINTE$+"T";:PRINTQ$;:PRINT@0,:FORI=SC%TOC:IFEX(I)=EX(I-1)THEN7ELSEFORJ=1TO2000:NEXT:PRINTTAB(5);EX$(EX(I)) 7 PRINTI;S(I);TAB(20);NU(I);TAB(25);PP(I);:IFM%=5THENINPUTAP(I):NEXT:ELSEPRINTTAB(40);:IFIMOD7THENNEXTELSEFORJ=1TO2000:NEXT:NEXT 8 FORJ=1TO2000:NEXT:PRINTU$;:RETURN 9 M%=VAL(INKEY$):IFM%<1ORM%>7GOTO9ELSERETURN 10 FORI=1TO7:PRINTSTRING$(40,239);:NEXT:LINE(0,56)-(239,63),1,BF:RETURN 19 PRINT@80,"INPUT BY TAPE?":ONINSTR(" NnYy",INKEY$)+1GOTO19,19,22,22,20,20 20 PRINT@120,"READY TAPE-PRESS TO START":M$=INKEY$:IFM$="c"ORM$="C"THENOPEN"CAS:STKLST"FORINPUTAS1:GOTO25:ELSE20 22 PRINT@120,"INPUT FROM RAM?":ONINSTR(" NnYy",INKEY$)+1GOTO22,22,30,30,24,24 24 OPEN"STKLST"FORINPUTAS1 25 INPUT#1,C,LC,HC:PRINT"READING UNLIQUIDATED DATA":FORI=1TOC:INPUT#1,S(I),PP(I),LS$(I),NU(I),PD$(I),EX(I):NEXT:PRINT"READING LIQUIDATED DATA" 26 FORI=1TOLC:INPUT#1,SC(I),CD$(I),PL(I),OD(I):NEXT:PRINT"READING HISTORIC DATA":FORI=1TOHC:INPUT#1,HD$(I),HU(I),HL(I),HT(I):NEXT:CLOSE 28 CLS:BEEP:PRINT"FINISHED READING":PRINT"STANDBY TO CHECK INPUT":BEEP:FORJ=1TO2000:NEXT:GOSUB3:GOSUB5 30 CLS:GOSUB10:PRINTP$;:PRINT@15,"INPUT MENU":PRINTTAB(6);"1. ADD A";T9:PRINTTAB(6);"2. CHANGE A";T9:PRINTTAB(6);"3. LIQUIDATE A";T9 32 PRINTTAB(6);"4. DELETE A";T9:PRINTTAB(6);"5. VALUE THE PORTFOLIO":PRINTTAB(4);"CHOOSE A NUMBER":PRINTQ$;:GOSUB9:ONM%GOTO60,50,160,150,200 45 GOTO30 50 CLS:GOSUB5:INPUT"CHANGE WHICH SECURITY";CE:IFCE<1THEN30 60 IFCE=0ORCE>CTHENC=C+1:CE=C:IFM%=1THENCLS 65 INPUT"SECURITY NAME ";I1$:IFLEN(I1$)>20THENPRINT" *";T9;" NAME EXCEEDS 20 CHR. LIMIT * ":BEEP:GOTO65 70 INPUT"ONG OR HORT";I2$:I2$=LEFT$(I2$,1):IFI2$="L"ORI2$="S"THEN75ELSEIFI2$="l"ORI2$="s"THENI2$=CHR$(ASC(I2$)-32):GOTO75:ELSEPRINT" * WRONG L-S * ":BEEP:GOTO70 75 PRINT"EXCHANGE:";:FORI=1TO6:PRINT" <";I;">";EX$(I);:NEXT:INPUTI3:IFI3<>ABS(I3)ORI3>6THENPRINT" * WRONG EXCHANGE * ":BEEP:GOTO75 80 INPUT"PURCHASE PRICE";I4!:IFI3=5ANDI4!>2THENPRINT" * BOND PRICE SHOULD BE ALL IN CENTS * ":BEEP:GOTO80 85 INPUT"NUMBER OF UNITS";I5:IFI5<>ABS(I5)THENPRINT" * WRONG NUMBER OF UNITS * ":BEEP:GOTO85:ELSEIFI3=4ANDI4!*I5<20THENPRINT" * NUMBER OF UNITS TIMES OPTION PRICE PRODUCES ODD RESULT * ":BEEP:GOTO80 90 IFM%<>2THENPD$=DATE$ELSEINPUT"PURCHASE DATE";PD$:GOSUB9000:I=CE:GOTO115 95 FORI=1TOC:IFI3CTHENI=C 115 S(I)=I1$:LS$(I)=I2$:EX(I)=I3:PP(I)=I4!:NU(I)=I5:PD$(I)=PD$:CE=0:CLS:GOSUB5:GOTO30 150 GOSUB5:INPUT"DELETE WHICH ENTRY <0 TO EXIT>";E:IFE<=0ORE>CTHEN30ELSEGOTO175 160 CLS:GOSUB5:INPUT"LIQUIDATE WHICH ENTRY <0 TO EXIT>";E:IFE=<0ORE>CTHEN30ELSESC(LC+1)=S(E):CD$(LC+1)=TD:OD(LC+1)=PD$(E) 170 INPUT"NET PROCEEDS OF SALE= ";PL(LC+1):LC=LC+1:IFLS$(E)="L"THENPL(LC)=PL(LC)-(PP(E)*NU(E)):GOSUB3:ELSEPL(LC)=(PP(E)*NU(E))-PL(LC):GOSUB3 175 FORI=ETOC:S(I)=S(I+1):PD$(I)=PD$(I+1):EX(I)=EX(I+1):PP(I)=PP(I+1):LS$(I)=LS$(I+1):NU(I)=NU(I+1):NEXT:C=C-1:GOSUB5:E=0:GOTO30 200 CLS:GOSUB10:PRINTP$;:PRINT@7,"PRICES BY:":PRINTTAB(5);"1. KEYBOARD":PRINTTAB(5);"2. ACOUSTIC CUP":PRINTTAB(5);"3. DIRECT CONNECT":PRINTTAB(5);"4. QUOTE.DO":PRINTQ$;:GOSUB9:CLS:IFM%=1THENM%=5:GOSUB5:ELSEIFM%>4THENGOTO200ELSEONM%GOSUB200,210,210,410 205 CLOSE:GOTO525 210 PRINT"PHONE # STORED IN 260":FORI=1TOC:II=1:IFEX(I)=6THEN250ELSECT=I 220 IFMID$(S(I),II,1)<>"-"THENII=II+1:GOTO220ELSEII=II-1 230 A$=LEFT$(S(I),II):IFEX(I)<4THENA$=","+A$ELSEIFEX(I)<5THENA$="-"+A$ELSEA$="/"+A$ 240 GP$(I)=A$:A$="":NEXT 250 PRINT"FORCED TRASH COLLECTION":M1=FRE(A$):PRINTFRE(9);M1:IFM1<300THENPRINT"Not enough string space for phone to work":STOP:ELSEPH$="<==^M=^M?L=D1^M=d1^M?@=C 60942^M?W=DJNS^M?P==PASSWORD^M>" 260 IFM%=3THENPH$="5551212"+PH$ELSEINPUT"Dial phone, & hit enter when ready";M 270 M=VARPTR(PH$):AD=PEEK(M+1)+(PEEK(M+2)*256):CALL21200:CALL21293,0,AD 280 OPEN"MDM:7I1D"FORINPUTAS1:OPEN"MDM:7I1D"FOROUTPUTAS2:OPEN"QUOTE"FOROUTPUTAS3 350 PRINT"STARTING QUOTES":FORI=1TO4000:NEXT:FORI=1TOCT:PRINTGP$(I):PRINT#2,GP$(I) 370 A=ASC(INPUT$(1,1)):IFA<>19THENPRINT#3,CHR$(A);:GOTO370 380 NEXT:PRINT"SIGNING OFF":ST$=CHR$(7):PRINT#2,"DISC" 390 Z=INPUT$(1,1):IFZ<>ST$THEN390 400 CLOSE:CALL21179:FORI=1TOCT:GP$(I)="":NEXT 410 OPEN"QUOTE"FORINPUTAS1:I=0:PRINT"Digesting Quotes" 415 INPUT#1,Z$:IFINSTR(Z$,"SYMBOL")THENPRINT"STOCK SYMBOL ERROR TRAP IN 415--CHECK QUOTE.DO-STOCK #":PRINTI+1:STOP:ELSEIFLEFT$(Z$,9)="BID/CLOSE"THENCL$=Z$:GOTO415:ELSEIFLEFT$(Z$,4)<>"LAST"THEN415ELSELA$=Z$ 420 IFLEN(LA$)<15THENLA$=CL$ELSEIY=ASC(MID$(LA$,15,1)):IFIY<48ORIY>57THENLA$=CL$ 430 I=I+1:AP(I)=VAL(MID$(LA$,15,2)):IX=INSTR(15,LA$,"/"):IFIX=0GOTO450 435 IFIX<18THENAP(I)=0 440 IFVAL(MID$(LA$,IX+2,1))=0THENLL=1ELSELL=2 445 AP(I)=AP(I)+(VAL(MID$(LA$,IX-2,2))/VAL(MID$(LA$,IX+1,LL))) 450 IFEX(I)=4THENAP(I)=AP(I)*100ELSEIFEX(I)=5THENAP(I)=AP(I)/100 455 IFI=CTHENRETURNELSEIFEX(I+1)<6THEN415 460 SC%=I+1:M%=5:CLS:GOSUB6:RETURN 525 NQ=0:CLS:PRINT"I'M CALCULATING":PL(0)=0:DP(0)=0:AP(0)=0:FORI=1TOLC:PL(0)=PL(0)+PL(I):NEXT:FORI=1TOC:IFLS$(I)="L"THENPR=AP(I)-PP(I)ELSEPR=PP(I)-AP(I) 530 DP(I)=PR*NU(I):DP(0)=DP(0)+DP(I):AP(0)=AP(0)+(AP(I)*NU(I)):NEXT 600 CLS:GOSUB10:PRINTP$;:PRINT@9,"OUTPUT MENU":PRINTTAB(6);"1. SCREEN":PRINTTAB(6);"2. PRINTER":PRINTTAB(6);"3. CASSETTE":PRINTTAB(6);"4. RAM FILE":PRINTTAB(6);"5. ADD TO HISTORY":PRINTTAB(6);"6. HISTORIC OUTPUT":PRINTTAB(6);"7. END";:PRINTQ$;:GOSUB9 605 CLS:ONM%GOTO610,700,800,950,975,999,900 610 CLS:PRINTP$;:PRINT@280,T9;:PRINT@300,T7;:PRINT@310,"PR";:PRINTE$+"T";:PRINTQ$;:PRINT@0,:FORI=1TOC:IFEX(I)=EX(I-1)THEN620ELSEFORJ=1TO2000:NEXT:PRINTTAB(5);EX$(EX(I)) 620 PRINTS(I);TAB(19);AP(I);:PRINTTAB(30);:PRINTUSINGPT$;DP(I):IFIMOD6THENNEXT:ELSEFORJ=1TO2000:NEXTJ,I 630 PRINTTAB(2);"TTL";T5;" PROF/";T3; "=";USINGPT$;DP(0):PRINTT0;:INPUTB:PRINTU$;:CLS:GOSUB3:PRINTTAB(2);"TTL";T6;" PROF/";T3;"= ";USINGPT$;PL(0) 635 PRINT"TTL";T5;" PROF/";T3;"= ";USING PT$;DP(0):PRINTTAB(9);T2;T4;"/";T3;"= ";USINGPT$;PL(0)+DP(0):PRINTTAB(7);T2;" CURRENT VALUE =";USINGPT$;AP(0):PRINTT0;:INPUTM%:GOTO600 700 PRINT@0,"WANT";T6;" DETAIL?":M$=INKEY$:IFINSTR(" NnYy",M$)<2THEN700:ELSELPRINT:LPRINTTAB(40-LEN(TD)\2);TD:LPRINT:LPRINTTAB(40-LEN(T)\2);T:LPRINT:LPRINTTAB(40-LEN(T5)\2);T5 710 LPRINT:LPRINTT9;:LPRINTTAB(26);"L-S";TAB(31);"UNITS";TAB(40);"PURC.PR.";TAB(50);T7;TAB(59);"PURCH.DATE";TAB(74);"+ / -" 715 FORI=1TOC:IFEX(I)=EX(I-1)THEN720ELSELPRINT:LPRINTTAB(4);EX$(EX(I)):LPRINT 720 LPRINTS(I);TAB(27);LS$(I);TAB(30);NU(I);TAB(39);PP(I);TAB(49);AP(I);TAB(60);PD$(I);TAB(71);:LPRINTUSINGPT$;DP(I):NEXT 730 LPRINT:T1=T2+T5:IFDP(0)>=0THENT1=T1+T4+" = ":ELSET1=T1+" "+T3+" = " 740 LPRINTTAB(70-LEN(T1));T1;:LPRINTTAB(71);:LPRINTUSINGPT$;DP(0):IFM$="N"ORM$="n"GOTO770 750 LPRINT:LPRINT:LPRINTTAB(40-INT(LEN(T6)/2));T6:LPRINT:LPRINTT9;TAB(28);"OPENING DATE";TAB(50);"CLOSING DATE";TAB(74);"+ / -":LPRINT 760 FORI=1TOLC:LPRINTSC(I);TAB(30);OD(I);TAB(52);CD$(I);TAB(71);:LPRINTUSINGPT$;PL(I):NEXT 770 LPRINT:IFPL(0)>=0THENT1=T2+T6+T4+" = "ELSET1=T2+T6+" "+T3+" = " 775 LPRINTTAB(70-LEN(T1));T1;:LPRINTTAB(71);:LPRINTUSINGPT$;PL(0) 780 LPRINT:IFDP(0)+PL(0)>=0THENT1=T2+T4+" = "ELSET1=T2+" "+T3+" =" 790 LPRINT:LPRINTTAB(69-LEN(T1));T1;:LPRINTTAB(71);:LPRINTUSINGPT$;DP(0)+PL(0):LPRINT:LPRINTTAB(48);T2;" CURRENT VALUE = ";:LPRINTUSINGPT$;AP(0):GOTO600 800 PRINT@0,"READY TAPE-PRESS TO START";:M$=INKEY$:IFM$<>"C"ANDM$<>"c"THEN800 810 OPEN"CAS:STKLST"FOROUTPUTAS1:GOTO955 900 CLS:IFFS=1THENPRINT"GOODBYE":BEEP:STOP:ELSEPRINT"YOU NEED TO SAVE DATA":BEEP:PRINTT0;:INPUTB:GOTO600 950 OPEN"STKLST"FOROUTPUTAS1 955 PRINT#1,C;",";LC;",";HC:CLS:PRINT"WRITING";T5;" DATA":FORI=1TOC:PRINT#1,S(I);",";PP(I);",";LS$(I);",";NU(I);",";PD$(I);",";EX(I):NEXT:PRINT"WRITING";T6;" DATA" 960 FORI=1TOLC:PRINT#1,SC(I);",";CD$(I);",";PL(I);",";OD(I):NEXT:PRINT"WRITING HISTORIC DATA" 970 FORI=1TOHC:PRINT#1,HD$(I);",";HU(I);",";HL(I);",";HT(I):NEXT:M$="Z":CLOSE:BEEP:FORI=1TO2500:NEXT:BEEP:FS=1:GOTO600 975 PRINT@0,"IS TODAY A WEEK ENDING DAY?":M$=INKEY$:IFM$="N"ORM$="n"THENHD$(HC+1)=TD:GOTO980:ELSEIFM$="Y"ORM$="y"THENHD$(HC+1)=TD+"+":GOTO980:ELSE975 980 HC=HC+1:HU(HC)=DP(0):HL(HC)=PL(0):HT(HC)=DP(0)+PL(0):GOTO600 999 PRINT@0,"ABLE, RAPH, OR ETURN TO MAIN OUTPUT MENU?":M$=INKEY$:IFM$="T"ORM$="t"THEN1010ELSEIFM$="G"ORM$="g"THEN1100ELSEIFM$="R"ORM$="r"THEN600ELSE999 1010 PRINT@40,"CREEN OR

RINTER?":M$=INKEY$:IFM$="S"ORM$="s"THEN1020ELSEIFM$="P"ORM$="p"THEN1060ELSE1010 1020 PRINT@80,T8:M$=INKEY$:IFINSTR(" NnYy",M$)<2THEN1020:ELSECLS:PRINTP$;:PRINT@280,"DATE";:PRINT@288,"UNLIQ. P/L";:PRINT@300,"LIQUID. P/L";:PRINT@312,"TTL P/L";:PRINTE$+"T";:PRINTQ$;:PRINT@0,:IFASC(M$)>96THENM$=CHR$(ASC(M$)-32) 1030 FORI=1TOHC:IFM$="N"ORRIGHT$(HD$(I),1)="+"THEN1040ELSE1050 1040 PRINTHD$(I);TAB(10);HU(I);TAB(21);HL(I);TAB(39-LEN(STR$(HT(I))));HT(I);:IFIMOD6=0THENPRINTT0;:INPUTB 1050 NEXT:PRINTU$:PRINTT0;:INPUTM%:CLS:GOTO999 1060 IF(INP(187)AND6)<>2THENPRINT"PRINTER NOT READY":PRINTT0;:INPUTB:GOTO600 1063 PRINT@80,T8:M$=INKEY$:IFINSTR(" NnYy",M$)<2THEN1063 1065 T1="HISTORIC REPORT":LPRINTTAB(40-LEN(T1)\2);T1:LPRINT:LPRINT"DATE";TAB(15);T5;" P/L";TAB(35);T6;" P/L";TAB(55);T2;T4;"/";T3:IFASC(M$)>96THENM$=CHR$(ASC(M$)-32) 1070 LPRINT:FORI=1TOHC:IFM$="N"ORRIGHT$(HD$(I),1)="+"THEN1080ELSE1090 1080 LPRINTHD$(I);:LPRINTTAB(15);:LPRINTUSINGPT$;HU(I);:LPRINTTAB(35);:LPRINTUSINGPT$;HL(I);:LPRINTTAB(55);:LPRINTUSINGPT$;HT(I) 1090 NEXT:CLS:GOTO999 1100 PRINT@80,T8:M$=INKEY$:IFINSTR(" NnYy",M$)<2THEN1100ELSEHA=1000000:IFASC(M$)>96THENM$=CHR$(ASC(M$)-32) 1110 FORI=1TOHC:IFM$="N"ORRIGHT$(HD$(I),1)="+"THENGOSUB1250 1120 NEXT:R=HH-HA:G!=70/R:F=0:GOSUB1300:LPRINTTAB(0) 1130 FORI=1TOHC:IFM$<>"N"ANDRIGHT$(HD$(I),1)<>"+"THEN1190 1135 FORJ=0TO70:GP$(J)=" ":NEXT 1140 G1=INT(G!*(HL(I)-HA)):G2=INT(G!*(HU(I)-HA)):G3=INT(G!*(HT(I)-HA)):IFG3=G2THENG2=G2+1ELSEIFG2<0THENG2=0ELSEIFG2>69THENG2=69 1143 IFG3<0THENG3=0ELSEIFG3>69THENG3=69 1145 IFG1<0THENG1=0ELSEIFG1>69THENG1=69 1150 IFG3=G1THENG1=G1+1 1160 IFG1=G2THENG1=G1+1:GOTO1150 1170 GP$(G3)="T":GP$(G2)="U":GP$(G1)="L" 1180 LPRINTHD$(I);TAB(9);"I";:FORJ=0TO69:IFGP$(J)<>" "THENLPRINTGP$(J);:NEXT:ELSEIFJHHTHENHH=HL(I) 1260 IFHU(I)HHTHENHH=HU(I) 1270 IFHT(I)HHTHENHH=HT(I) 1280 RETURN 1300 IFF=1THENLPRINTSTRING$(80,"-");:CLS 1310 LPRINTCHR$(26):LPRINTTAB(4);INT(HA);:PM=HA:FORJ=10TO70STEP10:PM=INT(PM+(R/7)):LPRINTTAB(J+4);PM;:NEXT 1320 IFF=0THENLPRINTTAB(0);:LPRINTSTRING$(80,"-"):F=1:ELSELPRINT 1330 RETURN 9000 IFLEN(PD$)<>8THEN9080ELSEIFMID$(PD$,3,1)<>"/"ORMID$(PD$,6,1)<>"/"THEN9080ELSEIFVAL(RIGHT$(PD$,2))<82ORVAL(RIGHT$(PD$,2))>VAL(RIGHT$(DATE$,2))THEN9090 9010 IFVAL(RIGHT$(PD$,2))<1ORVAL(MID$(PD$,4,2))<1THEN9090ELSEONVAL(LEFT$(PD$,2))GOTO9030,9050,9030,9040,9030,9040,9030,9030,9040,9030,9040,9030 9020 GOTO9090 9030 IFVAL(MID$(PD$,4,2))>31THEN9090ELSECLS:RETURN 9040 IFVAL(MID$(PD$,4,2))>30THEN9090ELSECLS:RETURN 9050 IFVAL(MID$(PD$,4,2))>29OR(VAL(RIGHT$(PD$,2))MOD4<>0ANDVAL(MID$(PD$,4,2))>28)THEN9090ELSECLS:RETURN 9080 PRINT"DATE IS NOT IN CORRECT FORM. IT MUST BE IN THE FORM . PLEASE TRY AGAIN.":BEEP:INPUT"DATE";PD$:GOTO9000 9090 PRINT"DATE IS IMPOSSIBLE. IT TRIGGERED A MONTH <1-12>, DAY <1-31, EXCEPT FEB. 1-29> OR YEAR<82-85> ERROR TRAP. PLEASE TRY AGAIN.":BEEP:INPUT"DATE";PD$:GOTO9000 9100 CLEAR2500:MAXFILES=3:DEFINTB,C,E-G,I,J,L,N:DEFSTRO,S,T,Z:DEFSNGA,D,H,K,M,P,Q,R,U-Y:C=25:DIMS(C),DP(C),LS$(C),PP(C),NU(C),EX(C),AP(C),PD$(C):C=52:DIMSC(C),CD$(C),PL(C),OD(C),HD$(C),HU(C),HL(C),HT(C),GP$(80),HP$(C):C=0:T9=" SECURITY" 9104 PT$="##,###.##":EX$(1)="N.Y.S.E.":EX$(2)="A.S.E.":EX$(3)="O.T.C.":EX$(4)="OPTIONS":EX$(5)="BONDS":EX$(6)="OTHER SECURITIES":T8="WEEK ENDING DATA ONLY?":T7="CUR.PR.":E$=CHR$(27):P$=E$+"p":Q$=E$+"q":U$=E$+"U" 9106 T0="HIT ENTER TO CONTINUE":T6="LIQUIDATED":T5=" UN"+T6:T6=" "+T6:T4=" PROFIT":T3="LOSS":T2=" TOTAL"::T=T9+" PORTFOLIO"+T4+"/"+T3+" REPORT":TD=DATE$:CLS:SCREEN0,0:GOTO19