' ' #DEBUG ERROR ON ' (Don't forget to un-comment the "ON ERROR GOTO...") ' #COMPILE EXE #RESOURCE "SBS.PBR" ' ' ** Strategic Baseball Simulator v 4.9 for Windows under PB/CC 2.11 ' Copyright 1988-2008 David B. Schmidt ' ' #INCLUDE "WIN32API.INC" '========================================================================= ' Equates and declares extracted from Win32api.inc for following code file ' and all its includes: C:\PBCC21\sbs49\Basev49.bas ' Saved as: C:\PBCC21\sbs49\WinClean.inc ' ' Note: WinClean.inc can be used as direct replacement for Win32api.inc ' in above mentioned code file, but you can also copy and paste the contents ' directly into the above mentioned code file, instead of including it.. :) '----------------------------------------------------------- ' Equates: 47 '----------------------------------------------------------- %WINAPI = 1 %TRUE = 1 %FALSE = 0 %NULL = 0 %Black = &H000000??? %Gray = &H808080??? %GMEM_FIXED = &H0 %CREATE_NEW_CONSOLE = &H10 %NORMAL_PRIORITY_CLASS = &H0020 %STARTF_USESHOWWINDOW = &H00000001 %MK_SHIFT = &H4 %MK_CONTROL = &H8 %COLOR_SCROLLBAR = 0 %COLOR_BACKGROUND = 1 %COLOR_ACTIVECAPTION = 2 %COLOR_INACTIVECAPTION = 3 %COLOR_MENU = 4 %COLOR_MSGBOX = 4 %COLOR_WINDOW = 5 %COLOR_WINDOWFRAME = 6 %COLOR_MENUTEXT = 7 %COLOR_MSGBOXTEXT = 7 %COLOR_WINDOWTEXT = 8 %COLOR_CAPTIONTEXT = 9 %COLOR_ACTIVEBORDER = 10 %COLOR_INACTIVEBORDER = 11 %COLOR_APPWORKSPACE = 12 %COLOR_HIGHLIGHT = 13 %COLOR_HIGHLIGHTTEXT = 14 %COLOR_BTNFACE = 15 %COLOR_BTNSHADOW = 16 %COLOR_GRAYTEXT = 17 %COLOR_BTNTEXT = 18 %COLOR_INACTIVECAPTIONTEXT = 19 %COLOR_BTNHIGHLIGHT = 20 %COLOR_3DDKSHADOW = 21 %COLOR_3DLIGHT = 22 %COLOR_INFOTEXT = 23 %COLOR_INFOBK = 24 %IDI_APPLICATION = 32512& %IDI_HAND = 32513& %IDI_QUESTION = 32514& %IDI_EXCLAMATION = 32515& %IDI_ASTERISK = 32516& %IDI_WINLOGO = 32517& %SND_ASYNC = &H1 ' play asynchronously %SND_MEMORY = &H4 ' lpszSoundName points to a memory file '----------------------------------------------------------- ' TYPE and UNION: 5 '----------------------------------------------------------- TYPE SECURITY_ATTRIBUTES nLength AS DWORD lpSecurityDescriptor AS LONG bInheritHandle AS LONG END TYPE TYPE PROCESS_INFORMATION hProcess AS DWORD hThread AS DWORD dwProcessId AS DWORD dwThreadId AS DWORD END TYPE TYPE STARTUPINFO cb AS DWORD lpReserved AS ASCIIZ PTR lpDesktop AS ASCIIZ PTR lpTitle AS ASCIIZ PTR dwX AS DWORD dwY AS DWORD dwXSize AS DWORD dwYSize AS DWORD dwXCountChars AS DWORD dwYCountChars AS DWORD dwFillAttribute AS DWORD dwFlags AS DWORD wShowWindow AS WORD cbReserved2 AS WORD lpReserved2 AS BYTE PTR hStdInput AS LONG hStdOutput AS LONG hStdError AS LONG END TYPE TYPE SMALL_RECT xLeft AS INTEGER xTop AS INTEGER xRight AS INTEGER xBottom AS INTEGER END TYPE TYPE CONSOLE_CURSOR_INFO dwSize AS DWORD bVisible AS LONG END TYPE '----------------------------------------------------------- ' Declared Functions: 11 '----------------------------------------------------------- DECLARE FUNCTION CloseHandle LIB "KERNEL32.DLL" ALIAS "CloseHandle" (BYVAL hObject AS DWORD) AS LONG DECLARE FUNCTION CreateProcess LIB "KERNEL32.DLL" ALIAS "CreateProcessA" (lpApplicationName AS ASCIIZ, lpCommandLine AS ASCIIZ, lpProcessAttributes AS SECURITY_ATTRIBUTES, lpThreadAttributes AS SECURITY_ATTRIBUTES, _ BYVAL bInheritHandles AS LONG, BYVAL dwCreationFlags AS DWORD, lpEnvironment AS ANY, lpCurrentDirectory AS ASCIIZ, lpStartupInfo AS STARTUPINFO, lpProcessInformation AS PROCESS_INFORMATION) AS LONG DECLARE FUNCTION GetConsoleCursorInfo LIB "KERNEL32.DLL" ALIAS "GetConsoleCursorInfo" (BYVAL hConsoleOutput AS DWORD, lpConsoleCursorInfo AS CONSOLE_CURSOR_INFO) AS LONG DECLARE FUNCTION GlobalAlloc LIB "KERNEL32.DLL" ALIAS "GlobalAlloc" (BYVAL wFlags AS DWORD, BYVAL dwBytes AS DWORD) AS LONG DECLARE FUNCTION GlobalFree LIB "KERNEL32.DLL" ALIAS "GlobalFree" (BYVAL hMem AS DWORD) AS LONG DECLARE FUNCTION mciSendString LIB "WINMM.DLL" ALIAS "mciSendStringA" (lpstrCommand AS ASCIIZ, lpstrReturnString AS ASCIIZ, BYVAL uReturnLength AS DWORD, BYVAL hwndCallback AS DWORD) AS LONG DECLARE FUNCTION ReadConsoleOutput LIB "KERNEL32.DLL" ALIAS "ReadConsoleOutputA" (BYVAL hConsoleOutput AS DWORD, BYVAL lpBuffer AS DWORD, BYVAL dwBufferSize AS DWORD, BYVAL dwBufferCoord AS DWORD, lpReadRegion AS SMALL_RECT) AS LONG DECLARE FUNCTION SetConsoleCursorInfo LIB "KERNEL32.DLL" ALIAS "SetConsoleCursorInfo" (BYVAL hConsoleOutput AS DWORD, lpConsoleCursorInfo AS CONSOLE_CURSOR_INFO) AS LONG DECLARE FUNCTION SetConsoleCursorPosition LIB "KERNEL32.DLL" ALIAS "SetConsoleCursorPosition" (BYVAL hConsoleOutput AS DWORD, BYVAL dwCursorPosition AS DWORD) AS LONG DECLARE FUNCTION sndPlaySound LIB "WINMM.DLL" ALIAS "sndPlaySoundA" (lpszSoundName AS ASCIIZ, BYVAL uFlags AS DWORD) AS LONG DECLARE FUNCTION WriteConsoleOutput LIB "KERNEL32.DLL" ALIAS "WriteConsoleOutputA" (BYVAL hConsoleOutput AS DWORD, BYVAL lpBuffer AS DWORD, BYVAL dwBufferSize AS DWORD, BYVAL dwBufferCoord AS DWORD, lpWriteRegion AS SMALL_RECT) AS LONG '========================================================================= #INCLUDE "SCRNIO.INC" #INCLUDE "\CONTOOLS\CT_STD.INC" #INCLUDE "\GFXTOOLS\GfxT_Pro.INC" DECLARE SUB AddToAnnouncer(team&, x$) DECLARE SUB MyBeep DECLARE SUB Pauseit DECLARE SUB LOCATEs (row&, col&) DECLARE SUB QPRINTs (row&, col&, x$, attr&) DECLARE FUNCTION ConsoleShell (BYVAL CmdLine$, BYVAL ShowWindState&) AS LONG DECLARE FUNCTION PitcherCloneUnused (SearchName$, tm&) AS LONG DECLARE FUNCTION SearchDAT (s1&, s2&, tm&, SearchName$, posit&) AS LONG DECLARE FUNCTION DrawToRow (row&, wincols&) AS LONG DECLARE FUNCTION DrawToCol (col&, wincols&) AS LONG DECLARE FUNCTION InBox (r1&, c1&, r2&, c2&, r&, c&, b&) AS LONG DECLARE FUNCTION CalcAttr (i&, j&) AS LONG DECLARE FUNCTION CircularFcn! (x!) DECLARE FUNCTION HITRATING! (i&, j&) DECLARE FUNCTION CalcOPS! (i&, j&) DECLARE FUNCTION FoundInMMList(x$) AS LONG DECLARE FUNCTION LineSCORE$(t&) DECLARE FUNCTION Canada (x$) AS LONG DECLARE FUNCTION FRND (i&) AS LONG DECLARE FUNCTION FIRSTNAME$(x$) DECLARE FUNCTION FULLNAME$(x$) DECLARE FUNCTION LASTNAME$(x$) DECLARE FUNCTION FLASTNAME$(i&, j&) DECLARE FUNCTION FLASTNAMER$(i&, j&) DECLARE FUNCTION BUBuildLine$(j&, t&, k&) DECLARE FUNCTION FOUNDPOSITION(i&, j&, k&) AS LONG DECLARE FUNCTION MenuRoutine2$ DECLARE FUNCTION MYINPUT$ (AutoSw&, KeyEscape&, KeyCustomEsc&, KeyAccept&, kc&, fore&, back&, row&, col&, leng&, edit$, lowlim&, uplim&, default$, msx&, msy&) DECLARE FUNCTION NUMERIC(x$, j&, k&) AS LONG DECLARE FUNCTION NUMBERON AS LONG DECLARE FUNCTION PADRIGHT$(x$, i&) DECLARE FUNCTION PADLEFT$(x$, i&) DECLARE FUNCTION PADZEROS$(x$, i&) DECLARE FUNCTION WHOATGUY(i&) AS LONG DECLARE FUNCTION YesOrNo$(i&, j&, k&, l&, x$) DECLARE FUNCTION CountGamesInSCH(w$, x$, y$, z$, i&, j&, k&, l&) AS LONG DECLARE FUNCTION CountGamesInSER AS LONG DECLARE FUNCTION Subdoublequote$(x$) DECLARE FUNCTION DefaultDHResponse$ DECLARE FUNCTION ExpectedPitchCount(i&, j&) AS LONG DECLARE FUNCTION HiSaves(i&) AS LONG DECLARE FUNCTION Codesum(x$) AS LONG DECLARE FUNCTION PlayWav(WavFile$) AS LONG DECLARE FUNCTION JDATE(x$) AS LONG DECLARE FUNCTION GetDaysOff(i&, j&) AS LONG DECLARE FUNCTION DHinDAT (i&) AS LONG DECLARE FUNCTION FindRA$ (RecNum&, fp&, Reclen&, start&, leng&) DECLARE FUNCTION FFormat$(InValue!, mask$) DECLARE FUNCTION LFormat$(InValue&, mask$) DECLARE FUNCTION IFormat$(InValue%, mask$) DECLARE FUNCTION ReturnLineInTextFile$(f$, k$, start&, leng&) DECLARE FUNCTION MyRound!(InValue!, DecPts&) DECLARE FUNCTION DEFSplit!(n&, defp!, adj!) DECLARE FUNCTION DEFPCT!(i&) DECLARE FUNCTION TotalBases (Hits&, Doubles&, Triples&, HR&) AS LONG DECLARE FUNCTION RunsCreated! (TB&, Hits&, BB&, AB&) DECLARE FUNCTION RunsAllowed! (TB&, Hits&, BB&, INNINGS&, SO&) DECLARE FUNCTION BattersFacedByPit! (Innings&, Hits&, BB&, SO&) DECLARE FUNCTION LW! (Hits&, Doubles&, Triples&, HR&, BB&) DECLARE FUNCTION RunsCreated27! (AB&, Hits&, H2&, H3&, HR&, BB&, HBP&, SH&, SF&, SB&, CS&, GIDP&) DECLARE FUNCTION FindPP! '-------------------------------------------------------- ' DECLARE FUNCTION MSGBOX(sText$, lStyle&, sTitle$) AS LONG TYPE MType 'Messages mgs AS STRING * 50 END TYPE TYPE PbyPType class AS STRING * 2 pos AS STRING * 1 seq AS STRING * 1 trk AS STRING * 2 pndx AS STRING * 3 text AS STRING * 71 END TYPE TYPE PbyP_OVL PbyP_Rec AS STRING * 80 END TYPE TYPE MMType 'Manual manager list MMFile AS STRING * 8 END TYPE TYPE ArgType 'Argument list Arg AS STRING * 25 END TYPE TYPE WLType 'Simulation Summary WLTeam AS STRING * 12 WLWins AS LONG WLLoss AS LONG WLLeague AS STRING * 1 WLDiv AS STRING * 1 WLPct AS STRING * 4 END TYPE TYPE HiLiteType HLGameNo AS LONG HLMessage AS STRING * 40 END TYPE TYPE ScoreCardType SCInn AS INTEGER SCTeam AS INTEGER SCRef AS INTEGER SCCode AS STRING * 1 SCResult AS STRING * 30 'was 10 SCBase1 AS STRING * 2 SCBase2 AS STRING * 2 SCBase3 AS STRING * 2 SCBase4 AS STRING * 2 END TYPE TYPE List1Type 'Input to sorting routines ListItem AS STRING * 120 'was 35/50 END TYPE TYPE PlyListType 'Input to sorting routines Item AS STRING * 80 Ref AS INTEGER END TYPE TYPE PosPoolType PSlot AS INTEGER PABbyPos AS SINGLE PPct AS SINGLE PRepl AS INTEGER END TYPE TYPE RotType RotTeam AS STRING * 12 RotMeth AS STRING * 2 RotSpot AS STRING * 1 RotIndex AS INTEGER RotList(5) AS INTEGER END TYPE TYPE RefOrgType RefNo AS INTEGER RefPos AS INTEGER END TYPE TYPE RankType Criteria AS STRING * 4 Slot AS INTEGER END TYPE TYPE PHType Criteria1 AS STRING * 4 Criteria2 AS STRING * 4 Slot AS INTEGER END TYPE TYPE TotPctType PctOfTot AS SINGLE Slot AS INTEGER END TYPE TYPE StatSummary VLeague AS STRING * 1 VDiv AS STRING * 1 VNam AS STRING * 12 VRuns AS LONG VHits AS LONG VErrs AS LONG VLOB AS LONG VDPs AS LONG HLeague AS STRING * 1 HDiv AS STRING * 1 HNam AS STRING * 12 HRuns AS LONG HHits AS LONG HErrs AS LONG HLOB AS LONG HDPs AS LONG WP AS STRING * 14 LP AS STRING * 14 SP AS STRING * 14 SumFil AS STRING * 2 END TYPE TYPE BatSummary BLeague AS STRING * 1 BTmNam AS STRING * 12 BNam AS STRING * 16 BBats AS STRING * 1 BGameCtr AS LONG BGames AS LONG BABs AS LONG BABsRHP AS LONG BABsLHP AS LONG BRuns AS LONG BHits AS LONG BHitsRHP AS LONG BHitsLHP AS LONG BRBIs AS LONG B2Bs AS LONG B2BsRHP AS LONG B2BsLHP AS LONG B3Bs AS LONG B3BsRHP AS LONG B3BsLHP AS LONG BHRs AS LONG BHRsRHP AS LONG BHRsLHP AS LONG BSBs AS LONG BCSs AS LONG BBBs AS LONG BBBsRHP AS LONG BBBsLHP AS LONG BHB AS LONG BKs AS LONG BKsRHP AS LONG BKsLHP AS LONG BErrs AS LONG BStreak AS LONG BGDP AS LONG BSacB AS LONG BSacF AS LONG END TYPE TYPE BatSummaryOVL BatSummaryRec AS STRING * 162 END TYPE TYPE PitSummary PLeague AS STRING * 1 PTmNam AS STRING * 12 PNam AS STRING * 16 PThrows AS STRING * 1 PGameCtr AS LONG PGames AS LONG PStarts AS LONG PCGs AS LONG PShOs AS LONG PInns AS LONG P3rds AS LONG PRuns AS LONG PERuns AS LONG PHits AS LONG P2Bs AS LONG P3Bs AS LONG PHRs AS LONG PBBs AS LONG PHB AS LONG PSOs AS LONG PWin AS LONG PLoss AS LONG PSave AS LONG PBS AS LONG PBF AS LONG PDaysOff AS LONG PJDate AS LONG PStreak AS LONG END TYPE TYPE PitSummaryOVL PitSummaryRec AS STRING * 126 END TYPE TYPE FldSummary FLeague AS STRING * 1 FTmNam AS STRING * 12 FNam AS STRING * 16 FThrows AS STRING * 1 FCount AS LONG FGamesByPos (1 TO 12) AS LONG ' 11=PH 12=PR FErrsByPos (1 TO 10) AS LONG FPutOutsByPos(1 TO 10) AS LONG FAssistsByPos(1 TO 10) AS LONG END TYPE TYPE FldSummaryOVL FldSummaryRec AS STRING * 202 END TYPE TYPE RestartType ResSCHName AS STRING * 12 ResSCHDate AS STRING * 8 ResSCHSlotPtr AS INTEGER ResSlotGameCtr AS INTEGER ResSlotGames AS INTEGER ResSimGameCtr AS LONG END TYPE TYPE VirtualWinType item AS STRING * 140 END TYPE TYPE LAvgType 'Stores League Averages for each YYYYL - Not GLOBAL LAvgYr AS STRING * 4 LAvgLg AS STRING * 1 LAvgBB AS SINGLE LAvgSO AS SINGLE LAvgS2 AS SINGLE LAvg1B AS SINGLE LAvg2B AS SINGLE LAvg3B AS SINGLE LAvgHR AS SINGLE LAvgRG AS SINGLE LTeams AS INTEGER Innings AS LONG Hits AS LONG Doubles AS INTEGER Triples AS INTEGER HR AS INTEGER BB AS INTEGER Rating AS INTEGER END TYPE TYPE BufType 'For File-Listing Sub BufferItem AS STRING * 210 END TYPE TYPE ScrType ScrLine AS STRING * 18 END TYPE TYPE PosiType ScrLine AS STRING * 1 END TYPE TYPE PitTblType ScrLine AS STRING * 39 END TYPE TYPE STSAnal ALeague AS STRING * 1 ADiv AS STRING * 1 APct AS STRING * 4 ANam AS STRING * 12 AWins AS LONG ALosses AS LONG AHomWins AS LONG AHomLosses AS LONG AHRunsS AS LONG AHRunsA AS LONG AVisWins AS LONG AVisLosses AS LONG AVRunsS AS LONG AVRunsA AS LONG ARuns AS LONG AOppRuns AS LONG AHits AS LONG AErrs AS LONG ALOB AS LONG ADP AS LONG END TYPE TYPE SortStrType SSItem AS STRING * 29 END TYPE TYPE BoxType row1 AS LONG col1 AS LONG row2 AS LONG col2 AS LONG END TYPE TYPE ScheduleLineType Visitor AS STRING * 8 Home AS STRING * 8 Options AS STRING * 12 END TYPE TYPE ScheduleType Header AS STRING * 2 SDate AS STRING * 8 Slot(15) AS ScheduleLineType END TYPE 'GLOBAL ARRAYS 'GLOBAL TYPED ARRAYS: GLOBAL Announcer() AS MType GLOBAL MMList() AS MMType GLOBAL WLRec() AS WLType GLOBAL HLRec() AS HiLiteType GLOBAL SCRec() AS ScoreCardType GLOBAL RefOrg() AS RefOrgType GLOBAL RefOrgSave() AS RefOrgType GLOBAL RotRec() AS RotType GLOBAL VirtualWin() AS VirtualWinType GLOBAL SSum AS StatSummary GLOBAL BSum() AS BatSummary GLOBAL PSum() AS PitSummary GLOBAL FSum() AS FldSummary GLOBAL ArgList() AS ArgType GLOBAL RestartRec AS RestartType GLOBAL PbyP() AS PbyPType 'GLOBAL STRING ARRAYS: GLOBAL DataName() AS STRING GLOBAL DataPlat() AS STRING GLOBAL DataHand() AS STRING GLOBAL DataCode() AS STRING GLOBAL DataHP() AS STRING GLOBAL NameRef() AS STRING GLOBAL HandRef() AS STRING GLOBAL RefByBO() AS STRING GLOBAL Century() AS STRING GLOBAL Names() AS STRING GLOBAL League() AS STRING GLOBAL TeamLogo() AS STRING GLOBAL Year() AS STRING GLOBAL Div() AS STRING GLOBAL POS() AS STRING GLOBAL PosDesc() AS STRING GLOBAL GMMessage() AS STRING GLOBAL ActiveSTAT() AS STRING GLOBAL DataFil() AS STRING GLOBAL DATPath() AS STRING GLOBAL WildPit() AS STRING GLOBAL PassedB() AS STRING GLOBAL HitByPit() AS STRING GLOBAL AdjustBO() AS STRING * 1 'GLOBAL LONG INTEGER ARRAYS: GLOBAL DataGByP() AS LONG GLOBAL DataPosi() AS LONG GLOBAL SimGames() AS LONG GLOBAL SimAB() AS LONG GLOBAL SimHits() AS LONG GLOBAL SimHR() AS LONG GLOBAL SimRBI() AS LONG GLOBAL SimBStreak() AS LONG GLOBAL SimBB() AS LONG GLOBAL SimSO() AS LONG GLOBAL SimHitsAlw() AS LONG GLOBAL SimERuns() AS LONG GLOBAL SimWins() AS LONG GLOBAL SimLosses() AS LONG GLOBAL SimSaves() AS LONG GLOBAL SimBBAlw() AS LONG GLOBAL SimSO_P() AS LONG GLOBAL SimDaysOff() AS LONG GLOBAL WarmUpStatus() AS LONG GLOBAL mpo() AS LONG GLOBAL mpk() AS LONG GLOBAL mph() AS LONG GLOBAL mpw() AS LONG GLOBAL mpr() AS LONG GLOBAL mpbf() AS LONG GLOBAL mper() AS LONG GLOBAL mp2b() AS LONG GLOBAL mp3b() AS LONG GLOBAL mphr() AS LONG GLOBAL mphb() AS LONG GLOBAL mpBS() AS LONG GLOBAL DataRef() AS LONG GLOBAL DataPos() AS LONG GLOBAL DataAB() AS LONG GLOBAL DataHits() AS LONG GLOBAL Data2B() AS LONG GLOBAL Data3B() AS LONG GLOBAL DataHR() AS LONG GLOBAL DataBB() AS LONG GLOBAL DataSO() AS LONG GLOBAL DataRBI() AS LONG GLOBAL DataSB() AS LONG GLOBAL DataCS() AS LONG GLOBAL DataDef() AS LONG GLOBAL DataSpeed() AS LONG GLOBAL DataGames() AS LONG GLOBAL DataPBatAB() AS LONG GLOBAL DataPBatHi() AS LONG GLOBAL DataPBatHR() AS LONG GLOBAL DataPBatBB() AS LONG GLOBAL DataPBatSO() AS LONG GLOBAL iused() AS LONG GLOBAL OrgPos() AS LONG GLOBAL mab() AS LONG GLOBAL mabRHP() AS LONG GLOBAL mabLHP() AS LONG GLOBAL mruns() AS LONG GLOBAL mhits() AS LONG GLOBAL mhitsRHP() AS LONG GLOBAL mhitsLHP() AS LONG GLOBAL mrbi() AS LONG GLOBAL mhr() AS LONG GLOBAL mhrRHP() AS LONG GLOBAL mhrLHP() AS LONG GLOBAL m3b() AS LONG GLOBAL m3bRHP() AS LONG GLOBAL m3bLHP() AS LONG GLOBAL m2b() AS LONG GLOBAL m2bRHP() AS LONG GLOBAL m2bLHP() AS LONG GLOBAL mbb() AS LONG GLOBAL mbbRHP() AS LONG GLOBAL mbbLHP() AS LONG GLOBAL mhb() AS LONG GLOBAL merr() AS LONG GLOBAL mso() AS LONG GLOBAL msoRHP() AS LONG GLOBAL msoLHP() AS LONG GLOBAL msb() AS LONG GLOBAL mcs() AS LONG GLOBAL mGDP() AS LONG GLOBAL mSacF() AS LONG GLOBAL mSacB() AS LONG GLOBAL iScoreBd() AS LONG GLOBAL iScore() AS LONG GLOBAL itruns() AS LONG GLOBAL ithits() AS LONG GLOBAL iterrs() AS LONG GLOBAL GameLOB() AS LONG GLOBAL ipa() AS LONG GLOBAL np() AS LONG GLOBAL iyp() AS LONG GLOBAL LastPiAd() AS LONG GLOBAL amgr() AS LONG GLOBAL ibp() AS LONG GLOBAL dp() AS LONG GLOBAL mpp() AS LONG GLOBAL SoundQ() AS LONG GLOBAL AutoLineUpSw() AS LONG GLOBAL DHDATOvr() AS LONG GLOBAL Gender() AS LONG GLOBAL TeamAttr() AS LONG GLOBAL ERRSw() AS LONG GLOBAL StBSw() AS LONG GLOBAL NewStyle() AS LONG GLOBAL NewStyleWithSaves() AS LONG GLOBAL CloserIn() AS LONG GLOBAL PitcherBatted() AS LONG GLOBAL SumErrors() AS LONG GLOBAL SumAssists() AS LONG GLOBAL SumPutOuts() AS LONG GLOBAL pHRind() AS LONG GLOBAL HoleStatus() AS LONG GLOBAL BasPatRow() AS LONG GLOBAL BasPatCol() AS LONG GLOBAL DupNameTeam() AS LONG GLOBAL DLN() AS LONG GLOBAL LeagueRating() AS LONG GLOBAL StealAttemptsPlayer() AS LONG GLOBAL StealAttemptsTeam() AS LONG GLOBAL RemoveReason() AS LONG 'GLOBAL FLOAT ARRAYS: GLOBAL SimInn() AS SINGLE GLOBAL PitchersPerGame() AS SINGLE GLOBAL DefChancesPerGameF() AS SINGLE GLOBAL TeamSpeed() AS SINGLE GLOBAL NormDEF() AS SINGLE GLOBAL pwbaseF() AS SINGLE GLOBAL pkbaseF() AS SINGLE GLOBAL psbaseF() AS SINGLE GLOBAL p1baseF() AS SINGLE GLOBAL p2baseF() AS SINGLE GLOBAL p3baseF() AS SINGLE GLOBAL p4baseF() AS SINGLE GLOBAL phit1bF() AS SINGLE GLOBAL phit2bF() AS SINGLE GLOBAL phit3bF() AS SINGLE GLOBAL phit4bF() AS SINGLE GLOBAL RunsPerGame() AS SINGLE GLOBAL LgTotInns() AS LONG GLOBAL LgTotHits() AS LONG GLOBAL LgTot2B() AS LONG GLOBAL LgTot3B() AS LONG GLOBAL LgTotHR() AS LONG GLOBAL LgTotBB() AS LONG GLOBAL nPitch() AS LONG GLOBAL P32() AS LONG GLOBAL P33() AS LONG GLOBAL P48() AS LONG GLOBAL P52() AS LONG GLOBAL FatRnd() AS SINGLE GLOBAL ParkBatAdj() AS SINGLE GLOBAL ParkPitAdj() AS SINGLE ' 'GLOBAL BYTE ARRAYS: GLOBAL GpPos() AS BYTE GLOBAL PutOuts() AS BYTE GLOBAL Assists() AS BYTE ' ' --------- GLOBAL VARIABLES ' 'GLOBAL LONG INTEGERS: GLOBAL SimGameCtr AS LONG GLOBAL SCx AS LONG GLOBAL HLx AS LONG GLOBAL GMx AS LONG GLOBAL ANx AS LONG GLOBAL MMx AS LONG GLOBAL RTx AS LONG GLOBAL WLx AS LONG GLOBAL SQx AS LONG GLOBAL STx AS LONG GLOBAL WhoAtPos AS LONG GLOBAL OrgWhoAtPos AS LONG GLOBAL ir1 AS LONG GLOBAL ir2 AS LONG GLOBAL ir3 AS LONG GLOBAL iout AS LONG GLOBAL iwin AS LONG GLOBAL dh AS LONG GLOBAL RunAnnounced AS LONG GLOBAL HitType AS LONG GLOBAL ForceSBAlways AS LONG GLOBAL WPteam AS LONG GLOBAL WPpit AS LONG GLOBAL LPteam AS LONG GLOBAL LPpit AS LONG GLOBAL SPteam AS LONG GLOBAL SPpit AS LONG GLOBAL ib AS LONG GLOBAL ip AS LONG GLOBAL it AS LONG GLOBAL id AS LONG GLOBAL inn AS LONG GLOBAL ref AS LONG GLOBAL ref2 AS LONG GLOBAL innct AS LONG GLOBAL innr AS LONG GLOBAL innh AS LONG GLOBAL inne AS LONG GLOBAL innadverr AS LONG GLOBAL innLOB AS LONG GLOBAL ThrowError AS LONG GLOBAL OneBaseError AS LONG GLOBAL InfieldHit AS LONG GLOBAL ResetHitter AS LONG GLOBAL Tight AS LONG GLOBAL Errorx AS LONG GLOBAL BullD AS LONG GLOBAL BullO AS LONG GLOBAL Bunt AS LONG GLOBAL Boxx AS LONG GLOBAL HitAndRun AS LONG GLOBAL IGone AS LONG GLOBAL PH AS LONG GLOBAL Subx AS LONG GLOBAL Steal AS LONG GLOBAL IWalk AS LONG GLOBAL POut AS LONG GLOBAL BatPOut AS LONG GLOBAL PAround AS LONG GLOBAL ViewHome AS LONG GLOBAL ViewVisi AS LONG GLOBAL SwPos AS LONG GLOBAL PRun AS LONG GLOBAL HotBull AS LONG GLOBAL deffor AS LONG GLOBAL defbac AS LONG GLOBAL revfor AS LONG GLOBAL revbac AS LONG GLOBAL fldfor AS LONG GLOBAL fldbac AS LONG GLOBAL labfor AS LONG GLOBAL labbac AS LONG GLOBAL drtfor AS LONG GLOBAL drtbac AS LONG GLOBAL prmfor AS LONG GLOBAL prmbac AS LONG GLOBAL scofor AS LONG GLOBAL scobac AS LONG GLOBAL scdfor AS LONG GLOBAL scdbac AS LONG GLOBAL dimfor AS LONG GLOBAL dimbac AS LONG GLOBAL defattr AS LONG GLOBAL revattr AS LONG GLOBAL fldattr AS LONG GLOBAL drtattr AS LONG GLOBAL prmattr AS LONG GLOBAL errattr AS LONG GLOBAL linattr AS LONG GLOBAL labattr AS LONG GLOBAL scoattr AS LONG GLOBAL scdattr AS LONG GLOBAL drkattr AS LONG GLOBAL dimattr AS LONG GLOBAL skipattr AS LONG GLOBAL VisiPtr AS LONG GLOBAL HomePtr AS LONG GLOBAL VisiReady AS LONG GLOBAL HomeReady AS LONG GLOBAL DelFac AS LONG GLOBAL OrgSimDelFac AS LONG GLOBAL SoundOn AS LONG GLOBAL LPTNum AS LONG GLOBAL RegInns AS LONG GLOBAL fr2 AS LONG GLOBAL fr3 AS LONG GLOBAL fr4 AS LONG GLOBAL fr5 AS LONG GLOBAL fr6 AS LONG GLOBAL fr7 AS LONG GLOBAL STATTEAMLIMIT AS LONG GLOBAL TRUE AS LONG GLOBAL FALSE AS LONG GLOBAL KeyEsc AS LONG GLOBAL KeyF2 AS LONG GLOBAL KeyF3 AS LONG GLOBAL KeyF4 AS LONG GLOBAL SelX AS LONG GLOBAL OutfErr AS LONG GLOBAL NewUI AS LONG GLOBAL QualSave1IP AS LONG GLOBAL QualSave1ID AS LONG GLOBAL QualSave2IP AS LONG GLOBAL QualSave2ID AS LONG GLOBAL DPsw AS LONG GLOBAL SimAtBats AS LONG GLOBAL SimTotHits AS LONG GLOBAL SimTotHRs AS LONG GLOBAL StrictCloserRule AS LONG GLOBAL GameRnd AS LONG GLOBAL DaysOffRule AS LONG GLOBAL WarmUpRule AS LONG GLOBAL RunsBeforePlay AS LONG GLOBAL SchedSw AS LONG GLOBAL SeriesSw AS LONG GLOBAL CmdDel AS LONG GLOBAL CmdDelIsOnCommandLine AS LONG GLOBAL CmdSlotGames AS LONG GLOBAL SCHSlotPtr AS LONG GLOBAL SCHGamesPerRecord AS LONG GLOBAL ProtectSCH AS LONG GLOBAL SlotGameCtr AS LONG GLOBAL LastGameThisDate AS LONG GLOBAL FilterOK AS LONG GLOBAL SubRecLen AS LONG GLOBAL SubRecOff AS LONG GLOBAL VisiOffset AS LONG GLOBAL HomeOffset AS LONG GLOBAL OptiOffset AS LONG GLOBAL zz0 AS LONG GLOBAL zz1 AS LONG GLOBAL zz2 AS LONG GLOBAL zz3 AS LONG GLOBAL zz4 AS LONG GLOBAL zz5 AS LONG GLOBAL zz6 AS LONG GLOBAL zzzsb AS LONG GLOBAL zzzcs AS LONG GLOBAL zzzcer AS LONG GLOBAL zzzdp AS LONG GLOBAL zzzprun AS LONG GLOBAL zzzDSW AS LONG GLOBAL zzsacok AS LONG GLOBAL zzsacfa AS LONG GLOBAL zzzSumR AS SINGLE GLOBAL zzzSumN AS LONG GLOBAL zzzPO AS LONG GLOBAL zzzNoPO AS LONG GLOBAL zzzWalkAdj AS LONG GLOBAL zzzNoWalkAdj AS LONG GLOBAL zzziwalk1 AS LONG GLOBAL zzziwalk2 AS LONG GLOBAL zzziwalk3 AS LONG GLOBAL zzzph AS LONG GLOBAL zzsabp AS LONG GLOBAL zzssbp AS LONG GLOBAL GameIsOver AS LONG GLOBAL RegDsply AS LONG GLOBAL PbyP_Cnt AS LONG GLOBAL AutoCoach AS LONG GLOBAL AutoDefense AS LONG GLOBAL ColorScheme AS LONG GLOBAL BatterOveruse AS LONG GLOBAL InsideThePark AS LONG GLOBAL ConsRows AS LONG GLOBAL ConsCols AS LONG GLOBAL MidCol AS LONG GLOBAL MidRow AS LONG GLOBAL ColO AS LONG GLOBAL RowO AS LONG GLOBAL ObsD AS LONG GLOBAL ObsY AS LONG GLOBAL ObsH AS LONG GLOBAL ObsTz AS LONG GLOBAL ObsTy AS LONG GLOBAL Gfx AS LONG GLOBAL TopPitLim AS LONG GLOBAL ThreadNo AS LONG GLOBAL AllowStartersInRelief AS LONG GLOBAL TakeFromAnywhere AS INTEGER 'GLOBAL STRINGS: GLOBAL mon$ GLOBAL Result$ GLOBAL Result2$ GLOBAL Code2$ GLOBAL nulls$ GLOBAL ARROWS$ GLOBAL EditorSpec$ GLOBAL WordPadSpec$ GLOBAL AuxSpec$ GLOBAL CmdStat$ GLOBAL CmdLinF$ GLOBAL CmdBoxF$ GLOBAL CmdScrF$ GLOBAL CmdStar$ GLOBAL CmdVFil$ GLOBAL CmdHFil$ GLOBAL CmdWritePath$ GLOBAL CmdPath$ GLOBAL CmdSCH$ GLOBAL CmdSER$ GLOBAL CmdVP$ GLOBAL CmdHP$ GLOBAL CmdSP$ GLOBAL CmdSpot$ GLOBAL CmdVSpot$ GLOBAL CmdHSpot$ GLOBAL CmdVAutoMgr$ GLOBAL CmdHAutoMgr$ GLOBAL CmdAutoLU$ GLOBAL CmdVAutoLU$ GLOBAL CmdHAutoLU$ GLOBAL CmdAdjustBO$ GLOBAL CmdVAdjustBO$ GLOBAL CmdHAdjustBO$ GLOBAL CmdFavTeam$ GLOBAL CmdFavLeague$ GLOBAL CmdDateL$ GLOBAL CmdDateH$ GLOBAL CmdFocus$ GLOBAL CmdDeBug$ GLOBAL CmdPauseAftGame$ GLOBAL CmdPauseAftDate$ GLOBAL CmdERA$ GLOBAL CmdCmdFile$ GLOBAL CmdVM$ GLOBAL CmdHM$ GLOBAL CmdSound$ GLOBAL CmdDH$ GLOBAL CmdNoOpt$ GLOBAL CmdPic$ GLOBAL CmdFireworks$ GLOBAL CmdParkEffects$ GLOBAL CmdHomeFieldAdv$ GLOBAL CmdChangePhoto$ GLOBAL CmdHRWav$ GLOBAL CmdAutoExit$ GLOBAL BackGroundPic$ GLOBAL CurrentDir$ GLOBAL SCHDate$ GLOBAL SchBuffer$ GLOBAL MenuOpt$ GLOBAL CloseButton$ GLOBAL AbortButton$ GLOBAL LPtr$ GLOBAL RPtr$ GLOBAL UpPtr$ GLOBAL DnPtr$ GLOBAL xUpPtr$ GLOBAL xDnPtr$ GLOBAL xLPtr$ GLOBAL xRPtr$ GLOBAL EnterPtr$ 'GLOBAL FLOATS: GLOBAL p4baseNorm! GLOBAL p3baseNorm! GLOBAL p2baseNorm! GLOBAL p1baseNorm! GLOBAL pwbaseNorm! GLOBAL prbaseNorm! 'Constants: GLOBAL MAXPLAYERS AS LONG DEFLNG A-Z '************************************************************ 'FUNCTION PBMAIN() AS LONG FUNCTION WINMAIN(BYVAL hCurInstance AS LONG, _ BYVAL hPrevInstance AS LONG, _ lpszCmdLine AS ASCIIZ PTR, _ BYVAL nCmdShow AS LONG) _ EXPORT AS LONG ' ON ERROR GOTO PBM_ErrorTrap REGISTER i AS INTEGER ' GLOBAL: DIM Announcer(12) AS GLOBAL MType DIM HLRec(400) AS GLOBAL HiLiteType '150 DIM SCRec(300) AS GLOBAL ScoreCardType DIM WLRec(1 TO 300) AS GLOBAL WLType DIM DataName(51, 2) AS GLOBAL STRING DIM DataPlat(51, 2) AS GLOBAL STRING DIM DataHand(51, 2) AS GLOBAL STRING DIM DataCode(51, 2) AS GLOBAL STRING DIM DataHP (51, 2) AS GLOBAL STRING DIM NameRef(51, 2) AS GLOBAL STRING DIM HandRef(51, 2) AS GLOBAL STRING DIM RefByBO(9, 2) AS GLOBAL STRING DIM Century(2) AS GLOBAL STRING DIM Names(2) AS GLOBAL STRING DIM League(2) AS GLOBAL STRING DIM TeamLogo(2) AS GLOBAL STRING DIM Year(2) AS GLOBAL STRING DIM Div(2) AS GLOBAL STRING DIM POS(11) AS GLOBAL STRING DIM PosDesc(10) AS GLOBAL STRING DIM GMMessage(5) AS GLOBAL STRING DIM ActiveSTAT(10) AS GLOBAL STRING DIM DataFil(2) AS GLOBAL STRING DIM DATPath(2) AS GLOBAL STRING DIM WildPit(2) AS GLOBAL STRING DIM PassedB(2) AS GLOBAL STRING DIM HitByPit(2) AS GLOBAL STRING DIM AdjustBO(2) AS GLOBAL STRING * 1 DIM DataRef(51, 2) AS GLOBAL LONG DIM DataPos(51, 2) AS GLOBAL LONG DIM DataAB(51, 2) AS GLOBAL LONG DIM DataHits(51, 2) AS GLOBAL LONG DIM Data2B(51, 2) AS GLOBAL LONG DIM Data3B(51, 2) AS GLOBAL LONG DIM DataHR(51, 2) AS GLOBAL LONG DIM DataBB(51, 2) AS GLOBAL LONG DIM DataSO(51, 2) AS GLOBAL LONG DIM DataRBI(51, 2) AS GLOBAL LONG DIM DataSB(51, 2) AS GLOBAL LONG DIM DataCS(51, 2) AS GLOBAL LONG DIM DataDef(51, 2) AS GLOBAL LONG DIM DataSpeed(51, 2) AS GLOBAL LONG DIM DataGames(51, 2) AS GLOBAL LONG DIM iused(51, 2) AS GLOBAL LONG DIM OrgPos(51, 2) AS GLOBAL LONG DIM mab(51, 2) AS GLOBAL LONG DIM mabRHP(51, 2) AS GLOBAL LONG DIM mabLHP(51, 2) AS GLOBAL LONG DIM mruns(51, 2) AS GLOBAL LONG DIM mhits(51, 2) AS GLOBAL LONG DIM mhitsRHP(51, 2) AS GLOBAL LONG DIM mhitsLHP(51, 2) AS GLOBAL LONG DIM mrbi(51, 2) AS GLOBAL LONG DIM mhr(51, 2) AS GLOBAL LONG DIM mhrRHP(51, 2) AS GLOBAL LONG DIM mhrLHP(51, 2) AS GLOBAL LONG DIM m3b(51, 2) AS GLOBAL LONG DIM m3bRHP(51, 2) AS GLOBAL LONG DIM m3bLHP(51, 2) AS GLOBAL LONG DIM m2b(51, 2) AS GLOBAL LONG DIM m2bRHP(51, 2) AS GLOBAL LONG DIM m2bLHP(51, 2) AS GLOBAL LONG DIM mbb(51, 2) AS GLOBAL LONG DIM mbbRHP(51, 2) AS GLOBAL LONG DIM mbbLHP(51, 2) AS GLOBAL LONG DIM mhb(51, 2) AS GLOBAL LONG DIM merr(51, 2) AS GLOBAL LONG DIM mso(51, 2) AS GLOBAL LONG DIM msoRHP(51, 2) AS GLOBAL LONG DIM msoLHP(51, 2) AS GLOBAL LONG DIM msb(51, 2) AS GLOBAL LONG DIM mcs(51, 2) AS GLOBAL LONG DIM mSacF(51, 2) AS GLOBAL LONG DIM mSacB(51, 2) AS GLOBAL LONG DIM mGDP(51, 2) AS GLOBAL LONG DIM StealAttemptsPlayer(51, 2) AS GLOBAL LONG DIM iScoreBd(2, 10) AS GLOBAL LONG DIM iScore(2, 30) AS GLOBAL LONG DIM itruns(2) AS GLOBAL LONG DIM ithits(2) AS GLOBAL LONG DIM iterrs(2) AS GLOBAL LONG DIM GameLOB(2) AS GLOBAL LONG DIM ipa(2) AS GLOBAL LONG DIM np(2) AS GLOBAL LONG DIM iyp(15, 2) AS GLOBAL LONG DIM LastPiAd(2) AS GLOBAL LONG DIM amgr(2) AS GLOBAL LONG DIM ibp(2) AS GLOBAL LONG DIM dp(2) AS GLOBAL LONG DIM mpp(9) AS GLOBAL LONG DIM SoundQ(10) AS GLOBAL LONG DIM AutoLineUpSw(2) AS GLOBAL LONG DIM HoleStatus(32) AS GLOBAL LONG DIM BasPatRow(5) AS GLOBAL LONG DIM BasPatCol(5) AS GLOBAL LONG DIM ERRSw(2) AS GLOBAL LONG DIM StBSw(2) AS GLOBAL LONG DIM NewStyle(2) AS GLOBAL LONG DIM NewStyleWithSaves(2) AS GLOBAL LONG DIM CloserIn(2) AS GLOBAL LONG DIM PitcherBatted(2) AS GLOBAL LONG DIM DHDATOvr(2) AS GLOBAL LONG DIM Gender(2) AS GLOBAL LONG DIM TeamAttr(2) AS GLOBAL LONG DIM StealAttemptsTeam(2) AS GLOBAL LONG DIM SumErrors(10) AS GLOBAL LONG DIM SumAssists(10) AS GLOBAL LONG DIM SumPutouts(10) AS GLOBAL LONG DIM pHRind(2) AS GLOBAL LONG DIM DupNameTeam(2) AS GLOBAL LONG DIM LeagueRating(2) AS GLOBAL LONG DIM LgTotInns(3) AS GLOBAL LONG DIM LgTotHits(3) AS GLOBAL LONG DIM LgTot2B(3) AS GLOBAL LONG DIM LgTot3B(3) AS GLOBAL LONG DIM LgTotHR(3) AS GLOBAL LONG DIM LgTotBB(3) AS GLOBAL LONG DIM P32(10) AS GLOBAL LONG DIM P33(10) AS GLOBAL LONG DIM P48(10) AS GLOBAL LONG DIM P52(10) AS GLOBAL LONG DIM RemoveReason(10) AS GLOBAL LONG DIM PitchersPerGame(2) AS GLOBAL SINGLE DIM DefChancesPerGameF(10) AS GLOBAL SINGLE DIM TeamSpeed(2) AS GLOBAL SINGLE DIM NormDEF(10) AS GLOBAL SINGLE DIM pwbaseF(2) AS GLOBAL SINGLE DIM pkbaseF(2) AS GLOBAL SINGLE DIM psbaseF(2) AS GLOBAL SINGLE DIM p1baseF(2) AS GLOBAL SINGLE DIM p2baseF(2) AS GLOBAL SINGLE DIM p3baseF(2) AS GLOBAL SINGLE DIM p4baseF(2) AS GLOBAL SINGLE DIM phit1bF(2) AS GLOBAL SINGLE DIM phit2bF(2) AS GLOBAL SINGLE DIM phit3bF(2) AS GLOBAL SINGLE DIM phit4bF(2) AS GLOBAL SINGLE DIM RunsPerGame(3) AS GLOBAL SINGLE DIM FatRnd(3) AS GLOBAL SINGLE ' LOCAL: REDIM LAvg(300) AS LAvgType DIM Flen(13) DIM Flitrow(13) DIM Flitcol(13) DIM Flit$(13) DIM Frow(13) DIM Fcol(13) DIM Fed$(13) DIM FContents$(13) DIM ColorDescTable$(15) DIM LUAltered(2) DIM TeamsInLeague(2) DIM PlayUSA AS ASCIIZ * 40 DIM PlayCAN AS ASCIIZ * 40 DIM StopUSA AS ASCIIZ * 40 DIM StopCAN AS ASCIIZ * 40 DIM HBF!(2) DIM HPF!(2) ' =============================================== 'First executable line ConsoleToolsAuthorize &h00000000 'Your Console Tools serial number InitConsoleTools hCurInstance, 0, 0, 3, 0, 0 GraphicsToolsAuthorize &h00000000 'Your Graphics Tools serial number ConsoleWindow %HIDE PAGE 1, 1 CURSOR OFF RANDOMIZE TIMER 'Set default screen size depending on Windows version winver = 0 ConsRows = 25 ConsCols = 80 j = WindowsVersion(%WIN_MAJORVERSION) k = WindowsVersion(%WIN_MINORVERSION) IF j = 4 AND k = 0 THEN 'Windows 95 ConsRows = 35 ConsCols = 102 winver = 0 END IF IF j = 4 AND k > 0 THEN 'Windows 98/Me ConsRows = 44 ConsCols = 102 winver = 1 END IF IF j = 5 THEN IF k = 0 THEN '2000 ConsRows = 44 ConsCols = 102 winver = 2 END IF IF k > 0 THEN 'XP ConsRows = 44 ConsCols = 102 winver = 3 END IF END IF MAXPLAYERS = 51 TopPitLim = 35 TRUE = -1 FALSE = 0 KeyF4 = -62 KeyF3 = -61 KeyF2 = -60 KeyEsc = 27 CloseButton$ = CHR$(254) AbortButton$ = CHR$(249) nulls$ = "" HomeDir$ = UCASE$(CURDIR$) PlayUSA = "PLAY " + HomeDir$ + "\usan.mid" PlayCAN = "PLAY " + HomeDir$ + "\canada.mid" StopUSA = "STOP " + HomeDir$ + "\usan.mid" StopCAN = "STOP " + HomeDir$ + "\canada.mid" %directorymask = 16 PosDesc(1) = "the mound" PosDesc(2) = "the catcher" PosDesc(3) = "first" PosDesc(4) = "second" PosDesc(5) = "third" PosDesc(6) = "short" PosDesc(7) = "left" PosDesc(8) = "center" PosDesc(9) = "right" 'Increasing numbers yield fewer errors 'Decreasing numbers yield more errors DefChancesPerGameF(0) = 0. DefChancesPerGameF(1) = 1.0 'dummy - hardcoded at .952 DefChancesPerGameF(2) = 1.0 '1.05 1.4 1.3 1.5 2.0 DefChancesPerGameF(3) = 2.2 '2.7 1.9 1.85 'imperical since few errors on POs DefChancesPerGameF(4) = 5.7 DefChancesPerGameF(5) = 2.9 DefChancesPerGameF(6) = 4.8 DefChancesPerGameF(7) = 1.85 DefChancesPerGameF(8) = 2.45 DefChancesPerGameF(9) = 1.85 DefChancesPerGameF(10) = 0. NormDEF(1) = .952 NormDEF(2) = .990 NormDEF(3) = .993 NormDEF(4) = .981 NormDEF(5) = .953 NormDEF(6) = .967 NormDEF(7) = .977 NormDEF(8) = .984 NormDEF(9) = .981 NormDEF(10) = .999 'Outs (exc K's) Pitch Count Distribution average = 3.2 P32(1) = 1 P32(2) = 1 P32(3) = 2 P32(4) = 3 P32(5) = 3 P32(6) = 4 P32(7) = 4 P32(8) = 4 P32(9) = 5 P32(10)= 6 'Hits Pitch Count Distribution average = 3.3 P33(1) = 1 P33(2) = 1 P33(3) = 2 P33(4) = 3 P33(5) = 3 P33(6) = 4 P33(7) = 4 P33(8) = 5 P33(9) = 5 P33(10)= 6 'Strike Out Pitch Count Distribution average = 4.8 P48(1) = 3 P48(2) = 3 P48(3) = 4 P48(4) = 5 P48(5) = 5 P48(6) = 5 P48(7) = 6 P48(8) = 6 P48(9) = 6 P48(10)= 7 'Walk Pitch Count Distribution average = 5.2 P52(1) = 4 P52(2) = 4 P52(3) = 5 P52(4) = 5 P52(5) = 5 P52(6) = 5 P52(7) = 5 P52(8) = 6 P52(9) = 6 P52(10)= 8 'Load Background color descriptions ColorDescTable$(0) = "BLACK" ColorDescTable$(1) = "BLUE" ColorDescTable$(2) = "GREEN" ColorDescTable$(3) = "CYAN" ColorDescTable$(4) = "RED" ColorDescTable$(5) = "MAGENTA" ColorDescTable$(6) = "BROWN" ColorDescTable$(7) = "DONTUSE" ColorDescTable$(8) = "GRAY" ColorDescTable$(9) = "BRIGHT BLUE" 'bright blue ColorDescTable$(10) = "BRIGHT GREEN" 'bright green - need dark forg ColorDescTable$(11) = "BRIGHT CYAN" 'very light(powder) blue - need dark forg ColorDescTable$(12) = "BRIGHT RED" 'bright red ColorDescTable$(13) = "BRIGHT MAGENTA" 'almost pink ColorDescTable$(14) = "YELLOW" 'bright yellow - need dark forg ColorDescTable$(15) = "WHITE" 'nice '.SCH file field offset data SubRecLen = 28 VisiOffset = 1 HomeOffset = 9 OptiOffset = 17 STSOpen = FALSE Owner$ = " SBS " FOR i = 1 TO 11 Pos(i) = READ$(i) NEXT DATA "P ","C ",1B,2B,3B,SS,LF,CF,RF,DH," " ' Check existense of message file IF LEN(DIR$("BASEBALL.MSG")) = 0 THEN GOSUB DeclareConsole x$ = "The BASEBALL.MSG file was not found in the home directory." CALL ErrorBox (x$) GOTO QuickEnd END IF Reconfigure: ' Load default League Averages ' Load editor and custom League Averages if desired HiLvlHits = 5 HiLvlHRs = 3 HiLvlSBs = 4 HiLvlRBIs = 7 HiLvlSOs = 14 HiLvlPHits = 2 HiLvlBStr = 20 LPTNum = 1 RegInns = 9 IF winver < 2 THEN EditorSpec$ = "\WINDOWS\notepad.exe " WordPadSpec$ = "\Program Files\Accessories\wordpad.exe " ELSEIF winver = 2 THEN EditorSpec$ = "\WINNT\system32\notepad.exe " WordPadSpec$ = "\Program Files\Windows NT\Accessories\wordpad.exe " ELSEIF winver > 2 THEN IF LEN(DIR$("\WINNT\system32\notepad.exe")) THEN EditorSpec$ = "\WINNT\system32\notepad.exe " ELSE EditorSpec$ = "\WINDOWS\system32\notepad.exe " END IF WordPadSpec$ = "\Program Files\Windows NT\Accessories\wordpad.exe " END IF CmdStar$ = "STARBOX.TXT" CmdPic$ = "wrigley1.jpg" CmdFireworks$ = "Y" CmdParkEffects$ = "Y" CmdHomeFieldAdv$ = "Y" CmdAltFont$ = "N" CmdSound$ = "Y" CmdDel = 3 ColorScheme = 5 RefreshStandings = 20 ProtectSCH = FALSE ForceSBAlways = FALSE Force2TmLineup = FALSE StrictCloserRule = FALSE DaysOffRule = FALSE WarmUpRule = FALSE BatterOveruse = FALSE AutoCoach = FALSE AutoDefense = FALSE BlockDoubleSwitch = FALSE AllowStartersInRelief = FALSE OutOfPositionMsg = TRUE IF LEN(DIR$("BASEBALL.CFG")) THEN OPEN "BASEBALL.CFG" FOR INPUT AS #1 LEN = 128 LAvgNdx = 0 DO WHILE NOT EOF(1) LINE INPUT #1, rec$ rec$ = UCASE$(rec$) xS$ = MID$(rec$, 1, 4) yS$ = MID$(rec$, 1, 5) IF MID$(rec$, 1, 7) = "EDITOR=" THEN EditorSpec$ = RTRIM$(MID$(rec$, 8)) + " " ELSEIF MID$(rec$, 1, 13) = "M-MODE-SOUND=" THEN CmdSound$ = RTRIM$(MID$(rec$, 14, 1)) ELSEIF MID$(rec$, 1, 13) = "M-MODE-DELAY=" THEN CmdDel = VAL(RTRIM$(MID$(rec$, 14, 1))) ELSEIF MID$(rec$, 1, 13) = "CONSOLE-ROWS=" THEN IF MenuOpt$ <> "P" THEN ConsRows = VAL(MID$(rec$, 14, 2)) ELSEIF MID$(rec$, 1, 13) = "CONSOLE-COLS=" THEN IF MenuOpt$ <> "P" THEN ConsCols = VAL(MID$(rec$, 14)) ELSEIF MID$(rec$, 1, 8) = "WORDPAD=" THEN WordPadSpec$ = RTRIM$(MID$(rec$, 9)) + " " ELSEIF MID$(rec$, 1, 10) = "FIREWORKS=" THEN CmdFireworks$ = MID$(rec$, 11, 1) ELSEIF MID$(rec$, 1, 12) = "FIELD-PHOTO=" THEN CmdPic$ = RTRIM$(MID$(rec$, 13)) ELSEIF MID$(rec$, 1, 4) = "AUX=" THEN AuxSpec$ = RTRIM$(MID$(rec$, 5)) + " " ELSEIF MID$(rec$, 1, 13) = "HOME-RUN-WAV=" THEN CmdHRWav$ = MID$(rec$, 14) ELSEIF MID$(rec$, 1, 4) = "LPT=" THEN LPTNum = VAL(MID$(rec$, 5, 1)) ELSEIF MID$(rec$, 1, 16) = "STAT-TEAM-LIMIT=" THEN STATTEAMLIMIT = VAL(MID$(rec$, 17)) ELSEIF MID$(rec$, 1, 10) = "DATA-PATH=" THEN CmdPath$ = RTRIM$(MID$(rec$, 11)) IF RIGHT$(CmdPath$, 1) <> "\" THEN CmdPath$ = CmdPath$ + "\" END IF ELSEIF MID$(rec$, 1, 11) = "WRITE-PATH=" THEN CmdWritePath$ = RTRIM$(MID$(rec$, 12)) IF RIGHT$(CmdWritePath$, 1) <> "\" THEN CmdWritePath$ = CmdWritePath$ + "\" END IF ELSEIF MID$(rec$, 1, 19) = "REGULATION-INNINGS=" THEN RegInns = VAL(MID$(rec$, 20)) ELSEIF MID$(rec$, 1, 13) = "COLOR-SCHEME=" THEN ColorScheme = VAL(MID$(rec$, 14, 1)) ELSEIF MID$(rec$, 1, 18) = "REFRESH-STANDINGS=" THEN RefreshStandings = VAL(MID$(rec$, 19)) ELSEIF MID$(rec$, 1, 13) = "PARK-EFFECTS=" THEN CmdParkEffects$ = MID$(rec$, 14, 1) ELSEIF MID$(rec$, 1, 15) = "ALTERNATE-FONT=" THEN CmdAltFont$ = MID$(rec$, 16, 1) ELSEIF MID$(rec$, 1, 11) = "PROTECT-SCH" THEN IF MID$(rec$, 13, 1) <> "N" THEN ProtectSCH = TRUE END IF ELSEIF MID$(rec$, 1, 16) = "FORCE-SCOREBOARD" THEN IF MID$(rec$, 18, 1) <> "N" THEN ForceSBAlways = TRUE END IF ELSEIF MID$(rec$, 1, 12) = "FORCE-LINEUP" THEN IF MID$(rec$, 14, 1) <> "N" THEN Force2TmLineup = TRUE END IF ELSEIF MID$(rec$, 1, 18) = "STRICT-CLOSER-RULE" THEN IF MID$(rec$, 20, 1) <> "N" THEN StrictCloserRule = TRUE END IF ELSEIF MID$(rec$, 1, 13) = "DAYS-OFF-RULE" THEN IF MID$(rec$, 15, 1) <> "N" THEN DaysOffRule = TRUE END IF ELSEIF MID$(rec$, 1, 11) = "WARMUP-RULE" THEN IF MID$(rec$, 13, 1) <> "N" THEN WarmUpRule = TRUE END IF ELSEIF MID$(rec$, 1, 14) = "BATTER-OVERUSE" THEN IF MID$(rec$, 16, 1) <> "N" THEN BatterOveruse = TRUE END IF ELSEIF MID$(rec$, 1, 9) = "AUTOCOACH" THEN IF MID$(rec$, 11, 1) <> "N" THEN AutoCoach = TRUE END IF ELSEIF MID$(rec$, 1, 11) = "AUTODEFENSE" THEN IF MID$(rec$, 13, 1) <> "N" THEN AutoDefense = TRUE END IF ELSEIF MID$(rec$, 1, 19) = "OUT-OF-POSITION-MSG" THEN IF MID$(rec$, 21, 1) = "N" THEN OutOfPositionMsg = FALSE END IF ELSEIF MID$(rec$, 1, 16) = "NO-DOUBLE-SWITCH" THEN IF MID$(rec$, 18, 1) <> "N" THEN BlockDoubleSwitch = TRUE END IF ELSEIF MID$(rec$, 1, 20) = "STARTERS-MAY-RELIEVE" THEN IF MID$(rec$, 22, 1) <> "N" THEN AllowStartersInRelief = TRUE END IF ELSEIF MID$(rec$, 1, 6) = "HILITE" THEN HiLvlHits = VAL(MID$(rec$, 11, 6)) HiLvlHRs = VAL(MID$(rec$, 18, 6)) HiLvlRBIs = VAL(MID$(rec$, 25, 6)) HiLvlSBs = VAL(MID$(rec$, 32, 6)) HiLvlPHits = VAL(MID$(rec$, 39, 6)) HiLvlSOs = VAL(MID$(rec$, 46, 6)) HiLvlBStr = VAL(MID$(rec$, 53, 6)) IF HiLvlBStr = 0 THEN HiLvlBStr = 20 IF HiLvlHits = 0 OR HiLvlHRs = 0 OR HiLvlRBIs = 0 OR HiLvlSBs = 0 OR HiLvlSOs = 0 THEN GOSUB DeclareConsole CALL MyBeep x$ = "Warning: Problem with HILITE line of BASEBALL.CFG!" CALL ErrorBox (x$) END IF ELSEIF NUMERIC(xS$, FALSE, FALSE) OR LEFT$(xS$, 3) = "DEF" THEN IF LAvgNdx < 300 THEN INCR LAvgNdx j = VAL(MID$(rec$, 18, 6)) 'hits k = VAL(MID$(rec$, 25, 6)) 'doubles L = VAL(MID$(rec$, 32, 6)) 'triples m = VAL(MID$(rec$, 39, 6)) 'homers N = VAL(MID$(rec$, 46, 6)) 'walks o = VAL(MID$(rec$, 53, 6)) 'strike outs p = VAL(MID$(rec$, 60, 6)) 'teams in league q!= VAL(MID$(rec$, 67, 6)) 'runs-per-game (per team) r = VAL(MID$(rec$, 74, 3)) 'league rating IF r = 0 THEN r = 100 s = j - k - L - m 'singles IF j = 0 OR k = 0 OR L = 0 OR m = 0 OR N = 0 THEN GOSUB DeclareConsole CALL MyBeep x$ = "Warning: Problem with League Average data in|" x$ = x$ + "Line " + yS$ + " of BASEBALL.CFG!" CALL ErrorBox(x$) END IF bD = VAL(MID$(rec$, 11, 6)) 'innings IF j > 0 THEN IF bD / j > 1.5 OR bD / j < .5 THEN GOSUB DeclareConsole CALL MyBeep x$ = "Warning: Possible problem with League Average data|" x$ = x$ + "Line "+ yS$ + " of BASEBALL.CFG! Please check." CALL ErrorBox(x$) END IF END IF bF! = BattersFacedByPit! (bD, j, N, o) LAvg(LAvgNdx).LAvgYr = MID$(rec$, 1, 4) LAvg(LAvgNdx).LAvgLg = MID$(rec$, 5, 1) LAvg(LAvgNdx).LAvgBB = N / bF! LAvg(LAvgNdx).LAvgSO = o / (bD * 3) '% of outs that are K's LAvg(LAvgNdx).LAvgS2 = o / bF! LAvg(LAvgNdx).LAvg1B = s / bF! LAvg(LAvgNdx).LAvg2B = k / bF! LAvg(LAvgNdx).LAvg3B = L / bF! LAvg(LAvgNdx).LAvgHR = m / bF! LAvg(LAvgNdx).LTeams = p LAvg(LAvgNdx).LAvgRG = q! LAvg(LAvgNdx).Rating = r LAvg(LAvgNdx).Innings = bD LAvg(LAvgNdx).Hits = j LAvg(LAvgNdx).Doubles = k LAvg(LAvgNdx).Triples = L LAvg(LAvgNdx).HR = m LAvg(LAvgNdx).BB = N END IF LOOP CLOSE #1 END IF 'Check for Non-Raster Font option IF CmdAltFont$ = "N" THEN LPtr$ = CHR$(17) RPtr$ = CHR$(16) UpPtr$ = CHR$(30) DnPtr$ = CHR$(31) xUpPtr$ = CHR$(24) xDnPtr$ = CHR$(25) xLPtr$ = CHR$(27) xRPtr$ = CHR$(26) ARROWS$ = CHR$(27) + CHR$(18) + CHR$(26) EnterPtr$ = CHR$(32) + CHR$(17) + CHR$(196) + CHR$(217) ELSE LPtr$ = "<" RPtr$ = ">" UpPtr$ = "^" DnPtr$ = "v" xUpPtr$ = "u" xDnPtr$ = "d" xLPtr$ = "<" xRPtr$ = ">" ARROWS$ = "<|>" EnterPtr$ = " <" + CHR$(196) + CHR$(217) END IF 'Check command$ here? SimGameCtr = 0 SchedSw = FALSE SeriesSw = FALSE DspSw = TRUE 'Does not hide the options NewUI = TRUE ForceCLS = TRUE RegDsply = TRUE '------------------------------------------- ' Check the COMMAND LINE '------------------------------------------- xS$ = COMMAND$ CALL ParseCommand (xS$, nargs) IF CmdCmdFile$ > "!" THEN IF LEN(DIR$(CmdCmdFile$)) THEN OPEN CmdCmdFile$ FOR INPUT AS #1 LINE INPUT #1, xS$ CLOSE #1 CALL ParseCommand (xS$, nargs) END IF END IF CALL SetSwitches (nargs) SavCmdPath$ = CmdPath$ IF MenuOpt$ = "P" THEN GOTO MenuOptions 'Reconfigure GOSUB DeclareConsole 'Make it visible also MidRow = ConsRows \ 2 MidCol = ConsCols \ 2 RowO = MidRow - 12 ColO = MidCol - 40 x$ = "Your Windows version is: " + _ LTRIM$(STR$(WindowsVersion(%WIN_MAJORVERSION))) _ + "." + LTRIM$(STR$(WindowsVersion(%WIN_MINORVERSION))) _ + "." + LTRIM$(STR$(WindowsVersion(%WIN_BUILDNUMBER))) defattr = CalcAttr(15, 1) QPRINTs 1, 1, x$, defattr QPRINTs 2, 1, "---------------------------------", defattr QPRINTs 3, 1, "Initializing...", defattr DIM PbyP(1500) AS GLOBAL PbyPType CALL LoadPbyP SLEEP 500 MOUSE 3, DOUBLE, DOWN MOUSE ON PAGE 2 GOSUB PokeBackground PAGE 1 Gfx = FALSE BackgroundPic$ = CmdPic$ IF BackgroundPic$ > "!" THEN GOSUB GetPhotoSpecs 'Returns "Gfx" T or F GOSUB DefineBitmap 'Go here even if not Gfx! SimTotal = 0 IF SchedSw THEN IF LEN(DIR$(CmdPath$ + CmdSch$)) = 0 THEN x$ = "The schedule file was not found." CALL ErrorBox(x$) GOTO QuickEnd END IF SimTotal = CountGamesInSCH (nulls$, nulls$, nulls$, nulls$, SubRecLen, VisiOffset, HomeOffset, OptiOffset) REDIM MMList(100) AS GLOBAL MMType REDIM RotRec(300) AS GLOBAL RotType CALL SetRestartData GOSUB SetAutoMgr END IF IF SeriesSw THEN IF LEN(DIR$(CmdPath$ + CmdSER$)) = 0 THEN x$ = "The series file was not found." CALL ErrorBox(x$) GOTO QuickEnd END IF SimTotal = CountGamesInSER REDIM RotRec(300) AS GLOBAL RotType RTx = 0 'Reopen to get first line of .SER file OPEN CmdPath$ + CmdSER$ FOR INPUT AS #2 LEN = 128 LINE INPUT #2, xS$ CALL ParseCommand (xS$, nargs) CALL SetSwitches (nargs) GOSUB SetAutoMgr END IF IF CmdStat$ > "!" THEN GOSUB OpenStatFiles IF CmdVFil$ > "!" AND CmdHFil$ > "!" THEN 'You are always here from the command line because these 'variables are also set in "SetRestartData" 'We will not display the Logo PCOPY 2, 1 REDIM RotRec(300) AS GLOBAL RotType RTx = 0 IF CmdSlotGames > 1 THEN GOSUB SetAutoMgr ELSE IF CmdVAutoMgr$ = "Y" THEN amgr(1) = TRUE IF CmdHAutoMgr$ = "Y" THEN amgr(2) = TRUE END IF 'Default stuff for command-line IF CmdSpot$ = nulls$ THEN CmdSpot$ = "N" IF CmdVSpot$ = nulls$ THEN CmdVSpot$ = "N" IF CmdHSpot$ = nulls$ THEN CmdHSpot$ = "N" IF CmdFocus$ = nulls$ THEN CmdFocus$ = "N" IF amgr(1) AND amgr(2) THEN GOSUB Normalization IF CmdDelIsOnCommandLine = FALSE THEN CmdDel = 0 IF CmdDel = 0 AND CmdPauseAftGame$ = "N" _ AND CmdPauseAftDate$ = "N" THEN RegDsply = FALSE DelFac = CmdDel 'Delay Factor from the command line : auto-manage GOTO LoadTeamFiles END IF 'We are not in a series/schedule. 'We are not in a multi-game two-team sim. 'We ARE in a single manual game. 'We know both teams. 'We may or may not know the pitchers. 'Either team or both may be auto-managed. CmdLine = TRUE MenuOpt$ = "M" DataFil(1) = CmdVFil$ DataFil(2) = CmdHFil$ DelFac = CmdDel 'Delay Factor from the command line : not auto-manage (inherits "3" if not given) GOSUB ClearLineupData GOSUB ClearGameData GOTO LoadManual END IF '------------------------------------------ ' Opening Screen '------------------------------------------ IF Gfx THEN GOSUB DefineBigBitmap ELSE PCOPY 2, 1 'Light blue screen END IF CALL Logo(zS$) IF Gfx THEN CALL EliminateHole(32) END IF FromLogo = TRUE IF zS$ = "Q" THEN GOTO QuickEnd '------------------------------------------- ' Process Menu Option Selection '------------------------------------------- MenuOptions: CLOSE 'Close ALL Files COLOR 15, 3 CLS IF Gfx THEN IF FromLogo = FALSE THEN FOR n = 1 TO 32 CALL EliminateHole(n) NEXT GOSUB DefineBigBitmap CALL ShowGfx END IF ELSE PCOPY 2, 1 END IF REDIM amgr(2) AS GLOBAL LONG STSOpen = FALSE REDIM BSum(0 TO 1) AS GLOBAL BatSummary REDIM PSum(0 TO 1) AS GLOBAL PitSummary REDIM FSum(0 TO 1) AS GLOBAL FldSummary UseBigP = FALSE UseBigB = FALSE CmdPath$ = SavCmdPath$ MenuOpt$ = MenuRoutine2$ FromLogo = FALSE IF Gfx THEN COLOR 15, 3 CLS CALL EliminateHole(32) GOSUB DefineBitmap CALL HideGfx END IF LOCATE 1, 1 CURSOR OFF 'hide cursor IF MenuOpt$ = "Q" THEN GOTO QuickEnd '---------------------- 'Options P: Edit BASEBALL.CFG '---------------------- IF MenuOpt$ = "P" THEN zS$ = EditorSpec$ + "baseball.cfg" ShowWindState& = 1 ConsoleShell zS$, ShowWindState& 'this will launch in separate window SLEEP 1000 CALL DrawFrm(10+rowO, 12+colO, 18+rowO, 68+colO, defattr, nulls$, nulls$, 0, 0, 0) QPRINTs 12+rowO, 14+colO, " Apply changes now? [y/N] ", defattr QPRINTs 14+rowO, 14+colO, " Note: Changes to the console window size require ", dimattr QPRINTs 15+rowO, 14+colO, " shutting down and restarting SBS before they ", dimattr QPRINTs 16+rowO, 14+colO, " take effect. ", dimattr LOCATE 12+rowO, 40+colO IF YESorNO$(revfor, revbac, deffor, defbac, "N") = "Y" THEN GOTO Reconfigure ELSE GOTO MenuOptions END IF END IF '---------------------- 'Options R: Read Doc '---------------------- IF MenuOpt$ = "R" THEN CALL ShowDoc GOTO MenuOptions END IF '---------------------- 'Option F: File Viewer '---------------------- IF MenuOpt$ = "F" THEN DO r1 = 2 r2 = ConsRows - 3 c1 = 4 c2 = ConsCols - 5 QPRINTs MidRow, MidCol-10, " Loading file names... ", defattr FileLimit = 1500 REDIM List1(1 TO FileLimit) AS List1Type n = 0 Fil$ = CmdWritePath$ + "*.TXT" CALL LoadFilesToList1 (Fil$, List1(), FileLimit, n) ' [n] Fil$ = CmdWritePath$ + "*.PRN" CALL LoadFilesToList1 (Fil$, List1(), FileLimit, n) ' [n] Fil$ = CmdWritePath$ + "*.LOG" CALL LoadFilesToList1 (Fil$, List1(), FileLimit, n) ' [n] Fil$ = "*.DOC" CALL LoadFilesToList1 (Fil$, List1(), FileLimit, n) ' [n] Fil$ = CmdWritePath$ + "*. " CALL LoadFilesToList1 (Fil$, List1(), FileLimit, n) ' [n] ARRAY SORT List1(1) FOR n, FROM 1 TO 12, DESCEND CALL DrawFrm(r1, c1, r2, c2, defattr, "View Misc. Files", "ENTER:View Del:Delete ESC:Menu", 1, 0, 2) DO nr = r2-r1-1 nc = (c2-c1-1) \ 14 CALL PickFromList(List1(), n, nr, nc, 12, r1, c1, r2, c2, dimattr, revattr, Pick, RetKey, nulls$, mous, ms$) IF RetKey = KeyEsc OR RetKey = KeyF3 THEN EXIT DO IF Pick > 0 THEN IF RetKey = -83 THEN 'Delete CALL DrawFrm(19+rowO, 32+colO, 21+rowO, 50+colO, defattr, nulls$, nulls$, 0, 0, 0) QPRINTs 20+rowO, 33+colO, " Are you sure? ", defattr LOCATE 20+rowO, 48+colO IF YESorNO$(7, 0, deffor, defbac, "N") = "Y" THEN CALL KillIt(RTRIM$(List1(Pick).ListItem)) END IF EXIT DO ELSE QPush x$ = RTRIM$(List1(Pick).ListItem) IF UCASE$(RIGHT$(x$, 4)) = ".DOC" THEN ' SHELL WordPadSpec$ + " " + x$ 'this will launch in separate window ShowWindState& = 1 zS$ = WordPadSpec$ + " " + x$ ConsoleShell zS$, ShowWindState& ELSE CALL ListFile(CmdWritePath$ + x$) END IF QPop END IF END IF RetKey = -99 'forces PickFromList to just wait for input LOOP ERASE List1 LOOP WHILE RetKey = -83 'catches "delete" -> redisplays GOTO MenuOptions END IF '---------------------------------------- 'Options A: Display and Select Stat Files '---------------------------------------- 'RetKey = 0 IF MenuOpt$ = "A" THEN PCOPY 2, 1 'Show STAT Files and Pick One FileLimit = 500 IF CmdWritePath$ > "!" THEN CurrentDir$ = CmdWritePath$ ELSE CurrentDir$ = HomeDir$ END IF IF RIGHT$(CurrentDir$, 1) <> "\" THEN CurrentDir$ = CurrentDir$ + "\" DO REDIM List1(1 TO FileLimit) AS List1Type RetKey = -97 ReadDirsA: GOSUB LoadDirsToList1 'returns n 'Directory Tree Frame IF RetKey = -97 THEN j = 0: c1$ = CHR$(193): c2$ = CHR$(194) ELSE j = 1: c1$ = CHR$(208): c2$ = CHR$(210) END IF CALL DrawFrm(2+rowO,48+colO, 10+rowO, 78+colO, defattr, "Dbl-click folder", "F4", 0, j, 0) QPRINTs 5+rowO, 78+colO, c1$, defattr QPRINTs 6+rowO, 78+colO, UpPtr$, defattr QPRINTs 7+rowO, 78+colO, DnPtr$, defattr QPRINTs 8+rowO, 78+colO, c2$, defattr 'Fill instantly return [-97] OR pick a directory CALL PickFromList(List1(), n, 7, 1, 28, 2+rowO,48+colO, 10+rowO, 78+colO, dimattr, revattr, Pick, RetKey, nulls$, mous, ms$) IF Pick > 0 THEN xS$ = RTRIM$(List1(Pick).ListItem) IF xS$ < "!" THEN GOTO ReadDirsA IF LEFT$(xS$, 3) = "·Ž " THEN xS$ = MID$(xS$, 4) CHDIR xS$ CurrentDir$ = UCASE$(CURDIR$) IF RIGHT$(CurrentDir$, 1) <> "\" THEN CurrentDir$ = CurrentDir$ + "\" RetKey = -97 GOTO ReadDirsA END IF RetKey = 0 'Files Frame Fil$ = CurrentDir$ + "*.STS" CALL PickAFile (Fil$, FileLimit, List1(), RetKey, Pick, mous, 1) IF RetKey = KeyF4 OR (RetKey = KeyEsc AND mous = TRUE) THEN CALL DrawFrm (2+rowO, 2+colO, 10+rowO, 46+colO, defattr, "Statistics Files", "DEL:Delete ESC:Menu", 0, 0, 0) GOTO ReadDirsA END IF LOOP WHILE RetKey = -83 '[D]elete must redisplay CHDIR HomeDir$ IF RetKey = KeyEsc OR RetKey = KeyF3 OR Pick = 0 THEN GOTO MenuOptions CmdStat$ = RTRIM$(List1(Pick).ListItem) ERASE List1 CALL StatsIO (Flds, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) CmdStat$ = nulls$ GOTO MenuOptions END IF '--------------------- 'Options M, T, S, E '--------------------- 'Manual / Two-team / Sch / Ser DisplaySchFiles: PCOPY 2, 1 IF MenuOpt$ = "T" OR MenuOpt$ = "S" OR MenuOpt$ = "E" THEN REDIM RotRec(300) AS GLOBAL RotType RTx = 0 REDIM MMList(100) AS GLOBAL MMType MMx = 0 REDIM WLRec(1 TO 300) AS GLOBAL WLType WLx = 0 END IF '------------------------------------------- 'Options S: Display and Select Schedule file '------------------------------------------- IF MenuOpt$ = "S" THEN 'Show Schedule Files and Pick One FileLimit = 150 DO REDIM List1(1 TO FileLimit) AS List1Type GOSUB GetCurrentDir 'return CurrentDir$ RetKey = -97 ReadDirsS: GOSUB LoadDirsToList1 'returns n 'Directory Tree Frame IF RetKey = -97 THEN j = 0: c1$ = CHR$(193): c2$ = CHR$(194) ELSE j = 1: c1$ = CHR$(208): c2$ = CHR$(210) END IF CALL DrawFrm(2+rowO,48+colO, 10+rowO, 78+colO, defattr, "Dbl-click folder", "F4", 0, j, 0) QPRINTs 5+rowO, 78+colO, c1$, defattr QPRINTs 6+rowO, 78+colO, UpPtr$, defattr QPRINTs 7+rowO, 78+colO, DnPtr$, defattr QPRINTs 8+rowO, 78+colO, c2$, defattr 'Display left frame and instantly return (-97) or pick a directory CALL PickFromList(List1(), n, 7, 1, 28, 2+rowO,48+colO, 10+rowO, 78+colO, dimattr, revattr, Pick, RetKey, nulls$, mous, ms$) IF Pick > 0 THEN xS$ = RTRIM$(List1(Pick).ListItem) IF xS$ < "!" THEN GOTO ReadDirsS IF LEFT$(xS$, 3) = "·Ž " THEN xS$ = MID$(xS$, 4) CHDIR xS$ CurrentDir$ = UCASE$(CURDIR$) IF RIGHT$(CurrentDir$, 1) <> "\" THEN CurrentDir$ = CurrentDir$ + "\" RetKey = -97 GOTO ReadDirsS END IF RetKey = 0 'Files Frame Fil$ = CurrentDir$ + "*.SCH" CALL PickAFile (Fil$, FileLimit, List1(), RetKey, Pick, mous, 1) IF RetKey = KeyF4 OR (RetKey = KeyEsc AND mous = TRUE) THEN CALL DrawFrm (2+rowO, 2+colO, 10+rowO, 46+colO, defattr, "Schedule Files", "[E]dit [N]ew ESC:Menu", 0, 0, 0) GOTO ReadDirsS END IF LOOP WHILE RetKey = 78 OR RetKey = 110 '[N]EW must redisplay CHDIR HomeDir$ IF RetKey = KeyEsc OR RetKey = KeyF3 OR Pick = 0 THEN GOTO MenuOptions CmdSCH$ = RTRIM$(List1(Pick).ListItem) CmdPath$ = CurrentDir$ 'Opportunity to Pick a Single Team and/or Date Range CALL SCHDateTeamIO (Keyed, Flds, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) IF Keyed = KeyF3 THEN ERASE List1 CmdSCH$ = nulls$ CHDIR HomeDir$ GOTO MenuOptions END IF SchedSw = TRUE ERASE List1 'Pick from ActiveSTAT(*) CALL CountActiveSTATFiles IF STx > 0 AND ProtectSCH = FALSE THEN FileLimit = 150 REDIM List1(1 TO FileLimit) AS List1Type FOR i = 1 TO STx List1(i).ListItem = ActiveSTAT(i) NEXT StatFrame: CALL DrawFrm(8+rowO, 22+colO, 15+rowO, 57+colO, defattr, "Stat Files for this .SCH", "Dbl-click selection or ENTER", 1, 0, 1) QPRINTs 14+rowO, 27+colO, "F10:Reset ESC:None", dimattr COLOR deffor, defbac CALL PickFromList(List1(), STx, 5, 2, 8, 8+rowO, 22+colO, 15+rowO, 57+colO, dimattr, revattr, Pick, RetKey, nulls$, mous, ms$) IF Pick > 0 THEN CmdStat$ = RTRIM$(List1(Pick).ListItem) END IF ERASE List1 'Special Case (F10) to Clear the STAT File List IF RetKey = -68 THEN CALL ClearActiveSTATRec END IF 'Pick Rotation Scheme for Schedule Runs CALL RotationMethIO (Flds, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) IF CmdSP$ = nulls$ THEN CmdSCH$ = nulls$: SchedSw = FALSE: GOTO DisplaySchFiles 'Set DH option GOSUB SkedAskDH CALL StatRecordSetup (Flds, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) CALL StatRecordIO (RetKey, Flds, 3, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) SimTotal = CountGamesInSCH (CmdFavLeague$, CmdFavTeam$, CmdDateL$, CmdDateH$, SubRecLen, VisiOffset, HomeOffset, OptiOffset) CALL SetRestartData IF CmdStat$ > "!" THEN GOSUB OpenStatFiles END IF '------------------------------------------- 'Options E: Display and Select Serial file '------------------------------------------- IF MenuOpt$ = "E" THEN 'Show Series Files and Pick One FileLimit = 150 REDIM List1(1 TO FileLimit) AS List1Type GOSUB GetCurrentDir 'return CurrentDir$ RetKey = -97 ReadDirsE: GOSUB LoadDirsToList1 'returns n 'Directory Tree Frame IF RetKey = -97 THEN j = 0: c1$ = CHR$(193): c2$ = CHR$(194) ELSE j = 1: c1$ = CHR$(208): c2$ = CHR$(210) END IF CALL DrawFrm(2+rowO,48+colO, 10+rowO, 78+colO, defattr, "Dbl-click folder", "F4", 0, j, 0) QPRINTs 5+rowO, 78+colO, c1$, defattr QPRINTs 6+rowO, 78+colO, UpPtr$, defattr QPRINTs 7+rowO, 78+colO, DnPtr$, defattr QPRINTs 8+rowO, 78+colO, c2$, defattr 'Display left frame and instantly return (-97) or pick a directory CALL PickFromList(List1(), n, 7, 1, 28, 2+rowO,48+colO, 10+rowO, 78+colO, dimattr, revattr, Pick, RetKey, nulls$, mous, ms$) IF Pick > 0 THEN xS$ = RTRIM$(List1(Pick).ListItem) IF xS$ < "!" THEN GOTO ReadDirsE IF LEFT$(xS$, 3) = "·Ž " THEN xS$ = MID$(xS$, 4) CHDIR xS$ CurrentDir$ = UCASE$(CURDIR$) IF RIGHT$(CurrentDir$, 1) <> "\" THEN CurrentDir$ = CurrentDir$ + "\" RetKey = -97 GOTO ReadDirsE END IF RetKey = 0 'Files Frame Fil$ = CurrentDir$ + "*.SER" CALL PickAFile (Fil$, FileLimit, List1(), RetKey, Pick, mous, 1) IF RetKey = KeyF4 OR (RetKey = KeyEsc AND mous = TRUE) THEN CALL DrawFrm (2+rowO, 2+colO, 10+rowO, 46+colO, defattr, "Series Files", "[V]iew [E]dit [N]ew ESC:Menu", 0, 0, 0) GOTO ReadDirsE END IF CHDIR HomeDir$ IF RetKey = KeyEsc OR RetKey = KeyF3 OR Pick = 0 THEN GOTO MenuOptions CALL RotationMethIO (Flds, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) IF CmdSP$ = nulls$ THEN GOTO DisplaySchFiles CmdSER$ = RTRIM$(List1(Pick).ListItem) FILPath$ = CurrentDir$ SeriesSw = TRUE ERASE List1 GOSUB SkedAskDH CALL StatRecordSetup (Flds, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) CALL StatRecordIO (RetKey, Flds, 3, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) CmdPath$ = FILPath$ SimTotal = CountGamesInSER 'Parse 1st line of .SER OPEN CmdPath$ + CmdSER$ FOR INPUT AS #2 LEN = 128 LINE INPUT #2, xS$ CALL ParseCommand (xS$, nargs) CALL SetSwitches (nargs) IF CmdStat$ > "!" THEN GOSUB OpenStatFiles END IF '------------------------ 'Schedule/Serial Settings 'Options S and E '------------------------ IF MenuOpt$ = "S" OR MenuOpt$ = "E" THEN CALL MoreOptionsIO (8, Flds, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) GOSUB Normalization ForceCLS = TRUE IF DelFac = 0 AND CmdPauseAftGame$ = "N" _ AND CmdPauseAftDate$ = "N" THEN RegDsply = FALSE ELSE RegDsply = TRUE END IF GOSUB SetAutoMgr END IF '------------------------------------------------ ' Normal ReEntry point for new .sch/.ser lines ' Applies to Options: M, T, S, E '------------------------------------------------ LoadTeamFiles: LL = 1 GOSUB ClearLineupData GOSUB ClearGameData SaveMMGameStatus = MMGame MMGame = FALSE LastPic$ = BackgroundPic$ BackgroundPic$ = CmdPic$ '------------------------------------------------ ' Sched / sEries / Command-line '------------------------------------------------ IF CmdVFil$ > "!" AND CmdHFil$ > "!" THEN 'Load team files from disk DataFil(1) = CmdVFil$ DataFil(2) = CmdHFil$ REDIM DLN(MAXPLAYERS, 2) AS GLOBAL LONG '"Duplicate Last Name" REDIM HBF!(2) REDIM HPF!(2) REDIM ParkBatAdj(2) AS GLOBAL SINGLE REDIM ParkPitAdj(2) AS GLOBAL SINGLE FOR it = 1 TO 2 GOSUB LoadDATFile IF Abort THEN EXIT FOR NEXT IF Abort THEN Abort = FALSE GOTO ReturnToDOS END IF IF CmdParkEffects$ = "Y" THEN GOSUB SetParkEffects 'Mark MM teams REDIM MMTeam(2) FOR it = 1 TO 2 IF MMx THEN IF FoundInMMList(DataFil(it)) THEN MMTeam(it) = TRUE END IF NEXT IF MMTeam(1) OR MMTeam(2) THEN IF SimGameCtr > 0 THEN CALL DrawFrm(19+rowO, 21+colO, 24+rowO, 63+colO, defattr, nulls$, nulls$, 0, 0, 1) xS$ = "The next game is 'Manually-Managed'." xS$ = SubDoubleQuote$ (xS$) QPRINTs 21+rowO, 23+colO, xS$, dimattr xS$ = "Hit 'Q' if you'd like to Quit now." xS$ = SubDoubleQuote$ (xS$) QPRINTs 22+rowO, 23+colO, xS$, dimattr xS$ = WAITKEY$ 'Quit before M-M game option IF UCASE$(xS$) = "Q" THEN IF CmdStat$ > "!" THEN GOSUB SaveStatsToDisk END IF IF MenuOpt$ = "S" THEN CALL SetSCHBookMark CALL UpdSCHRecord1 (" ") END IF GOTO QuickEnd END IF END IF END IF 'Get Starting Pitchers from pre-defined rotation CALL GetNextPitchers 'ipa(tm) <-- N 'AutoLineup FOR it = 1 TO 2 c = 0 IF MMx THEN 'Dont mess with lineups on MM teams IF MMTeam(it) = FALSE THEN IF AutoLineUpSw(it) THEN CALL AutoLineUp (it, c) END IF ELSE IF AutoLineUpSw(it) THEN CALL AutoLineUp (it, c) END IF LUAltered(it) = c NEXT 'DH & "Pitcher Hitting Stats" (if no DH) CALL SetDH 'Insert Platoon players CALL SetPlatoon 'Batting Order adjustment FOR it = 1 TO 2 IF AdjustBO(it) = "Y" OR AdjustBO(it) = "C" THEN IF MMx THEN 'Dont mess with lineups on MM teams IF MMTeam(it) = FALSE THEN IF AdjustBO(it) = "Y" OR _ (AdjustBO(it) = "C" AND LUAltered(it)) THEN CALL AdjustBattingOrder (it) END IF ELSE IF AdjustBO(it) = "Y" OR _ (AdjustBO(it) = "C" AND LUAltered(it)) THEN CALL AdjustBattingOrder (it) END IF END IF NEXT IF MMx THEN 'Checks for Manually Managed option FOR id = 1 TO 2 IF MMTeam(id) THEN MMGame = TRUE PCOPY 2, 1 'Opportunity to change starting pitcher! CALL DrawFrm(4+rowO, 10+colO, 21+rowO, 70+colO, defattr, "Manual Manage Options", nulls$, 1, 0, 1) QPRINTs 6+rowO, 12+colO, SchDate$, dimattr IF SimTotal THEN i = SimGameCtr + 1 x$ = " This is game " + STR$(i) + " of" + STR$(SimTotal) QPRINTs 6+rowO, 28+colO, x$, dimattr END IF 'Display Visitor on top : Home on botton IF id = 1 THEN row = 8+rowO ELSE row = 13+rowO p = ipa(id) xS$ = DataName(p, id) QPRINTs row, 12+colO, "Scheduled to start for YOUR " + RTRIM$(Names(id)) + ":", defattr QPRINTs row + 1, 15+colO, " W L ERA", defattr xF! = DataRBI(p, id) / 100 a$ = SPACE$(38) IF CmdStat$ > "!" AND DaysOffRule = TRUE THEN m = GetDaysOff (p, id) IF m THEN MID$(a$, 22, 1) = LFORMAT$(m, "#") END IF END IF MID$(a$, 1, 20) = FULLNAME$(xS$) MID$(a$, 24, 2) = DataHand(p, id) MID$(a$, 27, 2) = LFORMAT$(DataDef(p, id), "##") MID$(a$, 30, 2) = LFORMAT$(DataSB(p, id), "##") MID$(a$, 33, 5) = FFORMAT$(xF!, "#0.##") QPRINTs row + 2, 15+colO, a$, defattr CALL PitchersWLS (id, p, w, l, s, era!) a$ = SPACE$(38) MID$(a$, 27, 2) = LFORMAT$(w, "##") MID$(a$, 30, 2) = LFORMAT$(l, "##") MID$(a$, 33, 5) = FFORMAT$(era!, "#0.##") QPRINTs row + 3, 15+colO, a$ + " [SIM]", defattr IF row = 8+rowO THEN row = 13+rowO ELSE row = 8+rowO it = 3 - id p = ipa(it) xS$ = DataName(p, it) QPRINTs row, 12+colO, "Starting for " + RTRIM$(Names(it)) + ":", dimattr QPRINTs row + 1, 15+colO, " W L ERA", dimattr xF! = DataRBI(p, it) / 100 a$ = SPACE$(38) IF CmdStat$ > "!" AND DaysOffRule = TRUE THEN m = GetDaysOff (p, it) IF m THEN MID$(a$, 22, 1) = LFORMAT$(m, "#") END IF END IF MID$(a$, 1, 20) = FULLNAME$(xS$) MID$(a$, 24, 2) = DataHand(p, it) MID$(a$, 27, 2) = LFORMAT$(DataDef(p, it), "##") MID$(a$, 30, 2) = LFORMAT$(DataSB(p, it), "##") MID$(a$, 33, 5) = FFORMAT$(xF!, "#0.##") QPRINTs row + 2, 15+colO, a$, dimattr CALL PitchersWLS (it, p, w, l, s, era!) a$ = SPACE$(38) MID$(a$, 27, 2) = LFORMAT$(w, "##") MID$(a$, 30, 2) = LFORMAT$(l, "##") MID$(a$, 33, 5) = FFORMAT$(era!, "#0.##") QPRINTs row + 3, 15+colO, a$ + " [SIM]", dimattr QPRINTs 19+rowO, 12+colO, "Want to change your starting pitcher? [y/N]", defattr LOCATE 19+rowO, 56+colO IF YESorNO$(revfor, revbac, deffor, defbac, "N") = "Y" THEN DO CALL PickTheStarter(id, 4, N) '[N] LOOP WHILE N = 0 'you gotta pick one ipa(id) = N np(id) = 1 iyp(1, id) = N CALL AssignFatigue (id) CALL SetDH 'Sets Pitcher Hitting Stats also END IF 'Display Lineup and accept changes DO CALL Lineup(id, rv) CALL DefSwitchSetup (kc, Flds, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) LOOP WHILE kc = KeyF3 IF FContents$(1) = "Y" THEN PCOPY 2, 1 CALL DefSwitch(4, id) END IF END IF 'END Found in MM List LOCATE 1, 1 CURSOR OFF NEXT 'Check both teams for Manually Managed option 'Opportunity to mess with opponent's lineup tm = 0 IF MMTeam(1) = TRUE AND MMTeam(2) = FALSE THEN tm = 2 IF MMTeam(2) = TRUE AND MMTeam(1) = FALSE THEN tm = 1 IF tm THEN CALL DrawFrm(11+rowO, 21+colO, 15+rowO, 65+colO, defattr, nulls$, nulls$, 0, 0, 0) QPRINTs 13+rowO, 23+colO, " Want to access your opponent's lineup? ", defattr LOCATE 13+rowO, 63+colO IF YESorNO$(7, 0, deffor, defbac, "N") = "Y" THEN 'Display Lineup and accept changes PCOPY 2, 1 DO CALL Lineup(tm, rv) CALL DefSwitchSetup (kc, Flds, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) LOOP WHILE kc = KeyF3 IF FContents$(1) = "Y" THEN PCOPY 2, 1 CALL DefSwitch(4, tm) END IF END IF END IF 'Set switches for RegDsply and ForceCLS IF MMGame = FALSE THEN 'This game isn't an MM game, but we are in an MM Schedule 'WAS IF CmdDel = 0 AND etc. IF CmdPauseAftGame$ = "N" AND CmdPauseAftDate$ = "N" THEN RegDsply = FALSE ELSE RegDsply = TRUE END IF IF SaveMMGameStatus = TRUE THEN 'Must CLS if LAST game was MM SaveMMGameStatus = FALSE ForceCLS = TRUE END IF ELSE 'This game IS an Manually Managed schedule game RegDsply = TRUE ForceCLS = TRUE END IF END IF 'Save original lineups CALL SnapShot 'Prepare background photo (assigned in .DAT) IF (Gfx OR BitmapNRF) AND RegDsply THEN ' x$ = "Back: " + BackgroundPic$ + " Last: " + LastPic$ ' CALL ErrorBox (x$) IF (BackgroundPic$ <> LastPic$) OR MMGame THEN LastPic$ = BackgroundPic$ COLOR fldfor, fldbac CLS IF BackgroundPic$ > "!" THEN GOSUB GetPhotoSpecs GOSUB DefineBitmap END IF END IF GOTO StartUp END IF '--------- MANUAL / TWO-TEAM ---- 'New location Statistics Recording 'Options M and T '--------------------------- IF NOT CmdLine THEN PCOPY 2, 1 CALL StatRecordSetup (Flds, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) CALL StatRecordIO (RetKey, Flds, 3, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) IF RetKey = KeyF3 THEN GOTO MenuOptions ELSE PCOPY 2, 1 END IF IF CmdStat$ > "!" THEN GOSUB OpenStatFiles END IF '-------------------------------- 'Load and sort list of .DAT files 'Options: Manual and Two-team '-------------------------------- REM QPRINTs 11, 42, " Loading file names... ", defattr r1 = ((ConsRows - 20) \ 5) + 1 'replaces 2 r2 = ConsRows - r1 'replaces 22 c1 = (ConsCols - 78) \ 2 'replaces 1 c2 = ConsCols - c1 'replaces 79 CmdSlotGames = 0 FileLimit = 1500 REDIM List1(1 TO FileLimit) AS List1Type GOSUB GetCurrentDir 'return CurrentDir$ tm = 0 RetKey = -97 ReadDirs: GOSUB LoadDirsToList1 'FOLDER Frame (right) IF RetKey = -97 THEN j = 0: c1$ = CHR$(193): c2$ = CHR$(194) ELSE j = 1: c1$ = CHR$(208): c2$ = CHR$(210) END IF IF tm = 0 THEN a$ = " Dbl-click (or Enter) VISITING TEAM " ELSE a$ = " Dbl-click (or Enter) HOME TEAM " END IF CALL DrawFrm(r1, c2-20, r2, c2, defattr, "Dbl-click folder", nulls$, 0, j, 0) QPRINTs MidRow-1, c2, c1$, defattr QPRINTs MidRow , c2, UpPtr$, defattr QPRINTs MidRow+1, c2, DnPtr$, defattr QPRINTs MidRow+2, c2, c2$, defattr 'FILENAME Frame (left) CALL DrawFrm(r1, c1, r2, c2-21, defattr, "[V]iew [E]dit [A]ux PgUp/PgDn", a$, 0, (1-j), 2) 'Change attributes for emphasis attr = CalcAttr(14, 1) 'Yellow on dark blue CALL ReadFromScreen (r2, 1, ConsCols, field$, " ", Valid$) ii = INSTR(field$, "VISIT") IF ii = 0 THEN ii = INSTR(field$, "HOME") IF ii THEN CALL ChangeAttribute (r2, ii, 13, attr) j = 1 - j IF j = 0 THEN c1$ = CHR$(193): c2$ = CHR$(194) ELSE c1$ = CHR$(208): c2$ = CHR$(210) END IF QPRINTs MidRow-1, c2-21, c1$, defattr QPRINTs MidRow , c2-21, UpPtr$, defattr QPRINTs MidRow+1, c2-21, DnPtr$, defattr QPRINTs MidRow+2, c2-21, c2$, defattr 'Fill FOLDER frame and instantly return (-97) or pick a directory CALL PickFromList(List1(), n, r2-r1-1, 1, 17, r1, c2-20, r2, c2, dimattr, revattr, Pick, RetKey, nulls$, mous, ms$) IF Pick > 0 THEN xS$ = RTRIM$(List1(Pick).ListItem) IF xS$ < "!" THEN GOTO ReadDirs IF LEFT$(xS$, 3) = "·Ž " THEN xS$ = MID$(xS$, 4) CHDIR xS$ CurrentDir$ = UCASE$(CURDIR$) IF RIGHT$(CurrentDir$, 1) <> "\" THEN CurrentDir$ = CurrentDir$ + "\" RetKey = -97 GOTO ReadDirs END IF RetKey = 0 'Fill FILENAME Frame Fil$ = CurrentDir$ + "*.DAT" n = 0 CALL LoadFilesToList1 (Fil$, List1(), FileLimit, n) ' [n] TeamsOnFile = n ARRAY SORT List1(1) FOR n, FROM 1 TO 12, ASCEND IF n = 1 THEN IF RTRIM$(List1(1).ListItem) = ".." OR _ RTRIM$(List1(1).ListItem) = "C:\" THEN TeamsOnFile = 0 END IF END IF DO DO CALL PickFromList(List1(), TeamsOnFile, r2-r1-1, 4, 12, r1, c1, r2, c2-21, dimattr, revattr, Pick, RetKey, nulls$, mous, ms$) CALL ExitPickForDAT(List1(), Pick, RetKey) LOOP WHILE RetKey = -99 IF RetKey = KeyF4 OR (mous AND RetKey = KeyEsc AND ms$ <> "—") THEN GOTO ReadDirs IF ms$ = "—" OR RetKey = KeyF3 OR RetKey = KeyEsc OR Pick = 0 THEN CHDIR HomeDir$ GOTO MenuOptions END IF INCR tm DataFil(tm) = RTRIM$(List1(Pick).ListItem) DATPath(tm) = CurrentDir$ IF tm = 1 THEN QPRINTs r2+2, c1+11, SPACE$(28), prmattr QPRINTs r2+2, c1+12, "Visiting Team: " + DataFil(tm) + " ", prmattr CALL ReadFromScreen (r2, 1, ConsCols, field$, " ", Valid$) ii = INSTR(field$, "VISIT") IF ii THEN QPRINTs r2, ii, "HOME TEAM ", defattr CALL ChangeAttribute (r2, ii, 9, attr) ELSE QPRINTs r2+2, c1+39, SPACE$(28), prmattr QPRINTs r2+2, c1+39, " Home Team: " + DataFil(tm), prmattr EXIT DO END IF LOOP CHDIR HomeDir$ '---------------------------------------- 'Load two selected files into team arrays 'Options M and T [manual command line enters here] '---------------------------------------- LoadManual: SavePath$ = CmdPath$ REDIM DLN(MAXPLAYERS, 2) AS GLOBAL LONG REDIM HBF!(2) REDIM HPF!(2) REDIM ParkBatAdj(2) AS GLOBAL SINGLE REDIM ParkPitAdj(2) AS GLOBAL SINGLE FOR it = 1 TO 2 IF DATPath(it) > "!" THEN CmdPath$ = DATPath(it) GOSUB LoadDATFile NEXT IF CmdParkEffects$ = "Y" THEN GOSUB SetParkEffects CmdPath$ = SavePath$ IF NOT CmdLine THEN QPRINTs r2, c1+9, STRING$(48, "Ö"), defattr END IF '--------------------------- 'Pick the starting pitchers: 'Options M and T '--------------------------- PickStarters: COLOR deffor, defbac FOR tm = 1 TO 2 IF MenuOpt$ = "M" THEN 'Manual IF tm = 1 THEN IF CmdVP$ = nulls$ THEN CALL PickTheStarter(tm, 2, N) ELSE N = VAL(CmdVP$) + 9 END IF END IF IF tm = 2 THEN IF CmdHP$ = nulls$ THEN CALL PickTheStarter(tm, 2, N) ELSE N = VAL(CmdHP$) + 9 END IF END IF ELSE PCOPY 2, 1 CALL TwoTeamStarters(tm, N) 'Two team CmdVP$ = nulls$ CmdHP$ = nulls$ END IF IF N = 0 THEN 'Back up - no selection made PCOPY 2, 1 GOTO LoadTeamFiles 'Clear arrays and re-load from disk END IF ipa(tm) = N np(tm) = 1 iyp(1, tm) = N CALL AssignFatigue (tm) NEXT IF NOT CmdLine THEN ERASE List1 'Don't need list of .DAT files any more '---------------------- 'Additional Settings 'Options M and T '---------------------- IF MenuOpt$ = "T" THEN PCOPY 2, 1 'set CmdSlotGames 'set Auto-Lineup for each team 'set CmdDH$ 'set CmdSpot$ row = 5 CALL TwoTeamSetup (row, Flds, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) CALL TwoTeamIO (RetKey, Flds, 1, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) CmdSlotGames = VAL(FContents$(1)) AutoLineUpSw(1) = (FContents$(2) = "Y") AutoLineUpSw(2) = (FContents$(3) = "Y") AdjustBO(1) = FContents$(4) AdjustBO(2) = FContents$(5) CmdDH$ = FContents$(6) CmdSpot$ = FContents$(7) ELSE 'Manual: xS$ = DefaultDHResponse$ IF NOT CmdLine THEN CALL DrawFrm(13+rowO, 22+colO, 15+rowO, 56+colO, defattr, nulls$, nulls$, 1, 0, 0) QPRINTs 14+rowO, 23+colO, " Use Designated Hitter? [y/N] ", dimattr LOCATE 14+rowO, 53+colO CmdDH$ = YESorNO$(revfor, revbac, deffor, defbac, xS$) ELSE IF CmdDH$ = nulls$ THEN CmdDH$ = xS$ END IF COLOR deffor, defbac END IF '---- Original location of Statistics Recording 'Options M and T '---------------------------------------------- CALL SetDH CALL SetPlatoon '--------------------------------- 'Display Lineup and accept changes 'Options M and T '--------------------------------- FOR id = 1 TO 2 IF amgr(id) = 0 THEN IF (AutoLineUpSw(id) = 0) OR Force2TmLineup THEN COLOR 15, 3 'Get a sky-blue background PCOPY 2, 1 DO CALL Lineup(id, rv) CALL DefSwitchSetup (kc, Flds, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) LOOP WHILE kc = KeyF3 IF FContents$(1) = "Y" THEN PCOPY 2, 1 CALL DefSwitch(4, id) END IF LOCATE 1, 1 CURSOR OFF END IF END IF NEXT IF MenuOpt$ = "M" OR MenuOpt$ = "T" THEN CALL SnapShot END IF IF MenuOpt$ = "T" THEN GOSUB SetAutoMgr SoundOn = FALSE PCOPY 2, 1 CALL MoreOptionsIO (6, Flds, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) GOSUB Normalization ForceCLS = TRUE IF DelFac = 0 AND CmdPauseAftGame$ = "N" _ AND CmdPauseAftDate$ = "N" THEN RegDsply = FALSE ELSE RegDsply = TRUE END IF GOTO StartUp END IF '----------------------------------------------------- ' Final Ground Rules - questions to set up Manual Game ' Option M only '----------------------------------------------------- IF NOT CmdLine THEN DelFac = CmdDel IF DelFac < 2 THEN DelFac = 3 PCOPY 2, 1 CALL GroundRulesIO (Flds, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) BackgroundPic$ = RTRIM$(FContents$(8)) Gfx = FALSE IF ConsRows <> 25 AND ConsCols <> 80 THEN IF BackgroundPic$ <> "--NONE--" AND BackgroundPic$ > "!" THEN IF amgr(1) = 0 OR amgr(2) = 0 THEN r = 17 + rowO c = 20 + colO QPRINTs r, c, " One moment please, stretching photograph... ", defattr END IF GOSUB GetPhotoSpecs 'sets Gfx to TRUE END IF END IF END IF GOSUB Normalization ForceCLS = TRUE RegDsply = TRUE GOSUB DefineBitmap IF amgr(1) AND amgr(2) THEN GOTO StartUp 'SetCmdWinData IF CmdLine THEN GOTO StartUp CALL DrawFrm(14+rowO, 7+colO, 22+rowO, 77+colO, defattr, nulls$, nulls$, 1, 0, 1) xS$ = "V" yS$ = "H" NewUI = TRUE r = 15 + rowO c = 9 + colO IF NOT amgr(1) AND NOT amgr(2) THEN QPRINTs r, c, "The computer is not managing either team.", defattr QPRINTs r+1, c, "Are there two players involved here?", defattr QPRINTs r+2, c, "[i.e., do you need to conceal your strategy?] [y/N] ", defattr LOCATE r+2, 61+colO IF YESorNO$(revfor, revbac, deffor, defbac, "N") = "Y" THEN DspSw = FALSE NewUI = FALSE xS$ = "S" yS$ = "5" END IF r = 18 + rowO END IF IF NOT amgr(1) THEN QPRINTs r, c, "Visiting team: Press " + CHR$(34) + xS$ + CHR$(34) + " to pop up Strategy window.", defattr INCR r END IF IF NOT amgr(2) THEN QPRINTs r, c, "Home team : Press " + CHR$(34) + yS$ + CHR$(34) + " to pop up Strategy window.", defattr INCR r END IF INCR r QPRINTs r, c, "Tip: Click on any empty area on the bottom row of screen to pitch.", defattr QPRINTs 22+rowO, 28+colO, " Hit/Click Any Key to BeginÇ", defattr COLOR deffor, defbac LOCATE 1, 1 CURSOR OFF PauseIt '---------------------------------------------------------- ' Game starts here ' Special Re-entry point for /N: (more games on same .sch/.ser card) '---------------------------------------------------------- StartUp: IF RegDsply AND Gfx THEN FOR n = 1 TO 32 CALL EliminateHole(n) NEXT END IF LL = 10 GameIsOver = FALSE Silence = FALSE GameRnd = FRND(10) REDIM SimDaysOff(10 TO TopPitLim, 2) AS GLOBAL LONG ' (We use this array both with and without stat files) IF CmdStat$ > "!" THEN REDIM SimGames(MAXPLAYERS, 2) AS GLOBAL LONG REDIM SimAB(MAXPLAYERS, 2) AS GLOBAL LONG REDIM SimHits(MAXPLAYERS, 2) AS GLOBAL LONG REDIM SimHR(MAXPLAYERS, 2) AS GLOBAL LONG REDIM SimRBI(MAXPLAYERS, 2) AS GLOBAL LONG REDIM SimBStreak(MAXPLAYERS, 2) AS GLOBAL LONG REDIM SimBB(MAXPLAYERS, 2) AS GLOBAL LONG REDIM SimSO(MAXPLAYERS, 2) AS GLOBAL LONG REDIM SimHitsAlw(10 TO TopPitLim, 2) AS GLOBAL LONG REDIM SimERuns(10 TO TopPitLim, 2) AS GLOBAL LONG REDIM SimWins(10 TO TopPitLim, 2) AS GLOBAL LONG REDIM SimLosses(10 TO TopPitLim, 2) AS GLOBAL LONG REDIM SimSaves(10 TO TopPitLim, 2) AS GLOBAL LONG REDIM SimBBAlw(10 TO TopPitLim, 2) AS GLOBAL LONG REDIM SimSO_P(10 TO TopPitLim, 2) AS GLOBAL LONG REDIM SimInn(10 TO TopPitLim, 2) AS GLOBAL SINGLE FOR tm = 1 TO 2 CALL LoadSimData (tm) NEXT END IF LL = 20 IF CmdStat$ > "!" AND STSOpen = FALSE THEN 'Re-Open #3 .STS OPEN CmdWritePath$ + CmdStat$ + ".STS" FOR RANDOM AS #3 LEN = LEN(SSum) n = LOF(3) / LEN(SSum) SEEK #3, n + 1 'position random file to append STSOpen = TRUE END IF IF MMx THEN SoundOn = FALSE DelFac = OrgSimDelFac FOR i = 1 TO 2 IF FoundInMMList(DataFil(i)) THEN amgr(i) = FALSE DelFac = CmdDel IF CmdSound$ <> "N" THEN SoundOn = TRUE END IF NEXT END IF IF RegDsply THEN COLOR fldfor, fldbac ELSE COLOR deffor, defbac DelFac = 0 END IF IF ForceCLS THEN CLS ForceCLS = FALSE CALL Prompt(0) IF RegDsply THEN it = 1: CALL ScoreBrd (TRUE, TRUE) ELSE ' CALL Prompt(0) 'experiment 2007 END IF IF CmdSlotGames THEN GOSUB PrintButtons IF RegDsply AND Gfx THEN CALL ShowGfx CALL UnfreezeAndRefresh END IF REDIM ibp(2) AS GLOBAL LONG inn = 1 AnthemPlayed = FALSE ErasedScbd = FALSE 'If 25x80 mode: 'Draw part of the defense that we may not ever need to draw again. IF RegDsply AND ConsRows = 25 AND ConsCols = 80 AND Gfx = FALSE THEN xS$ = CHR$(249) tr = MidRow + 5 r = tr: c = MidCol - 10: GOSUB PrintDOT r = tr: c = MidCol + 8: GOSUB PrintDOT r = tr+1: c = MidCol - 7: GOSUB PrintDOT r = tr+1: c = MidCol + 5: GOSUB PrintDOT IF CmdStat$ = nulls$ THEN r = tr+2: c = MidCol - 4: GOSUB PrintDOT r = tr+2: c = MidCol + 2: GOSUB PrintDOT END IF END IF 'Record starting positions for both sides in Games-by-Position FOR id = 1 TO 2 x$ = "~Lineup: " + Names(id) CALL AddToScoreCrd(0, 0, "X", x$) FOR p = 1 TO 9 ref = DataRef(p, id) ps = DataPos(p, id) IF ps <> 1 THEN GpPos(ref, id, ps) = 1 END IF 'Record starting lineups in scorecard CALL AddToScoreCrd(id, ref, "0", Pos(ps)) NEXT ref = ipa(id) GpPos(ref, id, 1) = 1 NEXT LL = 30 '---------------------------------- 'Top 1/2 of each inning begins here '---------------------------------- TopOfInning: 'Check if Visiting team wins IF inn > RegInns THEN IF itruns(1) > itruns(2) THEN inn = inn - 1 IF RegDsply AND Gfx THEN CALL UnfreezeAndRefresh END IF GOTO GameOver END IF END IF it = 1 DO WHILE it <= 2 'Switch sides 'Home team wins (no need to play last 1/2 inning) IF inn >= RegInns THEN IF itruns(2) > itruns(1) AND it = 2 THEN IF RegDsply AND Gfx THEN CALL UnfreezeAndRefresh END IF GOTO GameOver END IF END IF CurrentGamePoint = (inn * 10) + it PitcherBatted(it) = FALSE ResetHitter = FALSE SaveState = FALSE GOSUB ResetBatterCounters ANx = 0 innr = 0: innh = 0: inne = 0: innadverr = 0: iout = 0 ir1 = 0: ir2 = 0: ir3 = 0 innLOB = 0 REDIM mpp(9) AS GLOBAL LONG 'Reset which pitcher is responsible IF RegDsply THEN 'for each baserunner IF Gfx THEN GfxWindow NOT %GFX_FREEZE 'unfreeze CALL BatOrd CALL BasPat IF Gfx THEN GfxRefresh 0 'refresh (remain unfrozen) END IF IF inn < 11 THEN innct = inn ELSEIF inn > 10 AND inn < 21 THEN innct = inn - 10 ELSEIF inn > 20 THEN innct = inn - 20 END IF IF inn = 1 OR inn = 11 OR inn = 21 OR inn = 31 THEN IF it = 1 AND NOT ErasedScbd THEN ErasedScbd = TRUE REDIM iScoreBd(2, 10) AS GLOBAL LONG END IF ELSE ErasedScbd = FALSE END IF id = 3 - it 'Toggles defensive team from 1 to 2 or 2 to 1 ip = ipa(id) 'pointer to defensive team's current pitcher IF inn = 1 THEN IF iout = 0 THEN IF NUMBERON = 0 THEN CALL AddToScoreCrd (it, ip, "A", "[Starter] ") END IF END IF END IF 'Do we HAVE to have a new pitcher? (Did we pinch-hit/run for pitcher in the last 1/2 inning?) InvalidPit = FALSE NeedNewPitcher = FALSE i = 1 k = 0 ivp = 0 DO 'Scan defense for pitcher and his reference number IF DataPos(i, id) = 1 THEN INCR k 'Was he the last pitcher? LastRealPitcher$ = DataName(iyp(np(id), id), id) IF LastRealPitcher$ <> DataName(i, id) THEN IF amgr(id) = TRUE THEN 'Can the new guy pitch anyway? 'i.e. is DataName(i, id) found among the pitchers? SearchName$ = DataName(i, id) N = SearchDAT (10, LastPiAd(id), id, SearchName$, 0) IF N > 0 THEN 'Pitcher pinch-hitting for pitcher 'Always leave him in CALL Bullpen(N, id, N, 0) NeedNewPitcher = FALSE ivp = 0 ELSE 'No, he can't pitch ivp = i END IF ELSE ivp = i END IF InvalidPit = TRUE END IF END IF INCR i LOOP UNTIL i > 9 IF k > 1 THEN x$ = "More than one pitcher in batting order! " CALL ErrorBox (x$) END IF LL = 40 IF InvalidPit THEN IF ivp THEN NeedNewPitcher = TRUE COLOR deffor, defbac 'Found an invalid pitcher in slot number "ivp" IF amgr(id) = FALSE THEN CALL GetScreen(Scr1$, 10+rowO, 2+colO, 15+rowO, 78+colO) IF Gfx THEN CALL GraphHole (32, 10+rowO, 2+colO, 15+rowO, 78+colO) CALL DrawFrm(10+rowO, 2+colO, 15+rowO, 78+colO, defattr, nulls$, nulls$, 0, 0, 0) QPRINTs 11+rowO, 4+colO, "You have pinch hit/run for your pitcher.", defattr 'List positions he can play nn = 1 p$ = "" FOR nn = 1 TO 4 m = DataPosi(ivp, id, nn) IF m > 0 THEN IF nn = 1 THEN p$ = " [" ELSE p$ = p$ + "/" p$ = p$ + Pos(m) END IF NEXT IF LEN(p$) THEN p$ = p$ + "]" CALL CountAvPitchers(id, AvP, LastGuy) IF AvP > 0 THEN x$ = "Do you want " + LASTNAME$(DataName(ivp, id)) + p$ + " to remain in the game? [y/N] " QPRINTs 12+rowO, 4+colO, x$, defattr LOCATE 12+rowO, 4+colO+LEN(x$) xS$ = YESorNO$(revfor, revbac, deffor, defbac, "N") ELSE x$ = LASTNAME$(DataName(ivp, id)) + " will remain in the game. " QPRINTs 12+rowO, 4+colO, x$, defattr xS$ = "Y" SLEEP 2500 END IF ELSE xS$ = "N" 'SBS Manager END IF IF xS$ = "Y" THEN 'Does name in pitcher's slot correspond to an actual pitcher? 'If so, this is a pitcher pinch-hitting for another pitcher. SearchName$ = DataName(ivp, id) N = SearchDAT (10, LastPiAd(id), id, SearchName$, 0) IF N THEN 'Pitcher pinch-hitting for pitcher NeedNewPitcher = FALSE QPRINTs 13+rowO, 4+colO, "This player will be the new pitcher.", defattr SLEEP 2500 CALL Bullpen(N, id, N, 0) ELSE 'Non-pitcher pinch-hitting for pitcher DO QPRINTs 13+rowO, 4+colO, "At which position? ", defattr QPRINTs 14+rowO, 4+colO, "Enter a position: C 1B 2B SS 3B LF CF RF ", defattr yS$ = MYINPUT$(FALSE, KeyEscape, CustomEscKey, KeyAccept, kc, revfor, revbac, 14+rowO, 49+colO, 2, "XR", 0, 0, nulls$, msx, msy) '(we don't really want to support the mouse on this one) COLOR deffor, defbac yS$ = UCASE$(yS$) IF yS$ = " C" THEN yS$ = "C " IF yS$ = " P" THEN yS$ = "P " j = 1 DO UNTIL j > 9 IF Pos(j) = yS$ AND yS$ <> "P " THEN EXIT DO INCR j LOOP LOOP WHILE j > 9 'We want the pinch-hitter to stay in and play 'defensive position "j" 'What slot is THAT in the line-up? k = 1 DO UNTIL k > 9 'Scan defense for defensive position j IF DataPos(k, id) = j THEN EXIT DO INCR k LOOP 'Well, the guy in slot "k" is playing position "j" yS$ = "** " + FLASTNAME$(ivp, id) + " stays in at " + Pos(j) CALL AddToScoreCrd(0, 0, "X", yS$) yS$ = "** for " + FLASTNAME$(k, id) CALL AddToScoreCrd(0, 0, "X", yS$) IF k < 10 THEN SWAP DataPos(ivp, id), DataPos(k, id) END IF END IF IF amgr(id) = FALSE THEN IF WarmUpRule AND NeedNewPitcher THEN 'Check if anybody's warm N = 0 FOR i = 10 TO LastPiAd(id) IF WarmUpStatus(i, id) > 0 AND _ iused(i, id) = 0 AND _ i <> iyp(np(id), id) THEN N = -1 'Debug: ' x$ = "Last Real Pitcher=" + STR$( iyp(np(id),id) ) + "|" ' x$ = x$ + "i=" + STR$(i) + "|" ' x$ = x$ + "WarmUpStatus(i, id)=" + STR$( WarmUpStatus(i,id) ) + "|" ' x$ = x$ + "iused(i, id)=" + STR$( iused(i, id) ) + "|" ' x$ = x$ + DataName(i, id) ' CALL ErrorBox (x$) EXIT FOR END IF NEXT IF N = 0 THEN 'Emergency - this shouldn't happen, but just in case... 'Happens if pitcher is replaced by clone-pitcher who is then replaced before clone-pitcher 'actually pitches. 'I.E. Pinch-hit or pinch-run for pitcher w/clone-pitcher and then replace clone-pitcher 'before 1/2 inning ends FOR i = 10 TO LastPiAd(id) IF iused(i, id) = 0 THEN WarmUpStatus(i, id) = 1 NEXT END IF END IF CALL PutScreen(Scr1$, 10+rowO, 2+colO, 15+rowO, 78+colO) IF Gfx THEN CALL EliminateHole(32) GfxRefresh 0 END IF END IF 'Must select a pitcher IF NeedNewPitcher THEN CALL ClearInpBuffer N = 0 DO CALL Bullpen(N, id, 0, 0) IF N = 0 AND amgr(id) = TRUE THEN 'AutoManager ran out of pitchers! x$ = "AutoManager is out of pitchers!" CALL ErrorBox (x$) END IF LOOP UNTIL N IF Gfx THEN GfxRefresh 0 'refresh (remain unfrozen) 'Option for player to double-switch IF amgr(id) = FALSE AND dh = 0 THEN HotBull = TRUE END IF END IF LineUpChangeDef = TRUE GpPos(N, id, 1) = 1 CALL AddToScoreCrd (it, N, "A", "[Relief] ") IF amgr(id) = FALSE THEN COLOR fldfor, fldbac IF NOT Gfx THEN CLS CALL ScoreBrd (TRUE, TRUE) CALL BatOrd 'Reset color to field CALL Prompt(0) ELSE 'TEST IF RegDsply THEN CALL BatOrd END IF END IF END IF 'InvalidPitcher 'Draw the Defense ip = ipa(id) IF RegDsply THEN CALL Defens(60) 'still unfrozen IF Gfx THEN CALL EliminateHole(6) 'reset stat holes CALL EliminateHole(7) GfxRefresh 0 'refresh ELSE IF ConsRows > 27 AND ConsCols > 83 THEN 'non-graphics xS$ = SPACE$(41) QPRINTs 9, 2, xS$, fldattr QPRINTs 10, 2, xS$, fldattr QPRINTs 11, 2, xS$, fldattr QPRINTs 9, ConsCols - 41, xS$, fldattr QPRINTs 10, ConsCols - 41, xS$, fldattr QPRINTs 11, ConsCols - 41, xS$, fldattr END IF END IF 'Display Year/League Normalization IF CmdEra$ > "!" THEN IF CmdEra$ <> "N" THEN GOSUB PrintERA END IF END IF END IF 'Play National Anthem if you haven't already IF inn = 1 AND it = 1 THEN IF RegDsply THEN CALL ScoreBrd (TRUE, TRUE) 'Messes up first line of graphic box IF Gfx THEN GfxRefresh 0 GfxWindow %GFX_FREEZE END IF DrawSBFrame = FALSE GenerateAllSB = FALSE IF NOT AnthemPlayed THEN IF DelFac THEN IF SoundOn THEN AddToAnnouncer it, "Our National Anthem..." ELSE AddToAnnouncer it, "We're set for the first pitch..." CALL PostAnnouncer (FALSE) SLEEP 1500 END IF CALL PostAnnouncer (FALSE) END IF IF DelFac > 0 AND SoundOn THEN 'Save screen area and print message IF Gfx THEN CALL GraphHole(30, ConsRows-2, 24+colO, ConsRows-2, 59+colO) CALL GetScreen(Scr1$, ConsRows-2, 24+colO, ConsRows-2, 59+colO) QPRINTs ConsRows-2, 24+colO, "Click or hit any key to continue...", errattr IF CANADA(Names(1)) AND CANADA(Names(2)) THEN 'Play O-Canada MCISendString "open type midiaudio", BYVAL 0, 0, 0 MCISendString PlayCAN, BYVAL 0, 0, 0 x$ = WAITKEY$ MCISendString STOPCAN, BYVAL 0, 0, 0 MCISendString "CLOSE type midiaudio", BYVAL 0, 0, 0 ELSEIF CANADA(Names(1)) AND NOT CANADA(Names(2)) THEN 'Play O-Canada MCISendString "open type midiaudio", BYVAL 0, 0, 0 MCISendString PlayCAN, BYVAL 0, 0, 0 x$ = WAITKEY$ MCISendString StopCAN, BYVAL 0, 0, 0 MCISendString "CLOSE type midiaudio", BYVAL 0, 0, 0 'Play SSB MCISendString "open type midiaudio", BYVAL 0, 0, 0 MCISendString PlayUSA, BYVAL 0, 0, 0 x$ = WAITKEY$ MCISendString StopUSA, BYVAL 0, 0, 0 MCISendString "CLOSE type midiaudio", BYVAL 0, 0, 0 ELSEIF NOT CANADA(Names(1)) AND CANADA(Names(2)) THEN 'Play SSB MCISendString "open type midiaudio", BYVAL 0, 0, 0 MCISendString PlayUSA, BYVAL 0, 0, 0 x$ = WAITKEY$ MCISendString StopUSA, BYVAL 0, 0, 0 MCISendString "CLOSE type midiaudio", BYVAL 0, 0, 0 'Play O-Canada MCISendString "open type midiaudio", BYVAL 0, 0, 0 MCISendString PlayCAN, BYVAL 0, 0, 0 x$ = WAITKEY$ MCISendString StopCAN, BYVAL 0, 0, 0 MCISendString "CLOSE type midiaudio", BYVAL 0, 0, 0 ELSE 'Play SSB MCISendString "open type midiaudio", BYVAL 0, 0, 0 MCISendString PlayUSA, BYVAL 0, 0, 0 x$ = WAITKEY$ MCISendString StopUSA, BYVAL 0, 0, 0 MCISendString "CLOSE type midiaudio", BYVAL 0, 0, 0 END IF 'Restore screen area CALL PutScreen(Scr1$, ConsRows-2, 24+colO, ConsRows-2, 59+colO) IF Gfx THEN CALL EliminateHole(30) CALL UnfreezeAndRefresh END IF END IF END IF AnthemPlayed = TRUE IF SoundOn AND DelFac > 0 THEN SLEEP 1000: L = PlayWav("4540.wav") 'Play Ball! END IF END IF IF InvalidPit AND RegDsply AND DelFac > 0 THEN ANx = 0 CALL AddToAnnouncer (id, "Now pitching for '" + RTRIM$(Names(id)) + ":") CALL Msg ("29", "0", "0", "13", ip, id, man2, team2) CALL PostAnnouncer (FALSE) SLEEP DelFac * 1800 END IF 'Display note if a def. player is out of position IF RegDsply AND DelFac > 0 THEN CALL DefCheck (OutOfPositionMsg) LL = 50 NextHitter: IF DelFac = 0 THEN SoundOn = FALSE 'New location: 3/27/00 'Check for sudden victory for home team IF inn >= RegInns AND itruns(2) > itruns(1) AND it = 2 THEN GOTO GameOver IF iout > 2 THEN IF ir1 THEN innLOB = innLOB + 1 IF ir2 THEN innLOB = innLOB + 1 IF ir3 THEN innLOB = innLOB + 1 GameLOB(it) = GameLOB(it) + innLOB IF RegDsply AND DelFac > 0 THEN IF Gfx THEN CALL GraphHole(5, 7+rowO, 30+colO, 19+rowO, 52+colO) CALL GetScreen(Scr3$, 7+rowO, 30+colO, 19+rowO, 52+colO) '7 30 19 53 CALL DrawFrm(7+rowO, 30+colO, 19+rowO, 52+colO, defattr, "Inning Summary", nulls$, 0, 0, 0) CALL Innsum (9+rowO, 34+colO) SLEEP 2500 CALL PutScreen(Scr3$, 7+rowO, 30+colO, 19+rowO, 52+colO) '7 30 19 53 IF Gfx THEN CALL EliminateHole(5) CALL UnfreezeAndRefresh END IF END IF GOTO SwitchSides END IF 'Bump up current hitter pointer INCR ibp(it) IF ibp(it) = 10 THEN ibp(it) = 1 IF it = 1 THEN k = 3 ELSE k = ConsCols - 16 IF RegDsply AND DelFac > 0 THEN 'change color attr in batting order tr = ConsRows - 12 leng = 15 CALL ChangeAttribute (ibp(it) + tr, k, leng, scdattr) 'grey on black 'Restore last guy to regular color attribute IF ibp(it) = 1 THEN CALL ChangeAttribute (ConsRows-3, k, leng, revattr) 'black on grey ELSE CALL ChangeAttribute (ibp(it) + tr - 1, k, leng, revattr) END IF END IF ib = ibp(it) IF SaveState = FALSE THEN Tight = FALSE ExtraTalk = FALSE IGone = FALSE Errorx = FALSE DPsw = FALSE OutFErr = FALSE OneBaseError = FALSE ThrowError = FALSE RunsBeforePlay = itruns(it) LL = 60 AnnounceHitter: GOSUB PrintStats IF RegDsply = FALSE THEN GOTO ResetPlaySwitches 'Announce hitter, pause for keyboard input 'Throw in some box score history BLN$ = LASTNAME$(DataName(ib, it)) IF NOT ExtraTalk THEN ANx = 0 ref = DataRef(ib, it) 'hitter's reference number for box 'Do not change "ref" after this point! IF DelFac > 0 OR amgr(1) = 0 OR amgr(2) = 0 THEN IF ResetHitter THEN 'Back from SB or POut CALL AddToAnnouncer(it, BLN$ + " steps back in...") GOTO DisplayScoreBrd ELSE CALL Msg ("01", "0", "0", "00", ib, it, man2, team2) END IF IF ExtraTalk THEN GOTO DisplayScoreBrd IF mab(ref, it) > 0 THEN IF mhits(ref, it) = 0 AND mab(ref, it) > 2 THEN CALL AddToAnnouncer(it, BLN$ + "'s hitless in" + STR$(mab(ref, it)) + " tries.") ELSE xS$ = BLN$ + "'s" + STR$(mhits(ref, it)) + " for" + STR$(mab(ref, it)) IF mrbi(ref, it) = 1 THEN xS$ = xS$ + " with an RBI." ELSEIF mrbi(ref, it) > 1 THEN xS$ = xS$ + " with" + STR$(mrbi(ref, it)) + " RBI's!" ELSE xS$ = xS$ + "." END IF AddToAnnouncer it, xS$ END IF IF mhr(ref, it) = 1 THEN IF RND < .5 THEN xS$ = "And a Home Run!" ELSE xS$ = "Including a Homer!" AddToAnnouncer it, xS$ ELSEIF mhr(ref, it) > 1 THEN xS$ = "And" + STR$(mhr(ref, it)) + " Home Runs!" AddToAnnouncer it, xS$ END IF ELSEIF CmdStat$ > "!" THEN 'a stat file exists IF SimBStreak(ref, it) > 3 THEN xS$ = STR$(SimBStreak(ref, it)) CALL AddToAnnouncer (it, "He's got a" + xS$ + "-game Hitting Streak.") END IF END IF END IF LL = 80 DisplayScoreBrd: CALL PostAnnouncer (FALSE) CALL ScoreBrd (DrawSBFrame, GenerateALLSB) 'Usually does not erase announcer IF DelFac THEN IF ExtraTalk THEN SLEEP 500 'a little extra time to read stuff END IF ANx = 0 GOSUB BatterOnScreen IF Gfx THEN CALL UnfreezeAndRefresh END IF LL = 90 ResetPlaySwitches: 'RegDsply either way ref = DataRef(ib, it) 'hitter's reference number 'don't change after this point! OldColorScheme = ColorScheme WhoAtPos = 0 OrgWhoAtPos = 0 ref2 = 0 ExtraTalk = FALSE RunAnnounced = FALSE Boxx = FALSE Help = FALSE ScoreCard = FALSE ResetHitter = FALSE IWalk = FALSE BullD = FALSE BullO = FALSE Subx = FALSE SwPos = FALSE PH = FALSE PRun = FALSE IF SaveState = FALSE THEN POut = FALSE PAround = FALSE Bunt = FALSE Steal = FALSE HitAndRun = FALSE END IF SavPOut = POut SavPAround = PAround SavBunt = Bunt SavSteal = Steal SavHitAndRun = HitAndRun LL = 100 ScanInput: ViewHome = FALSE ViewVisi = FALSE 'Check if "O" has been pressed (for Options) IF amgr(1) AND amgr(2) THEN 'Don't know which display we're on a$ = INKEY$ IF LEN(a$) = 0 THEN IF DelFac THEN SLEEP DelFac * 1000 GOTO AutoManage END IF IF LEN(a$) = 4 THEN msx = MOUSEX msy = MOUSEY IF msy = ConsRows THEN a$ = CHR$(SCREEN(msy, msx)) CALL FlashField (msy, msx, 1, 2, 100, 0) ELSE a$ = nulls$ END IF ELSE a$ = UCASE$(a$) msx = 0 msy = 0 END IF 'We have a key pressed. 'Both teams are auto-managed. 'We do not know what the "delay" is. OldDelFac = DelFac IF a$ = "O" AND CmdNoOpt$ <> "Y" THEN CALL OptionSetup (row, Flds, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) CALL GetScreen(Scr1$, 7+rowO, 22+colO, Flds+8+rowO,54+colO) IF Gfx AND RegDsply THEN CALL GraphHole(30, 7+rowO, 22+colO, Flds+8+rowO, 54+colO) CALL DrawFrm(7+rowO, 22+colO, Flds+8+rowO, 54+colO, defattr, "Options", "ESC (or close) to Exit", 0, 0, 1) CALL OptionWindow (Flds, Flen(), Frow(), Fcol(), Fed$(), Flit$(), Flitrow(), Flitcol(), FContents$()) IF Gfx AND RegDsply THEN CALL EliminateHole(30) CALL PutScreen(Scr1$, 7+rowO, 22+colO, Flds+8+rowO,54+colO) IF Gfx AND RegDsply THEN CALL UnfreezeAndRefresh LOCATE 1, 1 CURSOR OFF 'hide the cursor somewhere ELSEIF a$ = "R" THEN IF WLx > 0 THEN IF Gfx AND RegDsply THEN CALL HideGfx QPush COLOR deffor, defbac CLS CALL ShowStandings (TRUE) QPop IF Gfx AND RegDsply THEN CALL ShowGfx END IF ELSEIF a$ = "B" THEN CALL Box IF Gfx AND RegDsply THEN CALL HideGfx QPush CALL ListFile(CmdWritePath$ + "~BOX.PRN") QPop IF Gfx AND RegDsply THEN CALL ShowGfx ELSEIF a$ = "C" THEN QPush GOSUB ShowScoreCard QPop IF Gfx AND RegDsply THEN CALL UnfreezeAndRefresh ELSEIF a$ = "Q" AND CmdNoOpt$ <> "Y" THEN GOSUB CheckForQuit ELSEIF a$ = "T" THEN 'Toggle IF DelFac = 0 THEN IF RegDsply = TRUE AND (CmdPauseAftGame$ = "Y" OR CmdPauseAftDate$ = "Y") THEN 'Can't switch to Standings Mode if PauseAfterGame=Y CALL PopMsg(18+rowO, 12+colO, "Can't switch to Standings Mode if either 'PauseAfter' = Y", errattr, 0, kc) ELSE RegDsply = NOT RegDsply IF RegDsply = FALSE THEN 'Switch to Standings IF BitmapNRF THEN Gfx = TRUE IF Gfx THEN CALL HideGfx COLOR deffor, defbac CLS CALL ShowStandings (FALSE) CALL Prompt(0) ELSE 'Switch to Field 'Prepare background photo (assigned in .DAT) IF Gfx THEN IF MenuOpt$ = "S" OR MenuOpt$ = "E" OR MenuOpt$ = "T" THEN COLOR fldfor, fldbac CLS ' QPRINTs 12+rowO, 28+colO, "Generating Background...", defattr IF BackgroundPic$ > "!" THEN GOSUB GetPhotoSpecs GOSUB DefineBitmap END IF END IF 'Redraw entire screen GOSUB RebuildFieldScreen END IF END IF END IF END IF 'We changed from zero-delay to delay in "O" IF (DelFac > 0 AND OldDelFac = 0) OR _ (RegDsply = FALSE AND CmdPauseAftGame$ = "Y") OR _ (RegDsply = FALSE AND CmdPauseAftDate$ = "Y") THEN RegDsply = TRUE GOSUB RebuildFieldScreen END IF 'Allow change of field color scheme IF ColorScheme <> OldColorScheme THEN OldColorScheme = ColorScheme CALL SetColors(ColorScheme) IF RegDsply THEN GOSUB RebuildFieldScreen END IF 'Allow change of background photo IF RegDsply = TRUE AND CmdChangePhoto$ = "Y" THEN GOSUB ChangePhotoManually ' IF amgr(1) AND amgr(2) THEN ' CALL Prompt(0) 'experiment 2007 ' IF DelFac THEN SLEEP DelFac * 800 ' GOTO AutoManage ' ELSE ' CALL Prompt(0) ' END IF IF DelFac THEN SLEEP DelFac * 800 GOTO AutoManage END IF ' IF NOT amgr(1) OR NOT amgr(2) THEN 'experiment 2007 ' CALL ChangeAttribute(ConsRows, 2, 3, prmattr) ' END IF CALL ChangeAttribute(ConsRows, 2, 3, prmattr) 'Function to clear keyboard and mouse buffer here CALL ClearInpBuffer VisiPtr = 1 HomePtr = 1 VisiPopped = FALSE HomePopped = FALSE HomeReady = (NOT amgr(1) AND amgr(2)) VisiReady = (NOT amgr(2) AND amgr(1)) StatLine = FALSE DO UNTIL (VisiReady AND HomeReady) IF Gfx THEN CALL UnfreezeAndRefresh END IF IF HomePopped = FALSE AND VisiPopped = FALSE AND StatLine = FALSE THEN SLEEP 70 CALL FlashField (ConsRows, 2, 3, 4, 100, 0) END IF IF StatLine = TRUE THEN StatLine = FALSE ELSE a$ = WAITKEY$ END IF IF LEN(a$) = 4 THEN msx = MOUSEX msy = MOUSEY IF msy = ConsRows THEN a$ = CHR$(SCREEN(msy, msx)) CALL FlashField (msy, msx, 1, 2, 100, 0) ELSE a$ = nulls$ 'Batting order box borders 'Left b1r1 = ConsRows - 12 b1c1 = 2 b1r2 = b1r1 + 10 b1c2 = 18 'Right b2r1 = ConsRows - 12 b2c1 = ConsCols - 17 b2r2 = b2r1 + 10 b2c2 = ConsCols - 1 'Is click inside a lineup box? 'Figure out which player IF Inbox(b1r1, b1c1, b1r2, b1c2, msy, msx, 0) THEN StatLine = TRUE p = msy - b1r1 tm = 1 CALL FlashField (msy, 3, 15, 2, 100, 0) ELSEIF Inbox(b2r1, b2c1, b2r2, b2c2, msy, msx, 0) THEN StatLine = TRUE p = msy - b1r1 tm = 2 CALL FlashField (msy, b2c1+1, 15, 2, 100, 0) END IF IF StatLine THEN sr1 = 8 + rowO sc1 = 9 + colO sr2 = 14 + rowO sc2 = 72 + colO IF CmdStat$ > "!" THEN sr2 = sr2 + 7 'Save screen area CALL GetScreen(Scr4$, sr1, sc1, sr2+1, sc2+2) IF Gfx THEN CALL GraphHole(30, sr1, sc1, sr2+1, sc2+2) 'Build and display stat line CALL DrawFrm(sr1, sc1, sr2, sc2, defattr, DataName(p,tm), "", 1, 0, 0) QPRINTs sr1+2, sc1+26, ".DAT File", defattr x$ = " Avg G AB Hit 2B 3B HR RBI BB SO S SB CS" QPRINTs sr1+3, sc1+2, x$, defattr IF DataAB(p, tm) = 0 THEN BAF! = 0 ELSE BAF! = DataHits(p, tm) / DataAB(p, tm) END IF a$ = SPACE$(58) MID$(a$, 1, 4) = FFORMAT$(BAF!, ".###") MID$(a$, 6, 4) = LFORMAT$(DataGames(p, tm), "####") MID$(a$, 11, 5) = LFORMAT$(DataAB(p, tm), "#####") MID$(a$, 17, 4) = LFORMAT$(DataHits(p, tm), "####") MID$(a$, 22, 4) = LFORMAT$(Data2B(p, tm), "####") MID$(a$, 27, 3) = LFORMAT$(Data3B(p, tm), "###") MID$(a$, 31, 3) = LFORMAT$(DataHR(p, tm), "###") MID$(a$, 35, 4) = LFORMAT$(DataRBI(p, tm), "####") MID$(a$, 40, 4) = LFORMAT$(DataBB(p, tm), "####") MID$(a$, 45, 4) = LFORMAT$(DataSO(p, tm), "####") MID$(a$, 50, 1) = LFORMAT$(DataSpeed(p, tm), "#") MID$(a$, 52, 3) = LFORMAT$(DataSB(p, tm), "###") MID$(a$, 56, 3) = LFORMAT$(DataCS(p, tm), "###") QPRINTs sr1+4, sc1+2, a$, dimattr 'Sim Data IF CmdStat$ > "!" THEN rf = DataRef(p, tm) Find$ = League(tm) + PADRIGHT$(Names(tm), 12) + PADRIGHT$(NameRef(rf, tm), 16) TotalRecs = BSum(0).BGameCtr FA = 0 CALL BinarySearchB (BSum(), 1, 29, 1, TotalRecs, Find$, FA, mini) IF FA THEN QPRINTs sr1+6, sc1+26, "Sim Stats", defattr x$ = " Avg G AB Hit 2B 3B HR RBI BB SO SB CS" QPRINTs sr1+7, sc1+2, x$, defattr SiAB = BSum(FA).BABs + mab(rf, tm) SiH = BSum(FA).BHits + mhits(rf, tm) IF SiAB > 0 THEN BASF! = SiH / SiAB IF BASF! > .999 THEN BASF! = .999 ELSE BASF! = 0 END IF a$ = SPACE$(58) MID$(a$, 1, 4) = FFORMAT$(BASF!, ".###") MID$(a$, 6, 4) = LFORMAT$(BSum(FA).BGames + 1, "####") MID$(a$, 11, 5) = LFORMAT$(SiAB, "#####") MID$(a$, 17, 4) = LFORMAT$(SiH, "####") MID$(a$, 22, 4) = LFORMAT$(BSum(FA).B2Bs + m2b(rf, tm), "####") MID$(a$, 27, 3) = LFORMAT$(BSum(FA).B3Bs + m3b(rf, tm), "###") MID$(a$, 31, 3) = LFORMAT$(BSum(FA).BHRs + mhr(rf, tm), "###") MID$(a$, 35, 4) = LFORMAT$(BSum(FA).BRBIs + mrbi(rf, tm), "####") MID$(a$, 40, 4) = LFORMAT$(BSum(FA).BBBs + mbb(rf, tm), "####") MID$(a$, 45, 4) = LFORMAT$(BSum(FA).BKs + mso(rf, tm), "####") MID$(a$, 52, 3) = LFORMAT$(BSum(FA).BSBs + msb(rf, tm), "###") MID$(a$, 56, 3) = LFORMAT$(BSum(FA).BCSs + mcs(rf, tm), "###") QPRINTs sr1+8, sc1+2, a$, dimattr 'Expanded individual batting statistics TB = BSum(FA).BHits + BSum(FA).B2Bs + 2 * BSum(FA).B3Bs + 3 * BSum(FA).BHRs IF BSum(FA).BABs > 0 THEN OnBase! = (BSum(FA).BBBs + BSum(FA).BHB + BSum(FA).BHits) / _ (BSum(FA).BBBs + BSum(FA).BHB + BSum(FA).BABs) ELSE OnBase! = 0.0 END IF IF BSum(FA).BABs > 0 THEN Slug! = TB / BSum(FA).BABs ELSE Slug! = 0.0 END IF IF BSum(FA).BABs > 0 THEN HRPct! = BSum(FA).BHRs / BSum(FA).BABs * 100 ELSE HRPct! = 0.0 END IF Prod! = OnBase! + Slug! IF (BSum(FA).BCSs + BSum(FA).BABs - BSum(FA).BHits) > 0 THEN TotAvg! = (TB + BSum(FA).BSBs + BSum(FA).BBBs + BSum(FA).BHB) / _ (BSum(FA).BCSs + BSum(FA).BABs - BSum(FA).BHits) ELSE TotAvg! = 0.0 END IF rc27! = RunsCreated27!((BSum(FA).BABs), (BSum(FA).BHits), (BSum(FA).B2Bs),_ (BSum(FA).B3Bs), (BSum(FA).BHRs), (BSum(FA).BBBs), (BSum(FA).BHB), _ (BSum(FA).BSacB), (BSum(FA).BSacF), (BSum(FA).BSBs), _ (BSum(FA).BCSs), (BSum(FA).BGDP)) x$ = " TB SH SF HB GIDP OB SLG HR% OPS TAvg RC/27" QPRINTs sr1+10, sc1+2, x$, defattr a$ = SPACE$(60) MID$(a$, 1, 5) = LFORMAT$(TB, "#####") MID$(a$, 7, 4) = LFORMAT$(BSum(FA).BSacB, "####") MID$(a$, 12, 4) = LFORMAT$(BSum(FA).BSacF, "####") MID$(a$, 17, 4) = LFORMAT$(BSum(FA).BHB, "####") MID$(a$, 22, 4) = LFORMAT$(BSum(FA).BGDP, "####") MID$(a$, 27, 5) = FFORMAT$(OnBase!, "#.###") MID$(a$, 33, 5) = FFORMAT$(Slug!, "#.###") MID$(a$, 39, 4) = FFORMAT$(HRPct!, "#0.#") MID$(a$, 44, 5) = FFORMAT$(Prod!, "#.###") MID$(a$, 50, 5) = FFORMAT$(TotAvg!, "#.###") MID$(a$, 56, 5) = FFORMAT$(rc27!, "##.##") QPRINTs sr1+11, sc1+2, a$, dimattr END IF END IF a$ = WAITKEY$ 'Clean up mess CALL PutScreen(Scr4$, sr1, sc1, sr2+1, sc2+2) IF Gfx THEN CALL EliminateHole(30) ITERATE DO END IF 'Click was inside batting order box END IF 'Click was not on last row