1
0
Fork 0
forked from len0rd/rockbox

Splitting out www

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11952 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Björn Stenberg 2007-01-08 23:52:01 +00:00
parent 8cece5a745
commit 6d4c19707e
305 changed files with 0 additions and 9613 deletions

View file

@ -1,55 +0,0 @@
ACTION=@echo preprocessing $@; rm -f $@; $(HOME)/bin/fcpp -WWW -Uunix -H -C -V -LL >$@
SRC := $(wildcard *.t)
SOBJS := daily.shtml main.shtml index.shtml status.shtml \
bugs.shtml requests.shtml patches.shtml cvs.shtml
OBJS := $(SRC:%.t=%.html) $(SOBJS)
.SUFFIXES: .t .html
%.html : %.t
$(ACTION) $<
%.shtml : %.t
$(ACTION) $<
all: $(OBJS) head.tmpl
@(cd schematics; $(MAKE))
@(cd docs; $(MAKE))
@(cd mods; $(MAKE))
@(cd internals; $(MAKE))
@(cd irc; $(MAKE))
@(cd devcon; $(MAKE))
@(cd sh-win; $(MAKE))
@(cd download; $(MAKE))
@(cd manual; $(MAKE))
@(cd manual-1.2; $(MAKE))
@(cd fonts; $(MAKE))
@(cd lang; $(MAKE))
@(cd tshirt-contest; $(MAKE))
@(cd screenshots; $(MAKE))
@(cd digest; $(MAKE))
@(cd playerhistory; $(MAKE))
@(cd devcon2006; $(MAKE))
@(cd doom; $(MAKE))
head.tmpl: head.t
$(ACTION) -DTWIKI $<
main.html: main.t activity.html
main.shtml: main.t activity.html
index.shtml: main.shtml
ln -s main.shtml index.shtml
daily.shtml: daily.t
cvs.shtml: daily.t
since25.html:
ln -s /home/dast/daniel_html/rockbox/since25.html since25.html
clean:
find . -name "*html" | xargs rm

View file

@ -1,42 +0,0 @@
#define YELLOW "#ffffa3"
#define GREEN "#80db72"
#define RED "#ffadad"
#define STATUS(_col_,_mod_,_file_,_href_,_person_,_status_) \
<tr bgcolor=_col_><td>_mod_</td><td><a href=_href_>_file_</a></td><td>_person_</td><td>_status_</td></tr>
<table align="right">
<tr><th colspan=2>Color codes:</th></tr>
<tr><td bgcolor=GREEN>&nbsp; &nbsp;</td><td> Working code exists</td></tr>
<tr><td bgcolor=YELLOW>&nbsp; &nbsp;</td><td> Development in progress</td></tr>
<tr><td bgcolor=RED>&nbsp; &nbsp;</td><td> Undermanned. Help needed.</td></tr>
</table>
<table cellspacing=0 cellpadding=2 border=1>
<tr bgcolor="#cccccc"><th>Module</th><th>File(s) in CVS</h><th>Current person</th><th>Status</th></tr><tr>
STATUS(GREEN,I<sup><small>2</small></sup>C driver,firmware/drivers/i2c.c,"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/firmware/drivers/i2c.c", Linus,Works)
STATUS(GREEN,LED driver,firmware/drivers/led.c,"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/firmware/drivers/led.c",Björn,Works)
STATUS(GREEN,GDB stub,gdb/,"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/gdb/", Linus,Works)
STATUS(GREEN,List,firmware/common/list.c,"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/firmware/common/lists.c", Linus,Works)
STATUS(GREEN,ID3 parser,firmware/i3d.c,"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/firmware/id3.c", Daniel,Works)
STATUS(GREEN,FAQ,www/docs/FAQ,"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/www/docs/FAQ",Rob,Existing)
STATUS(GREEN,Fat32 filesystem,firmware/drivers/fat.c,"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/firmware/drivers/fat.c", Björn,Works)
STATUS(GREEN,Tetris,apps/tetris.c,"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/apps/tetris.c", &nbsp;, Works)
STATUS(GREEN,MAS driver,firmware/drivers/mas.c,"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/firmware/drivers/mas.c", Linus,Works)
STATUS(GREEN,ATA driver,firmware/drivers/ata.c,"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/firmware/drivers/ata.c", Björn,Works)
STATUS(GREEN,Scheduler,firmware/thread.c,"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/firmware/thread.c", Linus,Works)
STATUS(GREEN,X11 simulator,uisimulator/x11, "http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/uisimulator/x11/", Daniel,Works)
STATUS(GREEN,Win32 simulator,uisimulator/win32/,"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/uisimulator/win32/", Felix,Works)
STATUS(GREEN,API docs,firmware/API,"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/firmware/API",&nbsp;,First version)
STATUS(GREEN,Key handling,firmware/drivers/button.c,"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/firmware/drivers/button.c",Björn,Works)
STATUS(GREEN,CPU setup,firmware/system.c,"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/firmware/system.c", Linus,Works)
STATUS(GREEN,Directory browser UI,apps/tree.c,"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/apps/tree.c", Daniel,Works)
STATUS(GREEN,LCD driver,firmware/drivers/lcd.c,"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/firmware/drivers/lcd.c", Björn,Works)
STATUS(GREEN,Mpeg thread,firmware/mpeg.c,"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/firmware/mpeg.c",Linus, Works)
STATUS(YELLOW,Playlist handling,firmware/playlist.c,"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/rockbox/firmware/playlist.c", Wavey, Progressing)
#if 0
STATUS(RED,Boot loader (rolo),&nbsp;,"",&nbsp;,Planned)
STATUS(RED,New DSP algorithms,&nbsp;,"",&nbsp;,We need help!)
#endif
</tr></table>
<i><small>Updated __DATE__</small></i>

View file

@ -1,30 +0,0 @@
#define _PAGE_ Open bug reports
#include "head.t"
<!--#include file="bugs.txt" -->
<h2>Submitting new bug reports</h2>
<a name="rules"></a>
<h3>Rules for bug reporting:</h3>
<ol>
<li> Do not report bugs for unreleased code (i.e. Iriver at the moment). Use the <a href="/mail/">mailing list</a> or <a href="/irc/">IRC</a> to discuss such development.
<li> Check that the bug hasn't already been fixed! Try the latest <a href="/daily.shtml">daily build</a>.
<li> Check that the bug hasn't already been reported
<li> Do not add "I have the same problem" to an existing bug report if you aren't <b>absolutely certain</b> that it really is the same problem
<li> Always include the following information in your bug report:
<ul>
<li> Which exact music player model you have (as printed on the unit)
<li> Which exact Rockbox version you are using (Menu->Version)
<li> A link to the data that malfunctions, if applicable (IMPORTANT!)
</ul>
<li>If you have a Sourceforge account, log in before you file the report.
<li>If you don't have a SF account, sign the report with your email.
</ol>
<p><b>Don't file "bug reports" that really are support questions!</b> Ask on <a href="/mail/">the mailing list</a> or in <a href="/irc/">IRC</a> instead.
<p><a href="http://sourceforge.net/tracker/?func=add&group_id=44306&atid=439118">Click here to submit a new bug report</a>.
#include "foot.t"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

View file

@ -1,105 +0,0 @@
#define _PAGE_ Building the SH1 cross compiler
#include "head.t"
<p>
In this example I will assume that you are running Linux with the bash shell.
We will only build the C compiler along with the assembler, linker and stuff.
Note that the procedure is exactly the same if you are running cygwin on Windows.
<h2>Download the source code</h2>
<p>
You will need the following archives:
<ul>
<li>binutils-2.11.tar.gz (find it at your closest GNU FTP site)
<li>gcc-3.0.4.tar.gz (find it at your closest GNU FTP site)
<li>(optional) gdb-5.1.1.tar.gz (find it at your closest GNU FTP site)
</ul>
<p>
If you want to stay out of trouble, use the versions stated above. If you
want to live on the edge you can try building with the latest versions.
However, if you use binutils-2.13 or later you will not be able to build
Rockbox older that CVS 2002-09-08 if you don't add the .rodata.str1.4
section to the .rodata section in the linker script:
<pre>
.rodata :
{
*(.rodata)
<b> *(.rodata.str1.4)</b>
} > DRAM
</pre>
<h2>Unpack the archives</h2>
<p>
<pre>
/home/linus> tar zxf binutils-2.11.tar.gz
/home/linus> tar zxf gcc-3.0.4.tar.gz
/home/linus> tar zxf gdb-5.1.1.tar.gz
</pre>
<h2>Create the directory tree</h2>
<p>
<pre>
/home/linus> mkdir build
/home/linus> cd build
/home/linus/build> mkdir binutils
/home/linus/build> mkdir gcc
/home/linus/build> mkdir gdb
</pre>
<h2>Choose location</h2>
<p>
Now is the time to decide where you want the tools to be installed. This is
the directory where all binaries, libraries, man pages and stuff end up when
you do "make install".
<p>
In this example I have chosen "/home/linus/sh1" as my installation directory, or <i>prefix</i> as it is called. Feel free to use any prefix, like
/usr/local/sh1 for example.
<h2>Build binutils</h2>
<p>
We will start with building the binutils (the assembler, linker and stuff).
This is pretty straightforward. We will be installing the whole tool chain
in the /home/linus/sh1 directory.
<pre>
/home/linus> cd build/binutils
/home/linus/build/binutils> ../../binutils-2.11/configure --target=sh-elf --prefix=/home/linus/sh1
/home/linus/build/binutils> make
/home/linus/build/binutils> make install
</pre>
<h2>Build GCC</h2>
<p>
Now you are ready to build GCC. To do this, you must have the newly built
binutils in the PATH.
<pre>
/home/linus> export PATH=/home/linus/sh1/bin:$PATH
/home/linus> cd build/gcc
/home/linus/gcc> ../../gcc-3.0.4/configure --target=sh-elf --prefix=/home/linus/sh1 --enable-languages=c
/home/linus/build/gcc> make
/home/linus/build/gcc> make install
</pre>
<h2>Build GDB</h2>
<p>
If you are planning to debug your code with GDB, you have to build it as well.
<pre>
/home/linus> export PATH=/home/linus/sh1/bin:$PATH
/home/linus> cd build/gdb
/home/linus/gdb> ../../gdb-5.1.1/configure --target=sh-elf --prefix=/home/linus/sh1
/home/linus/build/gdb> make
/home/linus/build/gdb> make install
</pre>
<h2>Done</h2>
<p>
If someone up there likes you, you now have a working tool chain for SH1.
To compile a file with gcc:
<pre>
/home/linus> sh-elf-gcc -c main.o main.c
</pre>
Good luck!
<p>
<i>Linus</i>
#include "foot.t"

View file

@ -1,27 +0,0 @@
#define _PAGE_ CVS Builds
#include "head.t"
<p>Number of compiler warnings the build generates. 0
(zero) means no warnings. The timestamp is GMT. <a
href="http://www.rockbox.org/twiki/bin/view/Main/TargetStatus">Target
Status</a>
<p>
<!--#include virtual="distbuild.link" -->
<a name="bleeding_edge"></a>
<h2>Bleeding edge builds</h2>
<p>These builds are as "bleeding edge" as you can get. They are updated on
every source change. (See status on the first line in the above table).
<p>These are complete installation archives.
<!--#exec cmd="./bleedmod.pl" -->
<p>
<a href="/twiki/bin/view/Main/UsingCVS">How to use CVS</a>
<p><a href="/viewcvs.cgi/">Browse the CVS repository</a>
#include "foot.t"

View file

@ -1,74 +0,0 @@
#define _PAGE_ Daily builds
#include "head.t"
<h2>Daily Builds for Different Models</h2>
<p>These are automated daily builds of the code in CVS. They contain all the
latest features. They may also contain bugs and/or undocumented changes... <a
href="/twiki/bin/view/Main/DeviceChart">identify your model</a>
<h2>Daily Build</h2>
<a name="target_builds"></a>
<a name="daily_builds"></a>
<!--#exec cmd="./dailymod.pl" -->
<h2>Daily Changelog</h2>
<!--#exec cmd="./dailysrc.pl" -->
<h2>Donate</h2>
<p>If you enjoy using Rockbox, consider donating to the project. While we
develop the software in our spare time, equipment and players cost real money.
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="bjorn@haxx.se">
<input type="hidden" name="item_name" value="Donation to the Rockbox project">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="cn" value="Note to the Rockbox team">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="tax" value="0">
<input type="image" src="/paypal-donate.gif" border="0" name="submit">
</form>
#if 0
<h2>CVS Compile Status</h2>
<p>CVS code build status: number of compiler warnings the build generates. 0
(zero) means no warnings. The timestamp is GMT. <a
href="http://www.rockbox.org/twiki/bin/view/Main/TargetStatus">Target
Status</a>
<p>
<!--#include virtual="buildstatus.link" -->
<a name="bleeding_edge"></a>
<h2>Bleeding edge builds</h2>
<p>These builds are as "bleeding edge" as you can get. They are updated on
every source change. (See status on the first line in the above table).
<p>These are complete installation archives.
<p>
<a href="auto/build-player/rockbox.zip">Player</a>
<a href="auto/build-recorder/rockbox.zip">Recorder</a>
<a href="auto/build-ondiosp/rockbox.zip">Ondio SP</a>
<a href="auto/build-ondiofm/rockbox.zip">Ondio FM</a>
<a href="auto/build-fmrecorder/rockbox.zip">FM Recorder</a>
<a href="auto/build-recorderv2/rockbox.zip">V2 Recorder</a>
<a href="auto/build-recorder8mb/rockbox.zip">8MB Recorder</a>
<a href="auto/build-h100/rockbox.zip">iriver h100</a>
<a href="auto/build-h120/rockbox.zip">iriver h120</a>
<a href="auto/build-h300/rockbox.zip">iriver h300</a>
<a href="auto/build-ipodcolor/rockbox.zip">iPod Color</a>
<a href="auto/build-ipodnano/rockbox.zip">iPod Nano</a>
<a href="auto/build-ipod4gray/rockbox.zip">iPod 4G Gray</a>
<a href="auto/build-ipodvideo/rockbox.zip">iPod Video</a>
<a href="auto/build-source/rockbox-bleeding.tar.gz">source</a>
<p>
<a href="/twiki/bin/view/Main/UsingCVS">How to use CVS</a>.
#endif
#include "foot.t"

View file

@ -1,89 +0,0 @@
#!/usr/bin/perl
require "rockbox.pm";
my $basedir = "/home/dast/rockbox-build/daily-build";
my @list=("player",
"recorder", "recorder8mb",
"fmrecorder", "fmrecorder8mb",
"recorderv2",
"ondiofm", "ondiosp",
"h100", "h120", "h300",
"ipodcolor", "ipodnano", "ipod4gray", "ipodvideo",
"ipod3g", "iaudiox5",
# install and source are special cases
#"install",
"source");
for(@list) {
my $dir = $_;
opendir(DIR, "$basedir/$dir") or next;
my @files = sort grep { /^rockbox/ } readdir(DIR);
closedir DIR;
for(@files) {
/(20\d+)/;
$date{$1}=$1;
}
}
for(reverse sort keys %date) {
my $d = $_;
my $nice = $d;
if($d =~ /(\d\d\d\d)(\d\d)(\d\d)/) {
$nice = "$1-$2-$3";
}
print "<table class=rockbox cellpadding=\"0\"><tr valign=top>\n";
$color1 -= 0x18;
$color2 -= 0x18;
$color3 -= 0x18;
my $count = 0;
my $split = int((scalar @list) / 2);
my $x = 0;
my @head;
foreach $t (@list) {
my $show = $t;
$show =~ s/recorder/rec/;
# Remove the comment below to get long names
$show = $longname{$t};
$head[$x] .= "<th>$show</th>\n";
$count++;
if ($count == $split) {
$x++;
}
}
print "$head[0]</tr><tr>\n";
$count = 0;
for(@list) {
my $m = $_;
printf "<td><img alt=\"$m\" src=\"$model{$m}\"><br>";
# new-style full zip:
my $file = "rockbox-${m}-${d}.zip";
if($m eq "source") {
$file = "rockbox-daily-${d}.tar.gz";
}
elsif($m eq "install") {
$file = "Rockbox-${d}-install.exe";
}
if( -f "$basedir/$m/$file") {
printf "<a href=\"http://download.rockbox.org/daily/$_/$file\">latest</a>",
}
print "<p><a href=\"/dl.cgi?bin=$_\">older</a></td>\n";
$count++;
if ($count == $split) {
print "</tr><tr>$head[1]</tr><tr>\n";
}
}
print "</tr>\n";
last;
}
print "</table>\n";

View file

