[comp.sources.amiga] v90i001: MakeFastMem 1.0 - change chipmem into fastmem, Part01/01

Amiga-Request@cs.odu.edu (Amiga Sources/Binaries Moderator) (01/15/90)

Submitted-by: ludde@nada.kth.se (Erik Lundevall)
Posting-number: Volume 90, Issue 001
Archive-name: kernel/makefastmem-1.0

MakeFastMem is a program that changes the attributes of a chunk of chipmem
to fastmem, so that programs that requires fastmem can run. The program is
runnable both from CLI and Workbench, source in assembler included.

[ uuencoded executable included  ...tad ]

#! /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:  MakeFastMem.asm MakeFastMem.doc MakeFastMem.info.uu
#   MakeFastMem.uu
# Wrapped by tadguy@xanth on Sun Jan 14 16:06:42 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'MakeFastMem.asm' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'MakeFastMem.asm'\"
else
echo shar: Extracting \"'MakeFastMem.asm'\" \(14078 characters\)
sed "s/^X//" >'MakeFastMem.asm' <<'END_OF_FILE'
X                OPT L-,C+,D-,O+         ; Devpac Amiga stuff, skip this
X                                        ; for other assemblers
X
X*  MakeFastMem v1.0    891028      E. Lundevall
X*
X*  A little program to provide folks with only chipmem some "fastmem"
X*  for programs that require fastmem (what's the point with that?!?).
X*
X
X                INCDIR  Assembler:include/
X;                INCLUDE mymacros.i  ; You don't have this one
X                INCLUDE exec/exec_lib.i           ; Library offsets in
X		INCLUDE	intuition/intuition_lib.i ; those four files
X                INCLUDE libraries/dos_lib.i 
X		INCLUDE workbench/icon_lib.i
X                INCLUDE exec/execbase.i
X		INCLUDE exec/alerts.i
X		INCLUDE exec/tasks.i
X                INCLUDE exec/memory.i
X		INCLUDE	intuition/intuition.i
X		INCLUDE libraries/dosextens.i
X		INCLUDE workbench/startup.i
X		INCLUDE workbench/workbench.i
X
X
X; Necessary macros from "mymacros.i"
X
X
Xjsrb        	MACRO
X            	jsr     _LVO\1(a6)
X            	XREF.L  _LVO\1
X            	ENDM
X
X
Xpush        	MACRO
X            	movem.\0 \1,-(sp)
X            	ENDM
X
Xpop         	MACRO
X            	movem.\0 (sp)+,\1
X            	ENDM
X
Xopenlib         MACRO
X                lea     \1,a1
X                move.l  \2,d0
X                jsrb    OpenLibrary
X                ENDM
X
X
X; Some symbol definitions
X
XVERSION		EQU	33	; Use only v1.2 och higher
XREQHEIGHT	EQU	80	; Height of the error requester
XREQWIDTH	EQU	300	; Width of the error requester
X
X
XMakeFastMem     movea.l 4,a6
X		push.l  d0/a0	; Save d0 & a0 in case we are run from the CLI
X		suba.l	a1,a1	
X		jsrb	FindTask ; Find the address to our own process
X		movea.l	d0,a4
X		pop.l	d0/a0
X		tst.l	pr_CLI(a4) ; Check if we are running from the CLI
X		beq	fromWB
X
X
X********************** Code for CLI part *********************************
X
XfromCLI		subq.l  #1,d0	; Decrement argument length to strip LF
X                beq     usage	; No argument given, tell user how to use us
X                move.b  #0,0(a0,d0.l) ; Make argument string NULL-terminated
X                bsr     asctodec ; Convert string to binary value
X                bmi     usage	; Not a positive number, display usage
X                bsr	CreateFast ; Do the real work
X		tst.l	d0	
X		bne	.nosuccess ; Yack, something went wrong...
X
X                lea     okmess(pc),a0   ; We did it! Bring the news to
X                moveq   #okmesslen,d0   ; the world!
X                bra     WriteMess
X
X.nosuccess      lea     errmess(pc),a0  ; Hey, who stole the memory...;-)
X                moveq   #errmesslen,d0
X                bsr     WriteMess
X		tst.l	d0		; Did we succeed in writing message?
X		bne.s	.nodos
X		moveq	#10,d0
X.nodos		rts
X
X
Xusage           lea     usemess(pc),a0      ; Write the usage message
X                moveq   #usemesslen,d0
X                bra     WriteMess
X
X
X
X********************** Code for Workbench part *****************************
X
XfromWB		lea	pr_MsgPort(a4),a0	; Wait for WB startup message
X		jsrb	WaitPort
X		lea	pr_MsgPort(a4),a0	; Get the message...
X		jsrb	GetMsg
X		push.l	d0			; ...and save it for later use
X
X		movea.l	d0,a0
X		movea.l	sm_ArgList(a0),a1	; Get the first argument:
X		move.l	wa_Name(a1),-(sp)	; Name of program
X		move.l	wa_Lock(a1),-(sp)	; Lock to directory of program
X
X		openlib	dosname,#VERSION	; Open dos.library
X		tst.l	d0
X		beq	nodos			; Hey, where's DOS??!?
X
X		movea.l	d0,a6			; Change current directory to
X		pop.l	d1			; the directory of our program
X		jsrb	CurrentDir
X
X		movea.l	a6,a1			; Close dos.library
X		movea.l	4,a6
X		jsrb	CloseLibrary
X	
XOpenIconLib	openlib	iconname,#VERSION	; Open icon.library
X		tst.l	d0
X		beq	noiconlib
X
X		movea.l	d0,a6			; Get the icon for our program
X		pop.l	a0
X		jsrb	GetDiskObject
X		tst.l	d0
X		beq	noobj
X
X		move.l	d0,d7			; Put away address to DiskObject
X		movea.l	d0,a0
X		movea.l	do_ToolTypes(a0),a0
X		lea	tooltype(pc),a1		; Search for ToolType 'FASTMEM'
X		jsrb	FindToolType
X		tst.l	d0
X		beq	notooltype
X
X		movea.l	d0,a0
X		movea.l	a0,a1		; Calculate the length of the string
X		moveq	#-1,d0
X.strlen		addq.l	#1,d0
X		tst.b	0(a1,d0.l)
X		bne.s	.strlen
X		bsr	asctodec 	; Convert ASCII string to binary value
X		bmi	nomemsize
X
X		push.l	d0		; Save memory size
X		bsr	FreeDO	        ; Release the DiskObject
X		bsr	CloseIconLib	; Ok, now close icon.libary
X		pop.l	d0
X		bsr	CreateFast	; Do the real work
X		tst.l	d0
X		beq	exitWB		; Yeah, we did it!
X		
X
X*		
X* Some error conditions, show an error requester
X*
X
Xnocreatefast	lea	wberrmess(pc),a0
X		bsr	ShowRequest
X		bra	goodbye
X
Xnoiconlib	lea	noiconlibmess(pc),a0	; No icon.library available
X		bsr	ShowRequest
X		bra	goodbye
X
Xnodos		ALERT	(AG_OpenLib!AO_DOSLib)	; Hey, no dos.libary!!
X		bra	goodbye			; This is NOT good...
X
Xnoobj		bsr	CloseIconLib		; No icon for our program
X		lea	noobjmess(pc),a0
X		bsr	ShowRequest
X		bra	goodbye
X
Xnotooltype	bsr	FreeDO			; No FASTMEM tooltype
X		bsr	CloseIconLib
X		lea	notooltypemess(pc),a0
X		bsr	ShowRequest
X		bra	goodbye
X
Xnomemsize	bsr	FreeDO			; Release icon
X		bsr	CloseIconLib		; Incorrect value for the
X		lea	nomemsizemess(pc),a0	; FASTMEM tooltype
X		bsr	ShowRequest
X
Xgoodbye		moveq	#100,d0
X		bra	exitWB
X
X**** Close icon.library *****
X
XCloseIconLib    movea.l	a6,a1		
X		movea.l	4,a6
X		jsrb	CloseLibrary
X		rts
X
X
X**** Exit from Workbench *****
X
XexitWB		jsrb	Forbid		; Disable multitasking so that WB
X		pop.l	a1		; won't unload us before we're ready
X		jsrb	ReplyMsg	; Get the original WB startup message
X		rts			; and reply to it, then exit
X		
X
X
X
X*****************************************************************************
X* FreeDO - Do a FreeDiskObject
X*	Input:  d7 - address to DiskObject
X*		a6 - address to IconBase
X*	Result: None
X*****************************************************************************
X
XFreeDO		movea.l	d7,a0			; Release the allocated
X		jsrb	FreeDiskObject		; resources for the icon
X		rts
X
X
X
X***************************************************************************
X* ShowRequest - display a requester with an error message
X*	Input:  a0 - address to an IntuiText
X*		a6 - address to ExecBase
X*	Result: None
X***************************************************************************
X
XShowRequest	push.l	d2/d3/a2/a3
X		push.l	a0		
X		openlib	intuiname(pc),#VERSION
X		pop.l	a0
X		tst.l	d0
X		beq	.nointui
X
X		movea.l	d0,a6
X		movea.l	a0,a1
X		suba.l	a0,a0
X		lea	darnmess(pc),a2
X		movea.l	a2,a3
X		moveq	#0,d0
X		moveq	#0,d1
X		move.l	#REQHEIGHT,d3
X		move.l	#REQWIDTH,d2
X		jsrb	AutoRequest
X		push.l	d0
X		movea.l	a6,a1
X		movea.l	4,a6
X		jsrb	CloseLibrary
X		pop.l	d0
X.nointui	pop.l	d2/d3/a2/a3
X		rts
X
X
X
X
X****************************************************************************
X* CreateFast - Allocate a chunk of CHIPRAM and convert it to FASTRAM
X*	Input:	d0 - Size of the wanted FASTRAM chunk.
X*		a6 - pointer to ExecBase
X*	Result: d0 - NULL if successfull
X****************************************************************************
X
XCreateFast      push.l	d2-d3
X		addq.l	#8,d0	; Adjust size for the mem chunk header
X		move.l  d0,d3   ; Allocate the "fast" memory
X                move.l  #MEMF_CHIP+MEMF_PUBLIC+MEMF_CLEAR,d1
X                jsrb    AllocMem
X                move.l  d0,d2
X                beq     .error1
X
X                move.l  #MH_SIZE,d0     ; Allocate space for a MemHeader
X                move.l  #MEMF_CLEAR+MEMF_PUBLIC,d1
X                jsrb    AllocMem
X                tst.l   d0
X                beq     .error2
X
X                lea     MakeFastMem(pc),a0  ; Disconnect the DATA hunk
X                moveq   #0,d1               ; This is for the name field
X                move.l  d1,-4(a0)           ; of the MemHeader.
X
X                move.l  d0,a1
X                move.l  d2,MH_FIRST(a1) ; Use the first 8 bytes in the "fast"
X                movea.l d2,a0           ; memory for a MemChunk
X                addq.l  #8,d2
X                move.l  d2,MH_LOWER(a1) ; Init the MemHeader as fastmem
X                move.w  #MEMF_FAST+MEMF_PUBLIC,MH_ATTRIBUTES(a1)
X                                        ; We have made one big chunk
X                subq.l  #8,d3           ; Subtract the MemChunk size and
X                move.l  d3,MC_BYTES(a0) ; store the actual free size
X                move.l  d3,MH_FREE(a1)
X                add.l   d2,d3           ; Add size and lower address to get
X                move.l  d3,MH_UPPER(a1) ; the upper bound
X                moveq   #NT_MEMORY,d0   ; Store the node type
X                move.b  d0,LN_TYPE(a1)
X                lea     name,a0
X                move.l  a0,LN_NAME(a1)  ; Store the address to the name
X
X                push.l  a1
X                jsrb    Disable         ; Want to mess around by myself
X                pop.l   a1
X                lea     MemList(a6),a0  ; Add our memory node to the
X                ADDHEAD                 ; MemList in ExecBase
X                jsrb    Enable          ; Ok, let the others play
X
X		moveq	#0,d0		; We were successful, return 0 to
X		bra.s	.fastfixed	; to say it's ok.
X
X.error2         movea.l d0,a1           ; Trouble allocating memory, free
X                move.l  d3,d0           ; the stuff we already have
X                swap    d0              ; allocated
X                jsrb    FreeMem
X
X.error1  	moveq	#-1,d0		; Error, return -1 to say it's not ok.
X.fastfixed	pop.l	d2-d3
X		rts
X
X
X
X*****************************************************************************
X* WriteMess - Write a message to the CLI Window.
X*             Input:    a0 - pointer to message
X*                       d0 - length of message
X*			a6 - pointer to ExecBase
X*             Result:	d0 - NULL if successful
X*****************************************************************************
X 
XWriteMess       push.l	d2-d3
X		move.l	d0,d3
X		push.l	a0
X                lea     dosname(pc),a1
X                jsrb    OldOpenLibrary  ; Open dos.library, any version
X                tst.l   d0
X                beq.s   .nomess
X
X                movea.l d0,a6
X                jsrb    Output          ; Write the appropriate message
X                move.l  d0,d1           ; in the CLI-window we were run
X                pop.l	d2	        ; from.
X                jsrb    Write
X		pop.l	d2-d3
X		movea.l	a6,a1
X		movea.l	4,a6
X		jsrb	CloseLibrary	; Close dos.library
X		moveq	#0,d0
X.exitwrite   	rts
X
X
X.nomess		ALERT	(AG_OpenLib!AO_DOSLib)	; No dos.library available!!!
X		moveq	#100,d0			; This is REAL bad...
X		bra	.exitwrite		
X
X
X
X
X
X
X*****************************************************************************
X* asctodec - Convert an ASCII string (NULL-terminated) to a binary value
X*	Input:	a0 - pointer to ASCII string
X*		d0 - length of string
X*	Result: d0 - Binary value
X*****************************************************************************
X
Xasctodec        push.l	d2
X		move.l  d0,d2
X                subq.l  #1,d2               ; We will use nr of characters as an
X                lsl.l   #2,d2               ; offset
X                moveq   #0,d1
X                move.l  d1,d0
X                lea     .Numbers(pc),a1     ; Get base address of offset table
X.loop1          move.b  (a0)+,d1
X                beq     .finished
X                subi.b  #$31,d1
X                bmi     .zero
X                cmpi.b  #NumBase-1,d1
X                bcs     .loop2
X                moveq   #-1,d0
X                bra     .finished
X.loop2          add.l   0(a1,d2.w),d0       ; Add value in table d1 times to d0.
X                dbra    d1,.loop2
X                moveq   #0,d1
X.zero           subq.w  #4,d2
X                bra     .loop1
X.finished       pop.l	d2
X		rts
X
XNumBase         EQU     10
X.Numbers        dc.l    1,10,100,1000,10000,100000,1000000,10000000,100000000
X
X
X
X
X
X****************** Some text & messages definitions ************************
X
Xdosname         dc.b    'dos.library',0
Xiconname	dc.b	'icon.library',0
X		CNOP	0,2
Xintuiname	dc.b	'intuition.library',0
X		CNOP	0,2
Xtooltype	dc.b	'FASTMEM',0
X		CNOP	0,2
Xerrmess         dc.b    'P-p-p-pleeeaase... I need more memory!',10,0
Xerrmesslen      EQU     *-errmess
X                CNOP    0,2
Xokmess          dc.b    'FastMem created!',10,0
Xokmesslen       EQU     *-okmess
X                CNOP    0,2
Xusemess         dc.b    'Usage: MakeFastMem  fastmemsize',10,0
Xusemesslen      EQU     *-usemess
X		CNOP	0,2
Xdarntext	dc.b	'Darn!',0
X		CNOP	0,2
Xnoobjtext	dc.b	'No icon available',0
X		CNOP	0,2
Xnoiconlibtext	dc.b	'No icon.library',0,0
X		CNOP	0,2
Xnotooltypetext	dc.b	'No FASTMEM ToolType',0	
X		CNOP	0,2
Xnomemsizetext	dc.b	'Error in FASTMEM value',0		
X		CNOP	0,2
Xwberrtext	dc.b	'Not Enough ChipRAM',0
X		CNOP	0,2
X
X*********** IntuiText structures for the error requester messages **********
X
Xnoiconlibmess   dc.b    0,1       
X                dc.b    RP_JAM1,0 
X                dc.w    75,20       
X                dc.l    0         
X                dc.l    noiconlibtext
X                dc.l    0          
X
Xnotooltypemess  dc.b    0,1       
X                dc.b    RP_JAM1,0 
X                dc.w    60,20       
X                dc.l    0         
X                dc.l    notooltypetext
X                dc.l    0          
X
Xnomemsizemess   dc.b    0,1       
X                dc.b    RP_JAM1,0 
X                dc.w    52,20       
X                dc.l    0         
X                dc.l    nomemsizetext
X                dc.l    0          
X
Xnoobjmess       dc.b    0,1       
X                dc.b    RP_JAM1,0 
X                dc.w    60,20       
X                dc.l    0         
X                dc.l    noobjtext
X                dc.l    0          
X
Xwberrmess       dc.b    0,1       
X                dc.b    RP_JAM1,0 
X                dc.w    68,20       
X                dc.l    0         
X                dc.l    wberrtext
X                dc.l    0          
X
Xdarnmess        dc.b    0,1             ; it_FrontPen, it_BackPen
X                dc.b    RP_JAM1,0       ; it_DrawMode, it_KludgeFill00
X                dc.w    6,3             ; it_LeftEdge, it_TopEdge
X                dc.l    0               ; it_ITextFont
X                dc.l    darntext        ; it_IText
X                dc.l    0               ; it_NextText
X
X
X
X                SECTION foo,DATA
Xname            dc.b    'expansion ram',0
X                END
X
END_OF_FILE
if test 14078 -ne `wc -c <'MakeFastMem.asm'`; then
    echo shar: \"'MakeFastMem.asm'\" unpacked with wrong size!
