Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Composing > Proposal for 2SID hardware-compatibility
2013-07-25 10:33
Hermit

Registered: May 2008
Posts: 208
Proposal for 2SID hardware-compatibility

I'm fiddling with 2SID hardware solution right now, and got an idea for a most suitable address for the 2nd SID, which could be compatible with almost all hardware solutions (except $de00, $df00, but they're not good selection anyway due to conflicting with AR,TFR, etc. cartridges.)
In VICE it's easy to set 2nd SID base-address, but it's not the case with real C64.
There's a multiplexer circuitry, which uses one of the address lines between A5..A9 ($20..$200) beside the original $d400..$d7ff chip-select signal. The address-line is hardwired in most of the cases, and not easily selectable/switchable in the real machines.
(Btw. I could solve it by hardware to see 2nd SID both in $d420 and $d500 locations, by "OR"-ing A5 and A8 lines...)

I think using/preferring only base-address $D7E0 for 2nd SID in 2SID programs & music releases would ensure that any of the A5..A9 address lines could select the 2nd SID in the machines, similarly to an "OR" function...
(the address came from this simple calculation: $d400+$20+$40+$80+$100+$200 = $D7E0)

It's easier by software than by hardware.
And VICE's 2nd SID address can be set to $D7E0. If VICE emulates the hardware multiplexor, the $d420, $d500, etc. settings could be fine too in VICE, just as on real C64, all would call 2nd SID at $d7E0
I guess it's not hard to configure in SID-players too...

Just, because 2SIDs seem to get more popular and real machine is always better to compose & listen with :)

Maybe the issue, it's not forward-compatible with 3SID, 4SID, etc solutions.


A further improvement to this 'specification' could be to distinguish mono (6 channels) vs stereo (2x3 channels) SID tunes by the A6 or A7 ($40 or $80) address lines, which seem rarely used for 2nd SID selection...
So in that case SID addresses could follow like this:
$d400..$d41f: 1st SID
$d7a0..$d7bf: 2nd SID, A6 ($40) low - line says "mono"
$d7e0..$d7ff: 2nd SID, A6 ($40) high - line says "stereo"

It was just a idea, i couldn't find this in the forum after some search, maybe it was mentioned before, maybe not...
 
... 22 posts hidden. Click here to view all posts....
 
2013-07-29 07:08
tlr

Registered: Sep 2003
Posts: 1702
Quote: Quoting tlr
I did a few changes to the binary as the edits indicate, when did you download it? (the changes were within a few minutes)


I downloaded it after both of the edits. If there's something funny with the hardware, maybe Tomi Malinen knows what's going on.


Nah, I'd rather analyze my program in detail first. It's more likely I made a bug than anything. We shouldn't trust emulators on things like this.

Having a schematic of the sid board would help though.

What I do (twice) for each test is set up a sawtooth like this:
$7f -> $xx12
$20 -> $xx0e
$20 -> $xx0f
$20 -> $xx12
then sample 3 values from $xx1b and verify that they are in the correct sequence.
After the two tests I do:
$00 -> $xx12.

In the test map you posted it detects every other sid which may indicate that running a new test after a working one always fails.

Any sid hacking guru that sees anything fatal here?
2013-07-30 16:00
Zer0-X

Registered: Aug 2008
Posts: 78
Tested on my 6581 ($d400)/8580 (selectable) setup.

Chips at $d400, $d420, $d440, $d480, $d500 & $d600 were indentified correctly.

If I set both chips to $d400 it only detects the 6581, but that's because I've added logic to forbid reads from the 8580 if they're both at the same address.
2013-07-30 16:12
tlr

Registered: Sep 2003
Posts: 1702
Cool! Could you post the sid map for some typical configuration so I can compare to the one Trurl posted?
2013-07-30 21:22
Zer0-X

Registered: Aug 2008
Posts: 78
Not very surprising...

D400 11 11 11 11 11 11 11 11
D500 11 11 11 11 11 11 11 11
D600 11 11 11 11 11 11 11 11
D700 11 11 11 11 11 11 11 11

D400 11 20 11 20 11 20 11 20
D500 11 20 11 20 11 20 11 20
D600 11 20 11 20 11 20 11 20
D700 11 20 11 20 11 20 11 20

D400 11 11 20 20 11 11 20 20
D500 11 11 20 20 11 11 20 20
D600 11 11 20 20 11 11 20 20
D700 11 11 20 20 11 11 20 20

D400 11 11 11 11 20 20 20 20
D500 11 11 11 11 20 20 20 20
D600 11 11 11 11 20 20 20 20
D700 11 11 11 11 20 20 20 20

