Jump to content
IGNORED

Falcon Combel MCU registers


Recommended Posts

I'm trying to find out how the Falcon MCU works in Combel.

 

I see that there is a chip-select at 0xff8006 to read the half-moon solder pointers and the ram size bits. I don't know the changes made to 0xff8001 to support more than 4MB.

 

I see in the ST its:

##############ST MMU Controller                                    ###########
-------+-----+-----------------------------------------------------+----------
$FF8001|byte |MMU memory configuration                  BIT 3 2 1 0|R/W
       |     |Bank 0                                        | | | ||
       |     |00 - 128k ------------------------------------+-+ | ||
       |     |01 - 512k ------------------------------------+-+ | ||
       |     |10 - 2m --------------------------------------+-+ | ||
       |     |11 - reserved --------------------------------+-' | ||
       |     |Bank 1                                            | ||
       |     |00 - 128k ----------------------------------------+-+|
       |     |01 - 512k ----------------------------------------+-+|
       |     |10 - 2m ------------------------------------------+-+|
       |     |11 - reserved ------------------------------------+-'|

 

Is it the same in the Falcon except the reserved bits are used for 8MB?

 

or is like like this? See https://www.atari-forum.com/viewtopic.php?p=322398#p322398

 

I know this isn't the 'final falcon', but are the registers here how it turned out?

https://mikrosk.github.io/sparrow/falcon_specification_19911203.pdf

https://mikrosk.github.io/sparrow/falcon_specification_19920826.html

   ---+++*** Memory Managment Unit ***+++---
$FFFF8003 [R/W]   B  axxx xxxx Refresh Time Constant high byte (video memory)
                                a - Refresh interval control
                                0=default
                                1=counter
$FFFF8005 [R/W]   B  xxxx xxxx Refresh Time Constant low byte

$FFFF8009 [R/W]   B  ssss bbBB Video Memory Configuration Register
                                 ssss - SIMM speed select
                                 bb   - Bank 1 size select
                                 BB   - Bank 2 size select

$FFFF800B [R/W]   B  ssss bbBB Fast Memory Configuration Register
                                 ssss - SIMM speed select
                                 bb   - Bank 1 size select
                                 BB   - Bank 2 size select

$FFFF800D [R/W]   B  axxx xxxx Refresh Time Constant high byte (fast memory)
                                 a - Refresh interval control
                                 0=default
                                 1=counter

$FFFF800F [R/W]   B  xxxx xxxx Refresh Time Constant low byte 

 

 

Edited by foft
Link to comment
Share on other sites

What exactly are you looking for?

 

That "Falcon" isn't a Falcon at all, it's a prototype based on the TT. It has nearly nothing to do with the Sparrow/Falcon030. In the beginning it wasn't supposed to have even a DSP.

 

Falcon030, as you perhaps know, doesn't use SIMMs. So any of that register values do not have any use here. Combel reads the jumper settings from the RAM card and setup internally according to that. No need to configure anything further.

 

0xff8001 is not used on Falcon030. 0xff8006 is (its word has various configuration properties accessible but the size of RAM is taken from hardware, same as monitory type).

Link to comment
Share on other sites

Thanks, so it’s more like the Sparrow.

 

I see that has a register 0xff8001, that does nothing.

 

So combel directly gets the values from 0xff8006? Does it read it itself at early startup? If I read 0xff8006 with the cpu I don’t see the 8006 chip select line go low. Not sure if that means my combel is broken - or it’s just like that!

Link to comment
Share on other sites

So, what exactly am I looking for:

i) I bought a broken falcon. It turned out to have a ct1 evolution 3b.

ii) There was no clock going to the system from the evolution. I replaced a gal on here to fix that.

iii) The cpu never startedany bus cycles after reset - cpu removed.

iv) Custom fpga bus master on expansion port to test system before replacing the cpu.

v) No dtack seen. Tracked to another broken gal and replaced that.

vi) I can read the tos rom now

vii) I can’t write/read ram. XRW low never causes WE low!

