They’re activated by pressing the '>’-key plus the following keys... Italic mean Real Macro Asm specific commands.
A |
Enter ASCII-Mode. Every keystroke including Cursor-Keys etc. will be printed as ASCII-Code. Exit this mode by pressing "<-"key. |
B | Block Commands (Kill, Write & Copy Block) |
C | Cold Start |
D | Disk Command |
E | Enter File (Load Standard Source-Code) |
F | Find Data |
G | Goto Mark (0-9,S,E) |
H | Hunt (Continue Find) |
I | Find Subroutine |
K | Set F-Keys (F3-F6) |
L | Load Turbo-Ass-Format Source-Code |
M | Set Mark (0-9,S,E) |
N | Goto Line Number |
O | Options |
Q | Set Cursor to start of current line |
R | Replace |
S | Save Turbo-Ass-Format Source-Code |
T | Replace & Hunt for next |
U | List Labels (in older Macro-Ass Version ‘+’) |
W | Write File (Save Standard Source-Code) |
Y | Replace All |
Z | Restore current line |
1 | Exit Assembler |
3 | Assemble Source-Code to Memory |
4 | Print Source-Code (‘*’=Screen, ‘?’=Printer, or Filename) |
5 | Assemble Source-Code to Disk |
6 | Make Datas out of Memory |
7 | Set Tabulator for Labels |
8 | Set Tabulator for Mnemonics |
: | Show Marks |
; | Kill Mark (0-9,S,E) |
+ | Add two numbers |
- | Subtract two numbers |
<- | Print ‘<-’ |
_ | Copy Line into Buffer |
£ | Copy Line into Buffer |
Space | Clear Line |
DEL | Delete line |
INST | Toggle Auto-Line-Insert on/off |
Return | Copy Line down |
= | Copy Line up |
Cursor Up | Move 200 Lines up |
Cursor Down | Move 200 Lines down |
Shift+F | Fill Memory of Object-Bank |
Shift+L | Load Object-Code into Object-Bank |
Shift+S | Save Object-Code from Object-Bank |
Shift+M | Display Memory-Map of Object-Bank |
* | Show Directory |
/ | Delete Line from X-Position |
F1 | Fkeys-Reset |
INST | Toggle Auto-Char-Insert on/off |
F1 | Move 20 Lines up |
F2 | Jump to Top of Source-Code |
F3 | Show Directory |
F4 | Assemble to Memory and Start |
F5 | Print ‘.BYTE’ |
F6 | Delete Line |
F7 | Move 20 Lines down |
F8 | Jump to End of Source-Code |
Return | Jump to next Line (Insert Line if Auto-Line-Insert is on) |
.BYTE $12 | Insert a byte in memory | ||||||
.WORD $1234 | $34,$12 (LO/HI Order) | ||||||
.RTA $1234 |
Return address $33,$12 (Used e.g. for PHA & RTS) |
||||||
.TEXT "text" | $54,$45,$59,$54 | ||||||
.NULL "text" | $54,$45,$59,$54,$00 | ||||||
.SHIFT "text" | $54,$45,$59,$d4 (Bit7 on last byte is set) | ||||||
*= | Set new Memory Location (be warned that this doesn't work when assembling to disk!) | ||||||
.OFFS $1234 |
Adds $1234 to the current Memory-Location, E.g. .OFFS $1234 *=$1000 Means the following Code will be Assembled to $2234 |
||||||
.BLOCK |
Block-Area. All Labels in this Area won’t touch the Label-tab. Advantage: No worry about ‘Double Defined’-Errors Disadvantage: No Labels in this Area can be called from outside. |
||||||
.BEND | End of Block Area | ||||||
.PRON |
Force Assembler to Output Source-Code to Printer while assembling. |
||||||
.PROFF | No Printing while assembling (Standard) | ||||||
.HIDEMAC | Don’t Print Macros (only effective after .PRON) | ||||||
.SHOWMAC | Print Macros, too | ||||||
.EOR $12 | The Following Code will be eor’d with $12 | ||||||
.LBL | Define Label that can be reached by .GOTO | ||||||
.GOTO | Guess! | ||||||
.VAR $12 |
Define Label as Variable with Value $12. Same Labels may be defined as Variables several times without ‘Double Defined’-Error |
||||||
.IF |
If-Statements for conditional assembly. Used to let the Assembler decide whether to assemble or not the following lines depending of the value of the Expression next to it. E.g. .IFEQ LABEL or .IFMI LABEL-1 | ||||||
.ENDIF |
End of If-Statement- Example where Label = 1
If you set LABEL to ZERO, the NOP won’t be assembled... |
||||||
.INCLUDE "NAME" |
Includes a Standard-Source-Code-File from Disk with the Filename "NAME" |
||||||
.MACRO | Macro-Definition with a Block around it | ||||||
.SEGMENT | Macro-Definition without a Block around. | ||||||
.ENDM | End of Macro-Definition | ||||||
# |
Macro Call. While Calling a Macro, Parameters are separated by ‘,’ In Macro: Number arguments are represented with £+Parameter number The following Formats for Numbers are valid: 1-Byte: 255 (decimal), $FF (hex), %11111111 (dual) |
||||||
< and > |
Select only the Lo/Hi-Byte of a 16Bit Number by writing ‘<’or ‘>’ in front. E.g. LDA #<$1234 = lda #$34 or LDA #>LABEL = lda #(HiByte of Label-Adresse) |
Special features of Real macro ASSNow after (hopefully) explained all Commands and Pseudo-Opcodes, I continue with the special features of my REAL MACRO ASS.First of all, there are several Commands added, as you could have seen on the preceeding pages. Furthermore, this Version does take a REAL advantage of the REU 17xx :
Now let’s explain how this works...First of all, you have the SourceCode Bank. As the name says, it holds the SourceCode. The next one is the ObjectCode Bank. There you can store all Object-Code you wish, e.g. Grafix or assembled Code etc. When Assembling your SourceCode (<-+3), the MASS first copies the contents of the ObjectCode Bank into the Ass’d Code-Bank. Then the Source-Code will be assembled into then Ass’d Code-Bank. Using 2 different Banks prevents the MASS of touching the ObjectCode Bank, in case some of the data would be overwritten by the assembled Code. After that, MASS copies the whole C64-Memory into the M-ASS-Copy Bank and than copies the Ass’d Code Bank into Memory plus stores a Callback-Routine into the Cassette-Buffer at $033C.Everything clear?After testing the assembling Code, you may return to your Source-Code by typing SYS 828 or $33C and you’re back in the Assembler.
A short hint. The Options (<-+O) are layed out for 5 Banks (for Security purposes). If you’re using a 256K REU, I recommend to select the same Bank for the Ass’d Code Bank & the ‘Transfer’ Bank so it’ll use only 4 Bank.