Discussion:
[N8VEM: 19148] ROM-MJS for the Multicomp FPGA SBC
Max Scane
2014-12-26 05:52:52 UTC
Permalink
For those people experimenting with the Multicomp, I have uploaded a copy
of my CP/M and MP/M distribution at:

http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=ROM-MJS

This implementation consists of the following:

1. Extended debug monitor
2. CP/M 2 Disk image
3. CP/M 3 Disk Image
4 MP/M II Disk Image

The system boots from Grant's existing boot ROM so you don't have to make
any changes to the VHDL code. However, it does require a number of
extensions developed by James (eg, External RAM , MMU, Interrupts etc)

The base OS understands basic partition tables and supports 4 primary
partitions (type=52).

The disk images can be copied directly from the FAT partition (FAT 32) to
the destination partition which speeds up installation especially since the
Multicomp only has 1 disk.

Both CP/M 2 and 3 are partition independent so you can install them on any
partition but MP/M is tied to partition 4 for the time being.

You can install all or one OS as you please.

All the utilities work on CP/M 2, most on CP/M 3 and non on MP/M at the
moment.

There is a tool (FATDSK.COM) for file transfer between FAT volumes and CP/M
volumes and is supported on CP/M 2 and 3.


Documentation is sparse at the moment but there are some guides to help
installation. I will add more documentation when I get a chance.

Feedback is appreciated and I hope you have some fun!

Cheers!

Max
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
Martin Lukasek
2014-12-26 08:38:47 UTC
Permalink
Hi Max,

thanks, but there is only a 00ReadMe.txt in the ZIP file. Could you also publish or point me out to the latest VHDL code wit External RAM, MMU Interrupts, etc? Thank you.

Regards

Martin


From: ***@googlegroups.com [mailto:***@googlegroups.com] On Behalf Of Max Scane
Sent: Friday, December 26, 2014 6:53 AM
To: N8VEM
Subject: [N8VEM: 19148] ROM-MJS for the Multicomp FPGA SBC

For those people experimenting with the Multicomp, I have uploaded a copy of my CP/M and MP/M distribution at:

http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=ROM-MJS

This implementation consists of the following:

1. Extended debug monitor
2. CP/M 2 Disk image
3. CP/M 3 Disk Image
4 MP/M II Disk Image

The system boots from Grant's existing boot ROM so you don't have to make any changes to the VHDL code. However, it does require a number of extensions developed by James (eg, External RAM , MMU, Interrupts etc)

The base OS understands basic partition tables and supports 4 primary partitions (type=52).

The disk images can be copied directly from the FAT partition (FAT 32) to the destination partition which speeds up installation especially since the Multicomp only has 1 disk.

Both CP/M 2 and 3 are partition independent so you can install them on any partition but MP/M is tied to partition 4 for the time being.

You can install all or one OS as you please.

All the utilities work on CP/M 2, most on CP/M 3 and non on MP/M at the moment.

There is a tool (FATDSK.COM<http://FATDSK.COM>) for file transfer between FAT volumes and CP/M volumes and is supported on CP/M 2 and 3.


Documentation is sparse at the moment but there are some guides to help installation. I will add more documentation when I get a chance.

Feedback is appreciated and I hope you have some fun!

Cheers!

Max
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com<mailto:n8vem+***@googlegroups.com>.
To post to this group, send email to ***@googlegroups.com<mailto:***@googlegroups.com>.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
Max Scane
2014-12-26 08:47:29 UTC
Permalink
Oops! That won't get you far..

I have uploaded a new copy of the Zip file.

James has already uploaded the VHDL code:

http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=VHDL%20code

Cheers!

Max
Post by Martin Lukasek
Hi Max,
thanks, but there is only a 00ReadMe.txt in the ZIP file. Could you also
publish or point me out to the latest VHDL code wit External RAM, MMU
Interrupts, etc? Thank you.
Regards
Martin
Of *Max Scane
*Sent:* Friday, December 26, 2014 6:53 AM
*To:* N8VEM
*Subject:* [N8VEM: 19148] ROM-MJS for the Multicomp FPGA SBC
For those people experimenting with the Multicomp, I have uploaded a copy
http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=ROM-MJS
1. Extended debug monitor
2. CP/M 2 Disk image
3. CP/M 3 Disk Image
4 MP/M II Disk Image
The system boots from Grant's existing boot ROM so you don't have to make
any changes to the VHDL code. However, it does require a number of
extensions developed by James (eg, External RAM , MMU, Interrupts etc)
The base OS understands basic partition tables and supports 4 primary partitions (type=52).
The disk images can be copied directly from the FAT partition (FAT 32) to
the destination partition which speeds up installation especially since the
Multicomp only has 1 disk.
Both CP/M 2 and 3 are partition independent so you can install them on any
partition but MP/M is tied to partition 4 for the time being.
You can install all or one OS as you please.
All the utilities work on CP/M 2, most on CP/M 3 and non on MP/M at the moment.
There is a tool (FATDSK.COM) for file transfer between FAT volumes and
CP/M volumes and is supported on CP/M 2 and 3.
Documentation is sparse at the moment but there are some guides to help
installation. I will add more documentation when I get a chance.
Feedback is appreciated and I hope you have some fun!
Cheers!
Max
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
Martin Lukasek
2014-12-26 09:02:31 UTC
Permalink
Great, thanks,will try. I thought there is some newer VHDL code version, the one on the N8VEM project site is about 6 moth old.

Kind regards

Martin


From: ***@googlegroups.com [mailto:***@googlegroups.com] On Behalf Of Max Scane
Sent: Friday, December 26, 2014 9:47 AM
To: N8VEM
Subject: Re: [N8VEM: 19151] ROM-MJS for the Multicomp FPGA SBC

Oops! That won't get you far..

I have uploaded a new copy of the Zip file.

James has already uploaded the VHDL code:

http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=VHDL%20code

Cheers!

Max

On Fri, Dec 26, 2014 at 7:38 PM, Martin Lukasek <***@artax.cz<mailto:***@artax.cz>> wrote:
Hi Max,

thanks, but there is only a 00ReadMe.txt in the ZIP file. Could you also publish or point me out to the latest VHDL code wit External RAM, MMU Interrupts, etc? Thank you.

Regards

Martin


From: ***@googlegroups.com<mailto:***@googlegroups.com> [mailto:***@googlegroups.com<mailto:***@googlegroups.com>] On Behalf Of Max Scane
Sent: Friday, December 26, 2014 6:53 AM
To: N8VEM
Subject: [N8VEM: 19148] ROM-MJS for the Multicomp FPGA SBC

For those people experimenting with the Multicomp, I have uploaded a copy of my CP/M and MP/M distribution at:

http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=ROM-MJS

This implementation consists of the following:

1. Extended debug monitor
2. CP/M 2 Disk image
3. CP/M 3 Disk Image
4 MP/M II Disk Image

The system boots from Grant's existing boot ROM so you don't have to make any changes to the VHDL code. However, it does require a number of extensions developed by James (eg, External RAM , MMU, Interrupts etc)

The base OS understands basic partition tables and supports 4 primary partitions (type=52).

The disk images can be copied directly from the FAT partition (FAT 32) to the destination partition which speeds up installation especially since the Multicomp only has 1 disk.

Both CP/M 2 and 3 are partition independent so you can install them on any partition but MP/M is tied to partition 4 for the time being.

You can install all or one OS as you please.

All the utilities work on CP/M 2, most on CP/M 3 and non on MP/M at the moment.

There is a tool (FATDSK.COM<http://FATDSK.COM>) for file transfer between FAT volumes and CP/M volumes and is supported on CP/M 2 and 3.


Documentation is sparse at the moment but there are some guides to help installation. I will add more documentation when I get a chance.

Feedback is appreciated and I hope you have some fun!

Cheers!

Max
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com<mailto:n8vem+***@googlegroups.com>.
To post to this group, send email to ***@googlegroups.com<mailto:***@googlegroups.com>.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com<mailto:n8vem+***@googlegroups.com>.
To post to this group, send email to ***@googlegroups.com<mailto:***@googlegroups.com>.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com<mailto:n8vem+***@googlegroups.com>.
To post to this group, send email to ***@googlegroups.com<mailto:***@googlegroups.com>.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
Max Scane
2014-12-26 09:20:15 UTC
Permalink
That's the one.

I have been working on this for a while now. James and Kip were my 'Alpha'
testers.

I have since written a new monitor to copy the disk images directly to the
target partition.

Previously, you had to install CP/M 2, copy an LBR file for each OS from
the FAT partition and then extract the files using NULU.

This should be a lot easier.

Cheers!

Max
Post by Martin Lukasek
Great, thanks,will try. I thought there is some newer VHDL code version,
the one on the N8VEM project site is about 6 moth old.
Kind regards
Martin
Of *Max Scane
*Sent:* Friday, December 26, 2014 9:47 AM
*To:* N8VEM
*Subject:* Re: [N8VEM: 19151] ROM-MJS for the Multicomp FPGA SBC
Oops! That won't get you far..
I have uploaded a new copy of the Zip file.
http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=VHDL%20code
Cheers!
Max
Hi Max,
thanks, but there is only a 00ReadMe.txt in the ZIP file. Could you also
publish or point me out to the latest VHDL code wit External RAM, MMU
Interrupts, etc? Thank you.
Regards
Martin
Of *Max Scane
*Sent:* Friday, December 26, 2014 6:53 AM
*To:* N8VEM
*Subject:* [N8VEM: 19148] ROM-MJS for the Multicomp FPGA SBC
For those people experimenting with the Multicomp, I have uploaded a copy
http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=ROM-MJS
1. Extended debug monitor
2. CP/M 2 Disk image
3. CP/M 3 Disk Image
4 MP/M II Disk Image
The system boots from Grant's existing boot ROM so you don't have to make
any changes to the VHDL code. However, it does require a number of
extensions developed by James (eg, External RAM , MMU, Interrupts etc)
The base OS understands basic partition tables and supports 4 primary partitions (type=52).
The disk images can be copied directly from the FAT partition (FAT 32) to
the destination partition which speeds up installation especially since the
Multicomp only has 1 disk.
Both CP/M 2 and 3 are partition independent so you can install them on any
partition but MP/M is tied to partition 4 for the time being.
You can install all or one OS as you please.
All the utilities work on CP/M 2, most on CP/M 3 and non on MP/M at the moment.
There is a tool (FATDSK.COM) for file transfer between FAT volumes and
CP/M volumes and is supported on CP/M 2 and 3.
Documentation is sparse at the moment but there are some guides to help
installation. I will add more documentation when I get a chance.
Feedback is appreciated and I hope you have some fun!
Cheers!
Max
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
Kip Koon
2014-12-26 20:48:24 UTC
Permalink
Hi Max, James and Multicomp Builders,

Max, I will have to look at your new method to install the OS’s. It sounds interesting. Thank you for including me in on all the testing and initial configuration processes! I really enjoyed working with you and James on the alpha tests of your Multi-CP/M OS configurations and hardware upgrades! I can hardly wait to see what you and James come up with next. Maybe add a second SD Card or a display screen driver for the LCD display? Oh yeah, when will the second 512KB SRAM chip be coming online in the MP/M II configuration? :) I know you guys must have plenty of spare time! :D

I will be going on vacation to the beach tomorrow for a week, so I don’t know if I will have a good connection to the internet or not. Come to think of it, I will have to get a few things from my workbench to ensure I get as great a reception as is possible. I’ll have to see what happens. :)

I’ll be happy to help anyone putting together a Multicomp with any hardware or software questions they may have if Max or James are ever unavailable. My attentions have been spread out a bit lately, but I just got two laptops repaired and since the third one has a hardware problem and I’m going out of town for a week, it will be on hold for at least a week anyway.

I now have several Multicomps running in various configurations. Three of my Multicomps use the final version of the PCB from James Moxham’s web site, so I have a bit of experience with them now. Most of them are the Z80 enhanced MJ Configuration. MJ=Max & James.

My first 8-bit microprocessor I ever used was the 6809 in the Radio Shack Color Computer so I am also playing around with trying to get a Bank Switching scheme to work on the 6809 Multicomp, but up to now I have been less than successful.

I have also tried to get Cubix running on the 6809 Multicomp, but no success on that front yet either. To be quite honest, I haven’t worked on my Multicomps in a little while as life requirements have taken my attention over for the last few months as well as other hobby interests. With that being said however, the Grant Searle’s Multicomp design and the enhancements to the hardware and software by James and Max have created for me anyway what has to be truly the smallest 8-bit multi-CPU microcomputer platform ever created.

