6502 MICROPROCESSOR CROSS ASSEMBLER

WRITTEN BY:    J. DALE E. HOLT                APRIL 1981
	       USAF WEAPONS LAB
	       KIRTLAND AFB, NM  87117
	       (505) 844-9831

INCLUDED IN THIS PACKAGE ARE THE SOURCE CODE FILES AND ONE EXECUTABLE IMAGE.
THE ASSEMBLER IS WRITTEN IN BASIC.
THE DOWNLOADER AND ASSOCIATED SUBROUTINES ARE WRITTEN IN FORTRAN.

THE TMEMTEST.SYM IS A SAMPLE ASSEMBLY LANGUAGE SOURCE CODE FILE OF A 6502
PROGRAM WRITTEN FOR THE SYM-1 (IT ACTUALLY RUNS).


*****************************************************************************
*****************************************************************************

INSTRUCTIONS FOR THE 6502 SOURCE CODE FILE STRUCTURE:


FORMAT DATA FOR SOURCE CODE FILES

THE FORMAT IS VERY CLOSE TO SYNERTEC SYNTAX

LABELS SHOULD NOT START WITH *,$,#,@,<,>,',"
LABELS SHOULD NOT INCLUDE A MINUS SIGN (-), NOR A PLUS SIGN (+)


OPERAND PARAMETERS:

  PREFIXES:
  *   MEANS   ZERO PAGE ADDRESS
  $   MEANS   HEXADECIMAL VALUE (2 OR 4 DIGITS)
  #   MEANS   DECIMAL VALUE (0-255)
  @   MEANS   ASCII LITERAL (1 CHARACTER)
  <   MEANS   LOW BYTE OF OPERAND ADDRESS
  >   MEANS   HIGH BYTE OF OPERAND ADDRESS

  SUFFIXES:
  ,X  MEANS   INDEXED BY X
  ,Y  MEANS   INDEXED BY Y
  +N  MEANS   LABEL ADDRESS PLUS N WHERE N LESS THAN 10
  -N  MEANS   LABEL ADDRESS MINUS N WHERE N LESS THAN 10

PARENTHESES ARE USED TO INDICATE INDIRECT ADDRESSING

IMMEDIATE MODE ADDRESSING IS INDICATED BY SYNTAX
  ASCII LITERALS,DECIMAL NUMBERS,AND TWO DIGIT HEX NUMBERS INDICATE IMMEDIATE
  MODE ADDRESSING

FORMAT REQUIREMENTS:
THE ASSSEMBLER HAS AN INPUT PARSER.  LABELS AND CONTROL LINES MUST
BEGIN IN COLUMN ONE.  A TAB OR SPACE IS USED TO SEPARATE OTHER FIELDS.
MULTIPLE TABS OR SPACES MAY BE USED.  CONTROL LINES ARE NOT PARSED.

CONTROL LINES:
  *NAME XXXXXXXXX   WHERE XXXXXXXXX IS THE PROGRAM NAME
  *END              INDICATES END OF INPUT
  *LOCATE $XXXX     WHERE XXXX INDICATES THE HEX ORIGIN LOCATION
                      FOR ASSEMBLY OF CODE FOLLOWING THIS LINE
  *CODE             INDICATES START OF INSTRUCTION SEQUENCE
  *LABEL            INDICATES START OF LABEL TABLE INSERTS
  **                COMMENT LINES BEGIN WITH DOUBLE ASTERISKS
  ;                   OR WITH A SEMICOLON

SYM MONITOR LABELS FOR SEVERAL MONITOR SUBROUTINES AND OTHER
IMPORTANT VARIABLES ARE AUTOMATICALLY RECOGNIZED IF THE
INPUT FILE NAME ENDS WITH  .SYM  OR IS LEFT BLANK IN RESPONSE TO
THE ASSEMBLER FILE NAME QUESTION.  THE LIST OF INCLUDED MONITOR LABELS
WILL BE PRINTED OUT WITH THE ASSEMBLED PROGRAM.

