home *** CD-ROM | disk | FTP | other *** search
/ Archive Magazine 1996 / ARCHIVE_96.iso / discs / shareware / share_46 / sasm / Docs / Whats_New < prev   
Text File  |  1995-02-18  |  7KB  |  154 lines

  1.  
  2.         SAsm -- Updates and Changes
  3.         ---------------------------
  4.  
  5. This file describes changes made since the last major upgrade. The
  6. Manual may not include some or all of these. Where information in this
  7. file conflicts with the Manual this file should be taken as correct.
  8.  
  9. You should read this file as well as the Manual, it may contain
  10. important additions and improvements not described elsewhere.
  11. Experienced SAsm users may find it useful as it will describe all the
  12. changes made since the earlier realease and save them the trouble of
  13. reading the entire Manual to find out what improvements have been made.
  14.  
  15.  
  16.         WARNING - FNdb, FNdd and FNdw have now been deleted
  17.  
  18.  
  19.         Changes from verion 1.50
  20.         ------------------------
  21.  
  22. 1.51    No need for space before the '!' writeback marker in ldm/stm
  23.         instructions. eg. LDMIA sp!,{pc,link} is now valid. This avoids
  24.         the old Basic bug where Basic assumed the '!' was an indirection
  25.         operator and flagged an error.
  26.  
  27.         I've fixed the bug which sometimes made SWI string processing
  28.         fail to work. So far as I am aware this now always operates as
  29.         long as the first character of a string is upper case
  30.  
  31.  
  32. 1.52    Still more improvements to error handler. These are mainly aimed
  33.         at finding ways to intercept errors during preprocessing in order
  34.         to enable the first pass of the assembler to be made without
  35.         crashing. Previously many errors discovered during preprocessing
  36.         caused the program to quit immediately, slowing up development.
  37.  
  38.         Filetypes 'Module' and 'Utility' now don't need an ORG directive
  39.         but will automatically be assembled with a 'run address' of 0.
  40.  
  41.         Cured bug which assumed that an object filename beginning with
  42.         '!' meant 'no filename'. I missed it because I never followed
  43.         the dumb convention of calling application code '!Runimage'
  44.  
  45.         I've corrected the 'feature' which sorted the label list in
  46.         reverse alphabetical order. It's the right way round now!
  47.  
  48.         There's a short demonstration application included now. It's
  49.         not very exiting but it's a bit better than the other example
  50.         files. You will find it in the directory 'Demo'. It is supplied
  51.         'ready assembled' as well as the source files.
  52.  
  53.  
  54. 1.53    ---- NO PUBLIC RELEASE OF THIS VERSION ----
  55.         Various internal changes.
  56.  
  57.         The old FNdb, FNdw and FNdd, which have been completely obsolete
  58.         for some time, have been removed.
  59.  
  60.         You can now have multiple comment lines without using a ';' at
  61.         the start of each line. If SAsm finds a '{' at the start of a
  62.         line it will ignore EVERYTHING up to the next '}'. You can
  63.         therefore write whole paragraphs of descriptive text. Obviously
  64.         { and } characters are not allowed within this text. See section
  65.         'Descriptive text' in the Manual for more details before using.
  66.  
  67.         There is a new directive AREA which is used to set up a data
  68.         area and define offsets within it. This is intended to be used
  69.         with LDR, Rx,[<reg>,#<offset>] type instructions where <reg> is
  70.         a register set to point to the start of the area and <offset> is
  71.         a pre defined constant. This is quite complicated so you'll need
  72.         to read the relevant section of the manual.
  73.  
  74.         OSET variable implemented to make 'poking' data into code
  75.         easier. During assembly the variable OSET is set to a value such
  76.         that OSET+<label> can be used to 'poke' data into the completed
  77.         code where <label> is any global label defined in the ususal
  78.         way. It isn't likely that you will want to do this, but if for
  79.         any reason you do, then by using OSET you can.
  80.  
  81.         There was a 'bug' in the routine that trapped the 'file open'
  82.         error which stopped it working properly. This has now been fixed
  83.         so in theory an open error file should not now cause problems.
  84.  
  85. 1.54    Minor bugs introduced in 1.53 corrected
  86.  
  87.         Tokenising introduced with more than 6500 lines of source code.
  88.  
  89.         Corrected the bug which wouldn't allow a ':' in an INCLUDE
  90.         filename. This was due to a typing error in my source code!
  91.  
  92. 1.55    Corrected bug which gave errors with some conditions when using
  93.         conditional ADRL. Once again this was a typing error in the
  94.         source code.
  95.  
  96.         The first line, but ONLY the first (ie label) line in an AREA
  97.         need not have a number, eg. -
  98.         
  99.                 # area  data
  100.                         first      4
  101.                         second     4
  102.  
  103.         is now accepted. In this case 'first' would simply have an
  104.         offset of zero from the start of the area, so if R10 points to
  105.         the label 'data' LDR R0,[R10,#first] will actually access the
  106.         word at data+0.
  107.  
  108.         A missing number after a name in an AREA is now a recoverable
  109.         error.
  110.  
  111. 1.56    Some simple memory management introduced to enable more RAM to
  112.         be claimed when required. This may not be 100% error free but I
  113.         have tested it by assembling SAsm in a Task window with only 64K
  114.         allocated. At termination the slot size increased to 288K so it
  115.         all seems to work.
  116.  
  117. 1.60    Bug which had mysteriously appeared in #include directive fixed.
  118.  
  119.         You can now prefix a local label reference with > or < to refer
  120.         to the NEXT and PREVIOUS set of local labels respectively. There
  121.         must not be a space between the > or < and the first digit of
  122.         the label number, and obviously the label must exist!
  123.         For example -
  124.  
  125.         .00     adr r1,01       ;get address of '01' in SAME label set 
  126.                                 ;eg. point to 'dd &400'
  127.                 adr r1,>01      ;get address of '01' in NEXT label set
  128.                                 ;eg. point to 'dd &800'
  129.                 .......
  130.         .01     dd &400
  131.                 ......
  132.         .00     ......          ;start a new local label set, previously
  133.                                 ;this would block any forward reference
  134.         .01     dd &800   
  135.                 
  136.         For the first time this now makes it possible to jump to the
  137.         next '00' label by using -
  138.         
  139.                 bal >00
  140.         
  141.         or back into an earlier set with something like -
  142.         
  143.                 bne <23
  144.  
  145.         It would also be useful when adressing data tables as these
  146.         can have a different set of local labels from the code.
  147.        
  148.         It would be possible to extend this feature to reach two sets
  149.         back and forward (eg. by using >> and <<) but I think this could
  150.         be rather confusing and lead to errors. If anyone really wants
  151.         it then I will do so.
  152.  
  153.  
  154.