fi
# end of 'MakeFastMem.asm'
fi
if test -f 'MakeFastMem.doc' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'MakeFastMem.doc'\"
else
echo shar: Extracting \"'MakeFastMem.doc'\" \(1553 characters\)
sed "s/^X//" >'MakeFastMem.doc' <<'END_OF_FILE'
X
X
X			MakeFastMem	v1.0
X			====================
X
XMakeFastMem is a little program that changes a chunk of ChipRAM to FastRAM.
XAt least the OS is fooled to believe that. The reason for doing this is 
Xbecause some people (programmers) believs that they MUST ask for FastRAM, and
Xbelieve that the user always has that.
XThat is really stupid, and has caused problems for a number of people with
X1 Mb ChipRAM for example.
X
XThe program can be used both from the CLI and the Workbench. From CLI you
Xstart MakeFastMem by simply writing:
X
XMakeFastMem  <size>
X
Xwhere <size> is the size of the FastRAM chunk you want, in bytes. For
Xexample, "MakeFastMem 307200" will create 300 Kb of "FastRAM" (and you lose
X300 Kb of ChipRAM of course).
X
XFrom the Workbench you just double-click on the MakeFastMem icon and the
Xmemory will be changed from ChipRAM to FastRAM. You have to specify the size
Xof the FastRAM in the ToolTypes-field, by setting FASTMEM to the size you
Xwant. For example, setting the tooltype to:
X
XFASTMEM=307200
X
Xwill make MakeFastMem to create 300 Kb of FastRAM when you double-click on
Xits icon.
XOnce you have changed some chipmem to "fastmem" it will stay that way until 
Xyou reboot (or writes a hack to reclaim it).
X
XThis code is released in the Public Domain, feel free to modify and improve
Xit if you want, especially the terrible icon... 
X
X
X
X-Erik Lundevall  Internet: ludde@nada.kth.se
X                 Camelot:  Erik Lundevall Sysop (+46-8-348523) 300-2400 bps
X                 SnailMail: Korsbarsvagen 4B/422, S-114 23 STOCKHOLM, SWEDEN
X
X
X
X
X
X
X
X
X
END_OF_FILE
if test 1553 -ne `wc -c <'MakeFastMem.doc'`; then
    echo shar: \"'MakeFastMem.doc'\" unpacked with wrong size!
