The Handicapper (Harness)

Products: The Handicapper
Developer(s): Leonard Hyre
Date: 1984
Type: Program
Platform(s): TS 2068
Tags: Gambling

Handicaps a harness race from figures you copy out of the track program. For each horse (up to 15) a worksheet asks for its number and name, its half-mile and final times in the last race, its post position last time and today, its stretch gain, whether it is moving up or down in class, whether its driver wins more than 15% of the time, and how many times it was parked out. Optional help text explains where to find each figure. The program turns these into a rating, sorts the field, and shows a rating report for the race, which can also be sent to the printer with two header lines of your own. A separate Wager Master section gives a table of estimated $2 payoffs for odds from 1-1 to 20-1, works out the return on a win/place/show bet at chosen odds, and picks daily-double, perfecta/exacta and trifecta combinations from your top choices, each with an optional printout.

The Handicapper was written by Leonard Hyre of Federal Hill Software, Baltimore, in 1984 and distributed by Knighted Computers of Fulton, New York. The REM header reads “HARNESS HANDICAPPER / FEDERAL HILL SOFTWARE ©1984 BY L. HYRE”, and the title screen says “FEDERAL HILL SOFTWARE PRESENTS” and “by LEONARD HYRE”. The product was sold as separate programs for thoroughbreds, harness horses and greyhounds; only the harness module survives, on a Larken disk in Bob Swoger’s collection. The disk’s Tasword product sheet is included in the zip as a text file. It describes all three programs and the factors each one uses.

Program Analysis

Structure

  • Lines 10–100: copyright REMs, caps lock on (POKE 23658,8), and the arrays for up to 15 horses.
  • Lines 110–840: the handicapping worksheet, one screen per horse, with a review step (C to accept, R to redo).
  • Lines 860–970: help screens for each input.
  • Lines 990–1170: lookup tables that turn times and post positions into points.
  • Lines 1190–1780: title, main menu, background information and handicapping principles.
  • Lines 1820–2340: bubble sort, rating report and printout.
  • Lines 2350–3620: Wager Master, with the odds/payoff table held in DATA lines 2370–2380.
  • Lines 3680–3760: a routine that formats a number as dollars and cents.

Rating

Each horse’s rating is the sum of seven scores (line 760). The half-mile time is scored from 55 points (under 59 seconds) down to 0 (1:09 or slower), less one point per fifth of a second. The final time is scored from 100 (under 1:53) down to 0 (2:12 or slower), again less the fifths. The post-position score is today’s post value minus last race’s, with inside posts worth the most, so a horse moving from outside to inside gains; for posts 9 and 10 the program asks whether the horse starts in the first or second tier. The stretch gain is added as entered. Class adds or takes away 5 points, a driver who wins more than 15% of the time adds 12, and each parked-out sign adds 6. Times are entered as four digits, with the last digit in fifths of a second. The report shows each rating doubled.

Notable Techniques

  • Computed jumps such as GO TO (1420 AND VAL Z$=1)+(1510 AND VAL Z$=2)+… stand in for ON … GO TO.
  • The TS2068’s ON ERR GO TO traps bad numeric input in Wager Master, and ON ERR RESET turns the trap off again.
  • The money-format routine is called as GO SUB CASH, with CASH set to 3680 at the start.
  • The odds table keeps win, place and show payoffs as strings in DATA and reads them into four string arrays.

Potential Issues

  • Horse entries should start with the horse’s number, as the help says. Line 2060 takes VAL of the first two characters to line up the report, so a name that starts with a letter appears to stop the program with an error.
  • Key checks compare against capital letters, so the program depends on the caps lock it sets in line 70.
  • Printouts need a printer. The rating report and the Wager Master selections can also be read on screen.

This program came from a Larken disk and was converted to run from tape: the LKDOS save and load lines and the LOGICALL load were removed, the program is saved without variables, and the disk’s Larken launcher (HTRACK.B1) was left out. It was tested in ZEsarUX through the menus, a two-horse worksheet, the rating report and the payoff table.

Related Products

Use your TS 2068 to improve your performance at the track. These programs for thoroughbreds, harness horses, and greyhounds combine the power of your computer with the savvy of a veteran handicapper.

Image Gallery

