Path: utzoo!attcan!uunet!samsung!shadooby!sharkey!math.lsa.umich.edu!hyc From: hyc@math.lsa.umich.edu (Howard Chu) Newsgroups: comp.sys.atari.st Subject: Re: Software Reset Message-ID: <10141@stag.math.lsa.umich.edu> Date: 21 Nov 89 18:57:08 GMT References: <89112004371539@masnet.uucp> <866@lzaz.ATT.COM> Sender: news@math.lsa.umich.edu Reply-To: hyc@math.lsa.umich.edu (Howard Chu) Organization: University of Michigan Math Dept., Ann Arbor Lines: 75 UUCP-Path: {mailrus,umix}!um-math!hyc Just a couple comments on this... In article <866@lzaz.ATT.COM> hcj@lzaz.ATT.COM (HC Johnson) writes: %In article <89112004371539@masnet.uucp>, tellabs.canada@canremote.uucp (TELLABS CANADA) writes: %> Required with the utmost urgency is a (C, Modula2 <-preffered) routine %> to perform a rather cold reset (re-load auto folder etc.) in pre tos1.4 %> and tos1.4 machines. I'd be eternally grateful. %> % % %Howard C. Johnson %ATT Bell Labs %att!lzaz!hcj %hcj@lzaz.att.com % % %Subject: Simple program to reboot an Atari ST %Message-ID: <152@decvax.UUCP> %Date: 20 Sep 87 19:04:56 GMT %Reply-To: minow@decvax.UUCP (Martin Minow) %Distribution: world %Organization: Digital Eq. Corp. - Merrimack NH. %Lines: 40 % %#if 0 %This illustrates how to emulate the white button (warmstart) or %power-switch on an Atari. It *should* be compatible with the new roms. %Normally, you would add the guts to an existing program. % %Martin Minow %decvax!minow %#endif % %/* % * Reboot an Atari ST. This program is in the public-domain. % * Martin Minow, Arlington MA 02174, USA. % */ % %#include %#include % %#define OS_memvalid (*((long *) 0x420L)) %#define OS_memval2 (*((long *) 0x43AL)) %#define OS_resvalid (*((long *) 0x426L)) %#define OS_restart (*((int(*)()) 0xFC0000L)) % %main() %{ % int hardboot; % long oldstack; % % hidemouse(); % Cconws("\033EX or x to hardboot, anything else to softboot: "); % hardboot = Cconin() & 0xFF; % oldstack = Super(0L); /* Get into super mode */ % if (hardboot == 'X' % || hardboot == 'x') { % OS_memvalid = 0L; /* Invalidate the OS */ % OS_memval2 = 0L; /* "up and running" */ % OS_resvalid = 0L; /* flags. */ % } % OS_restart(); /* Imitate system reset */ % Super(oldstack); /* We never get here */ %} Lessee if I can get in before kbad does. }-) You shouldn't assume that the ROM lives at 0xFC0000, 'cause it can move around on you. A better way would have been to declare a pointer to the reset function, and set that the 0x42a, the resvector system variable. Then jump thru the pointer. A question - why doesn't anyone just use the 68000 RESET instruction? -- -=- PrayerMail: Send 100Mbits to holyghost@father.son[127.0.0.1] and You Too can have a Personal Electronic Relationship with God!