Skip to content

Releases: llvm-mos/llvm-mos-sdk

SDK v17.1.2

20 Jun 16:46
d107f88
Compare
Choose a tag to compare

Bug fixes

Optimizations

SDK v17.1.1

11 Jun 20:16
Compare
Choose a tag to compare

Bug fixes

  • 63e13de - Fix minimal stdio ungetc (and thus scanf)
    • The ungetc buffer was accidentally given type bool, so the characters that scanf would ungetc would be forced to 1.

SDK v17.1.0

03 Jun 14:44
Compare
Choose a tag to compare

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's lseek has not yet been ported, since it only works on Sparta DOS X. See #333
  • ELF POSIX utility script to generate atari800 label files (atari800lbl)

Bug fixes

  • #332 - Exit to Atari DOS via JMP (DOSVEC). The DUP clobber detection isn't robust in Atari DOS, so exiting via RTS may cause a crash. We could have fixed this by re-ordering the XEX file chunks, but reloading the DUP effects a JMP (DOSVEC) anyway, so may as well. - @cwedgwood
  • Add missing devnum symbol to non-c64 commodore targets' POSIX file I/O layers. This fixes stdio on these targets.

SDK v17.0.0

22 May 06:05
Compare
Choose a tag to compare

Breaking changes

  • __from_ascii now returns an int, and its write callback does as well. This allows it to forward an EOF error code from its internal write 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) for commodore 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 minimal getchar altered accordingly.

SDK v16.0.0

14 May 16:13
Compare
Choose a tag to compare

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 from dl_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) for commodore
    • Known issue: Doesn't yet support ASCII->PETSCII translation in text mode; outputs as if opened in binary mode

Bug fixes

  • #331 - [Mega65] Fix C++ static assert in ethernet controller - @mlund

SDK v15.3.0

25 Apr 22:05
Compare
Choose a tag to compare

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 and fopen in the same project, the link will fail.
  • fclose (with automatic fclose on exit)
  • rename
  • tmpfile
  • tmpnam

SDK v15.2.0

09 Apr 16:13
b61b298
Compare
Choose a tag to compare

New features

  • #154 - Add MEGA65 headers for hardware registers - @mlund

Bug fixes

SDK v15.1.0

04 Apr 16:01
becc1c3
Compare
Choose a tag to compare

New targets

  • #329 - Initial Atari Lynx support (.bll.o) - mos-lynx-bll-clang - @asiekierka

SDK v15.0.0

27 Mar 17:27
47b35b2
Compare
Choose a tag to compare

Breaking changes

  • llvm-mos/llvm-mos#456 - 65816 assembler changes - @asiekierka
    • lda >addr was previously interpreted as lda mos16hi(addr), but now will be interpreted as lda mos24(addr). This is unlikely to break production code.
    • lda <addr8 was previously interpreted as lda mos16lo(addr), but now will be interpreted as lda 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, while lda !addr and lda #^addr have been introduced.
      Immediate expressions now emit R_MOS_IMM8 and R_MOS_IMM16, while address expressions now emit R_MOS_ADDR8 and R_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 and addr + Y addressing mode syntaxes have been fixed, and a test has been added.
    • S and R can now be used as register names in stack-relative addressing modes instead of SP and RP. This matches WDC 65816 and 65EL02 documentation/recommendations, respectively.
  • dc85a7d - Fix is_floating_pointr_v C++ <type_traits> typo

SDK v14.2.0

12 Mar 16:24
6c4e175
Compare
Choose a tag to compare

New targets

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 of M and X flags required to disassemble a given opcode, allowing tools like llvm-objdump to distinguish between lda #$ea and lda #$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.

Optimizations