File HORSES.30 (OMSI 30 basic source file)

Directory of image this file is from
This file as a plain text file

100 DIM T(11),U(11),V(11),M(10),O(20),H(10),B(10),A(20)
110 PRINT"THIS DEMONSTRATION SHOWS YOU SOME VERSATILE FEATURES"
120PRINT"OF OMSI	S PDP-8 COMPUTER BY SIMULATING A HORSE"
130 PRINT "RACE.  UP TO TEN BETS CAN BE MADE.     "
140 PRINT
150 PRINT"      SEVENTH - 1 MILE, 3 YR. OLDS       POST 2:35"
160 PRINT
170 PRINT"1 MAN O	WAR       3:1"
180 PRINT"2 CITATION        4:1"
190 PRINT"3 WHIRLAWAY       5:1"
200 PRINT"4 ASSAULT         8:1"
210 PRINT"5 SEABISCUIT      9:1"
220 PRINT"6 GALLANT FOX    11:1"
230 PRINT"7 STYMIE         20:1"
240 PRINT"8 COALTOWN       30:1"
250 PRINT
260 LET S=0
270 LET S=S+1
280 PRINT
290 PRINT"BET NUMBER ";S
300 PRINT"ON WHAT HORSE DO YOU WISH TO BET (1-8)";\INPUT T(S)
310 IF T(S)>8 THEN 490\IF T(S)<1 THEN 490\LET T(S)=ABS(INT(T(S)))
320 PRINT"	WIN	, 	SHOW	, OR 	PLACE	?";
330 FOR C=1 TO 9\INPUT $D(C)\IF D(C)=141 THEN 350
340 LET D0=0\NEXT C
350 PRINT\FOR E=1 TO C-1\LET D0=D(E)+D0\NEXT E
360 IF D0=622 THEN 400
370 IF D0=833 THEN 410
380 IF D0=997 THEN 420
390 GO TO 320
400 LET U(S)=1\GO TO 430
410 LET U(S)=3\GO TO 430
420 LET U(S)=2\GO TO 430
430 PRINT "HOW MANY DOLLARS DO YOU WISH TO WAGER";\INPUT V(S)
440 IF V(S)>300 THEN 480
450 IF V(S)<2 THEN 480
460 LET V(S)=ABS(INT(V(S)))
470 GO TO 510
480 PRINT "BET MUST BE $2 OR GREATER BUT LESS THAN $300"\GO TO 430
490 PRINT"HORSE NUMBER IN ERROR (MUST BE 1,2,3,4,5,6,7,OR 8)"
500 GO TO 300
510 IF S=10 THEN 580\PRINT "ANYMORE BETS (	YES	 OR 	NO	)? ";
520 FOR C=1 TO 10\INPUT $D(C)\IF D(C)=141 THEN 540
530 LET D0=0\NEXT C
540 PRINT\FOR E=1 TO C-1\LET D0=D(E)+D0\NEXT E
550 IF D0=625 THEN 270
560 IF D0=413 THEN 580
570 GO TO 510
580 PRINT
590 PRINT
600 PRINT"   THEY	RE OFF AND RUNNING -"
610 PRINT
620 LET M(0)=62.25
630 LET M(1)=60
640 LET M(3)=500/9
650 LET M (2)=350/6
660 LET M(4)=55
670 LET M(5)=650/12
680 LET M(6)=1100/21
690 LET M(7)=1600/31
700 LET O(1)=6
710 LET O(2)=8
720 LET O(3)=10
730 LET O(4)=16
740 LET O(5)=18
750 LET O(6)=22
760 LET O(7)=40
770 LET O(8)=60
780 FOR N=0 TO 7
790 LET H(N)=0
800 NEXT N
810 LET K=0
820 LET G=1
830 LET J=0
840 LET N=3*T(1)-U(1)
850 IF N>0 THEN 870
860 LET N=1
870 FOR Z5=S TO 5*V(S)+N
880 LET Z1=RND(Z1)
890 NEXT Z5
900 FOR Z5=1 TO 2000
910 IF INT(Z5/N)-G<>0 THEN 1090
920 LET H(J)=H(J)+RND(Z1)*M(J)
930 LET J=J+1
940 LET G=G+1
950 IF J<>8 THEN 1080
960 LET J=0
970 GO SUB 1600
980 LET D=H(B(0)-1)
990 LET K=K+1
1000 PRINT
1010 IF K=8 THEN 1050
1020 GO SUB 2170
1030 GO SUB 1840
1040 GO TO 1090
1050 PRINT"           FINISH"
1060 LET Z5=500001
1070 GO SUB 1840
1080 LET Z1=RND(Z1)
1090 NEXT Z5
1100 PRINT
1110 PRINT
1120 PRINT"$2 MUTUELS PAID:"
1130 PRINT"          STRAIGHT  PLACE     SHOW"
1140 LET K=0
1150 FOR I=0 TO 2
1160 GO SUB 1880
1170 LET J=I
1180 IF J=0 THEN 1220
1190 PRINT"         ";
1200 LET J=J-1
1210 GO TO 1180
1220 FOR J=I TO 2
1230 LET L=I+I+J
1240 IF J>0 THEN 1270
1250 LET R=1
1260 GO TO 1280
1270 LET R=3*J
1280 LET H(L)=1.5+.01*INT((O(B(I))/R+RND(Z1))*100)
1290 PRINT H(L);
1300 NEXT J
1310 PRINT
1320 NEXT I
1330 PRINT
1340 LET Q=0
1350 FOR J=1 TO S
1360 PRINT "BET NO. ";J
1370 LET P=0
1380 FOR I=0 TO 2
1390 IF B(I) <> T(J) THEN 1460
1400 IF U(J)<=I THEN 1510
1410 LET P=.01*INT((V(J)*50)*H(I+I+U(J)-1))
1420 PRINT "YOU COLLECT";P;"ON ";
1430 GO SUB 1880
1440 PRINT
1450 GO TO 1530
1460 NEXT I
1470 PRINT"TEAR UP YOUR TICKET ON ";
1480 FOR I = 3 TO 7
1490 IF B(I) = T(J) THEN 1430
1500 NEXT I
1510 PRINT"NEXT TIME, PURCHASE A SHOW TICKET ON ";
1520 GO TO 1430
1530 LET Q = Q+P-V(J)
1540 NEXT J
1550 IF Q<0 THEN 1580
1560 PRINT "YOUR TOTAL WINNINGS AMOUNT TO $";Q
1570 GO TO 1590
1580 PRINT "YOUR TOTAL LOSSES AMOUNT TO $";ABS(Q)
1590 GO TO 2370
1600 LET Q=0
1610 FOR L1=0 TO 7
1620 LET B(L1)=0
1630 LET A(L1)=0
1640 NEXT L1
1650 FOR L1=0 TO 7
1660 FOR L2=0 TO 7
1670 IF L1=L2 THEN 1710
1680 IF H(L1)<>H(L2) THEN 1710
1690 PRINT"RERUN PLEASE"
1700 GO TO 2370
1710 IF H(L1)<H(L2) THEN 1730
1720 LET A(L1)=A(L1)+1
1730 NEXT L2
1740 NEXT L1
1750 FOR L1=8 TO 1 STEP -1
1760 FOR L2=0 TO 7
1770 IF A(L2)<>L1 THEN 1810
1780 LET B(Q)=L2+1
1790 LET Q=Q+1
1800 LET L2=8
1810 NEXT L2
1820 NEXT L1
1830 RETURN
1840 PRINT"POS.  HORSE   LENGTHS BEHIND"
1850 PRINT
1860 FOR I=0 TO 7
1870 PRINT I+1;
1880 IF B(I)=1 THEN 2090
1890 IF B(I)=2 THEN2070
1900 IF B(I)=3 THEN 2050
1910 IF B(I)=4 THEN 2030
1920 IF B(I)=5 THEN 2010
1930 IF B(I)=6 THEN 1990
1940 IF B(I)=7 THEN 1970
1950 PRINT"COALTOWN   ";
1960 GO TO 2100
1970 PRINT"STYMIE     ";
1980 GO TO 2100
1990 PRINT"GALLANT FOX";
2000 GO TO 2100
2010 PRINT "SEABISCUIT ";
2020 GO TO 2100
2030 PRINT"ASSAULT    ";
2040 GO TO 2100
2050 PRINT"WHIRLAWAY  ";
2060 GO TO 2100
2070 PRINT"CITATION   ";
2080 GO TO 2100
2090 PRINT"MAN O	WAR  ";
2100 IF K=0 THEN 2160
2110 IF I>0 THEN 2140
2120 PRINT
2130 GO TO 2150
2140 PRINT INT(INT(D-H(B(I)-1)))/10
2150 NEXT I
2160 RETURN
2170 IF K=1 THEN 2250
2180 IF K=2 THEN 2270
2190 IF K=3 THEN 2290
2200 IF K=4 THEN 2310
2210 IF K=5 THEN 2330
2220 IF K=6 THEN 2350
2230 PRINT"   COMING DOWN THE STRETCH -"
2240 GO TO 2360
2250 PRINT"   AS THEY BREAK FROM THE GATE -"
2260 GO TO 2360
2270 PRINT"   AT THE 1/4 MILE POLE -"
2280 GO TO 2360
2290 PRINT"   NEARING THE HALFWAY MARK -"
2300 GO TO 2360
2310 PRINT"   MIDWAY IN THE RACE -"
2320 GO TO 2360
2330 PRINT"   AT 5/8 OF A MILE -"
2340 GO TO 2360
2350 PRINT "   ROUNDING THE TURN -"
2360 RETURN
2370 PRINT\PRINT"THANK YOU FOR PLAYING!!"
2380 PRINT\PRINT\PRINT
2390 CHAIN "DEMON "
2400 END



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search