Commit Graph

203 Commits

Author SHA1 Message Date
Kelvin Sherlock
b4bf2c1611 fix to macro operand parsing for quoted strings
macro operand parsing code was a little too clever and had problems if both ' and " delimiters were present.

new code uses separate loops for handing delimited strings and raw strings, to keep things simpler and more correct.

```
xx	mac
	asc ]1
	eom

	xx '"hello"'
	xx "'hello'"
	xx 'hello'
	xx "hello"
	xx 'abc',00
	xx ff

 ```
before:
```
Assembling macstr.s

Bad operand in line: 5.

Bad operand in line: 6.
                     1 xx           mac
                     2              asc  ]1
                     3              eom
                     4
008000:              5              xx   '"hello"'
008000: 22 68 65 6C  5              asc  '"hello"'

008004: 6C 6F 22
                     5              eom
008007:              6              xx   "'hello'"
008007: A7 E8 E5 EC  6              asc  "'hello'"

00800B: EC EF A7
                     6              eom
00800E:              7              xx   'hello'
00800E: 68 65 6C 6C  7              asc  'hello'
008012: 6F
                     7              eom
008013:              8              xx   "hello"
008013: E8 E5 EC EC  8              asc  "hello"
008017: EF
                     8              eom
008018:              9              xx   'abc',00
008018: 61 62 63 00  9              asc  'abc',00
                     9              eom
00801C:              10             xx   ff
00801C: FF           10             asc  ff
                     10             eom

End of QuickASM assembly. 29 bytes, 2 errors, 22 lines, 1 symbols.

Elapsed time = < 1 second.
```

after:
```
Assembling macstr.s

                     1 xx           mac
                     2              asc  ]1
                     3              eom
                     4
008000:              5              xx   '"hello"'
008000: 22 68 65 6C  5              asc  '"hello"'
008004: 6C 6F 22
                     5              eom
008007:              6              xx   "'hello'"
008007: A7 E8 E5 EC  6              asc  "'hello'"
00800B: EC EF A7
                     6              eom
00800E:              7              xx   'hello'
00800E: 68 65 6C 6C  7              asc  'hello'
008012: 6F
                     7              eom
008013:              8              xx   "hello"
008013: E8 E5 EC EC  8              asc  "hello"
008017: EF
                     8              eom
008018:              9              xx   'abc',00
008018: 61 62 63 00  9              asc  'abc',00
                     9              eom
00801C:              10             xx   ff
00801C: FF           10             asc  ff
                     10             eom

End of QuickASM assembly. 29 bytes, 0 errors, 22 lines, 1 symbols.

Elapsed time = < 1 second.
```
2020-05-25 16:14:13 -04:00
Lane Roathe
e743e2a6c4
Merge pull request #44 from ksherlock/shell_fix_1
QAsm Shell fixes
2020-05-24 21:21:51 -07:00
Kelvin Sherlock
4b3caaf78f Don't try to do message center stuff when there was a message center error. 2020-05-24 22:45:17 -04:00
Kelvin Sherlock
1f241d42c8 infinite loop parsing the command table file
I don't remember the full details because it was a few months ago but there was an infinite loop on statup when parsing the command table.
2020-05-24 22:42:28 -04:00
Lane Roathe
fb12ad70f7
Merge pull request #43 from ksherlock/sym32
Update label/symbol size from 15 to 31.
2020-05-24 16:18:58 -07:00
Lane Roathe
80839b641c
Update src/data/sym.equates.S ds section with proper offset values 2020-05-24 16:18:51 -07:00
Lane Roathe
f8dd0bcc83
Merge pull request #42 from ksherlock/nocrossbank
symbol table needs to be no-cross-bank
2020-05-24 16:11:16 -07:00
Kelvin Sherlock
89b7308c15 Update labels/symbol size from 15 to 31.
Magic number offsets are also replaced with named constants.

