[comp.sources.amiga] v90i279: Kill2090 - reboot, toggle ntsc/pal mode and disable autoconf boards, Part01/01

amiga-request@abcfd20.larc.nasa.gov (Amiga Sources/Binaries Moderator) (10/15/90)

Submitted-by: "John Davis,chem dept, UoC NZ" <CHEM194@canterbury.ac.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 <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 1)."
# Contents:  kill2090.doc kill2090.s kill2090.s.uu kill2090.uu
#   kill20900.uu kill20901.uu kill20902.uu kill20903.uu reset.ntsc.uu
#   reset.ntsc0.uu reset.pal.uu reset.pal0.uu resetcode.txt
#   resetcode.uu
# Wrapped by tadguy@abcfd20 on Sun Oct 14 14:24:12 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'kill2090.doc' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'kill2090.doc'\"
else
echo shar: Extracting \"'kill2090.doc'\" \(6127 characters\)
sed "s/^X//" >'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.`<PQS@',Y,X!S"3.`?___@$E
XM```(!___^`?_?[@'_O-X!_S-.`?Z,M@'_W^X!][S>`<DS3@/FC+8#WO]^`[WY
XMF_@9)FGX'-&6^#____A____X#___^````````````````````````````>]MZ
XMY@#,;,8`SSC&`,QLQ@#/;,8````&`___]@````8``(!&``$,A@`#,L8`!<TF_
XM``"`1@`A#(8`VS+&`&7-+@"$`@X!"&0.!MF6'@,N:1X````^````_@____X#0
XG___^``````````9C.F-E9``````(````#D9)3$5465!%/51E>'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.`<PQS@',Y,X!S"3.`?___@$E
XM```(!___^`?_?[@'_O-X!_S-.`?Z,M@'_W^X!][S>`<DS3@/FC+8#WO]^`[WY
XMF_@9)FGX'-&6^#____A____X#___^````````````````````````````>]MZ
XMY@#,;,8`SSC&`,QLQ@#/;,8````&`___]@````8``(!&``$,A@`#,L8`!<TF_
XM``"`1@`A#(8`VS+&`&7-+@"$`@X!"&0.!MF6'@,N:1X````^````_@____X#0
XG___^``````````9C.F-E9``````(````#D9)3$5465!%/51E>'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<C__$9!/4$`4DYU,_P/B@#?\8`S_````-_QW"`\````"0AYQ
XM``$`O^`!(CP``/__4<G__E'(_^PB/`````<P.0#H``A&0`@```YG```6,_P`>
XM``#H`$HS_"```.@`2&````H3_`#_`.@`3%')_]).U0``````````:6YT=6ET(
XM:6]N+FQI8G)A<GD```$```!&``8````````!_@```<(``0```",`#P``````K
XM``(E``````(!````!``$`````````E0``````@$````$``0````````":P```
XM``!+:6QL,C`Y,"!B>2!*($1A=FES+"`P."TQ.3DP('8Q+C`@3E130P!!8F]U+
XM="!T;R!K:6QL('-Y<W1E;2P@9FEN:7-H($%,3"!D:7-K(&%C=&EV:71Y`$=O<
XM(&%H96%D+"!M86ME(&UY(&1A>2$`3F\L($D@=V%S(&IU<W0@:VED9&EN9R$``
XM`````^P````0`````````"P````V````/````%H```!@````9@```)X```"X3
XH````R@```-8```$.```!N@```;X```'.```!X@```?8````````#\IX`E
X``
Xend
Xsize 760
END_OF_FILE
if test 1107 -ne `wc -c <'kill20900.uu'`; then
    echo shar: \"'kill20900.uu'\" unpacked with wrong size!
fi
# end of 'kill20900.uu'
fi
if test -f 'kill20901.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'kill20901.uu'\"
else
echo shar: Extracting \"'kill20901.uu'\" \(1660 characters\)
sed "s/^X//" >'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$<!______\``````````````````````````````````````L
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````"T`*P`"``'%0`,`C
XM``````````````````````````````!^'/@````3"$P````1"$0````1"$0`S
XM```3"$P````>"'@````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<C__$9!/4$`4DYU,_P/B@#?\8`S_``@`-_QW"`\````"0AY1
XM``$`O^`!(CP``/__4<G__E'(_^PB/`````<P.0#H``A&0`@```YG```6,_P`>
XM``#H`$HS_"```.@`2&````H3_`#_`.@`3%')_]).U0``````````:6YT=6ET(
XM:6]N+FQI8G)A<GD```$```!&``8````````!_@```<(``0```",`#P``````K
XM``(E``````(!````!``$`````````E0``````@$````$``0````````":P```
XM``!+:6QL,C`Y,"!B>2!*($1A=FES+"`P."TQ.3DP('8Q+C`@4$%,(`!!8F]U0
XM="!T;R!K:6QL('-Y<W1E;2P@9FEN:7-H($%,3"!D:7-K(&%C=&EV:71Y`$=O<
XM(&%H96%D+"!M86ME(&UY(&1A>2$`3F\L($D@=V%S(&IU<W0@:VED9&EN9R$``
XM`````^P````0`````````"P````V````/````%H```!@````9@```)X```"X3
XH````R@```-8```$.```!N@```;X```'.```!X@```?8````````#\IX`E
X``
Xend
Xsize 760
END_OF_FILE
if test 1106 -ne `wc -c <'kill20902.uu'`; then
    echo shar: \"'kill20902.uu'\" unpacked with wrong size!
fi
# end of 'kill20902.uu'
fi
if test -f 'kill20903.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'kill20903.uu'\"
else
echo shar: Extracting \"'kill20903.uu'\" \(1659 characters\)
sed "s/^X//" >'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$<!______\``````````````````````````````````````L
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````"T`*P`"``(FV`,`=
XM``````````````````````````````!^'/@````3"$P````1"$0````1"$0`S
XM```3"$P````>"'@````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``-)84<C__$9!/4$`4DYU,_P/B@#?\8`S_````-_QW"`\````"0AYQ
XM``$`O^`!(CP``/__4<G__E'(_^Q.U0``````````:6YT=6ET:6]N+FQI8G)A6
XM<GD```$```!&``8````````!R````8P``0```",`#P````````'M``````(!R
XM````!``$`````````AP``````@$````$``0````````",P`````@4F5S970@I
XM8GD@2B!$879I<RP@,#@M,3DY,"!V,2XP($Y44T,`06)O=70@=&\@:VEL;"!SJ
XM>7-T96TL(&9I;FES:"!!3$P@9&ES:R!A8W1I=FET>0!';R!A:&5A9"P@;6%K>
XM92!M>2!D87DA`$YO+"!)('=A<R!J=7-T(&MI9&1I;F<A``````/L````$```G
XM```````L````-@```#P```!:````8````&8```">````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``-)84<C__$9!/4$`4DYU,_P/B@#?\8`S_``@`-_QW"`\````"0AY1
XM``$`O^`!(CP``/__4<G__E'(_^Q.U0``````````:6YT=6ET:6]N+FQI8G)A6
XM<GD```$```!&``8````````!R````8P``0```",`#P````````'M``````(!R
XM````!``$`````````AP``````@$````$``0````````",P`````@4F5S970@I
XM8GD@2B!$879I<RP@,#@M,3DY,"!V,2XP(%!!3"``06)O=70@=&\@:VEL;"!SO
XM>7-T96TL(&9I;FES:"!!3$P@9&ES:R!A8W1I=FET>0!';R!A:&5A9"P@;6%K>
XM92!M>2!D87DA`$YO+"!)('=A<R!J=7-T(&MI9&1I;F<A``````/L````$```G
XM```````L````-@```#P```!:````8````&8```">````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.`<PQS@',Y,X!S"3.`?___@$E
XM```(!___^`?_?[@'_O-X!_S-.`?Z,M@'_W^X!][S>`<DS3@/FC+8#WO]^`[WY
XMF_@9)FGX'-&6^#____A____X#___^````````````````````````````>]MZ
XMY@#,;,8`SSC&`,QLQ@#/;,8````&`___]@````8``(!&``$,A@`#,L8`!<TF_
XM``"`1@`A#(8`VS+&`&7-+@"$`@X!"&0.!MF6'@,N:1X````^````_@____X#0
XG___^``````````9C.F-E9``````(````#D9)3$5465!%/51E>'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 <amiga@uunet.uu.net>.
Mail comments to the moderator at <amiga-request@uunet.uu.net>.
Post requests for sources, and general discussion to comp.sys.amiga.