For several years now, I have been trying to figure out how I was going to get something like the SWTPC 6800 and 6809 computers up and running in some form or other by trying to design and build my own. Once that was done, I was thinking about creating an S-100 computer system with at least a Z80 in it for starters. However, with the Multicomp I can play with a Z80, 6809, and a 6502 microcomputer now and eventually a 6800 based one later all with the same basic hardware. It is almost unbelievable how versatile this platform is except that I have seen the Z80, 6809 and 6502 versions run! It is truly awesome!

As far as CP/M 2.2, CP/M 3.0 and MP/M II v2.1 goes though, I still consider myself a newbie though I do have several SD Cards setup now in a few different configurations all done during the course of my learning how to get CP/M initially running and later on during the alpha testing. I could use some tutoring on the first Ever OS to be created for an 8-Bit Microprocessor! :) If you are not aware, it’s CP/M! I’ve been playing with it for a little while now and I’ve learned a lot so far. I’m sure to have fun learning more.

Well, I guess I have taken enough of your time, so if you have read this far, thanks a bunch. I do think a lot of the Multicomp system. Take care my friends.



Kip Koon

***@sc.rr.com

http://www.cocopedia.com/wiki/index.php/Kip_Koon





From: ***@googlegroups.com [mailto:***@googlegroups.com] On Behalf Of Max Scane
Sent: Friday, December 26, 2014 4:20 AM
To: N8VEM
Subject: Re: [N8VEM: 19153] ROM-MJS for the Multicomp FPGA SBC



That's the one.



I have been working on this for a while now. James and Kip were my 'Alpha' testers.



I have since written a new monitor to copy the disk images directly to the target partition.



Previously, you had to install CP/M 2, copy an LBR file for each OS from the FAT partition and then extract the files using NULU.



This should be a lot easier.



Cheers!



Max



On Fri, Dec 26, 2014 at 8:02 PM, Martin Lukasek <***@artax.cz> wrote:

Great, thanks,will try. I thought there is some newer VHDL code version, the one on the N8VEM project site is about 6 moth old.



Kind regards



Martin





From: ***@googlegroups.com [mailto:***@googlegroups.com] On Behalf Of Max Scane
Sent: Friday, December 26, 2014 9:47 AM
To: N8VEM
Subject: Re: [N8VEM: 19151] ROM-MJS for the Multicomp FPGA SBC



Oops! That won't get you far..



I have uploaded a new copy of the Zip file.



James has already uploaded the VHDL code:



http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder <http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=VHDL%20code> &param=VHDL%20code



Cheers!



Max



On Fri, Dec 26, 2014 at 7:38 PM, Martin Lukasek <***@artax.cz> wrote:

Hi Max,



thanks, but there is only a 00ReadMe.txt in the ZIP file. Could you also publish or point me out to the latest VHDL code wit External RAM, MMU Interrupts, etc? Thank you.



Regards



Martin





From: ***@googlegroups.com [mailto:***@googlegroups.com] On Behalf Of Max Scane
Sent: Friday, December 26, 2014 6:53 AM
To: N8VEM
Subject: [N8VEM: 19148] ROM-MJS for the Multicomp FPGA SBC



For those people experimenting with the Multicomp, I have uploaded a copy of my CP/M and MP/M distribution at:



http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder <http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=ROM-MJS> &param=ROM-MJS



This implementation consists of the following:



1. Extended debug monitor

2. CP/M 2 Disk image

3. CP/M 3 Disk Image

4 MP/M II Disk Image



The system boots from Grant's existing boot ROM so you don't have to make any changes to the VHDL code. However, it does require a number of extensions developed by James (eg, External RAM , MMU, Interrupts etc)



The base OS understands basic partition tables and supports 4 primary partitions (type=52).



The disk images can be copied directly from the FAT partition (FAT 32) to the destination partition which speeds up installation especially since the Multicomp only has 1 disk.



Both CP/M 2 and 3 are partition independent so you can install them on any partition but MP/M is tied to partition 4 for the time being.



You can install all or one OS as you please.



All the utilities work on CP/M 2, most on CP/M 3 and non on MP/M at the moment.



There is a tool (FATDSK.COM) for file transfer between FAT volumes and CP/M volumes and is supported on CP/M 2 and 3.





Documentation is sparse at the moment but there are some guides to help installation. I will add more documentation when I get a chance.



Feedback is appreciated and I hope you have some fun!



Cheers!



Max
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
Max Scane
2014-12-31 01:20:18 UTC
Permalink
I have just posted an updated ZIP file which contains a bugfix to the
monitor.

There was a small problem where the monitor would hang after image copying
a file on a FAT16 file system.

This now works correctly and you can use FAT 16 or 32 for the FAT
partition. Thanks to Bo and Kip for spotting this one.

Note that it is very important to re-format the FAT partition once the base
OS has been copied to the SD card. This is because the three CP/M
partitions are inserted before the FAT partition and its starting address
on the disk is moved.

Max
Post by Max Scane
For those people experimenting with the Multicomp, I have uploaded a copy
http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=ROM-MJS
1. Extended debug monitor
2. CP/M 2 Disk image
3. CP/M 3 Disk Image
4 MP/M II Disk Image
The system boots from Grant's existing boot ROM so you don't have to make
any changes to the VHDL code. However, it does require a number of
extensions developed by James (eg, External RAM , MMU, Interrupts etc)
The base OS understands basic partition tables and supports 4 primary
partitions (type=52).
The disk images can be copied directly from the FAT partition (FAT 32) to
the destination partition which speeds up installation especially since the
Multicomp only has 1 disk.
Both CP/M 2 and 3 are partition independent so you can install them on any
partition but MP/M is tied to partition 4 for the time being.
You can install all or one OS as you please.
All the utilities work on CP/M 2, most on CP/M 3 and non on MP/M at the
moment.
There is a tool (FATDSK.COM) for file transfer between FAT volumes and
CP/M volumes and is supported on CP/M 2 and 3.
Documentation is sparse at the moment but there are some guides to help
installation. I will add more documentation when I get a chance.
Feedback is appreciated and I hope you have some fun!
Cheers!
Max
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
James Moxham
2014-12-31 01:25:53 UTC
Permalink
Fantastic work, thanks Max!
Post by Max Scane
I have just posted an updated ZIP file which contains a bugfix to the
monitor.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
Ian May
2015-01-02 09:51:17 UTC
Permalink
Hi Max and FPGA Multicomp users,
Many thanks for providing your ROM-MJS Max. I use Linux and I wasn't
looking forward to either trying to get Grant's Windows download software
working using Wine or writing my own equivalent. Your code makes getting a
working system much quicker and easier! Note that I am using your V0.1 code.

In the installation instructions it says that an interrupt controller is
required for MP/M. I have used the Microcomputer.zip and Components.zip
from here
http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=VHDL%20code
but I cannot see an interrupt controller in this code. Is the interrupt
controller somewhere else or are there newer versions of Microcomputer.zip
and Components.zip somewhere else?

To copy Max's disk image to an SDcard I used a PC without a hard disk (just
in case I made any mistakes with dd) and booted Puppy Linux from a CD. I
then used dd to copy the image from a USB stick to the 2GB SDcard. To
reformat the FAT32 partition I tried to use GParted but it maintained that
there was no partition table on the SDcard. I then read the Wikipedia page
on MBRs and loaded Max's disk image into a binary editor and looked at the
partition entries. The documentation says that the partitions are 8 MB each
but the MBR in the disk image says that partition 2 is 7D43H (32067dec)
sectors long or 16033.5 kB. Partitions 3 and 4 are 7D82H (32130dec) or
16065 kB. Somewhat confused by these results I decided to try using fdisk
on the SDcard. Fdisk reported that the total disk size in the MBR was
larger than the SDcard (this was probably what upset GParted). This could
also occur because not all "2GB" SDcards have the same number of available
sectors. I deleted partition 1 and then made a new one using the remaining
space on the card. GParted was now OK with the partition table and I
formatted partition 1 to FAT32.

I then followed the rest of Max's instructions and got a usable system
though, like the SDcard I made using Grant's method, it would sometimes
crash after printing "Booting CP/M 2.2". Thinking about these crashes I
remembered reading the note on Sergey's ParPortProp page for the V1.1 PCB
"Added C14 100 uF filter capacitor by SD card socket". I fitted a 220uF
capacitor between the 0V and 3.3V pads on the SDcard header pads. This
seems to have cured the intermittent crash on booting problem. Doing this
may help other people having problems with the SDcard. Just in case errors
had occurred during imaging I did re-run the image commands.

