SID Hardware Player for SDX ver.0.14(c) 2014-2020 by Mono/TristessePlays C64 .SID music files on Atari XL/XE machines using SlightSID, SIDari, Evie, Melody or POKEY-MAX sound card.Usage:SIDPLAYH [file[.SID] [song] [/QRX]  [/A [device] addr] [/F filter]  [/O device ...] [/T [mmm:]ss[.dd]]  [/V tv] [/G vol[,vol]]]Where:device - SLIGHTSID|EVIE|SIDARI|         MELODY|POKEYMAXfilter - NO|LINEAR|6581|8580song - song numbertv - PAL|NTSC/A set device address/F select filter/O force output device/Q quiet mode/R relax system damage restrictions/T playing time/V force frame synchronization/G stereo volume/X print extended module infoFile can be specified with wildcards or without extension. In that case program will try to add .SID extension by default and find first matching filename.Requirements:- Atari XL/XE compatible,- SlightSID, SIDari or Melody cartridge or Evie or POKEY-MAX hardware extension,- Sparta DOS X 4.47 or higher.Each device is detecting at specified address:- $D2C0 for Evie,- $D240 for POKEY-MAX,- $D560 for SIDari,- $D500 for SlightSID,- $D5xx for Melody (chip registers location is reconfigured to avoid conflicts with other devices)by default. /A switch allow to set base address in both dec (54528) or hex ($D500) manner for all or for choosed one. For example:/A $D500set address for all devices. But:/A SIDARI $D500 /A EVIE $D2C0set only SIDari and Evie adresses./O switch enable to choose output device priorities. By default they are:1. Melody (highest),2. SlightSID,3. SIDari,4. POKEY-MAX,5. Evie (lowest).Devices with real SID chips are preferred. Of course it's possible to change this order by enumerating devices in highest to lowest order for example by:/O EVIE SIDARI SLIGHTSIDThen Evie will get prior to other, then SIDari and SlightSID at last. When specify less number of devices for example:/O EVIEthen another devices than Evie won't be selected for play.Stereo channels volume can be changed by /G switch. Default value is 100 (percent). This option is supported only by Melody card.Evie provides selection a kind of filter implementation. /F switch one of:- NO - no filter,- LINEAR - SID specification compatible filter,- 6581 - real 6581 filter,- 8580 - real 8580 filter.Quiet mode enabled by /Q switch disables printing of songs author information./X switch shows some details information about:- type,- addresses,- requirements.Playing procedure is synchronized respecively to requirement specified in .SID file (CIA timer setting or TV frame). When CIA synchronization isn't required player is synchronized to frame of detected TV system:- PAL (312 scanlines),- NTSC (262 scanlines).It is possible to change it with /V switch. This switches clock of SlightSID too..SID module is loaded into base RAM and OS high RAM (if it is possible and Sparta DOS X is not using it). If module not complains to accessible RAM amount then accuracy message will be shown. Usually problematic case is:USE OSRAMDEVICE SPARTA OSRAMfragment in CONFIG.SYS file.In this case it's very recommended to reconfigure SDX memory usage to free as much OS RAM as is possible (look at Sparta DOS X users manual).Program analyze content of .SID file and instrumenting code for:- SID registers access,- CIA timers settings,- VIC raster IRQ settings,- hardware interrupt vectors accessbut it is possible to some SIDs will not be able to run correctly (or at all). Especially packed modules or these ones using strange I/O addressing techniques or playing music on its own.Fine cycled code can run a bit faster because Atari is clocked about 1.78 MHz but C64 is about 1 MHz.Modules require external Compute's sidplayer aren't supported for now.System dependent memory areas are stored before running of SID playing code and restore there after.Free memory areas are looking at OS high RAM and base RAM due to:- SDX configuration (USE and DEVICE SPARTA commands of CONFIG.SYS),- informations provided by .SID module filebut if you have any free extended RAM onboard (not occupied by RAMDISK or another SDX extension) it will be preferred because is much more safe.You can check system memory informations with MEM command but I recommend to look at SDX users manual for more informations on configuring Sparta DOS X. It has been reached at Sparta DOS X website http://spartadosx.com.Playing is usually break by pressing of any key and return to operating system, but sometimes it fails because .SID module can use all of accessible memory (and even more, because C64 has full 64KB RAM but Atari XL/XE only 62KB on board).If it's no chance to exit correctly then player warns against it with"System damage risk!"message and don't load module./R switch allow to relax system damage restrictions and run that music. After all player exits into SELF TEST program.If .SID file contains information about dirty usage of memory by player code then program warns with"Dirty RAM usage!"message but continues loading and running.I'm sorry if player hangs up of your machine, but I can't precognize what.SID code will do.If you have any favorite .SID module what don't plays with player please send it to me.CAUTION!Using illegal opcodes is C64 scene common practice so it's strongly recommended to run player with original 6502C (Sally) CPU.Song is playing until end of time or any key pressing. Maximum time of playing can be set with /T switch:- /T 30 plays on 30 seconds,- /T 50.10 plays on 50.10 seconds,- /T 1:00 plays on 1 minute,- /T 1:20.30 plays on 1 minute and 20.30 seconds.Any set of commandline parameters can be set in SIDPLAYH environment variable. For example if:- relaxing of system memory damage checking and- SIDari output device at $D500are required all time, you can setSET SIDPLAYH=/A $D500 /O SIDARI /Rin your CONFIG.SYS or AUTOEXEC.BAT or by hand. After this each running of player will process these settings before commandline parameters.Then running player with:SIDPLAYH /V PAL AXE 3will run asSIDPLAYH /A $D500 /O SIDARI /R /V PAL AXE 3command.CAUTION! Keep in mind restrictions of CONFIG.SYS and AUTOEXEC.BAT line length (see at SDX manual on SET command and ENV.SYS extension).Program report some messages to user in exceptional cases. Following list enumerate all what happened:"Bad parameter"Inexistent switch or parameter lack with program call. It is shown if invalid song number or bad time was specified too."Compute's sidplayer not supported!".SID module requires external playing procedure."Too short file!".SID file is probably damaged."<file> isn't SID file!"Specified file not looks as regular .SID module (hasn't valid header)."Not enough memory!".SID module not complains to available RAM. Check memory usage with MEM command and reconfigure SDX memory usage if it is possible."I/O overlapped by module!".SID module require to load on Atari I/O hardware registers area (this area isn't switchable to RAM as in C64 so data located there won't be accessible and probably will hang-up of machine)."System damage risk!".SID module area will override part of SDX area. If you really want to play that module use /R switch.Calling program without parameters displays short usage info screen.Big respect and thanks to:- Seban/Slight for SlightSID,- Pasiu/SSG for Evie,- T0ri for SIDari,- Candle/Sin for Melody,- Retronics company for POKEY-MAXhardware and great cooperation.A lot number of .SID modules have been reached at High Voltage SID Collection website http://hvsc.c64.org.Please send bugs & feature requests to Jerzy Kut <mono@protolabo.pl>.