The file p03400.zip contains this text file and the file rabmch.c
which has been updated to correct for an error in the processing
of the "ret cc" instruction.

The following email from Uli Raich summarizes the problem and
shows the change made to rabmch.c.

*****-----*****-----*****-----*****-----*****-----*****-----*****

This weekend I saw that the rabbit assembler refuses code of
type "RET cc" which the rabbit is capable of executing.

In rabmch.c I found:

    case S_RET:
        if (more()) {
            if (mchtyp == X_R2K)
                err('o');
            if ((v1 = admode(CND)) != 0) {
                outab(op | v1<<3);
            } else {
                qerr();
            }
        } else {
            outab(0xC9);
        }
        break;

removing the first "if" statement (if mchtyp == X_R2K) removes the problem:

    case S_RET:
        if (more()) {
            if ((v1 = admode(CND)) != 0) {
                outab(op | v1<<3);
            } else {
                qerr();
            }
        } else {
            outab(0xC9);
        }
        break;


I have now essentially finished the development of a debug
monitor and  downloader for the rabbit, all written in assembly.
It has all the standard monitor features like breakpoint,
single step,  looking at memory ... but also includes a
flash driver and code to drive the mmu (look at memory with
virtual or physical addressing).

I will put up the new version to sourceforge.

Uli Raich
Ulrich dot Raich at cern dot ch

*****-----*****-----*****-----*****-----*****-----*****-----*****

