Path: utzoo!attcan!uunet!abcfd20.larc.nasa.gov!amiga-request From: amiga-request@abcfd20.larc.nasa.gov (Amiga Sources/Binaries Moderator) Newsgroups: comp.sources.amiga Subject: v90i279: Kill2090 - reboot, toggle ntsc/pal mode and disable autoconf boards, Part01/01 Message-ID: Date: 14 Oct 90 18:24:14 GMT Reply-To: "John Davis,chem dept, UoC NZ" Lines: 1053 Approved: tadguy@uunet.UU.NET (Tad Guy) X-Mail-Submissions-To: amiga@uunet.uu.net X-Post-Discussions-To: comp.sys.amiga Submitted-by: "John Davis,chem dept, UoC NZ" Posting-number: Volume 90, Issue 279 Archive-name: util/kill2090/part01 [ uuencoded executable and icons enclosed ...tad ] a suite of programs, that will reboot you amiga, and optionally toggle the machine to NTSC/PAL ( if you have the ECS Agnus fitted ) and also optionally disable ALL autoconfig boards ( hopefully lessens the chance of a virus/trojan horse stomping your auto-mounting HD ). #!/bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh 'kill2090.doc' <<'END_OF_FILE' XKill2090 v1.0 By John Davis, 26/08/1990 X XWhat it does X------------ X XKILL2090/RESET are a set of programs to reset the amiga thru software X(first asking the user for confirmation), plus it will try to _DISABLE_ XALL the autoconfig devices in your machine. Since this will include the Xhard-disk controller, this allows you to safely run software off floppies Xwithout worrying about viruses etc getting at your autoboot/automount Xhard-disk. X XIf you have the 1mb Agnus, it will also toggle your machine to PAL or NTSC Xscreen mode, depending on which version you use (useful for games if Xyou've got a PAL machine and useful for gaining screen area if you've got Xa NTSC machine). If you ONLY wish to reboot to a different video mode, Xthen the RESET version will do that alone (without disabling your Xhard-disk etc). X XSince the actual screen toggle code is run from the cold capture during Xreboot, this means it will work even with games which have a custom Xbootblock (and hence can't have Nico Francois' PAL/NTSC bootblock used on Xthem). X XIn spite of the name, it will actually work with ALL autoconfig boards - Xthat includes the 2090a controller, the A590 hard-disk and ram system, the X2058/2052 ram boards and hopefully most 3rd party autoconfig devices. X XWhen you reboot you should notice a pause, then the led will blink on/off X5 times and the screen will go pink. This lets you know Kill2090's at Xwork. X XIf you've run KILL2090, when it's finished, you should get the amiga Xasking for a workbench disk - your auto-boot hard-disk and all expansion Xmemory is now disabled. If you've run RESET your machine should just Xreboot to the chosen video mode. X X XTechnical info X-------------- X XThere is only one source file for all four versions of the program, you Xjust vary a pair of conditional flags to build all four - so if you do Xmuck around with the source, remember to rebuild ALL versions. X XThe actual reset routine used , is based on the example in the 1.3 rkm, Xwith additional mods described by CATS on usenet for 020/030 based Xsystems. X XThe code for disabling the auto-config boards is based on info gleaned Xfrom the 1.3 Hardware RKM auto-config docs. Basically what it does is zip Xthru all the boards it can find, and if they support SHUT-UP then it uses Xthat to make them disappear, if they don't then it tells them to config Xout of the way at $200000. X XHence by the time exec comes up and looks for any autoconfig boards, Xthey're all gone (yes, it's a HACK - but it works :-). X XThis version is hardcoded to config the any boards boards that can't Xsupport shut_up to $200000. Earlier versions sent boards to $d00000, but Xif you had a 2mb (or greater) memory board, this resulted in the board Xmemory overlaying the custom chips (at $dff000) and causing a system Xcrash. Moving boards to $200000 means that even full 8mb boards are coped Xwith correctly, in fact that's the _only_ 8mb gap in the system memory Xmap. X XThe disable code is hooked to execbase's ColdCapture vector, this gets run XVERY early in the reboot sequence (making it ideal for this application - Xit's run before even EXEC is up !!) plus the vector's auto-cleared after Xuse (so the patch doesn't hang around - again, exactly what I wanted) X X X XPossible problems X----------------- X XAs I said, portions of this code are somewhat illegal in how they treat Xthe system, I've tested the code on as wide a range of machines as I can, Xbut there is no way I can guarantee it will work on all systems. XBasically, for any setup, you're going to have to suck it and see... X Xspecific areas that could be a problem ... X X1) the autoconfig fakeout is 'illegal' ... seems to work on all the systems X I've tried though ( 2000 r4.3 with 1mb and 2090a, 2000 r4.3 with 2090 X and 3mb ram, 2500/30 w 2090a, 2500/30 w 2090, A500 w A590 and 3mb, X 2000 r4.3 w Ronin Hurricane 020 ) X X2) it seems that some 2000s don't correctly remap the ROM on execution X of the RESET instruction, or just ignore the RESET pulse ( hardware X design fault ). Not much I can do about that.... X X3) as anyone who's followed the saga of 'the correct code to reset the X amiga in software, part mcmlxxiv' on Usenet will know, CBM themselves X can't come up with code that will reliably reset ALL setups. This is X the latest version of the reset code that doesn't resort to jumping X to ROM ( here's CATS telling us off for rom-jumping, now they're doing X it themselves :-). X X The reset code should work on most machines ... EXCEPT on the 2500 X you will get the reset, followed by the led-blinking the 2630 does X on startup (when you can select processors), followed by my code X running (screen goes pink) and then you'll get a guru. Don't worry, X just cancel the Alert and it'll still work fine .... since this X happens ONLY on the 2630 (code works fine on a Ronin Hurricane board), X I can only put this down to some weird interaction with the 2630 X boot rom ... if anyone has code that PROPERLY resets the 2630 I'd X love to see it. X X X XBug Reports X----------- X XIf you find either of the programs don't seem to work on your setup, let Xme know, so as I can work out what I need to do to make this work on as Xwide a range of machines as possible - any and all feedback welcomed! X X Xyou can contact me at the following electronic addresses :- X Xbbs: "John Davis" on AmigaINFO BBS, NZ +3-3371-531 (24hrs, 2400/1200 baud) XInternet/UseNet: chem194@canterbury.ac.nz X Xor snail mail to X X John Davis X Departmental Programmer X Chemistry Department X University of Canterbury X Private Bag X Christchurch X New Zealand X X XFinally, a big thanks to all the people who helped with the Beta testing Xof this program by allowing me access to their hardware - X X Terrence Blyth, Andrew King, Joe Begej, Dave Hassall, Stephen Webber, X Pete Moore, Geoff McCaughan, Peter.B McIntyre, John Nettleton, X John Bickers, Danny Neville X Xand to all the people on AmigaINFO BBS for their support and Xencouragement. X END_OF_FILE if test 6127 -ne `wc -c <'kill2090.doc'`; then echo shar: \"'kill2090.doc'\" unpacked with wrong size! fi # end of 'kill2090.doc' fi if test -f 'kill2090.s' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'kill2090.s'\" else echo shar: Extracting \"'kill2090.s'\" \(7920 characters\) sed "s/^X//" >'kill2090.s' <<'END_OF_FILE' X; kill 2090 - by J Davis 08/1990 X; --------- X; X; version 1.0 X; X; THIS MUST BE ASSEMBLED TO FORCELOAD TO CHIPMEM!!! X; X; very simple program to reboot 2000 with all autoconfig boards off X; X; this allows you to boot off floppies without worrying about X; rogue programs attacking your hard-disk X; X; the drive is only killed until the next reboot - so ctrl-amiga-amiga X; will re-anable it X; X; how it does it - X; this is basically a modified version of the 'official' X; reboot code in the rkm:hardware, with the addition of X; a coldcapture routine that 'fakes out' all the expansion X; boards, stopping exec from seeing/using them X; X; X; YES THIS IS A HACK!! It manipulates the system in a manner contrary X; to the rkm quidelines - so don't blame me if it doesn't work!! :-) X; X; X; changes for version .05(beta) X; X; sends 5 flashes when cold capt code starts X; back to brute force approach to finding all boards X; X; changes for version .06(beta) X; X; now sends all boards that don't support shut_up to $200000 X; ( instead of $d00000 as before ). This gets around problems X; with memory boards overlaying the custom chips and killing the X; whole system X; X; changes for version 1.0 X; X; added code to switch super agnus to PAL/NTSC X; X; by altering the conditional compilation switches Go_NTSC and X; Kill_boards, you can set whether to switch to PAL or NTSC at X; boot-time, and also whether to just reset, or kill exp boards X; as well, giving four possible versions of this program X X X;=========================================================== X; vary these flags to build all 4 possible versions X Xkill_boards equ 0 ; set to 0 to just build reset program X Xgo_ntsc equ 0 ; set to 1 will toggle superAgnus to NTSC X ; set to 0 will toggle to PAL X X;============================================= X Xforbid equ -$084 ; offsets for various exec and int calls Xgetmsg equ -$174 ; saves long includes and compile times Xreplymsg equ -$17a Xwaitport equ -$180 Xfindtask equ -$126 Xautoreq equ -$15c Xopenlib equ -$228 Xcloselib equ -$19e Xsupervisor equ -$01e X Xattnflags equ $128 ; offset for execbase.attnflags word Xafb_68020 equ 1<<1 ; bit mask for 020 flag X Xpr_cli equ $0Ac ; process cli flag offset Xpr_msgport equ $05c ; process msgport offset X X; hisoft devpac and Argasm don't support the 010+ movec command! X; so we jam them in as consts instead Xmovec_cacr_d0 equ %0000000000000010 Xmovec_d0_cacr equ %1000000000000010 X X;========================================= X X section main,code_c ; make sure we're in CHIP X Xstartup: move.l $4,a6 X move.l #0,a1 X jsr findtask(a6) ; find ourselves X X move.l d0,a4 ; save our process pointer X X move.l pr_cli(a4),d0 X bne fromdos ; was a DOS startup X X ; was started from WB X X lea pr_msgport(a4),a0 X jsr waitport(a6) ; wait for startup msg X lea pr_msgport(a4),a0 X jsr getmsg(a6) ; get the wb msg X X move.l d0,wbmsg ; save pointer to our startup msg X move.l #1,wb ; flag we started from wb X Xfromdos: lea intuiname,a1 X move.l #0,d0 X move.l $4,a6 X jsr openlib(a6) ; open intuition lib X X move.l d0,a6 ; save ibase X X move.l #0,a0 ; window to display in X move.l #bodyitext,a1 ; body text X move.l #yesitext,a2 ; postive text X move.l #noitext,a3 ; negative text X move.l #0,d0 ; pflags X move.l #0,d1 ; nflags X move.l #460,d2 ; width X move.l #60,d3 ; height X jsr autoreq(a6) ; request user confirmation X X cmp.l #0,d0 X bne reboot ; user selected ok, kill! X X ; user cancelled reboot X X move.l a6,a1 ; close intuition lib X move.l $4,a6 X jsr closelib(A6) X Xexit: move.l wb,d0 X cmp.l #0,d0 ; was this a CLI invocation X beq exit_dos X X ; workbench exit X X move.l $4,a6 X jsr forbid(a6) ; lock out everyone else X X move.l wbmsg,a1 X jsr replymsg(a6) ; reply to Wbstartup msg X Xexit_dos: move.l #0,d0 ; return with return code 0 X rts X X X X;===================================== X; the following does the actual reboot X Xreboot: jsr instcold ; install coldcapture handler X ; exec will run coldcapt once and then X ; kill it - exactly what we want! X X move.l $4,a6 ; RESET must be run in Smode, so go to it X move.l #reboot_c,a5 ; code to run in supervisor mode X jsr supervisor(A6) ; go into supervisor mode X X cnop 0,4 ; longword align code X Xreboot_c: move.l $4,a6 X btst.b #afb_68020,attnflags+1(a6) X beq kill ; is system 020/030 powered ? X X ; if it is an 020 or 030, take extra steps for cache X X dc.w movec_cacr_d0 ; twiddle the cache control reg X bset.l #3,d0 X dc.w movec_d0_cacr X X bra kill X X cnop 0,4 ; long word align code X Xkill: move.l #$2,a1 ; where to jump to in rom X reset X jmp (a1) ; now run reset code in rom X X X X;======================================= X; routine to install coldcapture handler X Xinstcold: move.l $4,a6 ; get execbase X lea cold,a0 ; get address of our coldcapt routine X move.l a0,$2a(a6) ; set coldcapture vect X X lea 34(a6),a0 ; start of checksummed area in execbase X move.w #$16,d0 ; number of checksummed words X move.w #$0,d1 ; clear counter X Xsum: add.w (A0)+,d1 ; sum execbase and update checksum X dbf d0,sum X X not.w d1 X move.w d1,82(a6) ; save fixed checksum X X rts X X X;=========================================================================== X; our actual cold capture handler, flashes led,zaps boards,toggles agnus etc X Xcold: move.w #$0f8a,$dff180 ; set screen colour to pink X X IFNE go_ntsc ; go_ntsc=1 switch to ntsc X move.w #$00,$dff1dc ; set NTSC mode on agnus X ELSEIF X move.w #$20,$dff1dc ; set PAL mode on agnus X ENDC X X X move.l #9,d0 ; flash power led 5 times X ; to let know we're running X Xlloop: bchg #1,$bfe001 ; toggle led X move.l #$ffff,d1 Xlwait: dbf d1,lwait ; delay X dbf d0,lloop X X X IFNE kill_boards ; kill_boards=1, so add kill code X X move.l #$7,d1 ; max no boards we fix = 8 X Xbchk: move.w $e80008,d0 ; get flag byte from board X not.w d0 ; invert X btst.l #14,d0 ; see if board supports shut_up X beq shut_up ; bit=0 means board shuts up ok X X ; board doesn't support shut up, so X ; config board to $200000 (only gap big enough for 8mb X ; boards) X X move.w #$0000,$e8004a ; fake board out to $200000 X move.w #$2000,$e80048 X X bra nboard ; carry on X Xshut_up: move.b #$ff,$e8004c ; tell the board to shut up X Xnboard: dbf d1,bchk ; loop thru all boards X ENDC X Xbexit: jmp (a5) ; chain thru to rest of reset routine X X;============================================================= X Xwb: dc.l 0 ; run mode flag 0=dos process 1=wbprocess Xwbmsg: dc.l 0 ; where we save our workbench msg X Xintuiname: dc.b "intuition.library",0 X X; stuff for our autorequester X Xbodyitext: dc.b 0 ; front pen X dc.b 1 ; back pen X dc.b 0 ; draw mode X dc.w 70 ; leftedge X dc.w 6 ; topedge X dc.l 0 ; textattr = default X dc.l bodytext1 ; actual text X dc.l bodyitext2 ; next X Xbodyitext2: dc.b 0 ; front pen X dc.b 1 ; back pen X dc.b 0 ; draw mode X dc.w 35 ; leftedge X dc.w 15 ; topedge X dc.l 0 ; textattr = default X dc.l bodytext2 ; actual text X dc.l 0 ; next X X Xyesitext: dc.b 2 ; front pen X dc.b 1 ; back pen X dc.b 0 ; draw mode X dc.w 4 ; leftedge X dc.w 4 ; topedge X dc.l 0 ; textattr = default X dc.l yestext ; actual text X dc.l 0 ; next X Xnoitext: dc.b 2 ; front pen X dc.b 1 ; back pen X dc.b 0 ; draw mode X dc.w 4 ; leftedge X dc.w 4 ; topedge X dc.l 0 ; textattr = default X dc.l notext ; actual text X dc.l 0 ; next X X ; actual text for our requester X X IFNE kill_boards Xbodytext1: dc.b "Kill2090" X ELSEIF Xbodytext1: dc.b " Reset" X ENDC X X dc.b " by J Davis, 08-1990 v1.0 " X X IFNE go_ntsc X dc.b "NTSC" X ELSEIF X dc.b "PAL " X ENDC X dc.b 0 X Xbodytext2: dc.b "About to kill system, finish ALL disk activity",0 X Xyestext: dc.b "Go ahead, make my day!",0 Xnotext: dc.b "No, I was just kidding!",0 X X END END_OF_FILE if test 7920 -ne `wc -c <'kill2090.s'`; then echo shar: \"'kill2090.s'\" unpacked with wrong size! fi # end of 'kill2090.s' fi if test -f 'kill2090.s.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'kill2090.s.uu'\" else echo shar: Extracting \"'kill2090.s.uu'\" \(538 characters\) sed "s/^X//" >'kill2090.s.uu' <<'END_OF_FILE' Xbegin 666 kill2090.s.info XMXQ```0``````)P!.`"``'``%``,``0#`?7``````````````````````````; XM````!,,`P%+@`,![J(````"````````````````````````````@`!P``@`!; XM9<`#````````````!___^`?___@&$)(8!S.3.``]MZ XMY@#,;,8`SSC&`,QLQ@#/;,8````&`___]@````8``(!&``$,A@`#,L8`!'0`E X`` Xend Xsize 354 END_OF_FILE if test 538 -ne `wc -c <'kill2090.s.uu'`; then echo shar: \"'kill2090.s.uu'\" unpacked with wrong size! fi # end of 'kill2090.s.uu' fi if test -f 'kill2090.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'kill2090.uu'\" else echo shar: Extracting \"'kill2090.uu'\" \(540 characters\) sed "s/^X//" >'kill2090.uu' <<'END_OF_FILE' Xbegin 666 kill2090.doc.info XMXQ```0``````)P!.`"``'``%``,``0#`?7``````````````````````````; XM````!,,`P%+@`,![J(````"````````````````````````````@`!P``@`!; XM9<`#````````````!___^`?___@&$)(8!S.3.``]MZ XMY@#,;,8`SSC&`,QLQ@#/;,8````&`___]@````8``(!&``$,A@`#,L8`!'0`E X`` Xend Xsize 354 END_OF_FILE if test 540 -ne `wc -c <'kill2090.uu'`; then echo shar: \"'kill2090.uu'\" unpacked with wrong size! fi # end of 'kill2090.uu' fi if test -f 'kill20900.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'kill20900.uu'\" else echo shar: Extracting \"'kill20900.uu'\" \(1107 characters\) sed "s/^X//" >'kill20900.uu' <<'END_OF_FILE' Xbegin 666 kill2090.ntsc XM```#\P`````````!``````````!```"A0``#Z0```*$L>0````0B?`````!.Z XMKO[:*$`@+`"L9@``(D'L`%Q.KOZ`0>P`7$ZN_HPCP````9@C_`````$```&4Q XM0_D```&<(#P`````+'D````$3J[]V"Q`('P`````(GP```&N)'P```'6)GP`= XM``'J(#P`````(CP`````)#P```',)CP````\3J[^I+"\`````&8``#HB3BQYO XM````!$ZN_F(@.0```92PO`````!G```6+'D````$3J[_?")Y```!F$ZN_H8@K XM/`````!.=4ZY```!!BQY````!"I\````X$ZN_^(``"QY````!`@N``(!*6<`+ XM``X``@C```.``F````(B?`````).<$[1+'D````$0?D```$P+4@`*D'N`"(PP XM/``6,CP``-)84 XM``#H`$HS_"```.@`2&````H3_`#_`.@`3%')_]).U0``````````:6YT=6ET( XM:6]N+FQI8G)A2!*($1A=FES+"`P."TQ.3DP('8Q+C`@3E130P!!8F]U+ XM="!T;R!K:6QL('-Y2$`3F\L($D@=V%S(&IU'kill20901.uu' <<'END_OF_FILE' Xbegin 666 kill2090.ntsc.info XMXQ```0`````!L@!!`"T`+``&``,``0#"DE@`PI-(`````/____\`````````0 XM`````\,``````````````:(````V``````````````^@```````M`"L``@`!I XM<(`#```````````````````````````````````````'#QX\```-F;-F```(J XMD*%"````D*%".``!D+-"9``!$)Y"#``"$()"-``$$(1"1``,69AF9``/SS`\^ XM.@````````````````````````````````#______^"``````""``````""`5 XM`````"".`````""``````"".[N[N[B"``````"#______^#______^``````J XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM``````````````````````````!______\!______\!______\!______\!_K XM_____\!Q$1$1$"'@````2"$`````1"$`````1B$````!XW.``````````````% XM````````_@``````@@``````@@``````@@``````@@``````@@`````_@_@`" XM```@``@````@``@````@``@````@``@````_@_@`````@@``````@@``````> XM@@``````@@``````@@``````@@``````@@``````@@``````@@``````@@``0 XM````@@``````@@``````@@``````_@``````````````````````````````$ XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM?```````?```````?```````?```````?```````?``````?__`````?__``$ XM```?__`````?__``````?```````?```````?```````?```````?```````( XM?```````?```````?```````?```````?```````?```````?```````?```@ X9````?```````````````````````````````\ X`` Xend Xsize 1150 END_OF_FILE if test 1660 -ne `wc -c <'kill20901.uu'`; then echo shar: \"'kill20901.uu'\" unpacked with wrong size! fi # end of 'kill20901.uu' fi if test -f 'kill20902.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'kill20902.uu'\" else echo shar: Extracting \"'kill20902.uu'\" \(1106 characters\) sed "s/^X//" >'kill20902.uu' <<'END_OF_FILE' Xbegin 666 kill2090.pal XM```#\P`````````!``````````!```"A0``#Z0```*$L>0````0B?`````!.Z XMKO[:*$`@+`"L9@``(D'L`%Q.KOZ`0>P`7$ZN_HPCP````9@C_`````$```&4Q XM0_D```&<(#P`````+'D````$3J[]V"Q`('P`````(GP```&N)'P```'6)GP`= XM``'J(#P`````(CP`````)#P```',)CP````\3J[^I+"\`````&8``#HB3BQYO XM````!$ZN_F(@.0```92PO`````!G```6+'D````$3J[_?")Y```!F$ZN_H8@K XM/`````!.=4ZY```!!BQY````!"I\````X$ZN_^(``"QY````!`@N``(!*6<`+ XM``X``@C```.``F````(B?`````).<$[1+'D````$0?D```$P+4@`*D'N`"(PP XM/``6,CP``-)84 XM``#H`$HS_"```.@`2&````H3_`#_`.@`3%')_]).U0``````````:6YT=6ET( XM:6]N+FQI8G)A2!*($1A=FES+"`P."TQ.3DP('8Q+C`@4$%,(`!!8F]U0 XM="!T;R!K:6QL('-Y2$`3F\L($D@=V%S(&IU'kill20903.uu' <<'END_OF_FILE' Xbegin 666 kill2090.pal.info XMXQ```0`````!LP`,`"T`+``&``,``0##:&@`PVGH`````/____\`````````Z XM`````\,``````````````:,````!``````````````^@```````M`"L``@`"V XM)-`#```````````````````````````````````````'#QX\```-F;-F```(N XMD*%"````D*%".``!D+-"9``!$)Y"#``"$()"-``$$(1"1``,69AF9``/SS`\^ XM.@````````````````````````````````#______^"``````""``````""`5 XM`````"".`````""``````"".[N[N[B"``````"#______^#______^``````J XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM``````````````````````````!______\!______\!______\!______\!_K XM_____\!Q$1$1$"'@````2"$`````1"$`````1B$````!XW.``````````````% XM````````_@``````@@``````@@``````@@``````@@``````@@`````_@_@`" XM```@``@````@``@````@``@````@``@````_@_@`````@@``````@@``````> XM@@``````@@``````@@``````@@``````@@``````@@``````@@``````@@``0 XM````@@``````@@``````@@``````_@``````````````````````````````$ XM````````````````````````````````````````````````````````````` XM````````````````````````````````````````````````````````````` XM?```````?```````?```````?```````?```````?``````?__`````?__``$ XM```?__`````?__``````?```````?```````?```````?```````?```````( XM?```````?```````?```````?```````?```````?```````?```````?```@ X9````?```````````````````````````````\ X`` Xend Xsize 1150 END_OF_FILE if test 1659 -ne `wc -c <'kill20903.uu'`; then echo shar: \"'kill20903.uu'\" unpacked with wrong size! fi # end of 'kill20903.uu' fi if test -f 'reset.ntsc.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'reset.ntsc.uu'\" else echo shar: Extracting \"'reset.ntsc.uu'\" \(1025 characters\) sed "s/^X//" >'reset.ntsc.uu' <<'END_OF_FILE' Xbegin 666 reset.ntsc XM```#\P`````````!``````````!```"30``#Z0```),L>0````0B?`````!.> XMKO[:*$`@+`"L9@``(D'L`%Q.KOZ`0>P`7$ZN_HPCP````6(C_`````$```%>% XM0_D```%F(#P`````+'D````$3J[]V"Q`('P`````(GP```%X)'P```&@)GP`[ XM``&T(#P`````(CP`````)#P```',)CP````\3J[^I+"\`````&8``#HB3BQYY XM````!$ZN_F(@.0```5ZPO`````!G```6+'D````$3J[_?")Y```!8DZN_H8@_ XM/`````!.=4ZY```!!BQY````!"I\````X$ZN_^(``"QY````!`@N``(!*6<`+ XM``X``@C```.``F````(B?`````).<$[1+'D````$0?D```$P+4@`*D'N`"(PP XM/``6,CP``-)847-T96TL(&9I;FES:"!!3$P@9&ES:R!A8W1I=FET>0!';R!A:&5A9"P@;6%K> XM92!M>2!D87DA`$YO+"!)('=A````N````,H```#6```!U X=#@```80```&(```!F````:P```'``````````_*>V X`` Xend Xsize 704 END_OF_FILE if test 1025 -ne `wc -c <'reset.ntsc.uu'`; then echo shar: \"'reset.ntsc.uu'\" unpacked with wrong size! fi # end of 'reset.ntsc.uu' fi if test -f 'reset.ntsc0.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'reset.ntsc0.uu'\" else echo shar: Extracting \"'reset.ntsc0.uu'\" \(534 characters\) sed "s/^X//" >'reset.ntsc0.uu' <<'END_OF_FILE' Xbegin 666 reset.ntsc.info XMXQ```0`````!N0"8`",`$0`%``,``0##7Y``````````````````````````U XM`````\,`PS4@`````````:D```"-``'D(`````````^@````+@%R`)?__P``_ XM```"0`)_``%=!```````P!*`````````````6@`H_____P`!____Z0``````< XM`````",`$``"``'EX`,```````!__\````!_X<````!_X<````!_X<````!_; XM_\````````````````````/ZJ/````/U1'@```/JHC@```/5<1@```.J__@`4 XM``-5__@```*K__@```/___@``````````/____^``/_____``/_____@`/__^ XM___@`/_____@`/_____@`/_____@`/P']0_@`/P.ZH?@`/P=U4?@`/P[BJ?@1 XD`/QW``?@`/SN``?@`,W<``?@`/P```?@``````````````$`? X`` Xend Xsize 351 END_OF_FILE if test 534 -ne `wc -c <'reset.ntsc0.uu'`; then echo shar: \"'reset.ntsc0.uu'\" unpacked with wrong size! fi # end of 'reset.ntsc0.uu' fi if test -f 'reset.pal.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'reset.pal.uu'\" else echo shar: Extracting \"'reset.pal.uu'\" \(1024 characters\) sed "s/^X//" >'reset.pal.uu' <<'END_OF_FILE' Xbegin 666 reset.pal XM```#\P`````````!``````````!```"30``#Z0```),L>0````0B?`````!.> XMKO[:*$`@+`"L9@``(D'L`%Q.KOZ`0>P`7$ZN_HPCP````6(C_`````$```%>% XM0_D```%F(#P`````+'D````$3J[]V"Q`('P`````(GP```%X)'P```&@)GP`[ XM``&T(#P`````(CP`````)#P```',)CP````\3J[^I+"\`````&8``#HB3BQYY XM````!$ZN_F(@.0```5ZPO`````!G```6+'D````$3J[_?")Y```!8DZN_H8@_ XM/`````!.=4ZY```!!BQY````!"I\````X$ZN_^(``"QY````!`@N``(!*6<`+ XM``X``@C```.``F````(B?`````).<$[1+'D````$0?D```$P+4@`*D'N`"(PP XM/``6,CP``-)847-T96TL(&9I;FES:"!!3$P@9&ES:R!A8W1I=FET>0!';R!A:&5A9"P@;6%K> XM92!M>2!D87DA`$YO+"!)('=A````N````,H```#6```!U X=#@```80```&(```!F````:P```'``````````_*>V X`` Xend Xsize 704 END_OF_FILE if test 1024 -ne `wc -c <'reset.pal.uu'`; then echo shar: \"'reset.pal.uu'\" unpacked with wrong size! fi # end of 'reset.pal.uu' fi if test -f 'reset.pal0.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'reset.pal0.uu'\" else echo shar: Extracting \"'reset.pal0.uu'\" \(533 characters\) sed "s/^X//" >'reset.pal0.uu' <<'END_OF_FILE' Xbegin 666 reset.pal.info XMXQ```0`````!MP!X`",`$0`%``,``0##.;``````````````````````````- XM`````\,`PS1X`````````:<```!M``'A0`````````^@````+@%R`)?__P``1 XM```"0`)_``%=!```````P!*`````````````6@`H_____P`!____Z0``````< XM`````",`$``"``'C``,```````!__\````!_X<````!_X<````!_X<````!_Y XM_\````````````````````/ZJ/````/U1'@```/JHC@```/5<1@```.J__@`4 XM``-5__@```*K__@```/___@``````````/____^``/_____``/_____@`/__^ XM___@`/_____@`/_____@`/_____@`/P']0_@`/P.ZH?@`/P=U4?@`/P[BJ?@1 XD`/QW``?@`/SN``?@`,W<``?@`/P```?@``````````````$`? X`` Xend Xsize 351 END_OF_FILE if test 533 -ne `wc -c <'reset.pal0.uu'`; then echo shar: \"'reset.pal0.uu'\" unpacked with wrong size! fi # end of 'reset.pal0.uu' fi if test -f 'resetcode.txt' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'resetcode.txt'\" else echo shar: Extracting \"'resetcode.txt'\" \(7059 characters\) sed "s/^X//" >'resetcode.txt' <<'END_OF_FILE' XGroup: comp.sys.amiga.tech, Item 2342 (Current Item Range #2253 - #2365) XSubject: ColdReboot() - The Never Ending Story? XFrom: rbabel@babylon.UUCP (Ralph Babel) X XDate: 15 Aug 90 04:55:43 GMT X XBrief history: X XThe original "ColdReboot()" (new Amiga Hardware Reference XManual, page 219) didn't work on some (IMHO) broken A2000s X(Kickstart ROM doesn't reappear at location 0 after RESET). X XThe current version (AmigaMail March/April 1990) jumps Xdirectly into Kickstart and therefore doesn't co-operate Xwith boot-ROMs (not to be confused with Autoboot driver XROMs) that show up at location 0 after a software RESET X(e.g. it leaves the A1000's WCS write-enabled and does not Xwork with GVP's '030 boot-ROMs - dunno about A2620/A2630). XPresumably this bug also prevents the current versions of X"MMUKick" and "SetCPU ROMBOOT" from working with boot-ROMs. X XSo what about the following solution? X X------------------------ cut here ------------------------ X X* This is Beer-Ware. If you find this program useful, you X* are morally obliged to buy me a drink at the next Amiga X* show or devcon. :-) X X csect "text",0,1,0,4 X X include "exec/types.i" X include "exec/execbase.i" X XAbsExecBase equ 4 X_LVOSupervisor equ -30 X_LVOColdReboot equ -726 XLIBRARY_VERSION_2_0 equ 36 X X_ColdReboot X movea.l AbsExecBase.w,a6 X cmp.w #LIBRARY_VERSION_2_0,LIB_VERSION(a6) X blt.b 1$ X jmp _LVOColdReboot(a6) X X1$ lea 2$(pc),a5 X jsr _LVOSupervisor(a6) X X* X* in case our boot-ROM doesn't show up at location 0 ... X* X* romsize equ $00ffffec X* romend equ $01000000 X* X* $000002: bra.b $000008 X* $000004: AbsExecBase X* $000008: lea romend+4,a0 X* $00000e: suba.l romsize-(romend+4)(a0),a0 X* $000012: movea.l (a0),a0 X* $000014: subq.l #2,a0 X* $000016: jmp (a0) X* X X2$ lea (2).w,a0 X movea.l a0,a1 X move.w #$6004,(a1)+ X addq.l #4,a1 X move.l #$41f90100,(a1)+ X move.l #$000491e8,(a1)+ X move.l #$ffe82050,(a1)+ X move.l #$55884ed0,(a1) X X btst.b #AFB_68020,AttnFlags+1(a6) X beq.b 3$ X X movec.l cacr,d0 X bset.l #3,d0 X movec.l d0,cacr X X3$ cnop 0,4 X reset X jmp (a0) X X end X X------------------------ cut here ------------------------ X XRestrictions: Does not support '040 under pre-2.0; assumes Xall boot-ROMs have a JMP-$absolute at location 2; and the Xusual MMU restriction (turn off MMU before rebooting). Maybe XDave has a good idea on how to turn off the MMU without Xpulling the rug from under your own feet (SetCPU ROMBOOT)? X XComments appreciated, X XRalph Babel X X....!cbmvax!cbmehq!babylon!rbabel X X X X XGroup: comp.sys.amiga.tech, Item 2349 (Current Item Range #2253 - #2365) XSubject: Re: ColdReboot() - The Never Ending Story? XFrom: daveh@cbmvax.commodore.com (Dave Haynie), Commodore, West Chester, PA X XDate: 16 Aug 90 16:32:13 GMT X XIn article <03021.AA03021@babylon.UUCP> rbabel@babylon.UUCP (Ralph Babel) writes X X: X>Brief history: X X>The current version (AmigaMail March/April 1990) jumps X>directly into Kickstart and therefore doesn't co-operate X>with boot-ROMs (not to be confused with Autoboot driver X>ROMs) that show up at location 0 after a software RESET X>(e.g. it leaves the A1000's WCS write-enabled and does not X>work with GVP's '030 boot-ROMs - dunno about A2620/A2630). X>Presumably this bug also prevents the current versions of X>"MMUKick" and "SetCPU ROMBOOT" from working with boot-ROMs. X XI'm not sure what the GVP boot ROMs actually do, but with the A2620 and XA2630, these ROMs are gone forever by the time you're into AmigaOS the Xfirst time after a full system reset (eg, powerup, keyboard, or any other Xcondition that yanks both RST* and HLT*). Basically, after a full system Xreset, the A26x0 ROMs are mapped at 0 and a magic A26x0 control register Xis mapped into the $00e8xxxx space normally used for AUTOCONFIG units. XThis magic control register is similar to, but not identical to, a normal XAUTOCONFIG unit, and Exec would certainly choke on it. The control Xregister is actually at $00e80040, and it can be written to repeatedly Xuntil the configuration bit in the register is set. At that point, this Xmagic control register goes away, normally until the next full-system Xreset. It is replaced at $00e8xxxx by the configuration unit for the XA26x0 on-board memory, which is a true AUTOCONFIG unit understood by Xexpansion.library and all. Any CPU-generated RESET will bring you back to Xthis state, but not back to the initial state where the magic register is Xaccessible or A26x0 ROMs are visible. X X>Maybe Dave has a good idea on how to turn off the MMU without X>pulling the rug from under your own feet (SetCPU ROMBOOT)? X XIf the MMU is on, make sure you're done running any OS code before you turn Xit off. That's about all you can do. For SetCPU ROMBOOT, I do just this. XIf you're running under 2.0, SetCPU setfunctions its own reset routine, which Xwill [a] not live in emulated ROM at the time of reset, and [b] turn off the XMMU just prior to resetting. X X>Ralph Babel X X-- XDave Haynie Commodore-Amiga (Amiga 3000) "The Crew That Never Rests" X {uunet|pyramid|rutgers}!cbmvax!daveh PLINK: hazy BIX: hazy X Get that coffee outta my face, put a Margarita in its place! X X XGroup: comp.sys.amiga.tech, Item 2353 (Current Item Range #2253 - #2365) XSubject: Re: ColdReboot() - The Never Ending Story? XFrom: valentin@cbmvax.commodore.com (Valentin Pepelea), Commodore, West Chester, X XDate: 16 Aug 90 20:43:59 GMT X XIn article <03021.AA03021@babylon.UUCP> rbabel@babylon.UUCP (Ralph Babel) Xwrites: X> X> The original "ColdReboot()" (new Amiga Hardware Reference Manual, page 219) X> didn't work on some (IMHO) broken A2000s (Kickstart ROM doesn't reappear at X> location 0 after RESET). X> X> (e.g. it leaves the A1000's WCS write-enabled and does not work with GVP's X> '030 boot-ROMs - dunno about A2620/A2630). Presumably this bug also prevents X> the current versions of "MMUKick" and "SetCPU ROMBOOT" from working with X> boot-ROMs. X XI'm not sure what you are talking about here. I wrote MMUkick with the Xspecific purpose to allow GVP accelerator owners to boot OS 2.0 kickfiles. XI even had to help GVP find out why initially, MMUkick would not work. To Xfix that they had to replace their PALs with new ones which properly Xpropagate the *RESET signal from the CPU to external devices, and did not Xinhibit the cache for CPU fetches from chip memory. X X> So what about the following solution? X XSelf modifying code is dangerous to your health. In this case, remember to XDisable() all interrupts before entering the critical region. X XValentin X-- XThe Goddess of democracy? "The tyrants Name: Valentin Pepelea Xmay distroy a statue, but they cannot Phone: (215) 431-9327 Xkill a god." UseNet: cbmvax!valentin@uunet.uu.net X X - Ancient Chinese Proverb Claimer: I not Commodore spokesman be X END_OF_FILE if test 7059 -ne `wc -c <'resetcode.txt'`; then echo shar: \"'resetcode.txt'\" unpacked with wrong size! fi # end of 'resetcode.txt' fi if test -f 'resetcode.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'resetcode.uu'\" else echo shar: Extracting \"'resetcode.uu'\" \(541 characters\) sed "s/^X//" >'resetcode.uu' <<'END_OF_FILE' Xbegin 666 resetcode.txt.info XMXQ```0``````_P"4`"``'``%``,``0#`?7``````````````````````````Y XM````!,,`P%+@`,![J(````"````````````````````````````@`!P``@`!; XM9<`#````````````!___^`?___@&$)(8!S.3.``]MZ XMY@#,;,8`SSC&`,QLQ@#/;,8````&`___]@````8``(!&``$,A@`#,L8`!'0`E X`` Xend Xsize 354 END_OF_FILE if test 541 -ne `wc -c <'resetcode.uu'`; then echo shar: \"'resetcode.uu'\" unpacked with wrong size! fi # end of 'resetcode.uu' fi echo shar: End of archive 1 \(of 1\). cp /dev/null ark1isdone MISSING="" for I in 1 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have the archive. rm -f ark[1-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0 -- Mail submissions (sources or binaries) to . Mail comments to the moderator at . Post requests for sources, and general discussion to comp.sys.amiga.