m8cutils download

m8cutils main page m8cprogs download

 m8cutils-22 (31-DEC-2006)
m8cutils-22.tar.gz (198 kB)

Changes:

  • as/tests/{case,macro}: added tests for case-sensitivity and use of macro name not as macro
  • as/m8c.y: when using EQU, m8cas didn't complain about re-definable labels being an extension (updated as/tests/redef_ext)
  • as/README: clarified use of re-definable labels in EQU
  • as/{m8c.y,id.[hc]}: a re-definable label set by EQU is not visible when parsing the expression it is set to (as/tests/redef_same)
  • as/{m8c.y,id.[hc]}: EQU cleans up re-usable labels only after parsing the expression (as/tests/reuse_same)
  • as/{id.h,id.c,op.c}: recursive definition were not detected and crashed m8cas (as/tests/rec_def)
  • shared/{disasm.c,symmap.[hc]}: added support for re-definable labels
  • das/tests/sym_redef: added tests for redefinable labels
  • sim/: added support for re-definable labels (sim/tests/redef, sim/tests/redef_err)

 m8cutils-21 (18-DEC-2006)
m8cutils-21.tar.gz (196 kB)

Changes:

  • m8cbscan/: new static connection checker that performs a boundary scan through ISSP
  • Common.make: VERSION is now a string, not a number
  • as/tests/Common: added function "edit" to run sed on _out
  • as/tests/Common: added function files_noas to add a file without putting it on the command line of m8cas
  • Common.make: set YACC to "bison -y" to gain access to extension "YYEMPTY" (updated as/tests/redef_undef)
  • shared/error.c:set_file: convert empty file names to ""
  • as/: added support for IF ... ELSE ... ENDIF (as/tests/if, as/tests/if_nest, as/tests/if_la, as/tests/if_err)
  • as/: added support for MACRO ... ENDM (as/tests/macro, as/tests/macro_nest, as/tests/macro_sep, as/tests/macro_if, as/tests/macro_err; updated as/tests/sep_cpp)
  • as/: added support for INCLUDE (as/tests/include)
  • sim/tests/dm: new regression test for GPIO drive mode changes

 m8cutils-20 (5-DEC-2006)
m8cutils-20.tar.gz (168 kB)

