From 37dab8d0b7eaf5dcd281ceffc4bf6ed04c9aa628 Mon Sep 17 00:00:00 2001 From: Marcio T Date: Sun, 5 Dec 2021 13:31:11 -0700 Subject: [PATCH] Added introduction page. --- mac-cpp-source/Iomega Tester.cpp | 23 +------ mac-cpp-source/Iomega Tester.rsrc.bin | Bin 3968 -> 14720 bytes mac-cpp-source/tip/tip.cpp | 91 ++++++++++++++++++++++++++ mac-cpp-source/tip/tip.h | 15 +++++ mac-cpp-source/tip/tip_main.cpp | 67 +++++++++++++------ mac-cpp-source/tip/tip_text.cpp | 15 +++++ 6 files changed, 170 insertions(+), 41 deletions(-) diff --git a/mac-cpp-source/Iomega Tester.cpp b/mac-cpp-source/Iomega Tester.cpp index 7d96107..608196a 100644 --- a/mac-cpp-source/Iomega Tester.cpp +++ b/mac-cpp-source/Iomega Tester.cpp @@ -12,32 +12,13 @@ void main() { SIOUXSettings.leftpixel = 8; SIOUXSettings.toppixel = 44; - printf( - "\n\n" - "Trouble in Paradise\n" - "===================\n\n" - "A Macintosh port of \"Trouble in Paradise\" for Windows, made possible by a\n" - "generous code donation by Steve Gibson from Gibson Research Corporation.\n\n" - "This freeware utility determines whether an Iomega Zip or Jaz drive is prone\n" - "to developing the dreaded \"Click of Death\" (COD) syndrome. Steve Gibson's\n" - "research into the maintenance, repair and data recovery of Iomega's removable\n" - "media mass storage products led to this capability.\n\n" - ); - printf( "------------------------------------------------------------------------------\n" ); printf( "This Mac port (c) 2021 Marcio Teixeira http://github.com/marciot/mac-tip\n" ); printf( "Based on code (c) 2006 Gibson Research Corp http://grc.com/tip/clickdeath.htm\n" ); printf( "------------------------------------------------------------------------------\n" ); + printf("\nStarting tip ...\n"); SIOUXSetTitle("\pTrouble in Paradise for Macintosh (" __DATE__ ")"); - // Confirm that the user wants to run TIP - - char cmd[80]; - printf("\n\nThis program is in BETA TESTING and may cause data loss!\n\nProceed [Y/N]? "); - gets( cmd ); - if(tolower(cmd[0]) == 'y') { - run_tip(); - printf("\n\nYou may need to REBOOT your Mac before cartridges are recognized by Mac OS."); - } + run_tip(); } \ No newline at end of file diff --git a/mac-cpp-source/Iomega Tester.rsrc.bin b/mac-cpp-source/Iomega Tester.rsrc.bin index 609bbe1f49d83d6a52bc409853300f051ee17fbf..b58c4c195830e05ac3f6ceea79bebf1d4ae4d21a 100644 GIT binary patch literal 14720 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 diff --git a/mac-cpp-source/tip/tip.cpp b/mac-cpp-source/tip/tip.cpp index f0dfea7..1e9d229 100644 --- a/mac-cpp-source/tip/tip.cpp +++ b/mac-cpp-source/tip/tip.cpp @@ -8,6 +8,18 @@ #include "tip.h" +#define TITLE_TOP 11 +#define BODY_TOP 54 +#define BODY_LEFT 156 +#define BODY_RIGHT 445 +#define BODY_BOTTOM 280 + +#define BODY_WIDTH (BODY_RIGHT - BODY_LEFT) +#define BODY_HEIGHT (BODY_BOTTOM - BODY_TOP) + +#define LOGO_1_LEFT 157 +#define LOGO_1_TOP 57 + /******************************************************************************* * WinMain * @@ -30,6 +42,22 @@ void WinMain(uint8_t *DrivesSkipped) { StartApplicationTimer(); } +/******************************************************************************* + * PAINT 3D HEADLINE + *******************************************************************************/ +void Paint3DHeadline(const char *pszText, int Xleft, int Ytop) { + TextSize(24); + TextFace(bold); + TextFont(helvetica); + SetColor(WHITE_COLOR); + TextOut(Xleft, Ytop, pszText); + SetColor(BLACK_COLOR); + TextOut(Xleft+1, Ytop+1, pszText); + TextFont(applFont); + TextFace(0); + TextSize(10); +} + /******************************************************************************* * WndProc * @@ -42,17 +70,80 @@ void WndProc(long iMessage, uint16_t wParam) { if (iMessage == WM_PAINT) { // Draw the Lower Horz Button Divider + GetDC(hMainWnd); SetColor(GRAY_COLOR); MoveTo(15, 289); LineTo(446, 289); SetColor(WHITE_COLOR); LineTo(446, 290); LineTo(14, 290); + ReleaseDC(hMainWnd); + + // Draw the Gibson 'G' Logo + if(CurrentPage == INTRO_PAGE) { + GetDC(hIntroWnd); + SetColor(GRAY_COLOR); + MoveTo(LOGO_1_LEFT+1, LOGO_1_TOP+29); + LineTo(LOGO_1_LEFT+14, LOGO_1_TOP+29); + LineTo(LOGO_1_LEFT+14, LOGO_1_TOP+0); + SetColor(WHITE_COLOR); + LineTo(LOGO_1_LEFT+12, LOGO_1_TOP+0); + LineTo(LOGO_1_LEFT+0, LOGO_1_TOP+12); + LineTo(LOGO_1_LEFT+0, LOGO_1_TOP+30); + + SetColor(GRAY_COLOR); + MoveTo(LOGO_1_LEFT+18, LOGO_1_TOP+14); + LineTo(LOGO_1_LEFT+46, LOGO_1_TOP+14); + LineTo(LOGO_1_LEFT+46, LOGO_1_TOP+12); + LineTo(LOGO_1_LEFT+34, LOGO_1_TOP+0); + SetColor(WHITE_COLOR); + LineTo(LOGO_1_LEFT+17, LOGO_1_TOP+0); + LineTo(LOGO_1_LEFT+17, LOGO_1_TOP+15); + + SetColor(GRAY_COLOR); + MoveTo(LOGO_1_LEFT+33, LOGO_1_TOP+46); + LineTo(LOGO_1_LEFT+46, LOGO_1_TOP+46); + LineTo(LOGO_1_LEFT+46, LOGO_1_TOP+29); + LineTo(LOGO_1_LEFT+34, LOGO_1_TOP+17); + SetColor(WHITE_COLOR); + LineTo(LOGO_1_LEFT+32, LOGO_1_TOP+17); + LineTo(LOGO_1_LEFT+32, LOGO_1_TOP+47); + + SetColor(GRAY_COLOR); + MoveTo(LOGO_1_LEFT+1, LOGO_1_TOP+35); + LineTo(LOGO_1_LEFT+12, LOGO_1_TOP+46); + LineTo(LOGO_1_LEFT+29, LOGO_1_TOP+46); + LineTo(LOGO_1_LEFT+29, LOGO_1_TOP+32); + SetColor(WHITE_COLOR); + LineTo(LOGO_1_LEFT+0, LOGO_1_TOP+32); + LineTo(LOGO_1_LEFT+0, LOGO_1_TOP+35); + + // show the current logo bitmap + SplashTheBitmap(); + + // paint the 3D program title + Paint3DHeadline(szIntroTitle, BODY_LEFT, TITLE_TOP); + + // now the rest of the stuff ... + SetColor(BLACK_COLOR); + #define WH_RECT(L,T,W,H) L, T, L + W, T + H + + Rect rect; + SetRect(&rect, WH_RECT(221, BODY_TOP, 230, 60)); + TETextBox(szIntroSubTitle, strlen(szIntroSubTitle), &rect, teFlushDefault); + + SetRect(&rect, WH_RECT(BODY_LEFT, BODY_TOP+64, BODY_WIDTH, 115)); + TETextBox(szIntroText, strlen(szIntroText), &rect, teFlushDefault); + + ReleaseDC(hIntroWnd); + } // Paint the Copyright Notice + GetDC(hMainWnd); SetColor(GRAY_COLOR); TextOut(15, 298, szCopyright_1); TextOut(15, 311, szCopyright_2); + ReleaseDC(hMainWnd); } // ------------------------------------------------------------------------- // WM_COMMAND : a button was pressed diff --git a/mac-cpp-source/tip/tip.h b/mac-cpp-source/tip/tip.h index c5ef944..95358f8 100644 --- a/mac-cpp-source/tip/tip.h +++ b/mac-cpp-source/tip/tip.h @@ -4,11 +4,18 @@ extern WindowPtr tipWindow; void run_tip(); +typedef enum TipPage { + INTRO_PAGE, + PERFORM_TEST_PAGE, + EXPLAIN_RESULTS, +} TipPage; + #define MINIMUM_JAZ_SPARES 500 #define MAXIMUM_JAZ_SPARES 2557 #define MINIMUM_ZIP_SPARES 50 #define MAXIMUM_ZIP_SPARES 126 +extern TipPage CurrentPage; extern long CurrentDevice; extern long DriveCount; extern long JazDrive; // true if the current drive @@ -16,6 +23,7 @@ extern long CartridgeStatus; extern long LastLBAOnCartridge; extern uint32_t StartingInstant; extern long NumberOfLBAs; +extern long AdapterMaxSectors; extern long Side_0_SparesCount; // JAZ has only one count extern long Side_1_SparesCount; // ZIP has counts for both sides extern long Initial_Side_0_Spares; @@ -102,6 +110,8 @@ void StopApplicationTimer(); void PostQuitMessage(); unsigned long GetSystemTime(); bool PrepareDC(int which); +void SplashTheBitmap(); +void Paint3DHeadline(); #define GetDC(h) {GrafPtr oldPort; \ GetPort(&oldPort); \ @@ -144,6 +154,9 @@ enum { /******************************************************************************* * STRINGS *******************************************************************************/ +extern const char *szIntroTitle; +extern const char *szIntroSubTitle; +extern const char *szIntroText; extern const char *szWindowTitle; extern const char *szCopyright_1; @@ -234,6 +247,7 @@ enum { hExitButton = IDB_QUIT, hSoundCheckbox, // Extras added by MLT + hIntroWnd = 5, hExplainWnd = IDB_EXPL }; @@ -275,6 +289,7 @@ void AllowProgramExit(); void ErrorSound(); void ProcessPendingMessages(); void WinMain(uint8_t *DrivesSkipped); +void Paint3DHeadline(const char *pszText, int Xleft, int Ytop); void WndProc(long iMessage, uint16_t wParam); void TestMonitorWndProc(); void ApplicationTimerProc(); diff --git a/mac-cpp-source/tip/tip_main.cpp b/mac-cpp-source/tip/tip_main.cpp index fd58e17..15dd312 100644 --- a/mac-cpp-source/tip/tip_main.cpp +++ b/mac-cpp-source/tip/tip_main.cpp @@ -17,17 +17,13 @@ #include "tip.h" #include "command_line.h" -enum TipPage { - kTestingPage, - kExplainPage, -} page; - static int gDone; static bool allowColor; static bool inited = false; static bool timerEnabled = false; static WindowPtr tipWindow; static MenuHandle tipMenu; +static PicHandle tipIntroPic; static TBHandle richText; static const char *textFileName; @@ -58,15 +54,13 @@ void run_tip() { NewTipWindow(); EnableWindow(hTestButton, false); - SetRichEditText(szInstructions); gDone = false; do { EventRecord event; if (WaitNextEvent(everyEvent, &event, GetCaretTime(), cursorRgn)) { DoEvent(event, &cursorRgn); - if(!inited && page == kTestingPage) { - printf("Starting tip\n"); + if(!inited && CurrentPage == PERFORM_TEST_PAGE) { // Start TIP as soon as the user dismisses the intro screen inited = true; uint8_t drivesSkipped; @@ -136,7 +130,7 @@ void NewTipWindow() { SetControlValue(FindCntlHandle(IDB_BEEP),1); // Check the sound control - page = kExplainPage; + CurrentPage = EXPLAIN_RESULTS; GetDC(hExplainWnd); // Create the text edit widget @@ -145,7 +139,10 @@ void NewTipWindow() { ReleaseDC(hExplainWnd); - SetPage(kTestingPage); + // Load the About box picture + tipIntroPic = GetPicture(128); + + SetPage(INTRO_PAGE); } void AddTipMenus() { @@ -189,11 +186,14 @@ ControlHandle FindCntlHandle(int id) { bool PrepareDC(int which) { SetPort(tipWindow); switch(which) { + case hIntroWnd: + if(CurrentPage != INTRO_PAGE) return false; + break; case hExplainWnd: - if(page != kExplainPage) return false; + if(CurrentPage != EXPLAIN_RESULTS) return false; break; case hTestMonitor: - if(page != kTestingPage) return false; + if(CurrentPage != PERFORM_TEST_PAGE) return false; SetOrigin(-20, -10); break; case hMainWnd: @@ -320,10 +320,13 @@ void DoMouseDown(EventRecord &event) { int id = GetControlReference(thisControl); switch(id) { case IDB_OKAY: - SetPage(kTestingPage); + SetPage(PERFORM_TEST_PAGE); break; case IDB_EXPL: - SetPage(kExplainPage); + SetPage(EXPLAIN_RESULTS); + break; + case IDB_NEXT: + SetRichEditText(szInstructions); break; case IDB_READ: OpenExplanationInSimpleText(); @@ -404,10 +407,21 @@ void StrToPascal(Str255 pStr, const char *str) { } void SetPage(TipPage newPage) { - if(page == newPage) return; - page = newPage; - switch(page) { - case kTestingPage: + if(CurrentPage == newPage) return; + CurrentPage = newPage; + switch(CurrentPage) { + case INTRO_PAGE: + ShowWindow(IDB_TEST, SW_HIDE); + ShowWindow(IDB_BACK, SW_HIDE); + ShowWindow(IDB_EXPL, SW_HIDE); + ShowWindow(IDB_BEEP, SW_HIDE); + ShowWindow(IDB_OKAY, SW_HIDE); + ShowWindow(IDB_READ, SW_HIDE); + ShowWindow((*richText)->scroll, SW_HIDE); + ShowWindow(IDB_QUIT, SW_SHOW); + ShowWindow(IDB_NEXT, SW_SHOW); + break; + case PERFORM_TEST_PAGE: ShowWindow((*richText)->scroll, SW_HIDE); ShowWindow(IDB_BACK, SW_HIDE); ShowWindow(IDB_NEXT, SW_HIDE); @@ -418,7 +432,7 @@ void SetPage(TipPage newPage) { ShowWindow(IDB_QUIT, SW_SHOW); ShowWindow(IDB_BEEP, SW_SHOW); break; - case kExplainPage: + case EXPLAIN_RESULTS: ShowWindow(IDB_TEST, SW_HIDE); ShowWindow(IDB_BACK, SW_HIDE); ShowWindow(IDB_NEXT, SW_HIDE); @@ -529,7 +543,7 @@ void SetRichEditText(const char *name) { TBReadSimpleText(richText, &docSpec); if (name != szRunning && name != szNotRunning) { - SetPage(kExplainPage); + SetPage(EXPLAIN_RESULTS); } else { InvalidateRect(hDefault); } @@ -805,3 +819,16 @@ void ProcessPendingMessages() { } SystemTask(); } + +/******************************************************************************* + * SPLASH THE BITMAP + *******************************************************************************/ +void SplashTheBitmap() { + GetDC(hIntroWnd); + if(tipIntroPic) { + Rect rect; + SetRect(&rect, 16, 18, 16+120, 18/*+258*/ +220); + DrawPicture(tipIntroPic, &rect); + } + ReleaseDC(hIntroWnd); +} \ No newline at end of file diff --git a/mac-cpp-source/tip/tip_text.cpp b/mac-cpp-source/tip/tip_text.cpp index ef6408b..4d8a4e5 100644 --- a/mac-cpp-source/tip/tip_text.cpp +++ b/mac-cpp-source/tip/tip_text.cpp @@ -128,6 +128,21 @@ ErrorTypeList errorTypeList[] = { 0, 0 }; +/********** Main Window Controls Text ************/ + +const char *szIntroTitle = "Trouble in Paradise"; +const char *szIntroSubTitle = "FREEWARE by Steve Gibson\r" \ + "Gibson Research Corporation\r" \ + "http://grc.com ( v 2.1b )\r" \ + "http://github.com/marciot/mac-tip"; +const char *szIntroText = + "A Macintosh port of \"TIP\" for Windows by Marcio Teixeira, made possible by a " + "generous code donation by Steve Gibson.\r\r" + "This freeware utility determines whether an Iomega Zip or Jaz drive is prone " + "to developing the dreaded \"Click of Death\" syndrome. Gibson's " + "research into the maintenance, repair and data recovery of Iomega's removable " + "media mass storage products led to this capability."; + /****************** Control Text *****************/ const char *szBack = "< Back";