fi
# end of 'MakeFastMem.doc'
fi
if test -f 'MakeFastMem.info.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'MakeFastMem.info.uu'\"
else
echo shar: Extracting \"'MakeFastMem.info.uu'\" \(1477 characters\)
sed "s/^X//" >'MakeFastMem.info.uu' <<'END_OF_FILE'
Xbegin 664 MakeFastMem.info
XMXQ```0``````&@`+`%``%P`&``,``0`@#`@`(`Q0````````````````````Z
XM`````_X``````"`#2`````@```````````````````````````!0`!8``@`!=
XM8M@#``````#_________________________________________________8
XM____________________________________________________________3
XM_S><^'C?______YSG/GYS______\__SY_\_______/^,^?@?______[_G/GY_
XM________\YS__________P><X'!_________________________________;
XM____________________________________________________________3
XM____________________________________________________________3
XM_________________________________________!YS@<!_______D&$.!@Z
XM'______R<A#AX0______\/X`X>!/______#^`.'@'______XSA#AX?______S
XM_!(0@<'_______\'G.!P?_______________________________________O
XM_________________________________________________________P``5
XM````4``6``(``620`P``````____________________________________%
XM____________________________________________________________3
XM______________^-__CYE_______N?W_F[?________G]_^_______^'_OW_=
XMO_______O\/_W[_________??Y________X/GG@^'___________________]
XM____________________________________________________________3
XM____________________________________________________________3
XM______________________________________________________P#Y_!P>
XM#______^`</@,`?______CG!XYHW______X/@?#^/______^!X#\/C______Y
XM_C\`YQX_______P?''`</______^#YYX/A__________________________H
XM____________________________________________________________3
X?__________\````(````#T9!4U1-14T],3`R-#`P`/__^
X``
Xend
Xsize 1021
END_OF_FILE
if test 1477 -ne `wc -c <'MakeFastMem.info.uu'`; then
    echo shar: \"'MakeFastMem.info.uu'\" unpacked with wrong size!
fi
# end of 'MakeFastMem.info.uu'
fi
if test -f 'MakeFastMem.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'MakeFastMem.uu'\"
else
echo shar: Extracting \"'MakeFastMem.uu'\" \(1913 characters\)
sed "s/^X//" >'MakeFastMem.uu' <<'END_OF_FILE'
Xbegin 664 MakeFastMem
XM```#\P`````````"``````````$```$N````!````^D```$N+'@`!$CG@("3Q
XMR4ZN_MHH0$S?`0%*K`"L9P``1E.`9P``-A&\```(`&$``K1K```H80`!NDJ`6
XM9@``#$'Z`V1P$F```DI!^@,R<"AA``)`2H!F`G`*3G5!^@-:<"%@``(N0>P`"
XM7$ZN_H!![`!<3J[^C$CG@``@0")H`"0O*0`$+Q%#^0```T1P(4ZN_=A*@&<`4
XM`)8L0$S?``).KO^"(DXL>``$3J[^8D/Y```#4'`A3J[]V$J`9P``9"Q`3-\!^
XM`$ZN_[)*@&<``'HN`"!`(&@`-D/Z`IY.KO^@2H!G``!T($`B2'#_4H!*,0@`/
XM9OAA``'P:P``<DCG@`!A``":80``?$S?``%A``#F2H!G``!Z0?H#?F$``(A@W
XM``!<0?H#(F$``'Q@``!02.<!!BX\``.`!RQX``1.KO^43-]@@&```#9A```XD
XM0?H#-&$``%)@```F80``0F$``"1!^@+X80``/F```!)A```N80``$$'Z`OAAO
XM```J<&1@```.(DXL>``$3J[^8DYU3J[_?$S?`@!.KOZ&3G4@1TZN_Z9.=4CG$
XM,#!(YP"`0_H!N'`A3J[]V$S?`0!*@&<``#`L0")(D<A%^@+B)DIP`'(`=E`D"
XM/````2Q.KOZD2.>``").+'@`!$ZN_F),WP`!3-\,#$YU2.<P`%"`)@`B/``!0
XM``-.KO\Z)`!G``""<"`B/``!``%.KO\Z2H!G``!F0?K]Z'(`(4'__")`(T(`W
XM$"!"4((C0@`4,WP`!0`.48,A0P`$(T,`'-:"(T,`&'`*$T``"$'Y`````"-(-
XM``I(YP!`3J[_B$S?`@!![@%"(!`@B4C1`0$@0"%)``1.KO^"<`!@#")`(`-(#
XM0$ZN_RYP_TS?``Q.=4CG,``F`$CG`(!#^@"L3J[^:$J`9R(L0$ZN_\0B`$S?<
XM``1.KO_03-\`#").+'@`!$ZN_F)P`$YU2.<!!BX\``.`!RQX``1.KO^43-]@9
XM@'!D8.1(YR``)`!3@N6*<@`@`4/Z`#(2&&<``"8$`0`Q:P``&@P!``EE```(&
XM</]@```0T+$@`%')__IR`%E"8-9,WP`$3G4````!````"@```&0```/H```G)
XM$``!AJ``#T)``)B6@`7UX0!D;W,N;&EB<F%R>0!I8V]N+FQI8G)A<GD``&EN=
XM='5I=&EO;BYL:6)R87)Y`$9!4U1-14T`4"UP+7`M<&QE965A87-E+BXN($D@K
XM;F5E9"!M;W)E(&UE;6]R>2$*`$9A<W1-96T@8W)E871E9"$*`%5S86=E.B!-_
XM86ME1F%S=$UE;2`@9F%S=&UE;7-I>F4*``!$87)N(0!.;R!I8V]N(&%V86ELI
XM86)L90!.;R!I8V]N+FQI8G)A<GD```!.;R!&05-4345-(%1O;VQ4>7!E`$5R^
XM<F]R(&EN($9!4U1-14T@=F%L=64``$YO="!%;F]U9V@@0VAI<%)!30````$`P
XM``!+`!0````````#[````````0```#P`%`````````/^```````!````-``4I
XM````````!!(```````$````\`!0````````#V@```````0```$0`%```````=
XM``0J```````!````!@`#`````````]0```````````/L````"`````````""(
XM````J```!$H```1>```$<@``!(8```2:```$K@````$````!```"3```````X
X?``/R```#Z@````1E>'!A;G-I;VX@<F%M```````#\@$`1
X``
Xend
Xsize 1336
END_OF_FILE
if test 1913 -ne `wc -c <'MakeFastMem.uu'`; then
    echo shar: \"'MakeFastMem.uu'\" unpacked with wrong size!
fi
# end of 'MakeFastMem.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
-- 
Submissions to comp.sources.amiga and comp.binaries.amiga should be sent to:
	amiga@cs.odu.edu	
or	amiga@xanth.cs.odu.edu	( obsolescent mailers may need this address )
or	...!uunet!xanth!amiga	( very obsolescent mailers need this address )

Comments, questions, and suggestions s should be addressed to ``amiga-request''
(only use ``amiga'' for submissions) at the above addresses.