home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 December / simtel1292_SIMTEL_1292_Walnut_Creek.iso / msdos / crossasm / ps51a123.arc / A51.DOC < prev    next >
Text File  |  1987-03-15  |  38KB  |  1,126 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.                              PseudoSam 51 Assembler Manual V1.2.02
  12.                              Copyright(c) 1986,87 PseudoCode
  13.  
  14.  
  15.  
  16.  
  17.  
  18. Disclaimer:
  19.  
  20.             PseudoSam 51 is distributed as is, with no guarantee that it
  21.             will work correctly in all situations.  In no event will the
  22.             Author be liable for any damages, including lost profits,
  23.             lost savings or other incidental or consequential damages
  24.             arising out of the use of or inability to use these
  25.             programs, even if the Author has been advised of the
  26.             possibility of such damages, or for any claim by any other
  27.             party.
  28.  
  29.             It is the users reponsibility to back up all important files!
  30.  
  31.             See copyright information in appendix B
  32.  
  33.  
  34.  
  35.  
  36.  
  37.                          Table of Contents
  38.  
  39. Chapter 1  PseudoSam 51 assembler vs. the Intel assembler.
  40.  
  41. Chapter 2  Running the assembler program.
  42.  
  43. Chapter 3  Assembler statement syntax.
  44.  
  45. Chapter 4  Data types.
  46.  
  47. Chapter 5  Expressions.
  48.  
  49. Chapter 6  Assembler Directives.
  50.   (also known as assembler pseudo-opcodes, or pseudo-ops)
  51.  
  52. Appendix A      ASCII character set.
  53.  
  54. Appendix B      Copyright and registration information.
  55.  
  56. Appendix C      Description of Files.
  57.  
  58. Appendix D      Bug Reporting Procedure.
  59.  
  60. Appendix E      Using PseudoSam 51 on "Compatible" Systems.
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.                          Table of Contents
  68.  
  69. Chapter 1  PseudoSam 51 assembler vs. the Intel assembler.
  70.  
  71. Chapter 2  Running the assembler program.
  72.  
  73. Chapter 3  Assembler statement syntax
  74.  
  75. Chapter 4  Data types
  76.  
  77. Chapter 5  Expressions
  78.  
  79. Chapter 6  Assembler Directives
  80.   (also known as assembler Pseudo-opcodes)
  81.  
  82. Appendix A      ASCII character set
  83.  
  84. Appendix B      Copyright and registration information
  85.  
  86. Appendix C      Description of Files
  87.  
  88. Appendix D      Bug Reporting Procedure.
  89.  
  90.  
  91.  
  92.  
  93. Chapter 1 PseudoSam 51 assembler vs. the Intel assembler
  94.  
  95.      All PseudoSam(Pseudo brand Symbolic AsseMbler) assemblers conform to
  96.      a common syntax based on the UNIX system V assembler syntax. By
  97.      conforming to this Pseudo standard, conflicts with the manufacturers
  98.      syntax are created.  Below is a brief and incomplete list of those
  99.      conflicts.
  100.  
  101.       Intel format                     PseudoSam format
  102.  
  103. <identifier> equ <expression>         .equ <identifier> , <expression>
  104.  
  105. <identifier> set <expression>         .set <identifier> , <expression>
  106.  
  107. Has Macro capability                  No Macro capability at this time
  108.  
  109.  
  110.  
  111. * The difference in name between the Intel and the PseudoSam name
  112.   of assembler directives can be circumvented by the .opdef directive.
  113.  
  114.   example
  115.  
  116.    .opdef  eject,.eject      ;defines eject to be synonymous with .eject
  117.  
  118. *  A file syn.asm is distributed with the assembler with some useful
  119.    redefinitions.
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130. Unix system V is a trademark of AT & T.
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138. Chapter 2  Running the assembler program
  139.  
  140. 1.  Command line switch setting and source file specification.
  141.  
  142.      Assuming the user has an assembly language source file called foo.asm
  143.      type the following command:
  144.  
  145. a51 foo
  146.  
  147.      The assembler will assemble the program foo.asm using the default
  148.      assembler switch settings. the following files will be generated
  149.      by the assembler:
  150.  
  151.      foo.lst   ;assembled listing shown the code conversion and
  152.                ; any errors that where discover by the assembler.
  153.  
  154.      foo.obj   ;assembled object code in Motorola Hex format.
  155.  
  156. **  for a list of switch setting see the .command assembler directive
  157.     description in chapter 6.
  158.  
  159. *** The assembler uses the following temporary file names.
  160.  
  161.     z0z0z0z0.tmp
  162.     z1z1z1z1.tmp
  163.  
  164.     ANY files with these names will be DESTROYED by the
  165.     by the assembler.
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173. Chapter 3  Assembler statement syntax
  174.  
  175. 1. Assembler Statements
  176.  
  177.      Assembler statements contain from zero to 4 fields as shown in
  178.      following.
  179.  
  180. <label> <opcode> <expressions> <comment>
  181.  
  182.      All fields are optional, but they must be in this order.
  183.  
  184. A.   Labels (<label>) are symbolic names that are assigned the starting
  185.      address of any code generated by the opcode and or expressions
  186.      of the line containing the label declaration.(see section 2).
  187.  
  188. B.   Operation codes(<opcode>) tell the assembler what machine instruction
  189.      to generate, or what assembler control function to perform.
  190.      The operation code also tells the assembler what expressions are
  191.      required to complete the machine instruction or assembler directive.
  192.      (see chapter 6).
  193.  
  194. C.   Expression requirements are set by the opcode(see the microprocessor
  195.      manufacturers reference manual or the assembler directives chapter
  196.      for individual opcode requirements).(see chapter 5).
  197.  
  198. D.   Comments are notes written by the programmer to explain what the
  199.      program is trying to accomplish. Comments generate no code.
  200.      (see section 3).
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208. 2.  Labels
  209.  
  210.      Labels can be unlimited in length, but only the first eight characters
  211.      are used to distinguish between them.  They must conform to the
  212.      following syntax.
  213.  
  214.      <label>  -> <identifier>':'
  215.  
  216.      <identifier> -> <alphabetic character> <identifier character string>
  217.  
  218.      <alphabetic character> -> character in the set ['A'..'Z', 'a'..'z', '.']
  219.  
  220.      <identifier character string> -> any sequence of characters from the
  221.                                       set ['A'..'Z','a'..'z', '.', '0'..'9']
  222.  
  223. example
  224. abc:                  ;label referred to as abc
  225. a c:                  ;not a valid label
  226.          foo:         ;label referred to as foo
  227. .123:                 ;label referred to as .123
  228.  
  229. * Case makes NO difference!
  230.  
  231. d:      ;is the same as
  232. D:
  233.  
  234.  
  235. 3.  Comments
  236.      Comments must start with a semi-colon ; and are terminated
  237.      by an end of line or file( <lf>(^J) or <sub>(^Z) ). An end
  238.      of line is inserted by typing the enter or return key by
  239.      most text editors.
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247. Chapter 4     Data types
  248.  
  249. 1.  Integers
  250.  
  251.     Integer constants can be specified in any of the following forms:
  252.  
  253. A.  Binary
  254.  
  255.     b'bb             ;bb=string of binary digits
  256.     B'bb
  257.  
  258. B.  Decimal
  259.  
  260.     ndd
  261.     d'dd             ;n=nozero decimal digit
  262.     D'dd             ;dd=string of decimal digits
  263.  
  264. C.  Octal
  265.  
  266.     0qq              ;qq=string of octal digits
  267.     o'qq
  268.     O'qq
  269.     q'qq
  270.     Q'qq
  271.  
  272. D.  Hexidecimal
  273.  
  274.     0x'hh            ;hh=string of hexidecimal digits
  275.     0X'hh
  276.     h'hh
  277.     H'hh
  278.     x'hh
  279.     X'hh
  280.  
  281.  
  282. Examples:
  283.  
  284.     077        ;octal number 77 = decimal 63
  285.     b'0101     ;binary number 101 = decimal 5
  286.     77         ;decimal number 77 = octal 115
  287.     h'ff       ;hexidecimal ff = decimal 255
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294. 2.  Strings:
  295.  
  296.     Strings consist of a beginning quote " followed by any reasonable number
  297.     of characters followed by an ending quote ". Control characters and double
  298.     quotes " and backslash \ may not be used in strings directly.  These
  299.     special characters are included by using a special escape sequence which
  300.     the assembler translates into the appropriate ASCII code.
  301.  
  302. Note: Strings may not be used in expressions!
  303.       Although character constants may(see below).
  304.  
  305. Escape sequences
  306.   "\"" string containing "
  307.   "\\" string containing \
  308.   "\'" string containing '
  309.   "\0" string containing null
  310.   "\n" string containing linefeed
  311.   "\r" string containing carriage return
  312.   "\f" string containing formfeed
  313.   "\t" string containing horizontal tab
  314.   "\nnn" string containing the ASCII character who's code is o'nnn
  315.          (nnn are octal digits).
  316.   * see appendix A for ASCII codes.
  317.  
  318. 3.  Character Constants:
  319.  
  320.     Character constants consist of  a single quote ' followed by
  321.     a character or an escape sequence(see above) followed by a
  322.     single quote '.
  323.  
  324. example:
  325.    'A' = ASCII character value for the letter A = 65 (decimal);
  326.    '\''= ASCII character value for the character ' = 39 (decimal).
  327.  
  328. Character constants are treated as integers by the assembler and
  329. are valid where ever an integer value is valid.
  330.  
  331. example:
  332.    'A' + 1 = 66
  333.  
  334.   * see appendix A for ASCII codes.
  335.  
  336. 4.  Symbolic values
  337.  
  338.     Symbolic values are generally labels, but may be any identifier
  339.     assigned an integer value(using .set or .equ pseudo-ops).
  340.  
  341.     As a special case the symbol * when used as an operand in an
  342.     expression denotes the value of the location counter (the value
  343.     the program counter will have during operation) at the beginning
  344.     of the current line.
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352. Chapter 5  Expressions
  353.  
  354.      All expressions evaluate to integer values modulo 65536(2^16) and are
  355.      written in infix notation(the way you normally write them).  Operators
  356.      provided are grouped below in order of precedence.
  357.  
  358. 1. (unary)
  359. ~           logical bit wise complement(not) of its operand(one's complement).
  360. -           arithemetic complement, or negation(two's complement).
  361.  
  362. 2. (binary)
  363. *           integer multiply (two's complement).
  364. /           integer divide   (two's complement).
  365. %           modulus          (result is always positive)
  366. >>          logical shift right (left operand shifted right operand times).
  367. <<          logical shift left (left operand shifted right operand times).
  368. ~           equivalent to  A or ( ~B ).
  369.  
  370. 3. (binary)
  371. |           logical bitwise or(inclusive-or) of two operands.
  372. ^           logical bitwise exclusive-or of two operands.
  373. &           logical bitwise and of two operands.
  374.  
  375. 4. (binary)
  376. +           addition (two's complement).
  377. -           subtraction (two's complement).
  378.  
  379.      Since this version does not generate relocatable code there exists only
  380.      one "type" of operand that can be in an expression.  So anything goes
  381.      except divide by 0(1 will be substituted ).
  382.  
  383. examples:
  384.     -1 = h'ffff  (two's complement notation).
  385.     -1 >> 8 = h'00ff
  386.     -1 << 8 = h'ff00
  387.     3 / 2 = 1
  388.     6 / 2 = 3
  389.     5 / 0 = 5
  390.     -2 / 1 = -2
  391.     -3 /-2 = 1
  392.     2 * -3 = -6
  393.     b'00 & b'11 = 0
  394.     b'11 & b'10 = 2
  395.     2 * b'01 & b'10 = 2
  396.     b'01 ^ b'11 = 2
  397.     b'01 | b'11 = 3
  398.  
  399. Notice that spaces are ignored in expressions.
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408. Chapter 6  Assembler Directives
  409.   (also known as assembler Pseudo-opcodes)
  410.  
  411.      The assembler recognizes the following directives:
  412.  
  413.       directive  section    description
  414.  
  415.       .command    1   ;set assembly options(similar to command line options).
  416.  
  417.       .org        2   ;set program origin.
  418.  
  419.       .equ        3   ;equate an identifier to an expression(permanent
  420.                       ; assignment).
  421.  
  422.       .set        4   ;equate and identifier to an expression(temporary
  423.                       ; assignment).
  424.  
  425.       .rs         5   ;reserve storage(memory) space.
  426.  
  427.       .db         6   ;define byte.
  428.  
  429.       .dw         7   ;define word(16 bit).
  430.  
  431.       .drw        8   ;define reversed word(16 bit).
  432.  
  433.       .eject      9   ;form feed in listing
  434.  
  435.       .page      10   ;align location counter on 256 byte memory
  436.                       ; page boundary.
  437.  
  438.       .end       11   ;end of program
  439.  
  440.       .opdef     12   ;equate an identifier with another identifier.
  441.  
  442.       .segment   13   ;define a memory segment.
  443.  
  444.       <segment name>
  445.                  14   ;select segment <segment name> as current segment.
  446.  
  447.       .null      15   ;this is a comment statement.
  448.  
  449.  
  450.  
  451.  
  452.  
  453. 1. .command    <optionlist>   ;allows the programmer to set option switches
  454.                               ;in the same manner as on the command line.
  455.                               ;(the command line is the line typed to run
  456.                               ; this program).
  457.  
  458. <optionlist> -> <option> ' ' <optionlist>
  459. <optionlist> ->
  460.  
  461. <option> -> '-'<available option>
  462. <option> -> '+'<available option>
  463.  
  464. <available option> -> 'a'<decimal number> ;Hex hode format.
  465.                                           ;1 => Intel Hex.
  466.                                           ;2 => Motorola 19 Hex.
  467.  
  468. <available option> -> 'w'<decimal number> ;page width in columns(characters).
  469.                                           ;(-,+ are ignored but one must be
  470.                                           ; there).
  471.  
  472. <available option> -> 'h'<decimal number> ;page height in lines.
  473.                                           ;(-,+ are ignored but one must be
  474.                                           ; there).
  475.  
  476. <available option> -> 'l'                 ;listing on(+) or off(-)
  477.                                           ;if set on command line it overrides
  478.                                           ;all listing controls in program.
  479.  
  480. <available option> -> 'm'<decimal number> ;Machine level.
  481.                                           ;1 => z80,nsc800.
  482.  
  483. <available option> -> 's'                 ;symbol listing on(+) or off(-).
  484.  
  485. <available option> -> 'o'                 ;selects single object module
  486.                                           ;file only(+), or multiple object
  487.                                           ;module files(-)(one for each
  488.                                           ;defined segment in the program).
  489.                                           ;ONLY active on command line!
  490.  
  491. <available option> -> 't'<drive>          ;specifies which drive to create
  492.                                           ;all temporary files on(-,+ are
  493.                                           ; ignored but one must be there).
  494.                                           ;ONLY active on command line!
  495.  
  496. <available option> -> 'p'<drive>          ;specifies which drive to create
  497.                                           ;the listing file on(-,+ are
  498.                                           ; ignored but one must be there).
  499.                                           ;ONLY active on command line!
  500.  
  501. <drive> -> <drive name>':'                ;e.g.  a:  b:  c:  d:
  502.  
  503.                            ;MS-DOS
  504. <drive name> -> 'a'        ;drive a --usually a floppy disk
  505. <drive name> -> 'b'        ;drive b --usually a second floppy disk
  506. <drive name> -> 'c'        ;drive c --usually a hard disk, but may
  507.                                       be a ram disk.
  508. <drive name> -> 'd'        ;drive d --usually a ram disk, but may
  509.                                       be a hard disk.
  510.  
  511. ** The default options are: -a2 -m1 -w132 -h66 +l +s +o
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519. 2. .org   <integer expression>    ;sets the assembler location counter
  520.                                   ;to the value of expression.
  521.                                   ;The expression MUST be evaluatable
  522.                                   ;on the first pass. NO FORWARD
  523.                                   ;REFERENCES!
  524.  
  525. 3. .equ  <identifier> ',' <integer expression>
  526.                                   ;gives identifier the value of the
  527.                                   ;integer expression.
  528.                                   ;<identifier> canNOT be redefined!
  529.                                   ;also forward references are allowed
  530.                                   ;as long as they are resolved by the
  531.                                   ;second pass.
  532.  
  533. 4. .set  <identifier> ',' <integer expression>
  534.                                   ;gives identifier the value of the
  535.                                   ;integer expression.
  536.                                   ;<identifier> CAN be redefined later
  537.                                   ; in the program!
  538.                                   ;also forward references are allowed
  539.                                   ;as long as they are resolved by the
  540.                                   ;second pass.
  541.  
  542. 5. .rs  <integer expression>      ;increments the location counter
  543.                                   ;by the value of <integer expresson>
  544.                                   ;effectively reserving that many bytes
  545.                                   ;of memory.
  546.  
  547. 6. .db  <expression-string list>
  548.  
  549. <expression-string list> -> <expression>','<expression-string list>
  550. <expression-string list> -> <string>','<expression-string list>
  551. <expression-string list> -> <expression>
  552. <expression-string list> -> <string>
  553.  
  554.                                   ;creates a byte in the machine code
  555.                                   ;for each <expression> in the list
  556.                                   ;and a byte for each ascii character
  557.                                   ;in the a string.
  558. 7. .dw  <expression list>
  559.  
  560. <expression list> -> <expression>','<expression list>
  561. <expression list> -> <expression>
  562.  
  563.                                   ;creates a word(16 bit) in the machine code
  564.                                   ;for each <expression> in the list.
  565.                                   ;MOST significant byte is stored at LOWER
  566.                                   ;address.
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573. 8. .drw  <expression list>
  574.  
  575. <expression list> -> <expression>','<expression list>
  576. <expression list> -> <expression>
  577.  
  578.                                   ;creates a word(16 bit) in the machine code
  579.                                   ;for each <expression> in the list.
  580.                                   ;LEAST significant byte is stored at LOWER
  581.                                   ;address.
  582.  
  583. 9. .eject                         ;causes a form-feed character to be
  584.                                   ;inserted in listing.(new listing page)
  585.  
  586. 10. .page                         ;increments location counter to next
  587.                                   ;256 byte page boundary.
  588.  
  589. 11. .end <integer expression>     ;signals the end of the source program.
  590.                                   ;the optional expression, if supplied,
  591.                                   ;specifies the start address of the
  592.                                   ;program, and is included in the
  593.                                   ;Motorola Hex object module output
  594.                                   ;of the active segment when the .end
  595.                                   ;was encountered.
  596.  
  597.  
  598. 12. .opdef  <identifier>,<identifier>
  599.                                   ;assigns the current definition of
  600.                                   ;the second <identifier> to the
  601.                                   ;first <identifier>.
  602.                                   ;useful for renaming opcodes and
  603.                                   ;pseudo-ops.
  604.  
  605. 13. .segment <identifier> ',' <integer expression>
  606.                                   ;defines a memory segment name.
  607.                                   ;used to separate memory allocation
  608.                                   ;and optionally generate seperate
  609.                                   ;object files.(see 'o' assembly
  610.                                   ;directive to activate).
  611.                                   ;(used to seperate RAM, ROM, or
  612.                                   ; ROMS)
  613.                                   ;the optional <integer expression> is
  614.                                   ;added to the location counter to
  615.                                   ;offset the load address supplied
  616.                                   ;in the object module. (does not
  617.                                   ;affect listings addresses!)
  618.                                   ;
  619.                                   ;note: .code is the predefined default
  620.                                   ;segment and cannot be redefined.
  621.  
  622. 14. <segment name>                ;selects the segment <segment name>
  623.                                   ;as the current memory segment.
  624.                                   ;The location old segment location counter
  625.                                   ;is saved and the previous value of the
  626.                                   ;newly selected segments location counter
  627.                                   ;is used(0 if not previously used).
  628.  
  629. 15.  .null                        ;directs the assembler to treat this
  630.                                   ;statement as a comment.  Useful to
  631.                                   ;nullify opcodes when used in conjunction
  632.                                   ;with the .opdef pseudo-op.
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640. Appendix   A      ASCII character set
  641.  
  642.  
  643.  
  644. dec oct hex char     dec oct hex char  dec oct hex char  dec oct hex char
  645.  
  646.   0 000  00 ^@ null   32 040  20 sp     64 100  40 @      96 140  60 `
  647.   1 001  01 ^A soh    33 041  21 !      65 101  41 A      97 141  61 a
  648.   2 002  02 ^B stx    34 042  22 "      66 102  42 B      98 142  62 b
  649.   3 003  03 ^C etx    35 043  23 #      67 103  43 C      99 143  63 c
  650.   4 004  04 ^D eot    36 044  24 $      68 104  44 D     100 144  64 d
  651.   5 005  05 ^E enq    37 045  25 %      69 105  45 E     101 145  65 e
  652.   6 006  06 ^F ack    38 046  26 &      70 106  46 F     102 146  66 f
  653.   7 007  07 ^G bel    39 047  27 '      71 107  47 G     103 147  67 g
  654.   8 010  08 ^H bs     40 050  28 (      72 110  48 H     104 150  68 h
  655.   9 011  09 ^I ht     41 051  29 )      73 111  49 I     105 151  69 i
  656.  10 012  0A ^J lf     42 052  2A *      74 112  4A J     106 152  6A j
  657.  11 013  0B ^K vt     43 053  2B +      75 113  4B K     107 153  6B k
  658.  12 014  0C ^L ff     44 054  2C ,      76 114  4C L     108 154  6C l
  659.  13 015  0D ^M cr     45 055  2D -      77 115  4D M     109 155  6D m
  660.  14 016  0E ^N so     46 056  2E .      78 116  4E N     110 156  6E n
  661.  15 017  0F ^O si     47 057  2F /      79 117  4F O     111 157  6F o
  662.  16 020  10 ^P dle    48 060  30 0      80 120  50 P     112 160  70 p
  663.  17 021  11 ^Q dc1    49 061  31 1      81 121  51 Q     113 161  71 q
  664.  18 022  12 ^R dc2    50 062  32 2      82 122  52 R     114 162  72 r
  665.  19 023  13 ^S dc3    51 063  33 3      83 123  53 S     115 163  73 s
  666.  20 024  14 ^T dc4    52 064  34 4      84 124  54 T     116 164  74 t
  667.  21 025  15 ^U nak    53 065  35 5      85 125  55 U     117 165  75 u
  668.  22 026  16 ^V syn    54 066  36 6      86 126  56 V     118 166  76 v
  669.  23 027  17 ^W etb    55 067  37 7      87 127  57 W     119 167  77 w
  670.  24 030  18 ^X can    56 070  38 8      88 130  58 X     120 170  78 x
  671.  25 031  19 ^Y em     57 071  39 9      89 131  59 Y     121 171  79 y
  672.  26 032  1A ^Z sub    58 072  3A :      90 132  5A Z     122 172  7A z
  673.  27 033  1B ^[ esc    59 073  3B ;      91 133  5B [     123 173  7B {
  674.  28 034  1C ^\ fs     60 074  3C <      92 134  5C \     124 174  7C |
  675.  29 035  1D ^] gs     61 075  3D =      93 135  5D ]     125 175  7D }
  676.  30 036  1E ^^ rs     62 076  3E >      94 136  5E ^     126 176  7E ~
  677.  31 037  1F ^_ us     63 077  3F ?      95 137  5F _     127 176  7F del
  678.  
  679.  ^ denotes control key simultaneous with character key.
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687. Appendix B       Copyright Information:
  688.  
  689.  
  690. Disclaimer:
  691.  
  692.             PseudoSam 51 is distributed as is, with no guarantee that it
  693.             will work correctly in all situations.  In no event will the
  694.             Author be liable for any damages, including lost profits,
  695.             lost savings or other incidental or consequential damages
  696.             arising out of the use of or inability to use these
  697.             programs, even if the Author has been advised of the
  698.             possibility of such damages, or for any claim by any other
  699.             party.
  700.  
  701. Copyright Information:
  702.  
  703.             The entire PseudoSam 51 distribution package, consisting of
  704.             the main program, documentation files, and various data and
  705.             utility files, is copyright (c) 1986, by PseudoCode.
  706.  
  707.             The author reserves the exclusive right to distribute this
  708.             package, or any part thereof, for profit.
  709.  
  710.             The name "PseudoSam (tm)", applied to an assembler
  711.             program, is a trade mark of the PseudoCode company.
  712.  
  713.             PseudoSam version 1.x.xx and various subsidiary files may be
  714.             copied freely by individuals for non-commercial purposes. It
  715.             is expected that those who find the package useful will
  716.             purchase the update service.
  717.             ONLY UNMODIFIED VERSIONS DISPLAYING THE AUTHORS COPYRIGHT
  718.             MAY BE COPIED.
  719.  
  720.             User groups and clubs are authorized to distribute PseudoSam
  721.             software under the following conditions:
  722.  
  723.             1.  No charge is made for the software or documentation.  A
  724.                 nominal distribution fee may be charged, provided that
  725.                 it is no more than $5 total.
  726.  
  727.             2.  Recipients are to be informed of the user-supported
  728.                 software concept, and encouraged to support it with
  729.                 their donations.
  730.  
  731.             3.  The program and documentation are not modified in ANY
  732.                 way, and are distributed together.
  733.  
  734.  
  735.  
  736.  
  737.  
  738.  
  739.             Interested manufacturers are invited to contact PseudoCode
  740.             to discuss licensing PseudoSam 51 for bundling with MS-DOS
  741.             based development systems.
  742.  
  743.             Distribution of PseudoSam 51 outside the United States is through
  744.             licensed distributors, on a royalty basis.  Interested
  745.             distributors are invited to contact PseudoCode.
  746.  
  747.  
  748.  
  749. Educational Use:
  750.  
  751.             Educational institutions are free to use this software
  752.             in their classes and are encouraged to distribute this
  753.             package to their students, however inorder to receive
  754.             periodic updates and technical assistance the appropriate
  755.             department must remit the license fee.  Also a staff
  756.             member must be assigned to clear all trouble reports before
  757.             forwarding them to PseudoCode.
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.         If you use this software, please help support it.  Your
  767.         support can take three forms:
  768.  
  769.         1. Become a registered user.  The suggested payment for
  770.            registration is $30($100 for complete family).
  771.  
  772.         2. Suggestions, comments, and bug reports.
  773.  
  774.         3. Spread the word.  Make copies for friends.  Write the editor
  775.            of your favorite computer magazine.  Astronomical advertising
  776.            costs are one big reason that commercial software is so over-
  777.            priced.  To continue offering PseudoSam 51 this way, we need
  778.            your help in letting other people know about PseudoSam 51.
  779.  
  780.         Those who make the $30 payment to become registered users
  781.         receive the following benefits:(order form on next page)
  782.  
  783.         1. One year of updates including any upgrades. This includes
  784.            at least one new version release even if it takes more than
  785.            one year.
  786.  
  787.         2. User support by mail.  Support is only available to registered
  788.            users.  The address for help is given below.
  789.  
  790.         3. Notices announcing the release of new products.
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.              Attention:BUGS             PseudoCode
  801.                                         P.O. Box 1423
  802.                                         Newport News, VA     23601
  803.  
  804.  
  805.  
  806.  
  807.  
  808.       ********ORDER FORM********
  809.  
  810.       Please add me to the list of registered PseudoSam 51 users, and send me
  811.       the most recent version. I understand that registration entitles me to
  812.       one year of free updates and new releases, or one free new version
  813.       release, whichever occurs last.
  814.  
  815.       Note that version 1.2.02 requires DOS 2 (or later) and 256K.
  816.  
  817.       Computer Model: ____________________________________
  818.  
  819.       Diskette format:            Total Memory: _______K
  820.                                      (256K required)
  821.          __ doubled sided/DOS 2
  822.  
  823.       Check one:
  824.              ___ I enclose a check for $30
  825.              (PseudoCode pays sales tax for VA orders)
  826.  
  827.       Where did you hear about PseudoSam 51? ________________________________
  828.  
  829.       Name:    _______________________________________________________
  830.  
  831.       Address: _______________________________________________________
  832.  
  833.       City, State, Zip: ______________________________________________
  834.  
  835.       ================================================================
  836.  
  837.            Send order form with check or money order payable to PseudoCode to:
  838.            (Qualified PO's will be billed.)
  839.  
  840.            Attention: Registration         PseudoCode
  841.                                            P.O. Box 1423
  842.                                            Newport News, VA     23601
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.       ********ORDER FORM********
  850.  
  851.       Please add me to the list of registered users of the complete
  852.       PseudoSam family of cross-assemblers. Send me the most recent
  853.       versions.  I understand that registration entitles me to
  854.       one year of free updates and new releases, or one free new
  855.       version release, whichever occurs last.
  856.  
  857.  
  858.       I note that version 1.2.02 requires DOS 2 (or later) and 256K.
  859.  
  860.       Computer Model: ____________________________________
  861.  
  862.       Diskette format:            Total Memory: _______K
  863.                                      (256K required)
  864.          __ single sided/DOS 2(360k)
  865.  
  866.       Check one:
  867.              ___ I enclose a check or money order for $100
  868.                  (shipping, handling, and Virginia sales tax for VA orders
  869.                   is paid by PseudoCode).
  870.  
  871.       Where did you hear about the PseudoSam family? ________________________
  872.  
  873.       Name:    _______________________________________________________
  874.  
  875.       Address: _______________________________________________________
  876.  
  877.       City, State, Zip: ______________________________________________
  878.  
  879.       ================================================================
  880.  
  881.            Send order form with check or money order payable to PseudoCode to:
  882.            (Qualified PO's will be billed.)
  883.  
  884.            Attention: Registration         PseudoCode
  885.                                            P.O. Box 1423
  886.                                            Newport News, VA     23601
  887.  
  888.  
  889.  
  890.  
  891.       ********Commercial Distribution Agreement********
  892.  
  893.       Please add me to the list of registered PseudoSam 51 distributors, and
  894.       send me the most recent version. I understand that registration entitles
  895.       me to distribute this package freely on an "as is" basis to purchasers
  896.       of my products. I further understand that I may not make a specific or
  897.       additional charge for this package. I may however advertise the package
  898.       as free software. I fully understand that the distributed software
  899.       must be clearly labeled as follows:
  900.  
  901.       Complementary Software
  902.       Distributed "AS IS"
  903.       PseudoCode
  904.       P.O. Box 1423
  905.       Newport News, VA 23601
  906.  
  907.  
  908.  
  909.       I understand that this agreement entitles me to one year of distribution
  910.       rights and free updates.
  911.  
  912.       Note that version 1.2.02 requires DOS 2 (or later) and 256K.
  913.  
  914.       Computer Model: ____________________________________
  915.  
  916.       Diskette format:            Total Memory: _______K
  917.                                      (256K required)
  918.          __ doubled sided/DOS 2
  919.  
  920.       Check one:
  921.              ___ I enclose a check for $30
  922.              (PseudoCode pays sales tax for VA orders)
  923.  
  924.       Where did you hear about PseudoSam 51? ________________________________
  925.  
  926.       Name:    _______________________________________________________
  927.  
  928.       Address: _______________________________________________________
  929.  
  930.       City, State, Zip: ______________________________________________
  931.  
  932.       Signature_______________________   Date_________________
  933.  
  934.       ================================================================
  935.  
  936.            Send order form with check or money order payable to PseudoCode to:
  937.            (Qualified PO's will be billed.)
  938.  
  939.            Attention: Registration         PseudoCode
  940.                                            P.O. Box 1423
  941.                                            Newport News, VA     23601
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.       ********Commercial Distribution Agreement********
  949.  
  950.  
  951.       Please add me to the list of registered PseudoSam distributors, and
  952.       send me the most recent version. I understand that registration entitles
  953.       me to distribute this package freely on an "as is" basis to purchasers
  954.       of my products. I further understand that I may not make a specific or
  955.       additional charge for this package. I may however advertise the package
  956.       as free software. I fully understand that the distributed software
  957.       must be clearly labeled as follows:
  958.  
  959.       Complementary Software
  960.       Distributed "AS IS"
  961.       PseudoCode
  962.       P.O. Box 1423
  963.       Newport News, VA 23601
  964.  
  965.  
  966.  
  967.       I understand that this agreement entitles me to one year of distribution
  968.       rights and free updates for the entire PseudoSam family of products.
  969.  
  970.  
  971.       I note that version 1.2.02 requires DOS 2 (or later) and 256K.
  972.  
  973.       Computer Model: ____________________________________
  974.  
  975.       Diskette format:            Total Memory: _______K
  976.                                      (256K required)
  977.          __ single sided/DOS 2(360k)
  978.  
  979.       Check one:
  980.              ___ I enclose a check or money order for $100
  981.                  (shipping, handling, and Virginia sales tax for VA orders
  982.                   is paid by PseudoCode).
  983.  
  984.       Where did you hear about the PseudoSam family? ________________________
  985.  
  986.       Name:    _______________________________________________________
  987.  
  988.       Address: _______________________________________________________
  989.  
  990.       City, State, Zip: ______________________________________________
  991.  
  992.       Signature_______________________   Date_________________
  993.  
  994.       ================================================================
  995.  
  996.            Send order form with check or money order payable to PseudoCode to:
  997.            (Qualified PO's will be billed.)
  998.  
  999.            Attention: Registration         PseudoCode
  1000.                                            P.O. Box 1423
  1001.                                            Newport News, VA     23601
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.       The PsuedoSam Family consists of the following cross-assemblers
  1010.  
  1011.        Name            Designed for         Available*   V1.1.00
  1012.  
  1013.        PseudoSam 48   ;Intel 8048 family.     Now
  1014.        PseudoSam 51   ;Intel 8051 family.     Now
  1015.        PsuedoSam 96   ;Intel 8096 family.     Now
  1016.        PseudoSam 68   ;Motorola
  1017.                       ;6800,01,02,03,08.      Now
  1018.        PseudoSam 685  ;Motorola 6805.         Now
  1019.        PsuedoSam 689  ;Motorola 6809.         Now
  1020.        PseudoSam 65   ;6502.                  Now
  1021.        PseudoSam 85   ;Intel 8080,8085.       Now
  1022.        PseudoSam 80z  ;Zilog Z80, NSC800.     Now
  1023.        PseudoSam 18   ;RCA 1802.              Now
  1024.        PseudoSam 32   ;NSC 32000 Family.      Apr 87
  1025.        PseudoSam 68k  ;Motorola 68000 family. May 87
  1026.  
  1027.    * PseudoCode reserves the right to change price and availability
  1028.      of any product without notice.
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038. Appendix C: Description of Files
  1039.  
  1040.       Your PseudoSam 51 distribution disk contains a number of files.  This
  1041.       appendix will give a brief statement of the purpose of each of the
  1042.       files.
  1043.  
  1044.       FILE           DESCRIPTION
  1045.       ----------------------------------------------------------------
  1046.       A51.COM         The PseudoSam 51 program.
  1047.       A51.DOC         This document.
  1048.       EXAMPLE.ASM     Sample source file.
  1049.       MNEMTEST.ASM    Mnemnonics test file.
  1050.       SYN.ASM         Useful mnemnonics redefinitions
  1051.       COMRCIAL.USE    Commercial distribution agreement.
  1052.  
  1053.       Occasionally, various other sample source files for PseudoSam 51 will be
  1054.       distributed.  These files will have extension ASM, and will be
  1055.       accompanied by a corresponding DOC file.
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065. Appendix D: Bug Reporting Procedure.
  1066.  
  1067.  
  1068.       Although each version of PseudoSam 51 is tested extensively prior
  1069.       to release, any program is bound to contain a few bugs.  It is
  1070.       the intention of PseudoCode to correct any genuine problem that
  1071.       is reported.
  1072.  
  1073.       If you think you have found a bug in PseudoSam 51, please take the time
  1074.       to report it for correction.  Although any report is helpful,
  1075.       correction of the problem will be easiest if you provide the
  1076.       following:
  1077.  
  1078.          1. The version of PseudoSam 51 you are using.  Your problem may have
  1079.             been fixed already.
  1080.  
  1081.          2. A brief description of the problem.
  1082.  
  1083.          3. A copy of the problem source file, preferably on a floppy disk.
  1084.             (The cost of floppies is so small($.29), they will not be
  1085.              returned and become the property of PseudoCode.)
  1086.  
  1087.             * It is NOT necessary to send a large program to demonstrate
  1088.               problem.  Please try to isolate the problem area, by
  1089.               writing a short sample program that demonstrates the bug.
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.              Attention:BUGS             PseudoCode
  1097.                                         P.O. Box 1423
  1098.                                         Newport News, VA     23601
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.       Appendix E   Using PseudoSam 51 on "Compatible" Systems.
  1107.  
  1108.       PseudoSam 51 was written specifically for the IBM PC, but should
  1109.       function normally on true "compatibles".
  1110.  
  1111.       Since PseudoSam 51 version 1.2.00 is a totally new program, little
  1112.       compatibility data is currently available.  If you are using (or
  1113.       are unable to use...) PseudoSam 51 on a non-IBM computer, please
  1114.       write with your experiences.  Does PseudoSam 51 work correctly on
  1115.       your system?  Are there specific problem areas?  Can they be worked
  1116.       around?
  1117.  
  1118.       The following systems are known to run PseudoSam 51 version 1.2.00
  1119.       successfully:
  1120.              IBM PC
  1121.              IBM XT
  1122.              IBM AT
  1123.              Sperry PC (all models).
  1124.              JDR Microdevices PC Clones.
  1125.  
  1126.