-
Notifications
You must be signed in to change notification settings - Fork 8
Fixes
Carl-Henrik Skårstedt edited this page Nov 26, 2015
·
3 revisions
- More DASM directives supported (ERR, DV, DS.B, DS.W, DS.L)
- Removed the concept of linking by merging sections and instead keeping the sections separate and individually assigned memory addresses so they won't overlap.
- Fixed up Merlin LNK directive to work with new linker
- Fixed linker merged section reloc confusion.
- -org command line argument to override the built-in assumption of org $1000, to avoid ever having to use the ORG directive inlined in code.
- dump_x65 now shows the code offset of each section into the .x65 file which can be copied and pasted into the disassembler in case the object file assembler output needs to be inspected.
- A linker export summary is shown when building binary fixed address, this shows how the linker re-arranged the sections in memory. The section addresses are also included in the .lst file even if the section didn't generate any listing information, such as included object files.
- BSS sections are handled similar to CODE and DATA sections but will not write out BSS bytes at end of binary data. This should complete the section handling necessary to build a relocatable executable.
- Replaced the fixed address linker so it doesn't merge sections but just assigns addresses. This is more similar to how a relocatable code loader would handle it. I may need to merge sections for OMF to reduce the number of code sections.
- dc.t (3 bytes) dc.l (4 bytes) for data declaration
- Linking of zero page / direct page sections
- Added section types, should cover most intuitive formats (seg.type; segment name; segment "name": type; etc. etc.)
- Changed the data for relocs to better match Apple II GS OMF format which also changes the object file format.
- Added a disassembler (disassembler/x65dsasm.cpp)
- % evaluates to the current end of scope instead of whatever scope ends first
- rept crash fix if not resolved until assembly completed
- rept and symbol reference with forward reference label was not taking section into account
- Link append sections target confusion cleared up (caused crash/link errors/freeze)
- XREF prevented linking with same name symbol included from .x65 object causing a linker failure
- << was mistakenly interpreted as shift right
- REPT is also a value that can be used in expressions as a repeat counter
- LONG allows for adding 4 byte values like BYTE/WORD
- Cycle listing for 65816 - required more complex visualization due to more than 1 cycle extra
- Enabled EXT and CYC directive for merlin, accumulating cycle timing within scope (Hierarchical cycle timing in list file) / CYC...CYC (6502 only for now)
- First pass cycle timing in listing file for 6502 targets
- Enums can have comments
- XREF required to reference XDEF symbols in object files (.x65)
- Nested scopes and label pools broke recently and was fixed, section alignment wasn't working.
- Link file issues fixed, added a dump tool to show the contents of object files for debugging.
- Rastan for Apple II gs assembles and links.
- Merlin LNK, ENT, ADR, ADRL functional
- Merlin allows odd address mode of pei / pea.
- jsr (addr,x) and jml / jmp.l $123456,x was missing from 65816 instructions
- Fixed a bug with CPU indexes (forgot to add 6502 illegal ops to cpu indices)
- Macro parameters should replace only whole words instead of any substring
- boolean operators (==, <, >, etc.) for better conditional expressions
- Set 65816 immediate op size on command line for files that make that assumption
- Merlin specific directives are not available in non-merlin syntax mode to avoid confusion
- Merlin macros use ]1, ]2, ]3 as arguments instead of the parameter list after MAC
- -endm option also affects REPT
- Added IMPORT directive as a catch-all include/incbin/etc. alternative
- Added 6502 illegal opcodes (cpu=6502ill)
- 65816
- 65C02 enabled through directives (PROCESSOR/CPU/XC)
- 65c02 (currently only through command line, not as a directive)
- Now accepts negative numbers, Merlin LUP and MAC keyword support
- Merlin syntax fixes (no '!' in labels, don't skip ':' if first character of label), symbol file fix for included object files with resolved labels for relative sections. List output won't disassemble lines that wasn't built from source code.
- Export full memory of fixed sections instead of a single section
- Option to source disasm output and option to dump all opcodes as a source file for tests
- Object file format so sections can be saved for later linking
- Added relative sections and relocatable references
- Added Apple II Dos 3.3 Binary Executable output (-a2b)
- Added more Merlin rules
- Added directives from older assemblers
- Added ENUM, sharing some functionality with STRUCT
- Added INCDIR and command line options
- REPT
- fixed a flaw in expressions that ignored the next operator after raw hex values if no whitespace
- expressions now handles high byte/low byte (>, <) as RPN tokens and not special cased.
- structs
- ifdef / if / elif / else / endif conditional code generation directives
- Label Pools added
- Bracket scoping closure ('}') cleans up local variables within that scope (better handling of local variables within macros).
- Context stack cleanup
- % in expressions is interpreted as binary value if immediately followed by 0 or 1
- Add a const directive for labels that shouldn't be allowed to change (currently ignoring const)
- TEXT directive converts ascii to petscii (respect uppercase or lowercase petscii) (simplistic)