Changes:

  • shared/file.c:read_binary: complained that files of exactly 32 kB were already too big
  • prog/torture.c: updated and made compile again, now for real
  • prog/torture.c: added optional cycles per session argument
  • prog/torture.c: added detection of session loss (chip stops responding)
  • prog/Makefile: added target torture-static and changed -lssl to -lcrypto
  • prog/Makefile: also remove "torture" when cleaning up
  • prog/README: updated description of the protocol stack
  • prog/README: added a "quick start" section
  • shared/util.h: added convenience functions alloc_type_n and realloc_type
  • prog/cli.[ch]:prog_close_cli: now has an argument to indicate whether a new session will be opened with the same settings
  • prog/vector.h:VECTOR_ADDR, VECTOR_DATA: new macros to extract vector components
  • shared/interact.c:progress: reduced number of characters output for the progress bar by a factor of up to 250
  • prog/prog_ops.c:ops_write_program: skip blocks containing only zeroes
  • prog/drv/*.c: made bit- and vector-level operations structures "static"
  • prog/prog_vector.c:vec_vector, prog/prog_bit.[ch]: added new bit-banging operation "invert_phase" to invert the SCLK phase when receiving
  • prog/drv/watpp.c, prog/drv/watsp.c: added support for phase inversion
  • prog/drv/watsp.c: set SDATA only when it changed, reducing the number of I/O operations by about 25%
  • prog/drv/waspic.c: increased the read timeout from 1 to 5 seconds to allow large host-side buffers to drain
  • prog/drv/wadsp.[ch]: added driver for the wadsp programmer
  • prog/tty.[ch]:tty_discard_input: new function to flush queued-up input
  • README: the license is plain GPLv2, no longer with an augmented version (that was for the programmer hardware, which has since moved to m8cprogs)
  • shared/file.c:read_hex, shared/symmap.c:sym_read_file, as/code.c:store_offset, prog/prog_vector.c:prog_vector, prog/prog_vector.c:do_prog_acquire_reset, sim/lang.y:read_lvalue, sim/lang.y:write_lvalue, sim/lang.y: fixed portability problems with uint32_t in printf and sscanf (reported by Mike Moreton)
  • Common.make: invocation with TEST32=1 now enables uint32_t portability testing for 32 bit platforms (this hack only works with glibc)
  • shared/symmap.c:sym_read_file: replaced non-portable %as with %s (based on a patch by Mike Moreton)
  • Config.make, Makefile: added configuration variable BUILD_LIBPROG to control whether to build libprog and things that depend on it, such as m8cprog (based on a patch by Mike Moreton)
  • Config.make, shared/Makefile, shared/cpp.c: CPP is now set by configration variable CPP_COMMAND, which now defaults to "cpp" instead of /lib/cpp (based on a patch by Mike Moreton)
  • */Makefile: "clean" now removed y.output (by Mike Moreton)
  • */Makefile: "spotless" also removes executables with .exe suffix, for Cygwin compatibility (by Mike Moreton)
  • sim/Makefile, sim/icestubs.c: added support for building m8csim without the DIY ICE (by Mike Moreton)
  • sim/code.c:m8c_run: breakpoint at interrupt table entry wasn't taken (sim/tests/breakint, reported by Mike Moreton)
  • as/: added ASSERT directive (as/tests/assert)
  • as/: added re-definable local labels, defined e.g., with ".1:", and used with ".1b", ".1f", etc. (as/tests/redef_before, as/tests/redef_after, as/tests/redef_syntax, as/tests/redef_undef, as/tests/redef_mix, as/tests/redef_ext; updated as/tests/reuse_after)
  • as/id.c: reusable symbols didn't get removed between files (as/tests/sep_undef_re)
  • as/id.c:scrap_reusable: don't make a backup entry if there are no reusable labels
  • as/tests/sep_undef_re: tests for re-usable and re-definable labels crossing file boundaries
  • shared/cpp.c:run_cpp: leave cpp_argv and cpp_argc in a state that allows reuse
  • as/m8cas.c: if using -e with multiple files, set up CPP arguments for each file (as/tests/sep_cpp)
  • as/: added special variable "@" containing the cumulative number of CPUCLK cycles of the instructions since the beginning of the program (as/tests/cycles)
  • Makefile: added target "valgrind" to run the regression tests under valgrind

 m8cutils-19 (30-OCT-2006)
m8cutils-19.tar.gz (161 kB)

Changes:

  • shared/security.[ch]: sanity checks for protection bits
  • as/: added support for reading protection bits from flashsecurity.txt (as/tests/prot_all, as/tests/prot_hole, as/tests/prot_short, as/tests/prot_comment)
  • m8cas: new option "-f protection_file" to select Flash protection file
  • prog/m8cprog.c:main: added sanity checking for protection bits
  • m8cprog: new option "-f protection_file" to set/override Flash protection
  • m8cprog: new option "-F mode" to set chip-wide protection mode
  • shared/file.c:write_hex: did not write the Extended Linear Address record for security data
  • prog/ops.c:prog_write_security: always write all protection bits
  • prog/ops.c:prog_write_security: pad with 0xAA (R), not 0, and pad all banks
  • prog/vector.h:VECTOR_VALUE: limit address and data to 8 bits
  • prog/vector.h: removed 8 bit masking from various vectors
  • prog/ops.c:prog_write_program: use KEY1 and KEY2 instead of numeric constants
  • prog/ops.c:prog_compare_program: if any blocks have been skipped, also verify the checksum
  • prog/ops.c:prog_read_security: corrected various errors in the handling of multiple banks
  • m8cprog: -s -s now prints the full block of security data, including normally unused bytes
  • prog/drv/watpp.c: added calls to "delay_hook" (weak) to allow for external speed adjustments
  • prog/ice.h: removed unused #include "chips.h"
  • prog/prog.[ch]: split into prog_bit.[ch], prog_common.[ch], and prog_vector.[ch]
  • prog/ops.[ch]: renamed to prog_ops.[ch]
  • prog/: streamlined programmer function stack, and added new layers "ops" and "prim"
  • m8cprog: new option "-O option" to pass options to the driver's "open" function
  • prog/drv/: updated all drivers for new stack
  • prog/drv/dummy.c: dummy driver that simulates Flash through a file
  • prog/torture.c: updated and made compile again
  • prog/tests/: regression tests for m8cprog and support libraries
  • sim/Makefile: removed -t from invocation of yacc, which caused code with a warning to be generated

 m8cutils-18 (9-OCT-2006)
