DtZ, Y82 MAPA3M Research, XEPb.org Presents
Note: note the russian spelling of "blya-blya-blya!"
20140924 - SHDC support and new release (2491)
20140904 - new relase (2490)
20140320 - Some minor text clean ups
20140316 - I suspect a stack overflow. Use ChB or enlarge stack in monitor.asm (There was no; another problem fixed)
20140210 - error on scheme found (pins 3 and 1 of UM1:1 was wrong; now corrected on scheme)
20130620 Last software update release 2360
Preface
This is SD card interface for
Grant Searle's CP/M computer. Originally it has CF interface.
Note: in earlier versions of the scheme UM1:2 5 and UM1:1 2 was connected to U5:13. Corrected. (Now on Pin 14)
Fotos here
Licence
I use some code from Grant Searle.
I have his permission to redistribute this software as part of my work. So the licence should be
like that:
The parts of the software written by Grant Searle is written by Grant Searle or was got
by Grant Searle I-do-not-know-where-and-ask-him;
The code written by DtZ should be treated as public domain with the following limitation:
- -no part of this code, or the whole code may be licenced or patented on any territory or worldwide,
or limited by other legal way
- -DtZ may use this software according any different licence, but that may not affect or limit other
users of the released software
Current limitations
First, it works with some UPD 201409: most! SD cards.
Versions before 2491 did not work with SDHC. Still nothing is
known about SDXC cards, but I suspect they will not work.
So, for cards are more then 4G you should use SDHC version (read more).
It (non-SDHC version) may work with MMC, or may not, I've not tested
If you use cards less then 128M, you will
be able to work only with the first disks - saying from A: to C:.
Hotplug is not supported and I believe never will be
Making bootable SD card
Compiling under linux (and generally unix, I've tried MacOSX 10.4/ppc too):
if you do not want to compile, skip to here
First, get tpasm http://www.sqrt.com/ ftp://ftp.ct0.com/pub/tpasm.tgz
(or check my site - I probably have a mirror)
Next, install (or check you have installed) TCL, 8.3 and later is ok, maybe 8.2, I do not remember if 8.1 ok. I
use it as a part of linking tools (mload.tcl ), or you may rewrite it the way you like.
You may want to link C000 based system or CE00 based one.
The clear thing is that CE00 system gives you more TPA. From the other point, if you want to
rebuild system on board, you may want to use C000 one.
The trick is that C000 based system occupies first 16K (so starts from track 0/sector 0);
CE00 system starts with E00 unused bytes. That's generally not a feature, but bug I'll
fix sometimes later.
cd BIOS
./MakeBIOS_CE00
or, for SDHC,
cd BIOS
./MakeBIOS_SDHC_CE00
You'll get cbios_CE00.hex (replace CE00 to C000 if you want C000 based
system; add _SDHC for SDHC version)
and labels.lst
Check labels.lst for you have exceeded 64k. hstBufEnd must be less FF00.
If not, you have to lower TPA (that may happen if you modified cbios.asm for some your's needs).
If you have 48k TPA currently (C000 system) and exceeded 64k, you are in BIG trouble (that's not possible
if you did not modifed BIOS heavily)
Next, compile CP/M by MakeCPM_CE00 , you'll get cpm22_CE00.hex
Clear thing is that SDHC version of CP/M is exactly the same as non SDHC -
CP/M does not know anything about that ;-)
Next, create system by ./createimage_CE00
(or ./createimage_SDHC_CE00 ) , you'll get image.img .
It takes some time. It takes significant time on MacOSX 10.4 @ iBook G3/500 !
Making boot media
Then insert your's SD card in reader, find it as /dev/sdX,
be very carefull, because if you write this to your's boot drive, you'll make it unusable.
Became root and write filesystem to SD (~16M)
dd if=notempty.img of=/dev/sdX
Next, write the system to the first track of SD
dd if=image.img of=/dev/sdX
Select image with SDHC in name if you write to SDHC cards and image with no SDHC
if you are writing to SD card
The distribution may contain different system images (C000 and CE00 to name), number probably indicates TPA,
D means debug, avoid it if you no not need debug.
Booting and loader
You have two options: either burn an rom image (or rebuild it and burn) or use a loader.
If you are using a loader, start your's SBC, locate some loader.hex
in distribution set and paste it into terminal window, then
G5000 it.
I provide an ROM image, it's included scince 2360 release as rom.img , you can burn it.
To compile stand-alone loader, goto Loader_and_ROM, run MakeLoader or MakeLoaderDebug
To compile ROM image, first compile (optional) BASIC by MakeBasic , then MakeMonitor , then
createROM - you'll get 32k of rom.img , burn it.
Implementation notes
The implementation is delivered from Grant Searle work, so it shares almost everything.
Scince 2340 is it based on IOBYTE aware SG's BIOS 1.0
Scince 2690 it appears to work
In Grant's CF BIOS, system is loaded from offset 0 of CF card - it takes $3000 bytes of $4000 bytes of the
whole track-0 - to $D000 - $FFFF memory locations.
In my SD BIOS I load the whole $4000 bytes from track-0, but it does not mean
the system always should be $4000 bytes - it may be shorter, saying $3000 bytes system should start from $1000
offset of SD card (as I said before)
And yes, in non-C000 based systems that's not possible to regenerate CP/M inside CP/M; I'll fix it
later
CPMTOOLS Defs for disk A: of those image:
diskdef sga
seclen 512
tracks 512
sectrk 32
blocksize 4096
maxdir 512
boottrk 1
os 2.2
end
On Solaris/Sparc I access the disk as
/usr/local/bin/cpmls -f sga /vol/dev/dsk/c2t0d0/unknown_format
,
on Linux just as /dev/sdb
Feedback
Use http://z80xxi.blogspot.com/ for feedback
Distribution set
Distribution set naming
sgsbcsdYYMV.tar.gz
sgsbcsd is the name of the project, YY is decimal years from 1990 (as for all DtZ's software), M
is [1-b] month,V is [0-9a-z] release of the file
20141119
Warning: a serious bug found: it addresses disk in wrong manner, saying B: is the same disk
as F:, and C: is G:. That affects only SDHC version.
(Quickfix: CPM/BIOS/sd/setLBAaddrSDHC.asm, line 79: comment out 'and 3')
20140929
Warning: a bug discovered. MakeMonitor script has DTZNOSDHC
defined, so included rom.img contains no SDHC code. Recompiling it will
generate a working rom.img. Will be fixed in forthcoming maintaining release.
20140925
0.00.04 / 2491
sgsbcsd2491.tar.gz
Version with (optional) SDHC support
20140904
0.00.03 / 2490
sgsbcsd2490.tar.gz Huge error fix
20140316
Those old versions contained a bug making ChA of SIO fully useless
sgsbcsd2360.tar.gz ROM image included 0.00.02 / 2360
sgsbcsd2340.tar.gz Sync with Searle Grants' 1.0 release
0.00.02 / 2340
sgsbcsd2323.tar.gz Relink release 0.00.01 / 2323
CE00/55046 TPA version relink release (and read this )
and minor changes in loader
For assemling use BIOS/MakeBDOS_CE00 , next MakeCPM_CE00 , next createimage_CE00
sgsbcsd2322.tar.gz Bugfix release 0.00.01 / 2322
Notice: 20130204 looks like error caught, wait for bugfix release
Notice: bugfix release sgsbcsd2322.tar.gz is expected 20130203-20130205
Notice: looks like it have errors in current and fothcoming release ;-) on write block (and possibly warm boot)
- if you use debug version of system you may help
sgsbcsd2321.tar.gz Initial release 0.00.01 / 2321
|