home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The CDPD Public Domain Collection for CDTV 2
/
CDPD_II_2352.bin
/
scope
/
151-175
/
scopedisk165
/
merge
/
merge.doc
< prev
next >
Wrap
Text File
|
1992-10-27
|
4KB
|
97 lines
Merge
Copyright © 1990 by Kevin Kelm
SHAREWARE $5
GENERAL
Merge is a utility for all you programmers out there that want to
integrate data files with your executables. Merge even lets you chose to
put the data into chip memory.
If you find this program useful, please consider dropping $5 in the
mail at the address below.
FORMAT
The command-line form at of Merge is:
1> Merge <program> <datafile> <outfile> <$LONG_ID> [CHIP]
where...
<program> is the filename of your program executable.
<datafile> is the filename of the data you want to include. This file
will be included, VERBATIM.
<outfile> is the output, executable filename.
<$LONG_ID> is any HEXADECIMAL longword identifier ... this is the long
word that you will search the hunk table for... more on
this later. I typically use a value that I *know* will
not be found at the beginning of any other hunk... 4B454C4D
= "KELM". This value ***MUST*** be unique!
[CHIP] is an optional word that you may include to specify that
you want the data to end up in CHIP memory.
IMPLEMENTATION DETAILS
Ok, now the fun. Anybody out there using Benchmark Modula-2 is all
set... all you need to do is call FindImageTable from the Images library
module FindImages, and the ImageDescriptionTablePtr returned will be a
pointer to your data hunk, rather than a pointer to an image description
table. More on this later (see step 4).
For programmers using other systems, I can only make the following
recomendations on how to find your data when the program is running.
1) Get the address of the segment list for your process. This CAN be
more complex than it might seem.
2) Scan through this list, looking for the first memory block that
has as its first longword the <$LONG_ID> you are searching for.
3) Once you find this value, you've found your data. The longword
immediately following the <$LONG_ID> will be a 1. Ignore this; your data
officially begins at beginning_of_hunk+8;
4) The structure of your data is as follows: The first longword
represents the size, in bytes, of the data block. The very next longword
is the first longword of your data.
SUMMARY
Personally, I am somewhat wary of putting too much executable data in
CHIP memory... past experience tells me that memory can get badly
fragmented. But this CAN be a useful feature; my first commercial video
game contained all imagery for game play within the executable using just
this technique.
Well, enjoy! I hope you get good use out of merge. If for any
bizarre reason you need to contact me, I can be reached as:
Kevin Kelm
7080 Roaring Springs Avenue
Fountain, CO 80817
(719)392-1023
-or-
CIS: 71071,2726
-or-
USENET: Try and catch me on comp.sys.amiga or comp.sys.amiga.tech !
Some of my other releases:
T.A.C.L. The Adventure Construction Language COMMERCIAL
T.A.C.L. Game demos Fred Fish 300
Boing! The Game COMMERCIAL
Boing! The Game demo Fred Fish 337(?)
Super Echo 1.0 Fred Fish 300
TitleGen 1.6 Fred Fish 300
NeuralLab 1.0 ????
XenoZap virus killer ????
Visionary Aegis, Nov. 1990