fixed wrong EmuTOS detection

This commit is contained in:
Markus Fröschle
2014-09-30 17:10:58 +00:00
parent 2f4245743e
commit 0449855146

View File

@@ -105,16 +105,17 @@ int main(int argc, char *argv[])
struct driver_table *dt; struct driver_table *dt;
void *ssp; void *ssp;
void *old_vector; void *old_vector;
char *sysbase = (char *) 0x4f2; char **sysbase = (char **) 0x4f2;
uint32_t sig;
(void) Cconws("retrieve BaS driver interface\r\n"); (void) Cconws("retrieve BaS driver interface\r\n");
ssp = (void *) Super(0L); /* go to supervisor mode, we are doing dirty tricks */ ssp = (void *) Super(0L); /* go to supervisor mode, we are doing dirty tricks */
sig = * (long *)((*sysbase) + 0x2c);
/* /*
* first check if we are on EmuTOS, FireTOS want's to do everything itself * first check if we are on EmuTOS, FireTOS want's to do everything itself
*/ */
if (* (long *)(*sysbase + 0x2c) == 0x45544f53) if (sig == 0x45544f53)
{ {
old_vector = Setexc(0x20, my_own_trap0_handler); /* set our own temporarily */ old_vector = Setexc(0x20, my_own_trap0_handler); /* set our own temporarily */
dt = get_bas_drivers(); /* trap #1 */ dt = get_bas_drivers(); /* trap #1 */
@@ -145,7 +146,8 @@ int main(int argc, char *argv[])
} }
else else
{ {
printf("not running on EmuTOS, exiting\r\n"); printf("not running on EmuTOS,\r\n(signature 0x%04x instead of 0x%04x),\r\n\r\nexiting\r\n",
(uint32_t) sig, 0x45544f53);
} }
Super(ssp); Super(ssp);