Source Code

   10 REM ***********************
   20 REM * HARNESS HANDICAPPER *
   30 REM *FEDERAL HILL SOFTWARE*
   40 REM *  * 1984 BY L. HYRE  *
   50 REM ***********************                               
   60 REM                                                        REPRODUCTION OF THIS SOFTWARE   PROGRAM OTHER THAN FOR THE      PROTECTION OF THE ORIGINAL      PURCHASER AS A BACKUP COPY IS   STRICTLY PROHIBITED BY COPYRIGHTLAW                                           
   70 LET CASH=3680: POKE 23658,8
   80 DIM G$(3,8): DIM L(3): DIM U$(1,9): DIM A$(15,20): DIM R(15): DIM M$(4,25): DIM H$(2,31): DIM T$(3,32): DIM U$(2,20): DIM K$(15,20): DIM V(3): DIM J(2): DIM O$(15,4): DIM W$(15,4): DIM P$(15,4): DIM S$(15,4)
   90 LET HP=0: LET z$="                                "
  100 GO TO 1190
  110 FOR R=1 TO 15
  120 BORDER 0: PAPER 0: INK 6: CLS 
  130 PRINT AT 0,0;: GO SUB 1790
  140 PRINT AT 2,4;"HANDICAPPING WORKSHEET"
  150 PRINT AT 4,0;"HORSE NO. & NAME";: PRINT AT 6,0;"1/2 MILE TIME";
  160 PRINT AT 7,0;"FINAL TIME";AT 8,0;"POST POS. LAST RACE"
  170 PRINT AT 9,0;"POST POS. THIS RACE";AT 10,0;"STRETCH GAIN LAST RACE"
  180 PRINT AT 11,0;"CLASS  (U)p (D)own (S)ame";AT 12,0;"DRIVER WIN RATE"
  190 PRINT AT 13,0;"PARKED OUT SIGNS"
  200 PRINT AT 14,0;: GO SUB 1790: PRINT AT 15,0;: GO SUB 1790
  210 IF R<>1 THEN GO TO 250
  220 PRINT AT 20,0;"HELP ON SCREEN ? (Y/N)": INPUT B$
  230 LET HP=(1 AND B$="Y")+(0 AND B$="N")
  240 GO SUB 980
  250 IF HP=0 THEN PRINT AT 19,4;"The HARNESS HANDICAPPER"
  260 IF HP=1 THEN GO SUB 870
  270 INPUT "HORSE NUMBER & NAME";A$(R): PRINT INK 7; PAPER 1;AT 5,8;A$(R)
  280 IF HP=1 THEN GO SUB 980: GO SUB 880
  290 INPUT "1/2 MILE TIME";C$
  300 IF LEN c$<>4 THEN GO TO 290
  310 IF VAL (c$)<500 OR VAL (c$)>1200 THEN GO TO 290
  320 PRINT INK 7; PAPER 1;AT 6,15;C$: LET A=VAL (C$( TO 3)): LET B=VAL (C$(4))
  330 GO SUB 990
  340 LET SH=X-B
  350 IF HP=1 THEN GO SUB 980: GO SUB 890
  360 INPUT "FINAL TIME : ";D$
  370 IF LEN D$<>4 THEN GO TO 360
  380 IF VAL (D$)<1480 OR VAL (D$)>2240 THEN GO TO 360
  390 PRINT INK 7; PAPER 1;AT 7,12;D$: LET C=VAL (D$( TO 3)): LET D=VAL (D$(4))
  400 GO SUB 1020
  410 LET SF=Y-D
  420 IF HP=1 THEN GO SUB 980: GO SUB 900
  430 INPUT "POST POS. LAST RACE ";E
  440 IF E<1 OR E>12 THEN GO TO 430
  450 PRINT INK 7; PAPER 1;AT 8,21;E: GO SUB 1060
  460 IF HP=1 THEN GO SUB 980: GO SUB 910
  470 INPUT "POST POS. THIS RACE ";F
  480 IF F<1 OR F>12 THEN GO TO 470
  490 PRINT INK 7; PAPER 1;AT 9,21;F: GO SUB 1120
  500 LET PP=N-M
  510 IF HP=1 THEN GO SUB 980: GO SUB 920
  520 INPUT "STRETCH GAIN LAST RACE ";G
  530 IF G>20 THEN GO TO 520
  540 PRINT INK 7; PAPER 1;AT 10,24;G: IF HP=1 THEN GO SUB 980: GO SUB 940
  550 REM **********************
  560 INPUT "CLASS: (U)p (D)own (S)ame ";E$
  570 IF E$="U" THEN LET H=-5: GO TO 610
  580 IF E$="D" THEN LET H=5: GO TO 610
  590 IF E$="S" THEN LET H=0: GO TO 610
  600 GO TO 550
  610 PRINT INK 7; PAPER 1;AT 11,26;E$: IF HP=1 THEN GO SUB 980: GO SUB 960
  620 INPUT "DRIVER WIN RATE (1 or 2)";J
  630 IF J<1 OR J>2 THEN GO TO 620
  640 LET DR=(12 AND J=1)+(0 AND J=2)
  650 PRINT INK 7; PAPER 1;AT 12,17;J: IF HP=1 THEN GO SUB 980: GO SUB 970
  660 INPUT "PARKED OUT SIGNS ";K
  670 IF K>12 THEN GO TO 660
  680 PRINT INK 7; PAPER 1;AT 13,18;K: LET PO=K*6
  690 GO SUB 980: PRINT AT 16,0;"REVIEW DATA:"
  700 PRINT AT 18,0;"IF ABOVE DATA IS"; INK 4;" CORRECT"; INK 6;" PRESS  THE "; INK 4;"""C"""; INK 6;" KEY"
  710 PRINT AT 20,0;"IF DATA IS "; INK 3;"INCORRECT "; INK 6;" PRESS "; INK 3;"""R"""; INK 6;" TO REDO"
  720 LET I$=INKEY$: IF I$="" THEN GO TO 720
  730 IF I$="R" THEN GO TO 120
  740 IF I$="C" THEN GO TO 760
  750 GO TO 720
  760 LET R(R)=SH+SF+PP+G+H+DR+PO
  770 GO SUB 980
  780 PRINT AT 21,0;"                                ";AT 21,0;"ANOTHER HORSE ? (Y/N)"
  790 LET I$=INKEY$: IF I$="" THEN GO TO 790
  800 IF I$="N" THEN GO TO 840
  810 IF I$="Y" THEN GO TO 830
  820 GO TO 790
  830 NEXT R
  840 GO TO 1820
  850 GO TO 850
  860 REM *** HELP SCREENS HERE **
  870 PRINT AT 14,0; INK 4;"TYPE THE HORSES NUMBER FOLLOWED BY A SPACE AND HIS NAME."'"Then hit [ENTER] Key"; INK 6: RETURN 
  880 PRINT AT 14,0; INK 4;"LOCATE THE 1/2 MILE SPEED LISTEDFOR THE RACE FROM WHICH YOU ARE OBTAINING THE HANDICAPPING      INFORMATION.(E.G. 1012 OR 0572)."'"Enter this figure- then Hit     [ENTER] Key."; INK 6: RETURN 
  890 PRINT AT 14,0; INK 4;"LOCATE THE FINAL TIME FOR THIS  HORSE FROM THE RACE FROM WHICH  YOU ARE OBTAINING THE           HANDICAPPING INFORMATION. (E.G. 1571 or 2023)": PRINT "Enter this figure- Then Hit     [ENTER] Key.": INK 6: RETURN 
  900 PRINT AT 14,0; INK 4;"Find the POST POSITION of 'THIS'Horse from which you are obtaining data.": PRINT "Enter this figure- Then Hit     [ENTER] Key.": INK 6: RETURN 
  910 PRINT AT 14,0; INK 4;"Find the POST POSITION of 'THIS'Horse in 'TODAYS' race.": PRINT INK 4;"Usually the Wagering Number, BUTnot always!": PRINT "Enter this figure- Then Hit     [ENTER] Key.": INK 6: RETURN 
  920 PRINT INK 4;AT 14,0;"This entry is the number of     lengths this horse gained in the""STRETCH RUN in it's last race."""
  930 PRINT INK 5;"NOTE: If horse was winner in    last, enter lengths of win here.": PRINT "Input  number and Hit [ENTER]": INK 6: RETURN 
  940 GO SUB 980: PRINT INK 4;AT 14,0;"IF PURSE OR CLAIMING PRICE THIS RACE IS :": PRINT INK 4;"1. HIGHER THAN THIS HORSES         PREVIOUS RACE THEN ENTER ""U""": PRINT INK 4;"2. LOWER THAN THIS HORSES          PREVIOUS RACE THEN ENTER ""D"""
  950 PRINT INK 4;"3. THE SAME AS THIS HORSES        PREVIOUS RACE THEN ENTER ""S""": INK 6: RETURN 
  960 PRINT INK 4;AT 14,0;"DRIVER WIN RATE: If Driver WINS MORE than 15%, Enter 1": PRINT INK 4;"If DRIVER WINS LESS THAN 15%,   Enter 2": INK 6: RETURN 
  970 PRINT INK 4;AT 14,0;"PARKED OUT indicators are small ""o"" marks at each of the horse'srace positions.  Simply count   the number and Enter the figure.": INK 6: RETURN 
  980 FOR u=14 TO 21: PRINT AT U,0;"                                ": NEXT u: PRINT AT 14,0;: RETURN 
  990 IF A<59 THEN LET X=55
  991 IF A=59 THEN LET X=50
  992 IF A=100 THEN LET X=45
  993 IF A=101 THEN LET X=40
  994 IF A=102 THEN LET X=35
  995 IF A=103 THEN LET X=30
  996 IF A=104 THEN LET X=25
  997 IF A=105 THEN LET X=20
  998 IF A=106 THEN LET X=15
  999 IF A=107 THEN LET X=10
 1000 IF A>108 THEN LET X=0
 1001 IF A=108 THEN LET X=5
 1010 RETURN 
 1020 IF C<153 THEN LET Y=100
 1030 IF C=153 THEN LET Y=95
 1031 IF C=154 THEN LET Y=90
 1032 IF C=155 THEN LET Y=85
 1033 IF C=156 THEN LET Y=80
 1034 IF C=157 THEN LET Y=75
 1035 IF C=158 THEN LET Y=70
 1036 IF C>=159 AND C<200 THEN LET Y=65
 1037 IF C=200 THEN LET Y=60
 1038 IF C=201 THEN LET Y=55
 1039 IF C=202 THEN LET Y=50
 1040 IF C=203 THEN LET Y=45
 1041 IF C=204 THEN LET Y=40
 1042 IF C=205 THEN LET Y=35
 1043 IF C=206 THEN LET Y=30
 1044 IF C=207 THEN LET Y=25
 1045 IF C=208 THEN LET Y=20
 1046 IF C=209 THEN LET Y=15
 1047 IF C=210 THEN LET Y=10
 1048 IF C=211 THEN LET Y=5
 1049 IF C>211 THEN LET Y=0
 1050 RETURN 
 1060 LET M=6
 1064 IF E=1 OR E=2 THEN LET M=8
 1065 IF E=3 OR E=4 OR E=5 THEN LET M=6
 1067 IF E=6 THEN LET M=4
 1068 IF E=7 THEN LET M=2
 1069 IF E=8 THEN LET M=1
 1070 IF E=9 OR E=10 THEN LET M=0: GO SUB 980: PRINT AT 20,0;"TIER 1 OR 2? <Enter 1 or 2>": INPUT "Enter 1 OR 2 ";zz: PRINT AT 8,25;"TIER "; INK 7; PAPER 1;ZZ: PRINT AT 14,0;
 1074 IF E<9 THEN GO TO 1100
 1075 IF ZZ<1 OR ZZ>2 THEN GO TO 1070
 1076 IF ZZ=1 THEN LET M=1
 1077 IF ZZ>1 THEN LET M=6
 1079 PRINT AT 14,30;ZZ: PAUSE 240
 1080 PRINT AT 14,0;"                                "
 1090 IF E=11 OR E=12 THEN LET M=1
 1100 LET ZZ=0
 1110 RETURN 
 1120 LET N=0: IF F=1 OR F=2 THEN LET N=8
 1126 IF F=3 OR F=4 OR F=5 THEN LET N=6
 1127 IF F=6 THEN LET N=4
 1128 IF F=7 THEN LET N=2
 1129 IF F=8 THEN LET N=1
 1130 IF F=9 OR F=10 THEN GO SUB 980: PRINT AT 20,0;"TIER 1 OR 2? <Enter 1 or 2>": INPUT V: PRINT AT 9,25;"TIER "; INK 7; PAPER 1;V: IF V<1 OR V>2 THEN GO TO 1130
 1131 IF F<9 THEN GO TO 1160
 1132 IF V=1 THEN LET N=1
 1133 IF V=2 THEN LET N=6
 1140 PRINT AT 14,0;"                                "
 1150 IF F=11 OR F=12 THEN LET N=1
 1155 IF N<>1 THEN LET N=6
 1160 LET V=0
 1170 RETURN 
 1180 REM ** SPEED DATA ENDS HERE*******************************
 1190 LET U$(1)="THE MENU": LET M$(1)="1. BACKGROUND INFORMATION": LET M$(2)="2. HANDICAPPING FACTORS": LET M$(3)="3. HANDICAPPING INPUT": LET M$(4)="4. WAGER MASTER"
 1200 PRINT AT 0,0;
 1210 INK 6: BORDER 0: PAPER 0: CLS 
 1220 GO SUB 1790
 1230 PRINT INK 7; PAPER 1;" FEDERAL HILL SOFTWARE PRESENTS ": INK 6: PAPER 0
 1240 GO SUB 1790
 1250 PAUSE 150
 1260 LET DN=3
 1270 FOR I=2 TO 10
 1280 PRINT AT DN,I;"HARNESS HANDICAPPER": LET DN=DN+1: NEXT I
 1290 PRINT : GO SUB 1790
 1300 PRINT 
 1310 PRINT "         * by LEONARD HYRE"
 1320 PAUSE 100
 1330 CLS : GO SUB 1790
 1340 PRINT TAB (11);U$(1)
 1350 LET L1=4: FOR I=1 TO 4: PRINT AT L1,5;M$(I): LET L1=L1+2: NEXT I
 1360 PRINT : GO SUB 1790
 1370 PRINT '''''TAB 10;"CHOOSE ?"
 1380 BEEP .25,5: PRINT '"**** The HARNESS HANDICAPPER ***"
 1390 LET Z$=INKEY$: IF Z$="" THEN GO TO 1390
 1395 IF Z$<CHR$ (49) OR Z$>CHR$ 52 THEN GO TO 1390
 1400 IF VAL Z$<1 OR VAL Z$>4 THEN GO TO 1390
 1410 ON ERR RESET : PRINT INK 7; PAPER 1;AT 21,8;"ONE MOMENT PLEASE": GO TO (1420 AND VAL Z$=1)+(1510 AND VAL Z$=2)+(110 AND VAL Z$=3)+(2350 AND VAL Z$=4)
 1420 INK 7: BORDER 1: PAPER 1: CLS : GO SUB 1790: PRINT "     Background Information"
 1430 GO SUB 1790: PRINT '"HARNESS HANDICAPPER is a programfor your TS2068 computer which  will allow you to handicap a    race quickly and easily. It doesnot contain a magic formula for getting rich.";
 1440 PRINT "  However, if you  follow these instructions care- fully, avoid bad races and      gimmick bets, you will be able  to make a tidy profit at the    track."
 1450 PRINT '"The program uses eight differentcriteria for rating horses,     relying heavily on their performance last time out on a fast or sloppy track.": PRINT INK 4; PAPER 0;AT 21,3;"PRESS ANY KEY FOR NEXT PAGE": PAUSE 0: CLS 
 1460 PRINT ''"You may now select the kind of  Information you want."
 1470 PRINT ''"(1)  HANDICAPPING PRINCIPLES"''"(2)  HANDICAPPING INPUT"''"(3)  WAGER MASTER"
 1480 LET Z$=INKEY$: IF Z$="" THEN GO TO 1480
 1485 IF Z$<CHR$ (49) OR Z$>CHR$ (51) THEN GO TO 1480
 1490 IF VAL Z$<1 OR VAL Z$>3 THEN GO TO 1480
 1500 GO TO (1510 AND VAL Z$=1)+(110 AND VAL Z$=2)+(2350 AND VAL Z$=3)
 1510 CLS : GO SUB 1790: PRINT "     HANDICAPPING PRINCIPLES": GO SUB 1790
 1520 PRINT '"/// STAY HOME IF THE TRACK      CONDITION IS NOT FAST.  ANY OFF TRACK, MEANING GOOD, MUDDY, OR  SLOPPY, SHOULD BE AVOIDED!"
 1530 PRINT '"/// DON'T BET ON MAIDEN RACES.  THESE ARE UNPROVEN OR JUST PLAINBAD HORSES."
 1540 PRINT '"/// DON'T BET ON RACES WITH THE CHEAPEST HORSES ON THE GROUNDS  THESE ARE USUALLY THE FIRST AND LAST RACES. THE BETTER THE CLASSOF HORSE, THE BETTER THE HANDI- CAPPER PROGRAM WORKS.": PRINT AT 21,3; INK 4; PAPER 0;"PRESS ANY KEY FOR NEXT PAGE": PAUSE 90: PAUSE 0: CLS 
 1550 PRINT "/// DON'T BET ON RACES WITH A   HIGH PROPORTION OF SHIPPERS.    THESE ARE HORSES RUNNING AT THE TRACK FOR THE FIRST TIME."
 1560 REM 
 1570 PRINT AT 21,3; INK 4; PAPER 0;"PRESS ANY KEY TO CONTINUE": PAUSE 90: PAUSE 0: CLS 
 1580 GO SUB 1790: PRINT "  ELIMINATE BAD HORSES QUICKLY": GO SUB 1790
 1590 PRINT '"/// ELIMINATE ANY HORSE WHO DID NOT SHOW A STRONG PERFORMANCE   LAST TIME OUT ON A FAST OR      SLOPPY TRACK. THIS MEANS A WIN, PLACE, OR SHOW, A STRONG RUN ON THE LEADER IN THE STRETCH OR    SETTING THE EARLY PACE."
 1600 PRINT '"/// ELIMINATE ANY HORSE WHO HAS NOT RACED IN THE LAST TWO WEEKS."
 1610 PRINT '"/// ELIMINATE SHIPPERS.  THESE  ARE HORSES RUNNING AT THIS TRACKFOR THE FIRST TIME.  EXCEPTIONS MAY BE MADE FOR BIG STAKES RACES--BUT WE DO NOT RECOMMEND THESE AS GOOD BETTING PROPOSITIONS."
 1620 PRINT AT 21,3; INK 4; PAPER 0;"PRESS ANY KEY TO CONTINUE": PAUSE 60: PAUSE 0: CLS 
 1630 REM ***********************
 1640 GO SUB 1790: PRINT AT 1,4;"FACTORS USED BY HARNESS": GO SUB 1790
 1650 PRINT AT 4,0;"1: Speed of horse at 1/2 mile";AT 5,0;"2: Final speed of horse";AT 6,0;"3. Driver ability to win";AT 7,0;"4. Stretch gain last race"
 1660 PRINT AT 8,0;"5: Class of the contending horse";AT 9,0;"6: Post position last race";AT 10,0;"7: Post position this race";AT 11,0;"8: Relationship of all above";AT 21,3; INK 4; PAPER 0;"PRESS ANY KEY TO CONTINUE"
 1670 PAUSE 90: PAUSE 0: CLS 
 1680 GO SUB 1790: PRINT AT 1,5;"ELIMINATE the LOSERS": GO SUB 1790: GO SUB 1790: PRINT AT 4,5;"AVOID THE FOLLOWING": GO SUB 1790
 1690 PRINT AT 6,0;"1. MAIDENS !(Terrible Wagers...)";"2. CHEAPER TROTTERS (These races   usually have breakers).": PRINT AT 9,0;"3. EXCESSIVE EXOTIC WAGERS         (doubles, triples, etc.).": PRINT AT 11,0;"4. ANY ";
 1700 PRINT "'OFF' "; INK 6;"TRACK (Muddy,         sloppy, good, etc.)": PRINT AT 13,0;"5. TIPS ! TIPS ! TIPS ! (You can   get a 'tip' on every horse in   race)"
 1710 PRINT AT 21,3; INK 4; PAPER 0;"PRESS ANY KEY TO CONTINUE": PAUSE 60: PAUSE 0
 1720 CLS : GO SUB 1790: PRINT "HANDICAPPING REMINDERS AND TIPS": GO SUB 1790
 1730 PRINT AT 5,0;"1. PRIOR TO HANDICAPPING INPUT:";"  A. THROWOUT  THE NON-CONTENDERS";" B. MAKE UP A DRIVER LIST (15%      wins)";"                        C. SKIP THE 'BAD' RACES."
 1740 PRINT '"2. PROOF YOUR INPUT DATA (mark     race lines, circle key infor-   mation etc.)": PRINT '"3. REMEMBER- FOR THE TIME INPUTS": PRINT " A. USE 4 DIGITS": PRINT " B. FIRST 3-DIGITS REPRESENT        MINUTES & SECONDS"
 1750 PRINT " C. LAST DIGIT REPRESENT 'FIFTH'    OF A SECOND"
 1760 PRINT AT 21,3; INK 4; PAPER 0;"PRESS ANY KEY TO CONTINUE": PAUSE 60
 1770 PAUSE 0
 1780 GO TO 1330
 1790 PRINT "--------------------------------"
 1800 RETURN 
 1810 GO TO 1330
 1820 PRINT AT 6,1;"ONE MOMENT, PLEASE"
 1830 GO SUB 1980
 1840 CLS : PRINT AT 6,1;"PLEASE ENTER THE NUMBER OF THIS RACE "; FLASH 1;"::": INPUT "RACE NUMBER ";RACENUMBER: PRINT AT 7,6; FLASH 0;RACENUMBER: GO SUB 2320
 1850 CLS : GO SUB 2090
 1860 PRINT AT 1,0;T$(1): PRINT AT 2,0;T$(2);AT 3,0;T$(3)
 1870 GO SUB 1790
 1880 LET VERT=6
 1890 FOR K=1 TO R
 1900 PRINT AT VERT,4;: PRINT A$(K);TAB 26;STR$ (2*R(K));
 1910 LET VERT=VERT+1
 1920 NEXT K
 1930 PRINT AT 19,0;: GO SUB 1790
 1940 INPUT "DO YOU WANT A PRINTOUT (Y/N)";F$: IF F$="Y" THEN GO TO 2120
 1950 PRINT AT 20,0;"DO YOU WANT TO HANDICAP ANOTHER RACE ? (Y/N)": INPUT Z$: IF Z$="Y" THEN LET HP=0: GO TO 110
 1960 CLS : GO TO 1330
 1970 REM ****** BUBBLESORT *****
 1980 LET T=0
 1990 FOR L=1 TO R-1
 2000 IF R(L)>=R(L+1) THEN GO TO 2030
 2010 LET E=R(L): LET R(L)=R(L+1): LET R(L+1)=E: LET E$=A$(L): LET A$(L)=A$(L+1): LET A$(L+1)=E$
 2020 LET T=1
 2030 NEXT L
 2040 IF T=1 THEN GO TO 1980
 2050 REM PUT IN LEADERING
 2060 FOR K=1 TO R: IF VAL (A$(K, TO 2))<10 THEN LET A$(K)=" "+A$(K, TO )
 2070 LET A$(K)=" "+A$(K)+" "+"...": NEXT K
 2080 RETURN 
 2090 CLS 
 2100 GO SUB 1790
 2110 RETURN 
 2120 GO SUB 980
 2130 INPUT "HEADER 1. ";H$(1)
 2140 INPUT "HEADER 2. ";H$(2)
 2150 PRINT ''"PREPARE PRINTER "
 2160 PRINT AT 21,3; INK 4; PAPER 0;"PRESS ANY KEY WHEN READY"
 2170 PAUSE 60: PAUSE 0
 2180 LPRINT : LPRINT : LPRINT : LPRINT "   ";T$(1): LPRINT TAB 8;T$(2): LPRINT TAB 8;T$(3)
 2190 LPRINT "================================"
 2200 IF H$(1)<>"" THEN LPRINT : LPRINT H$(1)
 2210 IF H$(1)="" THEN GO TO 2230
 2220 LET J(2)=0: LPRINT TAB J(2);H$(2)
 2230 LPRINT '"================================": LPRINT '''
 2240 LPRINT TAB (5);"HORSE";TAB 26;"RATING": LPRINT ''
 2250 FOR K=1 TO R
 2260 LPRINT TAB (2);A$(K);TAB 27;STR$ (2*R(K))
 2270 NEXT K
 2280 LPRINT '''"================================"
 2290 LPRINT " *** THE HARNESS HANDICAPPER ***": LPRINT "  *** FEDERAL HILL SOFTWARE ***": LPRINT "      *** BALTIMORE, MD ***     ": LPRINT "================================": LPRINT '''
 2300 REM 
 2310 GO TO 1950
 2320 LET T$(1)="The HARNESS HANDICAPPER         ": LET T$(2)="RATING REPORT ": LET L(1)=LEN T$(1): LET V(1)=INT ((32-L(1))/2): LET L(2)=LEN (T$(2)): LET V(2)=INT ((32-L(2))/2)
 2330 LET T$(3)="RACE NUMBER "+STR$ (RACENUMBER): LET L(3)=LEN T$(3): LET V(3)=INT ((32-L(3)/2))
 2340 RETURN 
 2350 INK 6: PAPER 0: BORDER 0
 2360 GO SUB 3640
 2370 DATA "1-1","4.00","2.80","2.20","6-5","4.40","3.00","2.20","7-5","4.80","3.20","2.80","8-5","5.20","3.20","2.80","9-5","5.60","3.20","2.80","2-1","6.00","3.40","2.80","5-2","7.00","3.60","3.00","3-1","8.00","4.00","3.00","4-1","10.00","5.20","3.40","5-1","12.00","6.00","4.00","6-1","12.00","7.00","4.40","8-1","18.00","8.00","5.20"
 2380 DATA "10-1","22.00","8.00","5.20","20-1","42.00","18.00","10.00"
 2390 PAPER 6: INK 4: BORDER 6: CLS : PRINT "********************************": PRINT TAB 10;"WAGER MASTER": PRINT "________________________________"
 2400 INK 2
 2410 PRINT " THE MENU :": PRINT '"1> STANDARD PAYOFFS": PRINT '"2> RETURN PER SPECIFIC WAGER": PRINT '"3> RETURN PER SPECIFIC ODDS": PRINT '"4> DAILY DOUBLE WAGERS": PRINT '"5> PERFECTA, EXACTA TYPE WAGERS"
 2420 PRINT '"6> TRIFECTA,TRIPLE TYPE WAGERS": PRINT '"7> "; INK 2;"Run HORSES"
 2430 REM 
 2440 PRINT TAB 4; INK 7; PAPER 1;"FEDERAL HILL SOFTWARE CO.": PRINT TAB 9; INK 7; PAPER 1;"BALTIMORE, MD"
 2450 PRINT "    < TYPE NO. OF SELECTION >"
 2460 LET Z$=INKEY$: IF Z$="" THEN GO TO 2460
 2465 IF Z$<CHR$ (49) OR Z$>CHR$ (55) THEN GO TO 2460
 2470 IF VAL z$<1 OR VAL z$>7 THEN GO TO 2460
 2480 LET AA=VAL Z$: GO TO (2490 AND AA=1)+(2610 AND AA=2)+(2870 AND AA=3)+(3110 AND AA=4)+(3260 AND AA=5)+(3430 AND AA=6)+(100 AND AA=7)
 2490 INK 7: PAPER 1: BORDER 1: CLS : PRINT "********************************": PRINT "ESTIMATED PAYOFF ON $2.00 WAGER": PRINT "********************************"
 2500 PRINT "-ODDS-";TAB 9;"-WIN-";TAB 17;"-PLACE-";TAB 26;"-SHOW-"
 2510 PRINT "------   -----   -------  ------"
 2520 FOR X=1 TO 14
 2530 REM 
 2540 REM 
 2550 REM 
 2560 PRINT O$(X);: LET T=VAL (W$(X)): GO SUB CASH: PRINT "  ";Q$;: LET T=VAL (P$(X)): GO SUB CASH: PRINT "  ";Q$;: LET T=VAL (S$(X)): GO SUB CASH: PRINT Q$
 2570 NEXT X
 2580 PRINT AT 21,12;"(M)enu"
 2590 PAUSE 60: PAUSE 0
 2600 GO TO 2390
 2610 CLS 
 2620 PRINT "********************************": PRINT "   RETURN PER SPECIFIC WAGER": PRINT "********************************"
 2630 PRINT "SELECT ANTICIPATED ODDS:": PRINT '"(1) 1-1 (2) 6-5  (3)7-5  (4) 8-5": PRINT "(5) 9-5 (6) 2-1  (7)5-2  (8) 3-1"
 2640 PRINT "(9) 4-1    (10) 5-1   (11) 6-1 ": PRINT "(12) 8-1   (13) 10-1  (14) 20-1"
 2650 PRINT "--------------------------------"
 2660 ON ERR GO TO 2660: INPUT "SELECT (1 - 14) ";Y$: IF VAL Y$>14 THEN GO TO 2660
 2670 ON ERR RESET : LET X=VAL Y$: PRINT "ODDS = ";O$(X);":::";
 2680 ON ERR GO TO 2680: INPUT "HOW MUCH TO WIN ? ";WM: PRINT AT 10,15;"W=";WM;: INPUT "HOW MUCH TO PLACE ? ";PM: PRINT " P=";PM;: INPUT "HOW MUCH TO SHOW ? ";SM: PRINT " S=";SM
 2690 ON ERR RESET : PRINT "FOR A HORSE AT ";O$(X);" ODDS"
 2700 PRINT "TOTAL WAGER OF $";: LET T=WM+PM+SM: GO SUB CASH: PRINT Q$
 2710 PRINT "YOUR PAYOFF WOULD BE :"
 2720 LET W=VAL W$(X)/2: LET P=VAL P$(X)/2: LET S=VAL S$(X)/2
 2730 PRINT "WIN    $";: LET T=WM*W: GO SUB CASH: PRINT Q$
 2740 PRINT "PLACE  $";: LET T=PM*P: GO SUB CASH: PRINT Q$
 2750 PRINT "SHOW   $";: LET T=SM*S: GO SUB CASH: PRINT Q$
 2760 PRINT "          ------"
 2770 PRINT "TOTAL  $";: LET T=(WM*W)+(PM*P)+(SM*S): GO SUB CASH: PRINT Q$
 2780 PRINT "LESS   $";: LET T=WM+PM+SM: GO SUB CASH: PRINT Q$
 2790 PRINT "PROFIT $";: LET T=((WM*W)+(PM*P)+(SM*S))-(WM+PM+SM): GO SUB CASH: PRINT Q$
 2800 PRINT AT 21,5;"<A>nother   <M)enu"
 2810 LET Z$=INKEY$: IF Z$="" THEN GO TO 2810
 2820 IF Z$="A" THEN GO TO 2850
 2830 IF Z$="M" THEN GO TO 2390
 2840 GO TO 2810
 2850 FOR L=10 TO 21: PRINT AT L,0;"                                ": NEXT L: PRINT AT 10,0;
 2860 GO TO 2660
 2870 CLS 
 2880 PRINT "********************************": PRINT "    RETURN per SPECIFIC ODDS": PRINT "********************************"
 2890 PRINT '"SELECT ANTICIPATED ODDS:": PRINT '"(1)  1-1    (2)  6-5    (3)  7-5": PRINT "(4)  8-5    (5)  9-5    (6)  2-1": PRINT "(7)  5-2    (8)  3-1    (9)  4-1"
 2900 PRINT "(10) 5-1    (11) 6-1    (12) 8-1": PRINT "(13) 10-1   (14) 20-1"
 2910 PRINT "--------------------------------"
 2920 ON ERR GO TO 2920: INPUT "SELECT (1 - 14) ";Y$: IF VAL Y$>14 THEN GO TO 2920
 2930 ON ERR RESET : LET X=VAL Y$: PRINT " ODDS=";O$(X)
 2940 PRINT TAB 8;"WIN ONLY ->"
 2950 PAUSE 120
 2960 LET MU=VAL (W$(X))/2
 2970 PRINT "WAGER  $ 2.00   PAYOFF $";: LET T=2*MU: GO SUB CASH: PRINT Q$
 2980 PRINT "WAGER  $ 4.00   PAYOFF $";: LET T=4*MU: GO SUB CASH: PRINT Q$
 2990 PRINT "WAGER  $ 5.00   PAYOFF $";: LET T=5*MU: GO SUB CASH: PRINT Q$
 3000 PRINT "WAGER  $ 6.00   PAYOFF $";: LET T=6*MU: GO SUB CASH: PRINT Q$
 3010 PRINT "WAGER  $10.00   PAYOFF $";: LET T=10*MU: GO SUB CASH: PRINT Q$
 3020 PRINT "WAGER  $20.00   PAYOFF $";: LET T=20*MU: GO SUB CASH: PRINT Q$
 3030 PRINT "WAGER  $50.00   PAYOFF $";: LET T=50*MU: GO SUB CASH: PRINT Q$
 3040 PRINT AT 21,5;"<A>nother   <M)enu"
 3050 LET Z$=INKEY$: IF Z$="" THEN GO TO 3050
 3060 IF Z$="A" THEN GO TO 3090
 3070 IF z$="M" THEN GO TO 2390
 3080 GO TO 3050
 3090 PRINT AT 12,0;: FOR L=13 TO 22: PRINT "                                ": NEXT L: PRINT AT 12,0;
 3100 GO TO 2920
 3110 CLS : FOR l=1 TO 4: PRINT "                                ": NEXT l: PRINT "********************************": PRINT "   THE DAILY DOUBLE SELECTION": PRINT "********************************"
 3120 ON ERR GO TO 3120: BEEP .2,.2: INPUT "TOP CHOICE-1ST RACE ";T1: BEEP .3,.3: INPUT "2ND CHOICE-1ST RACE ";T2: BEEP .4,.4: INPUT "TOP CHOICE-2ND RACE ";T3: BEEP .5,.5: INPUT "2ND CHOICE-2ND RACE ";T4
 3130 ON ERR RESET : PRINT "--------------------------------"
 3140 LET G$(1)="KEY BET: ": LET G$(2)=STR$ (T1): LET G$(3)=STR$ (T3): LET J$=G$(2, TO 2)+" -"+G$(3, TO 2)
 3150 PRINT G$(1);" ";J$
 3160 PRINT "Also:  ";T1;"-";T4;" ** ";T2;"-";T3
 3170 PRINT "POSSIBLE HEDGE: ";T2;"-";T4: PRINT "--------------------------------"
 3180 PRINT "--------------------------------"
 3190 PRINT AT 21,6;"[M]enu    [P]rinter"
 3200 LET Z$=INKEY$: IF Z$="" THEN GO TO 3200
 3210 IF Z$="M" THEN GO TO 2390
 3220 GO TO (3230 AND Z$="P")+(2390 AND Z$="M")
 3225 GO TO 3210
 3230 PRINT "PRINTING": LPRINT '"--------------------------------": LPRINT "  **DAILY DOUBLE SELECTION **": LPRINT "KEY BET: ";T1;"-";T3: LPRINT "Also: ";T1;"-";T4;" and ";T2;"-";T3
 3240 LPRINT '"POSSIBLE HEDGE BET:";T2;"-";T3: LPRINT "--------------------------------"
 3250 PRINT "PRINT ACTION FINISHED": PAUSE 150: GO TO 2390
 3260 ON ERR RESET : CLS : PRINT "********************************": PRINT " PERFACTA/EXACTA COMBINATIONS";"   ********************************"
 3270 ON ERR GO TO 3270: BEEP .25,9: INPUT "ENTER TOP CHOICE ";T1
 3280 BEEP .25,11: INPUT "SECOND CHOICE ";T2: BEEP .25,13: INPUT "THIRD CHOICE ";T3: PRINT "FIRST CHOICE ";T1: PRINT "SECOND CHOICE ";T2: PRINT "THIRD CHOICE ";T3
 3290 ON ERR RESET : PRINT "--------------------------------"
 3300 PRINT "The COMBINATIONS :"
 3310 PRINT "         ";T1;"-";T2;" ** ";T1;"-";T3
 3320 PRINT "         ";T2;"-";T1;" ** ";T3;"-";T1
 3330 PRINT '"IF TOP CHOICE IS 5-1 OR GREATER": PRINT "CONSIDER PLAYING ";T1;"-all"
 3340 PRINT "--------------------------------"
 3350 PRINT AT 21,4;"[M]enu   [P]rinter"
 3360 LET X$=INKEY$: IF x$="" THEN GO TO 3360
 3370 GO TO (2390 AND X$="M")+(3380 AND X$="P")
 3375 GO TO 3350
 3380 ON ERR RESET : ON ERR GO TO 3380: BEEP .25,8: INPUT "INPUT RACE NO. ";RN: LPRINT "--------------------------------": LPRINT " * PERFECTA/EXACTA WAGERING *"
 3390 ON ERR RESET : PRINT "PRINTING": LPRINT TAB 6;"RACE NO. ";RN: LPRINT '"Combinations To Play": LPRINT TAB 4;T1;"-";T2;TAB 20;T1;"-";T3: LPRINT TAB 4;T2;"-";T1;TAB 20;T3;"-";T1
 3400 LPRINT '"IF CHOICE IS 5-1 OR UP CONSIDER": LPRINT TAB 4;T1;"-all"
 3410 LPRINT '"--------------------------------"
 3420 PRINT '"PRINTING COMPLETE": BEEP .25,10: PAUSE 300: GO TO 2390
 3430 CLS : PRINT "********************************": PRINT "  TRIPLE/TRIFECTA COMBINATIONS"
 3440 ON ERR GO TO 3440: PRINT '"ENTER HORSE NUMBERS": BEEP .25,6: INPUT "TOP SELECTION ";T1
 3450 BEEP .25,7: INPUT "2ND SELECTION ";T2
 3460 BEEP .25,8: INPUT "3RD SELECTION ";T3
 3470 BEEP .25,9: INPUT "4TH SELECTION ";T4
 3480 ON ERR RESET : PRINT "TOP SELECTION ";T1: PRINT "2ND SELECTION ";T2: PRINT "3RD SELECTION ";T3: PRINT "4TH SELECTION ";T4: PRINT "--------------------------------"
 3490 INK 4: PAPER 7: PRINT "TRIPLE SELECTIONS: ": PRINT TAB 4;T1;"-";T2;"-";T3: PRINT TAB 4;T1;"-";T2;"-";T4
 3500 PRINT TAB 4;T1;"-";T3;"-";T2;TAB 18;T1;"-";T3;"-";T4: PRINT TAB 4;T1;"-";T4;"-";T2;TAB 18;T1;"-";T4;"-";T3
 3510 PRINT '"THE HEDGE BOX : ";T1;"-";T2;"-";T3: PRINT "--------------------------------"
 3520 PRINT AT 21,6;"[M]enu     [P]rinter"
 3530 LET X$=INKEY$: IF X$="" THEN GO TO 3530
 3540 GO TO (2390 AND X$="M")+(3550 AND X$="P")
 3545 GO TO 3530
 3550 PRINT '"PRINTING": LPRINT "--------------------------------": LPRINT "        TRIPLE SELECTION"
 3560 LPRINT 'T1;"-";T2;"-";T3;TAB 20;T1;"-";T2;"-";T4
 3570 LPRINT 'T1;"-";T3;"-";T2;TAB 20;T1;"-";T3;"-";T4
 3580 LPRINT 'T1;"-";T4;"-";T2;TAB 20;T1;"-";T4;"-";T3
 3590 LPRINT '"The Hedge Box : ";T1;"-";T2;"-";T3
 3600 LPRINT "--------------------------------"
 3610 PRINT '"PRINTING OPERATION COMPLETED": PAUSE 120
 3620 GO TO 2390
 3630 GO TO 90
 3640 FOR X=1 TO 14
 3650 READ O$(X): READ W$(X): READ P$(X): READ S$(X)
 3660 NEXT X
 3670 RESTORE : RETURN 
 3680 LET N=0: DIM Q$(8): LET Q$=STR$ T
 3690 IF Q$(8)=CHR$ 32 THEN LET Q$=CHR$ 32+Q$( TO 7): GO TO 3690
 3700 FOR L=1 TO 8
 3710 IF Q$(L)="." THEN GO TO 3730
 3720 NEXT L
 3730 IF L=9 THEN LET Q$=Q$(4 TO )+".00"
 3740 IF L=7 THEN LET Q$=Q$(2 TO )+"0"
 3750 IF Q$(6)<>"." THEN LET N=1
 3760 RETURN 
 4010 RETURN 
 9992 SAVE "HANDIC.B1" LINE 1
 9998 REM  was LKDOS-only

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.