@ -1,21 +0,0 @@
#!/usr/bin/perl
$basedir = "/home/dast/rockbox-build/daily-build/";
opendir(DIR, $basedir) or
die "Can't opendir($basedir)";
@tarballs = sort grep { /^rockbox-daily-/ } readdir(DIR);
closedir DIR;
for ( sort {$b cmp $a} @tarballs ) {
$size = (stat("$basedir/$_"))[7];
$log = "";
if (/-(\d+)/) {
$date = $1;
if ( -f "$basedir/changes-$date.html") {
$log = "<a href=\"daily/changes-$date.html\">Changes done $date</a>";
}
}
print "$log\n";
last;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 722 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 727 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 788 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 612 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 883 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 989 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 983 KiB

View file

@ -1,9 +0,0 @@
ACTION=@echo preprocessing $@; rm -f $@; $(HOME)/bin/fcpp -WWW -I.. -Uunix -H -C -V -LL >$@
SRC := $(wildcard *.t)
OBJS := $(SRC:%.t=%.html)
all: $(OBJS)
%.html : %.t
$(ACTION) $<

View file

@ -1,5 +0,0 @@
4083: Comparison between Recorder and Player
4084: Contest: Spot the development box!
4086: A stack of "virgins"!
4087: A pre-4.50 player (left) and a post-4.50 player (right).
4089: There's lots of fun to be had with these things!

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

View file

@ -1,132 +0,0 @@
#define _PAGE_ Rockbox Developer Conference 2002
#include "head.t"
<table align="right"><tr><td><a href="show.cgi?img4083.jpg"><img src="img4083t.jpg" alt="photo" border=0 width=200 height=150></a><br><small><i>Comparison of Recorder and Player</i></small></td></tr></table>
<p>Well, almost. :-) Björn, Linus, Daniel and Kjell sat down at Linus' house
friday night (2002-04-19) with our Archoses and had a long and fruitful discussion about software design.
Here are a few things that we discussed:
<h2>Application Programming Interfaces</h2>
<p>We want to try to stick to POSIX where these exist and are practical. The
reason is simply that many people already know these APIs well. Here are a
few which haven't already been defined in the code:
<h3>File operations</h3>
<ul>
<li>open
<li>close
<li>read
<li>write
<li>seek
<li>unlink
<li>rename
</ul>
<table align="right"><tr><td><a href="show.cgi?img4084.jpg"><img src="img4084t.jpg" alt="photo" border=0 width=200 height=150></a>
<br><small><i>Contest: Spot the development box!</i></small></td></tr></table>
<h3>Directory operations</h3>
<ul>
<li>opendir
<li>closedir
<li>readdir
</ul>
<h3>Disk operations</h3>
<ul>
<li>readblock
<li>writeblock
<li>spindown
<li>diskinfo
<li>partitioninfo
</ul>
<p>We also decided that we will use the 'newlib' standard C library,
replacing some functions with smaller variants as we move forward.
<h2>Multitasking</h2>
<p>We spent much time discussing and debating task scheduling, or the lack
thereof. First, we went with the idea that we don't really need "real"
scheduling. Instead, a simple "tree-task" system would be used: A
main-loop, a timer tick and a "bottom half" low-priority interrupt, each
with an event queue.
<p>Pretty soon we realized that we will want to:
<ol style="a">
<li> Use a timer tick to poll disk I/O (assuming we can't get an interrupt)
<li> Perform slow disk operations in both the MP3->DAC feeder and the user
interface, sometimes at the same time.
<li> Not lock up the user interface during I/O.
</ol>
<table align="right"><tr><td><a href="show.cgi?img4086.jpg"><img src="img4086t.jpg" alt="photo" border=0 width=200 height=150></a>
<br><small><i>A stack of "virgins"!</i></small></td></tr></table>
<p>At the same time, we agreed that we should not walk into the common trap
of engaging in "job splitting". That is, to split up jobs in small chunks
so they don't take so long to finish. The problem with job splitting is
that it makes the code flow very complex.
<p>After much scratching our collective heads over how to make a primitive
"three-task" system be able to do everything we wanted without resorting
to complex job splitting, we finally came to the conclusion that we were
heading down the wrong road:
<p><blockquote>
<b>We need threading.</b>
</blockquote>
<p>Even though a scheduler adds complexity, it makes the rest of the code so
much more straight-forward that the total net result is less overall
complexity.
<p>To keep it simple, we decided to use a cooperative scheduler. That is, one
in which the threads themselves decide when scheduling is performed. The
big gain from this, apart from making the scheduler itself less complex,
is that we don't have to worry as much about making all code "multithread
safe".
<p>Affording ourselves the luxury of threads, we soon identified four basic
threads:
<ul>
<li>Disk thread, performing all disk operations
<li>UI thread, handling the user interface
<li>MP3 feed thread, making sure the MAS is fed with data at all times
<li>I2C thread, handling the sometimes very relaxed timing of the I2C bus
</ul>
<p>Threads use message passing between them and each have a message queue
associated to it.
<table align="right"><tr><td><a href="show.cgi?img4089.jpg"><img src="img4089t.jpg" alt="photo" border=0 width=200 height=150></a>
<br><small><i>There's much fun to be had with these things!</i></small></td></tr></table>
<p>In addition to the threads, we need a timer interrupt with the ability to
send messages to threads at specific intervals. This will also be used to
scan the keys of the jukebox and handle key repeat detection (when a key
has been pressed for a number of ticks).
<p>None of these things are, of course, written in stone. Feel free to
comment, discuss and argue about them!
<p>We are currently 89 subscribers to this list. If you want to get more
deeply involved in what's going on, I encourage you to:
<ul>
<li>Subscribe to the rockbox-cvs list, to see all code that goes in.
<li>Join the #rockbox channel on irc.openprojects.net. There are always a
couple of us in there.
</ul>
<p>I have written a set of guidelines for contributing code to the project.
Take a look at them in CVS or here:
<a href="http://bjorn.haxx.se/rockbox/firmware/CONTRIBUTING">CONTRIBUTING</a>
<p>/Björn
#include "foot.t"

View file

@ -1,31 +0,0 @@
ACTION=@echo preprocessing $@; \
fcpp -WWW -I.. -Uunix -H -C -V -LL $< $@
SRC := $(wildcard *.t)
OBJS := $(SRC:%.t=%.html)
all: $(OBJS) digest.rss digest.mail
digest.html: digest.t news.t digesthead.t log.t
$(ACTION)
index.html: index.t ../head.t news.t ../foot.t
%.html : %.t news.t digesthead.t log.t
$(ACTION)
digest.mail: mail.t log.t mailify.pl
@echo mailifying $@;
fcpp -WWW -DMAKE_MAIL -Uunix -P -H -C -V -LL $< digest.temp
./mailify.pl < digest.temp > digest.mail
digest.rss: digest.t digesthead.t log.raw
@echo rssing $@;
@rm -f $@;
@fcpp -WWW -DMAKE_RSS -Uunix -P -H -C -V -LL >$@ $<
log.raw: log.t rssify.pl digesthead.t
./rssify.pl < $< >$@

View file

@ -1,4 +0,0 @@
#define DIGESTDATE 2003-april
#include "digesthead.t"
#include "log.raw"
#include "digestfoot.t"

View file

@ -1,8 +0,0 @@
#ifndef MAKE_RSS
#ifndef MAKE_MAIL
#include "foot.t"
#endif
#else
</channel>
</rss>
#endif

View file

@ -1,45 +0,0 @@
#ifndef MAKE_RSS
#ifdef MAKE_MAIL
#define ZAGOR Björn Stenberg
#define BAGDER Daniel Stenberg
#define LINUSN Linus Nielsen Feltzing
#define NEWSDATE(x) Date: x
#define ITEM ---
#define NAME(x) x
#define ENDDATE
#define LINK(url,name) [URL]url[URL] [TEXT]name[TEXT]
#else
#define _PAGE_ Rockbox Digest
#include "head.t"
#include "news.t"
<small>
<a href="./">digest front page</a>
&middot;
<a href="./digest.rss">digest RSS feed</a>
</small>
<p>
#endif
#else
<?xml version="1.0"?>
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">
<rss version="0.91">
<channel>
<title>Rockbox Digest</title>
<link>http://rockbox.haxx.se/digest/digest.html</link>
<description>Detailing the latest and the most significant subjects about Rockbox.</description>
<language>en</language>
#define NEWSDATE(x) <item><title>x</title><link>http://rockbox.haxx.se/digest/digest.html</link> <description> &lt;ol&gt;
#define ENDDATE &lt;/ol&gt; </description></item>
#define ITEM &lt;li&gt;
#define NAME(x) x
#define ZAGOR Bj&ouml;rn Stenberg
#define BAGDER Daniel Stenberg
#define LINUSN Linus Nielsen Feltzing
#define LINK(url, name) &lt;a href=url&gt;name&lt;/a&gt;
#endif

View file

@ -1,31 +0,0 @@
#define _PAGE_ Rockbox Digests - News From the Front
#include "head.t"
#include "news.t"
<p> NAME(Jonas Häggqvist) is the editor of the Rockbox digest section. He tries to keep up
with discussions on IRC, the mailing list, the sourceforge trackers and CVS
commits to sum up what's going on in the project in a slightly digested
manner. Suitable for outsiders who don't care to follow the intense
development mailing list and similar.
<p align="center">
<big><a href="digest.html">The Most Recent Digest</a></big>
<p> You can also access the digest as a <a href="digest.rss">RSS feed</a>.
<p> You should be able to get a Rockbox sidebar in your Netscape/Mozilla
browser using <a href="http://sidenews.net/">sidenews.net</a>.
<p> The work on this was started on April 15th, 2003. On the day of the
Rockbox 2.0 release. If you found something you think are wrong, anything
I've missed in here or similar, drop me a mail at <a
href="mailto:rockbox-digest at haxx dot se">rockbox-digest at haxx dot
se</a>. If you have ideas or opinions about the actual subjects mentioned, <a
href="/mail/">join the mailing list</a> and post about it there.
<p> <a
href="http://feedvalidator.org/check.cgi?url=http://www.rockbox.org/digest/digest.rss">
<img src="valid-rss.png" alt="[Valid RSS]" title="Validate my RSS feed"
width="88" height="31" border="0" /></a>
#include "foot.t"

File diff suppressed because it is too large Load diff

View file

@ -1,3 +0,0 @@
#include "digesthead.t"
#include "log.t"
#include "digestfoot.t"

View file

@ -1,130 +0,0 @@
#!/usr/bin/perl
my $end++;
my @out;
my $url;
my $urlnum=1;
sub showlinks {
my ($date)=@_;
if(scalar(keys %store)) {
print "\n";
for(sort {$store{$a} <=> $store{$b} } keys %store) {
my $url=$_;
$url =~ s/^\"(.*)\"/$1/g;
printf("[%d] = %s\n", $store{$_}, $url);
}
undef %store;
$urlnum=1; # reset to 1
}
}
sub showitem {
my @text=@_;
if(@text) {
my $c=3;
my $width=72;
print " * ";
my $thelot = join(" ", @text);
for (split(/[ \t\n]/, $thelot)) {
my $word = $_;
$word =~ s/[ \t]//g;
my $len = length($word);
if(!$len) {
next; # skip blanks
}
if($len + $c + 1> $width) {
print "\n ";
$c = 3;
}
elsif($c != 3) {
print " ";
$c++;
}
print $word;
$c += $len;
}
}
print "\n"; # end of item
# my @words=split(
}
sub date2secs {
my ($date)=@_;
my $secs = `date -d "$date" +"%s"`;
return 0+$secs;
}
while(<STDIN>) {
my $line = $_;
if($_ =~ /^Date: (.*)/) {
my $date=$1;
my $secs = date2secs($date);
my $tendaysago = time()-(14*24*60*60);
showitem(@out);
undef @out;
chomp;
showlinks();
if($secs < $tendaysago) {
last;
}
print "\n----------------------------------------------------------------------\n$_";
next;
}
elsif($line =~ /^ *(---)(.*)/) {
showitem(@out);
@out="";
$line = $2;
}
if($line =~ s/\[URL\](.*)\[URL\]//) {
$url=$1;
if(!$store{$url}) {
$footnote = "[$urlnum]";
$store{$url} = $urlnum;
$urlnum++;
}
else {
$footnote = "[".$store{$url}."]";
}
# print STDERR "Set $footnote for $url\n";
}
if($line =~ s/\[TEXT\](.*)\[TEXT\]/$1$footnote/) {
# print STDERR "Output $footnote (full TEXT)\n";
undef $text;
}
elsif(!$text && ($line =~ s/\[TEXT\](.*)/$1/)) {
# print STDERR "Detected start of TEXT\n";
$text = $1;
}
elsif($text && ($line =~ s/(.*)\[TEXT\]/$1$footnote/)) {
# print STDERR "Output $footnote (end-TEXT)\n";
undef $text;
}
push @out, $line;
}
if(@out) {
showitem(@out);
}

View file

@ -1,11 +0,0 @@
#define ITEM <li class="news">
#define NEWSDATE(x) <p><a name="x"></a><div class="newsdate">x</div> <p><ol>
#define ENDDATE </ol>
#define NAME(x) <b>x</b>
#define ZAGOR <a href="http://bjorn.haxx.se/">Björn Stenberg</a>
#define BAGDER <a href="http://daniel.haxx.se/">Daniel Stenberg</a>
#define LINUSN NAME(Linus Nielsen Feltzing)
#define LINK(url,name) <a href=url>name</a>

View file

@ -1,32 +0,0 @@
#!/usr/bin/perl
my $fill = "RRREEEPPP";
my $end++;
while(<STDIN>) {
my $line = $_;
# $line =~ s/ZAGOR/Björn Stenberg/g;
$line =~ s/Ö/\&Ouml;/g;
$line =~ s/ö/\&ouml;/g;
$line =~ s/</\&lt;/g;
$line =~ s/>/\&gt;/g;
if($line =~ s/(LINK\((\"([^\"]*)\"))/$fill/) {
my $url = $2;
$url =~ s/@/\#%40;/g;
$url =~ s/=/\#%3D;/g;
$url =~ s/&/\&amp;/g;
$line =~ s/$fill/LINK\($url/;
}
print $line;
if($line =~ /^ *ENDDATE/) {
if($end++ == 15) {
last;
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -1,81 +0,0 @@
ROCKBOX "QUICK HELP" FOR JUKEBOX RECORDERS
A "How to/Where to" short section can be found at the end of this file.
GENERAL KEY CONTROL
OFF: Quick press: End current function
Hold: Switch off the Jukebox (not advised while an MP3 is playing, i.e. without first stopping playback)
DIRECTORY BROWSING KEY CONTROLS
UP/DOWN: Go to previous/next item in list. If you are on the first/last entry, the cursor will wrap to the last/first entry.
ON+UP/DOWN: Move one page up/down in the list.
LEFT: Go to the parent directory.
PLAY/RIGHT: Execute an action. Depending on the file type, that action may vary.
ON: If there is an MP3 playing, return to the While Playing Screen (WPS)
ON+PLAY: Enter the File Menu
F1: Switch to/leave the Main Menu
F2: Switch to/leave the Browse/play Quick Menu
F3: Switch to/leave the Display Quick Menu
NAVIGATING THROUGH THE MENU
UP: Move up in the menu. Inside a setting, increases the value or chooses next option
DOWN: Move down in the menu. Inside a setting, decreases the value or chooses previous option
PLAY/RIGHT: Select option
OFF/LEFT: Exit menu, setting or move to parent menu
WPS KEY CONTROLS (from the "While Playing" Sscreen)
UP/DOWN: Volume up/down
LEFT: Quick press: Go to beginning of track, or if pressed while in the first seconds of a track, go to previous track
Hold: Rewind in track
RIGHT: Quick press: Go to next track.
Hold: Fast-forward in track.
PLAY: Toggle play/pause
ON: Quick press: Go to file browser
Hold: Show pitch setting screen
OFF: Quick press: Stop playback
Hold: Switch off the Jukebox (not advised from this screen, i.e. without first stopping playback)
F1: Go to Main menu
F2: Toggle Play/browse quick menu
F3: Toggle Display quick menu
F1+DOWN: Key lock on/off (Note: The OFF key is always active)
F1+PLAY: Mute on/off
F1+ON: Enter ID3 viewer
RECORDING KEY CONTROLS (from the "While Recording" Screen)
LEFT: Decrease Gain
RIGHT: Increase Gain
PLAY: Start recording.
OFF: Quick press: Exit Recording Screen. If Recording a file, stop recording.
Hold: Switch off the Jukebox (not advised from this screen, i.e. without first stopping recording)
F1: Open Recording Settings screen
F2: Quick menu for Recording settings.
A quick press will leave the screen up (press F2 again to exit),
holding F2 will show the screen which will close when you release the key
F3: Quick menu for source setting.
Quick/hold works as for F2.
FILE MENU (entered by pressing ON+PLAY while pointing to a file in a directory)
This menu shows the next options:
QUEUE (only if a song is playing already): Rockbox can enqueue up to 100 files. This function needs a folder called .rockbox to save the queue file there.
RENAME: This function lets the user modify a file name. To move the cursor backward and forward in the newname field use ON+LEFT/RIGHT
DELETE: Rockbox can only delete files, not folders. Rockbox will ask for confirmation before deleting a file.
UPDATE VBR FILE: Scan the VBR file and update/create the Xing header. The Xing header contains information about the VBR stream, to calculate average bit rate and to more accurately fw/rew in the stream.
SUPPORTED FILE FORMATS
Directory: The browser enters that directory
.mp3 Rockbox takes you to the WPS and starts playing the file
.m3u Rockbox loads the playlist and starts playing the first file
.ajz ROLO will load the new firmware
.wps The new WPS display configuration will be loaded
.lng That language will replace the current one
.txt You will read the text file using Rockbox text viewer
.cfg The settings file will be loaded
.fnt This font will replace the current one
??? HOW TO/WHERE TO ???
LOCK/UNLOCK KEYS: While playing an MP3 press F1+DOWN
QUEUE a file: While playing an MP3 and browsing directories press ON+PLAY to open the File Menu then select QUEUE
SEE ID3 INFO: While playing an MP3 press F1+ON or use the Main Menu (Show ID3 Info)
LEAVE THE ID3 INFO DISPLAY: "Quick press" the OFF key
BOOKMARK A TRACK: This is not standard yet, you have to use a patched version of Rockbox (but that should come soon...)
CREATE A PLAYLIST OF A DIRECTORY TREE: While inside this directory -> Main Menu (F1) -> Create playlist. The resulting file is in the upper level directory.

View file

@ -1,62 +0,0 @@
ROCKBOX "QUICK HELP" FOR JUKEBOX STUDIO/PLAYERS
A "How to/Where to" short section can be found at the end of this file.
GENERAL KEY CONTROL
STOP: Quick press: End current function
Hold: Switch off the Jukebox (not advised while an MP3 is playing, i.e. without first stopping playback)
DIRECTORY BROWSING KEY CONTROLS
LEFT/RIGHT: Go to previous/next item in list. If you are on the first/last entry, the cursor will wrap to the last/first entry.
STOP: Go to the parent directory.
PLAY: Execute an action. Depending on the file type, that action may vary.
ON: If there is an MP3 playing, return to the While Playing Screen (WPS)
ON+PLAY: Enter the File Menu
MENU: Switch to the Main Menu
NAVIGATING THROUGH THE MENU
LEFT: Select previous option in the menu. Inside a setting, decrease the value or choose previous option
RIGHT: Select next option in the menu. Inside a setting increase the value or choose next option
PLAY: Select item
STOP: Exit menu, setting, or move to parent menu.
WPS KEY CONTROLS (from the "While Playing" Sscreen)
MENU+RIGHT: Increase volume
MENU+LEFT: Decrease volume
LEFT: Quick press: Go to beginning of track, or if pressed while in the first seconds of a track, go to previous track
Hold: Rewind in track
RIGHT: Quick press: Go to next track.
Hold: Fast-forward in track.
PLAY: Toggle play/pause
ON: Quick press: Go to file browser
STOP: Quick press: Stop playback
Hold: Switch off the Jukebox (not advised from this screen, i.e. without first stopping playback)
MENU: Go to Main menu
MENU+STOP: Key lock on/off (Note: The OFF key is always active)
MENU+PLAY: Mute on/off
MENU+ON: Enter ID3 viewer
FILE MENU (entered by pressing ON+PLAY while pointing to a file in a directory)
This menu shows the next options:
QUEUE (only if a song is playing already): Rockbox can enqueue up to 100 files. This function needs a folder called .rockbox to save the queue file there.
RENAME: This function lets the user modify a file name. To move the cursor backward and forward in the newname field use ON+LEFT/RIGHT
DELETE: Rockbox can only delete files, not folders. Rockbox will ask for confirmation before deleting a file.
UPDATE VBR FILE: Scan the VBR file and update/create the Xing header. The Xing header contains information about the VBR stream, to calculate average bit rate and to more accurately fw/rew in the stream.
SUPPORTED FILE FORMATS
Directory: The browser enters that directory
.mp3 Rockbox takes you to the WPS and starts playing the file
.m3u Rockbox loads the playlist and starts playing the first file
.mod ROLO will load the new firmware
.wps The new WPS display configuration will be loaded
.lng That language will replace the current one
.txt You will read the text file using Rockbox text viewer
.cfg The settings file will be loaded
??? HOW TO/WHERE TO ???
LOCK/UNLOCK KEYS: While playing an MP3 press MENU+STOP
QUEUE a file: While playing an MP3 and browsing directories press ON+PLAY to open the File Menu then select QUEUE
SEE ID3 INFO: While playing an MP3 press MENU+ON or use the Main Menu (Show ID3 Info)
LEAVE THE ID3 INFO DISPLAY: "Quick press" the STOP key
BOOKMARK A TRACK: This is not standard yet, you have to use a separate patched version of Rockbox (but that should come soon...)
CREATE A PLAYLIST OF A DIRECTORY TREE: While inside this directory -> Main Menu (MENU) -> Create playlist. The resulting file is in the upper level directory.

View file

@ -1,83 +0,0 @@
ACTION=@echo preprocessing $@; rm -f $@; $(HOME)/bin/fcpp -WWW -I.. -Uunix -H -C -V -P -LL >$@
SRC := $(wildcard *.t)
OBJS := $(SRC:%.t=%.html)
FAQ2HTML = ../faq2html.pl
TXT2HTML = ../txt2html.pl
# This is correct. It does point to ../../docs but we need a different
# name so that the directories don't collide.
DOCS = ../docs_
all: $(OBJS)
faq.raw: $(DOCS)/FAQ $(FAQ2HTML)
$(FAQ2HTML) < $< > $@
faq.html: faq.t faq.raw $(FAQ2HTML)
$(ACTION) $<
nodo.raw: $(DOCS)/NODO $(FAQ2HTML)
$(FAQ2HTML) < $< > $@
nodo.html: nodo.t nodo.raw $(FAQ2HTML)
$(ACTION) $<
battery-faq.raw: $(DOCS)/BATTERY-FAQ $(FAQ2HTML)
$(FAQ2HTML) < $< > $@
battery-faq.html: battery-faq.t battery-faq.raw $(FAQ2HTML)
$(ACTION) $<
battery-faq-liion.raw: $(DOCS)/BATTERY-FAQ-LIION $(FAQ2HTML)
$(FAQ2HTML) < $< > $@
battery-faq-liion.html: battery-faq-liion.t battery-faq-liion.raw $(FAQ2HTML)
$(ACTION) $<
contributing.raw: $(DOCS)/CONTRIBUTING $(TXT2HTML)
$(TXT2HTML) < $< > $@
contributing.html: contributing.t contributing.raw $(TXT2HTML)
$(ACTION) $<
custom_wps_format.raw: $(DOCS)/CUSTOM_WPS_FORMAT $(TXT2HTML)
$(TXT2HTML) < $< > $@
custom_wps_format.html: custom_wps_format.t custom_wps_format.raw $(TXT2HTML)
$(ACTION) $<
custom_cfg_format.raw: $(DOCS)/CUSTOM_CFG_FORMAT $(TXT2HTML)
$(TXT2HTML) < $< > $@
custom_cfg_format.html: custom_cfg_format.t custom_cfg_format.raw $(TXT2HTML)
$(ACTION) $<
how_to_compile.raw: $(DOCS)/README $(TXT2HTML)
$(TXT2HTML) < $< > $@
how_to_compile.html: how_to_compile.t how_to_compile.raw $(TXT2HTML)
$(ACTION) $<
uisimulator.raw: $(DOCS)/UISIMULATOR $(TXT2HTML)
$(TXT2HTML) < $< > $@
uisimulator.html: uisimulator.t uisimulator.raw $(TXT2HTML)
$(ACTION) $<
credits.raw: $(DOCS)/CREDITS $(TXT2HTML)
egrep -v '^( |People that have|$$)' $< | awk '{ print $$0 " <br>" }' > $@
credits.html: credits.t credits.raw $(TXT2HTML)
$(ACTION) $<
license.raw: $(DOCS)/COPYING $(TXT2HTML)
$(TXT2HTML) < $< > $@
license.html: license.t license.raw $(TXT2HTML)
$(ACTION) $<
%.html : %.t
$(ACTION) $<

View file

@ -1,6 +0,0 @@
#define _PAGE_ FAQ - Frequently Asked Battery Questions
#include "head.t"
#include "battery-faq.raw"
#include "foot.t"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -1,8 +0,0 @@
#define _PAGE_ Contributing to Rockbox
#include "head.t"
<pre>
#include "contributing.raw"
</pre>
#include "foot.t"

View file

@ -1,11 +0,0 @@
#define _PAGE_ The Heroes of Rockbox
#include "head.t"
<p>
People that have contributed to the project, one way or another. Friends!
<p>
#include "credits.raw"
#include "foot.t"

View file

@ -1,8 +0,0 @@
#define _PAGE_ Configuring the Player WPS
#include "head.t"
<pre>
#include "custom_wps_format.raw"
</pre>
#include "foot.t"

View file

@ -1,14 +0,0 @@
#define _PAGE_ Setting up a cygwin Rockbox development environment
#include "head.t"
<p>
This page has been replaced. Try one of these instead:
<p>
<a
href="http://www.rockbox.org/twiki/bin/view/Main/CygwinDevelopment">CygwinDevelopment</a>
<br>
<a href="http://www.rockbox.org/twiki/bin/view/Main/CrossCompiler">CrossCompiler</a>
#include "foot.t"

View file

@ -1,51 +0,0 @@
#define _PAGE_ Useful data sheets
#include "head.t"
<p>All in PDF format.
<h2>General docs</h2>
<ul>
<li><a href="cpu_sh1_pb.pdf">Hitachi SH-1 Product Brief</a> 120 kB
<li><a href="sh1_2p.pdf">Hitachi SH-1 Programming Manual r4.0</a> 1600 kB
<li><a href="sh7032h.pdf">Hitachi SH-1 Hardware Manual r5.0</a> 2300 kB
<li><a href="flash_SST37VF512.pdf">SST SST37VF020 256kB Flash ROM</a> 172 kB
<li><a href="ata-atapi-v5.pdf">ATA-ATAPI-5</a> 2772 kB
</ul>
<h2>Player specific</h2>
<ul>
<li><a href="SSD1801R0_4.pdf">Solomon SSD 1801 LCD controller</a> 584 kB (unconfirmed)
<li><a href="dsp_mas3507d_3pd.pdf">Micronas MAS 3507D MPEG Audio Decoder</a> 872 kB
<li><a href="dac_dac3550a_1ds.pdf">Micronas DAC 3550A Stereo Audio DAC</a> 592 kB
<li><a href="dram_41c16105.pdf">ISSI IS41LV16105 Fast Page DRAM</a> 148 kB
<li><a href="isd200.pdf">ISD-200 USB/ATA bridge</a> 376 kB
</ul>
<h2>Recorder specific</h2>
<ul>
<li><a href="ssd1815r1_5.pdf">Solomon SSD 1815 LCD controller</a> 864 kB
<li><a href="g112064-30-3.pdf">Shing Yih G112064-30 LCD display</a> 102 kB
<li><a href="mas3587f_2pd.pdf">Micronas MAS 3587F MPEG Audio Encoder/Decoder</a> 1300 kB
<li><a href="dram_k4e151612d.pdf">Samsung K4E151612D EDO DRAM</a> 400 kB
</ul>
<ul>
<li><a href="dc2dc_LM2651.pdf">National LM2651 DC/DC converter</a> 200 kB
<li><a href="dc2dc_MC34063A.pdf">Fairchild MC34064A DC/DC converter</a> 45 kB
<li><a href="fet_FZT849.pdf">FZT824 High Current Transistor</a> 60 kB
<li><a href="rtc_tm41st84w.pdf">ST M41ST84W Real Time Clock</a> 180 kB
<li><a href="isd300.pdf">ISD-300 USB/ATA bridge</a> 376 kB
</ul>
<h2>FM Recorder specific</h2>
<ul>
<li><a href="S1A0903X01.pdf">Samsung S1A0903X01 AM/FM 1chip tuner with PLL</a> 547 kB
<li><a href="1734i.pdf">Linear 1734 Litium-Ion Battery Charger</a> 140 kB
<li><a href="1872f.pdf">Linear 1872 Step-up DC/DC controller</a> 182 kB
<li><a href="SP6650.pdf">Sipex SP6650 Synchronous Buck Regulator</a> 171 kB
<li><a href="rtc_tm41st84w.pdf">ST M41ST84W Real Time Clock</a> 180 kB
<li><a href="isd300.pdf">ISD-300 USB/ATA bridge</a> 376 kB
</ul>
#include "foot.t"

View file

@ -1,368 +0,0 @@
#define _PAGE_ Devices and features
#include "head.t"
<table border=1>
<tr><th>&nbsp;</th>
<th valign=top>
<a href=oldplayer.jpg><img src=oldplayer_t.jpg></a><br>Old Player
</th>
<th valign=top>
<a href=newplayer.jpg><img src=newplayer_t.jpg></a><br>Player/Studio
</th>
<th valign=top>
<a href=recorder.jpg><img src=recorder_t.jpg></a><br>Old Recorder
<a href=#footnote1>(1)</a>
</th>
<th valign=top>
<a href=recorder.jpg><img src=recorder_t.jpg></a><br>Recorder
</th>
<th valign=top>
<a href=fmrecorder.jpg><img src=fmrecorder_t.jpg></a><br>FM Recorder
</th>
<th valign=top>
<a href=fmrecorder.jpg><img src=fmrecorder_t.jpg></a><br>V2 Recorder
<a href=#footnote4>(4)</a>
</th>
<th valign=top>
<a href=ondiofm.jpg><img src=ondiofm_t.jpg></a><br>Ondio FM
</th>
<th valign=top>
<a href=ondiosp.jpg><img src=ondiosp_t.jpg></a><br>Ondio SP
</th>
<th valign=top>
<img src="h100_t.jpg"><br>iRiver H120
</th>
<th valign=top>
<img src="h100_t.jpg"><br>iRiver H140<br>
<a href=#footnote5>(5)</a>
</th>
</tr>
<tr><th><b>USB</b></th>
<td>1.1</td>
<td>1.1</td>
<td>1.1</td>
<td>2.0</td>
<td>2.0</td>
<td>2.0</td>
<td>1.1</td>
<td>1.1</td>
<td>2.0</td>
<td>2.0</td>
</tr>
<tr><th><b>Bumper Colors</b></th>
<td>Blue</td>
<td>Blue</td>
<td>Blue or Black</td>
<td>Blue or Black</td>
<td>Blue</td>
<td>Blue</td>
<td>Blue-violet</td>
<td>Blue-violet</td>
<td>none</td>
<td>none</td>
</tr>
<tr><th><b>S/PDIF</b></th>
<td>No</td>
<td>No</td>
<td>In+Out</td>
<td>In+Out</td>
<td>In</td>
<td>In</td>
<td>No</td>
<td>No</td>
<td>Optical In+Out</td>
<td>Optical In+Out</td>
</tr>
<tr><th><b>Separate Line Out</b></th>
<td>Yes</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr><th><b>Remote control</b></th>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes with LCD</td>
<td>Yes with LCD</td>
</tr>
<tr><th><b>Recording</b></th>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr><th><b>LCD Type</b></th>
<td>Character 11x2 <a href=#footnote2>(2)</a></td>
<td>Character 11x2</td>
<td>Bitmap 112x64</td>
<td>Bitmap 112x64</td>
<td>Bitmap 112x64</td>
<td>Bitmap 112x64</td>
<td>Bitmap 112x64</td>
<td>Bitmap 112x64</td>
<td>Bitmap 160x128</td>
<td>Bitmap 160x128</td>
</tr>
<tr><th><b>LCD size</b></th>
<td>?</a></td>
<td>?</td>
<td>30x24mm</td>
<td>30x24mm</td>
<td>30x24mm</td>
<td>30x24mm</td>
<td>30x24mm</td>
<td>30x24mm</td>
<td>39x31mm</td>
<td>39x31mm</td>
</tr>
<tr><th><b>Real Time Clock</b></th>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
</tr>
<tr><th><b>Buttons</b></th>
<td>6</td>
<td>6</td>
<td>10</td>
<td>10</td>
<td>10</td>
<td>10</td>
<td>6</td>
<td>6</td>
<td>4 + "joystick"</td>
<td>4 + "joystick"</td>
</tr>
<tr><th><b>Alarm wake-up</b></th>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
</tr>
<tr><th><b>FM Radio</b></th>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>No <a href=#footnote3>(3)</a></td>
<td>Yes</td>
<td>No</td>
<td>87.5 - 108 MHz</td>
<td>87.5 - 108 MHz</td>
</tr>
<tr><th><b>RAM (MB)</b></th>
<td>2</td>
<td>2</td>
<td>2</td>
<td>2</td>
<td>2</td>
<td>2</td>
<td>2</td>
<td>2</td>
<td>32</td>
<td>32</td>
</tr>
<tr><th><b>MP3 decoder</b></th>
<td>MAS3507D / DAC3550A</td>
<td>MAS3507D / DAC3550A</td>
<td>MAS3587F</td>
<td>MAS3587F</td>
<td>MAS3587F</td>
<td>MAS3587F</td>
<td>MAS3587F</td>
<td>MAS3539F</td>
<td>software</td>
<td>software</td>
</tr>
<tr><th><b>Charging ctrl</b></th>
<td>Hardware</td>
<td>Hardware</td>
<td>Software</td>
<td>Software</td>
<td>Hardware</td>
<td>Hardware</td>
<td>no</td>
<td>no</td>
<td>Hardware</td>
<td>Hardware</td>
</tr>
<tr><th><b>Charge via USB</b></th>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
<td>Power</td>
<td>Power</td>
<td>No <a href="#footnote6">(6)</a></td>
<td>No <a href="#footnote6">(6)</a></td>
</tr>
<tr><th><b>Hard drive poweroff</b></th>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
<td>n.a.</td>
<td>n.a.</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr><th><b>CPU</b></th>
<td>SH7034 12 MHz</td>
<td>SH7034 12 MHz</td>
<td>SH7034 11.0592 MHz</td>
<td>SH7034 11.0592 MHz</td>
<td>SH7034 11.0592 MHz</td>
<td>SH7034 11.0592 MHz</td>
<td>SH7034 12 MHz</td>
<td>SH7034 12 MHz</td>
<td>Coldfire 5249 11 - 140 MHz</td>
<td>Coldfire 5249 11 - 140 MHz</td>
</tr>
<tr><th><b>Battery type</b></th>
<td>NiMH (Type AA)</td>
<td>NiMH (Type AA)</td>
<td>NiMH (Type AA)</td>
<td>NiMH (Type AA)</td>
<td>LiIon (Custom)</td>
<td>LiIon (Custom)</td>
<td>3*AAA</td>
<td>3*AAA</td>
<td>LiIon Polymer</td>
<td>LiIon Polymer</td>
</tr>
<tr><th><b>Charger spec</b></th>
<td>9-12V 600mA center&nbsp;+</td>
<td>9-12V 600mA center&nbsp;+</td>
<td>9-12V 600mA center&nbsp;+</td>
<td>9-12V 600mA center&nbsp;+</td>
<td>6V 700mA center&nbsp;+</td>
<td>6V 700mA center&nbsp;+</td>
<td>no charger</td>
<td>no charger</td>
<td>350mA 5 volt center&nbsp;+</td>
<td>350mA 5 volt center&nbsp;+</td>
</tr>
<tr><th><b>Dimensions</b></th>
<td>115x83x34 mm (4.5"x3.2"x1.3")</td>
<td>115x83x34 mm (4.5"x3.2"x1.3")</td>
<td>115x83x34 mm (4.5"x3.2"x1.3")</td>
<td>115x83x34 mm (4.5"x3.2"x1.3")</td>
<td>113x79x30 mm (4.45"x3.11"x1.18")</td>
<td>113x79x30 mm (4.45"x3.11"x1.18")</td>
<td>81x47x25 mm (3.1"x1.8"x0.9")</td>
<td>81x47x25 mm (3.1"x1.8"x0.9")</td>
<td>105x60x18 mm (4.1"x2.4"x0.7")</td>
<td>105x60x22 mm (4.1"x2.4"x0.9")</td>
</td>
</tr>
<tr><th><b>Weight</b></th>
<td>340 g (12 oz)</td>
<td>340 g (12 oz)</td>
<td>350 g (12.3 oz)</td>
<td>350 g (12.3 oz)</td>
<td>290 g (10.23 oz)</td>
<td>290 g (10.23 oz)</td>
<td>60 g (2.1 oz)</td>
<td>60 g (2.1 oz)</td>
<td>160g (5.6 oz)</td>
<td>172g (6.0 oz)</td>
</td>
</tr>
<tr><th><b>USB Connector</b></th>
<td>A male</td>
<td>A male</td>
<td>A male</td>
<td>A male</td>
<td>mini B female</td>
<td>mini B female</td>
<td>mini B female</td>
<td>mini B female</td>
<td>mini B female</td>
<td>mini B female</td>
</tr>
<tr><th><b>"Ear" Position</b></th>
<td>top</td>
<td>top</td>
<td>top</td>
<td>top</td>
<td>left side</td>
<td>left side</td>
<td>top left</td>
<td>top left</td>
<td>top left</td>
<td>top left</td>
</tr>
<tr><th><b>Storage</b></th>
<td>6 GB 2.5"</td>
<td>6-20 GB 2.5"</td>
<td>6-15 GB 2.5"</td>
<td>20 GB 2.5"</td>
<td>20 GB 2.5"</td>
<td>20 GB 2.5"</td>
<td>128 MB + MMC</td>
<td>128 MB + MMC</td>
<td>20 GB 1.8"</td>
<td>40 GB 1.8"</td>
</tr>
</table>
<p>
<a name="footnote1"></a><i>(1) It is hard to tell if the recorder is old, but
the Rec6 and Rec10 are old. The Rec15 seems to be available in both new and
old versions.</i>
<br> <a name="footnote2"></a><i>(2) The old player has a limited LCD with no
support for double line height and only four user definable characters
instead of eight.</i>
<br> <a name="footnote3"></a><i>(3) The early V2 models were in fact FM
Recorders in disguise, so they had the FM radio still mounted.</i>
<br> <a name="footnote4"></a><i>(4) The picture shows an FM Recorder, but
they look exactly the same, apart from the printed text.</i>
<br> <a name="footnote5"></a><i>(5) The picture shows an iRiver H120, but
they look exactly the same, apart from the printed text.
<br> <a name="footnote6"></a><i>(6) There is an adapter available for
charging from your host's USB cable, but that is a cable that splits the USB
and power and uses the iRiver's standard charging plug. It is not charging
via the music player's USB.
#include "foot.t"

View file

@ -1,6 +0,0 @@
#define _PAGE_ FAQ - Frequently Asked Questions
#include "head.t"
#include "faq.raw"
#include "foot.t"

View file

@ -1,357 +0,0 @@
#define _PAGE_ Firmware Feature Comparison Chart
#include "head.t"
#define NAME <tr><td class=feature>
#define ENAME </td>
#define TD <td class=fneutral>
#define ETD </td>
#define EFEAT </tr>
#define YES <td class=fgood>Yes ETD
#define PARTLY <td class=fgood>Partly ETD
#define NO <td class=fbad>No ETD
#define BADYES <td class=fbad>Yes ETD
#define GOODNO <td class=fgood>No ETD
#define UNKNOWN TD ? ETD
#define NA TD N/A ETD
<p>
Moved here:
<a href="http://www.rockbox.org/twiki/bin/view/Main/FeatureComparison">www.rockbox.org/twiki/bin/view/Main/FeatureComparison</a>
#if 0
<p> This chart compares Rockbox with the original firmwares as shipped by the
manufacturers of the players. The Rockbox column may specify features only
available in CVS and daily builds.
<p>
<table class=rockbox>
<tr class=header>
<th>Feature</th>
<th>Rockbox</th>
<th>Archos</th>
<th>iRiver h1x0</th>
</tr>
NAME ID3v1 and ID3v2 support ENAME
YES
TD ID3v1 ETD
YES
EFEAT
NAME Background noise during playback ENAME
GOODNO
BADYES
GOODNO
EFEAT
NAME Mid-track resume ENAME
YES
NO
YES
EFEAT
NAME Mid-playlist resume ENAME
YES
NO
UNKNOWN
EFEAT
NAME Resumed playlist order ENAME
YES
NO
UNKNOWN
EFEAT
NAME Battery lifetime ENAME
TD Longer ETD
TD Long ETD
TD Long ETD
EFEAT
NAME Battery time indicator ENAME
YES
NO
NO
EFEAT
NAME Customizable font (Recorder) ENAME
YES
NO
NO
EFEAT
NAME Customizable screen info when playing songs ENAME
YES
NO
NO
EFEAT
NAME USB attach/detach without reboot ENAME
YES
NO
YES
EFEAT
NAME Can load another firmware without rebooting ENAME
YES
NO
NO
EFEAT
NAME Playlist load speed, songs/sec ENAME
TD 3000 - 4000 ETD
TD 15 - 20 ETD
TD 30 - 40 ETD
EFEAT
NAME Max number of songs in a playlist ENAME
TD 20 000 ETD
TD 999 ETD
UNKNOWN
EFEAT
NAME Supports bad path prefixes in playlists ENAME
YES
YES
UNKNOWN
EFEAT
NAME Open source/development process ENAME
YES
NO
NO
EFEAT
NAME Corrects reported bugs ENAME
YES
NO
NO
EFEAT
NAME Automatic Volume Control (Recorder) ENAME
YES
NO
NO
EFEAT
NAME Pitch control (Recorder) ENAME
YES
NO
NO
EFEAT
NAME Text File Reader ENAME
YES
YES
YES
EFEAT
NAME Games (Recorder) ENAME
TD 8 ETD
NO
NO
EFEAT
NAME Games (Player) ENAME
TD 2 ETD
NO
NA
EFEAT
NAME File Delete & Rename ENAME
YES
YES
<td class=fgood>Partly (delete)ETD
EFEAT
NAME Playlist Building ENAME
YES
YES
NO
EFEAT
NAME Recording (Recorder) ENAME
YES
YES
YES
EFEAT
NAME Generates XING VBR header when recording ENAME
YES
YES
UNKNOWN
EFEAT
NAME High Resolution Volume Control ENAME
YES
NO
YES
EFEAT
NAME Deep discharge option (Recorder) ENAME
YES
NO
NO
EFEAT
NAME Customizable backlight timeout ENAME
YES
YES
YES
EFEAT
NAME Backlight-on when charging option ENAME
YES
NO
YES
EFEAT
NAME Queue function ENAME
YES
YES
EFEAT
NAME Supports the XING header ENAME
YES
YES
UNKNOWN
EFEAT
NAME Supports the VBRI header ENAME
PARTLY
YES
UNKNOWN
EFEAT
NAME Max number of files in a dir ENAME
TD 10 000 ETD
TD 999 ETD
UNKNOWN
EFEAT
NAME Adjustable scroll speed ENAME
YES
NO
YES
EFEAT
NAME Screensaver style demos (Recorder) ENAME
YES
NO
NO
EFEAT
NAME Variable step / accelerating ffwd and rwd ENAME
YES
NO
NO
EFEAT
NAME Visual Progress Bar ENAME
YES
NO
YES
EFEAT
NAME Select/Load configs ENAME
YES
NO
NO
EFEAT
NAME Sleep timer ENAME
YES
NO
YES
EFEAT
NAME Easy User Interface ENAME
YES
NO
NO
EFEAT
NAME Remote Control Controllable ENAME
YES
YES
YES
EFEAT
NAME ISO8859-1 font support (Player) ENAME
YES
NO
NA
EFEAT
NAME Queue songs to play next ENAME
YES
YES
YES
EFEAT
NAME Bookmark positions in songs ENAME
YES
NO
NO
EFEAT
NAME Number of available languages ENAME
TD 24 ETD
TD 3 ETD
UNKNOWN
EFEAT
NAME Accurate VBR bitrate display ENAME
YES
NO
NO
EFEAT
NAME FM Tuner support (FM Recorder) ENAME
YES
YES
YES
EFEAT
NAME FF/FR with sound ENAME
NO
YES
UNKNOWN
EFEAT
NAME Pre-Recording (Recorders) ENAME
YES
YES
UNKNOWN
EFEAT
NAME Video Playback with sound (Recorders) ENAME
YES
NO
NO
EFEAT
NAME Boot Time from Flash (in seconds) ENAME
TD 4 ETD
TD 12 ETD
TD 13 ETD
EFEAT
NAME Speaking Menus Support ENAME
YES
NO
NO
EFEAT
</table>
<p>
Wrong facts? Mail rockbox@cool.haxx.se now!
#endif
#include "foot.t"

View file

@ -1,67 +0,0 @@
#define _PAGE_ First Look at Rockbox
#include "head.t"
<h2>First Time Guide to Rockbox Development</h2>
<p>
Welcome to our humble project.
<p>
In order to get your hands dirty as quickly and smoothly as possible, here
follows our suggest approach!
<h2>Join the Rockbox Community</h2>
<p>
Mail: We have a very active <a href="/mail/">developers mailing list</a> no
serious Rockbox freak can live without.
<p>
IRC: There's always a bunch of friendly and helpful people around in the
<a href="/irc/">IRC channel</a>.
<h2>Setup Your Environment</h2> <p>
You need a cross-compiler and linker to build the code. Pick one of these:
<ul>
<li>
Linux (or any other unix-like OS: <a href="/cross-gcc.html">Building the cross compiler</a>. This
describes how to build and install gcc for sh1.
<li>
Windows: (the recommended way) <a href="cygwin_sdk.html">Setup a cygwin Rockbox development environment</a>.
</ul>
<h2>Get The Source</h2>
<p>
Get a fresh source to build Rockbox from. We usually recommend you get the
sources fresh from the CVS repo (<a href="/cvs.html">How to use CVS</a>), but
you can also get a <a href="/daily.shtml">daily tarball</a> or even the <a
href="/download/">latest released source package</a>.
<h2>Build Rockbox</h2>
<p>
Build rockbox using your aquired sources! If you're using Linux or the
suggested cygwin approach, read <a href="how_to_compile.html">How to compile
Rockbox</a>.
<p>
Also note that we have put a whole lot of effort in writing simulators so
that you can build, run and try code on your host PC before you build and
download your target version. This of course requires a working compiler for
your native system.
<h2>Change Rockbox</h2>
<p>
Before you change any code, make sure to read the <a href="contributing.html">contributing</a> information if you want to have any hope of having your changes accepted.
<p>
Now, you fixed any bugs? You added any features? Then <a href="patch.html">make a
patch</a> and head over to the <a
href="http://sourceforge.net/tracker/?group_id=44306&atid=439120">patch-tracker</a>
and submit it. Of course, you can also check the <a href="/bugs.shtml">open
bugreports</a> and jump in and fix one of them (or possibly <a
href="http://sourceforge.net/tracker/?func=add&group_id=44306&atid=439118">submit
a new bug report</a>.
<p>
Regularly checking the open <a href="/requests.shtml">feature-requests</a>
gives a picture of what people want to see happen and what is left to add...
<p>
You'll be better off with a sourceforge account for most bugreport and
feature-request work.
#include "foot.t"

View file

@ -1,418 +0,0 @@
#define _PAGE_ Rockbox in Flash - FAQ and User Manual
#include "head.t"
<p>
by Jörg Hohensohn aka [IDC]Dragon
<p>
1. Introduction<br>
2. Method<br>
3. Risks<br>
4. Requirements<br>
5. Flashing procedure<br>
6. Bringing in a current or personal build of Rockbox<br>
7. Known issues and limitations<br>
8. Movies and images<br>
<h2>1. Introduction</h2>
<p>
Flashing
in the sense used here and elsewhere in regard to Rockbox means
reprogramming the flash memory of the Archos unit. Flash memory
(sometimes called &quot;Flash ROM&quot;) is a type of nonvolatile
memory that can be erased and reprogrammed in-circuit. It is a
variation of electrically erasable programmable read-only memory
(EEPROM).
</p>
<p>
When
you bought your Archos, it came with the Archos firmware flashed.
Now, you can replace the built-in software with Rockbox.
</p>
<p>
Terminology used in the following:<br>
<b>Firmware</b> means the flash ROM content as a whole.<br>
<b>Image</b> means one operating software started from there.
</p>
<p>
By
reprogramming the firmware, we can boot much faster. Archos has a
pathetic boot loader, versus the boot time for Rockbox is much faster
than the disk spinup, in fact it has to wait for the disk. Your boot
time will be as quick as a disk spinup (e.g. 4 seconds from powerup
until resuming playback).
</p>
<h2>2. Method</h2>
<p>
The
replaced firmware will host a bootloader and 2 images. This possible
by compression. The first is the &quot;permanent&quot; backup, not to
be changed any more. The second is the default one to be started, the
first is only used when you hold the F1 key (will be Menu for recorders)
during start. Like
supplied here, the first image is the original Archos firmware, the
second is a current build of Rockbox. This second image is meant to
be reprogrammed, it can contain anything you like, if you prefer, you
can program the Archos firmware to there, too.
</p>
<p>
There are two programming tools supplied:
</p>
<ul>
<li>
The
first one is called &quot;firmware_flash.rock&quot; and is used to
program the whole flash with a new content. You can also use it to
revert back to the original firmware you've hopefully backup-ed. In
the ideal case, you'll need this tool only once. You can view this
as &quot;formatting&quot; the flash with the desired image
structure.
</li>
<li>
The
second one is called &quot;rockbox_flash.rock&quot; and is used to
reprogram only the second image. It won't touch any other byte,
should be safe to fool around with. If the programmed firmware is
inoperational, you can still use the F1 start with the Archos
firmware and Rockbox booted from disk to try better.
</li>
</ul>
<p>
More technical details will be provided in the future, as well as non-user
tools. There's an authoring tool which composed the firmware file with the
bootloader and the 2 images, the bootloader project, the plugin sources, and
the tools for the UART boot feature: a monitor program for the box and a PC
tool to drive it. Feel free to review the
<a href="http://joerg.hohensohn.bei.t-online.de/archos/flash/flash_sourcecode.zip">sources</a>
for all of it, but be careful when fooling around with powerful toys!
</p>
<h2>3. Risks</h2>
<p>
Well,
is it dangerous? Yes, certainly, like programming a mainboard BIOS,
CD/DVD drive firmware, mobile phone, etc. If the power fails, your
chip breaks while programming or most of all the programming software
malfunctions, you'll have a dead box. We take no responsibility of
any kind, you do that at your own risk. However, we tried as
carefully as possible to bulletproof this code. The new firmware file
is completely read before it starts programming, there are a lot of
sanity checks. If any fails, it will not program. Before releasing
this, we have checked the flow with exactly these files supplied
here, starting from the original firmware in flash. It worked
reliably, there's no reason why such low level code should behave
different on your box.
</p>
<p>
There's
one ultimate safety net to bring back boxes with even completely
garbled flash content: the UART boot mod, which in turn requires the
serial mod. It can bring the dead back to life, with that it's
possible to reflash independently from the outside, even if the flash
is completely erased. It has been used that during development, else
Rockbox in flash wouldn't have been possible.
Extensive development effort went into the exploitation of the UART boot
mod. Mechanically adept users with good soldering skills can easily perform
these mods. Others may feel uncomfortable using the first tool
(firmware_flash.rock) for reflashing the firmware.
</p>
<p>
To comfort you a bit again:
If you are starting with a known-good image, you are unlikely to experience
problems. The flash tools have been stable for quite a while. Several users
have used them extensively, even flashing while playing! Although it worked,
it's not the recommended method. ;-)"
</p>
<p>
About
the safety of operation: Since we have dual boot, you're not giving
up the Archos firmware. It's still there when you hold F1 during
startup. So even if Rockbox from flash is not 100% stable for
everyone, you can still use the box, reflash the second image with an
updated Rockbox copy, etc.
</p>
<p>
The
flash chip being used by Archos is specified for 100,000 cycles (in
words: one hundred thousand), so you don't need to worry about that
wearing out.
</p>
<h2>4. Requirements</h2>
<p>
You need two things:
</p>
<ul>
<li>
The first is a Recorder, FM Recorder or Recorder V2 model. Be sure
you're using the correct package, they are different! The technology
works for the Player models, too. Players can also be flashed, but Rockbox
does not run cold-started on those, yet.
</li>
<li>
Second,
you need an in-circuit programmable flash. Chances are about 85%
that you have, but Archos also used an older flash chip which can't
do the trick. You can find out via Rockbox debug menu, entry
Hardware Info. If the flash info gives you question marks, you're
out of luck. The only chance then is to solder in the right chip
(SST39VF020), at best with the firmware already in. If the chip is
blank, you'll need the UART boot mod as well.
</li>
</ul>
<h2>5. Flashing procedure</h2>
<p>
Short
explanation: copy the firmware_*.bin files for your model from the
distribution to the root directory of your box, then run the
&quot;firmware_flash.rock&quot; plugin. Long version, step by step
procedure:
</p>
<ul>
<li>
download the correct package for you model,
<a href="http://joerg.hohensohn.bei.t-online.de/archos/flash/flash_rec.zip">Recorder</a>
or
<a href="http://joerg.hohensohn.bei.t-online.de/archos/flash/flash_fm.zip">FM</a>,
or
<a href="http://joerg.hohensohn.bei.t-online.de/archos/flash/flash_v2.zip">V2</a>,
copy some files of it to your box:
<ol>
<li>
&quot;ajbrec.ajz&quot;
into the root directory (the version of Rockbox we're going to use
and have in the firmware file)
</li>
<li>
firmware_rec.bin or firmware_fm.bin or firmware_v2.bin (name depends on
your model) into the root directory (the complete firmware
for your model, with the bootloader and the two images). There now
is also a _norom variant, copy both, the plugin will decide which
one is required for your box.
</li>
<li>
the .rockbox subdirectory with all the plugins for Rockbox
</li>
</ol>
<li>
Restart the box so that the new ajbrec.ajz gets started.
</li>
</li>
<li>
Enter
the debug menu and select the hardware info screen. Check you flash
IDs (bottom line), and please make a note about your hardware mask
value (second line). The latter is just for our curiosity, not
needed for the flow. If the flash info shows question marks, you can
stop here, sorry.
</li>
<li>
Backup
the current firmware, using the first option of the debug menu (Dump
ROM contents). This creates 2 files in the root directory, which you
may not immediately see in the Rockbox browser. The 256kB-sized
&quot;internal_rom_2000000-203FFFF.bin&quot; one is your present
firmware. Back both up to your PC.
</li>
<li>
(optional)
While you're in this Rockbox version, it is recommended to give it a
test and play around with it, this version is identical to the one
about to be programmed. Make sure that especially USB access and
Rolo works. When done, restart again to have a fresh start and to be
back in this Rockbox version.
</li>
<li>
Use
the F2 settings to configure seeing all files within the browser.
</li>
<li>
Connect
the charger and make sure your batteries are also in good shape.
That's just for security reasons, it's not that flashing needs more
power.
</li>
<li>
Run
the &quot;firmware_flash.rock&quot; plugin. It again tells you about
your flash and the file it's gonna program. After F1 it checks the
file. Your hardware mask value will be kept, it won't overwrite it.
Hitting F2 gives you a big warning. If we still didn't manage to
scare you off, you can hit F3 to actually program and verify. The
programming takes just a few seconds. If the sanity check fails, you
have the wrong kind of boot ROM and are out of luck by now, sorry.
</li>
<li>
In
the unlikely event that the programming should give you any error,
don't switch off the box! Otherwise you'll have seen it working for
the last time. While Rockbox is still in DRAM and operational, we
could upgrade the plugin via USB and try again. If you switch it
off, it's gone.
</li>
<li>
Unplug
the charger, restart the box and hopefully be in Rockbox straight
away! You may delete &quot;firmware_flash.rock&quot; then, to avoid
your little brother playing with that. Pressing On+Play can do it,
or your PC. You can also delete the &quot;.bin&quot; files.
</li>
<li>
Try
starting again, this time holding F1 while pressing On. It should
boot the Archos firmware, which then loads rockbox from disk. In
fact, even the Archos firmware comes up quicker, because their
loader is replaced by mine.
</li>
</ul>
<h2>6. Bringing in a current or personal build of Rockbox</h2>
<p>
Short
explanation: very easy, just play a .ucl file like &quot;rockbox.ucl&quot;
from the download or build. Long version:
</p>
<p>
The
second image is the working copy, the &quot;rockbox_flash.rock&quot;
plugin from this package reprograms it. The plugins needs to be
consistant with the Rockbox plugin API version, otherwise it will
detect mismatch and won't run.
</p>
<p>
It
requires an exotic input, a UCL-compressed image, because that's the
internal format. UCL is a nice open-source compression library. The
decompression is very fast and less than a page of C-code. The
efficiency is even better than Zip with maximum compression, cooks it
down to about 58% of the original size. For details on UCL, see:
<a href="http://www.oberhumer.com/opensource/ucl/">www.oberhumer.com/opensource/ucl/</a>
</p>
<p>
Linux
users will have to download it from there and compile it, for Win32
and Cygwin the executables are in
<a href="http://joerg.hohensohn.bei.t-online.de/archos/flash">the packages</a>.
The sample program from that download is called &quot;uclpack&quot;.
We'll use that to compress &quot;rockbox.bin&quot; which is the
result of the compilation. This is a part of the build process
meanwhile. If you compile Rockbox yourself, you should copy uclpack
to a directory which is in the path, we recommend placing it in the
same dir as SH compiler.
</p>
<p>
Don't
flash any &quot;old&quot; builds which don't have the latest
coldstart ability. They won't boot. These instructions refer to
builds from cvs state 2003-07-10 on.
</p>
<p>
Here are the steps:
</p>
<ul>
<li>
If
you start from a .ajz file, you'll need to descramble it first into
&quot;rockbox.bin&quot;, by using &quot;descramble ajbrec.ajz
rockbox.bin&quot;. IMPORTANT: For an FM, the command is different,
use &quot;descramble -fm ajbrec.ajz rockbox.bin&quot;! Otherwise the
image won't be functional. Compress the image using uclpack,
algorithm 2e (the most efficient, and the only one supported by the
bootloader), with maximum compression, by typing &quot;uclpack --2e
--best rockbox.bin rockbox.ucl&quot;. You can make a batch file for
this and the above step, if you like.
</li>
<li>
Normally,
you'll simply download or compile rockbox.ucl. Copy it together with
ajbrec.ajz and all the rocks to the appropriate places, replacing
the old.
</li>
<li>
Just
&quot;play&quot; the .ucl file, this will kick off the
&quot;rockbox_flash.rock&quot; plugin. It's a bit similar to the
other one, but it's made different to make the user aware. It will
check the file, available size, etc. With F2 it's being programmed,
no need for warning this time. If it goes wrong, you'll still have
the permanent image.
</li>
<li>
It
may happen that you get an &quot;Incompatible Version&quot; error,
if the plugin interface has changed meanwhile. You're running an
&quot;old&quot; copy of Rockbox, but are trying to execute a newer
plugin, the one you just downloaded. The easiest solution is to rolo
into this new version, by playing the ajbrec.ajz file. Then you are
consistant and can play rockbox.ucl.
</li>
<li>
When
done, you can restart the box and hopefully your new Rockbox image.
</li>
</ul>
<p>
If
you like or have to, you can also flash the Archos image as the
second one, e.g. in case Rockbox from flash doesn't work for you.
This way you keep the dual bootloader and you can easily try
different later. You can download
<a href="http://joerg.hohensohn.bei.t-online.de/archos/flash">UCLs</a>
for the latest firmware
<a href="http://joerg.hohensohn.bei.t-online.de/archos/flash">here</a>.
</p>
<h2>7. Restoring the original firmware</h2>
<p>
If you'd like to revert to the original firmware, you can
do like you did when you flashed Rockbox for the first time (section 5), but
copy and rename your backup to be
&quot;firmware_rec.bin&quot; on the box this time. Keep the Rockbox
copy and the plugins of this package for that job, because that's the
one it was tested with.
</p>
<h2>8. Known issues and limitations</h2>
<p>
Latest
Rockbox now has a charging screen, but it is in an early stage.
You'll get it when the unit is off and you plug in the charger. The
Rockbox charging algorithm is first measuring the battery voltage for
about 40 seconds, after that it only starts charging when the
capacity is below 85%. You can use the Archos charging (which always
tops off) by holding F1 while plugging in. Some FM users reported
charging problems even with F1, they had to revert to the original
flash content.
</p>
<p>
If the plugin API is changed, new builds may render the plugins
incompatible. When updating, make sure you grab those too, and rolo
into the new version before flashing it.
</p>
<p>
There
are two variants of how the boxes starts, therefore the normal and
the _norom firmware files. The vast majority of the
Player/Recorder/FM all have the same boot ROM content,
differentiation comes later by flash content. Rockbox identifies this
boot ROM with a CRC value of 0x222F in the hardware info screen. Some
recorders have the boot ROM disabled (it might be unprogrammed) and
start directly from a flash mirror at address zero. They need the new
_norom firmware, it has a slightly different bootloader. Without a
boot ROM there is no UART boot safety net. To compensate for that as
much as possible the MiniMon monitor is included, it starts with
F3+On. Using that the box can be reprogrammed via serial if the first
~2000 bytes of the flash are OK.
</p>
<h2>8. Movies and images</h2>
<p>
Jörg's AVI movie (1.5MB) <a href="flash/rockbox_flash_boot.avi">rockbox_flash_boot.avi</a>
showing his unit booting Rockbox from flash.
<p>
Roland's screendump from the movie:<br>
<img src="flash/rockbox-flash.jpg" width="352" height="288">
#include "foot.t"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -1,8 +0,0 @@
#define _PAGE_ How to compile Rockbox
#include "head.t"
<pre>
#include "how_to_compile.raw"
</pre>
#include "foot.t"

View file

@ -1,123 +0,0 @@
#define _PAGE_ Documentation
#include "head.t"
<h2>For Users</h2>
<ul>
<li> <a href="/manual/manual.pdf">User manual</a> (pdf, ~300 KB) (<a href="/manual/manual.txt">plain text version</a>, 105KB)
<li> <a href="faq.html">Frequently Asked Questions</a>
<li> <a href="battery-faq.html">Frequently Asked Questions about Batteries and Charging</a>
<li> <a href="battery-faq-liion.html">Frequently Asked Questions about V2/FM Batteries</a>
<li> <a href="nodo.html">Features We Will Not Implement</a>
<li> <a href="credits.html">The Noble People Behind Rockbox</a>
<li> <a href="/screenshots/">Screenshots</a> of Rockbox.
<li> External web forums devoted to Archos: <a
href="http://forums.funmp3players.com/forum/forum.asp?forum_id=8&forum_title=General+%2D+Jukebox+Player%2FRecorder">funmp3players.com</a>,
<a href="http://groups.yahoo.com/group/archosjukebox6000/">archosjukebox6000
on yahoo</a> and <a
href="http://www.newmp3technology.net/forum/">newmp3technology.net</a>.
</ul>
<h2>Customizing Rockbox</h2>
<ul>
<li> <a href="/fonts/">Fonts to download</a>
<li> <a href="/lang/">Language files to download</a>
<li> <a href="/voice/">Voice clips to download</a>
<li> <a href="custom_wps_format.html">How to make a custom WPS</a>
<li> <a href="custom_cfg_format.html">How to make a custom config file</a>
</ul>
<h2>For Advanced Users</h2>
<ul>
<li> <a href="features.html">Feature Comparison Chart</a>
<li> Small help texts for your <a href="Help-JBR.txt">Recorder</A> or <a
href="Help-Stu.txt">Player/Studio</a>, meant to be stored and read on your
Archos. (Jean Boullier)
<li><a href="license.html">The GNU General Public License</a> under which terms Rockbox may be distributed
<li><a href="tools.html">Useful mp3 and jukebox related tools</a>
<li><a href="rvf.html">How to Create RVF Movies</a>
</ul>
<h2>For <a href="http://www.catb.org/~esr/faqs/hacker-howto.html">Hackers</a></h2>
<h3>Howtos</h3>
<ul>
<li> <a href="firsttime.html">First-Time Guide to Rockbox Development</a>
<li> <a href="/cvs.html">How to use CVS</a>
<li> <a href="patch.html">How To Work With Patches</a>
<li> <a href="/cross-gcc.html">Building the cross compiler</a> (linux/cygwin)
<li> <a href="cygwin_sdk.html">Setting up a cygwin Rockbox development environment</a> (Windows)
<li> <a href="http://rockbox.my-vserver.de/win32-sdk.html">Another way of setting up a cygwin Rockbox development environment</a> (Windows)
<li> <a href="how_to_compile.html">How to compile Rockbox</a> (linux/cygwin style)
<li> <a href="uisimulator.html">How to compile the uisimulators</a> (linux/cygwin style)
<li> <a href="http://www.mcintoshfamily.pwp.blueyonder.co.uk/rockbox/buildingInEclipse.htm">How to build and debug Rockbox in the Eclipse IDE</a>
<li> <a href="flash.html">How to flash Rockbox on your Archos</a>
<li> <a href="http://sourceforge.net/cvs/?group_id=44306">How to check out Rockbox from CVS</a>
<li> <a href="http://bjorn.haxx.se/isd200/">Linux driver for Archos Player/Studio</a>
</ul>
<h3>Specs and Papers</h3>
<ul>
<li><a href="devicechart.html">Comparison table between all Jukebox models</a>
<li><a href="/notes.html">Research notes (old, deprecated stuff)</a>
<li><a href="ports.html">CPU port pin assignments</a>
<li><a href="datasheets.html">Data sheets</a>
<li><a href="/schematics/">Schematics</a>
<li><a href="mpeghdr.html">MPEG frame header info</a> (and ID3 v1 info)
<li><a href="id3v2.4.0-structure.txt">ID3 v2.4 structure</a>
<li><a href="id3v2.4.0-frames.txt">ID3 v2.4 frames</a>
<li><a href="id3v2.3.0.html">ID3 v2.3 specification</a> (<a href="id3v2.3.0.txt">txt</a>)
<li><a href="id3guide.html">ID3 v2.3 Programming Guidelines</a>
</ul>
<h3>Rockbox Design Docs</h3>
<ul>
<li> <a href="http://rockbox.gratiswiki.dk/">wiki about new rockbox UI devel</a>
<li><a href="rocklatin.html">The Rocklatin charset used in Players</a>
<li> API docs
<li> Software Design
<li> Understanding the Rockbox multi-threading
</ul>
<h2>Hardware</h2>
<ul>
<li> Photographs of various <a href="/internals/">Archos Internals</a>
<li> <a href="repairlcd.html">How to repair your broken LCD</a>
<li> <a href="repairbattery.html">How to repair your broken battery connectors</a>
<li> <a href="/mods/disassemble.html">Disassembling the Archos</a>, part 1:
removing the covers
<li> <a href="/mods/disassemble2.html">Disassembling the Archos</a>, part 2:
taking apart the electronics
<li> <a href="/mods/reassemble.html">Reassemble the Archos</a>, getting those
stiff bumpers back in place
<li> <a href="/mods/serialport.html">Make LINE IN a two-way serial port</a>,
for some sweet remote gdb love
<li> Build yourself an <a href="/mods/rs232.html">rs232 converter</a>, so your
PC can talk to your Archos
</ul>
<h2>External Pages</h2>
<ul>
<li><a href="http://waechter.wiz.at/~matthias/Rockbox/HW-Mod/8MB/">Matthias Wächter 8MB RAM mod</a>
<li><a href="http://www.uwe-freese.de/rockbox/8mb_ram_en.html">Uwe Freese's 8MB RAM mod for Recorders</a>
<li><a href="http://www.geocities.com/notching/Sony-archos-remote.html">Nick Robinson's Sony Remote Joystick RM-X4S interface</a>
<li><a href="http://mywebpages.comcast.net/jstewart228368/archos-modification.html">James Stewart's Jukebox 6000 Bass and Volume improvement</a>
<li><a href="http://www2.funmp3players.com/reviews/modify/">Upgrading the Hard Drive in the Archos Jukebox 6000</a>
<li><a href="http://www.mctubster.com/hd.html">Another page describing hard drive update</a>
<li>Uwe Freese modified his recorder to be able to
<a href="http://www.uwe-freese.de/rockbox/rtc_alarm_en.html">
power-on from the RTC alarm</a>.
<li><a href="http://www.geocities.com/raichea/">Steve Russell's PIC-based remote control</a>
<li><a href="http://www.angelfire.com/trek/archos/">Chris Halsall's MMJB20 page</a> with disassembly instructions useful for FM and V2 owners.
<li> Matthias Klumpp's <a href="http://de.geocities.com/matthiasklumpp/">Archos Atmel remote control</a>.
<li> Bluechip's <a href="http://homepage.ntlworld.com/cyborgsystems/CS_Main/RockBox/RockBox.htm">Rockbox plugins</a>
</ul>
#include "foot.t"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

View file

@ -1,8 +0,0 @@
#define _PAGE_ GNU General Public License
#include "head.t"
<pre>
#include "license.raw"
</pre>
#include "foot.t"

View file

@ -1,761 +0,0 @@
#define _PAGE_ MPEG Audio Frame Header
#include "head.t"
<P>This is a brief and informal document targeted to those who want to deal
with the MPEG format. If you are one of them, you probably already know what
is MPEG audio. If not, jump to <A
HREF="http://www.mp3.com/">http://www.mp3.com/</A> or <A
HREF="http://www.layer3.org/">http://www.layer3.org/</A> where you will find
more details and also more links. This document does not cover compression and
decompression algorithm.
<P>NOTE: You cannot just search the Internet and find the MPEG audio specs. It
is copyrighted and you will have to pay quite a bit to get the Paper. That's why
I made this. Information I got is gathered from the Internet, and mostly originate
from program sources I found available for free. Despite my intention to always
specify the information sources, I am not able to do it this time. Sorry, I did
not maintain the list. :-(
<P><B>These are not a decoding specs, it just informs you how to read the </B><A
HREF="#MPEG HEADER"><B>MPEG headers</B></A><B> and the </B> <A HREF="#MPEGTAG"
TARGET=""><B>MPEG TAG</B></A><B>. MPEG Version 1, 2 and 2.5 and Layer I, II
and III are supported, the MP3 TAG (ID3v1 and ID3v1.1) also.</B>. Those of you
who use Delphi may find <A
HREF="http://www.dv.co.yu/mpgscript/mpgtools.htm">MPGTools Delphi unit (freeware source)</A>
useful, it is where I implemented this stuff.
<P>I do not claim information presented in this document is accurate. At first
I just gathered it from different sources. It was not an easy task but I needed
it. Later, I received lots of comments as feedback when I published this document.
I think this last release is highly accurate due to comments and corrections I
received.
<P>This document is last updated on December 22, 1999.
<P ALIGN="center"><FONT SIZE="5"><B>MPEG Audio Compression Basics</B></FONT>
<P>This is one of many methods to compress audio in digital form trying to consume
as little space as possible but keep audio quality as good as possible. MPEG compression
showed up as one of the best achievements in this area.
<P>This is a lossy compression, which means, you will certainly loose some audio
information when you use this compression methods. But, this lost can hardly be
noticed because the compression method tries to control it. By using several quite
complicate and demanding mathematical algorithms it will only loose those parts
of sound that are hard to be heard even in the original form. This leaves more
space for information that is important. This way you can compress audio up to
12 times (you may choose compression ratio) which is really significant. Due to
its quality MPEG audio became very popular.
<P>MPEG standards MPEG-1, MPEG-2 and MPEG-4 are known but this document covers
first two of them. There is an unofficial MPEG-2.5 which is rarely used. It is
also covered.
<P><B>MPEG-1 audio</B> (described in ISO/IEC 11172-3) describes three Layers of audio coding with the following properties:
<LI>one or two audio channels
<LI>sample rate 32kHz, 44.1kHz or 48kHz.
<LI>bit rates from 32kbps up to 448kbps<BR>
Each layer has its merits.
<P><B>MPEG-2 audio</B> (described in ISO/IEC 13818-3) has two extensions to MPEG-1, usually referred as MPEG-2/LSF and MPEG-2/Multichannel.
<P>MPEG-2/LSF has the following properties:
<LI>one or two audio channels
<LI>sample rates half those of MPEG-1
<LI>bit rates from 8 kbps up to 256kbps.
<P>MPEG-2/Multichannel has the following properties:
<LI>up to 5 full range audio channels and an LFE-channel (Low Frequency
Enhancement <> subwoofer!)
<LI>sample rates the same as those of MPEG-1
<LI>highest possible bitrate goes up to about 1Mbps for 5.1
<P ALIGN="center"><A NAME="MPEG HEADER"></A><FONT SIZE="5"><B>MPEG Audio Frame
Header</B></FONT>
<P>An MPEG audio file is built up from smaller parts called frames. Generally,
frames are independent items. Each frame has its own header and audio informations.
There is no file header. Therefore, you can cut any part of MPEG file and play
it correctly (this should be done on frame boundaries but most applications will
handle incorrect headers). For Layer III, this is not 100% correct. Due to internal
data organization in MPEG version 1 Layer III files, frames are often dependent
of each other and they cannot be cut off just like that.
<P>When you want to read info about an MPEG file, it is usually enough to find
the first frame, read its header and assume that the other frames are the same
This may not be always the case. Variable bitrate MPEG files may use so called
bitrate switching, which means that bitrate changes according to the content of
each frame. This way lower bitrates may be used in frames where it will not reduce
sound quality. This allows making better compression while keeping high quality
of sound.
<P>The frame header is constituted by the very first four bytes (32bits) in a
frame. The first eleven bits (or first twelve bits, see below about frame sync)
of a frame header are always set and they are called &quot;frame sync&quot;. Therefore,
you can search through the file for the first occurence of frame sync (meaning
that you have to find a byte with a value of 255, and followed by a byte with
its three (or four) most significant bits set). Then you read the whole header
and check if the values are correct. You will see in the following table the exact
meaning of each bit in the header, and which values may be checked for validity.
Each value that is specified as reserved, invalid, bad, or not allowed should
indicate an invalid header. Remember, this is not enough, frame sync can be easily
(and very frequently) found in any binary file. Also it is likely that MPEG file
contains garbage on it's beginning which also may contain false sync. Thus, you
have to check two or more frames in a row to assure you are really dealing with
MPEG audio file.
<P>Frames may have a CRC check. The CRC is 16 bits long
and, if it exists, it follows the frame header. After the CRC comes the audio
data. You may calculate the length of the frame and use it if you need to read
other headers too or just want to calculate the CRC of the frame, to compare
it with the one you read from the file. This is actually a very good method to
check the MPEG header validity.
<P>Here is &quot;graphical&quot; presentation of the header content. Characters
from A to M are used to indicate different fields. In the table, you can see
details about the content of each field.
<P ALIGN="center">
<B><TT><FONT SIZE="5">
AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM
</FONT>
</TT></B>
<P><CENTER>
<TABLE BORDER="0" CELLSPACING=7>
<TR VALIGN=TOP BGCOLOR="#E2E2E2">
<TD>Sign</TD><TD>Length<BR>(bits)</TD><TD>Position<BR>(bits)</TD><TD>Description</TD>
</TR>
<TR VALIGN=TOP>
<TD>A</TD><TD>11</TD><TD>(31-21)</TD><TD>Frame sync (all bits set)</TD>
</TR>
<TR VALIGN=TOP>
<TD>B</TD><TD>2</TD><TD>(20,19)</TD><TD>MPEG Audio version ID<BR>
00 - MPEG Version 2.5<BR>01 - reserved<BR>10 - MPEG Version 2 (ISO/IEC 13818-3)<BR>11 - MPEG Version 1 (ISO/IEC 11172-3)
<P>Note: MPEG Version 2.5 is not official standard. Bit No 20 in frame header
is used to indicate version 2.5. Applications that do not support this MPEG version
expect this bit always to be set, meaning that frame sync (A) is twelve bits long,
not eleve as stated here. Accordingly, B is one bit long (represents only bit
No 19). I recommend using methodology presented here, since this allows you to
distinguish all three versions and keep full compatibility.
</TD>
</TR>
<TR VALIGN=TOP><TD>C</TD><TD>2</TD><TD>(18,17)</TD>
<TD>Layer description<BR>
00 - reserved<BR>
01 - Layer III<BR>
10 - Layer II<BR>
11 - Layer I</TD>
</TR>
<TR VALIGN=TOP>
<TD>D</TD><TD>1</TD><TD>(16)</TD>
<TD>Protection bit<BR>
0 - Protected by CRC (16bit crc follows header)<BR>
1 - Not protected</TD>
</TR>
<TR VALIGN=TOP><TD>E</TD><TD>4</TD><TD>(15,12)</TD><TD>Bitrate index<BR>
<TABLE BORDER="1" CELLSPACING="0" CELLPADING="0">
<TR><TD>bits</TD><TD>V1,L1</TD><TD>V1,L2</TD><TD>V1,L3</TD><TD>V2,L1</TD><TD>V2, L2 &amp; L3</TD></TR>
<TR><TD>0000</TD><TD>free</TD><TD>free</TD><TD>free</TD><TD>free</TD><TD>free</TD></TR>
<TR><TD>0001</TD><TD>32</TD><TD>32</TD><TD>32</TD><TD>32</TD><TD>8</TD></TR>
<TR><TD>0010</TD><TD>64</TD><TD>48</TD><TD>40</TD><TD>48</TD><TD>16</TD></TR>
<TR><TD>0011</TD><TD>96</TD><TD>56</TD><TD>48</TD><TD>56</TD><TD>24</TD></TR>
<TR><TD>0100</TD><TD>128</TD><TD>64</TD><TD>56</TD><TD>64</TD><TD>32</TD></TR>
<TR><TD>0101</TD><TD>160</TD><TD>80</TD><TD>64</TD><TD>80</TD><TD>40</TD></TR>
<TR><TD>0110</TD><TD>192</TD><TD>96</TD><TD>80</TD><TD>96</TD><TD>48</TD></TR>
<TR><TD>0111</TD><TD>224</TD><TD>112</TD><TD>96</TD><TD>112</TD><TD>56</TD></TR>
<TR><TD>1000</TD><TD>256</TD><TD>128</TD><TD>112</TD><TD>128</TD><TD>64</TD></TR>
<TR><TD>1001</TD><TD>288</TD><TD>160</TD><TD>128</TD><TD>144</TD><TD>80</TD></TR>
<TR><TD>1010</TD><TD>320</TD><TD>192</TD><TD>160</TD><TD>160</TD><TD>96</TD></TR>
<TR><TD>1011</TD><TD>352</TD><TD>224</TD><TD>192</TD><TD>176</TD><TD>112</TD></TR>
<TR><TD>1100</TD><TD>384</TD><TD>256</TD><TD>224</TD><TD>192</TD><TD>128</TD></TR>
<TR><TD>1101</TD><TD>416</TD><TD>320</TD><TD>256</TD><TD>224</TD><TD>144</TD></TR>
<TR><TD>1110</TD><TD>448</TD><TD>384</TD><TD>320</TD><TD>256</TD><TD>160</TD></TR>
<TR><TD>1111</TD><TD>bad</TD><TD>bad</TD><TD>bad</TD><TD>bad</TD><TD>bad</TD></TR>
</TABLE>
<P>
NOTES: All values are in kbps<BR>
V1 - MPEG Version 1<BR>
V2 - MPEG Version 2 and Version 2.5<BR>
L1 - Layer I<BR>
L2 - Layer II<BR>
L3 - Layer III<BR>
&quot;free&quot; means free format. If the correct fixed bitrate (such files cannot
use variable bitrate) is different than those presented in upper table it must
be determined by the application. This may be implemented only for internal purposes
since third party applications have no means to find out correct bitrate. Howewer,
this is not impossible to do but demands lot's of efforts.<BR>
&quot;bad&quot; means that this is not an allowed value
<P>MPEG files may have variable bitrate (VBR). This means that bitrate in the file may change. I have learned about two used methods:
<LI>bitrate switching. Each frame may be created with different bitrate. It may be used in all layers. Layer III decoders must support this method. Layer I & II decoders may support it.
<LI>bit reservoir. Bitrate may be borrowed (within limits) from previous frames
in order to provide more bits to demanding parts of the input signal. This causes,
however, that the frames are no longer independent, which means you should not
cut this files. This is supported only in Layer III.
<P>More about VBR you may find on <A HREF="http://www.xingtech.com/">Xing Tech
site</A>
<P>For Layer II there are some combinations of bitrate and mode which are not
allowed. Here is a list of allowed combinations.
<TABLE BORDER=1 CELLSPACING=0>
<TR>
<TD>bitrate</TD>
<TD>allowed modes</TD>
</TR>
<TR>
<TD>free</TD>
<TD>all</TD>
</TR>
<TR>
<TD>32</TD>
<TD>single channel</TD>
</TR>
<TR>
<TD>48</TD>
<TD>single channel</TD>
</TR>
<TR>
<TD>56</TD>
<TD>single channel</TD>
</TR>
<TR>
<TD>64</TD>
<TD>all</TD>
</TR>
<TR>
<TD>80</TD>
<TD>single channel</TD>
</TR>
<TR>
<TD>96</TD>
<TD>all</TD>
</TR>
<TR>
<TD>112</TD>
<TD>all</TD>
</TR>
<TR>
<TD>128</TD>
<TD>all</TD>
</TR>
<TR>
<TD>160</TD>
<TD>all</TD>
</TR>
<TR>
<TD>192</TD>
<TD>all</TD>
</TR>
<TR>
<TD>224</TD>
<TD>stereo, intensity stereo, dual channel</TD>
</TR>
<TR>
<TD>256</TD>
<TD>stereo, intensity stereo, dual channel</TD>
</TR>
<TR>
<TD>320</TD>
<TD>stereo, intensity stereo, dual channel</TD>
</TR>
<TR>
<TD>384</TD>
<TD>stereo, intensity stereo, dual channel</TD>
</TR>
</TABLE>
</TD></TR>
<TR VALIGN=TOP>
<TD>F</TD><TD>2</TD><TD>(11,10)</TD>
<TD>Sampling rate frequency index (values are in Hz)
<TABLE BORDER="1" CELLSPACING="0" CELLPADING="0">
<TR><TD>bits</TD><TD>MPEG1</TD><TD>MPEG2</TD><TD>MPEG2.5</TD></TR>
<TR><TD>00</TD><TD>44100</TD><TD>22050</TD><TD>11025</TD></TR>
<TR><TD>01</TD><TD>48000</TD><TD>24000</TD><TD>12000</TD></TR>
<TR><TD>10</TD><TD>32000</TD><TD>16000</TD><TD>8000</TD></TR>
<TR><TD>11</TD><TD>reserv.</TD><TD>reserv.</TD><TD>reserv.</TD></TR>
</TABLE>
</TD></TR>
<TR VALIGN=TOP>
<TD>G</TD><TD>1</TD><TD>(9)</TD>
<TD>Padding bit<BR>
0 - frame is not padded<BR>
1 - frame is padded with one extra slot<BR>
Padding is used to fit the bit rates exactly. For an example: 128k 44.1kHz layer II uses a lot of 418 bytes and some of 417 bytes long frames to get the exact 128k bitrate. For Layer I slot is 32 bits long, for Layer II and Layer III slot is 8 bits long.
<P><B>How to calculate frame length</B>
<P>First, let's distinguish two terms frame size and frame length. Frame size
is the number of samples contained in a frame. It is constant and always 384 samples
for Layer I and 1152 samples for Layer II and Layer III. Frame length is length
of a frame when compressed. It is calculated in slots. One slot is 4 bytes long
for Layer I, and one byte long for Layer II and Layer III. When you are reading
MPEG file you must calculate this to be able to find each consecutive frame. Remember,
frame length may change from frame to frame due to padding or bitrate switching.
<P>Read the BitRate, SampleRate and Padding of the frame header.
<P>For Layer I files us this formula:
<P ALIGN=CENTER>FrameLengthInBytes = (12 * BitRate / SampleRate + Padding) * 4
<P ALIGN=LEFT>For Layer II & III files use this formula:
<P ALIGN=CENTER>FrameLengthInBytes = 144 * BitRate / SampleRate + Padding
<P>Example:<BR>
Layer III, BitRate=128000, SampleRate=44100, Padding=0<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ==&gt;&nbsp; FrameSize=417 bytes
</TD></TR>
<TR VALIGN=TOP><TD>H</TD><TD>1</TD><TD>(8)</TD>
<TD>Private bit. It may be freely used for specific needs of an application, i.e. if it has to trigger some application specific events.</TD>
</TR>
<TR VALIGN=TOP><TD>I</TD><TD>2</TD><TD>(7,6)</TD>
<TD>Channel Mode<BR>
00 - Stereo<BR>
01 - Joint stereo (Stereo)<BR>
10 - Dual channel (Stereo)<BR>
11 - Single channel (Mono)</TD>
</TR>
<TR VALIGN=TOP><TD>J</TD><TD>2</TD><TD>(5,4)</TD>
<TD>Mode extension (Only if Joint stereo)
<P>Mode extension is used to join informations that are of no use for stereo effect, thus reducing needed resources. These bits are dynamically determined by an encoder in Joint stereo mode.
<P>Complete frequency range of MPEG file is divided in subbands There are 32 subbands. For Layer I & II these two bits determine frequency range (bands) where intensity stereo is applied. For Layer III these two bits determine which type of joint stereo
is used (intensity stereo or m/s stereo). Frequency range is determined within decompression algorythm.
<TABLE BORDER="0" CELLSPACING="2" CELLPADDING="0">
<TR><TD ALIGN=CENTER>Layer I and II</TD><TD ALIGN=CENTER>Layer III</TD></TR>
<TR VALIGN=TOP><TD>
<TABLE BORDER="1" CELLSPACING="0" CELLPADING="0">
<TR><TD>value</TD><TD>Layer I &amp; II</TD></TR>
<TR><TD>00</TD><TD>bands 4 to 31</TD></TR>
<TR><TD>01</TD><TD>bands 8 to 31</TD></TR>
<TR><TD>10</TD><TD>bands 12 to 31</TD></TR>
<TR><TD>11</TD><TD>bands 16 to 31</TD></TR></TABLE>
</TD>
<TD>
<TABLE BORDER="1" CELLSPACING="0" CELLPADING="0" WIDTH="212">
<TR ALIGN=CENTER><TD>Intensity stereo</TD><TD>MS stereo</TD></TR>
<TR ALIGN=CENTER><TD>off</TD><TD>off</TD></TR>
<TR ALIGN=CENTER><TD>on</TD><TD>off</TD></TR>
<TR ALIGN=CENTER><TD>off</TD><TD>on</TD></TR>
<TR ALIGN=CENTER><TD>on</TD><TD>on</TD></TR></TABLE>
</TD></TR></TABLE>
</TD></TR>
<TR VALIGN=TOP><TD>K</TD><TD>1</TD><TD>(3)</TD>
<TD>Copyright<BR>
0 - Audio is not copyrighted<BR>
1 - Audio is copyrighted</TD>
</TR>
<TR VALIGN=TOP><TD>L</TD><TD>1</TD><TD>(2)</TD>
<TD>Original<BR>
0 - Copy of original media<BR>
1 - Original media</TD>
</TR>
<TR VALIGN=TOP>
<TD>M</TD><TD>2</TD><TD>(1,0)</TD>
<TD>Emphasis<BR>
00 - none<BR>
01 - 50/15 ms<BR>
10 - reserved<BR>
11 - CCIT J.17</TD>
</TR></TABLE>
<P>&nbsp;</P></CENTER>
<P ALIGN="center"><A NAME="MPEGTAG"></A><FONT SIZE="5"><B>MPEG Audio Tag ID3v1</B></FONT>
<P>The TAG is used to describe the MPEG Audio file. It contains information
about artist, title, album, publishing year and genre. There is some extra
space for comments. It is exactly 128 bytes long and is located at very end of
the audio data. You can get it by reading the last 128 bytes of the MPEG audio
file.
<P ALIGN="center"><FONT SIZE="5"><B><TT>
AAABBBBB BBBBBBBB BBBBBBBB BBBBBBBB<BR>
BCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCD<BR>
DDDDDDDD DDDDDDDD DDDDDDDD DDDDDEEE<BR>
EFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFG<BR>
</TT></B></FONT>
<CENTER>
<TABLE BORDER="0" WIDTH="500">
<TR VALIGN=TOP BGCOLOR=#E2E2E2>
<TD>Sign</TD><TD>Length<BR>(bytes)</TD><TD>Position<BR>
(bytes)</TD><TD>Description</TD></TR>
<TR VALIGN=TOP><TD>A</TD><TD>3</TD><TD>(0-2)</TD>
<TD>Tag identification. Must contain 'TAG' if tag exists and is
correct.</TD>
</TR>
<TR><TD>B</TD><TD>30</TD><TD>(3-32)</TD><TD>Title</TD></TR>
<TR><TD>C</TD><TD>30</TD><TD>(33-62)</TD><TD>Artist</TD></TR>
<TR><TD>D</TD><TD>30</TD><TD>(63-92)</TD><TD>Album</TD></TR>
<TR><TD>E</TD><TD>4</TD><TD>(93-96)</TD><TD>Year</TD></TR>
<TR><TD>F</TD><TD>30</TD><TD>(97-126)</TD><TD>Comment</TD></TR>
<TR><TD>G</TD><TD>1</TD><TD>(127)</TD><TD>Genre</TD></TR></TABLE>
</CENTER>
<P>The specification asks for all fields to be padded with null character
(ASCII 0). However, not all applications respect this (an example is WinAmp
which pads fields with &lt;space&gt;, ASCII 32).
<P>There is a small change proposed in <B>ID3v1.1</B> structure. The last byte
of the Comment field may be used to specify the track number of a song in an
album. It should contain a null character (ASCII 0) if the information is
unknown.
<P>Genre is a numeric field which may have one of the following values:
<CENTER>
<TABLE BORDER="0" WIDTH="90%">
<TR>
<TD WIDTH="1%">0</TD>
<TD WIDTH="20%">'Blues'</TD>
<TD WIDTH="1%">20</TD>
<TD WIDTH="20%">'Alternative'</TD>
<TD WIDTH="1%">40</TD>
<TD WIDTH="20%">'AlternRock'</TD>
<TD WIDTH="1%">60</TD>
<TD WIDTH="20%">'Top 40'</TD>
</TR>
<TR>
<TD>1</TD>
<TD>'Classic Rock'</TD>
<TD>21</TD>
<TD>'Ska'</TD>
<TD>41</TD>
<TD>'Bass'</TD>
<TD>61</TD>
<TD>'Christian Rap'</TD>
</TR>
<TR>
<TD>2</TD>
<TD>'Country'</TD>
<TD>22</TD>
<TD>'Death Metal'</TD>
<TD>42</TD>
<TD>'Soul'</TD>
<TD>62</TD>
<TD>'Pop/Funk'</TD>
</TR>
<TR>
<TD>3</TD>
<TD>'Dance'</TD>
<TD>23</TD>
<TD>'Pranks'</TD>
<TD>43</TD>
<TD>'Punk'</TD>
<TD>63</TD>
<TD>'Jungle'</TD>
</TR>
<TR>
<TD>4</TD>
<TD>'Disco'</TD>
<TD>24</TD>
<TD>'Soundtrack'</TD>
<TD>44</TD>
<TD>'Space'</TD>
<TD>64</TD>
<TD>'Native American'</TD>
</TR>
<TR>
<TD>5</TD>
<TD>'Funk'</TD>
<TD>25</TD>
<TD>'Euro-Techno'</TD>
<TD>45</TD>
<TD>'Meditative'</TD>
<TD>65</TD>
<TD>'Cabaret'</TD>
</TR>
<TR>
<TD>6</TD>
<TD>'Grunge'</TD>
<TD>26</TD>
<TD>'Ambient'</TD>
<TD>46</TD>
<TD>'Instrumental Pop'</TD>
<TD>66</TD>
<TD>'New Wave'</TD>
</TR>
<TR>
<TD>7</TD>
<TD>'Hip-Hop'</TD>
<TD>27</TD>
<TD>'Trip-Hop'</TD>
<TD>47</TD>
<TD>'Instrumental Rock'</TD>
<TD>67</TD>
<TD>'Psychadelic'</TD>
</TR>
<TR>
<TD>8</TD>
<TD>'Jazz'</TD>
<TD>28</TD>
<TD>'Vocal'</TD>
<TD>48</TD>
<TD>'Ethnic'</TD>
<TD>68</TD>
<TD>'Rave'</TD>
</TR>
<TR>
<TD>9</TD>
<TD>'Metal'</TD>
<TD>29</TD>
<TD>'Jazz+Funk'</TD>
<TD>49</TD>
<TD>'Gothic'</TD>
<TD>69</TD>
<TD>'Showtunes'</TD>
</TR>
<TR>
<TD>10</TD>
<TD>'New Age'</TD>
<TD>30</TD>
<TD>'Fusion'</TD>
<TD>50</TD>
<TD>'Darkwave'</TD>
<TD>70</TD>
<TD>'Trailer'</TD>
</TR>
<TR>
<TD>11</TD>
<TD>'Oldies'</TD>
<TD>31</TD>
<TD>'Trance'</TD>
<TD>51</TD>
<TD>'Techno-Industrial'</TD>
<TD>71</TD>
<TD>'Lo-Fi'</TD>
</TR>
<TR>
<TD>12</TD>
<TD>'Other'</TD>
<TD>32</TD>
<TD>'Classical'</TD>
<TD>52</TD>
<TD>'Electronic'</TD>
<TD>72</TD>
<TD>'Tribal'</TD>
</TR>
<TR>
<TD>13</TD>
<TD>'Pop'</TD>
<TD>33</TD>
<TD>'Instrumental'</TD>
<TD>53</TD>
<TD>'Pop-Folk'</TD>
<TD>73</TD>
<TD>'Acid Punk'</TD>
</TR>
<TR>
<TD>14</TD>
<TD>'R&amp;B'</TD>
<TD>34</TD>
<TD>'Acid'</TD>
<TD>54</TD>
<TD>'Eurodance'</TD>
<TD>74</TD>
<TD>'Acid Jazz'</TD>
</TR>
<TR>
<TD>15</TD>
<TD>'Rap'</TD>
<TD>35</TD>
<TD>'House'</TD>
<TD>55</TD>
<TD>'Dream'</TD>
<TD>75</TD>
<TD>'Polka'</TD>
</TR>
<TR>
<TD>16</TD>
<TD>'Reggae'</TD>
<TD>36</TD>
<TD>'Game'</TD>
<TD>56</TD>
<TD>'Southern Rock'</TD>
<TD>76</TD>
<TD>'Retro'</TD>
</TR>
<TR>
<TD>17</TD>
<TD>'Rock'</TD>
<TD>37</TD>
<TD>'Sound Clip'</TD>
<TD>57</TD>
<TD>'Comedy'</TD>
<TD>77</TD>
<TD>'Musical'</TD>
</TR>
<TR>
<TD>18</TD>
<TD>'Techno'</TD>
<TD>38</TD>
<TD>'Gospel'</TD>
<TD>58</TD>
<TD>'Cult'</TD>
<TD>78</TD>
<TD>'Rock &amp; Roll'</TD>
</TR>
<TR>
<TD>19</TD>
<TD>'Industrial'</TD>
<TD>39</TD>
<TD>'Noise'</TD>
<TD>59</TD>
<TD>'Gangsta'</TD>
<TD>79</TD>
<TD>'Hard Rock'</TD>
</TR>
</TABLE>
<DIV ALIGN="LEFT"><BR>
WinAmp expanded this table with next codes: </DIV>
<TABLE BORDER="0" WIDTH="90%">
<TR>
<TD WIDTH="1%">80</TD>
<TD WIDTH="20%">'Folk'</TD>
<TD>92</TD>
<TD>'Progressive Rock'</TD>
<TD>104</TD>
<TD>'Chamber Music'</TD>
<TD>116</TD>
<TD>'Ballad'</TD>
</TR>
<TR>
<TD>81</TD>
<TD>'Folk-Rock'</TD>
<TD WIDTH="1%">93</TD>
<TD WIDTH="20%">'Psychedelic Rock'</TD>
<TD>105</TD>
<TD>'Sonata'</TD>
<TD>117</TD>
<TD>'Poweer Ballad'</TD>
</TR>
<TR>
<TD>82</TD>
<TD>'National Folk'</TD>
<TD>94</TD>
<TD>'Symphonic Rock'</TD>
<TD WIDTH="1%">106</TD>
<TD WIDTH="20%">'Symphony'</TD>
<TD>118</TD>
<TD>'Rhytmic Soul'</TD>
</TR>
<TR>
<TD>83</TD>
<TD>'Swing'</TD>
<TD>95</TD>
<TD>'Slow Rock'</TD>
<TD>107</TD>
<TD>'Booty Brass'</TD>
<TD WIDTH="1%">119</TD>
<TD WIDTH="20%">'Freestyle'</TD>
</TR>
<TR>
<TD>84</TD>
<TD>'Fast Fusion'</TD>
<TD>96</TD>
<TD>'Big Band'</TD>
<TD>108</TD>
<TD>'Primus'</TD>
<TD>120</TD>
<TD>'Duet'</TD>
</TR>
<TR>
<TD>85</TD>
<TD>'Bebob'</TD>
<TD>97</TD>
<TD>'Chorus'</TD>
<TD>109</TD>
<TD>'Porn Groove'</TD>
<TD>121</TD>
<TD>'Punk Rock'</TD>
</TR>
<TR>
<TD>86</TD>
<TD>'Latin'</TD>
<TD>98</TD>
<TD>'Easy Listening'</TD>
<TD>110</TD>
<TD>'Satire'</TD>
<TD>122</TD>
<TD>'Drum Solo'</TD>
</TR>
<TR>
<TD>87</TD>
<TD>'Revival'</TD>
<TD>99</TD>
<TD>'Acoustic'</TD>
<TD>111</TD>
<TD>'Slow Jam'</TD>
<TD>123</TD>
<TD>'A Capela'</TD>
</TR>
<TR>
<TD>88</TD>
<TD>'Celtic'</TD>
<TD>100</TD>
<TD>'Humour'</TD>
<TD>112</TD>
<TD>'Club'</TD>
<TD>124</TD>
<TD>'Euro-House'</TD>
</TR>
<TR>
<TD>89</TD>
<TD>'Bluegrass'</TD>
<TD>101</TD>
<TD>'Speech'</TD>
<TD>113</TD>
<TD>'Tango'</TD>
<TD>125</TD>
<TD>'Dance Hall'</TD>
</TR>
<TR>
<TD>90</TD>
<TD>'Avantgarde'</TD>
<TD>102</TD>
<TD>'Chanson'</TD>
<TD>114</TD>
<TD>'Samba'</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
</TR>
<TR>
<TD>91</TD>
<TD>'Gothic Rock'</TD>
<TD>103</TD>
<TD>'Opera'</TD>
<TD>115</TD>
<TD>'Folklore'</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
</TR>
<TR>
<TD COLSPAN=8>Any other value should be considered as 'Unknown'
</TABLE>
<P>&nbsp;</P></CENTER>
<P ALIGN="center"><A NAME="MPEG TAG"></A><FONT SIZE="5"><B>MPEG Audio Tag ID3v2</B></FONT>
<P>This is new proposed TAG format which is different than ID3v1 and ID3v1.1.
Complete tech specs for it may be found at <A
HREF="http://www.id3.org/">http://www.id3.org/</A>.
<P><CENTER>
<HR>
<P><FONT SIZE="-1"> Created on September 1998. by <A HREF="http://www.dv.co.yu/broker/">Predrag
Supurovic</A>.<BR>
Thanks to <A HREF="http://www.jps.net/kyunghi/">Jean</A> for debugging and polishing
of this document, <A HREF="http://members.tripod.com/~videoripper/home.htm">Peter
Luijer</A>, Guwani, Rob Leslie and Franc Zijderveld<BR>
for valuable comments and corrections.</FONT></P>
<P>&copy; 1998, 1999 Copyright by DataVoyage</P>
<P><FONT SIZE="-1">This document may be changed. Check <A
HREF="http://www.dv.co.yu/mpgscript/mpeghdr.htm">http://www.dv.co.yu/mpgscript/mpeghdr.htm</A>
for updates.<BR>
You may use it freely. Distribution is allowed only in unaltered form. If you
can help me make it more accurate, please do. </FONT></P>
<P>&nbsp;</P>
</CENTER>
#include "foot.t"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -1,6 +0,0 @@
#define _PAGE_ FAQ - Features We Will Not Implement
#include "head.t"
#include "nodo.raw"
#include "foot.t"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -1,99 +0,0 @@
#define _PAGE_ How To Work With Patches
#include "head.t"
<p>
When we speak of 'patches' in the Rockbox project, we mean a set of changes
to one or more source files.
<h2>Tools Of The Trade</h2>
<p>
Use the tools 'diff' and 'patch'. Preferably the GNU versions. They're readily
available for all imaginable platforms.
<p>
Try one of these:
<ul>
<li> <a href="http://www.fsf.org/software/patch/patch.html">http://www.fsf.org/software/patch/patch.html</a>
<li> <a href="http://www.gnu.org/directory/diffutils.html">http://www.gnu.org/directory/diffutils.html</a>
<li> <a href="http://gnuwin32.sourceforge.net/packages/patch.htm">http://gnuwin32.sourceforge.net/packages/patch.htm</a> - patch for Windows
<li> <a href="http://gnuwin32.sourceforge.net/packages/diffutils.htm">http://gnuwin32.sourceforge.net/packages/diffutils.htm</a> - diff for Windows
</ul>
<h2>Newlines</h2>
<p>
These tools will assume and operate on "unix-style" newlines. That means all
files that you're diffing and patching etc must have LF newlines only, and
<b>not</b> the Windows/DOS standard CRLF newlines,
<p>
Not complying to this simple fact will cause you grief. Mark my words.
<h2>Creating A Patch</h2>
<p>
We generate diffs (often called patches) using 'diff' in a manner similar to
this:
<pre>
diff -u oldfile newfile > patch
</pre>
<p>
People who have checked out code with CVS can do diffs using cvs like this:
<pre>
cvs diff -u file > patch
</pre>
<p>
'diff' can also be used on a whole directory etc to generate one file with
changes done to multiple:
<pre>
diff -u olddir newdir > patch
</pre>
<p>
The -u option means the output is using the 'unified diff' format. Older
diff programs don't have that, and then -c (for 'context diff') is OK.
<h2>Submitting A Patch</h2>
<p>All patches that are meant for inclusion in the sources should follow the
format listed on the <a href="contributing.html">Contributing to Rockbox</a>
page, and be posted to the <a
href="http://sourceforge.net/tracker/?group_id=44306&atid=439120">patch
tracker</a>. Patches sent to the mailing list are quickly lost in the traffic
of the list itself.
<p>
Please keep in mind that not all submitted patches will be accepted.
<h2>Applying A Patch</h2>
<p>
Applying a 'patch' (output from diff -u) is done with the 'patch' tool:
<pre>
cd to/source/root
patch < patchfile
</pre>
<p>
patch knows that the patchfile is a set of changes on one or more files, and
will do those to your local files. If your files have changed too much for the
patch to work, it will save the sections of the patch that aren't possible to
apply in a file called "filename.rej" (filename being the name of the file for
which the failing section was intended for). Then you must take care of them
manually.
<p>
If there is path information in the patchfile that you want to cut off
from the left, tell patch how many directory levels to cut off to find the
names in your file system:
<pre>
patch -p0 < patchfile
patch -p1 < patchfile
patch -p2 < patchfile
</pre>
... each example line removes one extra level of dir info from the left.
<p>
You can use the --dry-run option to patch to make sure that the patch applies
clean. It doesn't actually apply the patch, only prints what would happen if
you run it.
<h2>Removing A Patch</h2>
<p>
You can remove a patch again from the sources by doing the reverse action of
a specific patch. You do this with the -R (or --reverse) options, such as:
<pre>
patch -p1 -R < patchfile
</pre>
#include "foot.t"

View file

@ -1,230 +0,0 @@
#define _PAGE_ Port pin assignments
#include "head.t"
<h2>Port A</h2>
<table border=1>
<tr><th>Port pin</th>
<th colspan=2>Player</th>
<th colspan=2>Recorder</th>
<th colspan=2>FM/V2 Recorder</th>
</tr>
<tr><th><b>PA0</b></th>
<td><b>GP In</b></td><td>DC adapter detect (0=inserted)</td>
<td><b>/CS4</b></td><td>MAS Parallel Port (for recording)</td>
<td><b>/CS4</b></td><td>MAS Parallel Port (for recording)</td>
</tr>
<tr><th><b>PA1</b></th>
<td><b>/RAS Out</b></td><td>DRAM control</td>
<td><b>/RAS Out</b></td><td>DRAM control</td>
<td><b>/RAS Out</b></td><td>DRAM control</td>
</tr>
<tr><th><b>PA2</b></th>
<td><b>/CS6 Out</b></td><td>ATA registers</td>
<td><b>/CS6 Out</b></td><td>ATA registers</td>
<td><b>/CS6 Out</b></td><td>ATA registers</td>
</tr>
<tr><th><b>PA3</b></th>
<td><b>/WAIT In</b></td><td>Bus handshake</td>
<td><b>/WAIT In</b></td><td>Bus handshake</td>
<td><b>/WAIT In</b></td><td>Bus handshake</td>
</tr>
<tr><th><b>PA4</b></th>
<td><b>/WR Out</b></td><td>Bus write signal</td>
<td><b>/WR Out</b></td><td>Bus write signal</td>
<td><b>/WR Out</b></td><td>Bus write signal</td>
</tr>
<tr><th><b>PA5</b></th>
<td><b>GP In</b></td><td>ON key (0=pressed)</td>
<td><b>GP Out</b></td><td>ATA power control (1=on)</td>
<td><b>GP Out</b></td><td>ATA/LED power control (1=on)</td>
</tr>
<tr><th><b>PA6</b></th>
<td><b>/RD Out</b></td><td>Bus read signal</td>
<td><b>/RD Out</b></td><td>Bus read signal</td>
<td><b>/RD Out</b></td><td>Bus read signal</td>
</tr>
<tr><th><b>PA7</b></th>
<td><b>GP Out</b></td><td>ATA buffer control (0=active)</td>
<td><b>GP Out</b></td><td>ATA buffer control (0=active)</td>
<td><b>GP Out</b></td><td>ATA buffer control (0=active)</td>
</tr>
<tr><th><b>PA8</b></th>
<td><b>&nbsp;</b></td><td>&nbsp;</td>
<td><b>GP Out</b></td><td>MAS POR Reset (polarity varies)</td>
<td><b>GP Out</b></td><td>MAS POR Reset (polarity varies)</td>
</tr>
<tr><th><b>PA9</b></th>
<td><b>GP Out</b></td><td>ATA Reset (0=reset)</td>
<td><b>GP Out</b></td><td>ATA Reset (0=reset)</td>
<td><b>GP Out</b></td><td>ATA Reset (0=reset)</td>
</tr>
<tr><th><b>PA10</b></th>
<td><b>GP Out</b></td><td>USB Enable (0=enable)</td>
<td><b>GP Out</b></td><td>USB Enable (polarity varies)</td>
<td><b>GP Out</b></td><td>USB Enable (polarity varies)</td>
</tr>
<tr><th><b>PA11</b></th>
<td><b>GP In</b></td><td>STOP key (0=pressed)</td>
<td><b>GP Out</b></td><td>MAS PR DMA Request (polarity varies)</td>
<td><b>GP Out</b></td><td>MAS PR DMA Request (polarity varies)</td>
</tr>
<tr><th><b>PA12</b></th>
<td><b>/IRQ0</b></td><td>ATA INTRQ (not used)</td>
<td><b>/IRQ0</b></td><td>ATA INTRQ (not used)</td>
<td><b>/IRQ0</b></td><td>ATA INTRQ (not used)</td>
</tr>
<tr><th><b>PA13</b></th>
<td><b>&nbsp;</b></td><td>&nbsp;</td>
<td><b>/IRQ1</b></td><td>RTC IRQ</td>
<td><b>&nbsp;</b></td><td>&nbsp;</td>
</tr>
<tr><th><b>PA14</b></th>
<td><b>GP Out</b></td><td>Backlight (1=on)</td>
<td><b>GP In</b></td><td>Not used</td>
<td><b>&nbsp;</b></td><td>&nbsp;</td>
</tr>
<tr><th><b>PA15</b></th>
<td><b>GP In</b></td><td>USB cable detect (0=inserted)</td>
<td><b>/IRQ3</b></td><td>MAS Demand IRQ, start demand</td>
<td><b>/IRQ3</b></td><td>MAS Demand IRQ, start demand</td>
</tr>
</table>
<h2>Port B</h2>
<table border=1>
<tr><th>Port pin</th>
<th colspan=2>Player</th>
<th colspan=2>Recorder</th>
<th colspan=2>FM/V2 Recorder</th>
</tr>
<tr><th><b>PB0</b></th>
<td><b>GP Out</b></td><td>LCD Data Select (1=data)</td>
<td><b>GP Out</b></td><td>LCD Serial Data</td>
<td><b>GP Out</b></td><td>LCD Serial Data / FM Radio Data In</td>
</tr>
<tr><th><b>PB1</b></th>
<td><b>GP Out</b></td><td>LCD Chip Select (0=active)</td>
<td><b>GP Out</b></td><td>LCD Serial Clock</td>
<td><b>GP Out</b></td><td>LCD Serial Clock / FM Radio Serial Clock</td>
</tr>
<tr><th><b>PB2</b></th>
<td><b>GP Out</b></td><td>LCD Serial Data</td>
<td><b>GP Out</b></td><td>LCD Data Select (1=data)</td>
<td><b>GP Out</b></td><td>LCD Data Select (1=data)</td>
</tr>
<tr><th><b>PB3</b></th>
<td><b>GP Out</b></td><td>LCD Serial Clock</td>
<td><b>GP Out</b></td><td>LCD Chip Select (0=active)</td>
<td><b>GP Out</b></td><td>LCD Chip Select (0=active) / FM Radio Chip Enable (1=active)</td>
</tr>
<tr><th><b>PB4</b></th>
<td><b>GP Out</b></td><td>Hard disk power (1=on) <b>NewPlayer only</b></td>
<td><b>GP In</b></td><td>OFF key (0=pressed)</td>
<td><b>GP In</b></td><td>FM Radio Data Out</td>
</tr>
<tr><th><b>PB5</b></th>
<td><b>GP Out</b></td><td>MAS WSEN (1=enable)</td>
<td><b>GP Out</b></td><td>Charger control (0=enable)</td>
<td><b>GP Out</b></td><td>Main power control (0=shut off)</td>
</tr>
<tr><th><b>PB6</b></th>
<td><b>GP Out</b></td><td>Red LED control (1=on)</td>
<td><b>GP Out</b></td><td>Red LED control (1=on)</td>
<td><b>GP Out</b></td><td>Red LED control (1=on)</td>
</tr>
<tr><th><b>PB7</b></th>
<td><b>GP I/O</b></td><td>I²C Data</td>
<td><b>GP Out</b></td><td>I²C Data</td>
<td><b>GP Out</b></td><td>I²C Data</td>
</tr>
<tr><th><b>PB8</b></th>
<td><b>&nbsp;</b></td><td>&nbsp;</td>
<td><b>GP In</b></td><td>ON key (0=pressed)</td>
<td><b>&nbsp;</b></td><td>&nbsp;</td>
</tr>
<tr><th><b>PB9</b></th>
<td><b>TxD0</b></td><td>MAS Serial link for MP3 data</td>
<td><b>TxD0</b></td><td>MAS Serial link for MP3 data</td>
<td><b>TxD0</b></td><td>MAS Serial link for MP3 data</td>
</tr>
<tr><th><b>PB10</b></th>
<td><b>RxD1</b></td><td>Remote control serial input</td>
<td><b>RxD1</b></td><td>Remote control serial input</td>
<td><b>Unused</b></td><td>(meant for RDS data input, IIRC)</td>
</tr>
<tr><th><b>PB11</b></th>
<td><b>&nbsp;</b></td><td>&nbsp;</td>
<td><b>&nbsp;</b></td><td>&nbsp;</td>
<td><b>&nbsp;</b></td><td>&nbsp;</td>
</tr>
<tr><th><b>PB12</b></th>
<td><b>SCK0</b></td><td>MAS Serial Clock for MP3 data</td>
<td><b>SCK0</b></td><td>MAS Serial Clock for MP3 data</td>
<td><b>SCK0</b></td><td>MAS Serial Clock for MP3 data</td>
</tr>
<tr><th><b>PB13</b></th>
<td><b>GP Out</b></td><td>I²C Clock</td>
<td><b>GP Out</b></td><td>I²C Clock</td>
<td><b>GP Out</b></td><td>I²C Clock</td>
</tr>
<tr><th><b>PB14</b></th>
<td><b>/IRQ6</b></td><td>MAS Demand IRQ, stop demand</td>
<td><b>/IRQ6</b></td><td>MAS Demand IRQ, stop demand</td>
<td><b>/IRQ6</b></td><td>MAS Demand IRQ, stop demand</td>
</tr>
<tr><th><b>PB15</b></th>
<td><b>GP In</b></td><td>MAS MP3 frame sync</td>
<td><b>GP In</b></td><td>MAS PRTW input (0=ready)</td>
<td><b>GP In</b></td><td>MAS PRTW input (0=ready)</td>
</tr>
</table>
<h2>Port C/Analog In</h2>
<table border=1>
<tr><th>Port pin</th>
<th>Player</th>
<th>Recorder</th>
<th>FM/V2 Recorder</th>
</tr>
<tr><th><b>PC0/AN0</b></th>
<td>LEFT key</td>
<td>Battery voltage 1 (unusable)</td>
<td>&nbsp;</td>
</tr>
<tr><th><b>PC1/AN1</b></th>
<td>MENU key</td>
<td>Charger regulator voltage</td>
<td>USB detect</td>
</tr>
<tr><th><b>PC2/AN2</b></th>
<td>RIGHT key</td>
<td>USB voltage</td>
<td>OFF key</td>
</tr>
<tr><th><b>PC3/AN3</b></th>
<td>PLAY key</td>
<td>&nbsp;</td>
<td>ON key</td>
</tr>
<tr><th><b>PC4/AN4</b></th>
<td>&nbsp;</td>
<td>F1, F2, F3, UP keys</td>
<td>F1, F2, F3, UP keys</td>
</tr>
<tr><th><b>PC5/AN5</b></th>
<td>&nbsp;</td>
<td>DOWN, PLAY, LEFT, RIGHT keys</td>
<td>DOWN, PLAY, LEFT, RIGHT keys</td>
</tr>
<tr><th><b>PC6/AN6</b></th>
<td>Battery voltage</td>
<td>Battery voltage</td>
<td>Battery voltage</td>
</tr>
<tr><th><b>PC7/AN7</b></th>
<td>DC input voltage</td>
<td>DC input voltage</td>
<td>Charge current?</td>
</tr>
</table>
#include "foot.t"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -1,53 +0,0 @@
#define _PAGE_ Repair your JBR V1 battery connectors
#include "head.t"
<p>
This guide will show you how to repair the battery connectors on your
Jukebox Recorder V1. You will need some soldering skills, and not be afraid
of opening up your jukebox. If you have second thoughts about this, let
somebody else do it for you. <a href=http://www.newmp3technology.com>
NewMP3Technology</a> can certainly help you with that.
<h2>Symptoms</h2>
A loose battery connector can give all kinds of weird behaviour:
<ul>
<li>Drastically lowered battery runtime
<li>It shuts down or reboots when you squeeze the bumpers
<li>It refuses to start up, saying something like this:
<pre>
HD register error
SC1 (85) 128
SN1 (170) 128
SC2 (170) 128
SN2 (85) 128
</pre>
</ul>
<h2>Performing the surgery</h2>
First you open up your recorder, this is described
<a href=http://rockbox.haxx.se/mods/disassemble.html>here</a>.
<p>
This picture shows you the two solder joints that most often are broken.
<p>
<a href=solderjoints.jpg><img border=0 src=solderjoints_t.jpg></a>
<p>
Now you fire up your soldering iron and resolder the joints. Make sure that the PCB really is connected to the metal housing.
<p>
<a href=solderjoints2.jpg><img border=0 src=solderjoints2_t.jpg></a>
<p>
Once you have resoldered all joints, reassemble the archos and start it up.
The reassembly is described
<a href=http://rockbox.haxx.se/mods/reassemble.html>here</a>.
<p>
Good luck!
<p>
<i>Linus</i>
#include "foot.t"

View file

@ -1,125 +0,0 @@
#define _PAGE_ Repair Your LCD
#include "head.t"
<p>
Author: Peter van Hardenberg
<p>
My LCD screen broke, I know I'm not alone, so at dwihno's suggestion, I'm
typing up this information so everyone else can benefit too.
<p>
Okay, your LCD is broken, but the 'box still works. Now what?
<h2>PART 1: Getting a new screen</h2>
<p>
You're going to need a new LCD, but odds are you don't have a clue where
to get one.
<pre>
Part number: G112064-30
Manufacturer: Shing Yih Technologies, Taiwan
</pre>
<p>
Unless you're buying a few hundred, I don't think Shing Yih is going to
listen to you. Instead, I recommend you shop at:
<p>
<a href="http://www.newmp3technology.com/">http://www.newmp3technology.com/</a>
<p>
For me, a replacement LCD was $24USD with shipping. (Archos wants $60
minimum just to look at it.)
<h2>PART 2: Disassembling the Frame</h2>
<p>
This is written up well on the rockbox site, but you will need a #10 Torx
bit (check your hardware store) and a small Phillip's head screwdriver to
take the box apart.
<p>
<a href="http://rockbox.haxx.se/mods/disassemble.html">http://rockbox.haxx.se/mods/disassemble.html</a>
<h2>PART 3: Desoldering</h2>
<p>
There are a total of eight points you will need to desolder. They are
three on each side of the metal frame holding the electronics, and two at
the top end. The side points are structural, but the top two (which are on
either side of the microphone) supply power to the hard drive. I am not
going to tell you how to desolder a joint. That is up to you. I found it
helpful to use a small tool to lift up the joints as I worked, seperating
the side ones individually and then gradually working out the top ones. I
certainly hope you are more competant at desoldering than I.
<p>
The two electronics boards inside the Archos are connected by a paralell
connector, much like the one you find on the back of your hard drives,
though without the cable. This is why even desoldered the boards will
stick together. Carefully seperate the two boards. They are connected by
several wires. Don't break them.
<p>
<b>NOTE</b>: The two connections at the top (by the microphone) have wires
embedded in them. This won't make your life any easier.
<p>
<b>NOTE</b>: If you remove the tape in the battery compartment while you work,
make sure you replace it with something afterwards! (A couple strips of
simple scotch tape worked for me.)
<p>
BE CAREFUL not to break the end boards off while you work!
<p>
Again, the rockbox site has some handy pictures, though this section is
for the non-recorder model and is a bit uninformative.
<p>
<a href="http://rockbox.haxx.se/mods/disassemble2.html">http://rockbox.haxx.se/mods/disassemble2.html</a>
<h2>PART 3: The New LCD</h2>
<p>
Remove the old LCD cable. There are two little clips (one on each side of
the connector) that can be gently pushed out to free the strip connector.
When you put the new LCD in, make sure you have the right orientation
(duh) and also make sure the connection is tight before you clip it back
down. This part is probably the easiest of the whole affair. Be careful
with the plastic frame under the LCD, as it seems a bit fragile.
<h2>PART 4: Test!</h2>
<p>
Don't solder it all back together yet. Re-seat the top electronics board
so the parallel connector is snug. (Watch out for those pins by the
microphone! Now you can plug the unit into the AC adapter to see if the
LCD works. You should get a message on the LCD saying "ATA Error" or
something to that effect. This means the LCD is sitting correctly and you
can proceed to reassemble. If not, go back to part 3.
<p>
<h2>PART 5: Resolder</h2>
<p>
UNPLUG the archos. (Just thought I'd better reiterate.)
<p>
Resolder the two top connections (the ones by the mic).
<p>
PLUG the archos back in. The hard drive should spin up. Nothing much more
will happen until you put the batteries in though. (I think, I can't quite
remember.)
<p>
Okay, good. Unplug the Archos again.
<p>
IMPORTANT: When you resolder the frame points, make sure you don't leave
any pointy bits of solder poking into where the batteries run. I did, and
they scraped the plastic off my batteries, shorted out against the frame,
melted the inside of one of the bumpers a bit (smoking and smelling
awfully) and just about scared me to death. This is also why you need to
put the tape back on if you removed it.
<h2>PART 6: Reassemble the Archos!</h2>
<p>
Put the archos back together, taking care not to bend anything. The rubber
bumpers are tricky, but I think there are some notes on the rockbox site
about how to put them on the right way.
<p>
Victory at last! You're done! Now go to the rockbox site and update your
firmware, I bet it's out of date!
<h2>CONCLUSION</h2>
<p>
In the end, this cost me much less than sending it in to someone
qualified, but was also a hell of a lot scarier. I think I learned a few
things about my Archos though, and I look forward to trying some of the
other mods.
<p>
I'm sure there are people out there (real pros) who are horrified at what
I have written. Please, correct any mistakes I have made in this document
so future 'boxers don't have to go through the hours of stress and strain
I did.
#include "foot.t"

View file

@ -1,95 +0,0 @@
#define _PAGE_ Rocklatin1
#include "head.t"
<p>Only for developers...
<h2>Background</h2>
The Archos player comes in two models. One with old LCD and one with new LCD.
(Differences can be seen below). You can't find any difference more than the
LCD, therefor we run the same code on both models. The original software
contains two different mappings from ASCII-character to hardware-LCD. Because
some characters doesn't exist in both hardwares all national characters
are left out in both hardware.
<p>The old LCD can have 4 software defined characters, and the new LCD can
have 8 software defined characters.
<table border=1><tr>
<td>HW layout of old LCD:<br><img width=272 height=272 src="lcd_old_hw.gif"></td>
<td>HW layout of new LCD:<br><img width=272 height=272 src="lcd_new_hw.gif"></td>
</tr></table>
<h2>What is Rocklatin1</h2>
Rocklatin1 is based on Winlatin1 (which is identical to Latin1 but some
extra characters). All characters presented in any HW-LCD (i.e. old LCD)
is mapped in Rocklatin1 and some extra characters we find good to use.
<table border=1><tr>
<td>Rocklatin1 of old LCD:<br><img width=272 height=272 src="lcd_old.gif"></td>
<td>Rocklatin1 of new LCD:<br><img width=272 height=272 src="lcd_new.gif"></td>
</tr></table>
The red characters are characters not defined in the HW-LCD. These characters
are mapped by the software to a software defined character (0-4/8) whenever
they are used.
<h2>But what if...</h2>
...all software defined characters are taken?<br>
Well, then a substitute character will be used for that character.
<table border=1><tr>
<td>Substitute of old LCD:<br><img width=272 height=272 src="lcd_old_subst.gif"></td>
<td>Substitute of new LCD:<br><img width=272 height=272 src="lcd_new_subst.gif"></td>
</tr></table>
The red characters shows where a substitution is made.
<p>
All Rocklatin1 characters between 0x00 and 0x1f are hardcoded to be prioritized.
That means that if a national character is displayed at LCD and an icon
(0x18-0x1f) is to be shown, the character with highest Rocklatin1 value will
be switched to a substitute character.
<h2>Accessing hardware</h2>
The Rockbox software can access a HW-LCD-character by doing a lcd_putc(0x100-0x1ff). That would of course make it 100% hardware depended (=not good).
<p>
The Rockbox software can also define 22 own patterns, even though hardware only
allows 4 or 8. The software should of course not try to display more than 4
or 8 of such characters. This code example shows how to define a pattern:
<pre>
{
unsigned char pattern[]={ 0x0a, 0x00, 0x00, 0x0c,
0x04, 0x04, 0x0e};
unsigned char handle;
handle=lcd_get_locked_pattern();
lcd_define_pattern(handle, pattern);
lcd_putc(x, y, handle);
...
lcd_unlock_pattern(handle);
}
</pre>
The handle is very likely to be between 0x01 to 0x15, which in software will
be handled as a prioritized character (even higher than the icons).
<h2>Some notes</h2>
<ul>
<li>Displaying the same rocklatin-mapped-character many times at the LCD
only occupies one HW-LCD-mapped character.
<li>If a substitute character is used, the "should-be" character will never
be shown (no flickering screen) until the character is moved or scrolled.
<li>Characters already displayed are only substituted if a prioritized
character is to be displayed.
<li>The software maps the characters circular in order to minimize the
likelyhood to remap the same character very often.
<li>The gifs above is generated with the tool "generate_rocklatin".
<li>Rocklatin character 0x92 is defined as the "cursor" character.
<li>Rocklatin character 0x93-0x95 is only used for substitution (a substitute
character must be a Rocklatin character).
<li>Implementation and design by Kjell Ericson and Mats Lidell (for questions).
<li>Rocklatin1 is based on Winlatin1 because the old LCD happened to have 7
of the Winlatin1-extra characters (no need to remap/remove those).
<li>If you find any characters identical in old and new HW-LCD that aren't
mapped (and really are useful) you can tell us.
</ul>
#include "foot.t"

View file

@ -1,117 +0,0 @@
#define _PAGE_ RVF Conversions and Similar
#include "head.t"
<h2>Introduction</h2>
This is a simple tutorial (or, at least, as simply put as possible) on how
to convert your video files to RVF (Rockbox Video File), to be played on
the Archos Recorder / FM Recorder / V2 line.
<p> Other option is to get the GUI Video Conversion Tool from John Wunder, which
can be downloaded from <a href="http://home.ripway.com/2004-2/66978/RockVideoRelease.zip">
http://home.ripway.com/2004-2/66978/RockVideoRelease.zip</a>. (Windows users only)
<p> See also Fabian Merki's <a
href="http://merkisoft.ch/rockbox/">msi-rvf-gallery</a>, a Java program for
building RVF movies out of individual JPEGs.
<h3>How To Convert AVI to RVF</h3>
<p>
<b><big>This Process Is For Windows Users Only</big></b>
<ol>
<li> Convert your movie file to an AVI file, uncompressed, and with the size:
112x64. There are quite a few programs out there that will do this for you,
so I will leave this step up to you. One such program is "BPS Video
Converter" available online. Use google if you need.
<li> Download the tools required here:
<a
href="http://joerg.hohensohn.bei.t-online.de/archos/video/">http://joerg.hohensohn.bei.t-online.de/archos/video/</a>
Unzip to a PATH, such as C:\RVF, that is easily remembered.
<li> Press START on your taskbar, choose RUN and type in the box (minus
quotes): "command" You should now be looking at a command prompt. If you
don't know basic DOS commands, here is what you need to know:
<br>
Use 'cd' to change dir (format: cd [dir]) IE: "cd .." to go UP one, "cd
ROCKBOX" to enter a path "ROCKBOX"
<li> Navigate to your PATH in DOS prompt, using "cd" as illustrated above.
<li> Run the file, avitoyuv, which was in the packet you earlier downloaded, using the format:
<pre>
avitoyuv [input.avi] [output.yuv]
</pre>
For example, if your AVI movie is called "filename" then you'd put in the following:
<pre>
avitoyuv filename.avi filename.yuv
</pre>
OPTIONAL: You can name the output file differently, whatever you specify it
will be called. INFO: This can take long to convert.
<li> Now run the file, halftone, which was in the packet you earlier downloaded, using the format:
<pre>
halftone [input.yuv] [output.rvf]
</pre>
For example, if your YUV output from step 5 is called "filename" then you'd put in the following:
<pre>
halftone filename.yuv filename.rvf
</pre>
OPTIONAL: You can name the output differently, again. INFO: When this is
done, a long list will appear on your DOS screen and you will be back at the
command prompt again.
<li> Next step is adding sound to your video file. Run the tool avi2wav using the format:
<pre>
avi2wav [input.avi] [output.wav]
</pre>
For example, if your original file is called "filename" then you'd put in the following:
<pre>
avi2wav filename.avi filename.wav
</pre>
OPTIONAL: You can name the output differently.
<li> The extracted audio file must be in mp3 format, so you have to convert the WAV file into MP3.
One option to make this is using the LAME codec. You can download the win32 binary from <a
href="http://mitiok.cjb.net">http://mitiok.cjb.net</a>.
One format used with LAME (good quality/size) is:
<pre>
lame --preset standard [input.wav] [output.mp3]
</pre>
For example, if your audio file is called "filename" then you'd put in the following:
<pre>
lame --preset standard filename.wav filename.mp3
</pre>
OPTIONAL: You can name the output differently. Also, you can use other wav to mp3 tool, or even use
other options in the lame command. NOTE: The --preset standard will give you a VBR file, so if you want a
CBR file, just change the preset to --preset cbr [kbps], where [kbps] is the Constant Bit Rate desired.
<li> Now we have to merge the sound with the video, so run the rvf_mux tool found
in the packet you've downloaded, using the format:
<pre>
rvf_mux [option] [videoinput.rvf] [audioinput.mp3] [output.rvf]
</pre>
For example, if your video file from step 6 is called "filename.rvf" and the audio file from step 7
is called "filename.wav" then you'd put in the following:
<pre>
rvf_mux filename.rvf filename.mp3 filename_av.rvf
</pre>
NOTE: You can use any name for the output file, but it's recomended that the name is not the same name
used in the input video file.
You can change the frames per second of Rockbox playback using the -play_fps [fps] option. The default
value is 67.0 fps.
<li> Copy the .rvf output to your jukebox, load up a recent daily build and
plugins, and kick back and watch the movie!
</ol>
<p>
Video tools, player: Jörg Hohensohn
<p>
Tutorial: Zakk Roberts
#include "foot.t"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View file

@ -1,407 +0,0 @@
#define _PAGE_ Useful mp3 and jukebox related tools
#include "head.t"
<table class="tools">
<tr><td colspan="5" class="toolscat"><h3>Jukebox Synchronization</h3></td></tr>
<tr>
<th>Name</th>
<th width="100">Linux</th>
<th width="100">Windows</th>
<th width="100">Open Source</th>
<th width="100">Freeware</th>
</tr>
<tr>
<td><a href="http://www.cflashsoft.com/jbsynch.htm">Jukebox Synchronizer</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="http://users.skynet.be/bk260007/">Jukebox Manager</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="http://www.uwe-freese.de/absync_english/index.html">ABSync</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="http://www.xs4all.nl/~lploeger/TreeComp3.htm">TreeComp</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="http://samba.anu.edu.au/rsync/">rsync</a></td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="http://www.cis.upenn.edu/~bcpierce/unison/">Unison</a></td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr><td colspan="5" class="toolscat"><h3>MP3 Ripping &amp; Encoding</h3></td></tr>
<tr>
<th>Name</th>
<th width="100">Linux</th>
<th width="100">Windows</th>
<th width="100">Open Source</th>
<th width="100">Freeware</th>
</tr>
<tr>
<td><a href="http://www.exactaudiocopy.de/">Exact Audio Copy</a> (Cardware)
<ul>
<li><a href="http://users.pandora.be/satcp/eac00.htm">The Coaster Factory Exact Audio Copy Tutorial</a></li>
<li><a href="http://mp3.radified.com/">Radified Guide to Ripping &amp; Encoding CD Audio</a></li>
</ul></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="http://www.cdex.n3.net/">CDex</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="http://www.xiph.org/paranoia/index.html">cdparanoia</a></td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="ftp://ftp.berlios.de/pub/cdrecord/">cdda2wav</a></td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="http://www.audiograbber.com-us.net/">Audiograbber</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="http://www.dbpoweramp.com/">dbPowerAmp Music Converter</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="http://lame.sourceforge.net/">Lame</a></td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr><td colspan="5" class="toolscat"><h3>MP3 Cutting, Splitting, Merging</h3></td></tr>
<tr>
<th>Name</th>
<th width="100">Linux</th>
<th width="100">Windows</th>
<th width="100">Open Source</th>
<th width="100">Freeware</th>
</tr>
<tr>
<td><a href="http://www.rz.uni-frankfurt.de/~pesch/">mp3DirectCut</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="http://hem.bredband.net/isrmat/mp3page.htm">MP3Slixer</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="http://musicutter.szm.sk/">MusiCutter</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="http://mp3merge.netfirms.com/">MP3Merge</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="http://www24.brinkster.com/tanyk/index.html">Split MP3</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="http://mp3splt.sourceforge.net/">MP3 Splt</a></td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="http://search.cpan.org/~jv/mp3cut/">mp3cut</a></td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="http://www.logiccell.com/~mp3trim/">mp3Trim</a> (free version limits file length to approx. 7 minutes)</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr><td colspan="5" class="toolscat"><h3>MP3 Tagging &amp; Organization</h3></td></tr>
<tr>
<th>Name</th>
<th width="100">Linux</th>
<th width="100">Windows</th>
<th width="100">Open Source</th>
<th width="100">Freeware</th>
</tr>
<tr>
<td><a href="http://users.otenet.gr/~jtcliper/tgf/">The GodFather</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="http://www.magnusbrading.com/mp3ts/">Mp3TagStudio</a> (Shareware)</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="http://mp3bookhelper.sourceforge.net/">MP3BookHelper</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="http://www.mp3tag.de/en/index.html">MP3Tag</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="http://massid3lib.sourceforge.net/">MP3TagTools</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="http://www.softpointer.com/tr.htm">Tag&amp;Rename</a> (Shareware)</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="http://www.id3-tagit.de/english/index.htm">ID3-TagIT</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="http://mp3renamer.de/start_frame.html">MP3 ID3Tag Renamer</a> (Emailware)</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="http://shanebrinkmandavis.com/homepage/ID3Browse/index.html">ID3Browse</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="http://www.mediamonkey.com/">MediaMonkey Standard</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="http://easytag.sourceforge.net/">EasyTAG</a></td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="http://search.cpan.org/~jv/mp3info/">mp3info</a>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="http://search.cpan.org/~jv/mp3getcddb/">mp3getcddb</a>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="http://search.cpan.org/~jv/mp3rename/">mp3rename</a>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="http://www.volny.cz/media-tagger/eng/index.html">Media Tagger</a>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr><td colspan="5" class="toolscat"><h3>MP3 Repairing &amp; Analyzing</h3></td></tr>
<tr>
<th>Name</th>
<th width="100">Linux</th>
<th width="100">Windows</th>
<th width="100">Open Source</th>
<th width="100">Freeware</th>
</tr>
<tr>
<td><a href="http://www.paulgeluid.nl/tools/VBRfix/">VBRfix</a></td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="http://hem.bredband.net/isrmat/mp3page.htm">MP3Fixer</a></td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="http://www.geocities.com/mp3utility/">MP3Utility</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="http://www.guerillasoft.nstemp.com/EncSpot2/index.html">EncSpot Basic</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="http://mp3gain.sourceforge.net/index.php">MP3 Gain</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr><td colspan="5" class="toolscat"><h3>Disk Utilities</h3></td></tr>
<tr>
<th>Name</th>
<th width="100">Linux</th>
<th width="100">Windows</th>
<th width="100">Open Source</th>
<th width="100">Freeware</th>
</tr>
<tr>
<td><a href="http://www.pcinspector.de/download.htm#file_recovery">File Recovery</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="ftp://ftp.heise.de/pub/ct/ctsi/h2format.zip">h2format</a> (formats FAT32 > 32GB, German docs only)</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="http://mywebpages.comcast.net/jstewart228368/lud">Jukebox Utility Disk</a></td>
<td colspan="2" align="center">OS independent</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr><td colspan="5" class="toolscat"><h3>Video Tools</h3></td></tr>
<tr>
<th>Name</th>
<th width="100">Linux</th>
<th width="100">Windows</th>
<th width="100">Open Source</th>
<th width="100">Freeware</th>
</tr>
<tr>
<td><a href="http://joerg.hohensohn.bei.t-online.de/archos/video/">J&ouml;rg's Video Tools</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td><a href="http://home.ripway.com/2004-2/66978/RockVideoRelease.zip">GUI Video Conversion Tool</a></td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
<td align="center">X</td>
</tr>
<tr>
<td><a href="http://merkisoft.ch/rockbox/">Rockbox Video Viewer & Gallery Maker</a></td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">X</td>
<td align="center">&nbsp;</td>
</tr>
</table>
#include "foot.t"

View file

@ -1,12 +0,0 @@
ACTION=echo preprocessing $@; rm -f $@; \
$(HOME)/bin/fcpp -WWW -I.. -Uunix -H -C -V -LL $< $@
OBJS := index.shtml old.html
all: $(OBJS)
index.shtml: index.t
$(ACTION)
old.html: old.t
$(ACTION)

View file

@ -1,106 +0,0 @@
#define _PAGE_ Download
#define DOWNLOAD_PAGE
#include "head.t"
<h2>Latest version is 2.5 (2005-09-22)</h2>
<p>Please read the <a href="rockbox-2.5-notes.txt">release notes</a>. (<a href="old.html">Older releases</a>)
<p>Note: Version 2.5 was only released for Archos devices. For other devices, download the daily build.
<p>Make sure you download the correct file for your device:
<table class=rockbox><tr>
<th>player</th>
<th>recorder</th>
<th>recorder v2</th>
<th>fm recorder</th>
</tr><tr valign=top>
<td><a href=/docs/newplayer.jpg><img border=0 src=/docs/newplayer_t.jpg></a><br clear=all>Archos Jukebox 5000, 6000 and Studio models
<p><a href="rockbox-2.5-player.zip">rockbox-2.5-player.zip</a>
<br>(452 KB)</td>
<td>
<a href=/docs/recorder.jpg><img border=0 src=/docs/recorder_t.jpg></a><br clear=all>Archos Jukebox Recorder 6, 10, 15 and 20
<p><a href="rockbox-2.5-recorder.zip">rockbox-2.5-recorder.zip</a>
<br>(736 KB)</td>
<td><a href=/docs/fmrecorder.jpg><img border=0 src=/docs/fmrecorder_t.jpg></a><br clear=all>Archos Jukebox Recorder V2
<p><a href="rockbox-2.5-recorderv2.zip">rockbox-2.5-recorderv2.zip</a>
<br>(744 KB)</td>
<td><a href=/docs/fmrecorder.jpg><img border=0 src=/docs/fmrecorder_t.jpg></a><br clear=all>Archos Jukebox FM Recorder
<p><a href="rockbox-2.5-fmrecorder.zip">rockbox-2.5-fmrecorder.zip</a>
<br>(744 KB)</td>
</tr><tr>
<th>ondio fm</th>
<th>ondio sp</th>
<th>installer</th>
</tr><tr>
<td><a href=/docs/ondiofm.jpg><img border=0 src=/docs/ondiofm_t.jpg></a><br clear=all>Archos Ondio 128 & 128 FM
<p><a href="rockbox-2.5-ondiofm.zip">rockbox-2.5-ondiofm.zip</a>
<br clear=all>(462 KB)</td>
<td><a href=/docs/ondiosp.jpg><img border=0 src=/docs/ondiosp_t.jpg></a><br clear=all>Archos Ondio 128 SP
<p><a href="rockbox-2.5-ondiosp.zip">rockbox-2.5-ondiosp.zip</a>
<br>(620 KB)</td>
<td><img border=0 src=/docs/install.png></a><br clear=all>Windows installer
<p><a href="rockbox-2.5-install.exe">rockbox-2.5-install.exe</a>
<br>(1.4 MB)</td>
</tr></table>
<h2>Installation</h2>
<p>Unpack the entire zip archive in the root (top) directory of your Archos disk. Make sure you stop/eject/unmount the usb disk before you unplug it. <b>Note:</b> All files in the zip file are needed, don't just install a few of them.
<p>Windows users can also use the the installer: Simply select your model and destination drive.
<h2>Download voice files</h2>
<ul>
<li><a href="/twiki/bin/view/Main/VoiceFiles">Voice files</a>
</ul>
<h2>Uninstallation</h2>
<p>If you ever want to remove the Rockbox firmware, simply delete archos.mod (player) or ajbrec.ajz (recorder) and the .rockbox directory from the root of your Archos disk.
<h2>Source code</h2>
<p><a href="rockbox-2.5.tar.gz">rockbox-2.5.tar.gz</a>
<p>
... or get the source directly off the <a href="/twiki/bin/view/Main/UsingCVS">CVS server</a>.
<h2>Manual</h2>
<p>We have a very nice <a href="/twiki/bin/view/Main/RockboxManual">manual</a>
written by Christi Scarborough. Please read it. Check out the <a
href="/twiki/bin/view/Main/DocsIndex">documentation</a> page for further info.
<h2>Donate</h2>
<p>If you enjoy using Rockbox, consider donating to the project. While we
develop the software in our spare time, equipment and players cost real money.
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="bjorn@haxx.se">
<input type="hidden" name="item_name" value="Donation to the Rockbox project">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="cn" value="Note to the Rockbox team">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="tax" value="0">
<input type="image" src="/paypal-donate.gif" border="0" name="submit">
</form>
<h2>Daily Builds</h2>
<!--#exec cmd="./dailymod.pl" -->
<h2>Bug reports</h2>
<p>Please use our <a href="/bugs.shtml">bug page</a>
for all bug reports and feature requests.
<p>If you are interested in helping with the development of Rockbox, please join the mailing list.
#include "foot.t"

Some files were not shown because too many files have changed in this diff Show more