User manual to CD Audio Player Version 1.00 by Mathy van Nisselroy After I made some more changes to CDAP - we're at version 146 at the moment of this writing - it dawned on me that maybe CDAP118.DOC wasn't really up to date anymore. Here goes. (Some text might seem familiar if you've read CDAP118.DOC. I'm not starting from scratch ye' know.) Let's start with the bad news. My code started running into the ASPI manager code. I had the choice, either move the manager, tell TurboBASIC to leave the manager alone or shorten my code. Option 1 would be the best. Option 2 won't win any prices in the category 'nice programming' (and I'm still not sure how to do this reliably). So for now, the only option is number three. Easiest way was to kick out the HELP screens. As soon as I find a better solution, the HELP screens will be back. I promiss. That's why the 'Press H, ? or [HELP]' is still in there, even though the routine is disabled/removed. BTW since the HELP screens are gone, the 'CDAP crashes after a CD change' bug seems to have disappeared too. Let's hope it never returns. This utility will not run on it's own. You'll also need TurboBASIC and an ASPI manager for your harddrive interface. ASPI means Advanced SCSI Programming Interface. You might know this if you are a PC user. In the case of the Atari 8 bit, you shouldn't take the "SCSI" part as "strickly SCSI". The only version available for the 8 bit Atari at the moment of this writing is the BlackBox version. But versions for other SCSI or IDE interfaces are possible. Matthias Belitz is the guy who came up with the idea for ASPI on the 8 bit Atari. He wrote the BlackBox version of the ASPI manager. He also wrote some utilities to test and show the abilities of the BB ASPI manager. Now what is this ASPI manager thing, you might ask yourself. Well... how do I explain this without everybody loosing interest.... Let's use the CD Audio player utility I wrote as an example. There are a number of different harddisk interfaces for the Atari: SCSI: BlackBox, MIO, Supra/KPI-Interface IDE: MSC-IDE Controller, SIO2IDE, etc., etc., etc. Let's say all these interfaces support full 16 bit access (The BB and MSC do. I'm not sure about the rest. But let's assume they do for the sake of this example). You could write an audio player for each and every one of these interfaces. But each piece of software needs a menu, needs to show the data. And all need to use the same SCSI or IDE commands (SCSI and IDE commands look the same). What ASPI does is separate the 'device specific' stuff, from the stuff you need independant of the harddrive interface you are using. This means that you only need an ASPI manager for your piece of hardware, to use tools written for use with any ASPI manager. At the moment the only ASPI manager available for the 8 bit Atari is the BlackBox ASPI manager. But as soon as an MSC-IDE controller ASPI manager has been realised (or a MIO version, Supra/KPI-Interface version, SIO2IDE, or...) you just load that version to use it with the MSC-IDE controller (or MIO, Supra/KPI-Interface, SIO2IDE). After that you load the tool you want. Like my CD audio player. Independant of the hardware interface you are using. You could, if you want to, compare it to a printer driver in the PC world. If you buy a different printer, you install the accompaniing printer driver and voila, all the other software works with the new printer. That's kinda like ASPI for the 8 bit Atari. With each different (SCSI or IDE) interface, you load _it's_ version of the ASPI manager and voila, all software (that is written to work with an ASPI manager for the 8 bit Atari) will work with that interface. OK, let's start. For my CD audio player, you need to load TurboBASIC. From TurboBASIC you load CDAP.xyz. Before you run it, you change line 80 to make sure it loads the right ASPI manager from the right disk/partition. In my case, the ASPI manager is the BB ASPI manager (the only one available at the time of this writing) which is in my 'MSC:' subdirectory in my boot partition. Now RUN it. If everything went OK, you'll see either "No Audio CD" or a list of track numbers, each with their length in minutes and seconds. The SCSI standard (and probably also the IDE standard) does not allow you to use AUDIO commands on DATA tracks. There are no provisions in my software to inform you about this. For instance, if a CD starts with a DATA track, the play command will do nothing. Just enter the number of the first AUDIO track in this case. I'll explain later how to do this. In 1999, the SCSI 2 standard was extended to include MultiMedia Commands (MMC). With this extended command set, you can do nice things. Like scan true a track, or if I'm not mistaken, bypass DATA tracks on Audio commands. Unfortunately, my CD-ROM player (32x Pioneer Slot-In) tells me it doesn't support MMC. This means a decent 'fast forward', without the sound being shut off isn't possible. Since I only have one working CD-ROM player, I can not test a routine to select between CD-ROM mechs. The last one found is used. If you have more then one and need the ability to select between them, please tell me. But I'm not promising ANYTHING. If everything went OK, the 'O' command now works as it should. If your CD ROM mechanism has a tray, pressing 'O' once will open the tray, pressing it again will pull it back in. Since mechanisms with caddy's or slot-in mechanisms can't pull a caddy or CD in by themselves, pressing 'O' when using these will always throw out the caddy or CD. If you push the 'close tray' button on the mechanism or press the tray in, the next 'O' will open the tray. Some commands you might find when listing the file are not supported yet, like Shuffle or Memory. Others don't work (yet) like I'ld like them too. There is a command to read the Media Catalog Number. With some CD's, on the first read, this command will freeze the software for about 12 seconds. If it doesn't you will see if a barcode is saved on the disk. Then there is a command to read track info. There is all kinds of nice info hidden inside the ISRC. Unfortunately, all of the CD's return zero's. And this command either freezes up the software for about 12 seconds or displays the wrong audio status. Either way, nobody seems to support ISRC. The MCN and ISRC commands have temperarily been disabled. For CD-Text, which seems to be used mainly by SONY, you need MMC support. As I can not test this, it is not supported. CD-Text can be compared to the text on SONY's mini-disks. CD-Text info is more usefull then ISRC info. But ISRC is part of the original SCSI 2 command set and CD_Text isn't. You can skip forward and backward true a track. Command execution takes too long to make this really usefull when you want to hear where you are in a track. And worse, sound is shut off during skipping. I think I'm gonna replace this command with a 'jump anywhere on the CD' command in one of the next versions. Pressing P will start a CD playing, if it starts with an audio track and isn't playing already. If a track is playing, it will be paused. Pressing it again, will resume playing at the position it was when the CD was paused. Pressing S will stop the CD. '>' will go to the next track. '<' will go to the previous track. (you will be notified if there are no next or previous track) 'O' will work as described above. Enter the number of a track to start playing at this track. If the CD has less then 10 tracks, a single number is enough (for instance 3 or 6). Otherwise you have to enter TWO digits (for instance 04 or 21). You are not allowed to enter a number greater than the number of tracks available. BTW a CD can have 99 tracks. Robert Verdaasdonk was so nice as to lend me a CD that has that many tracks. And guess what? At that moment, CDAP could handle 96 tracks, 97 was too much. Thanks to Robert I could fix this and a couple of other bugs. Since there is not enough room on screen to display data for 99 tracks, the data is split up as soon as there are more then 48 tracks. In this case you will be told how many tracks are available on the CD. Tracks 37 through 72 maximum are display on screen number 2, all tracks above that are on screen number 3. At the moment, pressing 'Q' will show a previous screen, 'W' will show the next. I have to find a more suitable key combination, but for now it will do. Since the scan option will probably be taken out, the 'left arrow'/'right arrow' combination would be an option. If a CD is playing (or paused) when CDAP is started, the first screen you will see is the one with the track currently playing (or being paused) on it. I'm still not sure if I should let the screen automatically change when the track being played changes to one from a different screen. What do you guys and girls think? I still have to work on the behavior of the dashes that show the current track. It works fine untill I change the screen. You can leave the audio player (by pressing 'ESC') and do whatever you want. If you return to the audio player at a later moment, the track, index and 'time passed' will be uptodate. All letters you enter have to be upper case. There is still a problem with the 'jump to next index' routine. There is no easy way to find out how many indexes are in a track (there may be only one, but the maximum is 99). Pressing "-" (previous index in track) will cause no problems. but pressing "=" (next index in track) will cause problems as soon as there are no more indexes in the current track. The CD-ROM will jump to the next track, first index (which is not an error according to the SCSI 2 standard) after which 'next track' skips a track while 'previous track' will start the current track again. Rerunning the software will cure this. This only happens when using "-" and "=", not during normal audio play. If you have a play/next track button on you CD-ROM mechanism: - The 'Next track' button will work, but it might jump back to track 1 the first time you press it. After that, no problem. - 'Play' doesn't seem to work when the software is loaded. If you press 'Play' before the software is loaded, CDAP doesn't recognize that it is playing. I hope to find out soon why this happens and how to solve it. I hope I covered all the commands. Writing software for the ASPI Manager isn't that hard once you get into it. Using SCSI commands isn't that hard either. People who know how to handle disk access via SIO should have no problems writing software to access DATA CD's. Since CD's are read only, we'ld only need a utility with halve the abilities BBXFER has for instance. Commands for DVD aren't that much different. If you find a way to decode DVD data via hardware, watching movies on DVD, controlled via the Atari wouldn't be to difficult. If you find errors in this text, the software or just wanna say: "hey", try to contact me. My Email address has changed to mathy.van_nisselroy@post.rwth-aachen.de. Please forget about my previous address. The latest version of this software will also be available via my website at http://www-users.rwth-aachen.de/mathy.van_nisselroy, where you can find all kinds of information about ASPI, MyDOS, the BlackBox and some neat hardware you might not have heard of as well as some textfiles with stuff you haven't read anywhere else. Plus a list of things (both hard- and software) I'ld like you guys and girls to develop. Thanks to Matthias Belitz for inventing the Atari version of ASPI (ATASPI???) and for his support while developing this software.