Merlin 16+ increased the label size from 12 to 26 at some point and the 15-char limit causes duplicate label errors on some Merlin source code.
2020-05-24 18:37:21 -04:00
Kelvin Sherlock
8f7427d11d symbol table needs to be no-cross-bank since qasm uses mvn to copy entries into it (mvn won't cross banks) 2020-05-24 17:53:33 -04:00
Lane Roathe
13473d448b
Merge pull request #41 from ksherlock/ent-pass-two
(qasm iigs) ent label-list operand
2020-01-16 10:35:33 -08:00
Kelvin Sherlock
275f49e43e ent label-list operand should only execute on the second pass, after all labels are defined. 2020-01-15 21:00:16 -05:00
Lane Roathe
0dcd68a402
Merge pull request #40 from ksherlock/quicklink-xy
(qlink iigs) quick link was pulling x/y in the wrong order
2020-01-14 17:53:18 -08:00
Kelvin Sherlock
9c8abb1bb7 quick link was pulling x/y in the wrong order (when no subtype was specified). 2020-01-14 20:45:48 -05:00
Lane Roathe
938873e8f3
Merge pull request #39 from lroathe/master
Remove broken links in project file, fix run to use relocated test file
2020-01-14 16:50:42 -08:00
Lane Roathe
0bedddc756 Remove broken links in project file, fix run to use relocated test file 2020-01-14 16:49:48 -08:00
Lane Roathe
9f510117c0
Merge pull request #38 from ksherlock/undo-illegal-address
(qasm iigs) - add back error checking disabled for relative value bug
2020-01-13 19:18:10 -08:00
Lane Roathe
cb60f13d67
Merge pull request #37 from ksherlock/dot-s
qasm iigs: only add .S extension as necessary
2020-01-13 19:14:02 -08:00
Kelvin Sherlock
da1c2e8222 adds back error checking which was previously disabled due to the illegal relative value bug.
also fixes a couple tool macro typos that slipped in before
2020-01-13 22:13:16 -05:00
Kelvin Sherlock
861bb44d32 only add .S extension as necessary
modifies the asm command line, linker command line, and linker ASM/PUT/IF opcodes to only append a .S suffix if it's not already present.

this is more consistent with Merlin 16+ and less surprising for people who use the command-line asm or link commands.
2020-01-13 21:58:52 -05:00
Lane Roathe
77b01cbbb4
Merge pull request #36 from ksherlock/dumdum
reset dumor to 0, not $8000, at DEND. (qasm iigs)
2020-01-11 18:21:59 -08:00
Kelvin Sherlock
93a79855fb reset dumor to 0, not $8000, at DEND.
should fix a bug where DUM * (or DUM label) generates absolute values.
2020-01-11 19:01:41 -05:00
Lane Roathe
d119b7a08e
Merge pull request #35 from ksherlock/y2k
fix y2k dat display.
2020-01-07 12:18:46 -08:00
Kelvin Sherlock
7336daffbf fix y2k overflow.
_ReadTimeHex returns the year as an offset from 1900, so 2020 is 120, which overflows ('0' + 12 is ascii '<')

subtract 100, repeatedly, until it fits in 2 digits.  Should last into 2100.
2020-01-06 19:46:24 -05:00
Lane Roathe
552603d2e0
Merge pull request #34 from ksherlock/self-build
qasm/qlink IIgs Self build
2020-01-06 11:45:03 -08:00
Kelvin Sherlock
fa3554f6e5 missing macros :) 2020-01-05 23:56:11 -05:00
Kelvin Sherlock
a0bc5de359 assembler - use named tool macros 2020-01-05 19:11:28 -05:00
Kelvin Sherlock
1fe4590e2c use tool macros instead of numbers. also use normal tool macro case 2020-01-05 18:57:10 -05:00
Kelvin Sherlock
8d66e85d2c self-build linker.
will also build with merlin 16+, other than USR differences.
2020-01-05 18:31:35 -05:00
Kelvin Sherlock
b45553c992 tweaks to self-compile qasm with qasm.
other than USR opcode differences, it should build with merlin 16+ as well.
2020-01-05 18:06:32 -05:00
Lane Roathe
81a1e5a37d
Merge pull request #32 from ksherlock/ksherlock-patch-3
(IIgs qasm) Add system 6.0 / System 6.0.1 macros
2020-01-03 10:36:31 -08:00
ksherlock
700524b0f2
(IIgs qasm) Add system 6.0 / System 6.0.1 macros
I regenerated the pre-compiled toolmacs file based on GSBug's toolcall list (plus Marinetti toolcalls).