m8cutils-18.tar.gz (150 kB)

Changes:

  • sim/sim.c:main: when looking for default.m8csim, searched install directory before directory specified with -I
  • sim/tests/Common: added ../regs to include path for m8cas
  • sim/tests/Common: pass chip name to m8cas, capitalized chip name
  • sim/lang.y: removed duplicate definition of TOK_REG
  • sim/lang.y: didn't check if there is an ICE when using the "ice" prefix (sim/tests/noice)
  • prog/drv/watpp.c:watpp_open: COMMIT was done after waiting, not before it, thereby violating timings
  • as/Makefile: LIBDEP was mis-spelled as LIBDEPS
  • shared/file.c:write_hex_record: record length field was always 0x40
  • prog/pp.c:pp_close: do PPRELEASE, to avoid complaints from the kernel

 m8cutils-17 (7-SEP-2006)
m8cutils-17.tar.gz (149 kB)

Changes:

  • shared/error.[ch]: moved general portion of as/error.[ch] and as/m8c.l here
  • as/error-as.[ch]: assembler-specific part of previous as/error.[ch]
  • shared/backslash.[ch]: moved as/m8c.l:backslash here
  • shared/reg2hdrs.pl, shared/regdef.h: dual-banked registers are now flagged with PSOC_REG_ADDR_X in "c" mode
  • misc/reginfo.c: added support for dual-banked registers
  • prog/: new programmer driver operation prog_detach and command line option -D to detach from target (currently only supported by watpp)
  • prog/cli.[ch]:prog_close_cli: new function to disconnect programmer while respecting the -D option
  • prog/m8cprog.c: call prog_close_cli at the end (note: changes behaviour, target may now be powered down and held in reset, unless using -D)
  • shared/chips.c:chip_list: corrected formatting to leave the last column empty
  • shared/chips.c:chip_by_name,chip_by_id: simplified curiously awkward return logic
  • shared/{m8c-registers,reg2hdrs.pl,regdf.h}: moved to new directory regs/
  • regs/reg2hdr.pl: added support for chip-specific register definitions
  • regs/reg2hdr.pl: allow more whitespace, for compatibility with old CPPs
  • regs/m8c-registers: added all missing registers and classified unclassified ones
  • regs/m8c-register,regs/capabilities: added chip-specific attributes and definitions
  • shared/Makefile: installed ssc.inc (and not ssh.h) as ssc.h
  • misc/reginfo.c: added optional first argument to select the chip
  • sim/sim.c: pass default.m8csim through CPP
  • sim/core.c:m8c_init: didn't initialize regs[CPU_SCR1].user, causing a crash when trying to read CPU_SCR1

 m8cutils-16 (2-AUG-2006)
m8cutils-16.tar.gz (138 kB)

Changes:

  • shared/chips.[ch]: added the CY8C24423A with ID 0x34, not 0x14 as AN2026A claims
  • shared/m8c-registers: added more registers and organized them by function, not address
  • shared/m8c-registers, shared/reg2hdrs.pl: register numbers are now in the M,Nh format, including x,Nh
  • shared/reg2hdrs.pl: renamed "c" mode to "h"
  • as/code.c: report first undefined label, not last (as/tests/dundef)
  • sim/core.c: setting a page register didn't update the page pointers (sim/tests/ppreg)
  • sim/tests/ppreg: added tests for direct and indirect access for all page modes
  • sim/util.h: moved to shared/, and removed as/util.h
  • */Makefile: moved dependencies, tests, and the "filelist" target into Common.make
  • Config.make: moved definition of INSTALL_PREFIX from Common.make
  • Makefile: include Config.make instead of Common.make
  • misc/reginfo.c: utility to pretty-print register structure and content
  • as/README: incorrectly called unary >> "log2", while it's ffs()-1
  • sim/: added support for breakpoints (sim/tests/break, sim/tests/unbreak)

 m8cutils-15 (5-JUL-2006)
m8cutils-15.tar.gz (134 kB)

