home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / AS2.ARC / AS2.DOC next >
Encoding:
Text File  |  2019-04-13  |  23.3 KB  |  706 lines

  1. ─OCUMENTATION FOR ┴╙
  2.  
  3. ┴╙ IS AN ASSEMBLER FOR THE ├OMMODORE 64.  ┴N ASSEMBLER IS A
  4. PROGRAM USED TO TRANSLATE MACHINE LANGUAGE PROGRAMS FROM
  5. PERSON-READABLE FORM (THE SOURCE PROGRAM) TO A MACHINE-USABLE
  6. FORM (THE OBJECT PROGRAM).  ╘HE ASSEMBLER ALLOWS YOU TO WRITE,
  7. MAINTAIN, AND MODIFY A LARGE, COMPLICATED MACHINE LANGUAGE
  8. PROGRAM.
  9.  
  10. ╧PERATION:
  11.  
  12. ┴╙ REQUIRES THE SOURCE FILE TO BE PUT IN ONE OR MORE TEXT FILES
  13. ON A FLOPPY DISK.  ┴FTER YOU HAVE CREATED THE SOURCE FILES, YOU
  14. RUN ┴╙ AS FOLLOWS:
  15.  
  16.     LOAD "AS",8
  17.     RUN
  18.  
  19. ┴╙ ASKS YOU FOR THE NAME OF THE SOURCE FILE.  ╔F YOU TYPE
  20. "BLURFO" FOR THE NAME, ┴╙ FIRST LOOKS FOR A FILE NAMED "BLURFO".
  21. ╔F IT CANNOT FIND "BLURFO", THEN IT LOOKS FOR "BLURFO.A".  ╔F
  22. IT CANNOT FIND EITHER ONE, IT PRINTS AN ERROR MESSAGE AND EXITS.
  23. ╔F IT FINDS EITHER ONE, IT CREATES AN OBJECT FILE CALLED
  24. "BLURFO.O".  ╘HE FILENAME YOU TYPE MUST NOT BE LONGER THAN 14
  25. CHARACTERS, TO MAKE ROOM FOR THE EXTENSION ".O".
  26.  
  27. ╘HEN ┴╙ ASKS YOU IF YOU WANT TO MAKE A LIST FILE.  ┘OU SHOULD
  28. TYPE "Y" OR "N".  ╘HE LIST FILE, WHICH IN THE CURRENT EXAMPLE
  29. WOULD BE NAMED "BLURFO.L", LISTS THE NUMERIC VALUE OF EVERY BYTE
  30. IN THE OBJECT FILE, ALONGSIDE THE ADDRESS AT WHICH THE BYTE WILL
  31. BE LOADED AND THE SOURCE LINE CORRESPONDING TO THAT BYTE.  ╠IST
  32. FILES ARE USEFUL IN DEBUGGING PROGRAMS.
  33.  
  34. ┴LL THESE FILES MUST BE ON A DISK DRIVE WITH DEVICE NUMBER 8
  35. AND, IF A DUAL DRIVE, DRIVE NUMBER 0.
  36.  
  37. ┴FTER OPTIONALLY CREATING THE LIST FILE, ┴╙ BEGINS THE FIRST
  38. PASS.  ╒NLESS THERE IS AN ERROR ON THE DISK DRIVE, YOU WILL NOT
  39. SEE ANYTHING ON THE SCREEN DURING THE FIRST PASS.  ╬O OUTPUT IS
  40. WRITTEN TO EITHER THE OBJECT FILE OR THE OPTIONAL LIST FILE
  41. DURING THE FIRST PASS.  ╘HE ONLY PURPOSE OF THE FIRST PASS IS TO
  42. FIGURE OUT THE ADDRESSES WHERE THE PROGRAM WILL BE LOCATED, AND
  43. THEREBY ASSIGN NUMERIC VALUES TO EACH LABEL AND SYMBOL IN YOUR
  44. PROGRAM (╙EE BELOW FOR MORE ABOUT SYMBOLS AND LABELS).
  45.  
  46. ┴FTER THE FIRST PASS IS COMPLETED, ┴╙ PRINTS THE MESSAGE
  47. "┬EGINNING 2ND PASS" AND DOES JUST THAT.  ─URING THE 2ND PASS,
  48. YOU SHOULD SEE ON THE SCREEN A LISTING OF YOUR SOURCE PROGRAM,
  49. BUT WITH VARIOUS NUMBERS OVER IN THE LEFT MARGIN, AND VARIOUS
  50. ERROR MESSAGES PRECEDING THE ERRONEOUS SOURCE LINES.  ╔F YOU
  51. CHOSE TO MAKE A LIST FILE, THE TEXT YOU SEE ON THE SCREEN WILL
  52. BE THE TEXT YOU GET IN THE LIST FILE.  ═EANWHILE THE OBJECT
  53. PROGRAM IS BEING WRITTEN TO THE OBJECT FILE.
  54.  
  55. ╞INALLY YOU WILL SEE THE MESSAGE "┼RRORS DETECTED: 0" WHICH
  56. INDICATES THAT ┴╙ DID NOT DETECT ANY OF THE ERRORS IN YOUR
  57. PROGRAM.  ╬OTE THAT ANY ERRORS THAT ┴╙ DETECTS ARE, IN A SENSE,
  58. "MERE WARNINGS", IN THAT (EXCEPT FOR ╔/╧ ERRORS), YOU STILL ARE
  59. GIVEN AN OBJECT FILE WHICH CAN BE LOADED AND RUN.
  60.  
  61. ┴T ANY POINT IN EITHER THE FIRST OR SECOND PASS, YOU MAY CUT OFF
  62. THE ASSEMBLY BY HITTING THE ╥╒╬/╙╘╧╨ KEY.  ┘OU SHOULD DELETE THE
  63. INCOMPLETE OBJECT AND LIST FILES WHICH WILL HAVE BEEN CREATED.
  64.  
  65. ┴FTER ┴╙ EXITS, YOU CAN LOAD AND RUN THE OBJECT FILE BY TYPING:
  66.  
  67.         LOAD "BLURFO.O",8,1
  68.         SYS N
  69.  
  70. WHERE N IS THE ADDRESS OF THE START OF YOUR PROGRAM.
  71.  
  72. ═ISCELLANOUS SPECIFICATIONS:
  73.  
  74. ┴╙ WILL NOT WORK WITH DISK DRIVES OTHER THAN A ├OMMODORE 1541 OR
  75. AN ═╙─ ╙─-2.  ╔F CHANGES ARE MADE TO THE ╥╧═'S IN THESE MODELS,
  76. IT MAY NOT EVEN WORK WITH THEM.  ┴╙ USES LOCATIONS 2049 TO 40959
  77. (0801 TO 9╞╞╞ IN HEXADECIMAL), AND 251 TO 254 (FB TO FE IN
  78. HEXADECIMAL).  ┴╙ USES LOGICAL FILE NUMBERS 2 AND 3.
  79.  
  80. ─IFFERENCES FROM OTHER ASSEMBLERS:
  81.  
  82. ╘HERE ARE NUMEROUS DIFFERENCS BETWEEN ┴╙ AND OTHER ASSEMBLERS
  83. FOR THE ├-64.  ═ANY OF THESE ARE "ADDED FEATURES" OF ┴╙ WHICH
  84. WILL NOT INTERFERE WITH THE ASSEMBLY OF PROGRAMS WRITTEN FOR
  85. ANOTHER ASSEMBLER.  ╘HE FOLLOWING ARE THE MAJOR DIFFERENCES
  86. WHICH MUST BE TAKEN INTO ACCOUNT TO MODIFY A PROGRAM WRITTEN FOR
  87. ANOTHER ASSEMBLER:
  88.  
  89. 1.  ┼VERY LABEL MUST BE FOLLOWED BY A COLON (":").
  90.  
  91. 2.  ╘HE DIRECTIVE * = N IS NOT SUPPORTED.  ╔N OTHER ASSEMBLERS,
  92. THIS DIRECTIVE IS USED PRIMARILY FOR TWO PURPOSES.  ╘HE FIRST
  93. PURPOSE IS TO ESTABLISH THE ADDRESS FOR THE FIRST BYTE IN THE
  94. OBJECT PROGRAM.  ╞OR THAT PURPOSE, REPLACE:
  95.  
  96.         * = 2049
  97.  
  98. WITH:
  99.  
  100.         .ORIGIN 2049
  101.  
  102. ╘HE SECOND COMMON PURPOSE IS TO ALLOCATE AN AREA OF MEMORY
  103. WITHOUT SPECIFING THE CONTENTS OF THAT MEMORY.  ╞OR THAT
  104. PURPOSE, REPLACE:
  105.  
  106.         * = * + 1
  107.  
  108. WITH:
  109.  
  110.         .BLKB 1
  111.  
  112. 3.  ├OMMODORE'S ASSEMBLER HAS A DIRECTIVE CALLED ".BYT" WITH CAN
  113. BE USED TO GENERATE BOTH NUMERIC AND TEXT DATA.  ╔N ┴╙, THIS
  114. DIRECTIVE IS CALLED ".BYTE", AND ONLY GENERATES NUMERIC DATA,
  115. WHILE THE .ASCII DIRECTIVE GENERATES TEXT DATA.  ╘HEREFORE,
  116. REPLACE:
  117.  
  118.         .BYT 15, '╘EXT STRING', 0
  119.  
  120. WITH:
  121.  
  122.         .BYTE 15
  123.         .ASCII '╘EXT STRING'
  124.         .BYTE 0
  125.  
  126. 4.  ┴╙ LACKS THE MACRO DIRECTIVES, CONDITIONAL ASSEMBLY
  127. DIRECTIVES, AND OTHER SPECIALIZED DIRECTIVES FOUND IN OTHER
  128. ASSEMBLERS.
  129.  
  130. 5.  ┴╙ DOES NOT REQUIRE OR ALLOW THE ".END" DIRECTIVE WHICH MANY
  131. ASSEMBLERS REQUIRE AT THE END OF A SOURCE FILE.  ┴CTUALLY, ┴╙
  132. IGNORES THE .END AS AN UNRECOGNIZED DIRECTIVE, BUT YOU SHOULD
  133. DELETE THE .END TO AVOID THE ERROR MESAGE.
  134.  
  135. ╞ORMAT OF SOURCE FILE:
  136.  
  137. ╘HE SOURCE FILE SHOULD BE A SEQUENTIAL FILE, WITH EACH LINE
  138. TERMINATED BY A ╥┼╘╒╥╬ CHARACATER.  ╠INES ARE LIMITED TO 255
  139. CHARACTERS, NOT INCLUDING THE ╥┼╘╒╥╬ CHARACTER.  ┬LANK LINES ARE
  140. LEGAL, AND SPACES CAN BE PUT IN LIBERALLY TO IMPROVE READABILITY
  141. (EXCEPTIONS: SPACES MAY NOT BE PUT IN THE MIDDLE OF A NUMERAL OR
  142. AN IDENTIFIER).  ╒PPER AND LOWER CASE LETTERS ARE TREATED
  143. IDENTICALLY EXCEPT IN .ASCII OR .ASCIZ DIRECTIVES AND IN
  144. CHARACTER LITERALS.  ┴ SEMICOLON (";") IS USED TO INDICATE THE
  145. BEGINNING OF A COMMENT.  ┴LL TEXT AFTER THE SEMICOLON, AND THE
  146. SEMICOLON ITSELF, IS IGNORED (EXCEPTIONS: TEXT STRINGS IN .ASCII
  147. AND .ASCIZ DIRECTIVES AND CHARACTER LITERALS).
  148.  
  149. ┴ VALID LINE CAN BE ANY OF THE FOLLOWING:
  150.  
  151. 1.  ┴ BLANK LINE.
  152.  
  153. 2.  ┴ SYMBOL DEFINITION, E.G.:
  154.  
  155.         CURSORDOWN = 17
  156.  
  157. 3.  ┴N INSTRUCTION FOR THE 6510 MICROPROCESOR, E.G.:
  158.  
  159.         LDA # 0
  160.  
  161. 4.  ┴N ASSEMBLER DIRECTIVE, E.G.:
  162.  
  163.         .BYTE 5
  164.  
  165. 5.  ┴NY OF THE ABOVE (1-4) PRECEDED BY ONE OR MORE LABELS, E.G.:
  166.  
  167.         START: STARTLOOP: LDA # 0
  168.         LENGTH: .BYTE 0
  169.         BLANKLINE: ; COMMENT
  170.  
  171. ┬LANK LINES:
  172.  
  173. ┬LANK LINES ARE USEFUL FOR THE FOLLOWING PURPOSES:  TO MAKE THE
  174. SOURCE OR LIST FILE MORE READABLE, TO HOLD A LABEL, AND TO HOLD
  175. COMMENTS.  ╔ APOLOGIZE TO PEOPLE WHO WOULD NOT CONSIDER A LINE
  176. HAVING A LABEL AND/OR A COMMENT TO BE A "BLANK LINE".
  177.  
  178. ╙YMBOL DEFINITIONS:
  179.  
  180. ┴ SYMBOL DEFINITION IS USED TO DEFINE A NAME TO REPRESENT A
  181. NUMERIC VALUE.  ╧NE USE OF SYMBOLS IS TO REFER TO ADDRESSES NOT
  182. LOCATED WITHIN THE OBJECT FILE, FOR EXAMPLE, ╦┼╥╬┴╠ ROUTINES,
  183. PAGE ZERO, THE SPECIAL ADDRESSES USED BY THE VIDEO, SOUND, AND
  184. ╔/╧ CHIPS, AND VECTORS:
  185.  
  186.         CHROUT = 65490
  187.         CURRENT.KEY = 197
  188.         COLOR.MEMORY = $─800
  189.         ┴─╙╥1  = 54277
  190.         CIA1.DATA.PORT.┴ = $DC00
  191.         IRQ.VECTOR = 788
  192.  
  193. ╙YMBOLS CAN BE USED FOR VARIOUS CONSTANTS IN YOUR PROGRAM, TO
  194. MAKE THE PROGRAM EASIER TO UNDERSTAND AND TO MODIFY, E.G.:
  195.  
  196.         SPACE.CHAR = 32
  197.         DISK.DEVICENUM = 8
  198.         POINTER = 251
  199.  
  200. ╙OMETIMES YOU MAY USE A SYMBOL TO REFER TO A MEMORY LOCATION
  201. WITHIN THE OBJECT FILE.  ╔N GENERAL, LABELS ARE PREFERRED OVER
  202. SYMBOLS FOR THIS PURPOSE.  ╚OWEVER, NOTE THAT THE FOLLOWING ARE
  203. VERY SIMILAR IN EFFECT:
  204.  
  205.         LOCATION:       ; LABEL
  206.         LOCATION = *    ; SYMBOL
  207.  
  208. ╘HE DIFFERENCE IS THAT A SYMBOL CAN BE REDEFINED MANY TIMES
  209. WITHIN THE PROGRAM WITHOUT ERROR, WHILE A LABEL IS SUPPOSED TO
  210. REFER TO ONLY ONE LOCATION.  ╘HE ONE INSTANCE IN WHICH IT MAKES
  211. SENSE TO USE A SYMBOL IS TO MARK THE BEGINNING OF A LOOP:
  212.  
  213.         LOOP = *
  214.             ; BODY OF LOOP
  215.             DEX
  216.             BNE LOOP
  217.  
  218. ╙INCE THE ASSEMBLER USES THE MOST RECENTLY-ASSIGNED VALUE OF THE
  219. SYMBOL, THIS PATTERN CAN BE USED FOR MANY LOOPS, WITHOUT HAVING
  220. TO THINK OF DISTINCT NAMES FOR THE START OF EACH LOOP.  ┬UT NOTE
  221. THAT THIS PATTERN WILL FAIL MISERABLY FOR A FORWARD BRANCH, OR
  222. FOR A LOOP WITHIN A LOOP.
  223.  
  224. ┬ECAUSE THE FIRST PASS OF THE ASSEMBLER IS DEVOTED TO DEFINING
  225. LABELS AND SYMBOLS, YOU CAN REFER TO A SYMBOL OR LABEL THAT IS
  226. DEFINED LATER IN THE SOURCE FILE.  ╘HIS IS CALLED A "FORWARD
  227. REFERENCE".  ═ORE PRECISELY, YOU ARE ALLOWED ONE LEVEL OF
  228. FORWARD REFERENCE.  ╞OR EXAMPLE:
  229.  
  230.         A = B + 40
  231.         B = 1024
  232.  
  233. IS LEGAL, BUT:
  234.  
  235.         A = B
  236.         B = C
  237.         C = 100
  238.  
  239. IS NOT LEGAL.  ┘OU SHOULD NOT, HOWEVER, USE EVEN A SINGLE-LEVEL
  240. FORWARD REFERENCE IN A .BLKB OR .BLKW DIRECTIVE.  (╘HESE
  241. DIRECTIVES ARE DESCRIBED BELOW).  ╘HE ASSEMBLER USES THESE
  242. DIRECTIVES IN THE FIRST PASS TO FIGURE OUT HOW MUCH MEMORY TO
  243. ALLOCATE.  ╔F A SYMBOL USED IN A .BLKB OR .BLKW DIRECTIVE IS
  244. UNDEFINED ON THE FIRST PASS, THEN ALL SUBSEQUENT LABELS WILL BE
  245. DEFINED INCORRECTLY.  ╙YMBOLS THAT REFER TO PAGE ZERO SHOULD BE
  246. DEFINED BEFORE THEY ARE USED.  ╙INCE INSTRUCTIONS REFERRING TO
  247. PAGE ZERO USUALLY TAKE 2 BYTES, AS OPPOSED TO 3 BYTES FOR
  248. ADDRESSES ON ANY OTHER PAGE, THE ASSEMBLER NEEDS TO KNOW DURING
  249. THE FIRST PASS WHETHER AN INSTRUCTION REFERS TO PAGE ZERO OR
  250. NOT.  ╔F THE ADDRESS IS SPECIFIED BY AN UNDEFINED SYMBOL, THE
  251. ASSEMBLER ASSUMES THAT THE ADDRESS IS ╬╧╘ ON PAGE ZERO.  ╔F THIS
  252. ASSUMPTION PROVES INCORRECT, ALL SUBSEQUENTLY-DEFINED LABELS
  253. WILL BE DEFINED INCORRECTLY.  ╘HEREFORE, ALL SYMBOLS REFERRING
  254. TO PAGE ZERO ═╒╙╘ BE DEFINED BEFORE THE INSTRUCTIONS THAT REFER
  255. TO THE SYMBOLS.
  256.  
  257. ╙INCE IT IS AN ERROR TO REDEFINE A LABEL, IT IS ALSO AN ERROR TO
  258. DEFINE A SYMBOL WITH THE SAME NAME AS A LABEL.
  259.  
  260. ╔DENTIFIERS:
  261.  
  262. ┴N "IDENTIFIER" IS THE NAME USED FOR A SYMBOL OR LABEL.  ┴N
  263. IDENTIFIER MUST START WITH A LETTER, AND CAN HAVE LETTERS,
  264. NUMERIC DIGITS, OR PERIODS FOR SUBSEQUENT CHARACTERS.  ╘HE
  265. LENGTH OF AN IDENTIFIER IS NOT LIMITED OTHER THAN BY THE MAXIMUM
  266. LENGTH (255 CHARACTERS) OF A SOURCE LINE.  ╒PPER AND LOWER CASE
  267. LETTERS ARE TREATED IDENTICALLY IN IDENTIFIERS.  ╘HE NAMES ┴, ╪,
  268. AND ┘ SHOULD NOT BE USED, EVEN THOUGH LEGAL, BECAUSE OTHER
  269. ASSEMBLERS FORBID THEIR USE.  ╘HIS ASSEMBLER ALLOWS THEIR USE,
  270. EXCEPT THAT A LONE ┴ AS AN OPERAND TO A 6510 INSTRUCTION WILL BE
  271. CONFUSED FOR A REFERENCE TO THE 6510'S ACCUMULATER.
  272.  
  273. ┼XAMPLES OF LEGAL IDENTIFIERS:     AND ILLEGAL IDENTIFIERS:
  274.  
  275.             ╤                       8
  276.             ┴3333333                3┴┴┴┴┴┴┴
  277.             A.B.C                   .A.B.C
  278.  
  279. ═ACHINE INSTRUCTIONS:
  280.  
  281. (┴FTER ALL, THE WHOLE POINT OF AN ASSEMBLER IS TO LET YOU ENTER
  282. MACHINE INSTRUCTIONS.)  ┴╙ RECOGNIZES THE STANDARD 56
  283. INSTRUCTION MNEMONICS, WHICH YOU MAY TYPE IN EITHER UPPER OR
  284. LOWER CASE.  ┴╙ USES THE STANDARD PUNCTUATION FOR THE VARIOUS
  285. ADDRESSING MODES:
  286.  
  287.         CLC         ; IMPLIED
  288.         ADC # 1     ; IMMEDIATE
  289.         ASL ┴       ; ACCUMULATOR
  290.         LDX ┌       ; ZERO PAGE
  291.         ORA ┌,╪     ; ZERO PAGE, ╪
  292.         AND ┌,┘     ; ZERO PAGE, ┘
  293.         CPX ┼       ; ABSOLUTE
  294.         LDY ┼,╪     ; ABSOLUTE, ╪
  295.         LDX ┼,┘     ; ABSOLUTE, ┘
  296.         BEQ ┼       ; RELATIVE
  297.         EOR (┌,╪)   ; (INDIRECT,╪)
  298.         SBC (┌),┘   ; (INDIRECT),┘
  299.         JMP (┌)     ; ABSOLUTE INDIRECT
  300.  
  301. WHERE ┌ IS AN EXPRESSION WHOSE VALUE IS BETWEEN 0-255, AND ┼ IS
  302. AN EXPRESSION WHOSE VALUE IS NOT NECESSARILY BETWEEN 0-255. 
  303. (╘HE EXACT DEFINITION OF AN "EXPRESSION" WILL BE GIVEN LATER.) 
  304. ╬OTE THAT IT IS OFTEN NOT THE PUNCTUATION, BUT THE VALUE OF THE
  305. EXPRESSION, WHICH DISTINGUISHES CERTAIN ADDRESSING MODES.
  306.  
  307. ┘OU MAY, BUT NEED NOT, PUT IN SPACES BEFORE OR AFTER A "(", ")",
  308. ",", OR "#".  ┘OU MUST PUT IN A SPACE AFTER THE NAME OF THE
  309. INSTRUCTION IF THE OPERAND STARTS WITH A LETTER.
  310.  
  311. ┼XPRESSIONS:
  312.  
  313. ┴N EXPRESSION IS A BUNCH OF TEXT THAT REPRESENTS A NUMERIC
  314. VALUE.  ╘HE FOLLOWING ARE LEGAL EXPRESSIONS:
  315.  
  316. 1.  ┴ DECIMAL NUMERAL (0 TO 65535):
  317.  
  318.         1024
  319.  
  320. 2.  ┴ HEXADECIMAL NUMERAL, PRECEDED BY A DOLLAR SIGN:
  321.  
  322.         $FF
  323.         $─├00
  324.  
  325. 3.  ┴ BINARY NUMERAL, PRECEDED BY A PERCENT SIGN:
  326.  
  327.         %10000001
  328.  
  329. 4.  ┴ CHARACTER LITERAL, PRECEDED BY AN APOSTROPHE:
  330.  
  331.         '┴
  332.  
  333. 5.  ┴N IDENTIFIER:
  334.  
  335.         LOOP
  336.         COLOR.MEMORY
  337.         DISK.DEVICENUM
  338.  
  339.     ╘HE NUMERIC VALUE OF AN IDENTIFIER IS GIVEN BY ITS MOST
  340.     RECENT DEFINITION AS A SYMBOL OR AS A LABEL.
  341.  
  342. 6.  ╘HE "LOCATION COUNTER", EITHER A PERIOD OR ASTERISK:
  343.  
  344.         .
  345.         *
  346.  
  347.     ╘HE NUMERIC VALUE OF THE LOCATION COUNTER IS THE ADDRESS IN
  348.     THE OBJECT PROGRAM CORRESPONDING TO THE BEGINNING OF THE
  349.     CURRENT SOURCE LINE.
  350.  
  351. 7.  ┴N EXPRESSION PRECEDED BY A "UNARY OPERATOR":
  352.  
  353.         < ┼         ; LOW-ORDER BYTE OF ┼
  354.         > ┼         ; HIGH-ORDER BYTE OF ┼
  355.         - ┼         ; NEGATIVE ┼ (TWO'S COMPLEMENT)
  356.         ? ┼         ; LOGICAL (ONE'S) COMPLEMENT OF ┼
  357.  
  358. 8.  ┴N EXPRESSION FOLLOWED BY A "BINARY OPERATOR" FOLLOWED BY A
  359. SECOND EXPRESSION:
  360.  
  361.         ┼1 + ┼2     ; ADDITION
  362.         ┼1 - ┼2     ; SUBTRACTION
  363.         ┼1 * ┼2     ; MULTIPLICATION
  364.         ┼1 / ┼2     ; INTEGER DIVISION
  365.         ┼1 % ┼2     ; MODULO (REMAINDER AFTER INTEGER DIVISION)
  366.         ┼1 & ┼2     ; LOGICAL ┴╬─
  367.         ┼1 ! ┼2     ; LOGICAL ╧╥
  368.         ┼1 ^ ┼2     ; ARITHMETIC SHIFT
  369.                     ; LEFT SHIFT IF ┼2 IS POSITIVE
  370.                     ; RIGHT SHIFT IF ┼2 IS NEGATIVE
  371.  
  372. ╔F MORE THAN ONE OPERATOR IS USED IN THE SAME EXPRESSION, THEY
  373. ARE DONE IN THE FOLLOWING ORDER: ? - (NEGATIVE) * % / -
  374. (SUBTRACTION) + & ! ^ < >.  ╔F THE SAME OPERATOR APPEARS TWICE,
  375. EVALUATION IS FROM RIGHT TO LEFT.  ┘OU CAN OVERRIDE THE NORMAL
  376. ORDER OF EVALUATION BY USING BRACKETS ("[" AND "]") AS
  377. PARENTHESES.
  378.  
  379. ╬OTE, HOWEVER, THAT ALL THESE ARITHMETIC OPERATIONS MAY BE DONE
  380. ONLY ON CONSTANT EXPRESSIONS.  ╘HAT IS, YOU CANNOT USE THE ABOVE
  381. OPERATORS TO ADD THE CONTENTS OF VARIOUS MEMORY LOCATIONS.  ╘HE
  382. USEFULNESS OF ELABORATE ASSEMBLER EXPRESSIONS IS PRIMARILY TO
  383. DEFINE ONE SYMBOL IN TERMS OF ANOTHER, SO THAT IF YOU CHANGE ONE
  384. SYMBOL, VARIOUS OTHER SYMBOLS ARE AUTOMATICALLY REDEFINED.
  385.  
  386. ┴SSEMBLER DIRECTIVES:
  387.  
  388. ╘HE ASSEMBLER DIRECTIVES PERFORM VARIOUS MISCELLANEOUS FUNCTIONS:
  389.  
  390. .BYTE
  391. .BYTE ┌
  392. .BYTE ┌1, ┌2, ... , ┌3
  393.  
  394.     ╘HE .BYTE DIRECTIVE ALLOCATES ONE OR MORE BYTES IN THE
  395.     OBJECT FILE.  ╔F AN EXPRESSION IS GIVEN, THE EXPRESSION IS
  396.     PUT IN AS THE INITIAL VALUE OF THE BYTE.  ╔F MORE THAN ONE
  397.     EXPRESSION IS GIVEN, SEPARATED BY COMMAS, THAN A BYTE IS
  398.     ALLOCATED FOR EACH EXPRESSION.  ╔F NO EXPRESSION IS GIVEN, A
  399.     SINGLE BYTE IS ALLOCATED WITH AN INITIAL VALUE OF ZERO.  ╧NLY
  400.     THE LOW-ORDER BYTE OF THE EXPRESSION IS USED.
  401.  
  402. .WORD
  403. .WORD ┼
  404. .WORD ┼1, ┼2, ... , ┼3
  405.  
  406.     ╘HE .WORD DIRECTIVE IS VERY SIMILAR TO THE .BYTE DIRECTIVE,
  407.     BUT TWO BYTES ARE ALLOCATED FOR EACH EXPRESSION, THE FIRST
  408.     FOR THE LOW-ORDER BYTE AND THE SECOND FOR THE HIGH-ORDER
  409.     BYTE.  ╔F NO EXPRESSION IS GIVEN, THEN TWO BYTES ARE
  410.     ALLOCATED, BOTH INITIALIZED TO ZERO.
  411.  
  412.     ╬OTE THAT
  413.  
  414.             .WORD ┼
  415.  
  416.     IS EXACTLY EQUIVALENT TO:
  417.  
  418.             .BYTE < ┼, > ┼
  419.  
  420. .BLKB
  421. .BLKB ┼
  422.  
  423.     ╘HE .BLKB DIRECTIVE IS USED TO ALLOCATE MEMORY IN THE OBJECT
  424.     PROGRAM WITHOUT SPECIFYING THE INITIAL VALUES.  ╔F AN
  425.     EXPRESSION IS GIVEN, THAT NUMBER OF BYTES IS ALLOCATED.  ╔F
  426.     NO EXPRESSION IS GIVEN, 1 BYTE IS ALLOCATED.  ┬UT IF THE
  427.     VALUE OF THE EXPRESSION IS ZERO, NO BYTES ARE ALLOCATED.  ╔F
  428.     THE EXPRESSION IS NEGATIVE OR GREATER THAN 32767, AN ERROR
  429.     MESSAGE IS GENERATED AND NO BYTES ARE ALLOCATED.
  430.  
  431. .BLKW
  432. .BLKW ┼
  433.  
  434.     ╘HE .BLKW DIRECTIVE IS SIMILAR TO THE .BLKB DIRECTIVE,
  435.     EXCEPT THAT THE NUMBER OF BYTES TO BE ALLOCATED IS
  436.     MULTIPLIED BY TWO.
  437.  
  438. .ASCII "╘EXT STRING"
  439.  
  440.     ╘HE .ASCII DIRECTIVE IS USED TO ALLOCATE MEMORY IN THE
  441.     OBJECT PROGRAM FOR A TEXT STRING.  ╧NE BYTE IS ALLOCATED FOR
  442.     EACH CHARACTER IN THE TEXT STRING, AND EACH BYTE IS
  443.     INITIALIZED WITH THE CHARACTER CODE (NOT THE CODE FOR SCREEN
  444.     MEMORY) FOR THE CHARACTER FROM THE SOURCE LINE.  ╘HE TEXT
  445.     STRING CAN BE DELIMITED BY ANY CHARACTER NOT FOUND WITHIN
  446.     THE TEXT STRING, WITH THE EXCEPTION THAT A SEMICOLON (";"),
  447.     A SPACE, OR A ╥┼╘╒╥╬ CHARACTER MAY NOT BE USED AS THE
  448.     DELIMITER.  ╬OTE THAT THE CHARACTER CODES ARE NOT TRUE ┴╙├╔╔
  449.     BUT THE ├OMMODORE VARIANT, SOMETIMES CALLED ╨┼╘╙├╔╔.
  450.  
  451. .ASCIZ /╘EXT STRING/
  452.  
  453.     ╘HE .ASCIZ DIRECTIVE IS SIMILAR TO THE .ASCII DIRECTIVE,
  454.     EXCEPT THAT A ZERO BYTE IS ALLOCATED AFTER THE TEXT STRING.
  455.  
  456. .ORIGIN ┼
  457.  
  458.     ╘HE .ORIGIN DIRECTIVE IS USED AT THE BEGINNING OF THE SOURCE
  459.     FILE TO SPECIFY THE ADDRESS TO BE USED FOR THE FIRST BYTE IN
  460.     THE OBJECT FILE.  ╔N FACT, THE .ORIGIN DIRECTIVE NEED NOT BE
  461.     LITERALLY ON THE FIRST LINE OF THE SOURCE FILE, BUT IT MUST
  462.     COME BEFORE ANY SOURCE LINES THAT ALLOCATE MEMORY IN THE
  463.     OBJECT FILE.  ╔F YOU DO NOT INCLUDE A .ORIGIN DIRECTIVE, THE
  464.     DEFAULT ORIGIN IS 49152 ($├000 HEXADECIMAL).
  465.  
  466. .PRINT ┼ TEXT
  467.  
  468.     ╘HE .PRINT DIRECTIVE IS USED TO PRINT MESSAGES ON THE
  469.     TERMINAL AND INTO THE OPTIONAL LIST FILE.  ╘HE EXPRESSION
  470.     FOLLOWING THE .PRINT IS EVALUATED.  ╘HE NUMERIC VALUE OF
  471.     THAT EXPRESSION IS PRINTED, IN DECIMAL, TO THE SCREEN AND
  472.     INTO THE OPTIONAL LIST FILE, FOLLOWED BY ANY OTHER TEXT ON
  473.     THE SOURCE LINE.  ╘HE MAIN USE OF THE .PRINT DIRECTIVE IS TO
  474.     PRODUCE A MEMORY MAP RATHER THAN A FULL LISTING OF EVERY
  475.     LINE OF THE PROGRAM.  ╘HE OUTPUT FROM THE .PRINT DIRECTIVE
  476.     IS PERFORMED EVEN IF THE .NOLIST DIRECTIVE IS IN EFFECT. 
  477.  
  478.     ┼XAMPLES:
  479.  
  480.             .PRINT SUBROUTINE SUBROUTINE
  481.             SUBROUTINE: 
  482.                 ...
  483.                 ...
  484.                 RTS
  485.  
  486.             .PRINT * - SUBROUTINE, LENGTH OF SUBROUTINE
  487.  
  488.             .PRINT * ┼ND OF FILE
  489.             .PRINT * - START, ╙IZE OF FILE
  490.  
  491. .NOLIST
  492.  
  493.     ╘HE .NOLIST DIRECTIVE TURNS OFF THE LISTING OF EVERY SOURCE
  494.     LINE TO THE SCREEN AND TO THE OPTIONAL LIST FILE.  ╘HE
  495.     OUTPUT OF THE .PRINT DIRECTIVE IS STILL PERFORMED, HOWEVER.
  496.  
  497. .LIST
  498.  
  499.     ╘HE .LIST DIRECTIVE TURNS BACK ON THE LISTING OF EVERY
  500.     SOURCE LINE, AFTER A PREVIOUS .NOLIST DIRECTIVE.  ╔N THIS
  501.     WAY, YOU CAN MAKE A LIST FILE OF ONLY THOSE PARTICULAR
  502.     ROUTINES WHICH YOU ARE INTERESTED IN DEBUGGING.
  503.  
  504. .INCLUDE IDENTIFIER
  505.  
  506.     ╘HE .INCLUDE DIRECTIVE IS USED TO INCORPORATE ANOTHER SOURCE
  507.     FILE AS THOUGH IT HAD BEEN MERGED WITH THE PRINCIPAL SOURCE
  508.     FILE.  ╘HIS ALLOWS YOU TO HAVE A LIBRARY OF COMMON
  509.     SUBROUTINES WITHOUT HAVING TO MAKE A SEPARATE COPY OF THE
  510.     SUBROUTINES IN EACH PROGRAM IN WHICH YOU USE THEM.  ╔T IS
  511.     ALSO USEFUL TO MAKE SEVERAL, SLIGHTLY DIFFERENT VERSIONS OF
  512.     THE SAME PROGRAM.  ╔T IS ALSO USEFUL TO DIVIDE UP A LARGE
  513.     PROGRAM FOR MORE CONVENIENT EDITING.  ╔T IS ALSO USEFUL FOR
  514.     INCORPORATING A LIST OF COMMON SYMBOL DEFINITIONS, SUCH AS
  515.     THE ADDRESSES OF THE ╦┼╥╬┴╠ ROUTINES.  ╘HE ASSEMBLER FIRST
  516.     LOOKS FOR A FILE WHOSE NAME IS GIVEN BY THE IDENTIFIER
  517.     (CONVERTED TO LOWER CASE).  ╔F THAT FILE CANNOT BE FOUND, IT
  518.     ADDS ".A" TO THE FILENAME AND LOOKS FOR THAT NAME.  ┴FTER
  519.     THE ASSEMBLER HAS FINISHED PROCESSING THE INCLUDED SOURCE
  520.     FILE, IT RETURNS TO THE PRINCIPAL SOURCE FILE AND CONTINUES
  521.     FROM THE LINE FOLLOWING THE .INCLUDE DIRECTIVE.  ╘HE
  522.     INCLUDED FILE CAN INCLUDE A "THIRD-LEVEL" SOURCE FILE, BUT
  523.     THERE IS A MAXIMUM OF FOUR LEVELS OF INCLUSION.
  524.  
  525. ═ODIFICATIONS:
  526.  
  527. ┴╙ REQUIRES ALL THE FILES IT ACCESSES TO BE ON A SINGLE DISK
  528. DRIVE, WHICH IS DEVICE NUMBER 8 BY DEFAULT.  ╘O CHANGE THE
  529. DEVICE NUMBER FROM 8 TO 9, POKE 2061,9.
  530.  
  531. ┼RROR MESSAGES:
  532.  
  533. ╞ILE NAME MAY BE 1 TO 14 CHARS LONG
  534.  
  535.     ╔F, WHEN THE ASSEMBLER INITIALLY ASKS FOR THE NAME OF THE
  536.     SOURCE FILE, YOU HIT THE ╥┼╘╒╥╬ KEY WITH NO NAME, OR GIVE A
  537.     NAME LONGER THAN 14 CHARACTERS, YOU GET THIS MESSAGE.
  538.  
  539. ├OULDN'T CREATE OBJECT FILE:
  540. ├OULDN'T CREATE LIST FILE:
  541. ┼RROR READING SOURCE FILE:
  542. ┼RROR WRITING TO LIST FILE:
  543. ┼RROR WRITING TO LIST FILE:
  544. ┼RROR CLOSING OBJECT FILE:
  545. ┼RROR CLOSING LIST FILE:
  546. ┼RROR RE-READING SOURCE FILE
  547.  
  548.     ┴LSO PRINTS THE ERROR MESSAGE GIVEN BY THE DISK DRIVE
  549.  
  550. ├OULDN'T OPEN CONTROL OR RANDOM CHANNEL
  551.  
  552.     ═AY INDICATE THAT YOU RAN ┴╙ WHILE FILE CHANNELS WERE STILL
  553.     OPENED FROM ANOTHER PROGRAM.
  554.  
  555. ╠INE TOO LONG
  556.  
  557.     ╙OURCE LINE LONGER THAN 255 CHARACTERS.
  558.  
  559. ┴SSEMBLY TERMINATED BY ╙╘╧╨ KEY
  560.  
  561. ╒NRECOGNIZED STATEMENT
  562.  
  563.     ╘HE FIRST NON-BLANK CHARACTER IN THE SOURCE LINE WAS NEITHER
  564.     A LETTER NOR A PERIOD.  ═AY INDICATE THAT THE SOURCE LINE
  565.     CONTAINS A NON-PRINTING CHARACTER.
  566.  
  567. ╒NRECOGNIZED OPCODE
  568.  
  569.     ═AY INDICATE A MISSPELLED OPCODE, OR THE ACCIDENTAL OMISSION
  570.     OF THE COLON AFTER A LABEL OR OF THE = FOLLOWING A SYMBOL
  571.     DEFINITION.
  572.  
  573. ┼XTRA INPUT IGNORED
  574.  
  575.     ═AY INDICATE THE OMISSION OF THE SEMICOLON PRECEDING A
  576.     COMMENT.  ═AY ALSO INDICATE THE OMISSION OF AN OPERATOR FROM
  577.     AN EXPRESSION.
  578.  
  579. ╬O CHARACTER AFTER '
  580.  
  581.     ╔NDICATES THAT AN APOSTROPHE WAS THE LAST CHARACTER IN THE
  582.     SOURCE LINE.
  583.  
  584. ═ALFORMED EXPRESSION
  585.  
  586. ╫ARNING - EXTRA [
  587.  
  588. ╫ARNING - EXTRA ]
  589.  
  590. ╫ARNING - ARITHMETIC OVERFLOW
  591.  
  592.     ╔NDICATES AN ARITHMETIC OPERATION WHOSE RESULT REQUIRED MORE
  593.     THAN 16 BITS.
  594.  
  595. ╫ARNING - DIVISION BY ZERO
  596.  
  597. ╔NTERNAL ASSEMBLER ERROR
  598.  
  599.     ╘HIS MESSAGE INDICATES THAT THE ASSEMBLER WAS NOT ABLE TO
  600.     EVALUATE AN EXPRESSION PROPERLY.
  601.  
  602. ╙ECOND ARGUMENT TO ^ MUST BE -15 TO 15
  603.  
  604. ╒NDEFINED SYMBOL: IDENTIFIER
  605.  
  606. ╙YMBOL TABLE FULL
  607.  
  608.     ╔NDICATES THAT THE ASSEMBLER WAS NOT ABLE TO CREATE A LABEL
  609.     OR SYMBOL BECAUSE OF INSUFFICIENT AVAILABLE MEMORY.
  610.  
  611. ╫ARNING - REDEFINING LABEL:
  612.  
  613.     ╘HIS MAY INDICATE THAT THE SOURCE FILE HAS TWO DIFFERENT
  614.     LABELS WITH THE SAME NAME, OR A SYMBOL AND A LABEL WITH THE
  615.     SAME NAME.  ╔T ALSO MAY INDICATE A DUPLICATE NAME FROM AN
  616.     INCLUDE FILE.  ╔F, HOWEVER, YOU GET THIS ERROR MESSAGE FOR
  617.     EVERY LABEL IN THE SOURCE FILE, IT MEANS THAT THE VALUE OF
  618.     THE LABELS CHANGED FROM THE FIRST PASS TO THE SECOND PASS. 
  619.     ╘HIS, IN TURN, USUALLY MEANS THAT A SYMBOL WAS USED IN A
  620.     .BLKB OR .BLKW DIRECTIVE BEFORE IT WAS DEFINED, OR THAT A
  621.     SYMBOL REFERRING TO PAGE ZERO WAS USED BEFORE IT WAS
  622.     DEFINED.
  623.  
  624. ╒NRECOGNIZED ADDRESSING MODE
  625.  
  626. ╔MPROPER ADDRESSING MODE FOR OPCODE
  627.  
  628.     ╬OT ALL THE POSSIBLE ADDRESSING MODES CAN BE USED FOR ANY
  629.     PARTICULAR OPCODE.  ╙EE THE ├-64 ╨ROGRAMMER'S ╥EFERENCE
  630.     ═ANUAL, OR ANY OTHER BOOK ABOUT THE 6502, FOR A DESCRIPTION
  631.     OF THE PERMISSIBLE ADDRESSING MODES FOR EACH OPCODE.
  632.  
  633. ┼XPRESSION TRUNCATED
  634.  
  635.     ┴N EXPRESSION USED WITH AN OPCODE IN IMMEDIATE MODE OR USED
  636.     IN A .BYTE DIRECTIVE WAS NOT WITHIN THE RANGE -256 TO 255.
  637.  
  638. ┬RANCH OUT OF RANGE
  639.  
  640.     ╘HE VARIOUS BRANCH INSTRUCTIONS FOR THE 6510 MAY ONLY BE
  641.     USED TO BRANCH TO A LOCATION LESS THAN 254 BYTES BEFORE THE
  642.     BRANCH INSTRUCTION OR LESS THAN 253 BYTES AFTER THE BRANCH
  643.     INSTRUCTION.  ╘HIS ERROR MESSAGE IS ALSO OFTEN GIVEN IF THE
  644.     EXPRESSION SPECIFYING THE ADDRESS USES AN UNDEFINED
  645.     IDENTIFIER.
  646.  
  647. ╒NRECOGNIZED DIRECTIVE
  648.  
  649.     ┴ SOURCE LINE BEGAN WITH A PERIOD, BUT WAS NOT ONE OF THE
  650.     ASSEMBLER DIRECTIVES DESCRIBED ABOVE.
  651.  
  652. ╫ARNING - EXTRA COMMA
  653.  
  654.     ┴ .BYTE OR .WORD DIRECTIVE HAD A TRAILING COMMA AFTER THE
  655.     LAST EXPRESSION.
  656.  
  657. ╫ARNING - COMMA INSERTED
  658.  
  659.     ┴ .BYTE OR .WORD DIRECTIVE HAD TWO EXPRESSIONS NOT SEPARATED
  660.     BY A COMMA.
  661.  
  662. ┴RGUMENT MUST BE POSITIVE
  663.  
  664.     ╘HE ARGUMENT TO .BLKB OR TO .BLKW WAS NEGATIVE, OR GREATER
  665.     THAN 32767.
  666.  
  667. ═ISSING STRING
  668.  
  669.     ┴N .ASCII OR .ASCIZ DIRECTIVE DID NOT HAVE A TEXT STRING, OR
  670.     USED A SEMICOLON AS THE DELIMITER.
  671.  
  672. ╒NTERMINATED STRING
  673.  
  674.     ┴N .ASCII OR .ASCIZ DIRECTIVE WAS FOLLOWED BY A TEXT STRING
  675.     WHICH WAS NOT FOLLOWED BY THE DELIMITER CHARACTER PRECEDING
  676.     THE TEXT STRING.
  677.  
  678. ╧RIGIN CAN ONLY BE SET ONCE AT START
  679.  
  680.     ╘HE SOURCE FILE CONTAINED TWO .ORIGIN DIRECTIVES, OR
  681.     CONTAINED AN .ORIGIN DIRECTIVE AFTER A SOURCE LINE WHICH
  682.     ALLOCATED MEMORY.  ═AY INDICATE THAT AN INCLUDE FILE HAD AN
  683.     .ORIGIN DIRECTIVE.
  684.  
  685. ╞ILENAME MUST START WITH A LETTER
  686.  
  687.     ┴ .INCLUDE DIRECTIVE WAS NOT FOLLOWED BY AN IDENTIFIER.
  688.  
  689. ┴LREADY AT MAXIMUM DEPTH OF INCLUDES
  690.  
  691.     ╧NLY FOUR LEVELS OF SOURCE FILES ARE ALLOWED.
  692.  
  693. ├OULDN'T OPEN INCLUDE FILE:
  694.  
  695.     ╨RINTS THE ERROR MESSAGE FROM THE DISK DRIVE
  696.  
  697. ╞ILE NUMBER NOT OPENED
  698. ╞ILE NUMBER OUT OF RANGE
  699. ╞ILE NUMBER ALREADY IN USE
  700. ─IRECTORY NOT UPDATED
  701.  
  702.     ╘HESE MESSAGES INDICATE INTERNAL ERRORS IN THE FILE-HANDLING
  703.     ROUTINES USED BY THE ASSEMBLER.
  704.  
  705. ╞OR MORE INFORMATION, CALL ╠EW ╠ASHER AT (617) 547-0340
  706.