MULTIPLE DATA BYTES OF THE SAME TYPE MAY BE ENTERED ON THE 
SAME LINE,EXAMPLES:
       $00 12 FE A3 2B A8       (HEX)
       #0 12 124 255 3          (DECIMAL)
       @MESSAGE TEXT.@          (ASCII)

NOTE: ASCII STRINGS ARE ASSEMBLED IN REVERSE ORDER,END WITH @
THE FIRST BYTE OF AN ASSEMBLED ASCII STRING IS THE NUMBER OF BYTES
IN THE STRING.  IT IS USED WITH THE PRINT (PRI) MACRO, AS IN THE 
FOLLOWING EXAMPLE:
LABEL5    PRI   STRING           PRINT MESSAGE STRING
....                   (INDEX REG Y IS USED BY THE MACRO)
....
STRING    @THIS LINE WILL BE PRINTED.@
....

IF PRC IS USED INSTEAD OF PRI, THEN CRLF WILL BE PRINTED BEFORE THE
STRING IS PRINTED.


THE *LABEL COMMAND IS USED TO ENTER EXTERNAL LABELS AS FOLLOWS:
*LABEL
LABEL1 $8AC3
LBL2   $A00F
LABEL3 $0003
LABEL4    $0005       ZERO PAGE ADDRESS EXTERNAL TO PROGRAM
*CODE
BEGIN  LDA    LABEL1          GET LABEL1
*END



***************************************************************************
***************************************************************************

INSTRUCTIONS FOR USING THE DOWNLOADER

A SWITCH BOX MUST BE CONSTRUCTED FOR SWITCHING THE RS232 LINES
BETWEEN THE VAX, THE TERMINAL, AND THE 6502 MICROCOMPUTER.
THE DOWNLOADER IS SPECIFICALLY FOR THE SYM-1.

  (1) SET THE SWITCHES FOR COMMUNICATION BETWEEN THE TERMINAL AND THE VAX,
      WITH THE SYM DISCONNECTED  
  (2) RUN ASSEMBLER, REQUEST THE DOWNLOADER
  (3) GIVE APPROPRIATE RESPONSES
  (4) SET THE SWITCHES FOR COMMUNICATION BETWEEN THE VAX AND THE
      SYM-1 WITH THE TERMINAL LISTENING (ONLY) TO THE SYM-1 OUTPUT
      (TWO INPUTS WILL BE CONNECTED TO THE SYM OUTPUT)
  (5) AFTER A FIVE SECOND DELAY, THE DOWNLOAD WILL BEGIN USING
      THE DEPOSIT COMMAND OF THE SYM-1
  (6) AFTER THE DOWNLOAD IS COMPLETED SUCCESSFULLY, THE SYM-1 WILL
      BEEP AND SCAN THE LED DISPLAY

IN THE CLOSED LOOP MODE, ERRORS IN TRANSMISSION ARE DETECTED AND
CORRECTIONS ATTEMPTED.

                     SWITCH BOX DIAGRAM

                      INPUT SELECTOR


                                    S1      |---------------------------- OUT
 IN    ---------------------------\         |
                                   \   o----*                    SYM
  VAX                            o  \       |           ----------------- IN
                                 |          |          / 
 OUT  -------------------*-------------------------o  /   
                         |       |          |          S2 o          
                         |       --------------------     |          
                         |                  |       |     |      
                         ---------o     /  o-       *-----|                    
                                       / S3         |                 
                                      /             |                  
                                     |           ----                      
                                     |           |                        
                                    IN   TERM   OUT


*****************************************************************************
*****************************************************************************

THE ASSEMBLER GENERATES A '.PRT' FILE AS THE LISTING.  SOMETIMES IT IS 
DESIRABLE TO GENERATE A SOURCE CODE FILE FROM THE LISTING FILE.  THE
ASSEMBLER CONTAINS A ROUTINE TO ACCOMPLISH THAT FEAT.  JUST RUN THE
ASSEMBLER AND ANSWER THE APPROPRIATE QUESTIONS.

*****************************************************************************
*****************************************************************************