Known Bugs

This page will list all known bugs, whether reported by users or the ones I found myself. It goes without saying that serious bugs will be fixed as soon as possible. Other bugs are of minor importance and will usually have a way to work around the problem. Those minor bugs often don't justify a new version of the program on their own.
Nevertheless I will try to eliminate all known bugs whenever a new version of the program is released.

This means that only very serious bugs in Version 2 of the SB-Assembler will be fixed from now on, because that version is actually discontinued at the arrival of Version 3.

The good news is that Version 3 is written in Python, which means that the source code of the SB-Assembler is automatically shared with you. If you know your way around in Python you may even fix the bugs yourself. Please let me know if you have found and fixed a bug, so I can help other users with it.

Bug List For Version 3

If the status of a known bug is fixed in a newer version than is currently officially released it means that it will come soon in the next official release of the SB‑Assembler. Simply drop me an email if you can't wait that long. Then I'll send you the fixed version by email. Or you can clone/pull the latest version from my Github page.

PIC12 and PIC14 Cross pass 2 synchronization

Status: Fixed in version 3.01.02 of both overlays.

Whenever an error occurred in an immediate parameter the synchronization between pass 1 and 2 was broken. This happened for instance if an undeclared label was used in an expression.

Z80 Cross optional parameter for RET instruction

Status: Fixed as of version 3.01.05 of the Z80 cross overlay.

The rules for the optional parameter for the RET instruction were a bit complicated and didn't always do what you would expect. To simplify matters, and to make it more consistent I have changed the behaviour of the optional parameter for the RET instruction. If the first word after the RET instruction is one of the 8 conditions, the appropriate conditional RET instruction is used. Otherwise the text following the RET instruction is treated as a simple comment field.

SC/MP Cross now allows page wrapping offsets

Status: Fixed as of version 3.02.00 of the SC/MP cross overlay.

This was not really a bug. The assembler simply was a bit too strict in checking the range of offsets. It appears that it was very common practice to allow page wrapping for offsets to reach data areas. As of SC/MP Cross version 3.02.00 the assembler doesn't raise errors any more when page a wrap occurs during the calculation of an offset.

6800 Cross accidentally accepts new opcodes

Status: Fixed as of version 3.01.03 of the 6800 cross overlay.

An error was made in checking the availability of instructions, which caused the 6800 to accept new instructions, which are unknown to the 6800. Usually this is not a problem, as long as you don't use any of the new instructions.

PIC16 Cross Typo

Status: Fixed as of version 3.01.03 of the PIC16 cross overlay.

Accidentally typed errros instead of errors.

6800 Cross Unsupported Instructions

Status: Fixed as of version 3.01.02 of the 6800 cross overlay.

Some 6801 or 6301 specific instructions were also accepted by the 6800, which doesn't support these instructions.

Z80 Cross And Spaces Behind Commas

Status: Fixed as of version 3.01.03 of the Z80 cross overlay.

The conditional branch and jump instructions didn't allow a space to follow a comma.

Z8 Cross And Octal Numbers

Status: Fixed as of version 3.01.03 of the Z8 cross overlay.

Eventhough the online user manual promised to use indirect addressing mode in favour of octal numbers, the SB-Assembler did the opposite.

1802 Family Mnemonic Typo

Status: Fixed as of version 3.03.06 of the 1802 cross overlay.

I've made a typo in the very first mnemonic I've defined. Increment Register X must be IRX, not INX.

EEPROM Target file bug

Status: Fixed as of version 3.03.05 of SB-Assembler.

I've introduced a bug in version 3.02.03 which affected the flushing of the buffers to the EEPROM target file. This one is corrected in version 3.03.05.

Got some instructions wrong on the Z180

Status: Fixed as of version 3.01.02 of the Z180 cross overlay.

I confused the letter o and the number 0 for the IN0 and the OUT0 instructions. Now you can use both an o or a zero for these instructions.

The .SE directive disrupts Macro label numbering

Status: Fixed as of version 3.03.01 of the SB-Assembler

This bug causes the .SE directive to disrupt the Macro label numbering, probably resulting in extra definition errors or wrong destinations when the .SE directive is used inside a Macro.

The assembler crashes when the .TA directive is used when no target file is open

