Table of Contents
Tiny68K - Rev 2 (with 68010)
As a long term Amiga user I've always had a soft spot for 68000 based machines.
With thanks to Philip Summers I obtained a blank PCB within a few days, and one weekend later I had a working machine.
Thanks to Bill Shen for creating and releasing the design and for providing instructions on how to prepare a CompactFlash (CF) card for CP/M-68K!
CP/M-68K with the 68010
The Tiny68K is a great target board for running CP/M-68K. With my Tiny68K build, I decided to use a Motorola 68010 as that is what I had available to me.
The 68010 is pin compatible with the 68000 and mostly binary compatible except for some minor differences. One of the main differences is that the “MOVE from SR” instruction is privileged versus the 68000.
The default CP/M-68K V1.3 image as provided by Bill Chen in his CF preparation procedure will boot with no problem on the 68010, however many programs crash due to a privilege violation.
If you run for example “CB68 ASCIIART” with a 68010 you will experience a privilege violation and the program “CB68” will crash.
CP/M-68K V1.3 does support the 68010 and includes an exception handler which “dynamically changes “MOVE from SR” instructions to the non-privileged “MOVE from CCR” instruction” (taken from README.TXT in CP/M-68K distribution disk set).
To use a 68010 with CP/M-68K a re-build of the CP/M-68K CCP and BDOS is required.
Re-building CP/M-68K for the 68010
To re-build CP/M-68K for the 68010 you will initially require a 68000. If you do not have a 68000 available, then you will be unable to complete steps 6-7 as the programs SENDC68 and GKERMIT will crash due to the previously mentioned privilege violation. In this case, jump straight to step 9 and use the pre-built CPM15000-010.S68. A link to the pre-built file is provided after step 9.
1. Install initially a 68000 CPU on your Tiny68K and prepare a CF card as described here.
2. Test that the machine boots to CP/M-68K correctly.
3. Before you can re-build the BDOS and CCP, you require a small code stub so that the BIOS symbol “_init” is defined.
Using “ED” or “ME” (MicroEMACS), create a file named “TBIOS.S” with the following two lines of code:
_init: .equ $1B000
(The _init entry point of the Tiny68K BIOS as provided by Bill Chen begins at 0x1B000).
4. Save the file “TBIOS.S” and execute the following two commands:
as68 -i as68init
as68 -L tbios.s tbios.o
(The first line initialises the assembler. The second line assembles the BIOS stub code).
5. Execute the following command:
lo68 -t15000 -o cpm15000.bin -ucpm -um68010 cpmlib tbios.o 0:clib
(This line produces a CPM15000.BIN file containing the CCP and BDOS. An non-relocatable (absolute) binary is generated, located at address 0x15000).
6. Execute the following command:
sendc68 - CPM15000.BIN > CPM15000-010.S68
(The above line converts the CPM15000.BIN file to a Motorola S-Record file, and saves it to CPM-15000-010.S68).
7. Use either “GKERMIT” to transfer, or simply “TYPE CPM15000-010.S68” to dump the contents of the file CPM-15000-010.S68 to the terminal, copy the text from the terminal and save it to a file on your PC.
8. Install a 68010 CPU on your Tiny68K board
9. You now have a CP/M-68K BDOS and CCP for the 68010 CPU. Re-write this new binary to your CF card as described in the first few steps here.
After writing and booting CP/M-68K you should be able to run “CB68 ASCIIART” and other programs with no crash
Pre-prepared CP/M-68K binary for the 68010
If you'd rather not re-build CP/M-68K for the 68010, or you're running into problems, you can download a pre-prepared CPM15000-010.S68 file.
Write this file and the TinyBIOS to your CF card as described here.
CP/M-68K with the 68020/68030
A 68020/68030 CPU also treats the “MOVE from SR” instruction as a privileged instruction. This leads to the same program crashes as for the 68010 CPU. It has been reported that the above described instructions will also solve this issue when running CP/M-68K on a 68020/68030.
A picture of my Tiny68K with 68010 CPU is shown below.
Note that the CPU was most likely re-marked by counterfeiters in Asia (date code is invalid) so the speed rating is probably false (this is the most common reason for re-marking), but it seems to work fine at the low clock speeds that I am using.