-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathVersions.txt
197 lines (135 loc) · 10.7 KB
/
Versions.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
Version Summary
--- Latest versions in 'development' subdirectories
Version 4.13 (1 Feb 2025) **********************************************
1. Revise and unify address validation for all address inputs in .dir and .cmt files.
Rules are -
All addresses are read as up to 5 hex digits, 0xfffff. The first digit is bank. Valid banks are 0,1,8,9 for all bins.
Registers are 0x0 to 0x3ff (0x0 to 0xff for 8061) Registers cannot have a bank.
Leading zeroes in register addresses are ignored for compatibility, but not for addresses > 0x2000 in multibanks, as bank 0 is valid.
Single banks (all 8061, some 8065)
No bank required (i.e. 4 digits). Addresses may have a bank 8 attached, which is not displayed. (Single banks are treated as bank 8 in SAD)
Multibanks. (8065)
0x400 to 0x1fff inputs allowed, and default to Bank 1. (for compatibility with other tools)
0x2000 to 0xffff MUST have a bank prefix. (0,1,8, or 9)
2. Fixed - Incorrect print layout for 'split comments' ('|' character) and bit names with AND and OR opcodes.
3. Fixed - Comments showing write symbol names ('\S') when they should be read names.
4. Fixed - Inconsistent spaces in comments after symbol addresses (\S syntax)
5. Fixed - Symbol names not always appearing. Caused by incorrect bank handling in printout
6. Fixed - comments assigned at end of bank (e.g. 1ffff ) do not get printed correctly (or at all).
7. Fixed - Bin files with missing bytes at front may not be processed correctly. Added extra checks for end of bank.
8. Fixed - User commands can get merged with others, and also commands with different data options.
9. Fixed - Offset option 'D' should print a WORD, not a byte.
10. Fixed - Special sequences in comments ('\s' etc) can run over end of line and print rubbish.
11. Fixed - Incorrect write to ROM address(es) allowed when it should not be. Shows in listing output.
12. Fixed - marking data items as 'R' (pointer to) can cause incorrect code scans.
13. Fixed - Autadded offset 'D' had faulty bank reference. Should plain address, 16 bits.
14. Fixed - autoincrement was not showing "++" appended when printing symbol names instead of Rxx style.
15. Fixed - If register declared as an RBASE, writes to it may show an incorrect register value
16. Fixed - Code gap scan can cause incorrect register to appear at following opcode
17. Fixed - Symbol names not correctly showing up on all shift instructions
18. Fixed - Multibanks using Alt_stackpointer (R22) for background task list can cause freeze/loop due to
incorrect list start calculation.
1. Add - Word tables in .dir commands. (not detected automatically yet, due soon)
2. Add - Allow options bank (K) and pointer (R) in data items for word, args, subr commands.
3. Add - Options / for divide, and * for multiply (both floating point)
4. Add - Tighter checks for faulty data or pointers whilst emulating code.
5. Add - Extra validation check to SYM command (allowed multiple colons, should not)
6. Add - Limited 'gap' scanning for missed code. (reduces manual 'scan' commands).
3. Add - Check for possible infinite loop in printout. may cause one strange print line.
1. Remove - Check for words and longs on even boundaries. special chips allow this, and also possible in structures.
1. Change - Continue opcode printing after a 'skip' instead of treating it as a full 'goto'.
** Version 4.0.7 (16 Jun 2021) *********
[Copied across from development branch 29 Nov 2023]
Main Changes -
1. Changed internal bank handling so that addresses without bank can be recognised, so symbol names are better resolved for subroutine arguments.
2. Default to adding bank 1 in multibanks for addresses with no bank. (NB. This is a 'best guess' where use is obviously an address)
3. Comments- removed '\P' sequence in comments.
added '\M' = next tab, like word processors
added \R<ch><num> = runout char 'ch' num times, and \R<num> = runout 'space' num times
added \SW<add> to find write symbol instead of read sym
4. Temporarily removed auto code and data detection from 'gaps' as it doesn't work properly.
5. ALL 'odd addressed' word ops change bank in 8065 (bank 0 to 1 , 2 to 3, as oper Ford manual).
6. Temporarily removed autocomments (they don't help much)
Fixed - Missing symbols when not processed in 'SYM' command (i.e. WORD 3234 3235 "MyName" not handled correctly, but SYM 3234 "MyName" was).
Fixed - Incorrect bank processing for symbol names in multibanks, so did not appear in printout.
Fixed - Bank detect not picking up banks correctly for some binaries - changed detect algorithm (NB FM0206 still doesn't work)
Fixed - Possible crash with corrupt or non-806x binaries.
Fixed - A 'Catch22' where detect of banks fails and could not be overriden with user commands. More error checks added also.
Fixed - Comments get incorectly pushed up to start of bank (multibanks only).
Fixed - Bitwise opcodes not displaying symbols above bit 7 for CLRW (was incorrectly set as byte sized)
Fixed - 'W' flag with symbols not working if set in upper byte.
Fixed - According to Ford manuals, the 'odd address' word mode for 8065 CPU does not apply for registers below R20..... But not sure if this is true
Fixed - Internal change to ranges indexing for symbols and rbases, it was possible to 'lose' a symbol entirely.
Fixed - Additional data printout of bank (i.e. : K <n>) shows wrong bank.
Fixed - Immediate push did not resolve bank address printout correctly in multibanks.
Fixed - Bug with immediate byte shown as word (LDZBW, LDSBW, ML2B, ML3B, etc.)
Fixed - Infinite loop in internal code (before printout)
Fixed - Printout shows wrong value for STW (probably only happens in special test bins)
Fixed - Incorrect read of symbols at 0x3ff returning "invalid bank" in some cases
** Version 4.0.6 **********************************************
Main changes -
1. Added many more error checks, error and warning reports to command processing to give better user feedback (commands failed silently before)
2. Added a new 'global level' options to command structure.
3. Added alternate layout options for subroutine arguments and structures (in global level).
4. Moved special function and terminator commands to global level.
5. Changed special purpose subroutines commands to make them more obvious
6. Print layout improvements, including lining up columns with symbol names.
7. Longer symbol names supported (up to 63 chars)
8. New style of comment 'special sequences' to control comment layouts.
9. Fixes for several symbol name issues.
10. Fixes for symbol names which don't appear in the listings.
11. Extra checks and fixes for non-standard bank ordering and auto detection in multibank bins.
12. Replaced options command with 'setopts' which uses meaningful text strings instead of letters.
13. changed code for cppcheck warnings raised (thanks dantob)
14. Fixes for ignored arguments in user commands.
15. Many minor bug fixes, mostly print layout. (honestly, I've lost track of these smaller ones)
16. Added new pdf manual and separate command definition for version 4.0.6.
Special thanks to jsa for all his testing and feedback with versions 4.x
** Version 4.0.5 *****************
Fixed.
1. Fixed listing output bug where fixed register pointers (rbase) not showing the second register with 3 operand opcodes (ad3w etc.)
2. Fixed bug which caused some tables to be missed entirely. Still doesn't get every table, but better than 4.04
Changes/Additions
2. Improve detection of 1D and 2D (function and table) end points.
3. Add data analysis of 2D (table) structs to correct row and column sizes. Not perfect, but better
** Version 4.0.4 *****************
1. Changed vector list validation after discovering another couple of bins which don't work correctly.
2. Added extra scan pass to check for 'code holes' which may have been missed. Example is where
binary does a 'remote' push, such as R34=79f9; and a push(R34); somewhere else, not obviously connected.
3. Added extra check where an indexed data reference actually points to a code location, but the register value
cannot be calculated. If the pointer is within 16 bytes of a 'hole' in the code, then data pointer is moved
to the 'hole'. Example in A9L where reference has [R56+2a2e] but code covers 2a15 to 2a31. R56 is 4,6, or 8 (num cylinders)
so data ref is moved automatically to 2a32 (+4).
4. Added extra checks for data overlapping code and faulty references.
5. Symbols. Change code for 'find symbol' internally to make consistent
6. Added an 'F' option for symbols to indicate a 'flag' byte so that ldb (and ldw) will show individual bit names as OR and AND do.
7. Incorrect address range handling for syms and rbase causes them not to appear/work reliably in listing
8. Change word ops for bit flags to byte, e.g. from "B8_R34 =" to "B0_R35 =" for bits > 7
9. Fixed not reading back .msg file as a .dir file correctly. ('U' option and comment lines)
10. Fixed AND and OR not showing single bit flags ("Bx_Rn = 0" style)
11. Incorrect showing of 'return' shortcut in psuedo code.
12. Fix incorrect SYM command when defined with an address range.
** Version 4.0.3 *****************
Version 4 automatically handles VARIABLE ARGUMENTS in subroutines. This caused some regression errors.
Fixed -
1. Fixed - Symbol names not found for some indexed opcodes.
(note that there are some rules implied to stop small offsets being interpreted as special
registers - i.e. less than 0x20). This rule may need to be changed for some cases.
2. Fixed vect list sometimes not picking up last pointer item in list.
3. Change autonumbered names to <name><address> style instead of <name><sequence number>
make command options and layout more regular
4. Some rbase (register base pointers) not being detected and missed off.
5. Fix data offset not appearing/working for some commands.
6. Print bank commands with comment so don't get processed (more work here)
7. User specified subroutines now work - note change in command structure.
8. Doesn't always expand tables (2D lookups) to their full size
10. Fixed problem with incorrect number of arguments (CARD and others)
11. Fixed problem with listing displaying incorrect number/symbol in indexed opcodes
12. Fixed 'NULL' symbol with word commands
13. Added more code to correctly size arguments.
14. Fixed crash when commands overlap - now gives error message
15. Fixed a path problem for Windows which causes no processing to occur
16. Fixed symbol name not being resolved for multibank indirects and indexed opcodes
************************************************************************************
Dropped older version descriptions.
up to and including Version 3, subroutine arguments did not work automatically.