home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Interactive Guide
/
c-cplusplus-interactive-guide.iso
/
c_ref
/
csource4
/
242_01
/
a63.doc
< prev
next >
Wrap
Text File
|
1989-01-13
|
46KB
|
1,230 lines
/*
HEADER: CUG242;
TITLE: 63701 Cross-Assembler (Portable);
FILENAME: A63.DOC;
VERSION: 0.1;
DATE: 08/27/1988;
SEE-ALSO: A63.H;
AUTHORS: William C. Colley, III;
*/
63701 Cross-Assembler (Portable)
Version 0.1
Copyright (c) 1985,1987 William C. Colley, III
The manual such as it is.
Legal Note: This package may be used for any commercial or
non-commercial purpose. It may be copied and
distributed freely provided that any fee charged
by the distributor of the copy does not exceed the
sum of: 1) the cost of the media the copy is
written on, 2) any required costs of shipping the
copy, and 3) a nominal handling fee. Any other
distribution requires the written permission of
the author. Also, the author's copyright notices
shall not be removed from the program source, the
program object, or the program documentation.
Table of Contents
1.0 How to Use the Cross-Assembler Package .................. 3
2.0 Format of Cross-Assembler Source Lines .................. 4
2.1 Labels ............................................. 5
2.2 Numeric Constants .................................. 5
2.3 String Constants ................................... 6
2.4 Expressions ........................................ 6
3.0 Machine Opcodes ......................................... 7
3.1 Opcodes -- No Arguments ............................ 8
3.2 Opcodes -- One Register Argument ................... 8
3.3 Opcodes -- One Memory Argument ..................... 8
3.4 Opcodes -- One Register or Memory Argument ......... 8
3.5 Opcodes -- One Memory or Immediate Argument ........ 8
3.6 Opcodes -- Two Arguments ........................... 9
3.7 Opcodes -- Relative Branches ....................... 9
3.8 Opcodes -- Bit Manipulation Instructions ........... 9
3.9 Opcodes -- Direct Addressing ....................... 10
4.0 Pseudo Opcodes .......................................... 10
4.1 Pseudo-ops -- END .................................. 10
4.2 Pseudo-ops -- EQU .................................. 11
4.3 Pseudo-ops -- FCB .................................. 11
4.4 Pseudo-ops -- FCC .................................. 11
4.5 Pseudo-ops -- FDB .................................. 11
4.6 Pseudo-ops -- IF, ELSE, ENDI ....................... 12
4.7 Pseudo-ops -- INCL ................................. 12
4.8 Pseudo-ops -- ORG .................................. 13
4.9 Pseudo-ops -- PAGE ................................. 13
4.10 Pseudo-ops -- RMB .................................. 13
4.11 Pseudo-ops -- SET .................................. 13
4.12 Pseudo-ops -- TITL ................................. 14
5.0 Assembly Errors ......................................... 14
5.1 Error * -- Illegal or Missing Statement ............ 14
5.2 Error ( -- Parenthesis Imbalance ................... 15
5.3 Error " -- Missing Quotation Mark .................. 15
5.4 Error A -- Illegal Addressing Mode ................. 15
5.5 Error B -- Branch Target Too Distant ............... 15
5.6 Error D -- Illegal Digit ........................... 15
5.7 Error E -- Illegal Expression ...................... 15
5.8 Error I -- IF-ENDI Imbalance ....................... 15
5.9 Error L -- Illegal Label ........................... 16
5.10 Error M -- Multiply Defined Label .................. 16
5.11 Error O -- Illegal Opcode .......................... 16
5.12 Error P -- Phasing Error ........................... 16
5.13 Error R -- Illegal Register ........................ 16
5.14 Error S -- Illegal Syntax .......................... 17
5.15 Error T -- Too Many Arguments ...................... 17
5.16 Error U -- Undefined Label ......................... 17
5.17 Error V -- Illegal Value ........................... 17
6.0 Warning Messages ........................................ 17
6.1 Warning -- Illegal Option Ignored .................. 17
6.2 Warning -- -l Option Ignored -- No File Name ....... 17
6.3 Warning -- -o Option Ignored -- No File Name ....... 17
6.4 Warning -- Extra Source File Ignored ............... 18
6.5 Warning -- Extra Listing File Ignored .............. 18
1
6.6 Warning -- Extra Object File Ignored ............... 18
7.0 Fatal Error Messages .................................... 18
7.1 Fatal Error -- No Source File Specified ............ 18
7.2 Fatal Error -- Source File Did Not Open ............ 18
7.3 Fatal Error -- Listing File Did Not Open ........... 18
7.4 Fatal Error -- Object File Did Not Open ............ 18
7.5 Fatal Error -- Error Reading Source File ........... 19
7.6 Fatal Error -- Disk or Directory Full .............. 19
7.7 Fatal Error -- File Stack Overflow ................. 19
7.8 Fatal Error -- If Stack Overflow ................... 19
7.9 Fatal Error -- Too Many Symbols .................... 19
2
1.0 How to Use the Cross-Assembler Package
First, the question, "What does a cross-assembler do?" needs
to be addressed as there is considerable confusion on this point.
A cross-assembler is just like any other assembler except that it
runs on some CPU other than the one for which it assembles code.
For example, this package assembles 63701 source code into 63701
object code, but it runs on an 8080, a Z-80, an 8088, or whatever
other CPU you happen to have a C compiler for. The reason that
cross-assemblers are useful is that you probably already have a
CPU with memory, disk drives, a text editor, an operating system,
and all sorts of hard-to-build or expensive facilities on hand.
A cross-assembler allows you to use these facilites to develop
code for a 63701.
This program requires one input file (your 63701 source code) and
zero to two output files (the listing and the object). The input
file MUST be specified, or the assembler will bomb on a fatal
error. The listing and object files are optional. If no listing
file is specified, no listing is generated, and if no object file
is specified, no object is generated. If the object file is
specified, the object is written to this file in "Intel
hexadecimal" format.
The command line for the cross-assembler looks like this:
A63 source_file { -l list_file } { -o object_file }
where the { } indicates that the specified item is optional.
Some examples are in order:
a63 test63.asm source: test63.asm