|
|
SDK Documentation |
Copyright © 1997-2001 |
February 23, 2001 |
Sorry, but this file has not been maintained recently
November 2, 1998
Updated llama.exe to version 2.03. This version fixes a bug in the
.binclude directory.
It now understands the same paths as .include. There are no other differences.
A couple of new scripts in
the \vmlabs\bin directory,
RUNCOFF.BAT = Shortcut batch file to run specified program MPE 0. (i.e. "runcoff
pigs.cof")
RESETM.BAT = Shortcut batch file to reset merlin box.
Multiple Joysticks! See the Pong Sample program Readme.txt for more info.
Preliminary version of the OpenGL 3D Graphics library for Merlin, called MGL. See the Libmgl.pdf file for info.
There is a BIOS library, libbios.a, which is to be linked to all
applications.
Not many user visible changes are associated with this (see below for the ones which cause
incompatibilities). libbios.a will grow in future releases to include a more
comprehensive set of
hardware abstractions.
Note: Users of older Merlin development systems may need to obtain a different libbios.a
library
for Audio to work correctly. Systems equipped with Burr-Brown DACs can use the
libbios.a
contained in this zip file.
Developers Notes: Incompatibilities in this release
Developers Notes: Known bugs in this release
October 15, 1998
There is a new environment
variable to be set in your AUTOEXEC.BAT file.
set VMLABS=c:\vmlabs
This example assumes that your \vmlabs directory is on your c: drive.
You can remove the DJGPP and VMLD_LIBRARY_PATH environment variables from your AUTOEXEC.BAT
There is a new ACE360 debug
stub, so run aceload.bat from within your \vmlabs\bin directory before you start
using this version of the SDK. There are speed improvements in the new version of
the ACE360 debug stub.
The new ACE360 stub version is 1.2 ( Oct. 1, 1998; 14:18:33
)
The new debugger,
PuffinTK.exe, requires that Tcl/Tk be installed on your system.
Follow this link to
the internet download site for Tcl/Tk.
PDF documents included with
the SDK now share a global, searchable index.
You must have Adobe Acrobat Reader with Search Plug-In, or Acrobat Exchange 3.0
to use the PDF search engine. Follow this link to the
internet download site for Acrobat products.
Add \vmlabs\doc\index.pdx to the list of search indices using the Tools >> Search...
menu item.
There is a BIOS library, libbios.a, which is to be linked to all
applications.
Not many user visible changes are associated with this (see below for the ones which cause
incompatibilities). libbios.a will grow in future releases to include a more
comprehensive set of
hardware abstractions.
libc.a now includes file i/o routines which can communicate with the
host PC's disk system.
This requires that a file server be running on the PC (or that the -fs option be given to
mload.)
There are two new audio libraries:
libmaud1.a library includes the synth and once the synth is started,
it takes over a whole MPE.(MPE 1 by default)
libmaud2.a is the stand-alone PCM engine (no synth!), which is linked to
your C program on MPE 0
Note: Users of older Merlin development systems may need to obtain a different libbios.a
library
for Audio to work correctly. Systems equipped with Burr-Brown DACs can use the
libbios.a
contained in this zip file. See the MML Audio
documentation for more information.
The new "mergemf.exe" tool converts MIDI format 1 to MIDI
format 0, and can be used
stand-alone. It is used by the Sendmidi.exe utility to automatically convert format
1 to format 0.
Just call "mergemf oldfile.mid newfile.mid"
The usage of the Merlin Synth has also changed. See the "How to use the Merlin Synth" document for new information.
Also, the samples SynthAPI and Audio have been removed from the SDK.
These are obsolete.
Check out the new sample code MmlAudio for up to date sample Merlin audio code.
libmml2d.a has a number of new features (such as styled lines)
llama.exe now tries to check for some beta hardware cache bugs. This may
result in the warning:
"local access following remote load may trigger cache bug".
See the llama documentation (section 7.5) for a discussion of
this error message.
Includes a third party
utility program ( redir.exe ) which allows you
to redirect stdin, stdout and stderr. Type 'redir -?' for usage instructions.
A new tool, sendmidi.exe,
will upload a selected MIDI file to the Merlin
Synth and play it!* ** (See \vmlabs\doc\synth\synth.html
for details.)
* You must have TCL/TK 8.0 or later installed
on your PC to use
sendmidi.exe.
** The Merlin Synth currently accepts only
format 0 MIDI files.
Developers Notes: Incompatibilities in this (Oct. 15) release
New version of ACE360 stub
(contains mostly DVD changes,
plus some speed optimizations) which does not require a
serial connection to install. Click here for more info on the debug
stub.
Performance improvements in
single-stepping in PuffinW.
Also fixed source highlighting bugs when single-stepping.
Several bug fixes to the
Merlin Media Libraries, PuffinW
debugger, C compiler, LLAMA assembler and the linker.
(see the release notes documents for more info.)
New DoomCube demo replaces
the Doom demo. Still playable,
and with sound, but use the forward-L button to see the
game texture-mapped onto lots of moving cubes!
Other new demos include
Titan, Madmars and JulianJukebox.
Check them out!
Additions to STDUTILS.LSP,
including a useful DATE class.
Read XLisp.doc and date.txt for more info.
Renamed
"\vmlabs\doc\release notes" directory to
\vmlabs\doc\rlsenote as per suggestion from users.
Updated XLisp tutorial
document in
\vmlabs\sample\tutorials\xlisp directory.
- support of new COFF file formats
- new "bload" command to load binary data directly to a memory address (like mload -b)
- performance improvement downloading to IRAM
- addition of DMA Breakpoint dialogs (in expert mode)
- addition of MEM-WATCH and Memory Breakpoint dialogs
- new "stdutils.lsp" loaded at PuffinW runtime
- fix for I-cache problem and "step over interrupt"
- several other bug fixes and minor enhancements
History of recent Puffin changes
05/11/98:
1. Fixed some bugs in "step over interrupt" in
conjunction with "step
over".
2. When stepping over a bra/jmp/jsr/rts with implied nop
instruction,
the debugger will sometimes skip over the two delay slots. This
happens when an interrupt occurs at the same time and *step-over-interrupts*
is #t. You can tell that this happened because a message is displayed in
the listener window saying "Done stepping over interrupt".
3. Merged in a change that Ian made to the memory watch window.
4. Fixed the handling of DMA Breakpoint clearing.
5. Fixed a problem which caused single-stepping to highlight the
wrong line of source text.
04/08/98
Made mload.exe use the LLAMA_FLAGS environment variable to supply
extra
arguments to the llama command line used when assembling source files.
Made mload.exe echo the command line used to invoke llama.
Added a workaround to fix a hardware bug that causes the
instruction tag
ram to be unavailable when pcfetch points to a cachable location. This
should fix breakpoints in cached code. However, there still seems to be
a bug in the "step over interrupt" facility.
Made the ace360 stub clear dma exceptions after reporting them.
04/07/98 (again):
1. Changed the name of the -u switch to -~ to make it less likely
that
it would be typed accidentally.
2. Added a new -u switch that reads an update file of the
following
format to simplify updating flash memory and make it safer:
# this is a flash update
type: flashUpdate # file signature
file: test.bin # binary filename
src: 00700000 # address of buffer in hex
dst: 00000000 # address in flash to program
cnt: 00080000 # number of scalars to write
04/07/98:
1. Added a -a switch to mload to allow ace360 memory to be
loaded.
(type mload -? for more information)
2. Added a -u switch to mload to allow a buffer in ace360 memory
to
be programmed into flash memory. (type mload -? for more information)
03/31/98:
1. Fixed a bug in the stub that caused problems when trying to
receive
data from the comm bus using the mcom interface.
2. Added an acknowledgement after a fast download so that the
debugger
doesn't try to start a program running when it hasn't finished
downloading. This was necessary to support the Motorola Blackbird
stub that has internal buffering of data going to the comm bus.
03/27/98:
1. Added a 'q' option to exit from the 'monitoring exceptions'
mode in
mload.
2. Substantially improved the speed of loading code into iram on
the
oz board.
3. Added a 'bload' function to puffin. You can now type:
(bload #x80000000 "foo.bin")
to load the file "foo.bin" into system ram at the
address 80000000.
In general, the first argument is the load address and the second
argument is the file to load. The file is assumed to be in merlin
byte order.
03/11/98:
1. Added a simple vdg that implements vidVrst, vidVlen, vidVint,
vidVcnt,
vidHlen, vidHint and vidHcnt and generates video interrupts. Writes to
any other register are ignored and reads from any other register return
zero
2. Added a very dumb dma controller that accepts write commands
and
ignores them and accepts read commands and returns zero.
03/05/98:
1. Fixed restart.
2. Added a new built-in function 'report-dma-exception' that is
called by
debug.lsp when running under the gui debugger when a dma exception
occurs. Internally, this function calls theApp.OnDmaException().
03/04/98:
1. Added a dummy comm bus handler for audio dma. Any packet sent
to the
audio dma address (67) will be sent to the proverbial bit bucket clearing
the receiver full bit and thus allowing another packet to be sent.
2. Implemented sparse linear dma for everything except bytes.
Beware that
the emulator doesn't enforce the alignment restrictions imposed by the
hardware. Make sure your buffers are aligned according to Jude's diagram
lininfo.eps that can be found in /al/judek/work/sch/LININFO.EPS.
02/05/98:
1. Added a -b option to mload.exe to load binary files. This
replaces the
load facility in mctest.exe. For instance, to load the Doom demo:
mload -b doom1.wad:80800000 merldoom.cof -r
Note that the binary loader uses the current mpe as a helper mpe.
This means that it will load transfer.mpo into that mpe and use it
to support the fast loader. Any program that was already running
in that mpe will be stopped and overwritten. If you need to load
a binary file without using an mpe, you can use -s before the -b
to cause the slow loader to be used to load the binary file. You
probably don't want to do that though because it is *very* slow.
2. Added a delay between loading transfer.mpo and starting the
first
transfer to give the helper mpe time to start and initialize.
01/28/97:
1. Changed the number of clock cycles the emulator executes at
each
iteration of the idle loop to improve gui performance in puffinw.
01/23/98:
1. Integrated Ian's changes to the gui.
2. Restructured the debug stub to make it easier to build
versions for
other platforms (like Blackbird).
01/22/98:
1. Made the reset button reset the hardware. To work, this
requires a
modification of the Oz board.
01/21/98 (again):
1. Made puffin.exe (the command line debugger) work with the hardware.
2. Made the build script build transfer.mpo.
3. Made the exezip script install transfer.mpo.
01/21/98:
1. Added the *step-over-interrupts* global variable that controls
the
behavior of single stepping in the presence of interrupts. When this
variable is set to #t (which it is by default), interrupt service
routines are stepped over allowing easier debugging of non-interrupt
code. To allow stepping into interrupt service routines, set this
variable to #f.
2. PuffinW will now remember window positions if you create a
'cfg'
subdirectory of your main 'puffin' directory (the directory your
PUFFIN_PATH environment variable points to).
01/16/98:
1. Made the fast downloader close the mcom connection at the end
of
a download.
01/14/98:
1. Added the addwc/subwc/cmpwc instructions as well as the
dec_only
and mvr instructions and the 32 bit forms of the alu instructions.
The 32 bit mvr immediate instruction and the 32 bit ecu instructions
are still missing as is the eor immediate instruction.
2. Removed the range restrictions on the alu pre-shifts and the
sat
instruction.
3. Reworked guidebug.lsp to move the window size and position
functions
to the C GUI code. This will allow Ian to save and restore window
positions from the puffin.ini file instead of saving them in
a lisp source file. (Eric: unfortunately, this will require some
rework of puffintk)
4. Added an extra parameter to the mcomConnect and
mcomConnectToReceive
functions to specify the ip address of the ace card.
5. Made the fast loader find the 'transfer.mpo' file relative to
the
first directory in PUFFIN_PATH. The path is constructed by taking
the first directory in PUFFIN_PATH and appending '\bin\transfer.mpo'
for Win95 and '/bin/transfer.mpo' for Unix.
12/17/97:
1. Fixed a bug in the overlay support that made overlays in any
mpe other than mpe 0 fail.
12/09/97:
1. Fixed a bug in the ace stub.
2. Added "*.s" to the Load Source file filter.
3. Fixed various other bugs.
4. Updated the VM Labs copyright notice.
12/07/97:
1. Fixed a bug in the mload.exe -dm command.
2. Fixed a bug in cload.
3. (Eric) Added some of the new opcodes.
4. Added overlay support for .mpo files only.
12/01/97:
1. Added the :ignore-before-after? keyword argument to mload and
cload to allow loading object files without loading before or
after methods.
11/21/97:
1. Enable caching of the register window to improve window update
preformance.
11/20/97:
1. Moved the breakpoint support from the debug stub back into the
debugger to simplify the stub.
[ back to top ]
History of recent Llama assembler changes
llama version 1.105
-------------------
Changes since the last SDK release are all bug fixes,
except that:
(1) The -v option has been enhanced to
provide more useful output.
(2) Under Windows, all warnings and errors are output
to the standard output. This allows warnings/errors
to easily be captured into a file from COMMAND.COM.
HOWEVER, note that some old makefiles which do
things like:
llama -fcoff foo.s > foo.o
may no longer work, if there are any warnings at
all in the file. Change these to:
llama -fcoff -o foo.o foo.s
llama version 1.101
-------------------
Changes since the last SDK release are all bug fixes,
except that the -v option has been enhanced to
provide more useful output.
llama version 1.92
------------------
(1) Fixed a bug in S-Record output format.
(2) Made all messages go to stdout in the DOS
version (so they can be captured in a file).
(3) Added a "maximum size" parameter to the
.overlay directive; for example,
.overlay foo,1024
declares an overlay which must be less than
1K bytes in size. See the assembler documentation
for more details on overlays.
llama version 1.91
------------------
Changes to the assembler since the last release
(see the documentation in doc/html/llama for
more detailed information):
(1) The addr instruction now accepts full 32 bit
operands. This means that you should write
your immediate constants as 16.16 fixed point
numbers. For example, to add the integer 1
to the ry register, do:
addr #(1<<16),ry
or
addr #fix(1.0,16),ry
instead of the old notation, which was:
addr #1,ry
The latter form will still be accepted (for now)
but a warning will be printed. In the next
release of the assembler, addr #1,ry will actually
add the (32 bit) value 1.
The .revision directive (or the -r# command line
option) can be used to control this behaviour.
Specifying ".revision 19" (or -r19) will suppress
the warning. Specifying ".revision 21" (or -r21)
will cause all constants to silently be treated as
32 bits.
(2) The short vector multiply instructions now accept
fully 32 bit shifts. In the current manual, and in
previous versions of the assembler, the shifts on
the dotp, mul_p, and mul_sv instructions were
specified as though the quantities being multiplied
were 16 bit values. llama now accepts 32 bit relative
shifts, and will issue warnings for obsolete 16 bit
relative shifts.
Old Code --> New Code
mul_p ru,v0,>>#8,v0 --> mul_p ru,v0,>>#24,v0
mul_sv r1,v2,>>#14,v2 --> mul_sv r1,v2,>>#30,v2
dotp v0,v1,>>#16,r20 --> dotp v0,v1,>>#32,r20
Note that the immediate shift of 0 remains the same,
because adding 16 to it would conflict with an
existing shift amount.
The .revision directive (or the -r# command line
option) can be used to control this behaviour.
Specifying ".revision 19" (or -r19) will suppress
warnings about obsolete forms. Specifying ".revision 21"
(or -r21) will cause an immediate shift of 16 to
be interpreted the same as the old immediate shift
of 0. This will be the behaviour in the next
release of the assembler, so make sure that you
fix any warnings llama issues about 16 bit shifts
(or at least insert .revision directives into your
source code!)
(3) New directives, .cache and .nocache, have been added
to control code alignment. The .cache directive forces
subsequent code to be properly aligned for running in
cache, using whatever cache line size was specified
on the command line (or the default value of 32, if
none was specified). The .nocache directive turns
off code alignment, which will slightly reduce the
size of executed code. It is a very grave error to
use .nocache in code which actually will run in
cached space (e.g. in system RAM) rather than in
local MPE memory.
(4) A check has been added for a cache/DMA interaction bug.
If any DMA or comm bus control register is accessed
in the second-to-last packet of a cache line, the
subsequent cache miss can cause the register access
to be repeated, which usually causes a crash. llama
will automatically insert padding to try to avoid
this situation, and will print a warning if it is
unable to (for example, if the access occurs in a
branch delay slot). Note that the padding which llama
adds occupies space, but does not (otherwise) affect
execution time.
(5) The COFF output file format has been extended to allow
debugging of larger files. This changes will cause
object files assembled with the new release of llama
to crash the old linker. Make sure that you use the new
linker (vmld.exe) which comes with this SDK release.
(6) Information about C source file names and line numbers
is now passed along to the puffin debugger if the C file
is compiled with mgcc's "-g" flag. Puffin does not yet
understand how to step C source lines; pressing the
single step button in puffin will step only 1 assembly
language statement, which may not be all of the C line.
(7) There have, of course, been numerous bug fixes and minor
enhancements.
Version 1.83
------------
Added the .revision directive to allow for
changes in assembly language syntax.
Added a warning for use of the old addr #n,rx form;
this should now be written as "addr #(n<<16),rx".
Changed the dotp, mul_p, and mul_sv accept 32 bit
shift amounts as well as 16 bit ones. This creates
one ambiguity (the meaning of ">>#16"); for now
this is resolved with the old meaning, but a warning
is printed for this.
Allowed >> modifier in front of the first register in
ls instructions, and <> modifier in front of the
first register in rotate instructions.
Fixed an off-by-one error in line numbers inside
.if statements.
Cleaned up error handling and reporting to reduce
redundant error messages.
Version 1.82
------------
Fixed a bug in the PUFFIN_PATH include
file search code.
Version 1.81
------------
Added -I switch for giving explicit paths
for include files.
Added the ceil() function.
Improved documentation for equates.
See \vmlabs\lib\src\mutil\ChangeLog.txt
for a list of recent
mutil changes.
July release:
MML3D:
Added a number of speed improvements.
Implemented edge anti-aliasing code. This implementation is
still very slow, but we think we can improve it.
Fixed a bug that caused bad pixels to be written at the
edges of texture mapped polygons.
--------------------------------------------------------------------
Merlin libraries: April 1998
The following libraries are provided:
libmml3d.a -- 3D libraries. These are still very primitive, and
will be much improved before our next release. The 2D
library and utility library (libmml2d.a and libmutil.a) must
also be linked if you use this.
libmml2d.a -- 2D libraries. Again, very primitive, and will
be much improved. See also some of the sample code for
some 2D primitive code for sprites, etc. (C APIs for
these will be available as part of libmml2d in a
future release). Make sure you link libmutil.a also.
libmutil.a -- Utility libraries. Basic utility functions
for programming on Merlin.
libjpeg.a -- The Independent JPEG Group's library for
JPEG decompression. See the documentation in
vmlabs/doc/jpeg. We expect to replace this with a
faster, Merlin specific library, but this one is
solid, portable code that will let you get started
with JPEG'd images.