Thursday Jan 17, 2013

FireBee Diary 2: from MC68000 to ColdFire

To get volksForth running on the FireBee, the machine code instructions that are available on the MC68000, but not in the ColdFire CPU need to be replaced with a series of instructions that perform the same action.

I found the "Digger V8" dissassembler on Heenk Robbers webpage along with the AHCC C-Compiler. The Digger is able to disassemble both ColdFire and MC68000, and it can switch between the two CPU types with a simple switch. Finding instructions that cannot be executed on the ColdFire is now only a matter of switching the CPU type and watching the assembler code change.

The Digger package also contains a list of all M68000 assembler instructions, with information on the instructions available on each CPU type (MC68000, MC68020, MC68030, ColdFire …).

I made the table below as a quick look-up tool to find MC68000 instructions that need replacement on the ColdFire (this table is still work in progress, the column "workaround" will be filled while I work on the ColdFire porting project):

Opcodepossible workaroundDescription
ori -> ccrOR immediate to CCR
ori -> srOR immediate to Status Register
andi -> ccrAND immediate to CCR
andi -> srAND immediate to Status Register
eori -> ccrEOR immediate to CCR
eori -> srEOR immediate to Status Register
movepMove peripheral data
trapvTrap on Overflow
rtrReturn and restore condition codes
chk.wCheck register against bounds
dbccTest condition, decrement and branch
sbcd Dx,DySubtract decimal with extend
sbcd -(Ax),-(Ay)Subtract decimal with extend
suba.wSubtract address
subx -(Ax),-(Ay)Subtract extended
lineaLINE-A access
abcd Dx,DyAdd decimal with extend
abcd -(Ax),-(Ay)Exchange registers
exg Dx,DyExchange registers
exg Ax,AyExchange registers
exg Dx,AyExchange registers
adda.wAdd address
addx -(Ax),-(Ay)Add extended
roxlRotate left with extend
roxrRotate right with extend
rolRotate left
rorRotate right
aslArithmetic shift left
asrArithmetic shift right
lslLogical shift left
lsrLogical shoft right

Saturday Jan 05, 2013

Firebee Developer Diary 1

On the last day of 2012, Stefan (aka Beetle) brought me the FireBee machine that we both share. I've been programming Atari 8bit machines for over 25 years now, but this is the first time that I enter the realm of the Atari ST family with a 68K or now ColdFire. There is much to learn.

My FireBee Development setup

The FireBee is a modern incarnation of the Atari ST computer line, including Ethernet, USB, CF-Card and SD-Card interfaces. A modern computer. And it still runs Atari TOS programs.

[Read More]

Tuesday Aug 16, 2011

Recovering Atari ST 1st Word+ Documents

I've been asked to recover some 1st Word+ Documents from 3½" disk drives. Before starting up one of my old Atari ST machines, I was trying to get the job done using Linux. And it worked quite well. Here is how:

Atari ST disk are formatted using a flavor of the FAT file system. Most of the time, it is possible to read this disks under Linux. The 'mtools' package contains tools to read and write FAT formatted floppy disks, without the need to rely on a file-system driver (the 'mtools' package is available in most Linux distributions. For Ubuntu Linux, execute "sudo apt-get install mtools" to install).

For reading old floppy disks, I recommended to use old style floppy disks, no modern USB-Floppy disks which can often only read standard PC formats. I've used a build-in 3½" floppy drive inside a trusty old IBM ThinkPad T20 running Ubuntu 11.04.

Before reading the files from an Atari ST disk, I configure 'mtools' to skip the check for the floppy format. The FAT format on Atari ST disks is somewhat non-standard, which can trick the 'mtools':

Add to /etc/mtools.conf


The mtools manual page documents:

MTOOLS_SKIP_CHECK: If this is set to 1, mtools skips most of its sanity checks. This is needed to read some Atari disks which have been made with the earlier ROMs, and which would not be recognized otherwise.

Next, make sure that the floppy kernel driver module is loaded. It seems that modern Linux systems do not load the driver for floppy disk anymore:

# sudo lsmod | grep floppy
# sudo modprobe floppy
# sudo lsmod | grep floppy
floppy                 60032  0 

Then I set the floppy drive parameters fixed for a 720kb floppy. The 'setfdprm' command is part of the 'fdutils' package:

# sudo setfdprm /dev/fd0 "720/720"

The command "mdir a:" should now show the directory content of the floppy disk. The floppy disk files can now be copies over to the Linux harddrive using 'mcopy':

# mkdir atari-st-floppy
# cd atari-st-floppy
# mcopy a:*.* .

Converting 1st Word+ documents into RTF

Rich Text Format (RTF) is a standard format for text documents. Using tools like UnRTF, RTF documents can be easly converted into other formats. RTF can be read my most modern text-processing packages such like LibreOffice and AbiWord.

'wpls2rtf' is a small commandline tools that can translate 1st Word+ files into RTF documents. The original source can be found at Using this tool, I was able to convert the old Atari ST documents into files that can be read and edited on modern systems.

Monday May 11, 2009

Once upon a time at -- Hobbytronic

Yesterday, I was looking for a 3 ½" floppy diskfor an Atari ST. I found one disk without label, and before formatting it, I tool a look what's stored on it. To my suprise, I found some of the first digitized pictures (for me) made on Hobbytronic 1992 (a computer fair in Dortmund) where ABBUC had a booth opposite a company doing scanner and digitizer cameras. So below we have the ABBUC Hobbytronic booth crew of 1992.[Read More]