mkarlsson

PlusToo (Macintosh Plus clone) running on Papilio Pro

10 posts in this topic

This is based on the MiST port of Big Mess o' Wires PlusToo project.  MiST uses the same SDRAM as Papilio Pro so that made it quite easy.

 

To use this you need to flash the bitfile plustoo.bit since it contains the ROM code and the 800KB system disk data in addition to the FPGA configuration data.  The floppy is read-only.  BTW, this uses about 98% of the slices in the LX9 so it's quite full :)

 

The setup uses the LogicStart megawing for VGA.  PS/2 keyboard and mouse needs to be hooked up to A3 - A6 (normally used for 7 seg display). 

 

# PS/2 mouse
NET mouseClk       LOC = "P58" | IOSTANDARD = LVCMOS33 | PULLUP;                    # A3
NET mouseData      LOC = "P61" | IOSTANDARD = LVCMOS33 | PULLUP;                    # A4

# PS/2 keyboard
NET keyClk         LOC = "P66" | IOSTANDARD = LVCMOS33 | PULLUP;                    # A5
NET keyData        LOC = "P67" | IOSTANDARD = LVCMOS33 | PULLUP;                    # A6

 

On my setup the video is quite noisy but that could be due to my monitor.

 

You can grab the whole ISE project (including bit file) here: http://www.saanlima.com/download/Papilio_Pro/PlusToo_Papilo_Pro.zip

 

Links:

Big Mess o' Wires: http://www.bigmessowires.com/

MiST PlusToo forum: http://atari-forum.com/viewtopic.php?f=101&t=28648

PlusToo on Pipistrello: http://forum.gadgetfactory.net/index.php?/topic/2483-macintosh-plus-clone-on-pipistrello/#entry17269

 

Enjoy!

 

Magnus

Share this post


Link to post
Share on other sites

Hey that's cool! I'll give it a try later, I didn't think that would fit.

 

Does it work well? Seems like when I read about the Plus Too project there were still some serious stability bugs.

Share this post


Link to post
Share on other sites

The MiST guys made a lot of changes to the code, like using a different version of the 68K CPU and the VIA chip, added support for keyboard and sound, SDRAM support, and changed memory access timing quite a bit.  They are also working on adding SCSI HD support via SD card. 

 

One major difference between the MiST version and the Papilio Pro/Pipistrello version is how the ROM and System disk data is loaded to RAM, they have a separate ARM processor that loads it via SPI, while I wrote a module that reads the ROM and floppy data from the serial flash chip at power up

 

Magnus

Share this post


Link to post
Share on other sites

So I modified the constraints file to work with the arcade megawing since that has PS/2 ports already present. It compiles fine but how do you build the bitfile with the rom and disk images?

Share this post


Link to post
Share on other sites

The tools directory contains the scripts and roms - 

 

bitmerge is used to append data to the bitfile.

Looking at the makefile:

 

plustoo.bit: rom.bit Disk605.dsk./bitmerge rom.bit 1A0000:Disk605.dsk plustoo.bitrom.bit: ../ISE/plustoo_top.bit plusrom.bin./bitmerge ../ISE/plustoo_top.bit 180000:plusrom.bin rom.bit
 
ie you first append the from to the original bitfile with 
bitmerge ../ISE/plustoo_top.bit 180000:plusrom.bin rom.bit
then add the disk image 
bitmerge rom.bit 1A0000:Disk605.dsk plustoo.bit
 
...and burn the resulting plustoo.bit to the flash.
The 'promgen' tool included with ISE can be used to the same effect but promgen is a little more userfriendly as the result is a bitfile that can be used 
with fpga/papilioprog.

Share this post


Link to post
Share on other sites

Another option is to first flash the plustoo.bit file that's in the zip archive, it will store the rom and system disk data in flash, then load or flash your new bit file like you normally do.  The rom and disk data will remain in flash since only the configuration area will be erased when you flash your bitfile.

 

The 'promgen' tool included with ISE can be used to the same effect but promgen is a little more userfriendly as the result is a bitfile that can be used 

with fpga/papilioprog.
 
The bitfile created by Mike Field's bitmerge program can be written to flash with fpga/papilioprog just like any other bitfile.

 

Magnus

Share this post


Link to post
Share on other sites

Sweeet, this is very cool, thank you for working on this Magnus. 

 

I'm going to try to check this out over the weekend.

 

Jack.

Share this post


Link to post
Share on other sites

I was able to get this working over the weekend, the arcade megawing is nice for it because all the ports are already there. I ran into problems at first because I forgot about the need to first erase the ROM prior to programming it. A custom wing could free up even more pins since the video only really needs one bit. It would be cool to wire up an external floppy drive or emulator, stuffing the disk image into the ROM is a bit of a hassle.

 

There is definitely noise in the video, oddly part of the screen is rock solid but I'm seeing a vertical band of noise about 2/3 the way across the screen. I have not looked on a scope to see what's going on. Anybody know if this happens on the Mist or other platforms?

 

I experienced some weirdness with the mouse movement too, if I moved the mouse quickly the pointer would start moving erratically. Overall it feels a lot like my old Plus though.

Share this post


Link to post
Share on other sites

I think I know what it is. The video output is not blanked during non-display time so the noise is probably happening during horizontal retrace.

Magnus

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now