From f96acfe0205cffdd3944f4878dc1f4cc3b3e3f62 Mon Sep 17 00:00:00 2001 From: Scott Duensing Date: Thu, 6 Aug 2020 17:24:52 -0500 Subject: [PATCH] No more need to manually install Tools on the IIgs! --- joeylib/build.sh | 2 +- joeylib/src/jIIgs.c | 49 ++++++++++++++++++++++++++---------- scripts/build-IIgs.helper.sh | 2 +- scripts/installer.sh | 8 +++++- 4 files changed, 45 insertions(+), 16 deletions(-) diff --git a/joeylib/build.sh b/joeylib/build.sh index fd8ba59..37aa55e 100755 --- a/joeylib/build.sh +++ b/joeylib/build.sh @@ -106,8 +106,8 @@ function doIIgsBuild() { "${CADIUS}" createvolume "${IMPORT}" ${VOL} 32MB > /dev/null "${CADIUS}" createfolder "${IMPORT}" ${VOL}/data > /dev/null - "${CADIUS}" addfile "${IMPORT}" ${VOL} "${JOEY}/dist/IIgs/Tool222#ba0000" > /dev/null "${CADIUS}" addfile "${IMPORT}" ${VOL} "${OUT}/Test#b3db03" > /dev/null + "${CADIUS}" addfile "${IMPORT}" ${VOL}/data "${JOEY}/dist/IIgs/Tool222#ba0000" > /dev/null "${CADIUS}" addfile "${IMPORT}" ${VOL}/data "${OUT}/kanga.img#060000" > /dev/null "${CADIUS}" addfile "${IMPORT}" ${VOL}/data "${OUT}/font.img#060000" > /dev/null "${CADIUS}" addfile "${IMPORT}" ${VOL}/data "${OUT}/font.stn#060000" > /dev/null diff --git a/joeylib/src/jIIgs.c b/joeylib/src/jIIgs.c index c840d8c..e392eb4 100644 --- a/joeylib/src/jIIgs.c +++ b/joeylib/src/jIIgs.c @@ -22,6 +22,7 @@ #include +#include #include #include #include @@ -49,6 +50,9 @@ typedef struct { } _jlPascalStringT; +#define _jlSetPascalString(p,s) strcpy(p.text, s); p.length=strlen(s) + + extern void asmBorder(jint16 c); extern void asmGrOff(void); extern void asmGrOn(void); @@ -58,13 +62,14 @@ extern void asmStart(jint16 myID, jint16 hertzBy10); extern void asmStop(void); -extern pascal void NTPStartUp(Word) inline(0x02DE, dispatcher); -extern pascal void NTPShutDown(void) inline(0x03DE, dispatcher); +extern pascal void NTPBootInit(void) inline(0x01DE, dispatcher); +extern pascal void NTPStartUp(Word) inline(0x02DE, dispatcher); +extern pascal void NTPShutDown(void) inline(0x03DE, dispatcher); extern pascal void NTPLoadOneMusic(Pointer) inline(0x09DE, dispatcher); -extern pascal void NTPPlayMusic(Word) inline(0x0ADE, dispatcher); +extern pascal void NTPPlayMusic(Word) inline(0x0ADE, dispatcher); extern pascal Word NTPGetPlayingMusic(void) inline(0x10DE, dispatcher); -extern pascal void NTPPauseMusic(void) inline(0x13DE, dispatcher); -extern pascal void NTPContinueMusic(void) inline(0x14DE, dispatcher); +extern pascal void NTPPauseMusic(void) inline(0x13DE, dispatcher); +extern pascal void NTPContinueMusic(void) inline(0x14DE, dispatcher); char _jlKeyCheck(char key); @@ -278,8 +283,10 @@ void jlSoundMusicPause(void) { void jlSoundMusicPlay(char *name) { char *temp = jlUtilMakePathname(name, "ntp"); _jlPascalStringT file; - strcpy(file.text, temp); - file.length = strlen(temp); + + _jlSetPascalString(file, temp); + //strcpy(file.text, temp); + //file.length = strlen(temp); NTPStartUp(_jlMusicMemID); JOEY_CHECK_TOOL_ERROR("NTPStartup") NTPLoadOneMusic((Pointer)&file); @@ -325,9 +332,11 @@ void jlUtilShutdown(void) { asmStop(); // Shutdown tools + /* MSShutDown(); // MIDI Synth SoundShutDown(); // Sound Tool Set - //UnloadOneTool(0xDD); // NinjaTracker + */ + UnloadOneTool(0xDD); // NinjaTracker MTShutDown(); // Misc Tools DisposeAll(_jlMemID); MMShutDown(_jlMyID); // Memory Manager @@ -339,8 +348,11 @@ void jlUtilShutdown(void) { void jlUtilStartup(char *appTitle) { - handle ZeroPageHandle; - ptr ZeroPagePtr; + handle ZeroPageHandle; + ptr ZeroPagePtr; + InitialLoadOutputRec initialLoad; + char *temp; + _jlPascalStringT toolFile; (void)appTitle; // Unused on IIgs @@ -350,14 +362,25 @@ void jlUtilStartup(char *appTitle) { _jlMemID = _jlMyID | 0x0100; // Set aux ID to 1. _jlMusicMemID = _jlMyID | 0x0200; // Set music ID. MTStartUp(); // Misc Tools + /* - ZeroPageHandle = NewHandle((Long)DPTotal, (Word)_jlMyID, (Word)attrBank | attrPage | attrFixed | attrLocked, (Long)0); + ZeroPageHandle = NewHandle((Long)DPTotal, (Word)_jlMyMemID, (Word)attrBank | attrPage | attrFixed | attrLocked, (Long)0); ZeroPagePtr = *ZeroPageHandle; SoundStartUp((word)ZeroPagePtr + DPForSound); // Sound Tool Set MSStartUp(); // MIDI Synth */ - LoadOneTool(0xDE, 0); // NinjaTrackerPlus - JOEY_CHECK_TOOL_ERROR("LoadOneTool") + + // Try to load NinjaTrackerPlus from SYSTEM:TOOLS + LoadOneTool(0xDE, 0); + if (_toolErr) { + // Not there. Try to manually load it from our disk. + temp = jlUtilMakePathname("Tool222", NULL); + _jlSetPascalString(toolFile, temp); + initialLoad = InitialLoad(_jlMyID, (Pointer)&toolFile, 0); + JOEY_CHECK_TOOL_ERROR("Tool222") + SetTSPtr(0, 222, initialLoad.startAddr); + NTPBootInit(); + } // Reserve shadow area for SHR _jlSHRShadowHandle = NewHandle((LongWord)0x8000, (Word)_jlMemID, (Word)(attrLocked + attrFixed + attrBank + attrAddr), (Pointer)0x012000); diff --git a/scripts/build-IIgs.helper.sh b/scripts/build-IIgs.helper.sh index d54a880..3cbaae1 100644 --- a/scripts/build-IIgs.helper.sh +++ b/scripts/build-IIgs.helper.sh @@ -62,7 +62,7 @@ function buildIIgs() { ${CADIUS} createvolume ${IMPORT} ${VOL} 32MB > /dev/null ${CADIUS} createfolder ${IMPORT} ${VOL}/data > /dev/null ${CADIUS} addfile ${IMPORT} ${VOL} ${TARGET}/${PROJECT}#b3db03 > /dev/null - ${CADIUS} addfile ${IMPORT} ${VOL} ${JOEY}/dist/IIgs/Tool222#ba0000 > /dev/null + ${CADIUS} addfile ${IMPORT} ${VOL}/data ${JOEY}/dist/IIgs/Tool222#ba0000 > /dev/null for F in "${DATA[@]}"; do N=${WORK}/data/`basename ${F}`#060000 cp -f ${F} ${N} diff --git a/scripts/installer.sh b/scripts/installer.sh index 1e7295f..2e6ea3f 100755 --- a/scripts/installer.sh +++ b/scripts/installer.sh @@ -1046,7 +1046,7 @@ export JOEY=${G_PARENT} # Is SUDO after us? if [[ "$1" == "ASKPASS" ]]; then - doSudoAskPass + doSudoAskPass # Does not return. fi # Are we doing a totally automated install? @@ -1057,5 +1057,11 @@ if [[ "$1" == "AUTOMATED" ]]; then G_XCODE_FILE=$4 fi +# Don't run as root. +if [[ ${EUID} -eq 0 ]]; then + echo "Do not run the installer as root." + exit 1 +fi + # At the very end so we can stream this script from a web server. start