1
0
mirror of https://github.com/ksherlock/x65.git synced 2024-12-28 04:31:46 +00:00
Commit Graph

194 Commits

Author SHA1 Message Date
Carl-Henrik Skårstedt
ec01fcc6e1 Disassembler memory access check 2015-12-14 00:27:12 -08:00
Carl-Henrik Skårstedt
5dbe08b1b3 Minor disassembler annoyances addressing
- Label ranges outside of data would be ignored for instructions
- If last code reference was a jump table then its references would get
stripped
2015-12-12 14:00:36 -08:00
Carl-Henrik Skårstedt
3b2b0f7778 Disassembler local label improvement
- Determination for negative branches to local labels were one off which
meant lots of unnecessary local labels at end of long functions
- struse null/0-length check was reverse causing access to 0
2015-12-12 13:22:23 -08:00
Carl-Henrik Skårstedt
0f740c25bd Fixes to disassembling code pointer arrays
- Removing some filters that pulled out relevant references from pointer
arrays
- Separating 6502 illegal opcodes (6502ill) and WDC specific 65C02
instructions (65C02WDC) from general disassembly
- invalid instructions will always be disassembled as dc.b $hh instead
of the non-assemblable instruction
2015-12-11 23:01:52 -08:00
Carl-Henrik Skårstedt
c96399d896 Adding read-only labels to disassembler and Atari 7800 memory map file
- Changed how the instruction lookup is stored to more easily
distinguish between read-only and other instructions
- Added Atari 7800 labels (a78.lbl)
- Added a keyword "read" to declare a read-only version of a data label
to the labels file
- Fixes to determining addresses representing data or code
- Fixed missing data blocks that were exactly 16 bytes
2015-12-10 22:27:49 -08:00
Carl-Henrik Skårstedt
214c32931a Adding pointer array to data
- Allow assign data type to pointer arrays (label = start-end pointers
data comment)
2015-12-09 23:53:43 -08:00
Carl-Henrik Skårstedt
798b657c70 Better logic for what separates code segments
- Allows jump tables without separating between each instruction
- Branch to instruction after jump instruction does not inject a
function separator
- Jump relative does not reference code
2015-12-09 18:22:07 -08:00
Carl-Henrik Skårstedt
a674f7f165 Fix user defined labels not keeping up with current address
- can skip multiple labels per instruction
2015-12-09 00:06:38 -08:00
Carl-Henrik Skårstedt
0e64a58375 Disassembler improvements
- More aggressive local labels
- Double checking code sections after detection phase
- Zero page instructions added to labels (65816 uses direct page and
will generate slightly off labels)
2015-12-07 22:26:04 -08:00
Carl-Henrik Skårstedt
acf26cf7d7 Fixing and adding to x65macro.i
- Adding shift operations to macros
- Adding README.MD to macros
2015-12-04 22:10:27 -08:00
Carl-Henrik Skårstedt
9cdfeeb0ca Disassembler improvements and c64 labels file
- Adding a labels file with all the c64 hardware addresses
- Labels are tracked outside of the binary file range
- Zero page tracking
- Improved code vs data tracking a bit
2015-12-03 22:53:16 -08:00
Carl-Henrik Skårstedt
6cbf7f8754 x65macro.i added
- Adding standard macros with for loops, memory copy, add, subtract,
move and set
- macros can be named with dots
- double negatives won't cause errors in expressions
- vice output will convert labels named "debugbreak" to vice breakpoints
rather than vice labels
- fixed issues with mixing conditional operators with math operators in
expressions
2015-12-02 22:16:31 -08:00
Carl-Henrik Skårstedt
260f48e126 Bug fixes
- struse.h replace with bookend didn't check bookends in all cases
- macros can be inside of conditionals (within if/else/endif, etc)
- string symbols mistake caused garbage code (missing braces around
assignment and return)
2015-12-01 21:21:00 -08:00
Carl-Henrik Skårstedt
72b81efc87 Local labels attempted in disassembler 2015-11-30 23:03:51 -08:00
Carl-Henrik Skårstedt
2919e0556c Disassembler label file additions
- adding ranges to labels file
- bug fixes
2015-11-29 22:24:42 -08:00
Carl-Henrik Skårstedt
6adcdc92b6 Disassembler improvements
- Added a way to instrument labels for the disassembler
- Added pointers section to disassembler, needs to be instrumented
- Fixes
2015-11-28 14:21:54 -08:00
Carl-Henrik Skårstedt
65f19b4a47 Bug fixes
- rtl instruction had wrong opcode
- disassembler works a lot better with correct rtl, even for 6502
- disassembler can specify n bytes of data before code starts in src
mode (data=initial data size)
2015-11-27 18:01:53 -08:00
Carl-Henrik Skårstedt
bdc013350c Adding imagery 2015-11-26 13:48:04 -08:00
Carl-Henrik Skårstedt
f6531d3bbc Adding one character to README.ME 2015-11-26 13:19:35 -08:00
Carl-Henrik Skårstedt
482640fb1e README.MD cleanup 2015-11-26 13:12:02 -08:00
Carl-Henrik Skårstedt
9f8ad61fe2 Adding string symbols
- String Symbols can be evaluated as expressions or assembled as code
- String Symbols can be generated by macros
- Cleaning up first page
- Adding more to the x65.txt documentation
2015-11-26 13:10:58 -08:00
Carl-Henrik Skårstedt
5459c6c0e0 More line in the documentation
- Fleshed out the sections section
- Added some notes about symbols
- Put the label pool section in
2015-11-24 23:28:56 -08:00
Carl-Henrik Skårstedt
05bdc73b86 Added doc & binaries
- Started text documentation of assembler
- Built binary zip files (Windows)
- Fix for conditional + scope characters
- Fix for empty section "default" defaulting to BSS
2015-11-23 22:34:30 -08:00
Carl-Henrik Skårstedt
d73b7c8581 Iterating on the disassembler
- exploring rules to better distinguish between code and data
2015-11-19 23:50:59 -08:00
Carl-Henrik Skårstedt
bf2e281751 Resolved OMF Directpage+stack seg, Disassembler "smarter"
- Using a section named DirectPage_Stack to adjust same named segment in
OMF file
- Resolving all zero page sections to fixed addresses before exporting
OMF
- Disassembler does more shenanigans to output more assemblable code
- Automatically determine the code address for c64 prg files
2015-11-17 23:47:35 -08:00
Carl-Henrik Skårstedt
055c92ded7 README.MD for x65dsasm was a bit out of date 2015-11-17 00:00:05 -08:00
Carl-Henrik Skårstedt
5792f6ee7b Copied in struse.h, added some reference visualization in x65dsasm
- x65dsasm now adds labels for internal referenced addresses
- x65dsasm has a src option that displays disassembly as code that could
assemble as is
- fixed the help output for dump_x65
- copied in struse.h
2015-11-16 23:55:16 -08:00
Carl-Henrik Skårstedt
7fbe9661fa Fixing analyzer issues 2015-11-15 22:15:41 -08:00
Carl-Henrik Skårstedt
563ff4d1ec utf8??? 2015-11-15 21:17:34 -08:00
Carl-Henrik Skårstedt
43931568aa Apple II GS executable generation
- Lots of managing section support
- a2o command line argument
- DASM directives added
2015-11-15 21:14:46 -08:00
Carl-Henrik Skårstedt
25eab76c95 Fixed Merlin LNK directive and streamlined the LINK directive
- No longer merging sections but assigning sequential addresses to
sections
- Required separate linking logic for Merlin.
2015-11-09 22:15:14 -08:00
Carl-Henrik Skårstedt
90fc74a6fb Adding -org command line option
- -org allows for command line control of fixed address binary output
start address
- fixed a quirk in merged section reloc resolve
2015-11-09 00:07:55 -08:00
Carl-Henrik Skårstedt
b5ab013cb5 Rebuilt the fixed address linker
- Code and data segments are not just merged together, each segment in
each export group just gets address assigned and relocs / labels are
fixed up.
- BSS sections won't generate binary data if not inbetween code and data
segments for an export group (labels and relocs are still extended)
- DC directive now allows for .t (3 byte values) and .l (4 byte values)
decoration
- .lst includes all section info and address ranges if fixed
- Updated x65 dump tool with fixes to x65 data
2015-11-08 18:06:45 -08:00
Carl-Henrik Skårstedt
9cd2ee7cd1 Linking zero page / direct page sections 2015-11-07 18:23:57 -08:00
Carl-Henrik Skårstedt
5030d0be15 Added type of sections
- x65 now has a type for each section
2015-11-06 22:48:50 -08:00
Carl-Henrik Skårstedt
97dc0ad5e6 Fix reloc data
- changed rigid type of reloc target from byte/word/hi byte/lo byte to
number of bytes and bits to shift (Apple II GS OMF format)
2015-11-05 21:23:38 -08:00
Carl-Henrik Skårstedt
89ed6d25cc Adding a disassembler 2015-11-04 21:15:22 -08:00
Carl-Henrik Skårstedt
9f935a8e91 Bug fixes
- REPT caused a crash if expression was resolved after assembly
completed
- Fix expression % as a label at end of scope if another scope ended
before the current scope
- Removed # from conditionals since that doesn't fit with any assembler
style
- Added .l (long) and .t (triple) to label pool sizes, also supporting
.d as double which is the same size but different meaning than .w (word)
2015-11-03 20:57:06 -08:00
Carl-Henrik Skårstedt
95e22ae7a2 Fix for forward reference in REPT block and assigning section relative address to symbol
- Remember the REPT index for values that can't be evaluated yet
- Remember section reference when evaluating symbols dependent on
address labels.
2015-11-02 23:14:01 -08:00
Carl-Henrik Skårstedt
81e71acea5 Linker fix
- Fix for appended section to last instead of target section
2015-11-01 23:02:03 -08:00
Carl-Henrik Skårstedt
4938652d96 Update readme.md 2015-11-01 15:51:50 -08:00
Carl-Henrik Skårstedt
c9d22a02ed Reference to linking page 2015-11-01 15:50:58 -08:00
Carl-Henrik Skårstedt
a4d6c3efbf Cycle timing listing for 65816
- XREF blocked linking with same name label
- REPT also works as a symbols for repeat counter to reduce need for
extra counting labels.
- "<<" got interpreted as a right shift
- Added LONG keyword to declare 32 bit values
2015-11-01 15:08:38 -08:00
Carl-Henrik Skårstedt
c50ae5027d Cycle counter hierarchy
- Each scope in a file shows the cycle count added up for instructions
within it.
- Added Merlin version of XREF which is EXT (was previously ignored)
- Added Merlin cycle counter on/off directive (CYC)
2015-10-31 14:34:45 -07:00
Carl-Henrik Skårstedt
07b2b04763 Fix for enums
- enum assignment (=) was ignored
2015-10-31 00:35:25 -07:00
Carl-Henrik Skårstedt
b1e9797160 XREF support, starting cycle counting
- XREF directive now required for referencing XDEF symbols from other
files
- Created cycle timing table for 6502, displaying for each line in .lst
files
2015-10-30 22:30:16 -07:00
Carl-Henrik Skårstedt
8fdeb287e1 Bug fixes
- Fixed section alignment
- Fixed nested scopes
- Fixed a borked parameter sent to label pools
- Added -all as a command line option for dump_x65
2015-10-28 21:08:23 -07:00
Carl-Henrik Skårstedt
662982404b Link issues
- Map symbols might not have been updated with their labels
- Relocation index may be off
- Map symbols stored in 16 bits causing truncation of value in symbol
output
- Added a tool to dump the values in object files
2015-10-27 20:57:14 -07:00
Carl-Henrik Skårstedt
74a34585d4 Rastan IIgs builds with x65
- Fixed issue with CPU indexing
- Added missing 65816 jmp (addr,x) and jmp $123456,x and jsl
- Added a method for Merlin style linking to work in x65
- Made low byte / high byte (<, >) very low precedence
- Some more Merlin directives
- Split out some directive code from the huge ApplyDirective function
- Add source lines of keywords and labels to the output listing file
- x65 object file fixes
2015-10-26 20:50:26 -07:00
Carl-Henrik Skårstedt
72b9842354 Leftover fixes
- added -acc=16 and -xy=16 command line options for 65816 immediate mode
instruction size
- added conditional expressions (evaluates to 0 for false and 1 for
true)
- fixed macro substitution to be whole word only
2015-10-25 23:48:35 -07:00