Changes:

  • sim/lang.y: expressions can now be used almost everywhere where numbers are expected (sim/tests/symexpr, sim/tests/regreg)
  • sim/lang.y: symbols names can be distinguished from keywords by putting them in double quotes (sim/tests/symquot)
  • shared/m8c-registers: added more registers
  • as/: error messages call identifiers now "labels" (updated as/tests/reuse_undef, as/tests/reuse_before, as/tests/reuse_after, as/tests/blk, as/tests/org)
  • as/: the assembler can now process multiple files in one run. Global labels are shared among files, while local labels remain local per file. (as/tests/sep_local, as/tests/sep_global, as/tests/sep_undef, as/tests/sep_mix, as/tests/sep_export; updated as/tests/export)
  • prog/drv/watpp.c: cleaned up some debugging code
  • prog/: added support for power-on mode, with the command-line option -P
  • prog/drv/watpp.c: added support for power-on mode
  • as/Makefile, sim/Makefile: $(OBJS) now depend on .depend, like everywhere else
  • Common.make, */Makefile: dependency generation is now defined in Common.make
  • Common.make: dependency generation can now be quiet or verbose
  • Common.make: use `...` instead of $(shell ...) to cat VERSION, so that we don't get a stray error during top-level make

 m8cutils-14 (22-JUN-2006)
m8cutils-14.tar.gz (130 kB)

