home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Archive Magazine 1996
/
ARCHIVE_96.iso
/
discs
/
shareware
/
share_46
/
sasm
/
Docs
/
Whats_New
< prev
Wrap
Text File
|
1995-02-18
|
7KB
|
154 lines
SAsm -- Updates and Changes
---------------------------
This file describes changes made since the last major upgrade. The
Manual may not include some or all of these. Where information in this
file conflicts with the Manual this file should be taken as correct.
You should read this file as well as the Manual, it may contain
important additions and improvements not described elsewhere.
Experienced SAsm users may find it useful as it will describe all the
changes made since the earlier realease and save them the trouble of
reading the entire Manual to find out what improvements have been made.
WARNING - FNdb, FNdd and FNdw have now been deleted
Changes from verion 1.50
------------------------
1.51 No need for space before the '!' writeback marker in ldm/stm
instructions. eg. LDMIA sp!,{pc,link} is now valid. This avoids
the old Basic bug where Basic assumed the '!' was an indirection
operator and flagged an error.
I've fixed the bug which sometimes made SWI string processing
fail to work. So far as I am aware this now always operates as
long as the first character of a string is upper case
1.52 Still more improvements to error handler. These are mainly aimed
at finding ways to intercept errors during preprocessing in order
to enable the first pass of the assembler to be made without
crashing. Previously many errors discovered during preprocessing
caused the program to quit immediately, slowing up development.
Filetypes 'Module' and 'Utility' now don't need an ORG directive
but will automatically be assembled with a 'run address' of 0.
Cured bug which assumed that an object filename beginning with
'!' meant 'no filename'. I missed it because I never followed
the dumb convention of calling application code '!Runimage'
I've corrected the 'feature' which sorted the label list in
reverse alphabetical order. It's the right way round now!
There's a short demonstration application included now. It's
not very exiting but it's a bit better than the other example
files. You will find it in the directory 'Demo'. It is supplied
'ready assembled' as well as the source files.
1.53 ---- NO PUBLIC RELEASE OF THIS VERSION ----
Various internal changes.
The old FNdb, FNdw and FNdd, which have been completely obsolete
for some time, have been removed.
You can now have multiple comment lines without using a ';' at
the start of each line. If SAsm finds a '{' at the start of a
line it will ignore EVERYTHING up to the next '}'. You can
therefore write whole paragraphs of descriptive text. Obviously
{ and } characters are not allowed within this text. See section
'Descriptive text' in the Manual for more details before using.
There is a new directive AREA which is used to set up a data
area and define offsets within it. This is intended to be used
with LDR, Rx,[<reg>,#<offset>] type instructions where <reg> is
a register set to point to the start of the area and <offset> is
a pre defined constant. This is quite complicated so you'll need
to read the relevant section of the manual.
OSET variable implemented to make 'poking' data into code
easier. During assembly the variable OSET is set to a value such
that OSET+<label> can be used to 'poke' data into the completed
code where <label> is any global label defined in the ususal
way. It isn't likely that you will want to do this, but if for
any reason you do, then by using OSET you can.
There was a 'bug' in the routine that trapped the 'file open'
error which stopped it working properly. This has now been fixed
so in theory an open error file should not now cause problems.
1.54 Minor bugs introduced in 1.53 corrected
Tokenising introduced with more than 6500 lines of source code.
Corrected the bug which wouldn't allow a ':' in an INCLUDE
filename. This was due to a typing error in my source code!
1.55 Corrected bug which gave errors with some conditions when using
conditional ADRL. Once again this was a typing error in the
source code.
The first line, but ONLY the first (ie label) line in an AREA
need not have a number, eg. -
# area data
first 4
second 4
is now accepted. In this case 'first' would simply have an
offset of zero from the start of the area, so if R10 points to
the label 'data' LDR R0,[R10,#first] will actually access the
word at data+0.
A missing number after a name in an AREA is now a recoverable
error.
1.56 Some simple memory management introduced to enable more RAM to
be claimed when required. This may not be 100% error free but I
have tested it by assembling SAsm in a Task window with only 64K
allocated. At termination the slot size increased to 288K so it
all seems to work.
1.60 Bug which had mysteriously appeared in #include directive fixed.
You can now prefix a local label reference with > or < to refer
to the NEXT and PREVIOUS set of local labels respectively. There
must not be a space between the > or < and the first digit of
the label number, and obviously the label must exist!
For example -
.00 adr r1,01 ;get address of '01' in SAME label set
;eg. point to 'dd &400'
adr r1,>01 ;get address of '01' in NEXT label set
;eg. point to 'dd &800'
.......
.01 dd &400
......
.00 ...... ;start a new local label set, previously
;this would block any forward reference
.01 dd &800
For the first time this now makes it possible to jump to the
next '00' label by using -
bal >00
or back into an earlier set with something like -
bne <23
It would also be useful when adressing data tables as these
can have a different set of local labels from the code.
It would be possible to extend this feature to reach two sets
back and forward (eg. by using >> and <<) but I think this could
be rather confusing and lead to errors. If anyone really wants
it then I will do so.