I then tried building my own SDcards using fdisk with 8MB and 16MB
partitions on 512MB SDcards. I will refer to these as 8MB or 16MB SDcards
from here on. Using fdisk I made partition 2 first, accepting the default
"leave 1 MB before it" (so it starts at sector 2048 - different from the
sector 63 start on Max's 2GB image), and specified the size as +8M and +16M
respectively. I then used the "t" command to make it a type 52 CP/M
partition. I repeated this process for partitions 3 and 4. Finally I made
partition 1 the rest of the disk and type 0b FAT32. GParted was used to
format the FAT32 partition. Note that the Linux fdisk command normally
prints the number of blocks in a partition using 1kB per block. In "expert"
mode the size is given in sectors.

I used dd to make a file of the MBR for each SDcard and then used the
binary editor to paste this over the MBR in Max's disk image. I then "dd"ed
the new images back to the SDcards and successfully booted into Max's
monitor program from each card. Using either of these SDcards the monitor
reliably crashes in the same fashion when using the image command after
printing "Image copy completed". For CP/M 2.2 and MP/M II imaging it
crashes and you have to use reset. For the CP/M 3 image it manages to crash
into the start code and prints "Extended Z80 Debug Monitor Version 0.3 by
Max Scane December 2014". This is 100% repeatable using either of the 8MB
or 16MB SDcards but does not occur using the MBR in Max's disk image.

The image command has probably worked correctly since CP/M 2.2 and CP/M 3
seem to be working OK when booted from the 8MB or 16MB cards but there is a
problem with MP/M II. Booting MP/M from Max's disk image works and the
"DIR" command when entered from the serial console (0A>) lists the
directory contents, but typing "DIR" on the second console (1A> which is
the VGA/PS2 on my machine) returns "DIR?". When MP/M is booted from either
of my 8MB or 16MB SDcards I get the "DIR?" response from entering "DIR" on
both consoles. Could it be that the MP/M problems are related to the lack
of an interrupt controller or has some part of the image process failed
when using the 8MB and 16MB disks?

I have attached the following files. "My512MBcard-8MBParts.txt",
"My512MBcard-16MBParts.txt" and "My2GBcardParts.txt" are partition table
printouts from fdisk for the 512MB disks I made with 8MB and 16MB
partitions along with that for Max's original disk image.
"fpga-session2GBcard.txt" is a capture of console output when using Max's
disk image and shows everything working correctly (I think).
"fpga-session-16MBParts.txt" is a capture of console output when using the
16MB partition SDcard and shows things going wrong including MP/M printing
"DIR?" right at the end. I have added comments to this file prefixed by
"*****".

"fpga-boot-test.zip" contains"fpga-boot-test-8MBParts.bin" and
"fpga-boot-test-16MBParts.bin" and are the disk images for the two 512MB
SDcards with 8MB and 16MB partitions respectively. Could some kind soul
please try putting these on an SDcard and see if they have the same
problems that I have (I could actually have a hardware problem)? Max, you
may be able to use them to find out why "image" crashes. These images can
be put on an SDcard larger than 512MB with the rest either unusable or the
FAT32 partition resized to the full capacity.

Thanks in advance for any assistance anyone can provide.
Cheers,
Ian.
Post by Max Scane
I have just posted an updated ZIP file which contains a bugfix to the
monitor.
There was a small problem where the monitor would hang after image copying
a file on a FAT16 file system.
This now works correctly and you can use FAT 16 or 32 for the FAT
partition. Thanks to Bo and Kip for spotting this one.
Note that it is very important to re-format the FAT partition once the
base OS has been copied to the SD card. This is because the three CP/M
partitions are inserted before the FAT partition and its starting address
on the disk is moved.
Max
Post by Max Scane
For those people experimenting with the Multicomp, I have uploaded a copy
http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=ROM-MJS
1. Extended debug monitor
2. CP/M 2 Disk image
3. CP/M 3 Disk Image
4 MP/M II Disk Image
The system boots from Grant's existing boot ROM so you don't have to make
any changes to the VHDL code. However, it does require a number of
extensions developed by James (eg, External RAM , MMU, Interrupts etc)
The base OS understands basic partition tables and supports 4 primary
partitions (type=52).
The disk images can be copied directly from the FAT partition (FAT 32) to
the destination partition which speeds up installation especially since the
Multicomp only has 1 disk.
Both CP/M 2 and 3 are partition independent so you can install them on
any partition but MP/M is tied to partition 4 for the time being.
You can install all or one OS as you please.
All the utilities work on CP/M 2, most on CP/M 3 and non on MP/M at the
moment.
There is a tool (FATDSK.COM) for file transfer between FAT volumes and
CP/M volumes and is supported on CP/M 2 and 3.
Documentation is sparse at the moment but there are some guides to help
installation. I will add more documentation when I get a chance.
Feedback is appreciated and I hope you have some fun!
Cheers!
Max
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
James Moxham
2015-01-02 12:41:15 UTC
Permalink
Hi Ian,

I'm not sure what versions are out there, but the interrupt code is below,
and then there are some changes in the chip select part of Grant's code to
add some ports so you can turn the interrupts on and off. So if this isn't
in your library let me know. To run MP/M you will also need the MMU as
well to use all the memory on the 512k chip.

Cheers, James



-- Interrupt controller - uses a standard Q flip flop
-- turn interrupts on and off with a write to a port
-- allows bootup with no interrupts running, then enable once interrupt
code is set up
-- by James Moxham 2014 for Grant Searle's minicomputer

--library declarations - need all these to do simple maths and logic
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_UNSIGNED.all;


--This is a D Flip-Flop with Synchronous Reset,Set and Clock
Enable(posedge clk).
--Note that the reset input has the highest priority,Set being the next
highest
--priority and clock enable having the lowest priority.
entity interrupt is
port(
Q : out std_logic; -- Flip flop Data output
CLK :in std_logic; -- Clock input
CE :in std_logic; -- Clock enable input
RESET :in std_logic; -- Synchronous reset input
D :in std_logic; -- Data input
SET : in std_logic; -- Synchronous set input
InterruptGen : out std_logic -- triggers if Q is 1 and reached the clock
count
);
end interrupt;
architecture rtl of interrupt is --architecture of the circuit.

signal interruptClkCount : std_logic_vector(25 downto 0); -- 25 bits for
counts to 25 million
signal Qlocal : std_logic;

begin --"begin" statement for architecture.
process(CLK) --process with sensitivity list.
begin --"begin" statment for the process.
if ( rising_edge(CLK) ) then --This makes the process synchronous(with
clock)
if (RESET = '1') then
Q <= '0';
else
if(SET = '1') then
Q <= '1';
Qlocal <= '0';
else
if ( CE = '1') then
Q <= D;
Qlocal <= D;
end if;
end if;
end if;

end if;

end process; --end of process statement.

process(CLK) -- create interrupt 50x a second
begin
if rising_edge(CLK) then
-- 25,000,000 is 2x a second 5,000,000 is 10x a second, 1,000,000 is 50x a
second
if interruptClkCount < 1000000 then
interruptClkCount <= interruptClkCount+1;
else
interruptClkCount <= (others =>'0');
end if;
-- set time the interrupt is low
if (interruptClkCount < 23) and (Qlocal = '1') then -- some instructions
need up to 23 cycles http://www.z80.info/interrup.htm
interruptGen <= '0';
else
interruptGen <= '1';
end if;
end if;
end process;
end rtl;
Post by Ian May
Hi Max and FPGA Multicomp users,
Many thanks for providing your ROM-MJS Max. I use Linux and I wasn't
looking forward to either trying to get Grant's Windows >download
software working using Wine or writing my own equivalent. Your code
makes getting a working system much quicker and >easier! Note that I am
using your V0.1 code.
In the installation instructions it says that an interrupt controller is
required for MP/M. I have used the Microcomputer.zip and >Components.zip
from here
http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=VHDL%20code
but I cannot see an >interrupt controller in this code. Is the interrupt
controller somewhere else or are there newer versions of
Microcomputer.zip and >Components.zip somewhere else?
To copy Max's disk image to an SDcard I used a PC without a hard disk
(just in case I made any mistakes with dd) and booted Puppy >Linux from
a CD. I then used dd to copy the image from a USB stick to the 2GB
SDcard. To reformat the FAT32 partition I tried to use >GParted but it
maintained that there was no partition table on the SDcard. I then read
the Wikipedia page on MBRs and loaded Max's >disk image into a binary
editor and looked at the partition entries. The documentation says that
the partitions are 8 MB each but the >MBR in the disk image says that
partition 2 is 7D43H (32067dec) sectors long or 16033.5 kB. Partitions 3
and 4 are 7D82H (32130dec) or >16065 kB. Somewhat confused by these
results I decided to try using fdisk on the SDcard. Fdisk reported that
the total disk size in the >MBR was larger than the SDcard (this was
probably what upset GParted). This could also occur because not all
"2GB" SDcards have >the same number of available sectors. I deleted
partition 1 and then made a new one using the remaining space on the
card. GParted was >now OK with the partition table and I formatted
partition 1 to FAT32.
I then followed the rest of Max's instructions and got a usable system
though, like the SDcard I made using Grant's method, it would >sometimes
crash after printing "Booting CP/M 2.2". Thinking about these crashes I
remembered reading the note on Sergey's >ParPortProp page for the V1.1
PCB "Added C14 100 uF filter capacitor by SD card socket". I fitted a
220uF capacitor between the 0V and >3.3V pads on the SDcard header pads.
This seems to have cured the intermittent crash on booting problem.
Doing this may help other >people having problems with the SDcard. Just
in case errors had occurred during imaging I did re-run the image
commands.
I then tried building my own SDcards using fdisk with 8MB and 16MB
partitions on 512MB SDcards. I will refer to these as 8MB or >16MB
SDcards from here on. Using fdisk I made partition 2 first, accepting
the default "leave 1 MB before it" (so it starts at sector 2048 -
different from the sector 63 start on Max's 2GB image), and specified
the size as +8M and +16M respectively. I then used the "t" >command to
make it a type 52 CP/M partition. I repeated this process for partitions
3 and 4. Finally I made partition 1 the rest of the disk >and type 0b
FAT32. GParted was used to format the FAT32 partition. Note that the
Linux fdisk command normally prints the number of >blocks in a partition
using 1kB per block. In "expert" mode the size is given in sectors.
I used dd to make a file of the MBR for each SDcard and then used the
binary editor to paste this over the MBR in Max's disk image. I >then
"dd"ed the new images back to the SDcards and successfully booted into
Max's monitor program from each card. Using either of >these SDcards the
monitor reliably crashes in the same fashion when using the image
command after printing "Image copy completed". >For CP/M 2.2 and MP/M II
imaging it crashes and you have to use reset. For the CP/M 3 image it
manages to crash into the start code >and prints "Extended Z80 Debug
Monitor Version 0.3 by Max Scane December 2014". This is 100% repeatable
using either of the 8MB >or 16MB SDcards but does not occur using the
MBR in Max's disk image.
The image command has probably worked correctly since CP/M 2.2 and CP/M
3 seem to be working OK when booted from the 8MB or >16MB cards but
there is a problem with MP/M II. Booting MP/M from Max's disk image
works and the "DIR" command when entered >from the serial console (0A>)
lists the directory contents, but typing "DIR" on the second console
(1A> which is the VGA/PS2 on my >machine) returns "DIR?". When MP/M is
booted from either of my 8MB or 16MB SDcards I get the "DIR?" response
from entering >"DIR" on both consoles. Could it be that the MP/M
problems are related to the lack of an interrupt controller or has some
part of the >image process failed when using the 8MB and 16MB disks?
I have attached the following files. "My512MBcard-8MBParts.txt",
"My512MBcard-16MBParts.txt" and "My2GBcardParts.txt" are >partition
table printouts from fdisk for the 512MB disks I made with 8MB and 16MB
partitions along with that for Max's original disk >image.
"fpga-session2GBcard.txt" is a capture of console output when using
Max's disk image and shows everything working correctly >(I think).
"fpga-session-16MBParts.txt" is a capture of console output when using
the 16MB partition SDcard and shows things going >wrong including MP/M
printing "DIR?" right at the end. I have added comments to this file
prefixed by "*****".
"fpga-boot-test.zip" contains"fpga-boot-test-8MBParts.bin" and
"fpga-boot-test-16MBParts.bin" and are the disk images for the two
512MB SDcards with 8MB and 16MB partitions respectively. Could some
kind soul please try putting these on an SDcard and see if >they have
the same problems that I have (I could actually have a hardware
problem)? Max, you may be able to use them to find out why >"image"
crashes. These images can be put on an SDcard larger than 512MB with the
rest either unusable or the FAT32 partition resized >to the full
capacity.
Thanks in advance for any assistance anyone can provide.
Cheers,
Ian.
I have just posted an updated ZIP file which contains a bugfix to the
monitor.
There was a small problem where the monitor would hang after image
copying a file on a FAT16 file system.
This now works correctly and you can use FAT 16 or 32 for the FAT
partition. Thanks to Bo and Kip for spotting this one.
Note that it is very important to re-format the FAT partition once the
base OS has been copied to the SD card. This is because the >>three
CP/M partitions are inserted before the FAT partition and its starting
address on the disk is moved.
Max
Post by Max Scane
For those people experimenting with the Multicomp, I have uploaded a
http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=ROM-MJS
1. Extended debug monitor
2. CP/M 2 Disk image
3. CP/M 3 Disk Image
4 MP/M II Disk Image
The system boots from Grant's existing boot ROM so you don't have to
make any changes to the VHDL code. However, it does >>>require a
number of extensions developed by James (eg, External RAM , MMU,
Interrupts etc)
The base OS understands basic partition tables and supports 4 primary
partitions (type=52).
The disk images can be copied directly from the FAT partition (FAT 32)
to the destination partition which speeds up installation
Post by Martin Lukasek
especially since the Multicomp only has 1 disk.
Both CP/M 2 and 3 are partition independent so you can install them on
any partition but MP/M is tied to partition 4 for the time >>>being.
You can install all or one OS as you please.
All the utilities work on CP/M 2, most on CP/M 3 and non on MP/M at
the moment.
There is a tool (FATDSK.COM) for file transfer between FAT volumes and
CP/M volumes and is supported on CP/M 2 and 3.
Documentation is sparse at the moment but there are some guides to
help installation. I will add more documentation when I get a
Post by Martin Lukasek
chance.
Feedback is appreciated and I hope you have some fun!
Cheers!
Max
--You received this message because you are subscribed to the Google
Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--You received this message because you are subscribed to the Google
Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
Ian May
2015-01-02 14:20:35 UTC
Permalink
Hi James,
thanks for the interrupt code. I expect that the weirdness with MP/M is
because it is missing those interrupts every 20 ms :) I also do not have
the chip select code for controlling the interrupts either. Could you
possibly email it to me or tell me where I can download it? Could you
possibly consider updating the Components.zip and Microcomputer.zip on the
N8VEM FPGA web page with the required interrupt code so that future
constructors can start with all the components that they will need?
Cheers,
Ian.
Post by James Moxham
Hi Ian,
I'm not sure what versions are out there, but the interrupt code is below,
and then there are some changes in the chip select part of Grant's code to
add some ports so you can turn the interrupts on and off. So if this isn't
in your library let me know. To run MP/M you will also need the MMU as well
to use all the memory on the 512k chip.
Cheers, James
-- Interrupt controller - uses a standard Q flip flop
-- turn interrupts on and off with a write to a port
-- allows bootup with no interrupts running, then enable once interrupt
code is set up
-- by James Moxham 2014 for Grant Searle's minicomputer
--library declarations - need all these to do simple maths and logic
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_UNSIGNED.all;
--This is a D Flip-Flop with Synchronous Reset,Set and Clock
Enable(posedge clk).
--Note that the reset input has the highest priority,Set being the next
highest
--priority and clock enable having the lowest priority.
entity interrupt is
port(
Q : out std_logic; -- Flip flop Data output
CLK :in std_logic; -- Clock input
CE :in std_logic; -- Clock enable input
RESET :in std_logic; -- Synchronous reset input
D :in std_logic; -- Data input
SET : in std_logic; -- Synchronous set input
InterruptGen : out std_logic -- triggers if Q is 1 and reached the clock
count
);
end interrupt;
architecture rtl of interrupt is --architecture of the circuit.
signal interruptClkCount : std_logic_vector(25 downto 0); -- 25 bits for
counts to 25 million
signal Qlocal : std_logic;
begin --"begin" statement for architecture.
process(CLK) --process with sensitivity list.
begin --"begin" statment for the process.
if ( rising_edge(CLK) ) then --This makes the process synchronous(with
clock)
if (RESET = '1') then
Q <= '0';
else
if(SET = '1') then
Q <= '1';
Qlocal <= '0';
else
if ( CE = '1') then
Q <= D;
Qlocal <= D;
end if;
end if;
end if;
end if;
end process; --end of process statement.
process(CLK) -- create interrupt 50x a second
begin
if rising_edge(CLK) then
-- 25,000,000 is 2x a second 5,000,000 is 10x a second, 1,000,000 is 50x a
second
if interruptClkCount < 1000000 then
interruptClkCount <= interruptClkCount+1;
else
interruptClkCount <= (others =>'0');
end if;
-- set time the interrupt is low
if (interruptClkCount < 23) and (Qlocal = '1') then -- some instructions
need up to 23 cycles http://www.z80.info/interrup.htm
interruptGen <= '0';
else
interruptGen <= '1';
end if;
end if;
end process;
end rtl;
Hi Max and FPGA Multicomp users,
Many thanks for providing your ROM-MJS Max. I use Linux and I wasn't
looking forward to either trying to get Grant's Windows download software
working using Wine or writing my own equivalent. Your code makes getting a
working system much quicker and easier! Note that I am using your V0.1 code.
In the installation instructions it says that an interrupt controller is
required for MP/M. I have used the Microcomputer.zip and Components.zip
from here
http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=VHDL%20code
but I cannot see an interrupt controller in this code. Is the interrupt
controller somewhere else or are there newer versions of Microcomputer.zip
and Components.zip somewhere else?
To copy Max's disk image to an SDcard I used a PC without a hard disk
(just in case I made any mistakes with dd) and booted Puppy Linux from a
CD. I then used dd to copy the image from a USB stick to the 2GB SDcard. To
reformat the FAT32 partition I tried to use GParted but it maintained that
there was no partition table on the SDcard. I then read the Wikipedia page
on MBRs and loaded Max's disk image into a binary editor and looked at the
partition entries. The documentation says that the partitions are 8 MB each
but the MBR in the disk image says that partition 2 is 7D43H (32067dec)
sectors long or 16033.5 kB. Partitions 3 and 4 are 7D82H (32130dec) or
16065 kB. Somewhat confused by these results I decided to try using fdisk
on the SDcard. Fdisk reported that the total disk size in the MBR was
larger than the SDcard (this was probably what upset GParted). This could
also occur because not all "2GB" SDcards have the same number of available
sectors. I deleted partition 1 and then made a new one using the remaining
space on the card. GParted was now OK with the partition table and I
formatted partition 1 to FAT32.
I then followed the rest of Max's instructions and got a usable system
though, like the SDcard I made using Grant's method, it would sometimes
crash after printing "Booting CP/M 2.2". Thinking about these crashes I
remembered reading the note on Sergey's ParPortProp page for the V1.1 PCB
"Added C14 100 uF filter capacitor by SD card socket". I fitted a 220uF
capacitor between the 0V and 3.3V pads on the SDcard header pads. This
seems to have cured the intermittent crash on booting problem. Doing this
may help other people having problems with the SDcard. Just in case errors
had occurred during imaging I did re-run the image commands.
I then tried building my own SDcards using fdisk with 8MB and 16MB
partitions on 512MB SDcards. I will refer to these as 8MB or 16MB SDcards
from here on. Using fdisk I made partition 2 first, accepting the default
"leave 1 MB before it" (so it starts at sector 2048 - different from the
sector 63 start on Max's 2GB image), and specified the size as +8M and +16M
respectively. I then used the "t" command to make it a type 52 CP/M
partition. I repeated this process for partitions 3 and 4. Finally I made
partition 1 the rest of the disk and type 0b FAT32. GParted was used to
format the FAT32 partition. Note that the Linux fdisk command normally
prints the number of blocks in a partition using 1kB per block. In "expert"
mode the size is given in sectors.
I used dd to make a file of the MBR for each SDcard and then used the
binary editor to paste this over the MBR in Max's disk image. I then "dd"ed
the new images back to the SDcards and successfully booted into Max's
monitor program from each card. Using either of these SDcards the monitor
reliably crashes in the same fashion when using the image command after
printing "Image copy completed". For CP/M 2.2 and MP/M II imaging it
crashes and you have to use reset. For the CP/M 3 image it manages to crash
into the start code and prints "Extended Z80 Debug Monitor Version 0.3 by
Max Scane December 2014". This is 100% repeatable using either of the 8MB
or 16MB SDcards but does not occur using the MBR in Max's disk image.
The image command has probably worked correctly since CP/M 2.2 and CP/M 3
seem to be working OK when booted from the 8MB or 16MB cards but there is a
problem with MP/M II. Booting MP/M from Max's disk image works and the
"DIR" command when entered from the serial console (0A>) lists the
directory contents, but typing "DIR" on the second console (1A> which is
the VGA/PS2 on my machine) returns "DIR?". When MP/M is booted from either
of my 8MB or 16MB SDcards I get the "DIR?" response from entering "DIR" on
both consoles. Could it be that the MP/M problems are related to the lack
of an interrupt controller or has some part of the image process failed
when using the 8MB and 16MB disks?
I have attached the following files. "My512MBcard-8MBParts.txt",
"My512MBcard-16MBParts.txt" and "My2GBcardParts.txt" are partition table
printouts from fdisk for the 512MB disks I made with 8MB and 16MB
partitions along with that for Max's original disk image.
"fpga-session2GBcard.txt" is a capture of console output when using Max's
disk image and shows everything working correctly (I think).
"fpga-session-16MBParts.txt" is a capture of console output when using the
16MB partition SDcard and shows things going wrong including MP/M printing
"DIR?" right at the end. I have added comments to this file prefixed by
"*****".
"fpga-boot-test.zip" contains"fpga-boot-test-8MBParts.bin" and
"fpga-boot-test-16MBParts.bin" and are the disk images for the two 512MB
SDcards with 8MB and 16MB partitions respectively. Could some kind soul
please try putting these on an SDcard and see if they have the same
problems that I have (I could actually have a hardware problem)? Max, you
may be able to use them to find out why "image" crashes. These images can
be put on an SDcard larger than 512MB with the rest either unusable or the
FAT32 partition resized to the full capacity.
Thanks in advance for any assistance anyone can provide.
Cheers,
Ian.
Post by Max Scane
I have just posted an updated ZIP file which contains a bugfix to the
monitor.
There was a small problem where the monitor would hang after image
copying a file on a FAT16 file system.
This now works correctly and you can use FAT 16 or 32 for the FAT
partition. Thanks to Bo and Kip for spotting this one.
Note that it is very important to re-format the FAT partition once the
base OS has been copied to the SD card. This is because the three CP/M
partitions are inserted before the FAT partition and its starting address
on the disk is moved.
Max
Post by Max Scane
For those people experimenting with the Multicomp, I have uploaded a
http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=ROM-MJS
1. Extended debug monitor
2. CP/M 2 Disk image
3. CP/M 3 Disk Image
4 MP/M II Disk Image
The system boots from Grant's existing boot ROM so you don't have to
make any changes to the VHDL code. However, it does require a number of
extensions developed by James (eg, External RAM , MMU, Interrupts etc)
The base OS understands basic partition tables and supports 4 primary
partitions (type=52).
The disk images can be copied directly from the FAT partition (FAT 32)
to the destination partition which speeds up installation especially since
the Multicomp only has 1 disk.
Both CP/M 2 and 3 are partition independent so you can install them on
any partition but MP/M is tied to partition 4 for the time being.
You can install all or one OS as you please.
All the utilities work on CP/M 2, most on CP/M 3 and non on MP/M at the
moment.
There is a tool (FATDSK.COM) for file transfer between FAT volumes and
CP/M volumes and is supported on CP/M 2 and 3.
Documentation is sparse at the moment but there are some guides to help
installation. I will add more documentation when I get a chance.
Feedback is appreciated and I hope you have some fun!
Cheers!
Max
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
James Moxham
2015-01-02 23:30:32 UTC
Permalink
Hi Ian,

I've uploaded some files just now to the FPGA emulation folder, in the
VHDL folder. So there is the original microcontroller and components
folders, and the new ones with MPM_microcontroller and MPM_components.

This is a snapshot of my FPGA code as it is at the moment. I hope it all
makes sense!

Cheers, James
Post by Ian May
Hi James,
thanks for the interrupt code. I expect that the weirdness with MP/M is
because it is missing those interrupts every 20 ms :) I also do not
have the chip select code for controlling the interrupts either. Could
you possibly email it to me or tell me where I can download it? Could
you possibly consider updating the Components.zip and Microcomputer.zip
on the N8VEM FPGA web page with the required interrupt >code so that
future constructors can start with all the components that they will
need?
Cheers,
Ian.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
Ian May
2015-01-03 03:48:31 UTC
Permalink
Hi James,
Thanks for uploading you current code. I will give it a go.
Cheers,
Ian.
Post by James Moxham
Hi Ian,
I've uploaded some files just now to the FPGA emulation folder, in the
VHDL folder. So there is the original microcontroller and components
folders, and the new ones with MPM_microcontroller and MPM_components.
This is a snapshot of my FPGA code as it is at the moment. I hope it all
makes sense!
Cheers, James
Hi James,
thanks for the interrupt code. I expect that the weirdness with MP/M is
because it is missing those interrupts every 20 ms :) I also do not have
the chip select code for controlling the interrupts either. Could you
possibly email it to me or tell me where I can download it? Could you
possibly consider updating the Components.zip and Microcomputer.zip on the
N8VEM FPGA web page with the required interrupt code so that future
constructors can start with all the components that they will need?
Cheers,
Ian.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
Max Scane
2015-01-02 22:57:11 UTC
Permalink
This post might be inappropriate. Click to display it.
Ian May
2015-01-03 10:45:23 UTC
Permalink
Hi Max,
Thank you for your very comprehensive reply! I had not thought to look at
what was written on the card containing Grant's CP/M 2.2. When I did look
at it I saw that there are two jump instructions right at the start. I do
hope that Grant's boot loader does not start executing code from what was
byte zero of sector zero or else it will execute the MBR on a DOS partition
tabled card?

