home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol281 / comments.pqr / COMMENTS.PFR
Encoding:
Text File  |  1986-06-11  |  4.5 KB  |  84 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.                               Comments by the author.
  8.  
  9.  
  10.  
  11.  
  12.                   This  assembler  started  life  as  a  public domain 8080
  13.  
  14.  
  15.           assembler program but I don't know the source.    My  thanks  are
  16.  
  17.  
  18.           due to the unknown (to me) author.
  19.  
  20.  
  21.  
  22.                   The  original  version  I  couldn't  make work so I don't
  23.  
  24.  
  25.           know much about it but I did follow its general architecture.  It
  26.  
  27.  
  28.           has  evolved  over  several  re-writes  and now bears very little
  29.  
  30.  
  31.           resemblance to the original.
  32.  
  33.  
  34.  
  35.                   This version has been in use for about two years and  was
  36.  
  37.  
  38.           written  because  the  only  assembler  I  had  available  was an
  39.  
  40.  
  41.           elderly Cromemco  one  which  was  abysmally   slow.      "zasmb"
  42.  
  43.  
  44.           assembles  at  something  over  7,000  lines  per minute when the
  45.  
  46.  
  47.           source is read from a ram disc and the code is also written  back
  48.  
  49.  
  50.           to  one.  This  is  quite  a  reasonable speed and is quite a lot
  51.  
  52.  
  53.           faster than the  MicroSoft  M80  although  slower  than  the  SLR
  54.  
  55.  
  56.           Systems assembler.
  57.  
  58.  
  59.  
  60.                   It  is  a classical two pass assembler with an indirectly
  61.  
  62.  
  63.           hashed symbol table which accounts for much of its speed.
  64.  
  65.  
  66.  
  67.                   It  has  one  or  two  features  which  are  not  usually
  68.  
  69.  
  70.           available.  One  is  the facility to return to an editor with the
  71.  
  72.  
  73.           cursor pointing to the error if one occurs.    This  is  done  by
  74.  
  75.  
  76.           putting  a  command into the CCP buffer together with the row and
  77.  
  78.  
  79.           column numbers.  If the editor can pick these  up  it  can  start
  80.  
  81.  
  82.           the edit  with  the  cursor  at  the position of the error.  This
  83.  
  84.  
  85.           facility speeds up assembly program development considerably.
  86.  
  87.  
  88.  
  89.                   My favourite editor  is  "WordMaster"  a  predecessor  of
  90.  
  91.  
  92.           "Wordstar".   I  disassembled  it and then modified it to suit my
  93.  
  94.  
  95.           H19 terminal and then again to make it postion the cursor at  the
  96.  
  97.  
  98.           row and  column  given  in the command lin as arguments.  This is
  99.  
  100.  
  101.           not a task to be  taken  lightly!    If  you  want  to  make  the
  102.  
  103.  
  104.           assembler  communicate  with  your  editor,  and  this  is highly
  105.  
  106.  
  107.           desirable, get one for which the source code is available.
  108.  
  109.  
  110.  
  111.                   Communication  between  the  editor  and  the   assembler
  112.  
  113.  
  114.           causes  a  dramatic  increase  in  the speed of assembly language
  115.  
  116.  
  117.           program development and a  marked  decrease  in  the  frustration
  118.  
  119.  
  120.           factor.
  121.  
  122.  
  123.  
  124.  
  125.                   The  second feature is the provision of a pseudo-operator
  126.  
  127.  
  128.           "forg" (false origin).  This enables  code  to  be  assembled  in
  129.  
  130.  
  131.           line  but  executed  at an origin different from that at which it
  132.  
  133.  
  134.           is assembled.  This facility was included so that a loader  could
  135.  
  136.  
  137.           be  incorporated  in  a  new  version of the CP/M console command
  138.  
  139.  
  140.           processor which has its  origin  at  100H  and  the  loader  then
  141.  
  142.  
  143.           transferred to  just below the BDOS section of CP/M.  If a normal
  144.  
  145.  
  146.           "org" statement were to be used the CCP file would be nearly  64K
  147.  
  148.  
  149.           long.
  150.  
  151.  
  152.  
  153.  
  154.                   There  are  a  number of improvements which might be made
  155.  
  156.  
  157.           to "zasmb" which would be advantageous.  These are:
  158.  
  159.  
  160.  
  161.                   local labels,
  162.  
  163.  
  164.                   some control structures,
  165.  
  166.  
  167.                   "ne," to be equivalent to "nz," in jumps
  168.  
  169.  
  170.                   "eq,"                          "z,"
  171.  
  172.  
  173.                   more type (word/byte/string) checking in expressions.
  174.  
  175.  
  176.  
  177.  
  178.                   A much more fundamental fundamental change  would  be  to
  179.  
  180.  
  181.           alter  the  input  routines to use a circular buffer with several
  182.  
  183.  
  184.           sets of pointers so as to avoid the shift  from  the  disc  input
  185.  
  186.  
  187.           buffer to  the  line  buffer  and then to the token buffer.  This
  188.  
  189.  
  190.           would probably speed the assembler up by 50 per cent  or  so  and
  191.  
  192.  
  193.           break the  10,000  line  per  minute  barrier.    I  don't have a
  194.  
  195.  
  196.           profiler so I can't find the critical routines although they  are
  197.  
  198.  
  199.           pretty certain to be in the character input.
  200.  
  201.  
  202.  
  203.                   If  anyone  carries  out  any  of these improvements they
  204.  
  205.  
  206.           might send me a copy of the revised code.
  207.  
  208.  
  209.  
  210.