juice2839 Posted October 23, 2015 Share Posted October 23, 2015 (edited) I have been looking around for a decent memory map of the CV and didn't see one. I looked at the hardware and came up with the one below. I added in the SGM bank switching too. All the info I have found says the VDS is at 40h - 7Fh, but I didn't get that after looking at the hardware. Are there any programmers out there that can take a look at this and tell me if this would be a pretty good setup for a coleco's memory layout and ports? Also does anyone have any idea were the AY-8910 gets addressed with the SGM? This memory map does not take into account most of the mirroring that happens in the I/O ports. I used the literal addresses that I figured out from the hardware (If they are completely correct). Thanks for any input. Also is BEh and BFh where the Adam maps the VDP? Super ColecoVision Memory Map 8K 0000h Colecovision Bios or Port 7Fh Bit 1 = 0 Ram 1FFFh Bank Switched 8K Ram Port 7Fh Bit 1 = 1 Rom 24K 2000h 8K above mirrored or Port 53h bit 1=0 mirrored ram 7FFFh Bank switched 24K Ram Port 53h bit 1=1 24k ram enabled 32K 8000h Cartridge Rom FFFFh Input/Output Ports 00h Reserved 7Fh Write 80h Controller_2_Enable Read/Write A0h Video Display Processor (VDP) DataPort Read/Write A1h Video Display Processor (VDP) RegisterPort Write C0h Controller_1_Enable Read E0h Controller_Read Write E0h Audio_Write ADAM COMPUTER? Read/Write BEh Video Display Processor (VDP) DataPort Read/Write BFh Video Display Processor (VDP) RegisterPort Write FFh Sound IC I have never programmed for the Coleco or the Adam. What am I missing? How do cartridges get around the different address decoding for the CV and Adam or am I missing something. Or do the coleco cartridges work because of how the addresses are mirrored with the address decoding? Edited October 23, 2015 by juice2839 Quote Link to comment Share on other sites More sharing options...
juice2839 Posted October 24, 2015 Author Share Posted October 24, 2015 (edited) Okay Revamped... This should be correct aside from not having the AY-8910 addresses...... Super ColecoVision Memory Map 8K 0000h Colecovision Bios or Port 7Fh Bit 1 = 0 Ram 1FFFh Bank Switched 8K Ram Port 7Fh Bit 1 = 1 Rom 24K 2000h-5FFFFh Expansion or Bank switched 24k Ram Port 53h bit 1=1 24k ram enabled 6000h -7FFFh 1k Ram mirrored or part of 24K Ram Port 53h bit 1=0 mirrored ram 32K 8000h Cartridge Rom FFFFh The I/O addresses again, but shown before mirroring...??? Input/Output Ports 00h Reserved The Super Game Module AY-3-8912 is mapped in ports 50H (address), 51H (data) and 52H (read data) " THANKS NACHOCHESS 7Fh Write 9Fh Controller_2_Enable Read/Write BEh Video Display Processor (VDP) DataPort Read/Write BFh Video Display Processor (VDP) RegisterPort Write DFh Controller_1_Enable Read FFh Controller_Read Write FFh Audio_Write Anyone confirm? Or know what the ay-8910 I/O is? Thanks Edited October 24, 2015 by juice2839 Quote Link to comment Share on other sites More sharing options...
+nanochess Posted October 24, 2015 Share Posted October 24, 2015 VDP ports are mirrored from A0h to BFh both in Colecovision and ADAM. But typically every game out there uses only ports BEh and BFh The Super Game Module AY-3-8912 is mapped in ports 50H (address), 51H (data) and 52H (read data) The Coleco ADAM runs the Colecovision games simply turning off its internal memory mapping and switching to a Colecovision memory mapping. If you write your ROM cartridge with the right layout it will work fine both with Colecovision and ADAM, you don't need to worry about ADAM details. Quote Link to comment Share on other sites More sharing options...
juice2839 Posted October 24, 2015 Author Share Posted October 24, 2015 (edited) VDP ports are mirrored from A0h to BFh both in Colecovision and ADAM. But typically every game out there uses only ports BEh and BFh The Super Game Module AY-3-8912 is mapped in ports 50H (address), 51H (data) and 52H (read data) The Coleco ADAM runs the Colecovision games simply turning off its internal memory mapping and switching to a Colecovision memory mapping. If you write your ROM cartridge with the right layout it will work fine both with Colecovision and ADAM, you don't need to worry about ADAM details. Thanks Nanochess, This is exactly what I wanted to know. It looks like if I were to make some hardware I would need to keep the mirroring just in case some software used a mirrored address. So does the software do a write to port 7Fh just to make sure if it's plugged in an Adam that it puts it into CV memory mode? Sorry if these seem like simple questions. I have never programmed for these platforms and want to be sure exactly how the hardware operates. Also do you know if I were to have the 24K ram enabled all the time in a colecovision if it would still run all the software correctly? I realize that some of the new software will think it is an Adam. What I am trying to accomplish is putting some of the address decoding into programmable logic. I want to make sure it is software compatible. Edited October 25, 2015 by juice2839 Quote Link to comment Share on other sites More sharing options...
+nanochess Posted October 24, 2015 Share Posted October 24, 2015 None of the original software for Colecovision writes to port 7FH except a prototype of Super Donkey Kong (and that makes it to fail in ADAM) The 24K of RAM enabled all time shouldn't have any side effect, except in Super Cobra, that access two zones of memory and expects it to be same memory, I've wrote a patch a long time ago for this http://atariage.com/forums/topic/208451-super-cobra-patch-for-adam/ I don't have idea if any Super Game Module game access the extra 8K of RAM that can be enabled over BIOS area, but as typically these games are ADAM compatible, there should be no problem with the 24K of RAM available always. Quote Link to comment Share on other sites More sharing options...
juice2839 Posted October 24, 2015 Author Share Posted October 24, 2015 (edited) None of the original software for Colecovision writes to port 7FH except a prototype of Super Donkey Kong (and that makes it to fail in ADAM) The 24K of RAM enabled all time shouldn't have any side effect, except in Super Cobra, that access two zones of memory and expects it to be same memory, I've wrote a patch a long time ago for this http://atariage.com/forums/topic/208451-super-cobra-patch-for-adam/ I don't have idea if any Super Game Module game access the extra 8K of RAM that can be enabled over BIOS area, but as typically these games are ADAM compatible, there should be no problem with the 24K of RAM available always. YOU ROCK NANOCHESS!!! Thank you for saving me hours with your knowledge. While I luckily have your attention can I ask a just a couple more questions? Do you think the extra hardware on the CV board for the analog input (controllers) is really needed? Would it only effect a couple games? or is it popular enough to keep that circuit. Do you see any reason to keep the front expansion connector if a CV already had 24K ram and a AY8910 mapped in? If you could expand on the CV hardware a little (aside from the 24k ram and ay8910) what would you add? One last question.. As far as I can tell the Ay-8912 is identical to the ay-8910. Does anyone actually use the 8910 for the added port? Edited October 25, 2015 by juice2839 Quote Link to comment Share on other sites More sharing options...
Pixelboy Posted October 24, 2015 Share Posted October 24, 2015 Do you think the extra hardware on the CV board for the analog input (controllers) is really needed? Would it only effect a couple games? or is it popular enough to keep that circuit. By analog input, do you mean the input sent from such devices as the Roller Controller and the steering wheel module? I wouldn't remove that, if I were you... Do you see any reason to keep the front expansion connector if a CV already had 24K ram and a AY8910 mapped in? There's a surprising number of people out there who are attached to their Expansion Module #1 (a.k.a. the Atari 2600 adaptor) and their Expansion Module #3 (the ADAM). If you could expand on the CV hardware a little (aside from the 24k ram and ay8910) what would you add? A port for a PS2 keyboard. During the design phase of the Super Game Module, there were plans to add a parallel port which was attached to one or more auxiliary port numbers on the MSX sound chip inside the SGM. The parallel port idea was dropped in the final revision of the SGM, but it could have been used to support a PS2 keyboard. EDIT: If you're planning to develop a ColecoVision motherboard that integrates the components of the SGM, keep in mind that the SGM offers the possibility of remapping the BIOS address range with regular RAM, which means you get 32K of RAM instead of just 24K. Quote Link to comment Share on other sites More sharing options...
juice2839 Posted October 24, 2015 Author Share Posted October 24, 2015 By analog input, do you mean the input sent from such devices as the Roller Controller and the steering wheel module? I wouldn't remove that, if I were you... There's a surprising number of people out there who are attached to their Expansion Module #1 (a.k.a. the Atari 2600 adaptor) and their Expansion Module #3 (the ADAM). A port for a PS2 keyboard. During the design phase of the Super Game Module, there were plans to add a parallel port which was attached to one or more auxiliary port numbers on the MSX sound chip inside the SGM. The parallel port idea was dropped in the final revision of the SGM, but it could have been used to support a PS2 keyboard. EDIT: If you're planning to develop a ColecoVision motherboard that integrates the components of the SGM, keep in mind that the SGM offers the possibility of remapping the BIOS address range with regular RAM, which means you get 32K of RAM instead of just 24K. Thanks for your input. It's greatly appreciated. The ps2-keyboard is a great and interesting idea. It's probably not super hard to make some simple hardware to interface it, but the CV cpu (z-80) would be taxed with getting the input from a software routine. A more complex circuit could be built that had a key press buffer and took care of more handshaking. This would take pressure off from the z-80. I'll plan to keep the roller controller circuit intact. Adding the front expansion connector would cause a lot of extra space on a pcb. I am not convinced the atari adpater is worth it. Besides with the RGB mod for the Atari itself I would think this would be less popular. I can see the Adam expansion, but this project is more a CV project then a Adam project. So I am undecided if the expansion connector is worth the effort (I'd like a pcb as small as possible so as to make a handheld CV too). Maybe a connector with a much smaller footprint that could be brought out with an adapter? Quote Link to comment Share on other sites More sharing options...
Pixelboy Posted October 24, 2015 Share Posted October 24, 2015 Adding the front expansion connector would cause a lot of extra space on a pcb. I am not convinced the atari adpater is worth it. Besides with the RGB mod for the Atari itself I would think this would be less popular. I can see the Adam expansion, but this project is more a CV project then a Adam project. So I am undecided if the expansion connector is worth the effort (I'd like a pcb as small as possible so as to make a handheld CV too). Maybe a connector with a much smaller footprint that could be brought out with an adapter? If you're considering adding a connector with a smaller footprint, why not simply add a couple of USB ports, which would override the regular DB9 joystick ports? Then people would be able to use modern USB controllers with the ColecoVision. The only problem with that idea is that you'd need a way to configure button mappings between USB fire buttons and CV fire button and keypad keys in a persistent way. There are so many different types of USB controllers out there, some with analog sticks... Quote Link to comment Share on other sites More sharing options...
juice2839 Posted October 24, 2015 Author Share Posted October 24, 2015 If you're considering adding a connector with a smaller footprint, why not simply add a couple of USB ports, which would override the regular DB9 joystick ports? Then people would be able to use modern USB controllers with the ColecoVision. The only problem with that idea is that you'd need a way to configure button mappings between USB fire buttons and CV fire button and keypad keys in a persistent way. There are so many different types of USB controllers out there, some with analog sticks... No, I was talking about making the expansion connector on the front of the pcb a smaller footprint type connector. It would be difficult to implement USB controllers and keep everything legacy. Quote Link to comment Share on other sites More sharing options...
+nanochess Posted October 24, 2015 Share Posted October 24, 2015 On my thoughts the Expansion Connector isn't really needed if you implement the Super Game Module support. I would prefer to lose it if it's the price is to get a HDMI output I don't think the signal from an Expansion Module #1 (Atari) would be compliant enough for HDMI, so I would discard it. Also I would suggest you to not think in PS/2 or USB until you have the board working. Quote Link to comment Share on other sites More sharing options...
juice2839 Posted October 24, 2015 Author Share Posted October 24, 2015 On my thoughts the Expansion Connector isn't really needed if you implement the Super Game Module support. I would prefer to lose it if it's the price is to get a HDMI output I don't think the signal from an Expansion Module #1 (Atari) would be compliant enough for HDMI, so I would discard it. Also I would suggest you to not think in PS/2 or USB until you have the board working. Thanks for the input nacho. I think it should have a small expansion connector with just access to the I/O map and that's it. So other things could possibly be added later. Quote Link to comment Share on other sites More sharing options...
Pixelboy Posted October 24, 2015 Share Posted October 24, 2015 Thanks for the input nacho. I think it should have a small expansion connector with just access to the I/O map and that's it. So other things could possibly be added later. Nacho!! Nacho, Nacho Maaaan! I want to be... a Nacho Man! Quote Link to comment Share on other sites More sharing options...
juice2839 Posted October 24, 2015 Author Share Posted October 24, 2015 Nacho!! Nacho, Nacho Maaaan! I want to be... a Nacho Man! That sounds like a cool premise for a game ----- "The Adventures of Nacho Man" ----- Have it play some 8 bit YMCA music.... Or make it a SGM game with 3 voice music. Quote Link to comment Share on other sites More sharing options...
+nanochess Posted October 24, 2015 Share Posted October 24, 2015 Thanks for the input nacho. I think it should have a small expansion connector with just access to the I/O map and that's it. So other things could possibly be added later. nanochess in Atariage 1 Quote Link to comment Share on other sites More sharing options...
Xenophon Posted October 26, 2015 Share Posted October 26, 2015 Thanks Nanochess, This is exactly what I wanted to know. It looks like if I were to make some hardware I would need to keep the mirroring just in case some software used a mirrored address. So does the software do a write to port 7Fh just to make sure if it's plugged in an Adam that it puts it into CV memory mode? Sorry if these seem like simple questions. I have never programmed for these platforms and want to be sure exactly how the hardware operates. Also do you know if I were to have the 24K ram enabled all the time in a colecovision if it would still run all the software correctly? I realize that some of the new software will think it is an Adam. What I am trying to accomplish is putting some of the address decoding into programmable logic. I want to make sure it is software compatible. What type of hardware are you thinking of building ? Quote Link to comment Share on other sites More sharing options...
bad robot Posted October 27, 2015 Share Posted October 27, 2015 Is there not a Technical Manual or Service manual for the ColecoVision with all this tech stuff in ?? Quote Link to comment Share on other sites More sharing options...
juice2839 Posted October 27, 2015 Author Share Posted October 27, 2015 Is there not a Technical Manual or Service manual for the ColecoVision with all this tech stuff in ?? If you find it please let us know. Quote Link to comment Share on other sites More sharing options...
NIAD Posted October 28, 2015 Share Posted October 28, 2015 Is there not a Technical Manual or Service manual for the ColecoVision with all this tech stuff in ?? If you find it please let us know. There is, but I don't know for sure if everything Juice is looking for is detailed in it: http://ann.hollowdreams.com/ The ADAM manuals are available on this site as well. Quote Link to comment Share on other sites More sharing options...
adamcon Posted November 1, 2015 Share Posted November 1, 2015 There is, but I don't know for sure if everything Juice is looking for is detailed in it: http://ann.hollowdreams.com/ The ADAM manuals are available on this site as well. Specifically http://ann.hollowdreams.com/colfacts.htmlwhich is SmartKey II below the platen of the SmartWriter typewriter Quote Link to comment Share on other sites More sharing options...
NIAD Posted November 2, 2015 Share Posted November 2, 2015 Specifically http://ann.hollowdreams.com/colfacts.htmlwhich is SmartKey II below the platen of the SmartWriter typewriterCome on Bob... make'em work a little!!!!! Quote Link to comment Share on other sites More sharing options...
juice2839 Posted November 2, 2015 Author Share Posted November 2, 2015 (edited) I've actually got a good grasp on the memory map now thanks guys. I have managed to build a SGM clone that has the ay-3-8912 working and 24K ram working, but I have not been able to get the lower 8k bank switched ram working. I used a flip flop that was triggered with 7F to enable either Ram or Rom, but for some reason I have not got it to work.. Not sure what I am missing because I went over my circuit 10 times and in my head it should works perfect... LOL Edited November 2, 2015 by juice2839 Quote Link to comment Share on other sites More sharing options...
NIAD Posted November 2, 2015 Share Posted November 2, 2015 (edited) Would the schematics for the ADAM Logic Board be of assistance? I'm not sure how familiar you are with the ADAM, but there are two PCBs in the Stand-Alone ADAM... the CV board which is reconfigured for layout purposes and has a composite mod and then the ADAM Logic Board which contains the extra RAM, etc., etc. The Exp. Mod. #3 Adam Memory Console only contains the Adam Logic Board. Edited November 2, 2015 by NIAD Quote Link to comment Share on other sites More sharing options...
juice2839 Posted November 2, 2015 Author Share Posted November 2, 2015 Would the schematics for the ADAM Logic Board be of assistance? I'm not sure how familiar you are with the ADAM, but there are two PCBs in the Stand-Alone ADAM... the CV board which is reconfigured for layout purposes and has a composite mod and then the ADAM Logic Board which contains the extra RAM, etc., etc. The Exp. Mod. #3 Adam Memory Console only contains the Adam Logic Board. Would the schematics for the ADAM Logic Board be of assistance? I'm not sure how familiar you are with the ADAM, but there are two PCBs in the Stand-Alone ADAM... the CV board which is reconfigured for layout purposes and has a composite mod and then the ADAM Logic Board which contains the extra RAM, etc., etc. The Exp. Mod. #3 Adam Memory Console only contains the Adam Logic Board. Thanks Niad. I took a look at it. Nothing much in it I see with bank switching. I think I might have figured out what my problem is. You have to switch off the internal addressing (74ls138) with the _Aux enable pin on the expansion slot. My problem I think is with my timing. I have to make sure that it is disabled and the external Ram is enabled at just the right time. It's a bit tricky. Has to be just right so there is no bus contention.... Quote Link to comment Share on other sites More sharing options...
juice2839 Posted November 3, 2015 Author Share Posted November 3, 2015 Thanks Niad. I took a look at it. Nothing much in it I see with bank switching. I think I might have figured out what my problem is. You have to switch off the internal addressing (74ls138) with the _Aux enable pin on the expansion slot. My problem I think is with my timing. I have to make sure that it is disabled and the external Ram is enabled at just the right time. It's a bit tricky. Has to be just right so there is no bus contention.... Yep one rising or falling edge makes a difference.. I finally got it working 100% YEAHHHH !!!!! 1 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.