foft Posted March 27, 2022 Share Posted March 27, 2022 (edited) 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 March 27, 2022 by foft Quote Link to comment Share on other sites More sharing options...
mikro Posted March 28, 2022 Share Posted March 28, 2022 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). Quote Link to comment Share on other sites More sharing options...
foft Posted March 28, 2022 Author Share Posted March 28, 2022 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! Quote Link to comment Share on other sites More sharing options...
foft Posted March 28, 2022 Author Share Posted March 28, 2022 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! Quote Link to comment Share on other sites More sharing options...
mikro Posted March 28, 2022 Share Posted March 28, 2022 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 Quote Link to comment Share on other sites More sharing options...
foft Posted March 28, 2022 Author Share Posted March 28, 2022 Thanks. So it does indeed do word and byte reads of ff8006 in Hatari at least. I’ve created an account at Exxos thanks and will ask there. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.