start tok64 d64-7u7rHd 100 REM c64 mods by wim 3/25/83 120 i=RND(-RND(0)):POKE53272,21:POKE53280,6:POKE53281,7:PRINT"{black}" 140 t$="{home}{down*23}" 150 qp=197:qa=73 160 ig=160:vi=215:co=209:gi=170 170 GOTO1360 180 PRINTCHR$(147)"how many islanders (<=100)?";:GOSUB1720:np=VAL(z1$) 190 IFnp=0THEN180 200 IFnp>100THENPRINT"{up*2}";:GOTO180 210 PRINT"{down}how many infected at start?";:GOSUB1720:ni=VAL(z1$) 220 IFni=0THEN210 230 IFni>npTHENPRINT"{up*2}";:GOTO210 240 PRINT"{down}contagion time (days)?";:GOSUB1720:ct=VAL(z1$) 250 IFct=0THENPRINT"{up*2}";:GOTO240 260 RESTORE 270 PRINTCHR$(147):FORi=1TO18:READil,ir 280 FORj=ilTOir:POKEj,ig:NEXT:NEXT 290 PRINT"{home}{reverse on}W{reverse off}=uninfected{space*3}{reverse on}Q{reverse off}=contagious{space*3}{reverse on}*{reverse off}=immune" 300 PRINT"{home}{down*19}contagion" 310 PRINT"{home}{down*20}time "ct; 320 IFct>1THENPRINT" days":GOTO340 330 PRINT" day" 340 REM 350 POKEqa+2,PEEK(qa):POKEqa+3,PEEK(qa+1):z9=FRE(0) 360 DIMpp(np),pg(np),dc(np),ni(50),im(50) 370 FORi=1TOnp:pg(i)=vi:NEXT 380 FORi=1TOni:pg(i)=co:NEXT 390 FORi=1TOnp:dc(i)=0:NEXT 400 FORi=1TOni:dc(i)=ct:NEXT 410 FORi=1TOnp 420 pp(i)=INT(690*RND(1)+1157):IFPEEK(pp(i))<>igTHEN420 430 POKEpp(i),pg(i):NEXT 440 nd=0 450 im=0:PRINT"{home}{down}"TAB(7)np-ni-im;TAB(20)ni;TAB(30)im 460 PRINT"{home}{down*3}day";nd 470 nd=nd+1:ni=0:im=0 480 FORi=1TOnp 490 REM 500 IF(PEEK(pp(i))=co)AND(pg(i)=vi)THENdc(i)=ct 510 pg(i)=PEEK(pp(i)) 520 ONINT(9*RND(1)+1)GOSUB900,910,920,930,940,950,960,970,980 530 REM 540 IFpg(i)=coTHENGOSUB1060 550 REM 560 IFpg(i)=viTHENGOSUB1160 570 REM 580 IFpg(i)=coTHENdc(i)=dc(i)-1 590 REM 600 IFdc(i)<0THENpg(i)=gi:POKEpp(i),gi 610 IFPEEK(pp(i))=coTHENni=ni+1 620 IFPEEK(pp(i))=giTHENim=im+1 630 NEXT 640 IFnd<=50THENni(nd)=ni:im(nd)=im 650 PRINT"{home}{down}"TAB(7)np-ni-im"{left}{space*2}";TAB(20)ni"{left}{space*2}";TAB(30)im"{left}{space*2}" 660 IFni>0THEN460 670 PRINTt$;:GOSUB1250 680 PRINTCHR$(147)"day"TAB(5)"infection":PRINT 690 FORnd=1TO50 700 FORwt=1TO150:NEXT 710 PRINTnd;TAB(4); 720 PRINTnp-ni(nd)-im(nd);ni(nd);im(nd):PRINT 730 IFnp-ni(nd)-im(nd)=0THEN750 740 FORi=1TOnp-ni(nd)-im(nd):PRINT"{reverse on}W";:NEXT 750 IFni(nd)=0THEN770 760 FORi=1TOni(nd):PRINT"{reverse on}Q";:NEXT 770 IFim(nd)=0THEN790 780 FORi=1TOim(nd):PRINT"{reverse on}*";:NEXT 790 PRINT 800 IFni(nd)=0THEN820 810 PRINT:NEXTnd 820 PRINT"{down}like to see the chart again (y/n)?";:GOSUB1720:q$=z1$ 830 IFq$=""THENPRINT"{up*2}";:GOSUB820 840 IFLEFT$(q$,1)="y"THEN680 850 PRINTCHR$(147)LEFT$(t$,10)"want another try (y/n)?";:GOSUB1720:q$=z1$ 860 IFq$=""THEN850 870 IFLEFT$(q$,1)="y"THENRUN 880 END 890 REM 900 mv=39:GOSUB1000:RETURN 910 mv=40:GOSUB1000:RETURN 920 mv=41:GOSUB1000:RETURN 930 mv=-1:GOSUB1000:RETURN 940 mv=0:GOSUB1000:RETURN 950 mv=1:GOSUB1000:RETURN 960 mv=-41:GOSUB1000:RETURN 970 mv=-40:GOSUB1000:RETURN 980 mv=-39:GOSUB1000:RETURN 990 REM 1000 IFPEEK(pp(i)+mv)<>igTHENRETURN 1010 pg(i)=PEEK(pp(i)) 1020 POKEpp(i),ig 1030 pp(i)=pp(i)+mv 1040 POKEpp(i),pg(i):RETURN 1050 REM 1060 IFPEEK(pp(i)-41)=viTHENPOKEpp(i)-41,co 1070 IFPEEK(pp(i)-40)=vi THEN POKEpp(i)-40,co 1080 IFPEEK(pp(i)-39)=vi THEN POKEpp(i)-39,co 1090 IFPEEK(pp(i)- 1)=vi THEN POKEpp(i)- 1,co 1100 IFPEEK(pp(i)+ 1)=vi THEN POKEpp(i)+ 1,co 1110 IFPEEK(pp(i)+39)=vi THEN POKEpp(i)+39,co 1120 IFPEEK(pp(i)+40)=viTHEN POKEpp(i)+40,co 1130 IFPEEK(pp(i)+41)=viTHEN POKEpp(i)+41,co 1140 RETURN 1150 REM 1160 IFPEEK(pp(i)-41)=coTHENPOKEpp(i),co 1170 IFPEEK(pp(i)-40)=coTHEN POKEpp(i),co 1180 IFPEEK(pp(i)-39)=coTHENPOKEpp(i),co 1190 IFPEEK(pp(i)- 1)=coTHENPOKEpp(i),co 1200 IFPEEK(pp(i)+ 1)=coTHENPOKEpp(i),co 1210 IFPEEK(pp(i)+39)=coTHENPOKEpp(i),co 1220 IFPEEK(pp(i)+40)=coTHENPOKEpp(i),co 1230 IFPEEK(pp(i)+41)=coTHENPOKEpp(i),co 1240 RETURN 1250 PRINT"{space*8}{reverse on}press any key to continue" 1260 GETq$:IFq$=""THEN1260 1270 RETURN 1280 REM 1290 REM 1300 REM 1310 REM 1320 REM 1330 REM 1340 REM 1350 REM 1360 PRINT"{clear}":FORi=1024TO1063:POKEi,224:POKEi+960,224:NEXT 1370 FORi=1064TO1944STEP40:POKEi,224:POKEi+39,224:NEXT 1380 PRINT"{home}{down*4}" 1390 PRINTTAB(9)"{space*2}O{cm t} {cm @}{cm m}{space*6}L 1400 PRINTTAB(9)"{space*2}L{cm @}{sh @*6}MN{L*4}NM 1410 PRINT"{home}{down*10}"TAB(14)"{reverse on}epidemic" 1420 PRINT"{home}{down*12}"TAB(25)"andy gamble" 1430 PRINTLEFT$(t$,20)TAB(5);"do you need instructions (y/n)?"; 1431 GOSUB1720:q$=z1$ 1440 IFq$=""THEN1430 1450 IFLEFT$(q$,1)<>"y"THEN180 1460 REM 1470 PRINTCHR$(147)"an epidemic has broken out on a small " 1480 PRINT"island. the disease is not fatal, and 1490 PRINT"once contracted provides immunity for 1491 PRINT"life. 1500 PRINT:PRINT"you are allowed to choose certain 1510 PRINT"initial conditions:":PRINT:PRINT:PRINTTAB(5)"the island population" 1520 PRINT:PRINTTAB(5)"the number originally infected" 1530 PRINT:PRINTTAB(5)"the number of days for which the 1540 PRINTTAB(5)"disease is contagious - this is" 1550 PRINTTAB(5)"also the duration of the disease." 1560 PRINT:PRINT:PRINT"the islanders will move about randomly," 1570 PRINT"infecting others if contagious."; 1580 PRINT"those whoare immune will not be infected. " 1590 PRINT: GOSUB1250 1600 PRINTCHR$(147)"this will continue until the disease hasrun its course "; 1610 PRINT"(until there are no more infected persons)." 1620 PRINT:PRINT"you will then be given a day-by-day bar chart of the"; 1630 PRINT" history of the epidemic, " 1640 PRINT"up to a maximum of 50 days." 1650 PRINT:GOSUB1250 1660 GOTO180 1670 DATA1158,1167,1196,1211 1680 DATA1234,1222,1271,1296,1306,1339,1346,1379,1386,1418 1690 DATA1427,1459,1469,1500,1510,1541,1553,1581 1700 DATA1593,1618,1632,1654,1673,1693,1715,1731,1757,1771 1710 DATA1800,1812,1841,1848 1720 z$="":z1$="" 1730 PRINT"{cm +}{left}";:FORi=1TO50:NEXTi 1740 PRINT" {left}";:FORi=1TO50:NEXTi 1750 GETz$:IFz$=""THEN1730 1760 IFz$<>CHR$(20)THEN1810 1770 IFz$=""THEN1730 1780 zz=LEN(z1$):IFzz<1THEN1730 1790 z1$=LEFT$(z1$,zz-1):PRINT"{left}"; 1800 GOTO1730 1810 IFz$=CHR$(13)ORz$=CHR$(141)THEN1850 1820 PRINTz$; 1830 z1$=z1$+z$ 1840 GOTO1730 1850 FORi=1TO10:GETz$:NEXTi 1860 PRINT 1870 RETURN stop tok64 (bastext 1.0)