[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [N8VEM-S100:4241] Re: A windows based program to write a CPM3 image to a CF card for the S100 IDE board

This is just getting the image set up - once that is done people in general won't have to touch it - I think it is more of a cpmldr problem than image problem as the disk editors I have say all the sectors are in the right place - this will be pretty easy once all the details are worked out.   I used this to create my original image with holes in it so I know it will work - it is getting all the pieces in the right place - need to clean up some things as well - no need to have multiple copies of files for banked and non-banked when we are  using a macro assembler - (need to put ifdefs in and get the process much simpler).

Yea of little faith :)


On Monday, June 16, 2014 9:20:49 PM UTC-5, monahanz wrote:

I suppose! If you are having problems however Dave I wonder !




From: n8ve...@googlegroups.com [mailto:n8vem...@googlegroups.com] On Behalf Of yoda
Sent: Monday, June 16, 2014 6:43 PM
To: n8ve...@googlegroups.com
Cc: mon...@vitasoft.org
Subject: Re: [N8VEM-S100:4241] Re: A windows based program to write a CPM3 image to a CF card for the S100 IDE board


I think the easiest way to do this is either make 2 image files - one for serial and one for propeller.  They can copy that to a CF card and get going.  It will also allow them to take the image and add more files with cpmtools.  Let's say for example they have a bunch of .com files they would like to add, then they would put all the .com files in a directory with the image file say it is called s100ide.dsk, then they would do a cpmcfs -f s100ide  s100ide.dsk *.COM 0:  - that will copy all the .com files to the image and then they write the image to the CF card and now they have all the new files available.


This will be easy to do - I will write up once I get it all to work - still having issues.




On Monday, June 16, 2014 8:13:56 PM UTC-5, monahanz wrote:

OK, just thinking out loud again!   I’m trying to get to the simplest possible bootable system for a real beginner.  I know it’s obvious to many of us how to use various image tools etc.  What I’m trying to get to,  is for a person to simply pop a CF card into our IDE board, reset, and up comes CPM3.   What are the minimum hurdles he/she has to go through to do that.   Think back, to the first time you did this stuff.


When you think about it the only variable initially is the console I/O.  If you go with our Propeller driven board then  that’s even not a big variable since it has all kinds of status in/out jumper options.    I  realize it’s not for everybody, some like true serial etc.


How about this:-

We make a CPM3 CF card for a 2 disk system, non-banked, basic system (console I/O only).   It contains CPM3.SYS, CCP.COM, PIP and a few other essentials. The only thing special about this  “one-of” CF card is that the sector/location on the card of the console I/O routine is flagged by a unique string of bytes, say 20 should do it.  All one has to do then,  is “one time only”  locate where this string is on the CF card and either with a MDOS program hand insert the few bytes required to set the console In/Out port (Z80 C register) number and status bits or at a higher level write a C type program to do so.    The CPM BIOS only has one location of Console IO, actually 2 outputs, one input, with the loader,  but it should be easy to do.


Such a CF card we can supply to real beginners.  They would be airborne immediately.






From: n8ve...@googlegroups.com [mailto:n8vem...@googlegroups.com] On Behalf Of yoda
Sent: Monday, June 16, 2014 2:52 PM
To: n8ve...@googlegroups.com
Cc: yo...@r2d2.org; mon...@vitasoft.org
Subject: Re: [N8VEM-S100:4234] Re: A windows based program to write a CPM3 image to a CF card for the S100 IDE board


Once we have the cpmtools working correctly it is much easier to build the complete image or even modify it on the PC.  You can use cpmcp to copy any file you want into the image.  Then for the Windoze people you can use an open source utility like Windd to copy the disk image to the CF.  You don't have to mess around with Xmodem or MSDOS partitions, etc.  It is really simple.  And your solution does not address how to get things on the B drive.   I will write this up when I have it working and the users can decide whether it is simple enough - it is very similar to what is done on the N8VEM branch of this group and it has worked well.



On Monday, June 16, 2014 4:33:03 PM UTC-5, monahanz wrote:

How about we split the problem into two parts.


First (using the Altair Simulator) we make a file that contains all the sectors needed to boot up a non-banked basic CPM system.  The console I/O can be done by “poking” a few bytes into the image that contains the status & data ports, the mask and value of bit(s) when for when a character is at the keyboard (likewise for ready to display on console). That’s it. This was the way old CPM programs did it for things like XMODEM etc.   The “image” need only contain the CPM3.SYS  and CCP.COM files as well.  Other files can be on the B: drive and can be passed around freely, loaded into RAM, saved, whatever.    This core “program” can be tested by people that have their IDE/CPM system up and running.  Let’s not get hung up on the holes issue. As I said the only reason I had holes was because I wanted my initial CPM.SYS to work with a Seagate Hard disk and the CF cards.  That said I do seem to remember some of these CF cards had different track/sector numbers.  Have to think about that! 


