My Optorite CW4002 has been exhibiting an odd issue. It will no burn over 32x, despite being a 40x CDRW drive. I have known good disks (newer build Ritek 40x), and it outright refuses to burn faster.
Here’s a screenshot using Nero’s CDTest on my PC with the 100E firmware:
And now, with the updated 110E firmware:
Yes, it’s now degraded to 12x!
The disk hasn’t fallen back into PIO mode, so I am a bit curious as to issues with this drive. I’ve since downgraded back to the 100E firmware, and will settle for 32x until I manage to find out what’s wrong with the disk. Optorite is also rather confused about this… of obvious reasons!
Without looking too hard into their EEPROM, it looks like they updated their manufacturer codes, thus the drive will burn at this faster, advertised speed for known media.
It seems that Nero NRG format is a fairly trivial overlay about the ISO9660 CD format. The easiest way to convert an NRG to an ISO is to strip the first 307200 bytes; the rest will be your resulting ISO-9660 image.
For example; to mount an NRG in linux via loopback:
mount -t iso9660 -o loop,offset=307200 image.nrg /mnt/image
Alternatively, a program exists, which will do this for you. I’ve pre-compiled a MacOS X 10.3.x version. You may download it here.
This is very-very-very raw; and not necessarily the best solution. What this will do is obtain a web page specified, then print out the data as it is received.
Eventually, I will follow iup with the proper means to encode the data as it is found, with provisions for ‘clicking’ through; having this program rewrite the URLs through itself as a ‘proper’ server-side proxy.
Before I get back on the road yet again, here’s a quick little (horrible) PHP snippit. A friend of mine is learning PHP, and asked me how to strip all of the ‘unprintable’ characters out of a string. ctype_alpha() can not be considered portable enough yet, and of course, there is no isascii() in PHP… not to mention that PHP’s string manipulation is haphazard and slow – at best.
Here’s what I ended up giving him. It’s a trivial little hack that accepts two variables; a string (of course), and a boolean, “dots” to replace unprintable characters with periods. It’s highly tied to the ASCII character set.
function nonascii_string_cleaning($myText, $dots = FALSE) {
$trans_array = array();
// This is the lower (unprintable) ASCII character set
for ($i = 0; $i < 32; $i++) {
$trans_array[chr($i)] = ($dots) ? ”.” : “”;
}
// This is the “higher” (unprintable) ASCII character set
for ($i = 129; $i < 255; $i++) {
$trans_array[chr($i)] = ($dots) ? ”.” : “”;
}
$replaced = strtr($myText, $trans_array);
return $replaced;
}
Horrid Example (Yes, this is what he wanted to do:)
It’s pretty simple, if not mostly-useless. Still, this makes me wish there were more C-like functions in PHP. Come on, guys! This would have been much better with isalpha() and an intelligent getchar() type of ordeal. Sure, it’s possible to use a file handle, or pass things as an array; but with my testing, and his requirement of it accepting a string, this came out about as fast and ‘bare wire’ as possible, while still being legible. Note my use of the ternary operators. ;)