This includes new tools from system 6.0/6.01 and a a few name updates. The _DU is gone I don't know what that is offhand and I dare say nobody used it since it doesn't exist.
2020-01-02 14:29:18 -05:00
Lane Roathe
e47eb286b1
Merge pull request #31 from marketideas/lane_qasm_main
Lane qasm main
2020-01-01 14:49:42 -08:00
Lane Roathe
054aa2fbfc
Merge pull request #30 from lroathe/master
Remove opcodes.h from project file list as it doesn't exist.
2020-01-01 14:49:22 -08:00
Lane Roathe
8a5c16feee Remove opcodes.h from project file list as it doesn't exist. 2020-01-01 14:48:39 -08:00
Lane Roathe
2e27f6e785
Merge pull request #29 from ksherlock/ksherlock-patch-2
fix internal macro expansion
2019-12-29 18:33:12 -08:00
Lane Roathe
05c76826c1
Merge pull request #28 from ksherlock/ksherlock-patch-1
stack imbalance printing the hours elapsed
2019-12-28 11:32:38 -08:00
ksherlock
937c527344
fix internal macro expansion
I'm not sure why that line was commented out, but y has an undefined value at this point so it will read a random offset into the line.
2019-12-28 14:30:45 -05:00
ksherlock
92cffed07b
stack imbalance printing the hours elapsed
probably never noticed because no assembly ever took that long.
2019-12-27 22:25:42 -05:00
Lane Roathe
a1ce717825
Merge pull request #27 from ksherlock/usr_opcode
Add USR opcode.
2019-12-20 12:10:46 -08:00
Kelvin Sherlock
f0b10c0221 Add USR opcode. This uses the Merlin and QAsm opcode hashing scheme. 2019-12-19 20:05:49 -05:00
Lane Roathe
3e568ad47a
Merge pull request #26 from marketideas/lane_qasm_main
Lane qasm main
2019-12-11 10:38:38 -08:00
Lane Roathe
4e2d5fceb0
Merge pull request #25 from lroathe/master
Merge in latest work
2019-12-11 10:36:28 -08:00
Lane Roathe
1c863c1e81 Add note about ERR support to readme 2019-12-11 10:35:39 -08:00
Lane Roathe
60f7ef53d1 Remove redundant psuedo opcodes and move ops with non doPSEUDO handler to their own section to make it easier to find the ones we still need to implement 2019-12-03 12:09:44 -07:00
Lane Roathe
3c2d1c7a39 Get merlintests.sh working on my system 2019-12-03 12:04:18 -07:00
Lane Roathe
5e09e0ca2a
Merge pull request #24 from lroathe/master
Fix warnings
2019-12-03 08:46:31 -08:00
Lane Roathe
aa5069780c Fix some type conversion warnings 2019-12-03 09:44:50 -07:00
Lane Roathe
038d1004ea Merge branch 'master' of https://github.com/marketideas/qasm 2019-12-03 09:34:50 -07:00
Lane Roathe
d78c8612f9 Merge branch 'sgq_qasm_main' of https://github.com/marketideas/qasm 2019-11-23 09:24:28 -08:00
marketideas
476a46d7db test 2019-11-22 09:33:24 -08:00