The second step is (under windows) writing  the data to a blank CF card.  There are a couple of ways this could be done.  It could be a MSDOS second partition way inside the CF card away from CPM and the monitor picks it off (one time only) from there and a CPM SYSGEN like program writes a traditional disk. Or alternatively a windows based program (probably C based) just forces the data on to a blank formatted disk.  Remember CPM formatted sectors are different from MSDOS ones.  CPM uses 0’s,  DOS uses E5’s or something like that.


In this day and age there are probably a number of ways to do the second step.  We can call in one of the MSDOS Google Groups if need be.






From: yoda [mailto:yo...@r2d2.org]
Sent: Monday, June 16, 2014 2:00 PM
To: n8ve...@googlegroups.com
Cc: mon...@vitasoft.org
Subject: Re: [N8VEM-S100:4226] Re: A windows based program to write a CPM3 image to a CF card for the S100 IDE board




Sorry that is not my goal.  I think building the 2 files with altairz80 is straight forward enough.  It is building the image for CP/M that is generally difficult especially if you want a set of working files on the disk.  It was virtually impossible with the holes in the disk which I think we may now have solved.  If you want to have a cpmldr and cpm3.sys for serial and propeller then say copy one set to cpmldr.com and cpm3.sys we can make that very easy.  It is not quite as simple as you think of poking bytes (if you need to initialize the serial I/O port for example).  The current ROMs don't need to be modified because they will load the first 12 sectors in memory and go (no holes involved for track 0).



On Monday, June 16, 2014 3:42:21 PM UTC-5, monahanz wrote:

Guys, remember in the end we need an idiot proof windows program that will prepare a CF disk prepared on a windows PC that asks for only the console status & data port, status bit true/false and boots up a non-banked CPM3 (with say, 60K of RAM)  when the first sector is placed in RAM at 80H by a monitor (or by hand).   I volunteer to be the idiot tester!




From: n8ve...@googlegroups.com [mailto:n8vem...@googlegroups.com] On Behalf Of yoda
Sent: Monday, June 16, 2014 12:44 PM
To: n8ve...@googlegroups.com
Subject: [N8VEM-S100:4226] Re: A windows based program to write a CPM3 image to a CF card for the S100 IDE board


Hi David


Looks like progress - Yes it should be a BANKED CPM image.  I will try again tonight with your debug CPMLDR - I have not been able to get as far as you have.  Is your LBA routine now with the -1 or not?.


I will look at my files again and make sure they are setup for banked - though I had just re-downloaded John's file for banked version and changed to use serial I/O and added your writelba routine.  I did not check if all the variables were set right.



On Monday, June 16, 2014 2:18:47 PM UTC-5, David Fry wrote:

Hi Dave,


currently looking at your disk image, layout looks fine.

I have placed your image onto a CF card and over wrote your CPMLDR.COM with one of mine that logs the sectors read to the screen for troubleshooting.

I can see the directory is read as sector 40H and CPM3.SYS starts to load starting at sector 80H and loads 35 sectors in total matching the directory entry of 9 allocation units.


I have a question, the screenshot below would seen to suggest that this image is a 'BANKED' cpm image, yet your HLDRBIOS.ASM has the Banked variable set to 'false', which is it ?


next question, have you added the LBA section in HIDE.ASM for CPM3.SYS and removed the offset correction ?




David Fry
On Sunday, June 15, 2014 1:46:12 AM UTC+1, yoda wrote:

Hi David


Had too many diskdefs and there was one in the directory where I was doing things with the wrong format.  The dummy.file I had created by dd 512 bytes from a text file so that is why it was confusing so I made one with just e5 bytes in it.  I tried to remove the dec 1 instruction but still no working.  I still get a BDOS Err, Perm.  when it jumps to LBA 0x40.  Here is the new disk and HLDRBIOS.ASM - see if you can figure out what is wrong or how to load it.  If we can get this disk to load and work - it is really simple to make these and you can load whatever you want on them.



On Saturday, June 14, 2014 4:36:04 PM UTC-5, David Fry wrote:



had a quick look at the disk image you uploaded and noted a couple of things

1) sector 0 seems to contain text notes with the start of CPMLDR.COM beginning at sector 1 as the first byte is 31H as you would expect.


2) the directory table entries seem to start at sector 61 ?? and not at sector 64 where we would expect track 1 to start.


A couple of thoughts, if the position of CPMLDR.COM is correct then we can take out the -1 sector correction from the LBA routine and move all the sectors up one position leaving sector 0 blank, this will also have the effect of moving the directory table upto sector 40H where you expected to see it (and in hindsight I agree)


whats puzzling me at the moment is why is the directory table in sector 61 when you created the image with 64 sec/trk.


does cpmtools support 64 sector/track ? is seems to have set the image to 61 sectors/track




