home *** CD-ROM | disk | FTP | other *** search
- ─OCUMENTATION FOR ┴╙
-
- ┴╙ IS AN ASSEMBLER FOR THE ├OMMODORE 64. ┴N ASSEMBLER IS A
- PROGRAM USED TO TRANSLATE MACHINE LANGUAGE PROGRAMS FROM
- PERSON-READABLE FORM (THE SOURCE PROGRAM) TO A MACHINE-USABLE
- FORM (THE OBJECT PROGRAM). ╘HE ASSEMBLER ALLOWS YOU TO WRITE,
- MAINTAIN, AND MODIFY A LARGE, COMPLICATED MACHINE LANGUAGE
- PROGRAM.
-
- ╧PERATION:
-
- ┴╙ REQUIRES THE SOURCE FILE TO BE PUT IN ONE OR MORE TEXT FILES
- ON A FLOPPY DISK. ┴FTER YOU HAVE CREATED THE SOURCE FILES, YOU
- RUN ┴╙ AS FOLLOWS:
-
- LOAD "AS",8
- RUN
-
- ┴╙ ASKS YOU FOR THE NAME OF THE SOURCE FILE. ╔F YOU TYPE
- "BLURFO" FOR THE NAME, ┴╙ FIRST LOOKS FOR A FILE NAMED "BLURFO".
- ╔F IT CANNOT FIND "BLURFO", THEN IT LOOKS FOR "BLURFO.A". ╔F
- IT CANNOT FIND EITHER ONE, IT PRINTS AN ERROR MESSAGE AND EXITS.
- ╔F IT FINDS EITHER ONE, IT CREATES AN OBJECT FILE CALLED
- "BLURFO.O". ╘HE FILENAME YOU TYPE MUST NOT BE LONGER THAN 14
- CHARACTERS, TO MAKE ROOM FOR THE EXTENSION ".O".
-
- ╘HEN ┴╙ ASKS YOU IF YOU WANT TO MAKE A LIST FILE. ┘OU SHOULD
- TYPE "Y" OR "N". ╘HE LIST FILE, WHICH IN THE CURRENT EXAMPLE
- WOULD BE NAMED "BLURFO.L", LISTS THE NUMERIC VALUE OF EVERY BYTE
- IN THE OBJECT FILE, ALONGSIDE THE ADDRESS AT WHICH THE BYTE WILL
- BE LOADED AND THE SOURCE LINE CORRESPONDING TO THAT BYTE. ╠IST
- FILES ARE USEFUL IN DEBUGGING PROGRAMS.
-
- ┴LL THESE FILES MUST BE ON A DISK DRIVE WITH DEVICE NUMBER 8
- AND, IF A DUAL DRIVE, DRIVE NUMBER 0.
-
- ┴FTER OPTIONALLY CREATING THE LIST FILE, ┴╙ BEGINS THE FIRST
- PASS. ╒NLESS THERE IS AN ERROR ON THE DISK DRIVE, YOU WILL NOT
- SEE ANYTHING ON THE SCREEN DURING THE FIRST PASS. ╬O OUTPUT IS
- WRITTEN TO EITHER THE OBJECT FILE OR THE OPTIONAL LIST FILE
- DURING THE FIRST PASS. ╘HE ONLY PURPOSE OF THE FIRST PASS IS TO
- FIGURE OUT THE ADDRESSES WHERE THE PROGRAM WILL BE LOCATED, AND
- THEREBY ASSIGN NUMERIC VALUES TO EACH LABEL AND SYMBOL IN YOUR
- PROGRAM (╙EE BELOW FOR MORE ABOUT SYMBOLS AND LABELS).
-
- ┴FTER THE FIRST PASS IS COMPLETED, ┴╙ PRINTS THE MESSAGE
- "┬EGINNING 2ND PASS" AND DOES JUST THAT. ─URING THE 2ND PASS,
- YOU SHOULD SEE ON THE SCREEN A LISTING OF YOUR SOURCE PROGRAM,
- BUT WITH VARIOUS NUMBERS OVER IN THE LEFT MARGIN, AND VARIOUS
- ERROR MESSAGES PRECEDING THE ERRONEOUS SOURCE LINES. ╔F YOU
- CHOSE TO MAKE A LIST FILE, THE TEXT YOU SEE ON THE SCREEN WILL
- BE THE TEXT YOU GET IN THE LIST FILE. ═EANWHILE THE OBJECT
- PROGRAM IS BEING WRITTEN TO THE OBJECT FILE.
-
- ╞INALLY YOU WILL SEE THE MESSAGE "┼RRORS DETECTED: 0" WHICH
- INDICATES THAT ┴╙ DID NOT DETECT ANY OF THE ERRORS IN YOUR
- PROGRAM. ╬OTE THAT ANY ERRORS THAT ┴╙ DETECTS ARE, IN A SENSE,
- "MERE WARNINGS", IN THAT (EXCEPT FOR ╔/╧ ERRORS), YOU STILL ARE
- GIVEN AN OBJECT FILE WHICH CAN BE LOADED AND RUN.
-
- ┴T ANY POINT IN EITHER THE FIRST OR SECOND PASS, YOU MAY CUT OFF
- THE ASSEMBLY BY HITTING THE ╥╒╬/╙╘╧╨ KEY. ┘OU SHOULD DELETE THE
- INCOMPLETE OBJECT AND LIST FILES WHICH WILL HAVE BEEN CREATED.
-
- ┴FTER ┴╙ EXITS, YOU CAN LOAD AND RUN THE OBJECT FILE BY TYPING:
-
- LOAD "BLURFO.O",8,1
- SYS N
-
- WHERE N IS THE ADDRESS OF THE START OF YOUR PROGRAM.
-
- ═ISCELLANOUS SPECIFICATIONS:
-
- ┴╙ WILL NOT WORK WITH DISK DRIVES OTHER THAN A ├OMMODORE 1541 OR
- AN ═╙─ ╙─-2. ╔F CHANGES ARE MADE TO THE ╥╧═'S IN THESE MODELS,
- IT MAY NOT EVEN WORK WITH THEM. ┴╙ USES LOCATIONS 2049 TO 40959
- (0801 TO 9╞╞╞ IN HEXADECIMAL), AND 251 TO 254 (FB TO FE IN
- HEXADECIMAL). ┴╙ USES LOGICAL FILE NUMBERS 2 AND 3.
-
- ─IFFERENCES FROM OTHER ASSEMBLERS:
-
- ╘HERE ARE NUMEROUS DIFFERENCS BETWEEN ┴╙ AND OTHER ASSEMBLERS
- FOR THE ├-64. ═ANY OF THESE ARE "ADDED FEATURES" OF ┴╙ WHICH
- WILL NOT INTERFERE WITH THE ASSEMBLY OF PROGRAMS WRITTEN FOR
- ANOTHER ASSEMBLER. ╘HE FOLLOWING ARE THE MAJOR DIFFERENCES
- WHICH MUST BE TAKEN INTO ACCOUNT TO MODIFY A PROGRAM WRITTEN FOR
- ANOTHER ASSEMBLER:
-
- 1. ┼VERY LABEL MUST BE FOLLOWED BY A COLON (":").
-
- 2. ╘HE DIRECTIVE * = N IS NOT SUPPORTED. ╔N OTHER ASSEMBLERS,
- THIS DIRECTIVE IS USED PRIMARILY FOR TWO PURPOSES. ╘HE FIRST
- PURPOSE IS TO ESTABLISH THE ADDRESS FOR THE FIRST BYTE IN THE
- OBJECT PROGRAM. ╞OR THAT PURPOSE, REPLACE:
-
- * = 2049
-
- WITH:
-
- .ORIGIN 2049
-
- ╘HE SECOND COMMON PURPOSE IS TO ALLOCATE AN AREA OF MEMORY
- WITHOUT SPECIFING THE CONTENTS OF THAT MEMORY. ╞OR THAT
- PURPOSE, REPLACE:
-
- * = * + 1
-
- WITH:
-
- .BLKB 1
-
- 3. ├OMMODORE'S ASSEMBLER HAS A DIRECTIVE CALLED ".BYT" WITH CAN
- BE USED TO GENERATE BOTH NUMERIC AND TEXT DATA. ╔N ┴╙, THIS
- DIRECTIVE IS CALLED ".BYTE", AND ONLY GENERATES NUMERIC DATA,
- WHILE THE .ASCII DIRECTIVE GENERATES TEXT DATA. ╘HEREFORE,
- REPLACE:
-
- .BYT 15, '╘EXT STRING', 0
-
- WITH:
-
- .BYTE 15
- .ASCII '╘EXT STRING'
- .BYTE 0
-
- 4. ┴╙ LACKS THE MACRO DIRECTIVES, CONDITIONAL ASSEMBLY
- DIRECTIVES, AND OTHER SPECIALIZED DIRECTIVES FOUND IN OTHER
- ASSEMBLERS.
-
- 5. ┴╙ DOES NOT REQUIRE OR ALLOW THE ".END" DIRECTIVE WHICH MANY
- ASSEMBLERS REQUIRE AT THE END OF A SOURCE FILE. ┴CTUALLY, ┴╙
- IGNORES THE .END AS AN UNRECOGNIZED DIRECTIVE, BUT YOU SHOULD
- DELETE THE .END TO AVOID THE ERROR MESAGE.
-
- ╞ORMAT OF SOURCE FILE:
-
- ╘HE SOURCE FILE SHOULD BE A SEQUENTIAL FILE, WITH EACH LINE
- TERMINATED BY A ╥┼╘╒╥╬ CHARACATER. ╠INES ARE LIMITED TO 255
- CHARACTERS, NOT INCLUDING THE ╥┼╘╒╥╬ CHARACTER. ┬LANK LINES ARE
- LEGAL, AND SPACES CAN BE PUT IN LIBERALLY TO IMPROVE READABILITY
- (EXCEPTIONS: SPACES MAY NOT BE PUT IN THE MIDDLE OF A NUMERAL OR
- AN IDENTIFIER). ╒PPER AND LOWER CASE LETTERS ARE TREATED
- IDENTICALLY EXCEPT IN .ASCII OR .ASCIZ DIRECTIVES AND IN
- CHARACTER LITERALS. ┴ SEMICOLON (";") IS USED TO INDICATE THE
- BEGINNING OF A COMMENT. ┴LL TEXT AFTER THE SEMICOLON, AND THE
- SEMICOLON ITSELF, IS IGNORED (EXCEPTIONS: TEXT STRINGS IN .ASCII
- AND .ASCIZ DIRECTIVES AND CHARACTER LITERALS).
-
- ┴ VALID LINE CAN BE ANY OF THE FOLLOWING:
-
- 1. ┴ BLANK LINE.
-
- 2. ┴ SYMBOL DEFINITION, E.G.:
-
- CURSORDOWN = 17
-
- 3. ┴N INSTRUCTION FOR THE 6510 MICROPROCESOR, E.G.:
-
- LDA # 0
-
- 4. ┴N ASSEMBLER DIRECTIVE, E.G.:
-
- .BYTE 5
-
- 5. ┴NY OF THE ABOVE (1-4) PRECEDED BY ONE OR MORE LABELS, E.G.:
-
- START: STARTLOOP: LDA # 0
- LENGTH: .BYTE 0
- BLANKLINE: ; COMMENT
-
- ┬LANK LINES:
-
- ┬LANK LINES ARE USEFUL FOR THE FOLLOWING PURPOSES: TO MAKE THE
- SOURCE OR LIST FILE MORE READABLE, TO HOLD A LABEL, AND TO HOLD
- COMMENTS. ╔ APOLOGIZE TO PEOPLE WHO WOULD NOT CONSIDER A LINE
- HAVING A LABEL AND/OR A COMMENT TO BE A "BLANK LINE".
-
- ╙YMBOL DEFINITIONS:
-
- ┴ SYMBOL DEFINITION IS USED TO DEFINE A NAME TO REPRESENT A
- NUMERIC VALUE. ╧NE USE OF SYMBOLS IS TO REFER TO ADDRESSES NOT
- LOCATED WITHIN THE OBJECT FILE, FOR EXAMPLE, ╦┼╥╬┴╠ ROUTINES,
- PAGE ZERO, THE SPECIAL ADDRESSES USED BY THE VIDEO, SOUND, AND
- ╔/╧ CHIPS, AND VECTORS:
-
- CHROUT = 65490
- CURRENT.KEY = 197
- COLOR.MEMORY = $─800
- ┴─╙╥1 = 54277
- CIA1.DATA.PORT.┴ = $DC00
- IRQ.VECTOR = 788
-
- ╙YMBOLS CAN BE USED FOR VARIOUS CONSTANTS IN YOUR PROGRAM, TO
- MAKE THE PROGRAM EASIER TO UNDERSTAND AND TO MODIFY, E.G.:
-
- SPACE.CHAR = 32
- DISK.DEVICENUM = 8
- POINTER = 251
-
- ╙OMETIMES YOU MAY USE A SYMBOL TO REFER TO A MEMORY LOCATION
- WITHIN THE OBJECT FILE. ╔N GENERAL, LABELS ARE PREFERRED OVER
- SYMBOLS FOR THIS PURPOSE. ╚OWEVER, NOTE THAT THE FOLLOWING ARE
- VERY SIMILAR IN EFFECT:
-
- LOCATION: ; LABEL
- LOCATION = * ; SYMBOL
-
- ╘HE DIFFERENCE IS THAT A SYMBOL CAN BE REDEFINED MANY TIMES
- WITHIN THE PROGRAM WITHOUT ERROR, WHILE A LABEL IS SUPPOSED TO
- REFER TO ONLY ONE LOCATION. ╘HE ONE INSTANCE IN WHICH IT MAKES
- SENSE TO USE A SYMBOL IS TO MARK THE BEGINNING OF A LOOP:
-
- LOOP = *
- ; BODY OF LOOP
- DEX
- BNE LOOP
-
- ╙INCE THE ASSEMBLER USES THE MOST RECENTLY-ASSIGNED VALUE OF THE
- SYMBOL, THIS PATTERN CAN BE USED FOR MANY LOOPS, WITHOUT HAVING
- TO THINK OF DISTINCT NAMES FOR THE START OF EACH LOOP. ┬UT NOTE
- THAT THIS PATTERN WILL FAIL MISERABLY FOR A FORWARD BRANCH, OR
- FOR A LOOP WITHIN A LOOP.
-
- ┬ECAUSE THE FIRST PASS OF THE ASSEMBLER IS DEVOTED TO DEFINING
- LABELS AND SYMBOLS, YOU CAN REFER TO A SYMBOL OR LABEL THAT IS
- DEFINED LATER IN THE SOURCE FILE. ╘HIS IS CALLED A "FORWARD
- REFERENCE". ═ORE PRECISELY, YOU ARE ALLOWED ONE LEVEL OF
- FORWARD REFERENCE. ╞OR EXAMPLE:
-
- A = B + 40
- B = 1024
-
- IS LEGAL, BUT:
-
- A = B
- B = C
- C = 100
-
- IS NOT LEGAL. ┘OU SHOULD NOT, HOWEVER, USE EVEN A SINGLE-LEVEL
- FORWARD REFERENCE IN A .BLKB OR .BLKW DIRECTIVE. (╘HESE
- DIRECTIVES ARE DESCRIBED BELOW). ╘HE ASSEMBLER USES THESE
- DIRECTIVES IN THE FIRST PASS TO FIGURE OUT HOW MUCH MEMORY TO
- ALLOCATE. ╔F A SYMBOL USED IN A .BLKB OR .BLKW DIRECTIVE IS
- UNDEFINED ON THE FIRST PASS, THEN ALL SUBSEQUENT LABELS WILL BE
- DEFINED INCORRECTLY. ╙YMBOLS THAT REFER TO PAGE ZERO SHOULD BE
- DEFINED BEFORE THEY ARE USED. ╙INCE INSTRUCTIONS REFERRING TO
- PAGE ZERO USUALLY TAKE 2 BYTES, AS OPPOSED TO 3 BYTES FOR
- ADDRESSES ON ANY OTHER PAGE, THE ASSEMBLER NEEDS TO KNOW DURING
- THE FIRST PASS WHETHER AN INSTRUCTION REFERS TO PAGE ZERO OR
- NOT. ╔F THE ADDRESS IS SPECIFIED BY AN UNDEFINED SYMBOL, THE
- ASSEMBLER ASSUMES THAT THE ADDRESS IS ╬╧╘ ON PAGE ZERO. ╔F THIS
- ASSUMPTION PROVES INCORRECT, ALL SUBSEQUENTLY-DEFINED LABELS
- WILL BE DEFINED INCORRECTLY. ╘HEREFORE, ALL SYMBOLS REFERRING
- TO PAGE ZERO ═╒╙╘ BE DEFINED BEFORE THE INSTRUCTIONS THAT REFER
- TO THE SYMBOLS.
-
- ╙INCE IT IS AN ERROR TO REDEFINE A LABEL, IT IS ALSO AN ERROR TO
- DEFINE A SYMBOL WITH THE SAME NAME AS A LABEL.
-
- ╔DENTIFIERS:
-
- ┴N "IDENTIFIER" IS THE NAME USED FOR A SYMBOL OR LABEL. ┴N
- IDENTIFIER MUST START WITH A LETTER, AND CAN HAVE LETTERS,
- NUMERIC DIGITS, OR PERIODS FOR SUBSEQUENT CHARACTERS. ╘HE
- LENGTH OF AN IDENTIFIER IS NOT LIMITED OTHER THAN BY THE MAXIMUM
- LENGTH (255 CHARACTERS) OF A SOURCE LINE. ╒PPER AND LOWER CASE
- LETTERS ARE TREATED IDENTICALLY IN IDENTIFIERS. ╘HE NAMES ┴, ╪,
- AND ┘ SHOULD NOT BE USED, EVEN THOUGH LEGAL, BECAUSE OTHER
- ASSEMBLERS FORBID THEIR USE. ╘HIS ASSEMBLER ALLOWS THEIR USE,
- EXCEPT THAT A LONE ┴ AS AN OPERAND TO A 6510 INSTRUCTION WILL BE
- CONFUSED FOR A REFERENCE TO THE 6510'S ACCUMULATER.
-
- ┼XAMPLES OF LEGAL IDENTIFIERS: AND ILLEGAL IDENTIFIERS:
-
- ╤ 8
- ┴3333333 3┴┴┴┴┴┴┴
- A.B.C .A.B.C
-
- ═ACHINE INSTRUCTIONS:
-
- (┴FTER ALL, THE WHOLE POINT OF AN ASSEMBLER IS TO LET YOU ENTER
- MACHINE INSTRUCTIONS.) ┴╙ RECOGNIZES THE STANDARD 56
- INSTRUCTION MNEMONICS, WHICH YOU MAY TYPE IN EITHER UPPER OR
- LOWER CASE. ┴╙ USES THE STANDARD PUNCTUATION FOR THE VARIOUS
- ADDRESSING MODES:
-
- CLC ; IMPLIED
- ADC # 1 ; IMMEDIATE
- ASL ┴ ; ACCUMULATOR
- LDX ┌ ; ZERO PAGE
- ORA ┌,╪ ; ZERO PAGE, ╪
- AND ┌,┘ ; ZERO PAGE, ┘
- CPX ┼ ; ABSOLUTE
- LDY ┼,╪ ; ABSOLUTE, ╪
- LDX ┼,┘ ; ABSOLUTE, ┘
- BEQ ┼ ; RELATIVE
- EOR (┌,╪) ; (INDIRECT,╪)
- SBC (┌),┘ ; (INDIRECT),┘
- JMP (┌) ; ABSOLUTE INDIRECT
-
- WHERE ┌ IS AN EXPRESSION WHOSE VALUE IS BETWEEN 0-255, AND ┼ IS
- AN EXPRESSION WHOSE VALUE IS NOT NECESSARILY BETWEEN 0-255.
- (╘HE EXACT DEFINITION OF AN "EXPRESSION" WILL BE GIVEN LATER.)
- ╬OTE THAT IT IS OFTEN NOT THE PUNCTUATION, BUT THE VALUE OF THE
- EXPRESSION, WHICH DISTINGUISHES CERTAIN ADDRESSING MODES.
-
- ┘OU MAY, BUT NEED NOT, PUT IN SPACES BEFORE OR AFTER A "(", ")",
- ",", OR "#". ┘OU MUST PUT IN A SPACE AFTER THE NAME OF THE
- INSTRUCTION IF THE OPERAND STARTS WITH A LETTER.
-
- ┼XPRESSIONS:
-
- ┴N EXPRESSION IS A BUNCH OF TEXT THAT REPRESENTS A NUMERIC
- VALUE. ╘HE FOLLOWING ARE LEGAL EXPRESSIONS:
-
- 1. ┴ DECIMAL NUMERAL (0 TO 65535):
-
- 1024
-
- 2. ┴ HEXADECIMAL NUMERAL, PRECEDED BY A DOLLAR SIGN:
-
- $FF
- $─├00
-
- 3. ┴ BINARY NUMERAL, PRECEDED BY A PERCENT SIGN:
-
- %10000001
-
- 4. ┴ CHARACTER LITERAL, PRECEDED BY AN APOSTROPHE:
-
- '┴
-
- 5. ┴N IDENTIFIER:
-
- LOOP
- COLOR.MEMORY
- DISK.DEVICENUM
-
- ╘HE NUMERIC VALUE OF AN IDENTIFIER IS GIVEN BY ITS MOST
- RECENT DEFINITION AS A SYMBOL OR AS A LABEL.
-
- 6. ╘HE "LOCATION COUNTER", EITHER A PERIOD OR ASTERISK:
-
- .
- *
-
- ╘HE NUMERIC VALUE OF THE LOCATION COUNTER IS THE ADDRESS IN
- THE OBJECT PROGRAM CORRESPONDING TO THE BEGINNING OF THE
- CURRENT SOURCE LINE.
-
- 7. ┴N EXPRESSION PRECEDED BY A "UNARY OPERATOR":
-
- < ┼ ; LOW-ORDER BYTE OF ┼
- > ┼ ; HIGH-ORDER BYTE OF ┼
- - ┼ ; NEGATIVE ┼ (TWO'S COMPLEMENT)
- ? ┼ ; LOGICAL (ONE'S) COMPLEMENT OF ┼
-
- 8. ┴N EXPRESSION FOLLOWED BY A "BINARY OPERATOR" FOLLOWED BY A
- SECOND EXPRESSION:
-
- ┼1 + ┼2 ; ADDITION
- ┼1 - ┼2 ; SUBTRACTION
- ┼1 * ┼2 ; MULTIPLICATION
- ┼1 / ┼2 ; INTEGER DIVISION
- ┼1 % ┼2 ; MODULO (REMAINDER AFTER INTEGER DIVISION)
- ┼1 & ┼2 ; LOGICAL ┴╬─
- ┼1 ! ┼2 ; LOGICAL ╧╥
- ┼1 ^ ┼2 ; ARITHMETIC SHIFT
- ; LEFT SHIFT IF ┼2 IS POSITIVE
- ; RIGHT SHIFT IF ┼2 IS NEGATIVE
-
- ╔F MORE THAN ONE OPERATOR IS USED IN THE SAME EXPRESSION, THEY
- ARE DONE IN THE FOLLOWING ORDER: ? - (NEGATIVE) * % / -
- (SUBTRACTION) + & ! ^ < >. ╔F THE SAME OPERATOR APPEARS TWICE,
- EVALUATION IS FROM RIGHT TO LEFT. ┘OU CAN OVERRIDE THE NORMAL
- ORDER OF EVALUATION BY USING BRACKETS ("[" AND "]") AS
- PARENTHESES.
-
- ╬OTE, HOWEVER, THAT ALL THESE ARITHMETIC OPERATIONS MAY BE DONE
- ONLY ON CONSTANT EXPRESSIONS. ╘HAT IS, YOU CANNOT USE THE ABOVE
- OPERATORS TO ADD THE CONTENTS OF VARIOUS MEMORY LOCATIONS. ╘HE
- USEFULNESS OF ELABORATE ASSEMBLER EXPRESSIONS IS PRIMARILY TO
- DEFINE ONE SYMBOL IN TERMS OF ANOTHER, SO THAT IF YOU CHANGE ONE
- SYMBOL, VARIOUS OTHER SYMBOLS ARE AUTOMATICALLY REDEFINED.
-
- ┴SSEMBLER DIRECTIVES:
-
- ╘HE ASSEMBLER DIRECTIVES PERFORM VARIOUS MISCELLANEOUS FUNCTIONS:
-
- .BYTE
- .BYTE ┌
- .BYTE ┌1, ┌2, ... , ┌3
-
- ╘HE .BYTE DIRECTIVE ALLOCATES ONE OR MORE BYTES IN THE
- OBJECT FILE. ╔F AN EXPRESSION IS GIVEN, THE EXPRESSION IS
- PUT IN AS THE INITIAL VALUE OF THE BYTE. ╔F MORE THAN ONE
- EXPRESSION IS GIVEN, SEPARATED BY COMMAS, THAN A BYTE IS
- ALLOCATED FOR EACH EXPRESSION. ╔F NO EXPRESSION IS GIVEN, A
- SINGLE BYTE IS ALLOCATED WITH AN INITIAL VALUE OF ZERO. ╧NLY
- THE LOW-ORDER BYTE OF THE EXPRESSION IS USED.
-
- .WORD
- .WORD ┼
- .WORD ┼1, ┼2, ... , ┼3
-
- ╘HE .WORD DIRECTIVE IS VERY SIMILAR TO THE .BYTE DIRECTIVE,
- BUT TWO BYTES ARE ALLOCATED FOR EACH EXPRESSION, THE FIRST
- FOR THE LOW-ORDER BYTE AND THE SECOND FOR THE HIGH-ORDER
- BYTE. ╔F NO EXPRESSION IS GIVEN, THEN TWO BYTES ARE
- ALLOCATED, BOTH INITIALIZED TO ZERO.
-
- ╬OTE THAT
-
- .WORD ┼
-
- IS EXACTLY EQUIVALENT TO:
-
- .BYTE < ┼, > ┼
-
- .BLKB
- .BLKB ┼
-
- ╘HE .BLKB DIRECTIVE IS USED TO ALLOCATE MEMORY IN THE OBJECT
- PROGRAM WITHOUT SPECIFYING THE INITIAL VALUES. ╔F AN
- EXPRESSION IS GIVEN, THAT NUMBER OF BYTES IS ALLOCATED. ╔F
- NO EXPRESSION IS GIVEN, 1 BYTE IS ALLOCATED. ┬UT IF THE
- VALUE OF THE EXPRESSION IS ZERO, NO BYTES ARE ALLOCATED. ╔F
- THE EXPRESSION IS NEGATIVE OR GREATER THAN 32767, AN ERROR
- MESSAGE IS GENERATED AND NO BYTES ARE ALLOCATED.
-
- .BLKW
- .BLKW ┼
-
- ╘HE .BLKW DIRECTIVE IS SIMILAR TO THE .BLKB DIRECTIVE,
- EXCEPT THAT THE NUMBER OF BYTES TO BE ALLOCATED IS
- MULTIPLIED BY TWO.
-
- .ASCII "╘EXT STRING"
-
- ╘HE .ASCII DIRECTIVE IS USED TO ALLOCATE MEMORY IN THE
- OBJECT PROGRAM FOR A TEXT STRING. ╧NE BYTE IS ALLOCATED FOR
- EACH CHARACTER IN THE TEXT STRING, AND EACH BYTE IS
- INITIALIZED WITH THE CHARACTER CODE (NOT THE CODE FOR SCREEN
- MEMORY) FOR THE CHARACTER FROM THE SOURCE LINE. ╘HE TEXT
- STRING CAN BE DELIMITED BY ANY CHARACTER NOT FOUND WITHIN
- THE TEXT STRING, WITH THE EXCEPTION THAT A SEMICOLON (";"),
- A SPACE, OR A ╥┼╘╒╥╬ CHARACTER MAY NOT BE USED AS THE
- DELIMITER. ╬OTE THAT THE CHARACTER CODES ARE NOT TRUE ┴╙├╔╔
- BUT THE ├OMMODORE VARIANT, SOMETIMES CALLED ╨┼╘╙├╔╔.
-
- .ASCIZ /╘EXT STRING/
-
- ╘HE .ASCIZ DIRECTIVE IS SIMILAR TO THE .ASCII DIRECTIVE,
- EXCEPT THAT A ZERO BYTE IS ALLOCATED AFTER THE TEXT STRING.
-
- .ORIGIN ┼
-
- ╘HE .ORIGIN DIRECTIVE IS USED AT THE BEGINNING OF THE SOURCE
- FILE TO SPECIFY THE ADDRESS TO BE USED FOR THE FIRST BYTE IN
- THE OBJECT FILE. ╔N FACT, THE .ORIGIN DIRECTIVE NEED NOT BE
- LITERALLY ON THE FIRST LINE OF THE SOURCE FILE, BUT IT MUST
- COME BEFORE ANY SOURCE LINES THAT ALLOCATE MEMORY IN THE
- OBJECT FILE. ╔F YOU DO NOT INCLUDE A .ORIGIN DIRECTIVE, THE
- DEFAULT ORIGIN IS 49152 ($├000 HEXADECIMAL).
-
- .PRINT ┼ TEXT
-
- ╘HE .PRINT DIRECTIVE IS USED TO PRINT MESSAGES ON THE
- TERMINAL AND INTO THE OPTIONAL LIST FILE. ╘HE EXPRESSION
- FOLLOWING THE .PRINT IS EVALUATED. ╘HE NUMERIC VALUE OF
- THAT EXPRESSION IS PRINTED, IN DECIMAL, TO THE SCREEN AND
- INTO THE OPTIONAL LIST FILE, FOLLOWED BY ANY OTHER TEXT ON
- THE SOURCE LINE. ╘HE MAIN USE OF THE .PRINT DIRECTIVE IS TO
- PRODUCE A MEMORY MAP RATHER THAN A FULL LISTING OF EVERY
- LINE OF THE PROGRAM. ╘HE OUTPUT FROM THE .PRINT DIRECTIVE
- IS PERFORMED EVEN IF THE .NOLIST DIRECTIVE IS IN EFFECT.
-
- ┼XAMPLES:
-
- .PRINT SUBROUTINE SUBROUTINE
- SUBROUTINE:
- ...
- ...
- RTS
-
- .PRINT * - SUBROUTINE, LENGTH OF SUBROUTINE
-
- .PRINT * ┼ND OF FILE
- .PRINT * - START, ╙IZE OF FILE
-
- .NOLIST
-
- ╘HE .NOLIST DIRECTIVE TURNS OFF THE LISTING OF EVERY SOURCE
- LINE TO THE SCREEN AND TO THE OPTIONAL LIST FILE. ╘HE
- OUTPUT OF THE .PRINT DIRECTIVE IS STILL PERFORMED, HOWEVER.
-
- .LIST
-
- ╘HE .LIST DIRECTIVE TURNS BACK ON THE LISTING OF EVERY
- SOURCE LINE, AFTER A PREVIOUS .NOLIST DIRECTIVE. ╔N THIS
- WAY, YOU CAN MAKE A LIST FILE OF ONLY THOSE PARTICULAR
- ROUTINES WHICH YOU ARE INTERESTED IN DEBUGGING.
-
- .INCLUDE IDENTIFIER
-
- ╘HE .INCLUDE DIRECTIVE IS USED TO INCORPORATE ANOTHER SOURCE
- FILE AS THOUGH IT HAD BEEN MERGED WITH THE PRINCIPAL SOURCE
- FILE. ╘HIS ALLOWS YOU TO HAVE A LIBRARY OF COMMON
- SUBROUTINES WITHOUT HAVING TO MAKE A SEPARATE COPY OF THE
- SUBROUTINES IN EACH PROGRAM IN WHICH YOU USE THEM. ╔T IS
- ALSO USEFUL TO MAKE SEVERAL, SLIGHTLY DIFFERENT VERSIONS OF
- THE SAME PROGRAM. ╔T IS ALSO USEFUL TO DIVIDE UP A LARGE
- PROGRAM FOR MORE CONVENIENT EDITING. ╔T IS ALSO USEFUL FOR
- INCORPORATING A LIST OF COMMON SYMBOL DEFINITIONS, SUCH AS
- THE ADDRESSES OF THE ╦┼╥╬┴╠ ROUTINES. ╘HE ASSEMBLER FIRST
- LOOKS FOR A FILE WHOSE NAME IS GIVEN BY THE IDENTIFIER
- (CONVERTED TO LOWER CASE). ╔F THAT FILE CANNOT BE FOUND, IT
- ADDS ".A" TO THE FILENAME AND LOOKS FOR THAT NAME. ┴FTER
- THE ASSEMBLER HAS FINISHED PROCESSING THE INCLUDED SOURCE
- FILE, IT RETURNS TO THE PRINCIPAL SOURCE FILE AND CONTINUES
- FROM THE LINE FOLLOWING THE .INCLUDE DIRECTIVE. ╘HE
- INCLUDED FILE CAN INCLUDE A "THIRD-LEVEL" SOURCE FILE, BUT
- THERE IS A MAXIMUM OF FOUR LEVELS OF INCLUSION.
-
- ═ODIFICATIONS:
-
- ┴╙ REQUIRES ALL THE FILES IT ACCESSES TO BE ON A SINGLE DISK
- DRIVE, WHICH IS DEVICE NUMBER 8 BY DEFAULT. ╘O CHANGE THE
- DEVICE NUMBER FROM 8 TO 9, POKE 2061,9.
-
- ┼RROR MESSAGES:
-
- ╞ILE NAME MAY BE 1 TO 14 CHARS LONG
-
- ╔F, WHEN THE ASSEMBLER INITIALLY ASKS FOR THE NAME OF THE
- SOURCE FILE, YOU HIT THE ╥┼╘╒╥╬ KEY WITH NO NAME, OR GIVE A
- NAME LONGER THAN 14 CHARACTERS, YOU GET THIS MESSAGE.
-
- ├OULDN'T CREATE OBJECT FILE:
- ├OULDN'T CREATE LIST FILE:
- ┼RROR READING SOURCE FILE:
- ┼RROR WRITING TO LIST FILE:
- ┼RROR WRITING TO LIST FILE:
- ┼RROR CLOSING OBJECT FILE:
- ┼RROR CLOSING LIST FILE:
- ┼RROR RE-READING SOURCE FILE
-
- ┴LSO PRINTS THE ERROR MESSAGE GIVEN BY THE DISK DRIVE
-
- ├OULDN'T OPEN CONTROL OR RANDOM CHANNEL
-
- ═AY INDICATE THAT YOU RAN ┴╙ WHILE FILE CHANNELS WERE STILL
- OPENED FROM ANOTHER PROGRAM.
-
- ╠INE TOO LONG
-
- ╙OURCE LINE LONGER THAN 255 CHARACTERS.
-
- ┴SSEMBLY TERMINATED BY ╙╘╧╨ KEY
-
- ╒NRECOGNIZED STATEMENT
-
- ╘HE FIRST NON-BLANK CHARACTER IN THE SOURCE LINE WAS NEITHER
- A LETTER NOR A PERIOD. ═AY INDICATE THAT THE SOURCE LINE
- CONTAINS A NON-PRINTING CHARACTER.
-
- ╒NRECOGNIZED OPCODE
-
- ═AY INDICATE A MISSPELLED OPCODE, OR THE ACCIDENTAL OMISSION
- OF THE COLON AFTER A LABEL OR OF THE = FOLLOWING A SYMBOL
- DEFINITION.
-
- ┼XTRA INPUT IGNORED
-
- ═AY INDICATE THE OMISSION OF THE SEMICOLON PRECEDING A
- COMMENT. ═AY ALSO INDICATE THE OMISSION OF AN OPERATOR FROM
- AN EXPRESSION.
-
- ╬O CHARACTER AFTER '
-
- ╔NDICATES THAT AN APOSTROPHE WAS THE LAST CHARACTER IN THE
- SOURCE LINE.
-
- ═ALFORMED EXPRESSION
-
- ╫ARNING - EXTRA [
-
- ╫ARNING - EXTRA ]
-
- ╫ARNING - ARITHMETIC OVERFLOW
-
- ╔NDICATES AN ARITHMETIC OPERATION WHOSE RESULT REQUIRED MORE
- THAN 16 BITS.
-
- ╫ARNING - DIVISION BY ZERO
-
- ╔NTERNAL ASSEMBLER ERROR
-
- ╘HIS MESSAGE INDICATES THAT THE ASSEMBLER WAS NOT ABLE TO
- EVALUATE AN EXPRESSION PROPERLY.
-
- ╙ECOND ARGUMENT TO ^ MUST BE -15 TO 15
-
- ╒NDEFINED SYMBOL: IDENTIFIER
-
- ╙YMBOL TABLE FULL
-
- ╔NDICATES THAT THE ASSEMBLER WAS NOT ABLE TO CREATE A LABEL
- OR SYMBOL BECAUSE OF INSUFFICIENT AVAILABLE MEMORY.
-
- ╫ARNING - REDEFINING LABEL:
-
- ╘HIS MAY INDICATE THAT THE SOURCE FILE HAS TWO DIFFERENT
- LABELS WITH THE SAME NAME, OR A SYMBOL AND A LABEL WITH THE
- SAME NAME. ╔T ALSO MAY INDICATE A DUPLICATE NAME FROM AN
- INCLUDE FILE. ╔F, HOWEVER, YOU GET THIS ERROR MESSAGE FOR
- EVERY LABEL IN THE SOURCE FILE, IT MEANS THAT THE VALUE OF
- THE LABELS CHANGED FROM THE FIRST PASS TO THE SECOND PASS.
- ╘HIS, IN TURN, USUALLY MEANS THAT A SYMBOL WAS USED IN A
- .BLKB OR .BLKW DIRECTIVE BEFORE IT WAS DEFINED, OR THAT A
- SYMBOL REFERRING TO PAGE ZERO WAS USED BEFORE IT WAS
- DEFINED.
-
- ╒NRECOGNIZED ADDRESSING MODE
-
- ╔MPROPER ADDRESSING MODE FOR OPCODE
-
- ╬OT ALL THE POSSIBLE ADDRESSING MODES CAN BE USED FOR ANY
- PARTICULAR OPCODE. ╙EE THE ├-64 ╨ROGRAMMER'S ╥EFERENCE
- ═ANUAL, OR ANY OTHER BOOK ABOUT THE 6502, FOR A DESCRIPTION
- OF THE PERMISSIBLE ADDRESSING MODES FOR EACH OPCODE.
-
- ┼XPRESSION TRUNCATED
-
- ┴N EXPRESSION USED WITH AN OPCODE IN IMMEDIATE MODE OR USED
- IN A .BYTE DIRECTIVE WAS NOT WITHIN THE RANGE -256 TO 255.
-
- ┬RANCH OUT OF RANGE
-
- ╘HE VARIOUS BRANCH INSTRUCTIONS FOR THE 6510 MAY ONLY BE
- USED TO BRANCH TO A LOCATION LESS THAN 254 BYTES BEFORE THE
- BRANCH INSTRUCTION OR LESS THAN 253 BYTES AFTER THE BRANCH
- INSTRUCTION. ╘HIS ERROR MESSAGE IS ALSO OFTEN GIVEN IF THE
- EXPRESSION SPECIFYING THE ADDRESS USES AN UNDEFINED
- IDENTIFIER.
-
- ╒NRECOGNIZED DIRECTIVE
-
- ┴ SOURCE LINE BEGAN WITH A PERIOD, BUT WAS NOT ONE OF THE
- ASSEMBLER DIRECTIVES DESCRIBED ABOVE.
-
- ╫ARNING - EXTRA COMMA
-
- ┴ .BYTE OR .WORD DIRECTIVE HAD A TRAILING COMMA AFTER THE
- LAST EXPRESSION.
-
- ╫ARNING - COMMA INSERTED
-
- ┴ .BYTE OR .WORD DIRECTIVE HAD TWO EXPRESSIONS NOT SEPARATED
- BY A COMMA.
-
- ┴RGUMENT MUST BE POSITIVE
-
- ╘HE ARGUMENT TO .BLKB OR TO .BLKW WAS NEGATIVE, OR GREATER
- THAN 32767.
-
- ═ISSING STRING
-
- ┴N .ASCII OR .ASCIZ DIRECTIVE DID NOT HAVE A TEXT STRING, OR
- USED A SEMICOLON AS THE DELIMITER.
-
- ╒NTERMINATED STRING
-
- ┴N .ASCII OR .ASCIZ DIRECTIVE WAS FOLLOWED BY A TEXT STRING
- WHICH WAS NOT FOLLOWED BY THE DELIMITER CHARACTER PRECEDING
- THE TEXT STRING.
-
- ╧RIGIN CAN ONLY BE SET ONCE AT START
-
- ╘HE SOURCE FILE CONTAINED TWO .ORIGIN DIRECTIVES, OR
- CONTAINED AN .ORIGIN DIRECTIVE AFTER A SOURCE LINE WHICH
- ALLOCATED MEMORY. ═AY INDICATE THAT AN INCLUDE FILE HAD AN
- .ORIGIN DIRECTIVE.
-
- ╞ILENAME MUST START WITH A LETTER
-
- ┴ .INCLUDE DIRECTIVE WAS NOT FOLLOWED BY AN IDENTIFIER.
-
- ┴LREADY AT MAXIMUM DEPTH OF INCLUDES
-
- ╧NLY FOUR LEVELS OF SOURCE FILES ARE ALLOWED.
-
- ├OULDN'T OPEN INCLUDE FILE:
-
- ╨RINTS THE ERROR MESSAGE FROM THE DISK DRIVE
-
- ╞ILE NUMBER NOT OPENED
- ╞ILE NUMBER OUT OF RANGE
- ╞ILE NUMBER ALREADY IN USE
- ─IRECTORY NOT UPDATED
-
- ╘HESE MESSAGES INDICATE INTERNAL ERRORS IN THE FILE-HANDLING
- ROUTINES USED BY THE ASSEMBLER.
-
- ╞OR MORE INFORMATION, CALL ╠EW ╠ASHER AT (617) 547-0340
-