Philips/The P800 assembler

Fra DDHFwiki
Spring til navigation Spring til søgning

This assembler is meant for the development of Philips P800/PTS programs.

The assembler runs on any Windows PC, and uses Delphi6 as the programming language.

It adheres to the P800 Instruction Set, apart from :

  • Floating Point is not supported as I have not been able to find documentation on how this works
  • MMU (Memory Management Unit) is not supported
  • Input/Output processors (which in Philips terminology is an intermediate step between the CPU and the device adapter) are not supported.

Instructions, comments etc. can be entered via a not very user-friendly editor, so you are welcome to use your favourite text processor, as long as the filename ends in .ASM.

You don't need to bother with adjusting the operation codes, data statements and comments, as the assembler has a built-in text reformatter.

Instead of writing spaces between the various columns (label, operation code, operation, comment), you can write a backslash. The text will be reformatted under compilation.

The assembler has been tested against all Philips test programs I could find, and only a few minor errors remain to be solved. They are described in the "known Errors" submenu.


The program has the normal File routines like Open, Save, etc, so we will not go into detail with that, but jump straight to the source entry / editor part.


Editor window


Now then, what do we see here >?

First of all, we can see that comments are indicated by an asterix in column 1, and that the columns are nicely aligned.

If you want to insert a blank line, you must position the cursor on the position where you want to insert it. In other words, that selected line will be pushed one line down, and a blank one will be inserted.


The remainder of the edit functions are quite normal, so we can jump to the COMPILE button.

Pressing this button, results in a screen like this one :


Assembler result


The first column is nothing more than a line counter.

Column 2 is the Location counter (this is the value for the P register)

Column 3 is the instruction, possibly followed by some data in column 4

Finally, we can see the source code.


When you scroll down, you will eventually see an Error List and a Symbol Tabel.

Error List


As a bonus, I give a list of situations where a label is not found at its expected location.

The reason for this will mainly be that an EQU statement has a label, but it does not occupy memory, so it cannot have a location. I have also seen them in a case where an operation code was not set up correctly = programming error in the assembler. Should you see this, you are requested to contact me at nico@farumdata.dk, so I can correct the error.