!!! SynAssembler
[{TableOfContents }]
!! Introduction
SYNASSEMBLER is a convenient and powerful tool for software development on the Atari computer system. The assembler uses standard 6502 mnemonics and syntax, and includes many useful features for creating, editing, assembling and testing your assembly language programs. Now assembly language programming is almost as easy as programming in BASIC.
Here is a summary of the most exciting features:
* Full use of the standard Atari Screen Editor
* Tab stops for opcode, operand, and comment fields
* Fast parameterized renumber and delete command
* Uses BASIC like commands for files (eg. LOAD, SAVE, BLOAD etc.)
* Labels up to 32 characters long (lowercase letters and . accepted)
* English ERROR messages
* Ability to append source programs from tape or disk
* Display of memory usage
* Multiple source files, using .IN directive
* Store object code directly to disk file, using the .TF directive
* Listing to screen option using .LI ON and .LI OFF
* Assembles 6500 lines/minute
* Local labels
* Offending line is listed after an ERROR occurs
* Value of .EQ and address of .BS are printed on listing
* ASSEMBLER, DOS, HARDWARE, and OS locations protected during assembly
* ATASCII literals in address expressions
* Symbol table printed in alphabetical order
Synassembler requires 48K of RAM and one disk drive to operate. Very large programs can now be developed, using the "INCLUDE" and "TARGET FILE" capabilities. These allow the assembly of multiple source files, and direct storage of object code on binary files.
!! Author
Synapse Assembler has been written by Steve Hales
* [Homepage of Steve Hales|http://www.igorlabs.com/]
!! Manual
* [Synapse Assembler Manual]
* [SynAssembler Manual|http://www.atariland.com/members/oldatarian/syndx.htm]
!! Help File
{{{
00010 *
00020 * SYNASSEMBLER DIRECTIVES
00030 *
00040 .AS ASCII STRING
00050 .AS "TEST"
00060 .AT ATASCII STRING
00070 .AT "SCORE:"
00080 .BS BLOCK STORAGE
00090 .BS 5 SKIPS 5 BYTES
00100 .DA WORD
00110 .DA HELLO
00120 .EN END OF SOURCE (OPTIONAL)
00130 .EN
00140 .EQ EQUATE
00150 TEST .EQ 5
00160 .HS HEX STRING
00170 .HS 0001AA5500339944344
00180 .IN INCLUDE FILE WITH ASM
00190 .IN "D:FILE NAME"
00200 .LI LIST ON OR OFF
00210 .LI OFF
00220 .OR SET ORG
00230 .OR $6000
00240 .TA SET TARGET FOR OBJECT
00250 .TA $9000
00260 .TF SEND OBJECT TO DISK
00270 .TF "D:FILE NAME"
00280 *
00290 * SYNASSEMBLER COMMAND
00300 *
00310 LOAD "D:FILE NAME"
00320 SAVE "D:FILE NAME"
00330 BLOAD "D:FILE NAME",<START>
00340 BSAVE "D:FILE NAME",<START>,<END>
00350 ENTER "D:FILE NAME"
00360 DIR DIRECTORY DRIVE 1
00370 DIR "D4:*.* DIRECTORY DRIVE 4
00380 DOS
00390 MEM MEMORY STATUS
00400 LIST L1,L2
00410 NEW
00420 REN L1,L2
00430 RENUMBER L1 USING INC OF L2
00440 REN L1,L2,L3
00450 RENUMBER L1 USING INC OF L2
00460 STARTING AT L3
00470 COPY L1,L2
00480 COPY L1 AT L2
00490 COPY L1,L2,L3
00500 COPY L1 TO L2 AT L3
00510 MOVE L1,L2
00520 MOVE L1 TO L2
00530 MOVE L1,L2,L3
00540 MOVE L1 TO L2 AT L3
00550 FIND STRING
00560 ASM
00570 DEL L1,L2
00580 HID
00590 HID CURRENT SOURCE PROGRAM
00600 MER
00610 COMBINE HIDDEN SOURCE WITH
00620 CURRENT SOURCE
00630 RUN EXPRESSION
00640 RESTORE
00650 RETURN FROM AN INCLUDE FILE
00660 OR TO UN-HIDE A HIDDEN FILE
00670 SYM
00680 PRINT SYMBOL TABLE
00690 VAL EXPRESSION
00700 REP /.BYTE/.HS/,P
00710 REPLACE WITH PROMPT
00720 PRESS 'Y' TO CHANGE
00730 PRESS 'N' FOR NO CHANGE
00740 PRESS 'X' TO CANCEL REPLACE
00750 REP /.BYTE/.HS/
00760 REPLACE ALL
00770 OUT "P:"
00780 PRINT OUTPUT TO DEVICE
00790 TYPE "P:"
00800 LIST TO DEVICE
00810 LOMEM $4000 OR LOM $4000
00820 LOMEM OF SYMBOL TABLE
00830 HIMEM $8000 OR HIM $8000
00840 HIMEM OF SOURCE CAUTION
00850 DESTROYS SOURCE
00860 MON
00870 JUMP TO MONITOR
00880 Q
00890 JUMP BACK TO ASSEMBLER
00900 ************************
00910 * MONITOR INSTRUCTIONS *
00920 ************************
00930 EXAMINE MEMORY
00940 *
00950 adrs C0F2
00960 adrs1.adrs2 1024.1048
00970 (RETURN) DISPLAY NEXT 8 LOC
00980 .adrs .4096
00990 *
01000 CHANGE MEMORY
01010 *
01020 adrs;data data A256;EF 20 43
01030 ;data data data ;F0 A2 12
01040 *
01050 MOVE MEMORY
01060 *
01070 adrs1<adrs2.adrs3M 100<B010.B410M
01080 FROM adrs2 TO adrs3 STARTING AT adrs1
01090 *
01100 VERIFY MEMORY
01110 *
01120 adrs1<adrs2.adrs3V 100<B010.B410V
01130 *
01140 * READ SECTOR(S)
01150 *
01160 adrs<sec1.sec2r 2000<1.AFr
01170 READ SECTORS 1 TO AF
01180 AND PUT THEM INTO BUFFER
01190 AT 2000
01200 *
01210 * WRITE SECTOR(S)
01220 adrs<sec1.sec2w 2000<1.AFw
01230 WRITE SECTORS 1 TO AF
01240 AND GET THEM FROM BUFFER
01250 AT 2000
01260 *
01270 *
01280 adrsL C080L
01290 L NEXT 20 INSTRUCTIONS
01300 *
01310 DEBUGGING
01320 *
01330 adrsG 300G RUN
01340 adrsT 800T TRACE
01350 adrsS C050S SINGLE STEP
01360 R DISPLAY REGISTERS
01370 TO CHANGE REGISTERS
01380 TYPE ; THEN DATA
01390 FOR EACH ONE
}}}