home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
-
-
- Comments by the author.
-
-
-
-
- This assembler started life as a public domain 8080
-
-
- assembler program but I don't know the source. My thanks are
-
-
- due to the unknown (to me) author.
-
-
-
- The original version I couldn't make work so I don't
-
-
- know much about it but I did follow its general architecture. It
-
-
- has evolved over several re-writes and now bears very little
-
-
- resemblance to the original.
-
-
-
- This version has been in use for about two years and was
-
-
- written because the only assembler I had available was an
-
-
- elderly Cromemco one which was abysmally slow. "zasmb"
-
-
- assembles at something over 7,000 lines per minute when the
-
-
- source is read from a ram disc and the code is also written back
-
-
- to one. This is quite a reasonable speed and is quite a lot
-
-
- faster than the MicroSoft M80 although slower than the SLR
-
-
- Systems assembler.
-
-
-
- It is a classical two pass assembler with an indirectly
-
-
- hashed symbol table which accounts for much of its speed.
-
-
-
- It has one or two features which are not usually
-
-
- available. One is the facility to return to an editor with the
-
-
- cursor pointing to the error if one occurs. This is done by
-
-
- putting a command into the CCP buffer together with the row and
-
-
- column numbers. If the editor can pick these up it can start
-
-
- the edit with the cursor at the position of the error. This
-
-
- facility speeds up assembly program development considerably.
-
-
-
- My favourite editor is "WordMaster" a predecessor of
-
-
- "Wordstar". I disassembled it and then modified it to suit my
-
-
- H19 terminal and then again to make it postion the cursor at the
-
-
- row and column given in the command lin as arguments. This is
-
-
- not a task to be taken lightly! If you want to make the
-
-
- assembler communicate with your editor, and this is highly
-
-
- desirable, get one for which the source code is available.
-
-
-
- Communication between the editor and the assembler
-
-
- causes a dramatic increase in the speed of assembly language
-
-
- program development and a marked decrease in the frustration
-
-
- factor.
-
-
-
-
- The second feature is the provision of a pseudo-operator
-
-
- "forg" (false origin). This enables code to be assembled in
-
-
- line but executed at an origin different from that at which it
-
-
- is assembled. This facility was included so that a loader could
-
-
- be incorporated in a new version of the CP/M console command
-
-
- processor which has its origin at 100H and the loader then
-
-
- transferred to just below the BDOS section of CP/M. If a normal
-
-
- "org" statement were to be used the CCP file would be nearly 64K
-
-
- long.
-
-
-
-
- There are a number of improvements which might be made
-
-
- to "zasmb" which would be advantageous. These are:
-
-
-
- local labels,
-
-
- some control structures,
-
-
- "ne," to be equivalent to "nz," in jumps
-
-
- "eq," "z,"
-
-
- more type (word/byte/string) checking in expressions.
-
-
-
-
- A much more fundamental fundamental change would be to
-
-
- alter the input routines to use a circular buffer with several
-
-
- sets of pointers so as to avoid the shift from the disc input
-
-
- buffer to the line buffer and then to the token buffer. This
-
-
- would probably speed the assembler up by 50 per cent or so and
-
-
- break the 10,000 line per minute barrier. I don't have a
-
-
- profiler so I can't find the critical routines although they are
-
-
- pretty certain to be in the character input.
-
-
-
- If anyone carries out any of these improvements they
-
-
- might send me a copy of the revised code.
-
-
-