← Back to team overview

gnusim8085-devel team mailing list archive

[Bug 579336] Re: Assembler Enhancements

 

Looking into this at the moment: the very first step for supporting an
external assembler is providing an option to load assembled binary/HEX
files. Then you could open and run an already assembled file with valid
opcodes.

Saving to a HEX file has already been requested previously:
https://bugs.launchpad.net/gnusim8085/+bug/579344

So once these two steps have been decoupled (saving and loading HEX
files), supporting an external assembler would not be complicated to do,
if that's really what people want to do.

-- 
Assembler Enhancements
https://bugs.launchpad.net/bugs/579336
You received this bug notification because you are a member of
GNUSim8085 developers, which is subscribed to gnusim8085.

Status in gnusim8085: New

Bug description:
There are some minor things that could be improved on in the current assembler implementation.R Error messages are currently not very useful, in fact their line numbers are often apparently offset by +1.

Also, using wrong operands will often wrongly report an invalid mnemonic.

In this sense, assuming that it would be difficult to improve such things in the short run, it might make sense to provide a separate, more detailed, log that contains more information about the assembly process. So that each step of the assembler is interactively shown:

1: found comment, skipping to next line
2: found supported mnemonic "mvi", (expecting reg,immediate): found reg,reg
3: found unknown token "foo"

Something like this would at least have the potential to allow users to see clearly where the assembler stopped succeeding with assembling the file.

Also, other 8085 assemblers often support direct ways to provide numbers using a different notation:
  mvi a,14h
  mvi a,14d
  mvi a,01110011b

Also, the "db" directive usually also supports providing the corresponding bytes as quoted strings of characters:

data: db 'hello world',0A,0D,'$'
dat2: db "foo"

In its current form the assembler also isn't able to compute offsets for labels defined after the position of the current instruction:

  mvi a,5
start: nop
  cmp 5
  jz exit ;ERROR: exit not known because no multipass support in assembler
exit: