This is from the PBP directory, PM.TXT.
The PM.TXT gives brief explanations of what the codes mean. Sometimes a little more explanation is needed.
In the spirit of a wiki, if you have any tips/tricks to add to the codes let us know so we can add them.
User added data will be in colored text.
###############################
12. Warnings
WARNINGS are just that, a warning. Your code will compile.
100 Attempt to Skip MultiByte OpCode @ Address
Indicates the current instruction is a multibyte Parallax instructions and
that the previous instruction is attempting to skip it. Obviously, if this
were done unintentionally, a successful skip would enter the current opcode
mid-instruction.
101 Use of Local Label Prior to Use of Non-Local Label
Indicates that a local label (i.e. starting with a colon) has been defined
prior to the definition of a non-local label (i.e. a legal label name
starting with other than a colon). Because local names depend on the named
of last non-local label defined, this usage is obviously suspicious. The
label generating the warning is not expanded as are other local labels (see
Local Labels).
102 Code Crosses Boundary @ Address
The 12-bit, 14-bit and 16-bit 17Cxxx cores have paged architectures in
which the normal incrementing of the PC doesn't extended into page select
registers (PA0 & PA1 in 12-bit cores, PCLATH in the others). If a continuous
block of code is generated across a page boundary and a forward jump is
coded, the actual jump location will be to the previous page.
104 Called Addresses must Reside in Lower Half of Page
In the 12-bit core, the 9th bit of address is zeroed on calls. Thus, call
destinations must reside in the lower 256 words of any 512 word page. This
mistake is only a warning since calls made to the upper 256 words will alias
to an address in the lower 256 words of the page.
105 Bit Addresses are the Same
This warning indicates that you have attempted to copy a bit to itself. The
Parallax MOVB bit,bit instruction will correctly copy a bit to itself,
although the operation has no useful applications.
106 Register Addresses are the Same
This warning indicates that you have attempted to copy a register to
itself. While this is legal, it generates a MOVF and MOVWF instruction,
placing the moved value in W and setting the Z flag. If your intentions are
to set the Z flag according to contents of the specified register, the TEST
instruction will do this in one word and without destroying the contents of
W.
13. Errors
Unless specified otherwise, each of the following errors will terminate the
assembly of the current line. If possible, the assembler will generate
correct code (or at least the correct number of words) before the line is
aborted. Assembly continues with the next line of source.
Unless otherwise specified, the error report has no side effects other than
to bump the error count.
34 Block Overflow for #ENDCONFIG
PBP3 fatal error. This means there is too much text within your config block.
In this case, comments count too. Use shorter comments, and recompile.
200 Instruction Restricted to 14-Bit Core
The opcode of the specified line cannot be used for the 12-bit core:
ADDLW #literal
SUBLW #literal
RETFIE
RETURN
201 'Character' Expected
The assembler expected, but didn't find, the specified character.
202 Illegal Character 'Character'
The assembler doesn't recognize the legal use of the specified character.
203 '--' or '++' Expected
The Parallax instruction MOVSZ (MOVe and Skip in Zero) must take one of two
forms : MOVSZ W,++fr
MOVSZ W,--fr
204 'W' Expected as First Parameter
The Parallax instruction MOVSZ (MOVe and Skip in Zero) must take one of two
forms : MOVSZ W,++fr
MOVSZ W,--fr
205 Illegal Use of Keyword 'Keyword'
Indicates that the specified identifier is a reserved word of the assembler
and has been improperly used.
206 CHECKSUM Not Supported in 14-Bit Core
The CHECKSUM option may be used as the ID of a processor in the PIC16C5x
family. This option is not legal on the 14-bit core.
208 Illegal Use of SUB Instruction
This error indicates an attempt was made to use the illegal instruction :
SUB W,fr
209 Indirect Jump Expected in Form of 'PC+W'
This error indicates an attempt was made to use the illegal instruction :
JMP PC+Expr
210 Bit Addresses Must Differ
The Parallax MOVB bit1,/bit2 instruction requires that the source and
destination bits be different. An attempt to copy the complement of a bit
to itself will result in the unconditional setting of the bit.
211 Poorly Formed Numeric Constant 'Token'
Indicates that the symbol is not a legally formed numeric token. If any
initial portion of this token is a valid constant, that portion is
converted and its value is used as the result of the token.
212 Extra Tokens on End of Line
Some initial portion of the current line assembled correctly, but
additional assembly tokens remain unprocessed. This is often the result of
a syntax error (extra parameters, misplaced or missing punctuation, etc.).
Code is generated for the correct initial portion of the line.
213 IRPC Expected Id or String Constant
The second parameter of the IRPC macro definition is the item (scanned
character by character) which drives the macro expansion. This item must be
either an identifier or a quote-enclosed string constant.
214 IRPC Missing Replacement Parameter
The first parameter of the IRPC macro definition is the variable which
accepts the characters scanned from the second parameter. The first
parameter must be an identifier unique within the definition of the macro.
215 Attempt to Redefine Macro 'Identifier'
An attempt was made to redefine the named macro.
216 Attempt to Redefine Macro Parameter 'Identifier'
Each parameter and local variable of a macro must be unique. This error
indicates that a parameter or local name has been duplicated.
217 Attempt to Generate Code in Non-Code Segment
Due to the Harvard Architecture (split code and data spaces) of the PICmicro
MCUs, instructions may only be executed from CODE space (ROM). This error
indicates that an attempt was made to generate opcodes in the data or
EEPROM segments. In general, only the DS pseudo-op is legal in the data
segment and DS, DB and DW are the only legal pseudo-ops in the EEPROM
segment.
218 Address Limit of Address Exceeded
This error indicates that current segment has overflowed.
219 Collision in HEX File @ Address
This error indicates that more than one word has been generated for the
specified ROM address.
220 Illegal Bit Number
In the PICmicro MCU (and most processors), the bits of a byte are numbered
from 0 (the least significant bit - LSB) to 7 (the most significant bit -
MSB). This error indicates that the specified bit number is not in the range
of 0 to 7.
221 Illegal Bit Address
The four basic bit operators of the PICmicro MCU take either an 8-bit field
(12-bit core) or a 10-bit field (14-bit core). This is composed of a register
address and a bit number. If this combination exceeds the 8 or 10 bit range
for the selected processor, this error is generated. Note that only the
composite value is checked - this check in no way guarantees the validity
of the bit number or the register address. These value are, however,
checked whenever they can be checked as separate parameters.
222 Illegal Destination Specifier
Many Microchip instructions expect the second parameter to specify the
destination of the operation result : 0 if the result is also the source
register, 1 if the result is to be placed in W. This error indicates that a
numeric expression was used for this parameter which neither evaluated to 0
nor 1. For clarity, the second parameter can be omitted to use the source
register as the destination and W can be used to specify W as the
destination.
223 Illegal TriState File Register Address Register
The TRIS instruction may only operate upon registers 5, 6, or 7. This error
indicates that the specified register value was other than 5, 6, or 7. The
equivalent Parallax instruction may also generate this error :
MOV !Register,Source
224 Keyword Directive Only for Use in Macros
Some keywords (such as LOCAL and ENDM) only have meaning in the definition
of a macro body. This error indicates that an attempt was made to use such
a keyword in some other context.
225 Undefined Symbol 'Identifier'
A reference was made to the specified symbol although no such symbol was
detected in the first pass of the assembler.
226 Numeric Constant or Symbol Name Expected
A legal expression is a well formed sentence containing operators and
terminals from which values for the operators are derived. This error
indicates that an expression terminal was encountered which didn't evaluate
to a numeric value.
227 Divide by Zero
An attempt was made (in the source) to divide by zero at assembly time.
228 Modulus by Zero
An attempt was made (in the source) to take the modulus of a number by zero
at assembly time.
229 Device Doesn't Support EEPROM
An attempt was made to generate values in the EEPROM segment for a device
which doesn't support EEPROM.
230 Collision in EEPROM @ Address
An attempt was made to generate more that one value for the specified
EEPROM location.
231 Attempt to Redefine 'Identifier'
An attempt was made to assign a new value to a symbol defined either as a
program label or using the EQU pseudo-op. A common (but confusing) source
of this error can result from different flows through conditional assembly
blocks between the first and second passes. While this type of variant
programming can be done, it is very tricky and poor programming practice -
it should be avoided.
232 File Name Expected
Indicates that the parameter specified for the current INCLUDE or MACLIB
pseudo-op is not a quoted string.
233 String Expression Expected for Title
The TITLE pseudo-op is used to replace the normal copyright notice of the
listing with a customized header. This new header must be specified as a
quoted string and is the only parameter of the TITLE pseudo-op.
234 Identifier Expected
The IFDEF and IFNDEF conditional assembly pseudo-ops require one identifier
as it parameter. This error is generated whenever this parameter is other
than a legal identifier.
235 Opcode Expected Instead of 'Token'
Any text starting in column 2 or later which is not a commented is assumed
to either be an opcode, a pseudo-op or the name of a defined macro. All
other tokens will generate this error.
236 Label 'Identifier' Undefined in Pass 0
This error indicates that an attempt was made to define the specified
symbol in pass 1, although no definition was made for the symbol during
pass 0. This is almost always the result of different flows through
conditional assembly blocks between pass 0 and pass 1.
237 IRP Missing Replacement Parameter
The IRP macro takes two parameters. The first parameter is an identifier
which is substituted on each expansion with the next item from the comma
separated list (the second parameter). This error indicates that the
identifier expected for the first parameter of the IRP statement was not
found.
238 Preprocessor Directive Expected
239 Instruction Restricted to 16-Bit Core
The opcode of the specified line cannot be used for the 12-bit or 14-bit
core.
240 String Expression Expected for MESSG
The MESSG pseudo-op requires the string to be output.
14. Fatal Errors
300 Too Many Errors
The assembler can generated an unlimited number of warnings, but the number
of errors is limited. While this value defaults to 15, it can be changed
using the -G option. This fatal error is generated when this allowance is
exceeded.
301 Out of Memory
Indicates that the symbol table, macro table and other memory requirements
for internal bookkeeping have exceeded the memory capacity of your PC.
While this error message is unlikely, it can occur on limited or heavily
burdened systems. If not already at the 640K limit for conventional memory,
add memory. Unloading or loading high of TSRs and network drivers can
increase usable memory. Memory may also be gained by reducing the number of
BUFFERS and FILES allocated in CONFIG.SYS.
302 Unable to Open File 'Filename'
Indicates that DOS was unable to open the specified file. This is either
because the file could not be found or not enough file handles were
available (this usually only occurs with deep nesting of INCLUDE and MACLIB
statements). If the file exists, make sure it resides in the current
directory. If the file is an INCLUDE or MACLIB file, also check in the
default include directory. While this defaults to the INC subdirectory of
the directory where PM.EXE is kept, it can be modified using the -I option.
If the file is found as described above, try increasing the number of FILES
in CONFIG.SYS.
303 Unable to Create File 'Filename'
Indicates that DOS was unable to create the specified file. This is either
because there are not enough file handles available or there is not enough
space on the destination disk. If there is adequate disk space available,
try increasing the number of FILES in CONFIG.SYS.
304 No Source File Specified
This error is generated if PM is invoked with options, but without the name
of a source file. If PM is invoked with no options and no source name, a
brief help screen is displayed.
305 Unable to Write to File 'Filename'
Indicates that DOS was unable to write to the specified file. This usually
results when there is not enough space on the destination disk or the
specified file has some special write protection (such as DOS SHARE.EXE).
306 Page Width must be 80 to 255 Columns
The PAGE pseudo-op is used to specify the size of the listing page. The
first parameter is used to specify the width of the page. This value must
be between 80 and 255, inclusive.
307 Illegal Device Type
An attempt was made to use an illegal specifier with the DEVICE statement.
Such values would have 10 or 11 as the two most significant bits.
308 Macro Buffer Overflow
An attempt was made to define a macro which was larger than 4K. This
usually indicates a missing ENDM pseudo-op.
Re: CAN header and EXT asm question
Interface board with SPI controlled MCP 2515 and line driver to use with non CAN enabled PIC's
retepsnikrep Yesterday, 08:34https://www.aliexpress.com/item/1005006850683509.html
Line driver to use with CAN enabled PIC's....