viii) Thought it might be bad ram config that causes that. So was trying to read from the config register and write to the combel to tell it who states etc. This process is not documented anywhere I think.

ix) Tried to read ff8006 - 8006 cs never asserted so get ff back.

 

So I’m wondering if combel is broken but want to know how this works on working hardware before trying to replace the 208 pin beast!

Link to comment
Share on other sites

I'm not a hardware expert but as mentioned on Facebook, feel free to ask on https://www.exxoshost.co.uk/forum/, there's quite a few skilled hardware people.

 

But I'm sure you don't need to configure anything when it comes to RAM size. The RAM card takes care of that.

 

Btw you can use Hatari for tracing what TOS does and what values it expects. For example, 14 MB Falcon:

 

IO read.w $ffff8006 = $a661 pc=e00034
IO read.w $ffff8006 = $a661 pc=e0003a
IO write.w $ffff8940 = $0007 pc=e0003e
IO write.w $ffff828c = $0020 pc=e00082
IO write.w $ffff8282 = $0010 pc=e00088
IO read.b $ffff8007 = $61 pc=e0008e
IO write.b $ffff8007 = $65 pc=e0008e
IO read.b $ffff8007 = $65 pc=e00094
IO write.b $ffff8001 = $0f pc=e000a6
IO write.b $ffff8800 = $07 pc=e000cc
IO write.b $ffff8802 = $c0 pc=e000d0
IO write.b $ffff8800 = $0e pc=e000d6
IO write.b $ffff8802 = $07 pc=e000da
IO write.w $ffff8240 = $0fff pc=e000ea
IO write.w $ffff8242 = $0f00 pc=e000ea
IO write.w $ffff8244 = $00f0 pc=e000ea
IO write.w $ffff8246 = $0ff0 pc=e000ea
IO write.w $ffff8248 = $000f pc=e000ea
IO write.w $ffff824a = $0f0f pc=e000ea
IO write.w $ffff824c = $00ff pc=e000ea
IO write.w $ffff824e = $0555 pc=e000ea
IO write.w $ffff8250 = $0333 pc=e000ea
IO write.w $ffff8252 = $0f33 pc=e000ea
IO write.w $ffff8254 = $03f3 pc=e000ea
IO write.w $ffff8256 = $0ff3 pc=e000ea
IO write.w $ffff8258 = $033f pc=e000ea
IO write.w $ffff825a = $0f3f pc=e000ea
IO write.w $ffff825c = $03ff pc=e000ea
IO write.w $ffff825e = $0000 pc=e000ea
IO write.b $ffff8266 = $00 pc=e000f0
IO write.l $ffff9800 = $ffff00ff pc=e000fc
IO write.l $ffff9804 = $ff000000 pc=e000fc
IO write.l $ffff9808 = $00ff0000 pc=e000fc
IO write.l $ffff980c = $ffff0000 pc=e000fc
IO write.l $ffff9810 = $000000ff pc=e000fc
IO write.l $ffff9814 = $ff0000ff pc=e000fc
IO write.l $ffff9818 = $00ff00ff pc=e000fc
IO write.l $ffff981c = $aaaa00aa pc=e000fc
IO write.l $ffff9820 = $55550055 pc=e000fc
IO write.l $ffff9824 = $ff550055 pc=e000fc
IO write.l $ffff9828 = $55ff0055 pc=e000fc
IO write.l $ffff982c = $ffff0055 pc=e000fc
IO write.l $ffff9830 = $555500ff pc=e000fc
IO write.l $ffff9834 = $ff5500ff pc=e000fc
IO write.l $ffff9838 = $55ff00ff pc=e000fc
IO write.l $ffff983c = $00000000 pc=e000fc
IO write.b $ffff8260 = $00 pc=e00102
IO write.b $ffff8201 = $01 pc=e00108
IO write.b $ffff8203 = $00 pc=e0010e
IO read.b $ffff8007 = $65 pc=e00112
IO write.b $ffff8007 = $65 pc=e00112

IO read.b $ffff8006 = $a6 pc=e00288

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...