Your use of a standard partition table should (I think) allow the use of
cpmtools. I will have to build that from source since it is not in the
repository of the Linux distribution I mainly use.

I have been using the newer version of your code (ROM-MJS-4MC-V0.1.zip) so
I have either found a new way of crashing "image" or more likely the 6
month old version of the VHDL code that I was using probably has a few
problems. I will see what I get when I use the new code that James has
posted. I'm puzzled over the "set *.prl [sys,ro]" command. I'm sure I ran
it, and since I can't do anything with MP/M on the disks that I made it
must have been on the 2GB disk that is a clone of yours, but I just did it
again and now the VGA/PS2 console can "dir" (though MP/M crashed after
completing the "set" command). I barely know anything about MP/M so not
being able to use it isn't really a problem (and I can still use the 2GB
card).
Cheers,
Ian.
Post by James Moxham
Hi Ian,
Looks like you have been having some fun which is great.
MP/M can work OK without the interrupt code but is relies on each running
program making BDOS calls which causes the scheduler to suspend a program
and schedule any waiting tasks. If you had a process that consumed only
CPU other processes would not get to run. The periodic interrupt ensures
that the scheduler gets to run and manages time sharing.
To give you some background to what I have done, Grant's original CP/M
looked at the SD card as one large block of storage. It wasn't partition
aware and assumed it had full access to the disk. The boot ROM loaded CP/M
into RAM starting at LBA 0 and assumed it was 12KB in size.
Rather than make a large number of changes to Grant's boot code I decided
to build my monitor and drivers so that it replaced Grant's CP/M image on
disk.
So when you type X to boot CP/M you load 26 Logical blocks from the SD
card (0 -> 25) into high memory and the boot ROM passes control to my
loader and monitor.
Since the Multicomp only has one disk and I didn't want to mess with the
VHDL code for the boot ROM I needed to develop a method where a user could
simply copy a boot image to disk and boot a new monitor and then build CP/M
partitions straight from binary images on the FAT partition.
My code is partition aware (with one exception) and supports a standard
partition table.with up to 4 primary partitions.
I do take advantage of some empty space after LBA 0 for the remainder of
the boot code.
I based my solution around 2GB SD cards (SanDisk) as that was the smallest
I had.
You are correct that the CP/M partitions are actually larger than 8 MB as
the partition editor I used to create them wouldn't go that small.
However, the maximum disk size under CP/M 2 is 8MB and I don't use any
more than that for CP/M 3 or MP/M to remain compatible with CP/M 2.
To get things to work I needed to work around a couple of constraints.
1. Grant's boot code needs to load the boot code starting at LBA 0
2. Windows expects a FAT partition to be the first partition on the disk.
Fortunately, Windows doesn't mind if partition 1 has "unused" space before
it so I was able to take advantage of that and put the CP/M partitions
before it. Early versions of the monitor didn't have the image command so
I had to build the disk image manually and copy it to the disk.
To create a boot disk under Linux, there are a number of ways to do it but
1. Only primary partitions are supported
2. The FAT partition can be any size (fat 16 or 32) and can be located
anywhere on disk (subject to other constraints)
3. Partition type codes must match the file system. ie: .FAT16=06h, FAT
32=0bh
4 Leave some space after the MBR (LBA0) for the boot code
5. Skip the first 512 byres of fpga-boot.bin (my MBR) and write the rest
to LBA 1 onward.
There was a bug in the monitor that it would crash after an image copy if
you used FAT16 but I have fixed that and the fix is in the zip file on the
wiki.
Both CP/M 2.2 and 3 are fully partition aware and you can place them on
any primary partition anywhere on the disk. However, MP/M is not fully
partition aware. Currently the loader is partition aware but the XIOS is
hard coded with the partition start LBA. A number of people wanted to try
out MP/M and I ran out of time before XMAS. I will get that sorted out
soon.
With MP/M there is some post installation work (in mpm-II Install
guide.txt) that needs to be done to allow the second console to access the
system commands. MP/M uses user areas and the system files are in user 0
and need to be exposed to all users using the SYS attribute.
Note that your problem is probably due to the partition not being where
the XIOS expects it to be.
Thanks for the feedback, looks like I have more work to do :-)
I hope that this clarifies things for you.
Regards,
Max
Post by Ian May
Hi Max and FPGA Multicomp users,
Many thanks for providing your ROM-MJS Max. I use Linux and I wasn't
looking forward to either trying to get Grant's Windows download software
working using Wine or writing my own equivalent. Your code makes getting a
working system much quicker and easier! Note that I am using your V0.1 code.
In the installation instructions it says that an interrupt controller is
required for MP/M. I have used the Microcomputer.zip and Components.zip
from here
http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=VHDL%20code
but I cannot see an interrupt controller in this code. Is the interrupt
controller somewhere else or are there newer versions of Microcomputer.zip
and Components.zip somewhere else?
To copy Max's disk image to an SDcard I used a PC without a hard disk
(just in case I made any mistakes with dd) and booted Puppy Linux from a
CD. I then used dd to copy the image from a USB stick to the 2GB SDcard. To
reformat the FAT32 partition I tried to use GParted but it maintained that
there was no partition table on the SDcard. I then read the Wikipedia page
on MBRs and loaded Max's disk image into a binary editor and looked at the
partition entries. The documentation says that the partitions are 8 MB each
but the MBR in the disk image says that partition 2 is 7D43H (32067dec)
sectors long or 16033.5 kB. Partitions 3 and 4 are 7D82H (32130dec) or
16065 kB. Somewhat confused by these results I decided to try using fdisk
on the SDcard. Fdisk reported that the total disk size in the MBR was
larger than the SDcard (this was probably what upset GParted). This could
also occur because not all "2GB" SDcards have the same number of available
sectors. I deleted partition 1 and then made a new one using the remaining
space on the card. GParted was now OK with the partition table and I
formatted partition 1 to FAT32.
I then followed the rest of Max's instructions and got a usable system
though, like the SDcard I made using Grant's method, it would sometimes
crash after printing "Booting CP/M 2.2". Thinking about these crashes I
remembered reading the note on Sergey's ParPortProp page for the V1.1 PCB
"Added C14 100 uF filter capacitor by SD card socket". I fitted a 220uF
capacitor between the 0V and 3.3V pads on the SDcard header pads. This
seems to have cured the intermittent crash on booting problem. Doing this
may help other people having problems with the SDcard. Just in case errors
had occurred during imaging I did re-run the image commands.
I then tried building my own SDcards using fdisk with 8MB and 16MB
partitions on 512MB SDcards. I will refer to these as 8MB or 16MB SDcards
from here on. Using fdisk I made partition 2 first, accepting the default
"leave 1 MB before it" (so it starts at sector 2048 - different from the
sector 63 start on Max's 2GB image), and specified the size as +8M and +16M
respectively. I then used the "t" command to make it a type 52 CP/M
partition. I repeated this process for partitions 3 and 4. Finally I made
partition 1 the rest of the disk and type 0b FAT32. GParted was used to
format the FAT32 partition. Note that the Linux fdisk command normally
prints the number of blocks in a partition using 1kB per block. In "expert"
mode the size is given in sectors.
I used dd to make a file of the MBR for each SDcard and then used the
binary editor to paste this over the MBR in Max's disk image. I then "dd"ed
the new images back to the SDcards and successfully booted into Max's
monitor program from each card. Using either of these SDcards the monitor
reliably crashes in the same fashion when using the image command after
printing "Image copy completed". For CP/M 2.2 and MP/M II imaging it
crashes and you have to use reset. For the CP/M 3 image it manages to crash
into the start code and prints "Extended Z80 Debug Monitor Version 0.3 by
Max Scane December 2014". This is 100% repeatable using either of the 8MB
or 16MB SDcards but does not occur using the MBR in Max's disk image.
The image command has probably worked correctly since CP/M 2.2 and CP/M 3
seem to be working OK when booted from the 8MB or 16MB cards but there is a
problem with MP/M II. Booting MP/M from Max's disk image works and the
"DIR" command when entered from the serial console (0A>) lists the
directory contents, but typing "DIR" on the second console (1A> which is
the VGA/PS2 on my machine) returns "DIR?". When MP/M is booted from either
of my 8MB or 16MB SDcards I get the "DIR?" response from entering "DIR" on
both consoles. Could it be that the MP/M problems are related to the lack
of an interrupt controller or has some part of the image process failed
when using the 8MB and 16MB disks?
I have attached the following files. "My512MBcard-8MBParts.txt",
"My512MBcard-16MBParts.txt" and "My2GBcardParts.txt" are partition table
printouts from fdisk for the 512MB disks I made with 8MB and 16MB
partitions along with that for Max's original disk image.
"fpga-session2GBcard.txt" is a capture of console output when using Max's
disk image and shows everything working correctly (I think).
"fpga-session-16MBParts.txt" is a capture of console output when using the
16MB partition SDcard and shows things going wrong including MP/M printing
"DIR?" right at the end. I have added comments to this file prefixed by
"*****".
"fpga-boot-test.zip" contains"fpga-boot-test-8MBParts.bin" and
"fpga-boot-test-16MBParts.bin" and are the disk images for the two 512MB
SDcards with 8MB and 16MB partitions respectively. Could some kind soul
please try putting these on an SDcard and see if they have the same
problems that I have (I could actually have a hardware problem)? Max, you
may be able to use them to find out why "image" crashes. These images can
be put on an SDcard larger than 512MB with the rest either unusable or the
FAT32 partition resized to the full capacity.
Thanks in advance for any assistance anyone can provide.
Cheers,
Ian.
Post by Max Scane
I have just posted an updated ZIP file which contains a bugfix to the
monitor.
There was a small problem where the monitor would hang after image
copying a file on a FAT16 file system.
This now works correctly and you can use FAT 16 or 32 for the FAT
partition. Thanks to Bo and Kip for spotting this one.
Note that it is very important to re-format the FAT partition once the
base OS has been copied to the SD card. This is because the three CP/M
partitions are inserted before the FAT partition and its starting address
on the disk is moved.
Max
Post by Max Scane
For those people experimenting with the Multicomp, I have uploaded a
http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=ROM-MJS
1. Extended debug monitor
2. CP/M 2 Disk image
3. CP/M 3 Disk Image
4 MP/M II Disk Image
The system boots from Grant's existing boot ROM so you don't have to
make any changes to the VHDL code. However, it does require a number of
extensions developed by James (eg, External RAM , MMU, Interrupts etc)
The base OS understands basic partition tables and supports 4 primary
partitions (type=52).
The disk images can be copied directly from the FAT partition (FAT 32)
to the destination partition which speeds up installation especially since
the Multicomp only has 1 disk.
Both CP/M 2 and 3 are partition independent so you can install them on
any partition but MP/M is tied to partition 4 for the time being.
You can install all or one OS as you please.
All the utilities work on CP/M 2, most on CP/M 3 and non on MP/M at the
moment.
There is a tool (FATDSK.COM) for file transfer between FAT volumes and
CP/M volumes and is supported on CP/M 2 and 3.
Documentation is sparse at the moment but there are some guides to help
installation. I will add more documentation when I get a chance.
Feedback is appreciated and I hope you have some fun!
Cheers!
Max
--
You received this message because you are subscribed to the Google
Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
Max Scane
2015-01-03 11:14:32 UTC
Permalink
Hi Ian,

Fortunately, Grant's code actually uses the last two bytes of the the 12KB
file as a vector to the start of executable code so you can specify the
starting address.

You will definitely need James' latest code for MP/M as it implements the
MMU and interrupts.

Here is the disk definition you will need for cpmtools:

diskdef 0,0,255,0,4096,2040,512,0,1 ; Standard 8 MB disk
partition
056B+= DPB0 EQU $ ;DISK PARM BLOCK
056B+0001 DW 256 ;SEC PER TRACK
056D+05 DB 5 ;BLOCK SHIFT
056E+1F DB 31 ;BLOCK MASK
056F+01 DB 1 ;EXTNT MASK
0570+F707 DW 2039 ;DISK SIZE-1
0572+FF01 DW 511 ;DIRECTORY MAX
0574+F0 DB 240 ;ALLOC0
0575+00 DB 0 ;ALLOC1
0576+0000 DW 0 ;CHECK SIZE
0578+0100 DW 1 ;OFFSET


I haven't used it for a long time but I am using the original N8VEM disk
format so I'm sure others have.

Cheers!

Max
Post by Martin Lukasek
Hi Max,
Thank you for your very comprehensive reply! I had not thought to look at
what was written on the card containing Grant's CP/M 2.2. When I did look
at it I saw that there are two jump instructions right at the start. I do
hope that Grant's boot loader does not start executing code from what was
byte zero of sector zero or else it will execute the MBR on a DOS partition
tabled card?
Your use of a standard partition table should (I think) allow the use of
cpmtools. I will have to build that from source since it is not in the
repository of the Linux distribution I mainly use.
I have been using the newer version of your code (ROM-MJS-4MC-V0.1.zip) so
I have either found a new way of crashing "image" or more likely the 6
month old version of the VHDL code that I was using probably has a few
problems. I will see what I get when I use the new code that James has
posted. I'm puzzled over the "set *.prl [sys,ro]" command. I'm sure I ran
it, and since I can't do anything with MP/M on the disks that I made it
must have been on the 2GB disk that is a clone of yours, but I just did it
again and now the VGA/PS2 console can "dir" (though MP/M crashed after
completing the "set" command). I barely know anything about MP/M so not
being able to use it isn't really a problem (and I can still use the 2GB
card).
Cheers,
Ian.
Post by James Moxham
Hi Ian,
Looks like you have been having some fun which is great.
MP/M can work OK without the interrupt code but is relies on each running
program making BDOS calls which causes the scheduler to suspend a program
and schedule any waiting tasks. If you had a process that consumed only
CPU other processes would not get to run. The periodic interrupt ensures
that the scheduler gets to run and manages time sharing.
To give you some background to what I have done, Grant's original CP/M
looked at the SD card as one large block of storage. It wasn't partition
aware and assumed it had full access to the disk. The boot ROM loaded CP/M
into RAM starting at LBA 0 and assumed it was 12KB in size.
Rather than make a large number of changes to Grant's boot code I decided
to build my monitor and drivers so that it replaced Grant's CP/M image on
disk.
So when you type X to boot CP/M you load 26 Logical blocks from the SD
card (0 -> 25) into high memory and the boot ROM passes control to my
loader and monitor.
Since the Multicomp only has one disk and I didn't want to mess with the
VHDL code for the boot ROM I needed to develop a method where a user could
simply copy a boot image to disk and boot a new monitor and then build CP/M
partitions straight from binary images on the FAT partition.
My code is partition aware (with one exception) and supports a standard
partition table.with up to 4 primary partitions.
I do take advantage of some empty space after LBA 0 for the remainder of
the boot code.
I based my solution around 2GB SD cards (SanDisk) as that was the
smallest I had.
You are correct that the CP/M partitions are actually larger than 8 MB as
the partition editor I used to create them wouldn't go that small.
However, the maximum disk size under CP/M 2 is 8MB and I don't use any
more than that for CP/M 3 or MP/M to remain compatible with CP/M 2.
To get things to work I needed to work around a couple of constraints.
1. Grant's boot code needs to load the boot code starting at LBA 0
2. Windows expects a FAT partition to be the first partition on the disk.
Fortunately, Windows doesn't mind if partition 1 has "unused" space
before it so I was able to take advantage of that and put the CP/M
partitions before it. Early versions of the monitor didn't have the image
command so I had to build the disk image manually and copy it to the disk.
To create a boot disk under Linux, there are a number of ways to do it
1. Only primary partitions are supported
2. The FAT partition can be any size (fat 16 or 32) and can be located
anywhere on disk (subject to other constraints)
3. Partition type codes must match the file system. ie: .FAT16=06h, FAT
32=0bh
4 Leave some space after the MBR (LBA0) for the boot code
5. Skip the first 512 byres of fpga-boot.bin (my MBR) and write the rest
to LBA 1 onward.
There was a bug in the monitor that it would crash after an image copy if
you used FAT16 but I have fixed that and the fix is in the zip file on the
wiki.
Both CP/M 2.2 and 3 are fully partition aware and you can place them on
any primary partition anywhere on the disk. However, MP/M is not fully
partition aware. Currently the loader is partition aware but the XIOS is
hard coded with the partition start LBA. A number of people wanted to try
out MP/M and I ran out of time before XMAS. I will get that sorted out
soon.
With MP/M there is some post installation work (in mpm-II Install
guide.txt) that needs to be done to allow the second console to access the
system commands. MP/M uses user areas and the system files are in user 0
and need to be exposed to all users using the SYS attribute.
Note that your problem is probably due to the partition not being where
the XIOS expects it to be.
Thanks for the feedback, looks like I have more work to do :-)
I hope that this clarifies things for you.
Regards,
Max
Post by Ian May
Hi Max and FPGA Multicomp users,
Many thanks for providing your ROM-MJS Max. I use Linux and I wasn't
looking forward to either trying to get Grant's Windows download software
working using Wine or writing my own equivalent. Your code makes getting a
working system much quicker and easier! Note that I am using your V0.1 code.
In the installation instructions it says that an interrupt controller is
required for MP/M. I have used the Microcomputer.zip and Components.zip
from here
http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=VHDL%20code
but I cannot see an interrupt controller in this code. Is the interrupt
controller somewhere else or are there newer versions of Microcomputer.zip
and Components.zip somewhere else?
To copy Max's disk image to an SDcard I used a PC without a hard disk
(just in case I made any mistakes with dd) and booted Puppy Linux from a
CD. I then used dd to copy the image from a USB stick to the 2GB SDcard. To
reformat the FAT32 partition I tried to use GParted but it maintained that
there was no partition table on the SDcard. I then read the Wikipedia page
on MBRs and loaded Max's disk image into a binary editor and looked at the
partition entries. The documentation says that the partitions are 8 MB each
but the MBR in the disk image says that partition 2 is 7D43H (32067dec)
sectors long or 16033.5 kB. Partitions 3 and 4 are 7D82H (32130dec) or
16065 kB. Somewhat confused by these results I decided to try using fdisk
on the SDcard. Fdisk reported that the total disk size in the MBR was
larger than the SDcard (this was probably what upset GParted). This could
also occur because not all "2GB" SDcards have the same number of available
sectors. I deleted partition 1 and then made a new one using the remaining
space on the card. GParted was now OK with the partition table and I
formatted partition 1 to FAT32.
I then followed the rest of Max's instructions and got a usable system
though, like the SDcard I made using Grant's method, it would sometimes
crash after printing "Booting CP/M 2.2". Thinking about these crashes I
remembered reading the note on Sergey's ParPortProp page for the V1.1 PCB
"Added C14 100 uF filter capacitor by SD card socket". I fitted a 220uF
capacitor between the 0V and 3.3V pads on the SDcard header pads. This
seems to have cured the intermittent crash on booting problem. Doing this
may help other people having problems with the SDcard. Just in case errors
had occurred during imaging I did re-run the image commands.
I then tried building my own SDcards using fdisk with 8MB and 16MB
partitions on 512MB SDcards. I will refer to these as 8MB or 16MB SDcards
from here on. Using fdisk I made partition 2 first, accepting the default
"leave 1 MB before it" (so it starts at sector 2048 - different from the
sector 63 start on Max's 2GB image), and specified the size as +8M and +16M
respectively. I then used the "t" command to make it a type 52 CP/M
partition. I repeated this process for partitions 3 and 4. Finally I made
partition 1 the rest of the disk and type 0b FAT32. GParted was used to
format the FAT32 partition. Note that the Linux fdisk command normally
prints the number of blocks in a partition using 1kB per block. In "expert"
mode the size is given in sectors.
I used dd to make a file of the MBR for each SDcard and then used the
binary editor to paste this over the MBR in Max's disk image. I then "dd"ed
the new images back to the SDcards and successfully booted into Max's
monitor program from each card. Using either of these SDcards the monitor
reliably crashes in the same fashion when using the image command after
printing "Image copy completed". For CP/M 2.2 and MP/M II imaging it
crashes and you have to use reset. For the CP/M 3 image it manages to crash
into the start code and prints "Extended Z80 Debug Monitor Version 0.3 by
Max Scane December 2014". This is 100% repeatable using either of the 8MB
or 16MB SDcards but does not occur using the MBR in Max's disk image.
The image command has probably worked correctly since CP/M 2.2 and CP/M
3 seem to be working OK when booted from the 8MB or 16MB cards but there is
a problem with MP/M II. Booting MP/M from Max's disk image works and the
"DIR" command when entered from the serial console (0A>) lists the
directory contents, but typing "DIR" on the second console (1A> which is
the VGA/PS2 on my machine) returns "DIR?". When MP/M is booted from either
of my 8MB or 16MB SDcards I get the "DIR?" response from entering "DIR" on
both consoles. Could it be that the MP/M problems are related to the lack
of an interrupt controller or has some part of the image process failed
when using the 8MB and 16MB disks?
I have attached the following files. "My512MBcard-8MBParts.txt",
"My512MBcard-16MBParts.txt" and "My2GBcardParts.txt" are partition table
printouts from fdisk for the 512MB disks I made with 8MB and 16MB
partitions along with that for Max's original disk image.
"fpga-session2GBcard.txt" is a capture of console output when using Max's
disk image and shows everything working correctly (I think).
"fpga-session-16MBParts.txt" is a capture of console output when using the
16MB partition SDcard and shows things going wrong including MP/M printing
"DIR?" right at the end. I have added comments to this file prefixed by
"*****".
"fpga-boot-test.zip" contains"fpga-boot-test-8MBParts.bin" and
"fpga-boot-test-16MBParts.bin" and are the disk images for the two 512MB
SDcards with 8MB and 16MB partitions respectively. Could some kind soul
please try putting these on an SDcard and see if they have the same
problems that I have (I could actually have a hardware problem)? Max, you
may be able to use them to find out why "image" crashes. These images can
be put on an SDcard larger than 512MB with the rest either unusable or the
FAT32 partition resized to the full capacity.
Thanks in advance for any assistance anyone can provide.
Cheers,
Ian.
Post by Max Scane
I have just posted an updated ZIP file which contains a bugfix to the
monitor.
There was a small problem where the monitor would hang after image
copying a file on a FAT16 file system.
This now works correctly and you can use FAT 16 or 32 for the FAT
partition. Thanks to Bo and Kip for spotting this one.
Note that it is very important to re-format the FAT partition once the
base OS has been copied to the SD card. This is because the three CP/M
partitions are inserted before the FAT partition and its starting address
on the disk is moved.
Max
Post by Max Scane
For those people experimenting with the Multicomp, I have uploaded a
http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=ROM-MJS
1. Extended debug monitor
2. CP/M 2 Disk image
3. CP/M 3 Disk Image
4 MP/M II Disk Image
The system boots from Grant's existing boot ROM so you don't have to
make any changes to the VHDL code. However, it does require a number of
extensions developed by James (eg, External RAM , MMU, Interrupts etc)
The base OS understands basic partition tables and supports 4 primary
partitions (type=52).
The disk images can be copied directly from the FAT partition (FAT 32)
to the destination partition which speeds up installation especially since
the Multicomp only has 1 disk.
Both CP/M 2 and 3 are partition independent so you can install them on
any partition but MP/M is tied to partition 4 for the time being.
You can install all or one OS as you please.
All the utilities work on CP/M 2, most on CP/M 3 and non on MP/M at
the moment.
There is a tool (FATDSK.COM) for file transfer between FAT volumes
and CP/M volumes and is supported on CP/M 2 and 3.
Documentation is sparse at the moment but there are some guides to
help installation. I will add more documentation when I get a chance.
Feedback is appreciated and I hope you have some fun!
Cheers!
Max
--
You received this message because you are subscribed to the Google
Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google
Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
Ian May
2015-01-05 13:58:24 UTC
Permalink
Hi Max,
Thanks for the disk details. I was hoping to reply that I had everything
working with cpmtools but I have not had a change to get back to it. Using
James' newer VHDL has given me a working MP/M II system using your disk
image so I have made some progress.
Cheers,
Ian.
Post by James Moxham
Hi Ian,
Fortunately, Grant's code actually uses the last two bytes of the the 12KB
file as a vector to the start of executable code so you can specify the
starting address.
You will definitely need James' latest code for MP/M as it implements the
MMU and interrupts.
diskdef 0,0,255,0,4096,2040,512,0,1 ; Standard 8 MB disk
partition
056B+= DPB0 EQU $ ;DISK PARM BLOCK
056B+0001 DW 256 ;SEC PER TRACK
056D+05 DB 5 ;BLOCK SHIFT
056E+1F DB 31 ;BLOCK MASK
056F+01 DB 1 ;EXTNT MASK
0570+F707 DW 2039 ;DISK SIZE-1
0572+FF01 DW 511 ;DIRECTORY MAX
0574+F0 DB 240 ;ALLOC0
0575+00 DB 0 ;ALLOC1
0576+0000 DW 0 ;CHECK SIZE
0578+0100 DW 1 ;OFFSET
I haven't used it for a long time but I am using the original N8VEM disk
format so I'm sure others have.
Cheers!
Max
Post by Martin Lukasek
Hi Max,
Thank you for your very comprehensive reply! I had not thought to look at
what was written on the card containing Grant's CP/M 2.2. When I did look
at it I saw that there are two jump instructions right at the start. I do
hope that Grant's boot loader does not start executing code from what was
byte zero of sector zero or else it will execute the MBR on a DOS partition
tabled card?
Your use of a standard partition table should (I think) allow the use of
cpmtools. I will have to build that from source since it is not in the
repository of the Linux distribution I mainly use.
I have been using the newer version of your code (ROM-MJS-4MC-V0.1.zip)
so I have either found a new way of crashing "image" or more likely the 6
month old version of the VHDL code that I was using probably has a few
problems. I will see what I get when I use the new code that James has
posted. I'm puzzled over the "set *.prl [sys,ro]" command. I'm sure I ran
it, and since I can't do anything with MP/M on the disks that I made it
must have been on the 2GB disk that is a clone of yours, but I just did it
again and now the VGA/PS2 console can "dir" (though MP/M crashed after
completing the "set" command). I barely know anything about MP/M so not
being able to use it isn't really a problem (and I can still use the 2GB
card).
Cheers,
Ian.
Post by James Moxham
Hi Ian,
Looks like you have been having some fun which is great.
MP/M can work OK without the interrupt code but is relies on each
running program making BDOS calls which causes the scheduler to suspend a
program and schedule any waiting tasks. If you had a process that consumed
only CPU other processes would not get to run. The periodic interrupt
ensures that the scheduler gets to run and manages time sharing.
To give you some background to what I have done, Grant's original CP/M
looked at the SD card as one large block of storage. It wasn't partition
aware and assumed it had full access to the disk. The boot ROM loaded CP/M
into RAM starting at LBA 0 and assumed it was 12KB in size.
Rather than make a large number of changes to Grant's boot code I
decided to build my monitor and drivers so that it replaced Grant's CP/M
image on disk.
So when you type X to boot CP/M you load 26 Logical blocks from the SD
card (0 -> 25) into high memory and the boot ROM passes control to my
loader and monitor.
Since the Multicomp only has one disk and I didn't want to mess with the
VHDL code for the boot ROM I needed to develop a method where a user could
simply copy a boot image to disk and boot a new monitor and then build CP/M
partitions straight from binary images on the FAT partition.
My code is partition aware (with one exception) and supports a standard
partition table.with up to 4 primary partitions.
I do take advantage of some empty space after LBA 0 for the remainder of
the boot code.
I based my solution around 2GB SD cards (SanDisk) as that was the
smallest I had.
You are correct that the CP/M partitions are actually larger than 8 MB
as the partition editor I used to create them wouldn't go that small.
However, the maximum disk size under CP/M 2 is 8MB and I don't use any
more than that for CP/M 3 or MP/M to remain compatible with CP/M 2.
To get things to work I needed to work around a couple of constraints.
1. Grant's boot code needs to load the boot code starting at LBA 0
2. Windows expects a FAT partition to be the first partition on the disk.
Fortunately, Windows doesn't mind if partition 1 has "unused" space
before it so I was able to take advantage of that and put the CP/M
partitions before it. Early versions of the monitor didn't have the image
command so I had to build the disk image manually and copy it to the disk.
To create a boot disk under Linux, there are a number of ways to do it
1. Only primary partitions are supported
2. The FAT partition can be any size (fat 16 or 32) and can be located
anywhere on disk (subject to other constraints)
3. Partition type codes must match the file system. ie: .FAT16=06h, FAT
32=0bh
4 Leave some space after the MBR (LBA0) for the boot code
5. Skip the first 512 byres of fpga-boot.bin (my MBR) and write the rest
to LBA 1 onward.
There was a bug in the monitor that it would crash after an image copy
if you used FAT16 but I have fixed that and the fix is in the zip file on
the wiki.
Both CP/M 2.2 and 3 are fully partition aware and you can place them on
any primary partition anywhere on the disk. However, MP/M is not fully
partition aware. Currently the loader is partition aware but the XIOS is
hard coded with the partition start LBA. A number of people wanted to try
out MP/M and I ran out of time before XMAS. I will get that sorted out
soon.
With MP/M there is some post installation work (in mpm-II Install
guide.txt) that needs to be done to allow the second console to access the
system commands. MP/M uses user areas and the system files are in user 0
and need to be exposed to all users using the SYS attribute.
Note that your problem is probably due to the partition not being where
the XIOS expects it to be.
Thanks for the feedback, looks like I have more work to do :-)
I hope that this clarifies things for you.
Regards,
Max
Post by Ian May
Hi Max and FPGA Multicomp users,
Many thanks for providing your ROM-MJS Max. I use Linux and I wasn't
looking forward to either trying to get Grant's Windows download software
working using Wine or writing my own equivalent. Your code makes getting a
working system much quicker and easier! Note that I am using your V0.1 code.
In the installation instructions it says that an interrupt controller
is required for MP/M. I have used the Microcomputer.zip and Components.zip
from here
http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=VHDL%20code
but I cannot see an interrupt controller in this code. Is the interrupt
controller somewhere else or are there newer versions of Microcomputer.zip
and Components.zip somewhere else?
To copy Max's disk image to an SDcard I used a PC without a hard disk
(just in case I made any mistakes with dd) and booted Puppy Linux from a
CD. I then used dd to copy the image from a USB stick to the 2GB SDcard. To
reformat the FAT32 partition I tried to use GParted but it maintained that
there was no partition table on the SDcard. I then read the Wikipedia page
on MBRs and loaded Max's disk image into a binary editor and looked at the
partition entries. The documentation says that the partitions are 8 MB each
but the MBR in the disk image says that partition 2 is 7D43H (32067dec)
sectors long or 16033.5 kB. Partitions 3 and 4 are 7D82H (32130dec) or
16065 kB. Somewhat confused by these results I decided to try using fdisk
on the SDcard. Fdisk reported that the total disk size in the MBR was
larger than the SDcard (this was probably what upset GParted). This could
also occur because not all "2GB" SDcards have the same number of available
sectors. I deleted partition 1 and then made a new one using the remaining
space on the card. GParted was now OK with the partition table and I
formatted partition 1 to FAT32.
I then followed the rest of Max's instructions and got a usable system
though, like the SDcard I made using Grant's method, it would sometimes
crash after printing "Booting CP/M 2.2". Thinking about these crashes I
remembered reading the note on Sergey's ParPortProp page for the V1.1 PCB
"Added C14 100 uF filter capacitor by SD card socket". I fitted a 220uF
capacitor between the 0V and 3.3V pads on the SDcard header pads. This
seems to have cured the intermittent crash on booting problem. Doing this
may help other people having problems with the SDcard. Just in case errors
had occurred during imaging I did re-run the image commands.
I then tried building my own SDcards using fdisk with 8MB and 16MB
partitions on 512MB SDcards. I will refer to these as 8MB or 16MB SDcards
from here on. Using fdisk I made partition 2 first, accepting the default
"leave 1 MB before it" (so it starts at sector 2048 - different from the
sector 63 start on Max's 2GB image), and specified the size as +8M and +16M
respectively. I then used the "t" command to make it a type 52 CP/M
partition. I repeated this process for partitions 3 and 4. Finally I made
partition 1 the rest of the disk and type 0b FAT32. GParted was used to
format the FAT32 partition. Note that the Linux fdisk command normally
prints the number of blocks in a partition using 1kB per block. In "expert"
mode the size is given in sectors.
I used dd to make a file of the MBR for each SDcard and then used the
binary editor to paste this over the MBR in Max's disk image. I then "dd"ed
the new images back to the SDcards and successfully booted into Max's
monitor program from each card. Using either of these SDcards the monitor
reliably crashes in the same fashion when using the image command after
printing "Image copy completed". For CP/M 2.2 and MP/M II imaging it
crashes and you have to use reset. For the CP/M 3 image it manages to crash
into the start code and prints "Extended Z80 Debug Monitor Version 0.3 by
Max Scane December 2014". This is 100% repeatable using either of the 8MB
or 16MB SDcards but does not occur using the MBR in Max's disk image.
The image command has probably worked correctly since CP/M 2.2 and CP/M
3 seem to be working OK when booted from the 8MB or 16MB cards but there is
a problem with MP/M II. Booting MP/M from Max's disk image works and the
"DIR" command when entered from the serial console (0A>) lists the
directory contents, but typing "DIR" on the second console (1A> which is
the VGA/PS2 on my machine) returns "DIR?". When MP/M is booted from either
of my 8MB or 16MB SDcards I get the "DIR?" response from entering "DIR" on
both consoles. Could it be that the MP/M problems are related to the lack
of an interrupt controller or has some part of the image process failed
when using the 8MB and 16MB disks?
I have attached the following files. "My512MBcard-8MBParts.txt",
"My512MBcard-16MBParts.txt" and "My2GBcardParts.txt" are partition table
printouts from fdisk for the 512MB disks I made with 8MB and 16MB
partitions along with that for Max's original disk image.
"fpga-session2GBcard.txt" is a capture of console output when using Max's
disk image and shows everything working correctly (I think).
"fpga-session-16MBParts.txt" is a capture of console output when using the
16MB partition SDcard and shows things going wrong including MP/M printing
"DIR?" right at the end. I have added comments to this file prefixed by
"*****".
"fpga-boot-test.zip" contains"fpga-boot-test-8MBParts.bin" and
"fpga-boot-test-16MBParts.bin" and are the disk images for the two 512MB
SDcards with 8MB and 16MB partitions respectively. Could some kind soul
please try putting these on an SDcard and see if they have the same
problems that I have (I could actually have a hardware problem)? Max, you
may be able to use them to find out why "image" crashes. These images can
be put on an SDcard larger than 512MB with the rest either unusable or the
FAT32 partition resized to the full capacity.
Thanks in advance for any assistance anyone can provide.
Cheers,
Ian.
Post by Max Scane
I have just posted an updated ZIP file which contains a bugfix to the
monitor.
There was a small problem where the monitor would hang after image
copying a file on a FAT16 file system.
This now works correctly and you can use FAT 16 or 32 for the FAT
partition. Thanks to Bo and Kip for spotting this one.
Note that it is very important to re-format the FAT partition once the
base OS has been copied to the SD card. This is because the three CP/M
partitions are inserted before the FAT partition and its starting address
on the disk is moved.
Max
Post by Max Scane
For those people experimenting with the Multicomp, I have uploaded a
http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=ROM-MJS
1. Extended debug monitor
2. CP/M 2 Disk image
3. CP/M 3 Disk Image
4 MP/M II Disk Image
The system boots from Grant's existing boot ROM so you don't have to
make any changes to the VHDL code. However, it does require a number of
extensions developed by James (eg, External RAM , MMU, Interrupts etc)
The base OS understands basic partition tables and supports 4 primary
partitions (type=52).
The disk images can be copied directly from the FAT partition (FAT
32) to the destination partition which speeds up installation especially
since the Multicomp only has 1 disk.
Both CP/M 2 and 3 are partition independent so you can install them
on any partition but MP/M is tied to partition 4 for the time being.
You can install all or one OS as you please.
All the utilities work on CP/M 2, most on CP/M 3 and non on MP/M at
the moment.
There is a tool (FATDSK.COM) for file transfer between FAT volumes
and CP/M volumes and is supported on CP/M 2 and 3.
Documentation is sparse at the moment but there are some guides to
help installation. I will add more documentation when I get a chance.
Feedback is appreciated and I hope you have some fun!
Cheers!
Max
--
You received this message because you are subscribed to the Google
Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google
Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google
Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
Max Scane
2015-01-13 11:09:35 UTC
Permalink
Thanks for all the feedback, I have just posted update 2 of ROM-MJS for the
Multicomp
.
This release contains the following changes:

Fixed bug in image command that caused a hang after completion of an image
copy.
FAT32 and FAT16 image copies now work correctly.

Fixed a bug in dump command. You can now specify start address. Press ESC
to exit at pause

Default boot now works. Monitor Will boot first CP/M partition marked as
bootable.

MP/M is now partition aware and can be installed on any partition.

I still have lots more to do.

Cheers!

Max
Post by Martin Lukasek
Hi Max,
Thanks for the disk details. I was hoping to reply that I had everything
working with cpmtools but I have not had a change to get back to it. Using
James' newer VHDL has given me a working MP/M II system using your disk
image so I have made some progress.
Cheers,
Ian.
Post by James Moxham
Hi Ian,
Fortunately, Grant's code actually uses the last two bytes of the the
12KB file as a vector to the start of executable code so you can specify
the starting address.
You will definitely need James' latest code for MP/M as it implements the
MMU and interrupts.
diskdef 0,0,255,0,4096,2040,512,0,1 ; Standard 8 MB disk
partition
056B+= DPB0 EQU $ ;DISK PARM BLOCK
056B+0001 DW 256 ;SEC PER TRACK
056D+05 DB 5 ;BLOCK SHIFT
056E+1F DB 31 ;BLOCK MASK
056F+01 DB 1 ;EXTNT MASK
0570+F707 DW 2039 ;DISK SIZE-1
0572+FF01 DW 511 ;DIRECTORY MAX
0574+F0 DB 240 ;ALLOC0
0575+00 DB 0 ;ALLOC1
0576+0000 DW 0 ;CHECK SIZE
0578+0100 DW 1 ;OFFSET
I haven't used it for a long time but I am using the original N8VEM disk
format so I'm sure others have.
Cheers!
Max
Post by Martin Lukasek
Hi Max,
Thank you for your very comprehensive reply! I had not thought to look
at what was written on the card containing Grant's CP/M 2.2. When I did
look at it I saw that there are two jump instructions right at the start. I
do hope that Grant's boot loader does not start executing code from what
was byte zero of sector zero or else it will execute the MBR on a DOS
partition tabled card?
Your use of a standard partition table should (I think) allow the use of
cpmtools. I will have to build that from source since it is not in the
repository of the Linux distribution I mainly use.
I have been using the newer version of your code (ROM-MJS-4MC-V0.1.zip)
so I have either found a new way of crashing "image" or more likely the 6
month old version of the VHDL code that I was using probably has a few
problems. I will see what I get when I use the new code that James has
posted. I'm puzzled over the "set *.prl [sys,ro]" command. I'm sure I ran
it, and since I can't do anything with MP/M on the disks that I made it
must have been on the 2GB disk that is a clone of yours, but I just did it
again and now the VGA/PS2 console can "dir" (though MP/M crashed after
completing the "set" command). I barely know anything about MP/M so not
being able to use it isn't really a problem (and I can still use the 2GB
card).
Cheers,
Ian.
Post by James Moxham
Hi Ian,
Looks like you have been having some fun which is great.
MP/M can work OK without the interrupt code but is relies on each
running program making BDOS calls which causes the scheduler to suspend a
program and schedule any waiting tasks. If you had a process that consumed
only CPU other processes would not get to run. The periodic interrupt
ensures that the scheduler gets to run and manages time sharing.
To give you some background to what I have done, Grant's original CP/M
looked at the SD card as one large block of storage. It wasn't partition
aware and assumed it had full access to the disk. The boot ROM loaded CP/M
into RAM starting at LBA 0 and assumed it was 12KB in size.
Rather than make a large number of changes to Grant's boot code I
decided to build my monitor and drivers so that it replaced Grant's CP/M
image on disk.
So when you type X to boot CP/M you load 26 Logical blocks from the SD
card (0 -> 25) into high memory and the boot ROM passes control to my
loader and monitor.
Since the Multicomp only has one disk and I didn't want to mess with
the VHDL code for the boot ROM I needed to develop a method where a user
could simply copy a boot image to disk and boot a new monitor and then
build CP/M partitions straight from binary images on the FAT partition.
My code is partition aware (with one exception) and supports a standard
partition table.with up to 4 primary partitions.
I do take advantage of some empty space after LBA 0 for the remainder
of the boot code.
I based my solution around 2GB SD cards (SanDisk) as that was the
smallest I had.
You are correct that the CP/M partitions are actually larger than 8 MB
as the partition editor I used to create them wouldn't go that small.
However, the maximum disk size under CP/M 2 is 8MB and I don't use any
more than that for CP/M 3 or MP/M to remain compatible with CP/M 2.
To get things to work I needed to work around a couple of constraints.
1. Grant's boot code needs to load the boot code starting at LBA 0
2. Windows expects a FAT partition to be the first partition on the disk.
Fortunately, Windows doesn't mind if partition 1 has "unused" space
before it so I was able to take advantage of that and put the CP/M
partitions before it. Early versions of the monitor didn't have the image
command so I had to build the disk image manually and copy it to the disk.
To create a boot disk under Linux, there are a number of ways to do it
1. Only primary partitions are supported
2. The FAT partition can be any size (fat 16 or 32) and can be located
anywhere on disk (subject to other constraints)
3. Partition type codes must match the file system. ie: .FAT16=06h, FAT
32=0bh
4 Leave some space after the MBR (LBA0) for the boot code
5. Skip the first 512 byres of fpga-boot.bin (my MBR) and write the
rest to LBA 1 onward.
There was a bug in the monitor that it would crash after an image copy
if you used FAT16 but I have fixed that and the fix is in the zip file on
the wiki.
Both CP/M 2.2 and 3 are fully partition aware and you can place them on
any primary partition anywhere on the disk. However, MP/M is not fully
partition aware. Currently the loader is partition aware but the XIOS is
hard coded with the partition start LBA. A number of people wanted to try
out MP/M and I ran out of time before XMAS. I will get that sorted out
soon.
With MP/M there is some post installation work (in mpm-II Install
guide.txt) that needs to be done to allow the second console to access the
system commands. MP/M uses user areas and the system files are in user 0
and need to be exposed to all users using the SYS attribute.
Note that your problem is probably due to the partition not being where
the XIOS expects it to be.
Thanks for the feedback, looks like I have more work to do :-)
I hope that this clarifies things for you.
Regards,
Max
Post by Ian May
Hi Max and FPGA Multicomp users,
Many thanks for providing your ROM-MJS Max. I use Linux and I wasn't
looking forward to either trying to get Grant's Windows download software
working using Wine or writing my own equivalent. Your code makes getting a
working system much quicker and easier! Note that I am using your V0.1 code.
In the installation instructions it says that an interrupt controller
is required for MP/M. I have used the Microcomputer.zip and Components.zip
from here
http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=VHDL%20code
but I cannot see an interrupt controller in this code. Is the interrupt
controller somewhere else or are there newer versions of Microcomputer.zip
and Components.zip somewhere else?
To copy Max's disk image to an SDcard I used a PC without a hard disk
(just in case I made any mistakes with dd) and booted Puppy Linux from a
CD. I then used dd to copy the image from a USB stick to the 2GB SDcard. To
reformat the FAT32 partition I tried to use GParted but it maintained that
there was no partition table on the SDcard. I then read the Wikipedia page
on MBRs and loaded Max's disk image into a binary editor and looked at the
partition entries. The documentation says that the partitions are 8 MB each
but the MBR in the disk image says that partition 2 is 7D43H (32067dec)
sectors long or 16033.5 kB. Partitions 3 and 4 are 7D82H (32130dec) or
16065 kB. Somewhat confused by these results I decided to try using fdisk
on the SDcard. Fdisk reported that the total disk size in the MBR was
larger than the SDcard (this was probably what upset GParted). This could
also occur because not all "2GB" SDcards have the same number of available
sectors. I deleted partition 1 and then made a new one using the remaining
space on the card. GParted was now OK with the partition table and I
formatted partition 1 to FAT32.
I then followed the rest of Max's instructions and got a usable system
though, like the SDcard I made using Grant's method, it would sometimes
crash after printing "Booting CP/M 2.2". Thinking about these crashes I
remembered reading the note on Sergey's ParPortProp page for the V1.1 PCB
"Added C14 100 uF filter capacitor by SD card socket". I fitted a 220uF
capacitor between the 0V and 3.3V pads on the SDcard header pads. This
seems to have cured the intermittent crash on booting problem. Doing this
may help other people having problems with the SDcard. Just in case errors
had occurred during imaging I did re-run the image commands.
I then tried building my own SDcards using fdisk with 8MB and 16MB
partitions on 512MB SDcards. I will refer to these as 8MB or 16MB SDcards
from here on. Using fdisk I made partition 2 first, accepting the default
"leave 1 MB before it" (so it starts at sector 2048 - different from the
sector 63 start on Max's 2GB image), and specified the size as +8M and +16M
respectively. I then used the "t" command to make it a type 52 CP/M
partition. I repeated this process for partitions 3 and 4. Finally I made
partition 1 the rest of the disk and type 0b FAT32. GParted was used to
format the FAT32 partition. Note that the Linux fdisk command normally
prints the number of blocks in a partition using 1kB per block. In "expert"
mode the size is given in sectors.
I used dd to make a file of the MBR for each SDcard and then used the
binary editor to paste this over the MBR in Max's disk image. I then "dd"ed
the new images back to the SDcards and successfully booted into Max's
monitor program from each card. Using either of these SDcards the monitor
reliably crashes in the same fashion when using the image command after
printing "Image copy completed". For CP/M 2.2 and MP/M II imaging it
crashes and you have to use reset. For the CP/M 3 image it manages to crash
into the start code and prints "Extended Z80 Debug Monitor Version 0.3 by
Max Scane December 2014". This is 100% repeatable using either of the 8MB
or 16MB SDcards but does not occur using the MBR in Max's disk image.
The image command has probably worked correctly since CP/M 2.2 and
CP/M 3 seem to be working OK when booted from the 8MB or 16MB cards but
there is a problem with MP/M II. Booting MP/M from Max's disk image works
and the "DIR" command when entered from the serial console (0A>) lists the
directory contents, but typing "DIR" on the second console (1A> which is
the VGA/PS2 on my machine) returns "DIR?". When MP/M is booted from either
of my 8MB or 16MB SDcards I get the "DIR?" response from entering "DIR" on
both consoles. Could it be that the MP/M problems are related to the lack
of an interrupt controller or has some part of the image process failed
when using the 8MB and 16MB disks?
I have attached the following files. "My512MBcard-8MBParts.txt",
"My512MBcard-16MBParts.txt" and "My2GBcardParts.txt" are partition table
printouts from fdisk for the 512MB disks I made with 8MB and 16MB
partitions along with that for Max's original disk image.
"fpga-session2GBcard.txt" is a capture of console output when using Max's
disk image and shows everything working correctly (I think).
"fpga-session-16MBParts.txt" is a capture of console output when using the
16MB partition SDcard and shows things going wrong including MP/M printing
"DIR?" right at the end. I have added comments to this file prefixed by
"*****".
"fpga-boot-test.zip" contains"fpga-boot-test-8MBParts.bin" and
"fpga-boot-test-16MBParts.bin" and are the disk images for the two 512MB
SDcards with 8MB and 16MB partitions respectively. Could some kind soul
please try putting these on an SDcard and see if they have the same
problems that I have (I could actually have a hardware problem)? Max, you
may be able to use them to find out why "image" crashes. These images can
be put on an SDcard larger than 512MB with the rest either unusable or the
FAT32 partition resized to the full capacity.
Thanks in advance for any assistance anyone can provide.
Cheers,
Ian.
Post by Max Scane
I have just posted an updated ZIP file which contains a bugfix to the
monitor.
There was a small problem where the monitor would hang after image
copying a file on a FAT16 file system.
This now works correctly and you can use FAT 16 or 32 for the FAT
partition. Thanks to Bo and Kip for spotting this one.
Note that it is very important to re-format the FAT partition once
the base OS has been copied to the SD card. This is because the three CP/M
partitions are inserted before the FAT partition and its starting address
on the disk is moved.
Max
Post by Max Scane
For those people experimenting with the Multicomp, I have uploaded a
http://n8vem-sbc.pbworks.com/w/browse/#view=ViewFolder&param=ROM-MJS
1. Extended debug monitor
2. CP/M 2 Disk image
3. CP/M 3 Disk Image
4 MP/M II Disk Image
The system boots from Grant's existing boot ROM so you don't have to
make any changes to the VHDL code. However, it does require a number of
extensions developed by James (eg, External RAM , MMU, Interrupts etc)
The base OS understands basic partition tables and supports 4
primary partitions (type=52).
The disk images can be copied directly from the FAT partition (FAT
32) to the destination partition which speeds up installation especially
since the Multicomp only has 1 disk.
Both CP/M 2 and 3 are partition independent so you can install them
on any partition but MP/M is tied to partition 4 for the time being.
You can install all or one OS as you please.
All the utilities work on CP/M 2, most on CP/M 3 and non on MP/M at
the moment.
There is a tool (FATDSK.COM) for file transfer between FAT volumes
and CP/M volumes and is supported on CP/M 2 and 3.
Documentation is sparse at the moment but there are some guides to
help installation. I will add more documentation when I get a chance.
Feedback is appreciated and I hope you have some fun!
Cheers!
Max
--
You received this message because you are subscribed to the Google
Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it,
<javascript:>.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google
Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send
<javascript:>.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google
Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send
<javascript:>.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google
Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send
<javascript:>.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an
.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
Ian May
2015-01-22 09:10:13 UTC
Permalink
Hi Max,
I finally got time to test out version 0.2 and everything worked perfectly!
I used dd to copy your new image to a 512MB card, then used fdisk to remove
your partition table and then make a new one with three 8MB CP/M partitions
and a FAT32 partition that used the rest of the card. The image command
installed all the images without any problems and MP/M is working fine.
Cheers,
Ian.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
Max Scane
2015-01-22 19:35:38 UTC
Permalink
Hi Ian, good to hear it is working for you.

Cheers!

Max

Sent from my iPhone
Post by Martin Lukasek
Hi Max,
I finally got time to test out version 0.2 and everything worked perfectly! I used dd to copy your new image to a 512MB card, then used fdisk to remove your partition table and then make a new one with three 8MB CP/M partitions and a FAT32 partition that used the rest of the card. The image command installed all the images without any problems and MP/M is working fine.
Cheers,
Ian.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/d/optout.
Loading...