-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSyntax
More file actions
179 lines (137 loc) · 5.72 KB
/
Syntax
File metadata and controls
179 lines (137 loc) · 5.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
CODE DESCRIPTION IN CURRENT VERSION
! For loading external memory patches (Eg. Long Tables) NO
" ASCII Notation YES
£ -
$ Decimal Notation YES
% Binary Notation YES
^ Zero Page Routine NO
& Routine label YES
* Math operator NO
( Reserved for Mnemonic syntax -
) Reserved for Mnemonic syntax -
_ -
- Math operator NO
+ Math operator PARTAIL
= Link (Eg. 'Real location' to 'Variable label') YES
{ -
} -
[ Compact Short Table Start (No comma's, all hex) YES
] Compact Short Table End (No comma's, all hex) YES
: Table label YES
; Variable Label YES
' Remark start YES
@ Start address(Org) (If more than one, last is taken as Org for all) YES
# Reserved for Mnemonic syntax -
~ -
< Short Table Start YES
> Short Table End YES
, Reserved for Mnemonic syntax and 'Data seperator' in tables -
. Macro Label NO
\ -
/ Math operator NO
| -
? -
Line Syntax
!Variable, Table and Routine Labels are not case-sensitive!
Variables...
;xpos =BFE0 'Specified location (Must be in 2/4 Digit Hexadecimal)
;ypos 'Current mem location (mem is inc'd)
;TEMPO (00) 'Specify default Value (Otherwise defaulted as 0)
EXTERNAL LOADS... (NOT YET IMPLEMENTED)
!FILE.EXT 'WILL LOAD INTO NEXT POSITION FOR THE NUMBER OF BYTES THE FILE CONTAINS
!FILE.EXT [$5000] 'WILL LOAD IN 5000 BYTES FROM CURRENT MEMORY LOCATION
!FILE.EXT /RAW 'SPECIFIES THE FILE TO BE /RAW /TEXT (DEFAULT)
!FILE.EXT +$50 'SPECIFIES OFFSET WITHIN FILE TO START COPYING FROM
Table Formats
:TABLE1 'Name Table
[#00*$100] 'EMPTY TABLE (CONSUMING 100 BYTES OF ZEROES)
[#"A"*40] 'FILL 64 BYTES WITH CODE 65 *1
[#$32*L00] 'Pad to XX00 with 32's (NUM AFTER L ALWAYS HEX!!)
["MESSAGE 1"] 'String *1
[H&plot,&beaver]'Table containing Routine Lo addresses
[L&plot,&beaver]'Table containing Routine Hi addresses
[FF0080FF] 'Compact Table
<FF,$30,"J","P">'Mixed Table *1
. Macro Label (Future expansion only)
IN USE...
.POKE 100,20
DEFINING (ALWAYS DEFINE MACRO BEFORE IT IS USED)
.."POKE" 'DEFINE MACRO NAME FIRST
..LDA #%2 'USE % TO SELECT PARAMETER IN MACRO COMMAND
'EG. 100,20 IS %1,%2
..STA %1
... 'TERMINATES MACRO DEFINITION
ASSEMBLY SYNTAX
'ACC/IMP ADDRESSING
LSR
LSR A
'IMM ADDRESSING (NO DATA)
'ONLY ADDRESSING MODE THAT ALLOWS DIFFERENT BASES EG. %00100 OR $100 OR "A"
LDA #20
LDA #$32
LDA #" " '*1
LDA #&ROUTINE
LDA #&ROUTINE
'ZPG ADDRESSING " "
STA 00 '*2
STA ZERO_PAGE
'ABS ADDRESSING " "
STA BFE0 '*2
STA ;ABS_ADDRESS
STA ;ABS_ADDRESS+2
JSR &ROUTINE
'ZPG,X ",X"
LDA 00,X
LDA ZERO_PAGE,X
'ZPG,Y ",Y"
LDX 00,Y
LDX ZERO_PAGE,Y
'ABS,X ",X"
LDA BFE0,X
LDA ABS_ADDRESS,X
LDA &ROUTINE,X
'ABS,Y ",Y"
LDA BFE0,Y
LDA ABS_ADDRESS,Y
'IND,X ",X)"
LDA (00,X)
LDA (ZERO_PAGE,X)
'IND,Y "),Y"
LDA (00),Y
LDA (ZERO_PAGE),Y
LDA (:ZERO_PAGE),Y 'INCLUDE THE LABEL TYPE IF DUPLICATE LABEL NAMES
'REL
BEQ 02
BEQ +2
BEQ -2
BNE &LOOP
NOTES..
WASTED BYTES OCCUR WHEN THE TABLES ARE FORCED TO START AT XX00.
THE WASTED BYTES ARE THOSE FROM THE LAST POKED VALUE TO XX00.
*1
WHEN DEFINING STRINGS, CERTAIN CHARACTERS CANNOT USUALLY BE REPRESENTED
WITHIN THE QUOTES, INSTEAD, SUCH CHARACTERS ARE REPLACED WITH SWITCHES AS
SHOWN BELOW...
' ~APOS~ 39
~ ~TILD~ 126
" ~QUOT~ 34
£ ~POUN~ 95
# ~HASH~ 35
| ~PIPE~ 124
© ~COPY~ 96
~DELE~ 127
*2
IN ORDER TO STORE A ROUTINE ADDRESS (FROM A TABLE) TO THE ADDRESS PORTION
OF A JSR OR JMP INSTRUCTION, YOU'LL NEED TO NOT ONLY HAVE ACCESS TO THE ADDRESS
LINE BUT AN OFFSET FROM THIS POINT ASWELL.
NOTE: THIS SYMBOLISING CAN ONLY OCCUR WITHIN ABSOLUTE ADDRESSING, ONLY WITH
REFERENCING ROUTINES (&) AND ONLY UP TO 9 BYTES OFFSET.
IN ORDER TO DO SO, USE THE + SYMBOL FOLLOWED BY THE OFFSET AFTER YOUR STA/LDA
SYNTAX. EG.
EG.
TO
STA X1X1
JSR A0X1
DO..
STA &JUMPER+1
&JUMPER JSR A000