Xa99 Cross Assembler
VERSION 1.2/A PAGE 0001
0001 * A sample assembler listing created with XA99
0002 * to demonstrate segments.
0003
0004 IDT 'XA99SMPL'
0005
0006 DEF L001,L101,L201,T001,T002
0007 REF R001,R002
0008
0009 ***************************************
0010
0011 0000 L001 RORG
0012
0013 0000 0001 D001 DATA 1,2,3,4
0002 0002
0004 0003
0006 0004
0014 0008 000A D002 DATA >A,>B,>C,>D
000A 000B
000C 000C
000E 000D
0015 0010 0041 D003 DATA 'A','B','C'
0012 0042
0014 0043
0016 0016 41 D004 BYTE 'A','B','C'
0017 42
0018 43
0017 0019 41 D005 TEXT 'ABC'
0018 EVEN
0019
0020 001C 0000' T001 DATA D001,D002
001E 0008'
0021
0022 0020 0201 L002 LI R1,D001
0022 0000'
0023 0024 C0A0 MOV @T001,R2
0026 001C'
0024
0025 ***************************************
0026
0027 C000 L101 DORG >C000
0028
0029 C000 0001 D101 DATA 1,2,3,4
C002 0002
C004 0003
C006 0004
0030 C008 000A D102 DATA >A,>B,>C,>D
C00A 000B
C00C 000C
C00E 000D
0031
0032 C010 C000 T101 DATA D101,D102
C012 C008
0033
0034 C014 0201 L102 LI R1,D101
C016 C000
0035 C018 C0A0 MOV @T101,R2
C01A C010
0036
0037 ***************************************
Xa99 Cross Assembler
VERSION 1.2/A PAGE 0002
0038
0039 A000 L201 AORG >A000
0040
0041 A000 0001 D201 DATA 1,2,3
A002 0002
A004 0003
0042 A006 000A D202 DATA >A,>B,>C
A008 000B
A00A 000C
0043
0044 A00C A000 T201 DATA D201,D202
A00E A006
0045
0046 A010 0201 L202 LI R1,D001
A012 0000'
0047 A014 C0A0 MOV @T201,R2
A016 A00C
0048
0049 ***************************************
0050
0051 0000 L301 DSEG Define your data in a DSEG
0052
0053 0000 0001 D301 DATA 1,2,3
0002 0002
0004 0003
0054 0006 000A D302 DATA >A,>B,>C
0008 000B
000A 000C
0055 000C 30 D303 TEXT '0123456789ABCDEF'
0056 EVEN
0057
0058 001C DEND
0059
0060 ***************************************
0061
0062 0028 L401 PSEG Same segment as RORG
0063
0064 0028 0201 LI R1,D001
002A 0000'
0065 002C 0202 LI R2,D005
002E 0019'
0066 0030 04C0 CLR R0
0067 0032 0203 LI R3,1
0034 0001
0068 0036 C120 MOV @T001(R0),R4 This is an error
0038 001C'
***** INVALID INDEX REGISTER R0 - 0068
0069 003A C123 MOV @T001(R3),R4 And this is okay
003C 001C'
0070
0071 003E PEND
0072
0073 ***************************************
0074
0075 0000 L501 CSEG 'MYSEG1' User defined segment
0076
0077 0000 0201 L502 LI R1,D001
0002 0000'
0078 0004 C0A0 MOV @T001,R2
Xa99 Cross Assembler
VERSION 1.2/A PAGE 0003
0006 001C'
0079 0008 0202 LI R2,D303
000A 000C"
0080
0081 000C 0201 L503 LI R1,D001
000E 0000'
0082 0010 C0A0 MOV @T201,R2
0012 A00C
0083
0084 0014 CEND
0085
0086 ***************************************
0087
0088 0000 L601 CSEG 'MYSEG2' User defined segment
0089
0090 0000 0201 LI R1,D001
0002 0000'
0091 0004 C0A0 MOV @T001,R2
0006 001C'
0092 0008 C0E0 MOV @T002,R3
000A 0000
***** BAD FWD REFERENCE - 0092
0093 000C 0460 B @L503
000E 000C+
0094
0095 0010 CEND
0096
0097 ***************************************
0098
0099 0014 L701 CSEG 'MYSEG1' Continues user defined segment MYSEG1
0100
0101 0014 0201 L702 LI R1,R001
0016 0000
0102 0018 C0A0 MOV @R002,R2
001A 0000
0103 001C 0203 LI R3,L601
001E 003E+
0104
0105 DXOP MYXOP,7
0106
0107 0020 2DE0 MYXOP @>1234
0022 1234
0108
0109 0024 CEND
0110
0111 ***************************************
0112 *
0113 * Sense and nonsense in expressions:
0114 *
0115 * See "Model 990/12 Computer Assembly Language
0116 * Programmer's guide"
0117 * Paragraph "2.10 Expressions" page 2-19
0118 *
0119 * if in an expression
0120 * NA = sum of relocatable symbols added
0121 * NS = sum of relocatable symbols subtracted
0122 * then if
0123 * NA - NS == 0 : Expression is absolute
0124 * NA - NS == 1 : Expression is relative
Xa99 Cross Assembler
VERSION 1.2/A PAGE 0004
0125 * other is illigal
0126 *
0127 003E PSEG
0128
0129 003E D801 BSS 10 A table
0130 0048 D802 BSS 20 Another table
0131 005C D803 BSS 30 And a third table
0132
0133 0002 EQ01 EQU 2
0134 0004 EQU2 EQU 4
0135 0006 EQU3 EQU 6
0136
0137 007A 000A S801 DATA D802-D801 (NA-NS=0 Abs) This is the size of D801
0138 007C 0014 S802 DATA D803-D802 (NA-NS=0 Abs) This is the size of D802
0139
0140 007E 0000 X801 DATA D802+D801 (NA-NS=2 XXX) This is nonsence
***** SYNTAX ERROR - 0140
0141 0000 Q801 EQU D802+D801-5 Doesn't matter how it is used, still no
***** SYNTAX ERROR - 0141
0142
0143 0080 0066' OKAY1 DATA D803+D802-D801 (NA-NS=1 Rel) This some offset in D
0144
0145 0082 PEND
0146
0147 END
THE FOLLOWING SYMBOLS ARE UNDEFINED:
T002
Xa99 Cross Assembler
VERSION 1.2/A PAGE 0005
' D001 0000 ' D002 0008 ' D003 0010 ' D004 0016
' D005 0019 D101 C000 D102 C008 D201 A000
D202 A006 ' D301 0000 ' D302 0006 ' D303 000C
' D801 003E ' D802 0048 ' D803 005C EQ01 0002
EQU2 0004 EQU3 0006 D L001 0000 ' L002 0020
D L101 C000 L102 C014 D L201 A000 L202 A010
L301 A018 ' L401 0028 ' L501 003E ' L502 0000
' L503 000C ' L601 003E ' L701 003E ' L702 0014
X MYXOP 0007 ' OKAY1 0080 Q801 0000 R0 0000
E R001 0016 E R002 001A R1 0001 R10 000A
R11 000B R12 000C R13 000D R14 000E
R15 000F R2 0002 R3 0003 R4 0004
R5 0005 R6 0006 R7 0007 R8 0008
R9 0009 ' S801 007A ' S802 007C D T001 001C
U T002 0000 T101 C010 T201 A00C ' X801 007E
0004 ERRORS
Xa99 Cross Assembler
VERSION 1.2/A PAGE 0006
SEGMENT DORG SIZE 00028 (>001C) BYTES
SEGMENT AORG SIZE 00024 (>0018) BYTES
SEGMENT RORG SIZE 00130 (>0082) BYTES
SEGMENT $DATA SIZE 00028 (>001C) BYTES
SEGMENT MYSEG1 SIZE 00036 (>0024) BYTES
SEGMENT MYSEG2 SIZE 00016 (>0010) BYTES
|