Releases: llvm-mos/llvm-mos-sdk
Releases · llvm-mos/llvm-mos-sdk
SDK v17.1.1
Bug fixes
- 63e13de - Fix minimal
stdio
ungetc
(and thusscanf
)- The
ungetc
buffer was accidentally given typebool
, so the characters thatscanf
wouldungetc
would be forced to 1.
- The
SDK v17.1.0
New features
- The SDK completes the first pass of porting cc65's
stdio
capabilities. It's not very well tested, so expect the unexpected. (I've given the commodore and atari ports some smoke testing, but not the rp6502. That is likely to work as-is though, since the cc65 POSIX stuff was already added to llvm-mos previously.)- Notable exception:
atari
'slseek
has not yet been ported, since it only works on Sparta DOS X. See #333
- Notable exception:
- ELF POSIX utility script to generate
atari800
label files (atari800lbl
)
Bug fixes
- #332 - Exit to Atari DOS via
JMP (DOSVEC)
. TheDUP
clobber detection isn't robust in Atari DOS, so exiting viaRTS
may cause a crash. We could have fixed this by re-ordering theXEX
file chunks, but reloading theDUP
effects aJMP (DOSVEC)
anyway, so may as well. - @cwedgwood - Add missing
devnum
symbol to non-c64
commodore
targets' POSIX file I/O layers. This fixesstdio
on these targets.
SDK v17.0.0
Breaking changes
__from_ascii
now returns an int, and itswrite
callback does as well. This allows it to forward an EOF error code from its internalwrite
function and exit early.fpos_t
is now 32-bit for compatibility with cc65. If you need files larger than 2GiB, you probably don't want a 6502.
New features
stdio
is now feature-complete (parity w/ cc65) forcommodore
family targets- Text mode now converts at runtime from the execution character set (always ASCII) to the platform character set (PETSCII on non-cx16 systems).
Other changes
- The minimal stdio's FILE pointers are now non-null and all different.
- The simple
ungetc
was moved into the minimal stdio and the minimalgetchar
altered accordingly.
SDK v16.0.0
Breaking changes
__from_ascii
and__to_ascii
now take a void pointer to a context object and pass it though to the read/write callback. This is a trick fromdl_iterate_phdr
to allow passing general lambdas that refer to an ambient context.
New features
- Port
fwrite
from PDCLib; port cc65 file writing backend (write
) forcommodore
- Known issue: Doesn't yet support ASCII->PETSCII translation in text mode; outputs as if opened in binary mode
Bug fixes
SDK v15.3.0
New library features
- All of the below only support the
c64
. Picked this arbitrarily; other backends will come later. fopen
- There's not actually much you can do with open files, and if you try to use most
stdio
functions andfopen
in the same project, the link will fail.
- There's not actually much you can do with open files, and if you try to use most
fclose
(with automaticfclose
on exit)rename
tmpfile
tmpnam
SDK v15.2.0
New features
Bug fixes
- llvm-mos/llvm-mos@d689274 - Fix ld65 "invalid argument" error on Windows when LLD does multiple passes (ca65 integration)
SDK v15.1.0
New targets
- #329 - Initial Atari Lynx support (
.bll.o
) -mos-lynx-bll-clang
- @asiekierka
SDK v15.0.0
Breaking changes
- llvm-mos/llvm-mos#456 - 65816 assembler changes - @asiekierka
lda >addr
was previously interpreted aslda mos16hi(addr)
, but now will be interpreted aslda mos24(addr)
. This is unlikely to break production code.lda <addr8
was previously interpreted aslda mos16lo(addr)
, but now will be interpreted aslda mos8(addr)
. As the two relocations are functionally (but not semantically) equivalent, this should not break production code.- Likewise, functional (but not semantic) changes involve the relocations emitted by immediate expressions (
lda #val
).
New features
- #316 - Add C++ fixed point math library - @jroweboy
- Supports various fractional and integral bit sizes.
- Supports user-defined literals for common sizes (e.g.,
9.4_12_4
is the 16-bit fixed point number with 12 integral bits and 8 fractional bits that is closest in value to 9.4).
Bug fixes
-
llvm-mos/llvm-mos#456 - 65816 assembler changes - @asiekierka
- The immediate and address modifiers (
#<
,#>
,#^
,<
,!
,>
) now adhere to WDC recommendations as documented in the 65816 datasheet. - In particular, this means the behaviour of
lda >addr
changes, whilelda !addr
andlda #^addr
have been introduced.
Immediate expressions now emitR_MOS_IMM8
andR_MOS_IMM16
, while address expressions now emitR_MOS_ADDR8
andR_MOS_ADDR16
relocations. - Some error messages have been adjusted to more accurately represent the assembler's limitations.
- Bugs/limitations in the SPC700 assembler's handling of
addr + X
andaddr + Y
addressing mode syntaxes have been fixed, and a test has been added. S
andR
can now be used as register names in stack-relative addressing modes instead ofSP
andRP
. This matches WDC 65816 and 65EL02 documentation/recommendations, respectively.
- The immediate and address modifiers (
-
dc85a7d - Fix
is_floating_pointr_v
C++<type_traits>
typo
SDK v14.2.0
New targets
- #324 - Port to the Watara Supervision (
mos-supervision-clang
) - @asiekierka
New features
- llvm-mos/llvm-mos#355 - 65816 assembler improvements - @asiekierka
- Add support for forcing "long" addressing mode with
lda mos24(addr)
. - Finish support for
$ml
,$mh
,$xl
,$xh
mapping symbols. These mark the state ofM
andX
flags required to disassemble a given opcode, allowing tools likellvm-objdump
to distinguish betweenlda #$ea
andlda #$eaea
. This information is gathered from the instruction itself -.a8/.a16/.i8/.i16
or whatever we end up implementing to set the default instruction encoding can then simply affect which instruction is selected in the parsing process. Tests have been provided to match other architectures with mapping symbols. - Add missing
BIT #$eaea
opcode to 65816.
- Add support for forcing "long" addressing mode with
Optimizations
- llvm-mos/llvm-mos#452 - Correct register allocation cost values for 65CE02 - @asiekierka
- llvm-mos/llvm-mos#453 - Avoid commuting operands when doing so would lead to fewer trivial copies - @asiekierka
SDK v14.1.0
New features
- llvm-mos/llvm-mos#449 - 65CE02 - Add assembler support for relaxing long branches - @asiekierka
- llvm-mos/llvm-mos#448 - SPC700 - Emit MOV imag8, immediate instructions - @asiekierka
Bug fixes
- #321 - Disable ZP LTO on CP/M-65 to work around #320 - @davidgiven
Misc
- #319 - Print help text for simulator MMIO interface - @asiekierka