D400 11 11 11 11 11 11 11 11
D500 20 20 20 20 20 20 20 20
D600 11 11 11 11 11 11 11 11
D700 20 20 20 20 20 20 20 20

D400 11 11 11 11 11 11 11 11
D500 11 11 11 11 11 11 11 11
D600 20 20 20 20 20 20 20 20
D700 20 20 20 20 20 20 20 20
2013-07-31 08:03
tlr

Registered: Sep 2003
Posts: 1702
Thanks. Indeed expected. Looks like my little program is working after all.

I wonder what's up with Trurls config? Maybe it's just that read back is only allowed for A0=0 (SID1) and A0=1 (SID2)?
2013-07-31 19:33
Zer0-X

Registered: Aug 2008
Posts: 78
I ordered couple of those DualSID boards that Trurl has. Will see what's up with them.
2013-08-13 18:56
Zer0-X

Registered: Aug 2008
Posts: 78
2x8580 DualSID-card:

@$D400
D400 10 10 10 10 10 10 10 10
D500 10 10 10 10 10 10 10 10
D600 10 10 10 10 10 10 10 10
D700 10 10 10 10 10 10 10 10
DE00 -- -- -- -- -- -- -- --
DF00 -- -- -- -- -- -- -- --

@$D420
D400 10 20 10 20 10 20 10 20
D500 10 20 10 20 10 20 10 20
D600 10 20 10 20 10 20 10 20
D700 10 20 10 20 10 20 10 20
DE00 -- -- -- -- -- -- -- --
DF00 -- -- -- -- -- -- -- --

@$D500
D400 10 -- 10 -- 10 -- 10 --
D500 20 20 20 20 20 20 20 20
D600 10 -- 10 -- 10 -- 10 --
D700 20 20 20 20 20 20 20 20
DE00 -- -- -- -- -- -- -- --
DF00 -- -- -- -- -- -- -- --

@$DE00
D400 10 -- 10 -- 10 -- 10 --
D500 10 -- 10 -- 10 -- 10 --
D600 10 -- 10 -- 10 -- 10 --
D700 10 -- 10 -- 10 -- 10 --
DE00 20 20 20 20 20 20 20 20
DF00 -- -- -- -- -- -- -- --

@$DF00
D400 10 -- 10 -- 10 -- 10 --
D500 10 -- 10 -- 10 -- 10 --
D600 10 -- 10 -- 10 -- 10 --
D700 10 -- 10 -- 10 -- 10 --
DE00 -- -- -- -- -- -- -- --
DF00 20 20 20 20 20 20 20 20

While I had some trouble with the card initially (not hooking up the extra address-lines expecting both SIDs to still work at $D400) and looked how the address decoding was wired I noticed that under several settings the logic keeps SID1 disconnected when accessing it via certain addresses.
2013-08-15 19:13
tlr

Registered: Sep 2003
Posts: 1702
A bit odd (and different than trurls) but detection seems to be working I guess.
2013-08-16 07:57
chatGPZ

Registered: Dec 2001
Posts: 11089
and it shows that if your software uses the mirrors - its your fault =)
2013-08-16 08:37
tlr

Registered: Sep 2003
Posts: 1702
Anything can happen when you add third party hardware modifications but sure if you want maximum compatibility, don't use mirrors.
Previous - 1 | 2 | 3 | 4 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
redcrab/G★P
TLF/Sonic Uproar
t0m3000/ibex-crew
qbhead
Mibri/ATL^MSL^PRX
Guests online: 189
Top Demos
1 Next Level  (9.8)
2 Mojo  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 Comaland 100%  (9.6)
6 No Bounds  (9.6)
7 Uncensored  (9.6)
8 Wonderland XIV  (9.6)
9 The Ghost  (9.6)
10 Bromance  (9.6)
Top onefile Demos
1 It's More Fun to Com..  (9.9)
2 Party Elk 2  (9.7)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.5)
5 Rainbow Connection  (9.5)
6 TRSAC, Gabber & Pebe..  (9.5)
7 Onscreen 5k  (9.5)
8 Dawnfall V1.1  (9.5)
9 Quadrants  (9.5)
10 Daah, Those Acid Pil..  (9.5)
Top Groups
1 Oxyron  (9.3)
2 Nostalgia  (9.3)
3 Booze Design  (9.3)
4 Censor Design  (9.3)
5 Crest  (9.3)
Top Coders
1 Axis  (9.8)
2 Graham  (9.8)
3 Lft  (9.8)
4 Crossbow  (9.8)
5 HCL  (9.8)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.066 sec.