David Fry


On Saturday, June 14, 2014 9:35:29 PM UTC+1, yoda wrote:

Sorry for previous  - web posted before I was ready


The diskdefs are:


diskdef s100ide

     seclen 512

     tracks  256

     sectrck 64

     blocksize 2048

     skew    0

     boottrk 1


I think the problem is the -1 but I am not sure - Track 1 sector 1 should be 0x40 not 0x3F but I am not sure - tried commenting out the dec 1 but that did not seem to help either.  I have included my hldrbios.asm as well



On Saturday, June 14, 2014 2:13:22 PM UTC-5, David Fry wrote:

Hi Dave,


thats right on a 64 sector border, this may be where my -1 or +1 sector correction may be wrong.




David Fry
On Saturday, June 14, 2014 8:00:09 PM UTC+1, yoda wrote:

Hi David


Sounds like a plan.  I have made one and when it boots with debug CPMLDR.COM reads LBA 3F and 40 then stops - that is where I am at.  Let me dig up an image and  I will post here for you to look - at - think it is pretty close



On Saturday, June 14, 2014 1:48:33 PM UTC-5, David Fry wrote:

Hi Dave,


If we can get the 'No holes' CF card layout to be compliant with cpmtool then that has to be the way to go as it will make life much easier.

As I said in a previous post, I welcome this 'no holes' lba to be picked apart to get it right before we go too far down the road and find problems later.


I'm a little busy at the moment with various other aspects of my S100 system with the little time I have to spend on it,(summer is coming after all :-) )

If you can knock together a quick image with a CPMLDR.COM and CPM3.SYS (doesnt matter what system it's for) then we could take a look to see how the layout differs.

My layout was derived from where CPMLDR was looking to find data.




David Fry
On Saturday, June 14, 2014 7:30:00 PM UTC+1, yoda wrote:

why not take a look at the cpmtools set.  It has a program called mkfs.cpm that will make a file as a cpm filesystem.  You can specify a boot image which it will lay down in the boot sectors.  You can then use cpmcp to copy files to the cpm filesystem.  Then you can take the file and write it block by block to the CF card.  I did this originally to get my system up and running.  I actually used dd (a utility on linux or Mac) to write it to the CF.  I actually wrote a little script to take the file image and add the "holes" back in so it would work with your BIOS.  I went back and tried it with the no hole version and had some difficulties that I have not straightened out yet.  I don't know if I did something wrong or David Fry's LBA routine is not doing what I thought it did.  I have not gone back and investigated yet but with David's help we can probably probably get this resolved.  The procedure  would go like this:


1) mkfs.cpm -f s100ide -b dummy.file -b CPMLDR.COM s100.dsk


where s100ide is an entry in diskdefs that specifies the geometry of the drive

dummy.file is a 512 byte empty file to get CPMLDR.COM to be in the correct sector start.

s100.dsk is the file that represent the disk image.

2) cpmcp -f s100ide s100.dsk CPM3.SYS 0:

    cpmcp -f s100ide s100.dsk <cpm file> 0:     copies <cpm file> to user area 0 on disk image

    continue until you have all the files you want on the disk


3) use a disk image write tool (dd on Linux or Mac) to write s100.dsk to CF card


Here is a link to the cpmtools:  http://www.moria.de/~michael/cpmtools/   These tools run on Windoze for those that use that OS and easily compiled for Mac or Linux.


This is the way I am building my images for CP/M 68K that I am currently working on.


I think getting the diskdefs set write and a good writeLBA routine and we should be able to get the procedure down.



On Saturday, June 14, 2014 11:31:49 AM UTC-5, monahanz wrote:

Guys, it’s great to see all the progress and uptake this simple little IDE board has generated.  Thomas in particular congratulations on putting so much time and effort into “hammering into shape” the process for first time installs.  It helps tremendously but I think it will still be difficult for some people to do.   We all should remember how it was when we first started!


I’m wondering if somebody out there could spend the time writing a PC/MSDOS based program to setup a CF card for first time users.  If we agree the IDE board ports start at 30H, the only variable would be the console I/O.  This could be either spliced into the final disk image with the above program (leaving room in the base code with NOP’s) or by answering a Q&A session and inserting code like the old XMODEM programs did.  A CF card is laid down as Dave describes and is checked out. Once the image is laid down it can be dumped sector for sector any  CF card (no holes of course).  The image can even include a few CPM programs.  Probably best to start with a non-banked CPM3 image.  This program would run on a standard PC, format the CF card and write the image sector by sector.  Not sure if Windows 7,8 allows you to do that easily but there must be a way.


This would allow anybody not as sophisticated as some of us, to get going right away and allow them to write more elaborate CPM3.SYS files that include a FDC, printer etc. in the BIOS for their own hardware.

I think something like this would be a tremendous asset for first time S100 users.