Initial revision
[ssr] / StraySrc / Libraries / Sapphire / csapph / h / chunk
CommitLineData
2ee739cc 1/*
2 * chunk.h
3 *
4 * [Generated from chunk, 25 September 1996]
5 */
6
7#if !defined(__CC_NORCROFT) || !defined(__arm)
8 #error You must use the Norcroft ARM Compiler for Sapphire programs
9#endif
10
11#pragma include_only_once
12#pragma force_top_level
13
14#ifndef __chunk_h
15#define __chunk_h
16
17#ifndef __sapphire_h
18 #include "sapphire.h"
19#endif
20
21/*----- Overview ----------------------------------------------------------*
22 *
23 * Functions provided:
24 *
25 * chunk_create
26 * chunk_destroy
27 * chunk_claim
28 * chunk_makeBinary
29 * chunk_read
30 * chunk_enum
31 * chunk_save
32 */
33
34/* --- chunk_create --- *
35 *
36 * On entry: --
37 *
38 * On exit: R0 == chunk file handle
39 * May return an error
40 *
41 * Use: Creates a new chunk file structure and returns a handle to
42 * it.
43 */
44
45extern routine chunk_create;
46
47/* --- chunk_destroy --- *
48 *
49 * On entry: R0 == chunk file handle
50 *
51 * On exit: --
52 *
53 * Use: Removes a chunk file structure from memory. Chunk data in
54 * flex blocks is freed; chunk claimers who free flex blocks
55 * should clear the anchors to 0.
56 */
57
58extern routine chunk_destroy;
59
60/* --- chunk_claim --- *
61 *
62 * On entry: R0 == chunk file handle
63 * R1 == pointer to chunk name
64 * R2 == pointer to saver routine, or 0 for none, or -1 for no
65 * change
66 * R3 == R10 value to pass to saver
67 * R4 == R12 value to pass to saver
68 *
69 * On exit: R1 == chunk handle/anchor
70 * CS if the chunk already existed
71 * May return an error
72 *
73 * Use: Claims a chunk, installing a save handler for it. The chunk
74 * handle returned is actually the address of a flex anchor for
75 * the chunk's data (use flex_size to find the block's size).
76 * If the save handle is 0, the data in the flex block (which
77 * may be modified) is saved directly from the block. Otherwise
78 * the save routine is expected to save its data, using xsave.
79 *
80 * The anchor is followed by 3 unused words -- you can use them
81 * for whatever you want.
82 *
83 * Warning: this routine may move flex blocks.
84 */
85
86extern routine chunk_claim;
87
88/* --- chunk_makeBinary --- *
89 *
90 * On entry: R0 == chunk file handle
91 * R1 == chunk handle
92 *
93 * On exit: --
94 *
95 * Use: Marks a given chunk as containing binary data.
96 */
97
98extern routine chunk_makeBinary;
99
100/* --- chunk_read --- *
101 *
102 * On entry: R0 == chunk file handle
103 * R1 == address of a flex anchor
104 *
105 * On exit: May return an error
106 *
107 * Use: Merges the data contained in the flex block with that already
108 * in the chunk file. If the chunk file is empty, this is
109 * equivalent to a load. Data from the flex block is appended
110 * to chunks already loaded where appropriate.
111 *
112 * Warning: this routine may move flex blocks.
113 */
114
115extern routine chunk_read;
116
117/* --- chunk_enum --- *
118 *
119 * On entry: R0 == chunk file handle
120 * R1 == 0 for first call or continuation value
121 *
122 * On exit: CC if this isn't over yet, and
123 * R1 == continuation value for next call
124 * R2 == pointer to chunk name
125 * else CS and
126 * R1 == 0
127 * R2 preserved
128 *
129 * Use: Allows you to enumerate the chunks in a chunk file structure.
130 */
131
132extern routine chunk_enum;
133
134/* --- chunk_save --- *
135 *
136 * On entry: R0 == chunk file handle
137 *
138 * On exit: May return an error
139 *
140 * Use: Saves a chunk file to xsave's current output.
141 */
142
143extern routine chunk_save;
144
145/*----- That's all, folks -------------------------------------------------*/
146
147#endif