Need documentation on 2500 A.D. Software 8051 Macro Assembler

Thread Starter

cmartinez

Joined Jan 17, 2007
8,218
I use said compiler extensively, but I cannot find its documentation (I'm using version 4.00j, dating back to 1985) anywhere in the net. And I know it has features which I'd like to know more about.

Can anyone here share a PDF of its user's manual, or point me to where I could download it?
 

Thread Starter

cmartinez

Joined Jan 17, 2007
8,218

Thread Starter

cmartinez

Joined Jan 17, 2007
8,218
Hello,

I did have an other look in the internet archive and found this page:
http://web.archive.org/web/19970716124906/http://www.2500ad.com/2500ad/software.htm
There is a manual in .txt format over there.

Bertus
Thanks... that is almost what I need. But those are documents related to their C compiler.
However, they do mention the program that I'm using, that is the "x8051.exe":
Code:
SECTION 4
ASSEMBLER OPERATING INSTRUCTIONS

The 2500AD Assemblers are some of the strongest products in the industry. Our Assemblers
provide full listing control and assembly-time macro expansion. Registers are predefined
for ease of programming. The Assembler in this demo processes 8051 assembly language source
code into relocatable object code. The linker relocates the code to the execution address
you want and creates the code file in the format you specify.

Note: When the Assembler is part of the C Compiler package, the Compiler installation
file sets up the correct directories and copies the files to them. Directives control the
workings of the Assembler and must not be confused with the processor's assembly
language instructions.

The Assembler may be run in either Prompt mode or Command Line mode. In Prompt mode you will
step through various prompts. Command Line mode operates on the commands you enter.

Example:
x8051 [-q][options] input_filename [output_filename]
But I couldn't find documentation for the"x8051.exe" anywhere.
 

Thread Starter

cmartinez

Joined Jan 17, 2007
8,218
Hello,

Here I found some lab documant that uses the X8051.exe software (as it seems).

Bertus
Excellent! ... that document shows code at the end that makes use of the sort of things that I've been trying to find.

The one thing in particular that I've been cracking my head over is, how do I substitute an RX register with a custom string?
For instance, in my code I'd like to substitute "R5" with "ENCODER_LB". The EQU directive does not work on this one!
 

Papabravo

Joined Feb 24, 2006
21,157
@Papabravo, have you ever worked with this compiler? Would you know how I could substitute a register name with a custom text in a .asm file?
I did have occasion to work with this compiler in the early 1990's but it was owned by the company I worked for (Allen Bradley), and I didn't think it would be cricket to keep the docs or the original install disks. Sorry. You could always use a macro language like M4 as a preprocessor to do it. In essence you would define a make file that used the M4 macro processor to take the original source, process it, and output the temporary file to the compiler.

https://en.wikipedia.org/wiki/M4_(computer_language)
 

JohnInTX

Joined Jun 26, 2012
4,787
Excellent! ... that document shows code at the end that makes use of the sort of things that I've been trying to find.

The one thing in particular that I've been cracking my head over is, how do I substitute an RX register with a custom string?
For instance, in my code I'd like to substitute "R5" with "ENCODER_LB". The EQU directive does not work on this one!
Does it support the 'DEFINE' directive?
#define ENCODER_LB R5
I think the 2500AD 8085 stuff did.. not sure about the syntax. Maybe $define
I can't believe I just gave away all of my old 2500AD stuff.. after 30 years dormant..
 

shteii01

Joined Feb 19, 2010
4,644
Does it support the 'DEFINE' directive?
#define ENCODER_LB R5
I think the 2500AD 8085 stuff did.. not sure about the syntax. Maybe $define
I can't believe I just gave away all of my old 2500AD stuff.. after 30 years dormant..
You said gave away... it does it mean you can ask for it back?
 

JohnInTX

Joined Jun 26, 2012
4,787
Sorry.
We downsized and moved to Houston last month to be with the first grandchild. Stuff that had been in $torage for decades had to go. I did find a cool kid who is into retro-computing and he was delighted with it.
But indeed, it all firms up my first rule of stuff - It doesn't matter how long it's been on the shelf or if it is on 8" floppys. Get rid of it and next week you'll need it.
 

Thread Starter

cmartinez

Joined Jan 17, 2007
8,218
Does it support the 'DEFINE' directive?
#define ENCODER_LB R5
I think the 2500AD 8085 stuff did.. not sure about the syntax. Maybe $define
I can't believe I just gave away all of my old 2500AD stuff.. after 30 years dormant..
I just tried it. And no, I'm afraid it doesn't work. I get either an "illegal label, first character" error, or "illegal mnemonic"
 

JohnInTX

Joined Jun 26, 2012
4,787
Yeah, it doesn't look like a 'text substitution' macro was part of the standard 8051 assembler definition. Poking around I found these different ways of doing the same thing:
LIT is used by Kiel/Franklin et. al.
%DEFINE is used by Altium - note that the % has to be in column 1.
Kiel C uses the sfr construct which may or may not work in assembler:
sfr P0 = 0x80;
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;
sfr PSW = 0xD0;
Pretty sure that you'll need to use some text substitution facility at the preprocessor level since R5 is a SFR.

Sorry I don't have anything more specific. I've not used 8051 for a long time and when I did I used Keil and Archemedies.
Good luck.
 

Attachments

Top