home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug034.arc / CROWECPM.DOC < prev    next >
Text File  |  1979-12-31  |  7KB  |  139 lines

  1.                  CROWECPM-----A Z80 ASSEMBLER
  2.  
  3.  
  4. The assembler provides all the features of Zilog's assembler except
  5. for macros, conditional assembly and lower case. It was originally 
  6. written to be used with cassette or paper tape, with the desired pass
  7. number entered from the console. The assembler is now set up to recieve
  8. the pass numbers from a buffer in the program itself. The output of the 
  9. assembler is sent to files except the error listing which is sent to the
  10. console. For each pass, the source is re-read and the appropriate output
  11. generated. Pass 1 builds the symbol table and is required. Pass 2 outputs
  12. the assembly listing, pass 3 writes Intel format hex object and pass 4
  13. gives an assembly listing of those lines containing errors on the console.
  14. The assembler has been modified to perform pass 4 before writing the files
  15. (passes 2 and 3) so that errors can be seen and corrected before the time
  16. consuming output is done.
  17.  
  18. The linkage routines are written so that the assembler can be run as
  19. a standard CP/M .COM file with the following command format: 
  20.  
  21.         CROWECPM FILENAME.YY  
  22.  
  23. The characters in the normal file extension position are Y/N selects
  24. (default is Y), the first for listing file and the second for the hex
  25. object file. The source must have a file extension of .Z80 while the
  26. listing is created with an extension of .PRN and the object with an
  27. extension of .HEX. Only minimal error checking and reporting is done
  28. when creating files. If no source file with the correct name is found
  29. a message is displayed. If any other disk error on a BDOS call occurs,
  30. that is reported. In either case, the routine waits for a keystroke
  31. before exiting to CP/M.
  32.  
  33. SYNTAX--------------------------------------------------------------------
  34.  
  35. The CROWECPM assembler requires that the source file be written using 
  36. standard Zilog mnemonics. In addition it requires that tabs be used as
  37. field delimiters. Labels may have colons following but this is not required.
  38. Comments can be entered anywhere (in any field) following a semicolon as
  39. is usually the case. Hexidecimal numbers that begin with a letter must be
  40. preceded by a 0 and conclude with an H with no imbedded spaces. Since the
  41. source of the assembler is included, and it is syntactically correct, it
  42. can be used as a model of assembly language programming.
  43.  
  44. FUNCTIONAL OPERATORS-------------------------------------------------------
  45.  
  46. +        MONADIC PLUS
  47. -        MONADIC MINUS
  48. .NOT. or \    LOGICAL NOT
  49. .HIGH.        VALUE OF MOST SIGNIFICANT BIT
  50. .LOW.        VALUE OF LEAST SIGNIFICNANT BIT
  51. .RES.        RESULT
  52. **        EXPONENTIATION
  53. *        MULTIPLICATION
  54. /        DIVISION
  55. .MOD.        MODULO
  56. .SHR.        LOGIGAL SHIFT RIGHT
  57. .SHL.        LOGICAL SHIFT LEFT
  58. +        ADDITION
  59. -        SUBTRACTION
  60. .AND. or &    LOGICAL AND
  61. .OR. or ^    LOGICAL OR
  62. .XOR.        LOGICAL EXCLUSIVE OR
  63. .EQ. or =    EQUALS
  64. .GT. or >    GREATER THAN
  65. .LT. or <    LESS THAN
  66. .UGT.         UNSIGNED GREATER THAN 
  67. .ULT.        UNSIGNED LESS THAN
  68.  
  69. PSEUDO-OPS-----------------------------------------------------------------
  70. èThe following Pseudo-ops are supported by CROWECPM:
  71.  
  72. ORG ---Sets the address reference
  73. EQU ---For assigning a value to a label (can appear only once per label)
  74. DEFL --Also assigns a value to a label but can be used to assign different
  75.     values to a label at different places in the program 
  76. END ---Must conclude the program. Can be followed with the starting address
  77.     of the target program.
  78. DEFB --Defines the content of one byte of memory at the address the OP 
  79.     appears in the program.
  80. DEFB 'x'--Same as above but defines the byte to be the ascii code for the 
  81.     character between the quotes. (x in the example)
  82. DEFW --Defines the contents of two bytes of memory
  83. DEFS --Reserves bytes in memory beginning with the address the OP appears
  84. DEFM 'x'--Defines the contents memory to be the ascii code of the characters
  85.     appearing between the quotes----MUST NOT EXCEED 32 CHARACTERS-----
  86. TITLE 's'-Defines the program title. It is printed in the listing headers.
  87. __________________________________________________________________________
  88. WARNING___________________________________________________________________
  89.  
  90. An additional note about the assembler the way it stands:  there
  91. is a limit of 32 characters for a quoted string as operand of a DEFM
  92. statement.  If this limit is exceeded NO error message is generated, the
  93. string is truncated.  If you're not careful, the terminating '$' for
  94. a CP/M output string could be lost and the results would be unpredictable.
  95. __________________________________________________________________________
  96. __________________________________________________________________________
  97.  
  98. LISTING THE .PRN FILE-----------------------------------------------------
  99.  
  100. The assembler has a strange way of creating the .PRN file which will
  101. cause problems on many printers. A program is included with the disk 
  102. to solve this bug and must be used to send your listing file to the 
  103. printer. See PRINTPRN.DOC for details.
  104. __________________________________________________________________________
  105.  
  106. The CROWCPM.Z80 file has the linkages incorporated into it, near the
  107. end.  As it now stands, the symbol table is limited only by the amount of
  108. available memory since the assembler reads the start address of BDOS from
  109. locations 6&7 and sets that as the top of available symbol space.  
  110.  
  111. There has been one minor improvement to the assembler: you can now
  112. specify that the .LST or .HEX files should be sent to drive B rather than
  113. the current default drive by putting a B in the proper position in the 
  114. normal filename extension.  E.g. CROWECPM CROWECPM.NB would assemble the 
  115. file CROWECPM.Z80, skip the .LST file and send the .HEX file to drive B.
  116. The source file must still reside on the same drive as the assembler.
  117.  
  118. The source is currently set up for the CROWECPM assembler. To assemble it
  119. with M80 you will need to add ASEG and .Z80 commands to it.
  120.  
  121. ****************************************************************************
  122.  
  123. Bug fixes from Thomas Hameenaho
  124. èThe first bug resulted when the single quote character in EX AF,AF'
  125. caused the assembler to expect the following characters
  126. to be a text string. Now I test if the character preceding the ' is
  127. a 'F', if so, the 'QUOTE' flag should not be set.
  128.  
  129. The other bug (LBFSZ-1) resulted because the minus character (instead
  130. of the "_" character) was declared legal in a label.
  131. Probably a typing error when entering the source code.
  132.  
  133. So now CROWCPM.COM will assemble CROWECPM.Z80.
  134.  
  135.     Thomas Hameenaho
  136.     Djaknegatan 7
  137.     S-754 23 Uppsala
  138.     Sweden
  139. ******************************************************************************