Changes:

  • shared/reg2hdrs.pl: register definitions can be spread over multiple lines
  • shared/reg2hdrs.pl: register definitions may also contain field values
  • shared/reg2hdrs.pl: field and value names can also begin with a digit
  • shared/Makefile, sim/Makefile: input of reg2hdrs.pl is now passed through cpp
  • shared/m8c-registers: added lots of registers, including those of the two column limited analog system
  • prog/ice.c: removed unused ice_open and ice_close
  • prog/ops.c:prog_identify: made raising CPUCLK to 12 MHz optional
  • prog/torture.c, sim/sim.c: use prog_identify without raising CPUCLK
  • sim/sim.c: omitting the chip name while loading a program caused a segfault
  • sim/Makefile: added dependency on ../prog/libprog.a
  • sim/ice.c:ice_write: after a write to CPU_SCR0, either do WAIT-AND-POLL or send a zero vector
  • sim/ice.c: restart the clock after each register access
  • README: clarified copyright of prog/drv/ecb_at91.[ch]
  • sim/lang.y:status: also display the next instruction to execute
  • as/: new option -m to generate a symbol map file (as/tests/sym_local, as/tests/sym_global, as/tests/sym_reuse)
  • as/lang.l, as/tests/reuse_global: explicitly catch reusable global labels, to avoid version-dependent "syntax error" message from lexer
  • as/error.c:set_file: returned a pointer into yytext instead to the malloc'ed string
  • shared/file.[ch]: header still used called this the "CY8C2" utilities
  • shared/symmap.[ch]: new functions to read and use symbol maps generated by m8cas
  • das/: new option -m to load a symbol map, and to use symbols in disassembled code (das/tests/sym_rom, das/tests/sym_ram)
  • sim/: new option -m to load a symbol map, to use symbols in disassembled code, and to accept symbols as rvalues (sim/tests/symbols)
  • as/error.h, sim/sim.h: added __attribute__((format(printf,...
  • as/id.c:assign: added three missing arguments to call to lerrorf and made it print the current location (as/tests/redefine)
  • shared/cpp.c:run_cpp: did not free argv[1]

 m8cutils-13 (13-JUN-2006)
m8cutils-13.tar.gz (123 kB)

Changes:

  • sim/lang.y: added direct register accesses through the ICE, see sim/README
  • moved all files describing programmer hardware to a separate package called "m8cprogs"
  • TODO: still used the old name "cy8c2utils"
  • README: corrected the path to COPYING.GPLv2
  • renamed the top-level directory from "m8c" to "m8cutils-"

 m8cutils-12 (9-JUN-2006)
m8cutils-12.tar.gz (147 kB)

Changes:

  • prog/drv/ecb_at91.[ch]: added driver for an AT91RM9200-based programmer (by Carlos Camargo)
  • prog/cli.h and prog/cli.c were missing in m8cutils-11
  • sim/lang.y: to drive GPIO pins, the specifcation now has to be prefixed with the keyword "drive" (updated sim/README, sim/example/README, sim/tests/drive_0, sim/tests/drive_0r, sim/tests/drive_1, sim/tests/drive_1r, sim/tests/drive_z, sim/tests/tst_reg, sim/tests/gpioint, sim/tests/bugs8)
  • sim/: GPIO pins can now be set with "set = ", similar to how "drive" works (sim/tests/set_0, sim/tests/set_1, sim/tests/set_0r, sim/tests/set_1r, sim/tests/set_long_r, sim/tests/set_z, sim/tests/set_analog)
  • sim/: entering a GPIO pin range now also displays the current DMx and DR settings, and the ICE status
  • sim/gpio.c: also check for interrupts when changing PRTxDR, PRTxDM0, and PRTxDM1 (sim/tests/gpiointcfg)
  • sim/tests/gpioint: enabled mode 00 test case
  • sim/sim.c: if the program argument is omitted, no program is loaded
  • sim/sim.c: if using an ICE, the chip is auto-detected, and the name can be omitted
  • sim/lang.y: new command "printf", to print a message (sim/tests/printf)
  • sim/lang.y: new command "sleep", to pause script execution (sim/tests/sleep)
  • sim/README: clarified that register and field names are not necessarily implemented as #defines
  • sim/lang.y: the address operator "&" now also works with ram[...], rom[...], and symbolic register names (sim/tests/addrop)
  • sim/lang.y: flush stdout after each command, to better synchronize with stderr
  • {libfdr,shared}/Makefile: make "install" depend on "all", so that "make clean" followed by "make install" works

 m8cutils-11 (7-JUN-2006)
m8cutils-11.tar.gz (140 kB)

Changes:

  • prog/drv/watsp.c: added parentheses to macro arguments
  • prog/prog.c: moved WAIT-AND-POLL to separate function, for clarity
  • prog/cli.[ch]: common parts of command line handling
  • prog/m8cprog.c, prog/torture.c, sim/sim.c: now use the common CLI functions
  • prog/ops.c:prog_initialize: "exit" if the voltage is not known, don't "abort"
  • watpp/: new simple bit-banging programmer for the parallel port
  • as/m8c.l: use "[01]" instead of the somewhat pompous "[0-1]"
  • as/op.c:make_op: fixed idiot "optimization", which caused evaluation to clobber its input (as/tests/evalconst)
  • shared/m8c-registers: added VLT_CR and VLT_CMP

 m8cutils-10 (7-MAR-2006)
m8cutils-10.tar.gz (131 kB)

Changes:

  • prog/torture.c: torture-tester for host to target communication
  • prog/drv/watsp.c: oops, comment shouldn't claim anymore that it doesn't work
  • prog/Makefile: prog.o now depends on drv/*.c, as a feeble attempt to force a rebuild when a new driver is added
  • prog/Makefile: don't insist on -Werror when doing dependencies
  • sim/gpio.c:gpio_ice_disconnect: write gpio->dm2 to PRT0DM2, not PRT0DM1
  • sim/gpio.c:gpio_ice_connect: trying to take over the ICE pins is no longer punished with a fatal error (if in interactive mode)
  • sim/lang.l:yyerrorf: still exit on errors if running a script
  • sim/gpio.c:gpio_write_dr: set bits not under ICE control to zero (otherwise, writing to PRT1DR[1] would break contact with the ICE)
  • tests/ref/main.c: added #include for "chips.h"
  • prog/vectors.h: moved SSC-related definitions to shared/ssc.inc
  • prog/cy8c2regs.h: merged into shared/m8c-registers
  • as/Makefile: moved handling of m8c.inc to shared/Makefile
  • sim/: registers.h is now shared/m8c.h
  • prog/drv/{waspic,watsp}.c: removed unused #includes
  • sim/core.c: arguments to FROM_REG_OP were reversed for "TST reg[expr..." (sim/tests/tst_reg)
  • sim/core.c:TST: unexplicably, did a comparison instead of a bit test (sim/tests/tst_ram, sim/tests/tst_reg)
  • sim/tests/: ASR didn't preserve the MSB (tests/asr)
  • sim/tests/: various files were lacking the #!/bin/sh
  • sim/tests/: new test cases asl, asr, cmp, cpl, dec, inc, rlc, rrc, swap, tst_ram, and tst_reg
  • */tests/Common: use 0 if "passed" is not defined, to avoid complaints from "expr"
  • prog/m8cprog.c: if -r and -c were set, m8cprog would try to read a file
  • prog/: added support for retrieving the Flash protection bits (-s) (joint work with Dennis Geurts)
  • prog/ref/README: added a bit of documentation
  • prog/ref/vdecode.pl: made output format nicer and added more constants
  • prog/: added support for switching to real-time priority when sending the first nine bits of Initialize-1 (option -R)
  • prog/proc.c:prog_acquire_reset: new function to acquire the target in reset mode, while checking that the Txresinit deadline is met
  • prog/prog.h: new programmer operation "acquire", to acquire the target without m8cprog trying to enforce correct timing
  • prog/prog.c:prog_vector: reduced wait for SDATA to go H before WAIT-AND-POLL from 100 us to 10 us

 m8cutils-9 (2-MAR-2006)
m8cutils-9.tar.gz (124 kB)

Changes:

  • Common.make:SLOPPY_PROTOTYPES: added -Wno-strict-prototypes for bison 1.35 compatibility
  • sim/Makefile:LDLIBS: added -lcurses for compatibility with older libraries
  • sim/sim.c: added -v to the programmer options
  • sim/gpio.c:is_input: also resistive without a strong drive is an input if the line is assigned to the ICE
  • sim/lang.y:drive_port: moved drive logic to gpio.c:gpio_drive*, making it atomic
  • sim/lang.y:drive_port: drive value was masked before shifting, not the other way around (tests/bugs8)
  • sim/core.c: LJMP and LCALL had the byte order wrong plus a weird +3 offset (tests/ljmp, tests/lcall)
  • sim/core.c: LCALL had the return address off by one
  • sim/example/blink.asm: use m8c.inc instead of ../registers.h
  • sim/lang.y:run_cycles: moved printing of "HALT to core.c, in order to properly distinguish between HALT and timeout (tests/bugs8)
  • libfdr/jval.c: removed broken functions jval_iarray, jval_farray, and jval_carray
  • sim/core.c:m8c_run: split into m8c_check_interrupt, m8c_prep, and m8c_one, and handle taking an interrupt like an instruction
  • sim/: programs can now be single-stepped with "step"
  • sim/lang.l:my_yyinput: don't add empty lines to the history
  • sim/lang.l:my_yyinput: a completely empty line now repeats the previous input, just like in gdb
  • sim/: "run" can now be interrupted with ^C
  • sim/: added "quit" command
  • sim/sim.c: prog_close is now executed through "atexit"
  • {as,sim}/Makefile: print "GENERATE" when making machine-generated sources, not the actual command (unless in verbose mode)

 m8cutils-8 (1-MAR-2006)
m8cutils-8.tar.gz (120 kB)

Changes:

  • sim/lang.l: now uses GNU readline to read from a tty
  • sim/lang.l:yyerrorf: line numbers are only printed if reading from a non-tty
  • all programs now support a -V option to print their version number to standard output
  • Makefile: global "make tests" now counts the total number of test case
  • Makefile: global "make" no longer tries to build optional site-specific items like "waspic"
  • Common.make, {as,sim}/Makefile: flex- and bison-generated code is now compiled without -w
  • sim/m8c.c: when writing to a bit field in a register, the old value of the register (i.e., the bits not part of the field) was not properly preserved (tests/bugs7)
  • sim/m8c.c: removed value range checks, since they got in the way of negation too easily
  • sim/registers: moved to shared/m8c-registers
  • sim/reg2simhdr.pl: moved to shared/reg2hdrs.pl
  • sim/Makefile: "spotless" target still tried to remove cy8c2sim, not m8csim
  • added "make install" and "make uninstall" for installation in $(INSTALL_PREFIX)/bin and $(INSTALL_PREFIX)/share/m8cutils/; default $(INSTALL_PREFIX) is /usr
  • {as,sim}/Makefile
  • */Makefile: already "make clean" removes .depend, not only "make spotless"
  • sim/m8c.[ch]: renamed to core.[ch]
  • sim/Makefile: updated dependencies on registers.h
  • sim/sim.c:find_file: segfaulted if the file could not be found (tests/bugs7)
  • sim/core.c: offsets of 0x80-0xff operations were off by one (tests/call, tests/jmp)
  • Makefile: enabled SourceForge upload
  • sim/example/: step-by-step usage example for simulator and DIY ICE

Last update: 31-DEC-2006   Werner Almesberger