diff options
-rw-r--r-- | docs/API | 276 | ||||
-rw-r--r-- | docs/CONTRIBUTING | 52 | ||||
-rw-r--r-- | docs/COPYING | 340 | ||||
-rw-r--r-- | docs/CREDITS | 36 | ||||
-rw-r--r-- | docs/README | 45 |
5 files changed, 749 insertions, 0 deletions
diff --git a/docs/API b/docs/API new file mode 100644 index 0000000000..dfa6690260 --- /dev/null +++ b/docs/API | |||
@@ -0,0 +1,276 @@ | |||
1 | $Id$ | ||
2 | __________ __ ___. | ||
3 | Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | \/ \/ \/ \/ \/ | ||
8 | |||
9 | API summmary | ||
10 | |||
11 | [ This is still pretty rough and basic. Extend! ] | ||
12 | |||
13 | LCD | ||
14 | |||
15 | #include <lcd.h> | ||
16 | |||
17 | Generic | ||
18 | |||
19 | Most LCD functions are specific for which output we work with, due to the | ||
20 | huge differences. | ||
21 | |||
22 | lcd_init() - init the LCD stuff | ||
23 | lcd_clear_display() - clear the whole display | ||
24 | lcd_backlight(on) - set backlight on/off | ||
25 | lcd_puts(x,y,string) write a string at given character position | ||
26 | |||
27 | Recorder | ||
28 | |||
29 | All the functions operate on a display buffer. You make the buffer get | ||
30 | shown on screen by calling lcd_update(). | ||
31 | |||
32 | lcd_update() update the LCD according to the internal buffer. | ||
33 | |||
34 | |||
35 | lcd_update_rect(int x, int y, int height, int width) | ||
36 | |||
37 | Update the given rectangle to the LCD. Give arguments measured in | ||
38 | pixels. Notice that the smallest vertical resolution in updates that the | ||
39 | hardware supports is even 8 pixels. This function will adjust to those. | ||
40 | |||
41 | lcd_setfont(int font) set default font | ||
42 | lcd_setmargins(int x, int y) set top/left margins | ||
43 | lcd_putsxy(x,y,string,font) put a string at given position, using a | ||
44 | specific font | ||
45 | lcd_bitmap(src,x,y,width,height,clear) put a bitmap at given position | ||
46 | lcd_clearrect(x,y,width,height) clear a rectangle area | ||
47 | lcd_fillrect(x,y,width,height) fill a rectangle area | ||
48 | lcd_drawrect(x,y,width,height) draw a rectangle | ||
49 | lcd_invertrect(x,y,width,height) revert the graphics of the given area | ||
50 | lcd_drawline(x1,y1,x2,y2) draw a line between the coordinates | ||
51 | lcd_drawpixel(x,y) put a pixel on the given coordinate | ||
52 | lcd_clearpixel(x,y) clear the pixel at the given coordinate | ||
53 | lcd_fontsize(font,width,height) return the width and height of the font | ||
54 | |||
55 | Player | ||
56 | |||
57 | lcd_define_pattern(which,pattern,lenth) define a custom pattern | ||
58 | |||
59 | Buttons | ||
60 | |||
61 | #include <button.h> | ||
62 | |||
63 | These functions work the same regardless of which keypad you have, but they | ||
64 | return a different set of values. Note that the Recorder keypad has 10 | ||
65 | keys, while the Player keypad only features 6. | ||
66 | |||
67 | int button_get(bool block) | ||
68 | |||
69 | Returns a bitmask for which keys were pressed. If 'block' is set TRUE it | ||
70 | won't return until a key is pressed. | ||
71 | |||
72 | Files | ||
73 | |||
74 | (These functions are POSIX look-alikes) | ||
75 | |||
76 | #include <file.h> | ||
77 | |||
78 | int open(const char *path, int oflag); | ||
79 | |||
80 | The open() function establishes the connection between a file and a file | ||
81 | descriptor. It creates an open file descrip- tion that refers to a file | ||
82 | and a file descriptor that refers to that open file description. The file | ||
83 | descriptor is used by other I/O functions to refer to that file. | ||
84 | |||
85 | int read(int fildes, void *buf, size_t nbyte); | ||
86 | |||
87 | The read() function attempts to read nbyte bytes from the file associated | ||
88 | with the open file descriptor, fildes, into the buffer pointed to by buf. | ||
89 | |||
90 | int lseek(int fildes, off_t offset, int whence); | ||
91 | |||
92 | The lseek() function sets the file pointer associated with the open file | ||
93 | descriptor specified by fildes as follows: | ||
94 | |||
95 | o If whence is SEEK_SET, the pointer is set to offset | ||
96 | bytes. | ||
97 | |||
98 | o If whence is SEEK_CUR, the pointer is set to its | ||
99 | current location plus offset. | ||
100 | |||
101 | o If whence is SEEK_END, the pointer is set to the size | ||
102 | of the file plus offset. | ||
103 | |||
104 | int write(int fildes, const void *buf, size_t nbyte); | ||
105 | |||
106 | NOT CURRENTLY SUPPORTED. | ||
107 | |||
108 | write writes up to count bytes to the file referenced by the file | ||
109 | descriptor fd from the buffer starting at buf. | ||
110 | |||
111 | int close(int fildes); | ||
112 | |||
113 | The close() function will deallocate the file descriptor indicated by | ||
114 | fildes. To deallocate means to make the file descriptor available for | ||
115 | return by subsequent calls to open(2) or other functions that allocate | ||
116 | file descriptors. | ||
117 | |||
118 | int rename(const char *old, const char *new); | ||
119 | |||
120 | NOT CURRENTLY SUPPORTED. | ||
121 | |||
122 | The rename() function changes the name of a file. The old argument points | ||
123 | to the pathname of the file to be renamed. The new argument points to the | ||
124 | new pathname of the file. | ||
125 | |||
126 | int remove(const char *pathname); | ||
127 | |||
128 | NOT CURRENTLY SUPPORTED. | ||
129 | |||
130 | remove deletes a name from the filesystem. It calls unlink for files, | ||
131 | and rmdir for directories. | ||
132 | |||
133 | |||
134 | Directories | ||
135 | |||
136 | #include <dir.h> | ||
137 | |||
138 | DIR *opendir(const char *name); | ||
139 | |||
140 | The opendir() function opens a directory stream corresponding to the | ||
141 | directory name, and returns a pointer to the directory stream. The | ||
142 | stream is positioned at the first entry in the directory. | ||
143 | |||
144 | struct dirent *readdir(DIR *dir); | ||
145 | |||
146 | The readdir() function returns a pointer to a dirent structure | ||
147 | representing the next directory entry in the directory stream pointed to | ||
148 | by dir. It returns NULL on reaching the end-of-file or if an error | ||
149 | occurred. | ||
150 | |||
151 | Add a description of the struct here. | ||
152 | |||
153 | int closedir(DIR *dir); | ||
154 | |||
155 | The closedir() function closes the directory stream associated with dir. | ||
156 | The directory stream descriptor dir is not available after this call. | ||
157 | |||
158 | |||
159 | String/Memory | ||
160 | |||
161 | #include <string.h> | ||
162 | |||
163 | strcmp() | ||
164 | strcpy() | ||
165 | memcpy() | ||
166 | memset() | ||
167 | ... | ||
168 | |||
169 | Memory allocation | ||
170 | |||
171 | #include <dmalloc.h> | ||
172 | |||
173 | void *malloc(size_t size); | ||
174 | |||
175 | malloc() allocates size bytes and returns a pointer to the allocated | ||
176 | memory. The memory is not cleared. | ||
177 | |||
178 | void free(void *ptr); | ||
179 | |||
180 | free() frees the memory space pointed to by ptr, which must have been | ||
181 | returned by a previous call to malloc(), calloc() or realloc(). | ||
182 | Otherwise, or if free(ptr) has already been called before, undefined | ||
183 | behaviour occurs. | ||
184 | |||
185 | void *realloc(void *ptr, size_t size); | ||
186 | |||
187 | realloc() changes the size of the memory block pointed to by ptr to size | ||
188 | bytes. The contents will be unchanged to the minimum of the old and new | ||
189 | sizes; newly allocated memory will be uninitialized. If ptr is NULL, the | ||
190 | call is equivalent to malloc(size); if size is equal to zero, the call is | ||
191 | equivalent to free(ptr). Unless ptr is NULL, it must have been returned | ||
192 | by an earlier call to malloc(), calloc() or realloc(). | ||
193 | |||
194 | void *calloc(size_t nmemb, size_t size); | ||
195 | |||
196 | calloc() allocates memory for an array of nmemb elements of size bytes | ||
197 | each and returns a pointer to the allocated memory. The memory is set to | ||
198 | zero. | ||
199 | |||
200 | ID3 | ||
201 | |||
202 | #include <id3.h> | ||
203 | bool mp3info(mp3entry *entry, char *filename); | ||
204 | |||
205 | Return FALSE if successful. The given mp3entry is then filled in with | ||
206 | whatever id3 info it could find about the given file. | ||
207 | |||
208 | Various | ||
209 | |||
210 | #include <kernel.h> | ||
211 | |||
212 | void kernel_init(void) | ||
213 | |||
214 | Inits the kernel and starts the tick interrupt | ||
215 | |||
216 | void sleep(ticks) | ||
217 | |||
218 | Sleep a specified number of ticks, we have HZ ticks per second. | ||
219 | |||
220 | void yield(void) | ||
221 | |||
222 | Let another thread run. This should be used as soon as you have to "wait" | ||
223 | for something or similar, and also if you do anything that takes "a long | ||
224 | time". This function is the entire foundation that our "cooperative | ||
225 | multitasking" is based on. Use it. | ||
226 | |||
227 | int set_irq_level(int level) | ||
228 | |||
229 | Sets the interrupt level (0 = lowest, 15 = highest) and returns the | ||
230 | previous level. | ||
231 | |||
232 | void queue_init(struct event_queue *q) | ||
233 | |||
234 | Initialize an event queue. The maximum number of events in a queue is | ||
235 | QUEUE_LENGTH-1. | ||
236 | |||
237 | void queue_wait(struct event_queue *q, struct event *ev) | ||
238 | |||
239 | Receive an event in a queue, blocking the thread if the queue is empty. | ||
240 | |||
241 | void queue_post(struct event_queue *q, int id, void *data) | ||
242 | |||
243 | Post an event to a queue. | ||
244 | NOTE: Negative event ID's are for system use only!!! | ||
245 | |||
246 | bool queue_empty(struct event_queue* q) | ||
247 | |||
248 | Returns true if the queue is empty. | ||
249 | |||
250 | int queue_broadcast(int id, void *data) | ||
251 | |||
252 | Posts an event in all queues that has been initiated with queue_init(). | ||
253 | Returns the number of queues that were posted to. | ||
254 | |||
255 | int tick_add_task(void (*f)(void)) | ||
256 | |||
257 | Add a task to the tick task queue. The argument is a pointer to a | ||
258 | function that will be called every tick interrupt. | ||
259 | At most MAX_NUM_TICK_TASKS can be active at the same time. | ||
260 | |||
261 | int tick_remove_task(void (*f)(void)) | ||
262 | |||
263 | Remove a task from the task queue. | ||
264 | |||
265 | void mutex_init(struct mutex *m) | ||
266 | |||
267 | Initialize a mutex. | ||
268 | |||
269 | void mutex_lock(struct mutex *m) | ||
270 | |||
271 | Lock a mutex. This will block the thread if the mutex is already locked. | ||
272 | Note that you will geta deadlock if you lock the mutex twice! | ||
273 | |||
274 | void mutex_unlock(struct mutex *m) | ||
275 | |||
276 | Unlock a mutex. | ||
diff --git a/docs/CONTRIBUTING b/docs/CONTRIBUTING new file mode 100644 index 0000000000..0108c8eefa --- /dev/null +++ b/docs/CONTRIBUTING | |||
@@ -0,0 +1,52 @@ | |||
1 | $Id$ | ||
2 | |||
3 | In order for the project to run as smoothly as possible, it's best if all | ||
4 | contributors adhere to a few simple conventions: | ||
5 | |||
6 | Language | ||
7 | -------- | ||
8 | Write all code in C. Sometimes assembly is faster, but C is always more | ||
9 | readable and maintainable. | ||
10 | |||
11 | Language features | ||
12 | ----------------- | ||
13 | Write normal C code. Don't redefine the language. No new types (structs are | ||
14 | structs, not typedefs), no C++isms or Javaisms. Also, avoid using "const". | ||
15 | |||
16 | Names | ||
17 | ----- | ||
18 | Variables and function names should be all lower case. | ||
19 | Preprocessor symbols should be all uppercase. | ||
20 | |||
21 | Style | ||
22 | ----- | ||
23 | When changing code, follow the code style of the file you are editing. | ||
24 | |||
25 | When writing new files, you may use the brace placement style of your choice. | ||
26 | |||
27 | Always indent your code with four spaces. Don't use TAB characters, as that | ||
28 | will mess up code display in CVS, printing, and a zillion other places. | ||
29 | |||
30 | Keep lines below 80 columns length. Use whitespace and newlines to make the | ||
31 | code easy to browse/read. | ||
32 | |||
33 | Text format | ||
34 | ----------- | ||
35 | Use "unix style" line feeds: "LF" only. Do not use "CR+LF". | ||
36 | |||
37 | Patches | ||
38 | ------- | ||
39 | Create a patch using 'cvs diff -ub'. | ||
40 | Trim your patches so they only contain relevant changes. | ||
41 | Submit all patches to the mailing list. | ||
42 | Put [PATCH] first on the subject line of your mail. | ||
43 | If the patch is very large (>50k), gzip it before you send it. | ||
44 | |||
45 | |||
46 | |||
47 | |||
48 | |||
49 | |||
50 | |||
51 | |||
52 | |||
diff --git a/docs/COPYING b/docs/COPYING new file mode 100644 index 0000000000..d60c31a97a --- /dev/null +++ b/docs/COPYING | |||
@@ -0,0 +1,340 @@ | |||
1 | GNU GENERAL PUBLIC LICENSE | ||
2 | Version 2, June 1991 | ||
3 | |||
4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc. | ||
5 | 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
6 | Everyone is permitted to copy and distribute verbatim copies | ||
7 | of this license document, but changing it is not allowed. | ||
8 | |||
9 | Preamble | ||
10 | |||
11 | The licenses for most software are designed to take away your | ||
12 | freedom to share and change it. By contrast, the GNU General Public | ||
13 | License is intended to guarantee your freedom to share and change free | ||
14 | software--to make sure the software is free for all its users. This | ||
15 | General Public License applies to most of the Free Software | ||
16 | Foundation's software and to any other program whose authors commit to | ||
17 | using it. (Some other Free Software Foundation software is covered by | ||
18 | the GNU Library General Public License instead.) You can apply it to | ||
19 | your programs, too. | ||
20 | |||
21 | When we speak of free software, we are referring to freedom, not | ||
22 | price. Our General Public Licenses are designed to make sure that you | ||
23 | have the freedom to distribute copies of free software (and charge for | ||
24 | this service if you wish), that you receive source code or can get it | ||
25 | if you want it, that you can change the software or use pieces of it | ||
26 | in new free programs; and that you know you can do these things. | ||
27 | |||
28 | To protect your rights, we need to make restrictions that forbid | ||
29 | anyone to deny you these rights or to ask you to surrender the rights. | ||
30 | These restrictions translate to certain responsibilities for you if you | ||
31 | distribute copies of the software, or if you modify it. | ||
32 | |||
33 | For example, if you distribute copies of such a program, whether | ||
34 | gratis or for a fee, you must give the recipients all the rights that | ||
35 | you have. You must make sure that they, too, receive or can get the | ||
36 | source code. And you must show them these terms so they know their | ||
37 | rights. | ||
38 | |||
39 | We protect your rights with two steps: (1) copyright the software, and | ||
40 | (2) offer you this license which gives you legal permission to copy, | ||
41 | distribute and/or modify the software. | ||
42 | |||
43 | Also, for each author's protection and ours, we want to make certain | ||
44 | that everyone understands that there is no warranty for this free | ||
45 | software. If the software is modified by someone else and passed on, we | ||
46 | want its recipients to know that what they have is not the original, so | ||
47 | that any problems introduced by others will not reflect on the original | ||
48 | authors' reputations. | ||
49 | |||
50 | Finally, any free program is threatened constantly by software | ||
51 | patents. We wish to avoid the danger that redistributors of a free | ||
52 | program will individually obtain patent licenses, in effect making the | ||
53 | program proprietary. To prevent this, we have made it clear that any | ||
54 | patent must be licensed for everyone's free use or not licensed at all. | ||
55 | |||
56 | The precise terms and conditions for copying, distribution and | ||
57 | modification follow. | ||
58 | |||
59 | GNU GENERAL PUBLIC LICENSE | ||
60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | ||
61 | |||
62 | 0. This License applies to any program or other work which contains | ||
63 | a notice placed by the copyright holder saying it may be distributed | ||
64 | under the terms of this General Public License. The "Program", below, | ||
65 | refers to any such program or work, and a "work based on the Program" | ||
66 | means either the Program or any derivative work under copyright law: | ||
67 | that is to say, a work containing the Program or a portion of it, | ||
68 | either verbatim or with modifications and/or translated into another | ||
69 | language. (Hereinafter, translation is included without limitation in | ||
70 | the term "modification".) Each licensee is addressed as "you". | ||
71 | |||
72 | Activities other than copying, distribution and modification are not | ||
73 | covered by this License; they are outside its scope. The act of | ||
74 | running the Program is not restricted, and the output from the Program | ||
75 | is covered only if its contents constitute a work based on the | ||
76 | Program (independent of having been made by running the Program). | ||
77 | Whether that is true depends on what the Program does. | ||
78 | |||
79 | 1. You may copy and distribute verbatim copies of the Program's | ||
80 | source code as you receive it, in any medium, provided that you | ||
81 | conspicuously and appropriately publish on each copy an appropriate | ||
82 | copyright notice and disclaimer of warranty; keep intact all the | ||
83 | notices that refer to this License and to the absence of any warranty; | ||
84 | and give any other recipients of the Program a copy of this License | ||
85 | along with the Program. | ||
86 | |||
87 | You may charge a fee for the physical act of transferring a copy, and | ||
88 | you may at your option offer warranty protection in exchange for a fee. | ||
89 | |||
90 | 2. You may modify your copy or copies of the Program or any portion | ||
91 | of it, thus forming a work based on the Program, and copy and | ||
92 | distribute such modifications or work under the terms of Section 1 | ||
93 | above, provided that you also meet all of these conditions: | ||
94 | |||
95 | a) You must cause the modified files to carry prominent notices | ||
96 | stating that you changed the files and the date of any change. | ||
97 | |||
98 | b) You must cause any work that you distribute or publish, that in | ||
99 | whole or in part contains or is derived from the Program or any | ||
100 | part thereof, to be licensed as a whole at no charge to all third | ||
101 | parties under the terms of this License. | ||
102 | |||
103 | c) If the modified program normally reads commands interactively | ||
104 | when run, you must cause it, when started running for such | ||
105 | interactive use in the most ordinary way, to print or display an | ||
106 | announcement including an appropriate copyright notice and a | ||
107 | notice that there is no warranty (or else, saying that you provide | ||
108 | a warranty) and that users may redistribute the program under | ||
109 | these conditions, and telling the user how to view a copy of this | ||
110 | License. (Exception: if the Program itself is interactive but | ||
111 | does not normally print such an announcement, your work based on | ||
112 | the Program is not required to print an announcement.) | ||
113 | |||
114 | These requirements apply to the modified work as a whole. If | ||
115 | identifiable sections of that work are not derived from the Program, | ||
116 | and can be reasonably considered independent and separate works in | ||
117 | themselves, then this License, and its terms, do not apply to those | ||
118 | sections when you distribute them as separate works. But when you | ||
119 | distribute the same sections as part of a whole which is a work based | ||
120 | on the Program, the distribution of the whole must be on the terms of | ||
121 | this License, whose permissions for other licensees extend to the | ||
122 | entire whole, and thus to each and every part regardless of who wrote it. | ||
123 | |||
124 | Thus, it is not the intent of this section to claim rights or contest | ||
125 | your rights to work written entirely by you; rather, the intent is to | ||
126 | exercise the right to control the distribution of derivative or | ||
127 | collective works based on the Program. | ||
128 | |||
129 | In addition, mere aggregation of another work not based on the Program | ||
130 | with the Program (or with a work based on the Program) on a volume of | ||
131 | a storage or distribution medium does not bring the other work under | ||
132 | the scope of this License. | ||
133 | |||
134 | 3. You may copy and distribute the Program (or a work based on it, | ||
135 | under Section 2) in object code or executable form under the terms of | ||
136 | Sections 1 and 2 above provided that you also do one of the following: | ||
137 | |||
138 | a) Accompany it with the complete corresponding machine-readable | ||
139 | source code, which must be distributed under the terms of Sections | ||
140 | 1 and 2 above on a medium customarily used for software interchange; or, | ||
141 | |||
142 | b) Accompany it with a written offer, valid for at least three | ||
143 | years, to give any third party, for a charge no more than your | ||
144 | cost of physically performing source distribution, a complete | ||
145 | machine-readable copy of the corresponding source code, to be | ||
146 | distributed under the terms of Sections 1 and 2 above on a medium | ||
147 | customarily used for software interchange; or, | ||
148 | |||
149 | c) Accompany it with the information you received as to the offer | ||
150 | to distribute corresponding source code. (This alternative is | ||
151 | allowed only for noncommercial distribution and only if you | ||
152 | received the program in object code or executable form with such | ||
153 | an offer, in accord with Subsection b above.) | ||
154 | |||
155 | The source code for a work means the preferred form of the work for | ||
156 | making modifications to it. For an executable work, complete source | ||
157 | code means all the source code for all modules it contains, plus any | ||
158 | associated interface definition files, plus the scripts used to | ||
159 | control compilation and installation of the executable. However, as a | ||
160 | special exception, the source code distributed need not include | ||
161 | anything that is normally distributed (in either source or binary | ||
162 | form) with the major components (compiler, kernel, and so on) of the | ||
163 | operating system on which the executable runs, unless that component | ||
164 | itself accompanies the executable. | ||
165 | |||
166 | If distribution of executable or object code is made by offering | ||
167 | access to copy from a designated place, then offering equivalent | ||
168 | access to copy the source code from the same place counts as | ||
169 | distribution of the source code, even though third parties are not | ||
170 | compelled to copy the source along with the object code. | ||
171 | |||
172 | 4. You may not copy, modify, sublicense, or distribute the Program | ||
173 | except as expressly provided under this License. Any attempt | ||
174 | otherwise to copy, modify, sublicense or distribute the Program is | ||
175 | void, and will automatically terminate your rights under this License. | ||
176 | However, parties who have received copies, or rights, from you under | ||
177 | this License will not have their licenses terminated so long as such | ||
178 | parties remain in full compliance. | ||
179 | |||
180 | 5. You are not required to accept this License, since you have not | ||
181 | signed it. However, nothing else grants you permission to modify or | ||
182 | distribute the Program or its derivative works. These actions are | ||
183 | prohibited by law if you do not accept this License. Therefore, by | ||
184 | modifying or distributing the Program (or any work based on the | ||
185 | Program), you indicate your acceptance of this License to do so, and | ||
186 | all its terms and conditions for copying, distributing or modifying | ||
187 | the Program or works based on it. | ||
188 | |||
189 | 6. Each time you redistribute the Program (or any work based on the | ||
190 | Program), the recipient automatically receives a license from the | ||
191 | original licensor to copy, distribute or modify the Program subject to | ||
192 | these terms and conditions. You may not impose any further | ||
193 | restrictions on the recipients' exercise of the rights granted herein. | ||
194 | You are not responsible for enforcing compliance by third parties to | ||
195 | this License. | ||
196 | |||
197 | 7. If, as a consequence of a court judgment or allegation of patent | ||
198 | infringement or for any other reason (not limited to patent issues), | ||
199 | conditions are imposed on you (whether by court order, agreement or | ||
200 | otherwise) that contradict the conditions of this License, they do not | ||
201 | excuse you from the conditions of this License. If you cannot | ||
202 | distribute so as to satisfy simultaneously your obligations under this | ||
203 | License and any other pertinent obligations, then as a consequence you | ||
204 | may not distribute the Program at all. For example, if a patent | ||
205 | license would not permit royalty-free redistribution of the Program by | ||
206 | all those who receive copies directly or indirectly through you, then | ||
207 | the only way you could satisfy both it and this License would be to | ||
208 | refrain entirely from distribution of the Program. | ||
209 | |||
210 | If any portion of this section is held invalid or unenforceable under | ||
211 | any particular circumstance, the balance of the section is intended to | ||
212 | apply and the section as a whole is intended to apply in other | ||
213 | circumstances. | ||
214 | |||
215 | It is not the purpose of this section to induce you to infringe any | ||
216 | patents or other property right claims or to contest validity of any | ||
217 | such claims; this section has the sole purpose of protecting the | ||
218 | integrity of the free software distribution system, which is | ||
219 | implemented by public license practices. Many people have made | ||
220 | generous contributions to the wide range of software distributed | ||
221 | through that system in reliance on consistent application of that | ||
222 | system; it is up to the author/donor to decide if he or she is willing | ||
223 | to distribute software through any other system and a licensee cannot | ||
224 | impose that choice. | ||
225 | |||
226 | This section is intended to make thoroughly clear what is believed to | ||
227 | be a consequence of the rest of this License. | ||
228 | |||
229 | 8. If the distribution and/or use of the Program is restricted in | ||
230 | certain countries either by patents or by copyrighted interfaces, the | ||
231 | original copyright holder who places the Program under this License | ||
232 | may add an explicit geographical distribution limitation excluding | ||
233 | those countries, so that distribution is permitted only in or among | ||
234 | countries not thus excluded. In such case, this License incorporates | ||
235 | the limitation as if written in the body of this License. | ||
236 | |||
237 | 9. The Free Software Foundation may publish revised and/or new versions | ||
238 | of the General Public License from time to time. Such new versions will | ||
239 | be similar in spirit to the present version, but may differ in detail to | ||
240 | address new problems or concerns. | ||
241 | |||
242 | Each version is given a distinguishing version number. If the Program | ||
243 | specifies a version number of this License which applies to it and "any | ||
244 | later version", you have the option of following the terms and conditions | ||
245 | either of that version or of any later version published by the Free | ||
246 | Software Foundation. If the Program does not specify a version number of | ||
247 | this License, you may choose any version ever published by the Free Software | ||
248 | Foundation. | ||
249 | |||
250 | 10. If you wish to incorporate parts of the Program into other free | ||
251 | programs whose distribution conditions are different, write to the author | ||
252 | to ask for permission. For software which is copyrighted by the Free | ||
253 | Software Foundation, write to the Free Software Foundation; we sometimes | ||
254 | make exceptions for this. Our decision will be guided by the two goals | ||
255 | of preserving the free status of all derivatives of our free software and | ||
256 | of promoting the sharing and reuse of software generally. | ||
257 | |||
258 | NO WARRANTY | ||
259 | |||
260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY | ||
261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN | ||
262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES | ||
263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED | ||
264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS | ||
266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE | ||
267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, | ||
268 | REPAIR OR CORRECTION. | ||
269 | |||
270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | ||
271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR | ||
272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, | ||
273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING | ||
274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED | ||
275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY | ||
276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER | ||
277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE | ||
278 | POSSIBILITY OF SUCH DAMAGES. | ||
279 | |||
280 | END OF TERMS AND CONDITIONS | ||
281 | |||
282 | How to Apply These Terms to Your New Programs | ||
283 | |||
284 | If you develop a new program, and you want it to be of the greatest | ||
285 | possible use to the public, the best way to achieve this is to make it | ||
286 | free software which everyone can redistribute and change under these terms. | ||
287 | |||
288 | To do so, attach the following notices to the program. It is safest | ||
289 | to attach them to the start of each source file to most effectively | ||
290 | convey the exclusion of warranty; and each file should have at least | ||
291 | the "copyright" line and a pointer to where the full notice is found. | ||
292 | |||
293 | <one line to give the program's name and a brief idea of what it does.> | ||
294 | Copyright (C) <year> <name of author> | ||
295 | |||
296 | This program is free software; you can redistribute it and/or modify | ||
297 | it under the terms of the GNU General Public License as published by | ||
298 | the Free Software Foundation; either version 2 of the License, or | ||
299 | (at your option) any later version. | ||
300 | |||
301 | This program is distributed in the hope that it will be useful, | ||
302 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
304 | GNU General Public License for more details. | ||
305 | |||
306 | You should have received a copy of the GNU General Public License | ||
307 | along with this program; if not, write to the Free Software | ||
308 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
309 | |||
310 | |||
311 | Also add information on how to contact you by electronic and paper mail. | ||
312 | |||
313 | If the program is interactive, make it output a short notice like this | ||
314 | when it starts in an interactive mode: | ||
315 | |||
316 | Gnomovision version 69, Copyright (C) year name of author | ||
317 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. | ||
318 | This is free software, and you are welcome to redistribute it | ||
319 | under certain conditions; type `show c' for details. | ||
320 | |||
321 | The hypothetical commands `show w' and `show c' should show the appropriate | ||
322 | parts of the General Public License. Of course, the commands you use may | ||
323 | be called something other than `show w' and `show c'; they could even be | ||
324 | mouse-clicks or menu items--whatever suits your program. | ||
325 | |||
326 | You should also get your employer (if you work as a programmer) or your | ||
327 | school, if any, to sign a "copyright disclaimer" for the program, if | ||
328 | necessary. Here is a sample; alter the names: | ||
329 | |||
330 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program | ||
331 | `Gnomovision' (which makes passes at compilers) written by James Hacker. | ||
332 | |||
333 | <signature of Ty Coon>, 1 April 1989 | ||
334 | Ty Coon, President of Vice | ||
335 | |||
336 | This General Public License does not permit incorporating your program into | ||
337 | proprietary programs. If your program is a subroutine library, you may | ||
338 | consider it more useful to permit linking proprietary applications with the | ||
339 | library. If this is what you want to do, use the GNU Library General | ||
340 | Public License instead of this License. | ||
diff --git a/docs/CREDITS b/docs/CREDITS new file mode 100644 index 0000000000..316f334907 --- /dev/null +++ b/docs/CREDITS | |||
@@ -0,0 +1,36 @@ | |||
1 | People that have contributed to the project, one way or another. Friends! | ||
2 | |||
3 | Björn Stenberg Originator, project manager, code | ||
4 | Linus Nielsen Feltzing Electronics, code | ||
5 | Andy Choi Checksums | ||
6 | Andrew Jamieson Schematics, electronics | ||
7 | Paul Suade Serial port setup | ||
8 | Joachim Schiffer Schematics, electronics | ||
9 | Daniel Stenberg Code | ||
10 | Alan Korr Code | ||
11 | Gary Czvitkovicz Code | ||
12 | Stuart Martin Code | ||
13 | Felix Arends Code | ||
14 | Ulf Ralberg Thread embryo | ||
15 | David Härdeman Initial ID3 code | ||
16 | Thomas Saeys Logo | ||
17 | Grant Wier Code | ||
18 | Julien Labruyére Donated Archos Player | ||
19 | Nicolas Sauzede Display research | ||
20 | Robert Hak Code, documentation, sarcasm | ||
21 | Dave Chapman Code | ||
22 | Stefan Meyer Code | ||
23 | Eric Linenberg Code | ||
24 | Tom Cvitan Web design | ||
25 | Magnus Öman Font | ||
26 | Jerome Kuptz Code | ||
27 | Julien Boissinot Code, Sound research | ||
28 | Nuutti Kotivuori Code | ||
29 | Heikki Hannikainen Code | ||
30 | Hardeep Sidhu Code | ||
31 | Markus Braun Code | ||
32 | Justin Heiner Code | ||
33 | Magnus Holmgren Code | ||
34 | Bill Napier Build fixes | ||
35 | George Styles Code | ||
36 | Mats Lidell Code \ No newline at end of file | ||
diff --git a/docs/README b/docs/README new file mode 100644 index 0000000000..3efa73a972 --- /dev/null +++ b/docs/README | |||
@@ -0,0 +1,45 @@ | |||
1 | __________ __ ___. | ||
2 | Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
3 | Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
4 | Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
5 | Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
6 | \/ \/ \/ \/ \/ | ||
7 | |||
8 | Build your own archos.mod. | ||
9 | |||
10 | 1. Check out 'firmware', 'apps' and 'tools' from CVS (or possibly from a | ||
11 | downloaded archive). You may possibly want 'uisimulator' too (for trying | ||
12 | out things on host before making target tests). If you haven't already | ||
13 | done so, we advise you pull down the 'docs' directory as well. | ||
14 | |||
15 | 2. Build the tools by running 'make' in the tools/ directory. | ||
16 | |||
17 | 3. Create your own build directory, preferably in the same directory as the | ||
18 | firmware/ and apps/ directories. This is where all generated files will be | ||
19 | put. | ||
20 | |||
21 | 4. In your build directory, run the 'tools/configure' script and enter what | ||
22 | target you want to build for and if you want a debug version or not. It'll | ||
23 | prompt you. The debug version is for making a gdb version out of it. It is | ||
24 | only useful if you run gdb towards your target Archos. | ||
25 | |||
26 | 5. Make sure you have sh-elf-gcc and siblings in the PATH. | ||
27 | |||
28 | 6. *ploink*. Now you have got a Makefile generated for you. Run 'make' and | ||
29 | soon the necessary pieces from the firmware and the apps directories have | ||
30 | been compiled and linked. | ||
31 | |||
32 | 7. Copy the archos.mod file to your archos, reboot it and *smile*. | ||
33 | |||
34 | Whenever the tools/configure script gets updated, you can make your makefile | ||
35 | updated too by running 'tools/configure update' | ||
36 | |||
37 | If you want to build for more than one target, just create a new build | ||
38 | directory and create a setup for another target combination in there. | ||
39 | |||
40 | Questions anyone? Take them to the mailing list. We'll be happy to help you | ||
41 | out! | ||
42 | |||
43 | |||
44 | |||
45 | |||