Status: Fixed as of version 3.03.00 of the SB-Assembler

The .TA directive is not very useful when no target file is open. However it should not crash the program.

The PIC14E cross overlay may crash with a Python error

Status: Fixed in version 3.02.01 of the SB-Assembler (version 3.01.01 of the PIC14E cross overlay)

An undefined label for instructions with immediate operands, like MOVLW or GOTO, cause a crash of the assembler with a Python error.

Missing warning in 6502 Cross overlay

Status: Fixed in version 3.02.01 of the SB-Assembler (version 3.01.01 of the 6502 cross overlay).

This is just a minor bug. The assembler forgets to issue an "extra parameters ignored" warning when you add too many parameters in immediate addressing mode. For instance: LDA #1,X

Wrong representation of Negative numbers

Status: Fixed in version 3.02.00 of the SB-Assembler.

Negative numbers are sometimes truncated to less than the usual 8 byte resolution in the listing. And negative numbers are a bit distorted in the symbol file. E.g. -1 is shown as $000000X1, instead of $FFFFFFFF.
This bug only affected the representation of the numbers. There was nothing wrong with the actual calculations with negative numbers.

8041 and 8041A cross overlays 3.01.00: OUT versus OUTL

Status: Fixed in version 3.02.00 of the SB-Assembler (version 3.01.01 of the affected cross overlays).

A bit confusingly these processors have a new instruction OUT DBB,A, instead of the more common notation OUTL DBB,A. Before version 3.01.01 of the affected cross overlays the SB-Assembler didn't support the correct notation OUT DBB,A. Now it allows both OUT DBB,A and OUTL DBB,A.

8021 and 8022 cross overlays 3.01.00: Missing instructions

Status: Fixed in version 3.02.00 of the SB-Assembler (version 3.01.01 of the affected cross overlays).

The instructions IN A,P0 and OUTL P0,A, which are unique to these two processors, are missing. As a matter of fact they were also missing in Version 2 of the SB-Assembler.

Z80 cross overlay 3.01.00: Memory reference (MEMORY)

Status: Fixed in version 3.02.00 of the SB-Assembler (version 3.01.01 of the Z80 cross overlay).

When the label name for a memory reference like LD (MEMORY),HL starts with the letters BC, DE, HL, IX, or IY you will get a Bad Operand error. Example: LD (DEEP),HL will trigger this bug because DEEP starts with DE.

MOS Technologies files generate an error when read from paper tape by the KIM-1 monitor

Status: Fixed as of version 3.03.07 of the SB-Assembler.

The KIM-1 monitor paper tape read routine stumbled across the End Of File record of the MOS Technologies file format. The data was read in correctly, only the end of the file confused the monitor. This fix fixes this. Now the MOS Technologies file format is accepted by the KIM-1 and the SYM-1.

Bug List For Version 2

Last line of source is sometimes not interpreted

The last line of a source file was not interpreted if it wasn't ended with a CR character. This is corrected in software version 2.07.

Small bug in Microchip PIC16Cxxx cross overlay

In version 2.00 of this overlay an undefined label in the first operand of bit instructions wasn't reported. This bug is now fixed in cross overlay version 2.01.

Bug in Intel Hex notation

A silly bug was found in the interpretation of the recently added Intel Hex notation. A value of 0001BH should of course be interpreted as $001B by the assembler. Due to this bug it is interpreted as a binary number %0001, followed by a meaningless "H" which caused a Bad operand error.
This bug is fixed in version 2.05 of the main assembler program.

.DB does not accept spaces

The .DB directive does not accept spaces in a string. This is of course wrong and is fixed in version 2.05.

Undefined Label Error

The directives .OR, .PH, and .RF will produce a fatal undefined label error when using a label as operand. It goes without saying that this is not the way it should be and the problem is fixed in the SB-Assembler version 2.05.

The .LF directive doesn't redirect the listing to the screen

Officially the .LF directive must close the current list file and open a new one if one is given, or redirect the listing to the screen again if no new list file is given.
But instead of redirecting the listing to the screen again it tries to open a new file with no file name. It goes without saying that this doesn't work and DOS will protest with an open error.
This bug is fixed in the SB-Assembler version 2.05.