This may be useful to you if you have a jukebox like this or similar. It looks like NSM is still making CD jukeboxes that look pretty much the same, they just keep changing the drive inside. I'd do that to mine if I had the guts to rip the old one out.
My CDR 100 SC has the following specifications:
| 100 CD changer | |||||||||||||||||||
| transparent lockable front loading access | |||||||||||||||||||
| vertical lift mechanism between two 50-disc racks | |||||||||||||||||||
| Philips "LMS CM214 E.13" SCSI CD ROM (maybe CD recordable?) | |||||||||||||||||||
serial (9 pin) in/out interface for the lift mechanism control
| |||||||||||||||||||
SCSI I in and out ("big bulky" connector type)
| |||||||||||||||||||
| RCA left and right speaker jacks. See below if you want to access the drive's headphone jack instead. | |||||||||||||||||||
Buttons and Lights:
| |||||||||||||||||||
| Manufactured in 1993 (best guess from all the stickers and part datecodes) | |||||||||||||||||||
Visible partnumbers:
|
The serial port controls the loading mechanism, and the drive is controlled through the SCSI port.
The sequence is to send an address byte, followed by a command block, then wait for an acknowledge block.
The address byte has the following structure:
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 1 | b | address | |||||
The bit b, is 0 to enable acknowledge, or 1 to buffer acknowledge.
address selects which RS232 ID to talk to (set by dial on device).
The command block has the following structure:
| Byte | Length | Contents | Meaning |
| 0 | 1 | STX | Start of Text 02 hex |
| 1 | 2 | 00..99 | number of bytes that follow, excluding ETX (ascii) |
| 3 | 2 | 00..99 | Command code (ascii) |
| 5 | n | Data | Command arguments (ascii) |
| 6+n | 1 | ETX | End of Text 03 hex |
The acknowledge block has the following structure:
| Byte | Length | Contents | Meaning |
| 0 | 1 | STX | Start of Text 02 hex |
| 1 | 2 | 00..99 | number of bytes that follow, excluding ETX (ascii) |
| 3 | 2 | 00..99 | Command code (ascii) |
| 5 | 2 | 00..99 | Return code (ascii), 00=OK |
| 7 | n | Data | Acknowledge arguments (ascii) |
| 8+n | 1 | ETX | End of Text 03 hex |
List of available commands:
| Code | Argument | Function | Response |
| 14 | . | Request ID-Code | 01RO020104NSM nnROttffffNSM nn=RS232 ID number tt=Device type ffff=Firmware version |
| 19 | . | Request Version | 010401 |
| 22 | A## +## -## |
Loac Disc A is absolute slot +/- is relative slot |
. |
| 23 | . | Stop Disc | . |
| 24 | . | Return Disc | . |
| 25 | . | Request Status | DRC01 sso## ss: DR=Disc Ready, . LN=No Disc Loaded, . LE=Loader Error o: O=door open, . C=door closed |
| Undocumented Commands | |||
| 20 | A0p
|
Read queue entry p=position requested (0-3) |
aa0p#vvvvvttt aa=# of entries in queue (0-20) p=position (0-2) 0=(most recent) #=unknown digit vvvvv=data stored in cmd 27 ttt=time stored (unknown units) |
| 27 | r##### 000000 1000## 2##### |
assorted queue commands 0: clear queue 1: hex to decimal convert 2: insert item to queue |
. . two digit decimal value . |
| 29 | A## | Read something (constant?) | 00000F |
Note on the undocumented commands:
I don't know what these commands do, or if these are all. I found them by writing random commands, and checking for ones that returned something other than 01 (Unknown Command). I didn't search much above 32. I then played with the argument until it returned something other than 03 (Error in Command Format). Then I just tried different combinations of discs, commands, status reads, etc. and tried to guess what they do.
There seems to be a queue of hex values that can be stored with the 27.2 command and read using the 20 command. Each store value is inserted into the 0 position, with the old value being shifted down to the 1 and then 2 positions. Only the first three positions can be read. The number of 'entries in the queue' number keeps incrementing up to 20, at which point it sticks. The unknown digit has been seen to have different values at different times but is consistant over repeated reads, I don't know what determines that. The queue can be cleared with the 27.0 command. The nice thing is that this queue is stored in non-volatile memory and will survive a power cycle. One hypothesis that hasn't been checked is that this has something to do with the acknowledge buffered bit in the address byte.
The 27.1 command seems to be a simple hex to decimal conversion routine taking two hex digits and returning the lowest two decimal digits (numbers above 100 are chopped off). It is quite likely that this is doing something else, and the side effect is just a hex to decimal conversion.
The 29 command seems to always return a constant 00000F. Maybe this means something, maybe not.
I haven't played as much with the SCSI commands yet. Here's what I know about SCSI driver compatability and problems.
Under Win98 (retail), changing discs usually makes the drive disappear until you go into control panel and refresh the SCSI chain (select the controller and click refresh). This doesn't happen under Win98 with service pack 1 on a different machine. This may not be OS version related as much as driver or adapter version.
Under Win98, the CD Audio functions don't work, you get an error message.
Win98 exit to DOS allows running the command line interface that came with the drive called jbcmd.exe. Audio CDs can be played, I was able to use CDPLAY, a DOS TSR made by Future Domain. Other programs would probably work. The guy at my local computer store had it working under Win 3.11 with a GUI audio program.
FreeBSD 2.0.5 works just fine for data discs, but cannot play audio discs:
ILLEGAL REQUEST asc:24,0 Invalid Field in CDB
It is necessary to unmount the disc and then mount it again after changing discs.
| jbcmd.zip - DOS command line interface shipped with box | |
| jbcmd.c - C Source code for a much friendlier version of the command line interface. Written for FreeBSD, but probably works on Linux, easy to port to other platforms. Or, the source code might just be a useful command reference. Makefile | |
| command.exe - Win95/98 NSM Jukebox Commander user interface shipped with box. | |
| cdr100e.pdf - English version of the manual available from NSM's website, seems to cover a bunch of versions of the box, but not exactly mine. Useful command reference. | |
| cdr100.txt - A 1 pager describing how to set up the system under Win95/98. | |
| xa_e.pdf - brochure for NSM's current generation CDR 100 jukeboxes. |
In progress... Getting the audio to work under FreeBSD; A CD manager program that will pull in a disc with a particular file or song, and then auto mount it/play it with a nice continuous audio jukebox mode.