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.
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.
Due to the limited documentation I had on these processors, I got the addressing mode of two new instructions wrong.
The SCAL and DBNZ instructions required two operands, the register and the destination address.
In this bug, the destination address was missing.
This bug is now fixed in version 3.01.02.
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.
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.
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.
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.
Status: Fixed as of version 3.01.03 of the PIC16 cross overlay.
Accidentally typed errros instead of errors.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
The .DB directive does not accept spaces in a string. This is of course wrong and is fixed in version 2.05.
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.
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.