% CHANGES: revision history for HADES
%
% (C) 1997-2005 F.N.Hendrich, hendrich@informatik.uni-hamburg.de
%               University of Hamburg, Computer Science
%

Notation:

K = killer bug
B = bug
J = Java bug
P = problem, low priority
I = info
F = fix
N = new function
* = wish / planned feature

---------------------------------------------------------------------------

Known Bugs/Features:

B editor sometimes loses wire connections.
  This most often occurs for Ipin/Opin components, but the exact cause
  for the bug is currently not known - it seems related to undo operations.

  Please use the 'check design' option from time to time to guarantee 
  that all gate inputs are actually connected to their wires...  
  If the bug occurs, use popup->wire->autoconnect to restore the
  lost connections.

B design manager 'forgets' design name when opened with subdesign->edit

B unfortunately, SignalStdLogic1164.hasRisingEdge() and hasFallingEdge()
  seem to be broken. For as yet unknown reasons, multiple-input gates
  (like AND3) seem to cripple the caching logic in evaluate(): the
  final result is the correct value, but the previous value gets
  overwritten with the current value too. Therefore, hasEvent() 
  reports true, but hasRisingEdge() or hasFallingEdge() might fail.

  Things like hasRisingEdge() could be made foolproof by changing the
  simulation time from double to an integer-based representation, but 
  this would require a complete re-write of the simulator.

I in some cases (e.g. during a "add segment to wire" command or after
  "add probes to all signals"), some graphical objects are not updated
  correctly and appear at offseted positions in the schematic. This
  seems related to a timestamp problem when creating FigCompound instances.
  New: This bug should be fixed with jfig-20030113. Please provide a 
  detailed bug report if the bug still occurs on your system.
  Workaround: use a zoom or panning command to update all objects; this
  will also fix the wrong offsets for the newly created objects.

I running findbugs (0.9.4) against the current hades.jar reveals over
  3000 potential errors. Unfortunate as this is, most of the messages
  are harmless (missing serialVersionUIDs, casts that are typesafe 
  after all, intentional empty exception catch-blocks) or unavoidable
  (like exposing a few arrays as internal data structures).

P The edit->initialize->0/1/X function may lead to inconsistent signal
  values in hiearchical designs. Note that these functions are disabled
  by default and can only be used after editing hades.cnf. Use with care.

J JDK 1.4.x AWT seems to start with font size 20 on my Linux box ...

J it seems that Swing doesn't ever garbage-collect Window-related memory,
  resulting in apparent memory-leaks when opening many windows (e.g.
  by stepping through all the applets in our webdemos page). This is made
  more severe by the fact that JObjectCanvas (and AWTObjectCanvas)
  accidentally may keep references to hades.symbols.X objects in their
  repaintArray - as some symbols keep references to their signals or
  SimObjects, this in turn can keep live references to a whole design
  and editor...

---------------------------------------------------------------------------

21.12.06

F
  fix Hades tutorial to explain the correct "ports" initialization
  pattern and sequence.

09.12.06

X
  cinacs website work.

07.12.06

F
  remove broken link to MIPS32.java from webdemos/docs/mips.include.
  Link to the source-code archive instead.

30.11.06

N
  preparations for a ready-to-run D*CORE webdemo showing the
  sieve of Eratosthenes algorithm. Modified microcode.
  No program yet, however...

N
  new sieve-of-Eratosthenes demo for the D*Core webdemo, including
  short description and assembly source code linked on the web page.
  Also added links from the original processor and processor-io
  demos (which come without microcode).

29.11.06

F
  fix some more broken links throughout the webdemos hierarchy.

F
  fix makefile to include the /hades/models/mcore/*.hds subdesign
  files when building hades-models-dcore.jar from make appletzip.

23.11.06

F
  update TinyMipsCop0 to use five external interrupts (INT0..INT4).
  INT5 can then be used for the counter/compare register.

N
  added a weeny bit of interrupt code in MIPS32 (SR KU/IE stack),
  checkInterrupt, etc. Also fixed mtc0 (move to coprocessor) to
  check for write-only registers. Implemented getPRID.

22.11.06

F
  fix hades.symbols.Color_DIN_IEC62 to handle all negative long values.
  This makes the Microjava webdemo run again; reasons for breakage of
  that demo is unknown at the moment.

F
  proofreading and editing of the webdemos MIPS chapter introduction
  and several MIPS webdemos (intro, muxed-led, lcd, uart, uart-polling).
  Created (mostly empty) template for a new interrupts-demo based on
  the counter-compare registers.

21.11.06

I
  uploaded new Mips stuff to webserver

I
  some of the Mips demos (notably game-of-life) show severe performance
  regressions when both the LCD and the memory editor are open. 
  It might be that the repaint queue of JDK 1.5.0 really overflows when
  100.000 repaints are requested per second :-)

20.11.06

N
  wrote hades.models.mips.basic.ElfTxtLabels2Rom and integrate
  into the webdemos build-scripts. As a result, the disassembled
  view in the memory editors now shows the method labels.

N
  updated TinyMipsWithRam to use MipsMemoryEditor/MipsMemoryCanvas.

N
  updated hades.models.mips.basic.MipsRam to use the new class
  MipsMemoryEditor as its property-editor.

N
  implement new GUI classes hades.models.mips.basic.MipsMemoryEditor
  and MipsMemoryCanvas. The canvas now shows MIPS byte-addresses
  (optionally with offset) and both hex- and disassembled data display.
  Labels should work, but we still need to fix Elf2Rom or a separate
  tool to embed the labels into the .rom files.

17.11.06

F
  upload updated version of the webdemos to tams-www

F
  fix copyright years in webdemos/docs/about.include

F
  add news item to webdemos/docs/news.include: mention broken links
  fixes, styx help files in applet version, femtojava missing images, 
  and TinyMips updates.

16.11.06

N
  more work on the TinyMips exception/interrupt stuff

F
  fix a dozen broken links (typos, renamed things, tams-www restructure)
  in the webdemos hierarchy. Preliminary fix to the main webstart page,
  which still lacks a suitable license.html/license.txt file.

F
  updated the MCS4 webdemos chapter and intro pages: added links
  to 4004.com and the Intel museum webpages.

15.11.06

N
  more planning for interrupt/exception handling on the TinyMips
  and demos. We should probably include counter/compare/int5
  handling from the beginning, leaving us with 5 (int0..int4)
  external interrupts. Cause register seems to be read-write 
  except for the actual hardware-generated pending-interrupt bits.

F
  some experiments and reading for planned webpage conversion to
  css-based two-column layout and new navi menus.

F
  printed a lot of source-code for re-reading...


14.11.06

F
  changed all TinyMips webdemos to support another parameter, namely
  the exceptionVector address. (This is unused by all of the first
  webdemo examples, but we need the extra parameter to avoid parser
  errors.)

N
  more work on the TinyMips+interrupts.

13.11.06

N
  first code and description for the 76-mips/20-interrupt/ TinyMips 
  with interrupts webdemo. Concept ready now, code not yet.

N
  new class hades.models.mips.basic.TinyMipsCop0, which adds support
  for coprocessor0 instructions and six interrupts inputs to the
  TinyMips. 

N
  add coprocessor0 instruction decoding to hades.models.mips.MIPS32

10.11.06 

N
  upload MIPS stuff to the website

F
  some word-smithing within the MIPS demos.


09.11.06

F  
  fix/update the "polling" UART+MIPS demo documentation; the promised
  CR/LF detection and handling is still not implemented, however.

F
  uncomment the TinyMipsWithRan load-byte-store-byte demo for now;
  also uncomment the basic TinyMips Game-of-Life demo.


08.11.06

N
  first working version of the "Conway's Game of Life" webdemo based
  on TinyMipsWithRam; schematics updated to use the new symbols.
  Simulation still somewhat slower than it should be; the clock-gen
  leaves us at about 300K instructions/second at 1M events/second.
  Display repainting unreliable on JDK 1.6 on Linux, apparently because
  the event-queue fills... Hmmm.
 
  Documentation still missing.

N
  many fixes in hades.models.mips.basic.TinyMipsWithRam including
  write() and initialize() with full parameter set, user-configurable
  memory size and start address, memory initialization, new symbol.


07.11.06

N
  further work on the TinyMips webdemos and documentation. 
  Started documenting the binutils/gcc toolchain in mips.include.

F
  update several TinyMips webdemos to use the clean initcodeelf.s 
  with explicit sp/gp initialization. Remove unused syscalls.

01.11.06

F
  updated the TinyMips sieve demo to use the new clean schematics
  and simplified initcode. Improved description.

F
  remove a few rude words from in-code comments.

31.10.06

F
  add trace and mmu inputs to TinyMips. This allows us to enable or
  disable the memory-access traces and the MMU from the schematics.

N
  prepare the TinyMips "intro" demo applet and description.

30.10.06

F
  fix typo in TinyMips.MipsRegisterAdapter to allow setting the PC 
  register.

N
  new component hades.models.rtlib.AddressDecoderLR (single-output,
  low-active, small left-to-right oriented schematics symbol).

F
  re-designed the schematics symbols of TinyMips and MipsRAM. This 
  should allow us to improve the readability of the MIPS applet demos.
  Updated the intro/sieve/stack demos to use the new symbols.

N
  update clblist.txt to include TinyMips, TinyMipsWithRam, and MipsRAM.
  Wrote MipsRAM.clb.


27.10.06

N
  HTML documentation for the TinyMips applet demos (webdemos/docs/
  mips.include).


25.10.06

N
  finally uploaded the USART8251 applet demos.


18.10.06

N
  more work on the USART8251 demos.


13.10.06

F
  change the behaviour of hades.gui.DeleteCommand to cancel() the
  command when the first mouse-click doesn't hit a Symbol (SimObject)
  or WireSegment vertex (Signal). The previous behaviour would leave
  the editor doing nothing at first but deleting the next thing the
  user clicked onto, unless explicitly canceled. This turned out to be
  somewhat confusing (at least to me), especially when combined with
  the latent undo-bug still lingering in the depths of the editor.

  Now, the delete operation is simply canceled when the user doesn't
  hit a target with the first mouseclick. 

F
  fix typo "peripherial" throughout the webdemos descriptions.

N
  more conceptual work for the Mips/TinyMips cosimulation demos.

12.10.06 


10.10.06

F
  changed the USART 50-rtlib/65-usart8251/ webdemos to use the new
  parameters introduced by the recent USART8251.write() fix.

F
  try to fix some keyboard-focus in hades.styx.WaveCanvas and 
  WaveformViewer. Also added an error message when requesting the
  focus fails.

N
  wrote the stimuli file and wrapping text file for the USART+FreeTTS 
  demo.

09.10.06

N
  implement TinyMips.initialize() and write(); parameters now include
  debug-flags, program start-address, and t_buscycle. No GUI support
  to change those values yet, edit the .hds files when necessary.

N
  begin using the gnu ld -Tbss -Tdata and -Ttext flags to specify 
  the memory layout.

N
  updated TinyMips to improve the formatting of the memory-trace
  debugging messages. New message prefix "-M-" ("Mips", "memory")
  to allow grepping a message log.

N
  added setResetVector() stuff to hades.models.mips.basic.MIPS32.
  Using a different reset vector than the hardware default of
  0xbfc00000 (e.g. 0x00000000) can make some demonstrations easier.

06.10.06

N
  first attempt to explicitly set the stack-pointer (r29) and 
  global-pointer (r28) locations in initcode.c.

F
  change hades.models.mips.basic.TinyMips.evaluate() to interpret 
  undefined (UXZWD) values on the nreset input as an active reset.

F
  fix hades.models.mips.basic.TinyMips to always use the virtual
  to physical address mapping for instruction fetch, memory read,
  and memory write operations. Previously, this was only done for
  writes, but read operations did access wrong memory regions.
  This was a major bug that went unnoticed, because the main RAM
  was mapped into the address space at mirrored locations. However,
  read operations from I/O locations at fixed addresses (via Address-
  Decoder) would fail.

  Also reformatted and refactored the corresponding code; new and
  more verbose comments in the code, much better diagnostic output
  when memoryDebug=true is selected, etc.


05.10.06

N
  more work on the TinyMips+USART demos; sending simple texts in
  polling mode with wait-loops does now work.

F  
  first fixes in the TinyMipsWithOnchipRam demos; no need for
  peripheral devices in the first two demos (sieve, stack).


04.10.06

F
  added the rxreceipt flag to USART8251.java to avoid the receiver
  reporting an overrun-error after every reception.

N
  wrote text and stimuli file for the webdemos usart-errors demo.


02.10.06

N
  change USART8251.java to fix the timing of the RXRDY output; this
  is de-asserted as soon as a startbit is recognized. We also reset
  the RXRDY status flag at the same time.

N
  improve input stimuli for the usart-loopback demo; also added the
  promised waveform screenshot.

F
  change hades.styx.WaveCanvas.updateTimeAndValueLabels to always update 
  the time display after mouse motions, even when the cursor is outside 
  (below) the region covered by waveforms. This is more user-friendly.

F
  change hades.styx.Waveform to display abbreviated value strings when
  the full string wouldn't fit ("cafe..." instead of "cafebabe_x").
  This is often better than leaving the field blank.



28.09.06

N
  more work on the USART 8251 demos.

N
  changed hades.models.stimuli.StimuliParser to recognize the "exec"
  command with an arbitrary (quoted) text command and corresponding
  inner class ExecHandler. The idea is to call argument-less methods
  via Java reflection from the stimuli parser. The current implementation
  is a dummy and just updates the waveform viewer.

F
  change .clblist.txt to include hades.models.string.StringDisplay.clb
  and hades.models.string.StringDisplay2.clb

F
  change makefile appletzip target to include hades/models/string/*clb
  into the main hades-applet.jar.

27.09.06

N
  wrote webdemos/50-rtlib/65-usart/usart-parity.*
  started webdemos/50-rtlib/65-usart/usart-transmit.*

26.09.06

N
  started webdemos/50-rtlib/65-usart/usart.*

25.09.06

N
  Renamed the VT100 webdemo to VT52 for correctness... also added a
  delay-line to the loopback connection to demonstrate the timing,
  and update the webdemos/45-misc/55-terminal/vt52.txt description.

22.09.06

N
  added an option to hades.models.special.SerialTerminal that controls
  whether the GUI window should open automatically when the terminal
  is instantiated. The previous default of always opening the extra
  GUI window is not always optimal... for backwards compatibility,
  the default value is set to true.  The value can be changed via the 
  terminal configuration dialog.

21.09.06

F 
  changed hades.styx.WaveCanvas.mouseMoved to update both the time-label
  and the value-label. This means that simply moving the cursor and watching
  the status line allows to see the current value of a signal, which saves
  a lot of clicking and zooming.

F
  updated hades.styx.WaveCanvas to build-again after the popup-menu
  infrastructure has been removed (commented-out) from most of the 
  hades.styx.* classes.

N
  more work on hades.models.rtlib.memory.USART8251, including much better
  and nicer-formatted status messages.

F
  fix hades.models.string.StringSignal.evaluate to accept one or zero
  driving components; this allows us to use a StringSignal without 
  explicit driver component from a StimuliGenerator. Previously, the
  signal would reject the event because of a "multiple drivers"
  situation (when the real number of drivers was zero).


20.09.06

N
  first test of hades.models.rtlib.memory.USART8251 in the 16X and 64X 
  prescaler modes. Seems to work. Note that 1X is still broken because
  of the extra cycle from RXS_IDLE to RXS_CONFIRM_STARTBIT. 
  Corresponding testcase design files and stimuli files.





B
  need to re-build the JARs and upload the current software version
  (mainly styx update for searching).


14.06.06

F
  changed MakeWebsite.java to generate W3C compliant xhtml; note that
  only  a few html include files (../chapter/topic/applet.txt) are
  fully xhtml compliant yet. But running the applet pages through
  the online validator at http://validator.w3.org should only bring up
  minor things like non-closed <p> instead of <p />.

12.06.06

N
  some experiments to track down the repaint bugs observed in current
  (Graphics2D-enabled) classpath with jamvm.

29.05.06

N
  uploaded the updated tutorial 

N
  added a 'webstart' page to the Hades website, write corresponding docs
  in 'webstart.include' and jnlp file.

N
  updated the 'news' page on the Hades website; mention the new MIPS,
  PIC16F628/PIC16F84, and Femtojava demos.


18-25.05.06

N
  update the Hades tutorial: new showcase entries for switch-level
  simulation and applet website, installation chapter completely
  rewritten, waveform chapter completely rewritten, mention and explain
  Colibri in the components chapter, remove dozens of latex warnings,
  update the 'writing components' chapter to reflect the current API,
  document the 'Assignable' interface, etc.


16.05.06

F
  start updating the waveform viewer chapter of the Hades tutorial.

N
  implement compareEventToSearchObject in WaveStdLogicVector, 
  WaveInteger, and WaveString. Searching for specific values should now
  work on all currently supported waveform data types.

F
  change hades.styx.Transformation.deltaZoom to respect the selected
  zoom-factor (t2-t1) even when (t1<0) or (t2>tend). 


09.05.06

N
  more refactoring in hades.styx.Waveform

F
  rename hades/styx/shortcut-keys.txt to hades/styx/help-keys.txt,
  add hades/styx/help-searching.txt.  Corresponding source code and 
  makefile changes.

04.05.06

N
  new api for hades.styx.Waveform search functions

N
  refactor callback stuff in hades.styx.WaveformViewer, first test
  of new search functions, rewrite zoom stuff.

03.05.06 

N
  start styx overhaul


12.04.06

N
  prepare new mutliplexed-LEDs with 8255 and TinyMips webdemo.

N
  new rtlib classes hades.models.rtlib.io.SelectBitTapBottom and
  SelectBitTapRight (with small bus-tap style symbols). 

F
  Changed several rtlib classes to not display class and instance
  labels outside their bounding boxes, to improve the user experience
  when editing design files that use such components. This should
  be extended to a complete review of the rtlib symbols.

11.04.06

N
  finish the PIO8255 webdemos (including animation and FreeTTS)

10.04.06

F
  fix makefile to include the TinyMips in hades-models-mips.jar

N
  fix webdemos/76-mips to reflect new package/class names.
  First .applet files, and some .txt documentation.

N
  new (but still incomplete) webdemos/50-rtlib/60-pio8255; also
  planned for inclusion in the FreeTTS demos.


08.04.06

N
  more code in hades.models.rtlib.memory.PIO8255

03.04.06

F
  remove wrong (int) casts from hades.models.rtlib.memory.*RAM* 
  evaluate(). We don't want the valid data value -1 to be treated
  as -1L (or XXX).

F
  some refactoring in hades.models.mips.basic; namely cleanups to
  the memory interface stuff.

28.03.06

N
  new package and class hades.models.mips.basic.TinyMips to encapsulate
  the basic (=plain) MIPS R2000/R3000 processor. Wrote the Hades 
  interface and symbol stuff, the memory/gui adapters, and first code
  for evaluate(). Not ready yet.

F
  change hades.gui.MemoryEditorField to not access the underlying 
  memory object directly (via data[] = getDataArray() and data[x]).
  Instead, we use memoryObject.getSize(), memoryObject.getDataAt(),
  and memoryObject.setDataAt() now.

  This change might incur a slight performance hit, but allows use
  to use MemoryEditorField for memories which won't let us access
  their data directly (like the new MIPS32).

27.03.06

N
  new class MIPS32, which implements an interpreter for the MIPS-I
  R2000/R3000 instruction set including coprocessor 0. No pipelining,
  no caches, no TLB (yet), no FPU. Not at all tested yet.

23.03.06

F
  yet another fix to the Tetris for terminals demo: new #ifdef block
  to set the wait-loop limit in vt100_putc(). This makes the demo
  run fast again using the 250kHZ clock. Also some documentation 
  updates. Rebuild the tetris.tar.gz archive to include the newest
  version of sources and .hex file. Added a note to disable the
  watchdog timer (perhaps I should add a CLRWDT to vt100_putc?!).

N
  wrote webdemos chapter overview for the PIC16 demos.

22.03.06

N
  new MIPS 3051 demos: sieve of Eratosthenes (256 and 16K elements),
  Claas' prime-numbers algorithm.

21.03.06

F
  updates throughout the Femtojava webdemos; including newly built
  hades-models-femtojava.jar with all saito classes inside, on-grid
  placement of components in the calculator example, and lots of
  documentation updates.

N
  wrote FreeTTS webdemos overview (chapter.include)

F
  updated the pic16f628 Tetris webdemo again; update sourcecode with
  4MHz/250kHz clock rate selected via macros, recompiled .hex files,
  rebuilt tetris.tar.gz for download. The online applet still runs
  slowly, however.

20.03.06

N
  add "insert word" and "remove word" menu items to hades.gui.
  MemoryEditorFrame.

F
  change hades.gui.MemoryEditorFrame to disable the default keyboard
  bindings for the main memory-canvas JScrollPane - to avoid the extra
  scrolling first reported by Manfred. Testing reveals that 
  setActionMap(null) on the JScrollPane is the only easy technique
  that seems to work.

F
  fix hades.gui.MemoryHexEditorField (and subclasses) to calculate the
  correct viewport bounding box info for cursor-up/down/left/right/home/end.

15.03.06

N
  document bindkeys in (most of) the basic gates webdemos
  (webdemos/10-gates/00-gates/*.txt).

N
  new simulation models: hades.models.imaging.GradientColorFilter,
  Smooth20Filter, Smooth50Filter.

B
  the startup behavior of hades.models.imaging.ImageViewer needs
  to be fixed to not use an initial window size larger than the
  available screen resolution.

09.03.06

F
  changed the tetris webdemo to send "ESC [ ? 2 l" to request VT52 mode
  on VT100 terminals.

F
  implement cursor-on (ESC e) and cursor-off (ESC f) commands in
  hades.models.special.VT2Canvas.

08.03.06

F
  fix hades.models.special.VT52Canvas: use offset 32 for ESC Y l c
  command, use separate line-feed and carriage-return commands.

06.03.06

F
  fix "tetris for terminals" webdemo after testing with the real
  hardware (4MHz clock).

08.02.06

N
  re-wrote the FreeTTS latch demo to better synchronize audio and 
  simulations; also added highlighting of the components.

N
  new simulation component hades.models.meta.Highlighter. 
  A quick-n-dirty (TM) solution, this current calls the editor methods
  highlightComponent(), highlightSignal(), and remove...Markers(), but
  more general highlighting support (like arbitrary polygons) is planned.

06.02.06

N
  started new FreeTTS webdemo 00-intro/15-freetts/latchdemo.hds

N
  some cleanups in FreeTTSWrapper, including zeroing of the freetts
  and voice variables to help the garbage-collector. Memory leakage
  seems to be under control now.

N
  changed hades.models.special.TTS.sym (larger, use FreeTTS label).

F
  renamed freetts-single.jar to freetts-repacked.jar.

N
  new makefile target "signedfreettszip" to create the self-signed
  freetts-repacked-signed.jar required for Webstart+Hades+FreeTTS.

N
  changed the MakeWebsite generator to handle the "webstart-archives=" 
  keyword and to generate extra <jar...> entries for such each jar 
  archive.

F
  new screenshot in webdemos Usage.include to help the user 
  changing the Java pluging memory limit via the -Xmx option.

02.02.06

N
  major rewrite in hades.utils.FreeTTSWrapper with new support for 
  calling into FreeTTS (speak) from a worker thread; this means that
  a simulation keeps running while FreeTTS is busy.

N
  several cleanups in hades.models.meta.TTS.

N
  new FreeTTS webdemo 00-intro/15-freetts/delaydemo.hds

01.02.06

N
  new documentation for the JavaPolicyEditor

N
  makefile support (make policyjar) to build JavaPolicyEditor.jar 
  for website download and webstart.

11.01.06

F
  played some more with findbugs (0.9.4) and started to fix some
  of the warnings. However, once I noticed that only parts of the
  bugs/warnings were listed in the GUI (much less than listed in the
  summary and raw XML bug stats), I became less optimistic about
  the whole process. Also, the moderately few real bugs were hidden
  in a mess of completely useless warnings (e.g. serialVersionUIDs
  vs. real serialization problems). Less useful than I initially
  thought.

  In any case, findbugs revealed that the Serialization support in
  SimObject is not working at all at the moment, because several 
  components refer to non-serializable classes (like SimKernel and 
  subclasses, or FreeTTS, etc.). Note that the Serialization support 
  was part of the original simulation-components-are-Java-beans concept,
  but has never been tested (so far).

  Most of the 'class exposes internal data structure' warnings,
  the second largest type of findbugs messages, are intentional
  and have no easy fix. The same holds for all of the empty
  exception catch blocks that findbugs complains about.


10.01.06

N
  Bumped up the editor version number and date (0.98c, 10.01.06).

N
  new directory /hades/examples/appetizers/ with several basic
  demos copied from the webdemos tree. Changed hades.gui.JEditFrame
  createDemoDesignsMenu() to refer to the new demos. This means
  that even the 'raw' hades.jar now comes with about two dozen
  ready-to-run demos.

F
  Disable the bit-rotten code in EditFrame.createDemoDesignsMenu
  (AWT version); you will need to run Swing and JEditFrame for
  the built-in demos.

N
  usability changes in hades.models.imaging.ImageViewer

N
  documentation update for the PIC16F628-Tetris game webdemo.

04.01.06

N
  new component hades.models.dsp.LevelTrigger - actually copied from
  and rather similar to hades.models.dsp.DoubleToStdLogic1164.

N
  documentation and clb file for hades.models.dsp.Oscilloscope.

N
  implemented hades.models.dsp.Oscilloscope.dumpDataAsText().

N
  new class hades.models.dsp.Delay.

03.01.06

N
  new implementation of hades.signals.SignalDouble.getColor(). The
  previous version, copied verbatim from SignalInteger, would only
  work reasonably for values greater than 1.0, but return the same
  color (blue) for values less than zero and black for values in the
  range [0,1).

  The new version also returns black for zero, but otherwise first
  calculates the logarithm of the absolute signal value, discards
  the integer value, and maps the resulting residue to the ten
  'resistor encoding colors'.

N
  new class hades.models.dsp.Oscilloscope. This is a first version, 
  no documentation yet, and several planned functions still missing.

F
  several (as yet unsuccessful) attempts to fix NPEs and Symbol-
  related problems in hades.models.dsp.Function. If necessary,
  first disconnect Function operators, then edit their parameters,
  save your design file, reload the design file, reconnect the
  operators. Sorry!

28.12.05

F
  updated stop-watch and calculator PIC6F84/PIC16F628 demos 
  (courtesy of R.Ferreira).

23.12.05 

N
  more playing with the PIC16F628 and the picclite compiler;
  including a new "Tetris for Terminals" demo... just connect the
  PIC to an old VT52/VT100 terminal or use Hyperterm etc. on the
  serial port of your PC...  Unfortunately, the compiled code is
  somewhat bloated and a slightly simplified version of the game
  was all that I could make fit into 1K of program memory.

20.12.05

F
  change MakeWebsite to also always auto-copy zip and tar.gz archives
  to the target directories.

N
  add the 'mastermind' webdemo from R.Ferreira to the webdemos/95-pic/
  collection, wrote/updated documentation.

19.12.05

N
  several new webdemos, courtesy of R.Ferreira: Pic16F84 and LCD
  custom-symbols, clock/chronograph, calculator, mastermind-game,
  multiplier-generator, floating-point (4.3) multiplier demo.

15.12.05

I
  more experiments with FreeTTS, preliminary 00-intro/10-freetts/
  webdemo directory.

12.12.05

N
  new classes hades.models.dsp.CounterR (with reset) and CounterWrapAround
  (with reset and limit).

F
  change hades.gui.JEditFrame.createLayersMenu() to set the initial state
  of the checkbox menu items via SetupManager, so that the indicated 
  layer visibility states match the actual states...

11.12.05

F
  fix hades.models.dsp.xxx to extend GenericDspOperator instead of
  plain SimObject or GenericRtlibObject wherever possible.

N
  wrote the .clb files for all operators in hades.models.dsp

N
  more code in hades.models.dsp.GenericDspOperator: first working
  version.

F
  fix horrible blunder of using SimEvent1164.getNewSimEvent for
  non-SimEvent1164 events in hades.models.dsp.*

10.12.05

N
  more code all over package hades.models.dsp, including first stub
  of hades.models.dsp.Oscilloscope.

09.12.05

N
  first version of hades.models.dsp.SimTime and ..Register

N
  more work in hades.models.dsp package


07.12.05

F
  add a note about the 'Brazil' light sequence to 95-dpi/farmroad/

N
  new classes hades.signals.SignalDouble, hades.signals.PortDouble,
  hades.styx.WaveDouble. Changed hades.styx.WaveformViewer to support
  WaveDouble.

06.12.05

I
  experiments to get the Pic16F628 mixed-signal (digital/analog) pins
  working. This seems to require some changes in Signal.canConnect(),
  so that a subclassed signal (like SignalStdLogicVector) can be
  connected to a base class port. There are probably additional issues
  with the editor, namely getting the correct subclassed signal type
  when creating a new signal from the generic port...

N
  moved the Pic16F628 classes to package dpi.pic16f628; new webdemo
  95-dpi/pic16f628-ccp/ to demonstrate the capture/compare module.

05.12.05

N
  new DFF-with-enable webdemo (16-flipflops/20-dff/dff-enable.*).

N
  notes about hazards in RALU, MiniCPU, etc.

02.12.05

N
  wrote chapter.include pages for several webdemos chapters; including
  programmable logic, state-machine demos, MCS4, image-processing, etc.


30.11.05

N
  designed the FSM for the five-floor animated elevator webdemo.

29.11.05

N
  more documentation and updates for the [Sch04] webdemos. Use 74219
  RAMs instead of 74189 (inverted outputs!).

28.11.05

N
  wrote documentation for the [Sch04] Schaltwerke and RALU webdemos

27.11.05

N
  new elevator (2-floor) webdemo, courtesy of Prof. Ferreira

22.11.05

F
  fix hades.models.imaging.ParametrizedFilter.copy() to call setName()
  in order to avoid fatal design corruption (due to original and copy
  using the same name).

N
  new 'farm-road traffic-light' webdemo with animation, courtesy of
  Prof. Ferreira


17.11.05

N
  changed MakeWebsite.java to write 'chapter' pages; whose contents
  is taken from 'chapter.include' when this exists. Corresponding
  changes to the navigation menu and link structure.

16.11.05

F
  changed webdemos/Makefile to explicitly set LANG=de_DE, required
  to get umlauts to work.

N
  changed MakeWebsite.java to write a 'news' page whose contents is 
  taken from webdemos/docs/news.include.

F
  wordsmithing the colibri documentation in webdemos/docs/colibri.include

13.11.05

N
  finished the new 'technische-informatik-online' webdemos, including
  bindkeys for all designs and some initial documentation. 
  However, actual descriptions and tips are probably required for
  the RALU and MiniCPU demos, before these are useful...

08.11.05

F
  fix webdemos stack2.fsm

N
  new webdemos fsm demo mwzk (man-wolf-goat-cabbage problem)

07.11.05

F
  changed hades.models.fsm.FSM.drawFSM() to avoid a division by zero
  at small zoom factors. It seems several other places in drawFSM()  
  should be checked and converted to floating point as well; this is
  only a partial fix.

F
  changed hades.gui.Editor to avoid NPEs in doClose() when closing 
  the same design twice. This can happen when called from MakeWebsite
  and multiple icons have to be auto-generated. Only a quick'n'dirty
  partial fix, similar errors are possible when scripting the editor.

N
  new FSM webdemos with applets and descriptions: counter, counter with
  reset, up/down counter, up/down counter with reset, 
  branch-prediction.

N
  new class hades.models.string.StringDisplay2 with a symbol twice 
  as wide as StringDisplay. (should probably make this configurable,
  but it seems not worth it now). Also regenerated appletzip to
  ensure that the new component is useable for the webdemos.

27.10.05

N
  changed the check for MIN_ZOOM_FACTOR in hades.gui.Trafo2D.set_zoom 
  to allow zoom-factors down to 0.01. 

N
  partial rewrite of hades.manager.CreateThumbnail to support the 
  creation of small icons for the website visual index. This in turn
  required using a new zoom-fit strategy, because the previous 
  implementation did not allow to change the border width nor to ignore
  the rulers. (This was barely noticeable for the larger screenshots
  used on the applet print pages, but made the small80x80 icons look
  very bad).

N
  changed the MakeWebsite generator to write a visual index (thumbnails)
  of all applets, as a help to recognize and find schematics by their
  "look". Corresponding changes to include the visual index page in the
  navigation menus.

26.10.05

N
  updates the webdemos FAQ and usage documents to include a paragraph
  about std_logic_1164 and the glow-mode colors. This should help users
  who skip the introductory applets and later wonder about the meaning
  of the glow-mode colors.

F
  changed the MCS4 intro webdemo to better describe the bus-cycles,
  and fixed the single-step instructions to refer to the correct clock
  period. Also added a direct link to the cpu-museum i4004 page.

24.10.05

N
  second timer-based based version of the 'Swatch' demonstration, and
  complete webdemos example including detailed description.

22.10.05

N
  first on-chip-timer-based version of the 'Swatch' demonstration.

F
  one better error message from hades.models.pic.PicAssembler, again.

21.10.05

F
  fix hades.models.pic.ShowPic2.LoadLabelsListener to generate valid
  filenames. 

F
  changed hades.models.pic.PicAssembler to generate a more meaningful
  'undefined symbol' error message instead of the previous 'number format
  exception' error.

N
  new PIC16 on-chip timer interrupt demonstration added to webdemos,
  namely 72-pic/10-demo84/timer.hds.

20.10.05

N
  started work on the PIC16F84 'Swatch chrono' demonstration. 

19.10.05

F
  better symbols for hades.models.switched.ISwitch and ISwitch2,
  to indicate the normally-open and normally-closed contact pairs.

18.10.05

N
  first code in hades.gui.Editor and hades.gui.EditorInApplet to
  allow switching the user-interface (with objectCanvas and simulator
  control panel) between external window and embedded applet mode.
  This allows to move and resize the schematics editor when necessary.

05.10.05

F
  better symbols for hades.models.switched.Relay<1,2,4> to indicate
  the normally-open and normally-closed contact pairs.

28.09.05

N
  created thumbnails for hades.models.switched.*

F
  fix usage() message in hades.manager.CreateThumbnail

25.09.05

F
  about a dozen Classpath error messages with testcases...

21.09.05

N
  new relay-based (toggle-) flipflop webdemo

15.09.05

N
  new class hades.models.switched.ISwitch2

N
  new symbols for hades.models.switched.TGATE and AnimatedTgate

14.09.05

N
  clb files for hades.models.switched.*

N
  started work on the new switch-level webdemos

N
  new class hades.models.switched.Relay1

13.09.05

N
  new relay4-based full-adder design and webdemo.

F
  fix NPE in hades.signals.SignalStdLogicSwitched.notifySwitchedReceivers,
  which also fixes the 'animation not working' bug.

F
  cleanups in hades.models.switched.Relay2

N
  new class hades.models.switched.Relay4

12.09.05

F
  changed all classes in package hades.models.switched to initialize
  their switched ports to 'W' (weak undefined) during elaborate.
  This allows feed-back driven circuits like the 6T SRAM-cell to be
  used (with 'X' or 'U' initialization, the circuit would stay in
  undefined states forever due to the VHDL resolution function).

N
  new class hades.models.switched.ISwitch, an interactive (mouse-click
  controlled) 'changeover' toggle switch.

N
  new class hades.models.switched.Relay2, a relay with two changeover
  (toggle) switches.

N
  new classes hades.models.switched.NTRAN and PTRAN for n-channel and
  p-channel pass-transistors. These are simplified on-off type models 
  that do not yet handle the weak-transmission characteristics of 
  actual MOS transistors.

N
  new package hades.models.switched, intended to hold all switch-level
  simulation models.

09.09.05

N
  first working version of hades.signals.SignalStdLogicSwitched.

N
  changed hades.models.io.Switch to impelement GenericSwitch.

N
  new interface hades.simulator.GenericSwitch.

08.09.05

F
  fix the major bug in hades.gui.Console and hades.gui.JConsole
  introduced by the recent eclipse-warnings cleanups: we need to
  use getFrame() in hades.gui.Console.setVisible() so that the
  code works for a JConsole, too. Showing the editor/simulator
  messages should work again, now.

F
  remove the braindead getDefaultValue() methods from hades.signals.
  SignalInteger, SignalStdLogic1164, and SignalStdLogicVector.

N
  new class hades.signals.SignalStdLogicSwitched.

F
  make parity constants static in hades.models.special.MidiReceiver
  to fix jikes warnings.

F
  fix hades.models.mcore.McoreALU rotli() to use an intermediate long
  for the evaluation; spotted by jikes.

06.09.05

N
  resume work on basic switch-level circuit (t-gates, etc.) support.

01.09.05

F
  continue with code-fixes as suggested by the jikes and ecj warnings.

31.08.05

F
  code-fixes throughout all packages as suggested by the jikes and ecj
  warnings: remove unused variables, methods, and code-blocks, remove
  deprecated API where possibles, remove unused imports, etc.
  Also found a few minor but annoying bugs while doing this.

23.08.05

F
  changed hades.models.Design.configure() to use the new (nested subdesign
  enabled) DesignManager.getInputStream stuff. This should allow to
  open the first-level of nested subdesigns without further CLASSPATH
  or working-directory settings, but may still fail for multiple-level-
  nested subdesigns. Not tested extensively, yet.

N
  new slowed-down-carry-lookahead-adder webdemo including docs.

N
  new xor-gate variants (single-gate, AND-OR, NAND-NAND, mux-based)
  webdemo including docs.

F
  remove debugging output from jfig.objects.FigAttribs and hades.gui.
  JConsole.

F
  major refactoring in hades.manager.DesignManager. The single big
  getInputStream( Object, String ) method is still the major entry point,
  but its internals are now split into seven much smaller and cleaner
  individual methods, namely:
    getInputStreamFromURL, 
    getInputStreamFromResource,
    getInputStreamForAppletMode,
    getInputStreamForMatlabMode,
    getInputStreamFromAbsoluteFile,
    getInputStreamFromRelativeFile.
    getParentRelativeInputStream.

F
  fully new implementation of DesignManager.getParentRelativeInputStream
  (previously called lookForInputStream). We now first try to convert the
  parent object into a SimObject. If this fails, we fall back to 
  getInputStream(null,pathname).
  
  Otherwise, we retrieve the directory name of the Design object that the
  given parent SimObject belongs to, and use this for the lookup. 
  If the lookup fails, we concatenate the directory name and the given
  pathname and proceed to the next higher hierarchy level, up to top-level.
  This should allow to at least open all webdemos in the Hades editor
  without further CLASSPATH or working-directory games, and it should
  allow to open all webdemos via the webstart editor.
  Further testing required, though.

F
  change hades.models.pic.ShowPic2 to use DesignManager.getDirectoryName()
  instead of DesignManager.getDirectory().

11.08.05

N
  more webdemos/80-mcs4 updates.

F
  fix webdemos/35-selftest/30-lfsr/testbench.hds to not reference the
  unused hades/ke15/mindestens-2-aus-4 subdesign...

10.08.05

N
  completely re-written webpages for 80-mcs4/intro/mcs4.html 
  with the MCS4 overview, introduction, instruction set, and links.
  New explanation for 80-mcs4/add/add, 80-mcs4/add/bcd_add,
  80-mcs4/sub/sub,

F
  fix the webdemos design files in 40-memories/40-ram to refer
  to /hades/models/rtl/empty.rom instead of non-existing default
  rom files. This avoids unneccessary (and failing) webserver
  accesses.

09.08.05

F
  check tams-www error-log information to fix minor glitches
  and broken links throughout the webdemos hierarchy.

F
  changed hades.models.rtl.IDT6116, IDT6164, SN74189 and SN74219
  to initialize their resourcename to /hades/models/rtl/empty.rom.
  Created a dummy file with that name and rebuilt hades.jar and
  the applet ZIPs. This should get us rid of the annoying error
  messages in the webserver logs due to spurious lookups of 
  unused resources like /hades/models/rtl/SN74219.rom.

F
  update webdemos/72-pic/90-mastermind/fast-mastermind-mux.txt
  to refer to the current project page of W.Strobl. Removed
  broken links from the documentation.

05.08.05

F
  several fixes to avoid unnecessary class and resource lookups from
  the Hades webdemos applets. This avoids extra http requests and
  extra error-log entries on our webserver. In detail:

  fix reference to default.mrom in webdemos/65-microjava

  new setupmanager property "Hades.Applet.EnablePyObjectLookup"
  set in hades.gui.EditorInApplet (default is "false") and used in
  hades.gui.JEditFrame before attempting the org.python.PyObject lookup.

  include jfig/images/icon.gif in hades-applet.jar to provide the
  default image for hades.models.imaging.ImageSource

03.08.05

F
  fix the webdemos .applet index-files to reference all required JARs 
  in their archives statements.

F
  fix makefile to rebuild the Microjava simulation models.

F
  added hades-models-dcore.jar to the makefile appletzip: target;
  corresponding updates to the webdemos/60-dcore/t3/*.applet files.

F
  added bindkeys to webdemos/42-programmable/10-pla/pla.hds

02.08.05

N
  changed MakeWebsite to include a hidden 'honeypot' link on the 
  'toc.html' page.

F
  rename hades.models.gates.delaynode.* to hades.models.gates.*.
  This avoids one extra complication in the makefiles and class hierarchy.

F
  fix makefile 'classzip' target to not include: (a) hades/models/
  imaging/.png images, (b) jfig/examples, (c) jfig/fonts.
  This reduces the JAR size from almost 6 MByte to about 4.7 MBytes.

N
  more (so far, futile) attempts to reduce the applet JAR archive size
  while keeping all required functionality.

F
  more 'appletzip' makefile experiments. 

F
  Use JPEG format default images (lena, mandrill, ...) instead of
  PNG format to reduce applet size. The quality of the jpegs is more
  than adequate and saves over 300 KByte of download size.

01.08.05

F
  refactor the makefile 'appletzip' target: build clean versions of the
  hades-models-xxx.jar files with nicely separated dependencies.
  Update the webdemos .applet files, where necessary, to reference all
  required JAR files.

F
  removed old versions (hds_0 .. hds_xx) from the webdemos tree.

F
  update webdemos/00-intro/03-stdlogic/colors.txt 

F
  changed .hadesrc to include jfig.gui.FontCache.loadCMFonts = false
  and jfig.utils.SimpleLatexParser.fontMode = 1 (built-in Lucida fonts).

F
  several jfig/jfig3 changes, including custom arrow-size and per-file
  global comments. Not used in Hades.


28.07.05

N
  update the MCS4 'zaehler' demo: better assembly code, English instead
  of German comments, actually use an 8-digit counter instead of 5-digit,
  better latencies for the smart seven-segment displays, better
  description.

F
  more proofreading and editing in webdemos.

27.07.05

F
  more proofreading and editing in webdemos.

26.07.05

F
  complete re-draw the LFSR (8654) 8-bit register; also added LEDs.

F
  complete re-draw the SN74590 schematics to make the structure explicit.
  Much cleaner now, but still based on an asynchronous counter...

F
  more webdemos proofreading and editing

N
  new text and new logical functions (easier) for the PLA webdemo.

F
  fix Hades makefile to again build the 'appletzip' target, including
  hades-models-imaging.jar

25.07.05

F
  change MakeWebsite to use 'index.html' instead of 'hades.html' everywhere

N
  new multi-input gate demo

F
  more webdemos proofreading and editing

24.07.05

F
  more webdemos proofreading

23.07.05

F
  fix webdemos/00-intro/05-switches/detectors-and-counters to actually
  detect 0-1-edges (instead of invalid U-U-edges). Also used PulseSwitches
  for the reset switches.

22.07.05

N
  finally uploaded and up-linked the Hades webdemos (license still
  missing)

F
  lots of proofreading (webdemos/general and webdemos/00-intro).

F
  edit hades/.clblist.txt to include the TTL-series subdesigns
  (previously, only simobject TTL-components were included).

F 
  updates and docs for the UART (actually RS-232 transmitter) webdemos.
  

21.07.05

F 
  change hades.gui.Editor.doSaveFileAs() to also call design.setResourceName()
  once a valid filename is selected. (This makes the Editor remember the
  selected filename, so that subsequent doFileSave() operations don't
  query for the filename over and over again).

F
  changed DefaultSymbolWidth to 4800 in .hadesrc

N
  preparations for new UART webdemos: shifter, reg8, controller, uart,
  uart-demo.

F
  updated webdemos/docs/colibri.include to document usage and setup of
  the current version of Colibri.
  

20.07.05

N
  New webdemo 'ram-write-tts' as a testbed for text-to-speech
  experimentation. First tests were disappointing due to very bad
  speech quality. Especially annoying is the bad pronounciation of
  typical component and signal names like 'nWriteEnable'.

N
  experiments with FreeTTS text-to-speech synthesis for multimodal 
  interactive simulation... new classes hades.utils.FreeTTSWrapper
  and hades.models.meta.TTS. The latter class wraps FreeTTS as a
  SimObject that also implements Assignable, so that the TTS component
  can be driven by a stimuli-file. Corresponding updates to Stimuli-
  Parser, which now accepts general string objects as arguments for 
  the assignment operator.

N
  new class hades.models.mcs4.i4001MemoryCanvas to display the i4001
  memory contents (hex or disassembled). This removes the dependency
  on hades.models.mcore.DcoreDisassemblerOrHexCanvas and avoids the
  unnatural two-word-instructions stuff there.

  re-instated the paintDisassembled() method from the original MCS4
  sources; seems to work for the small example programs, but not 
  fully tested again.

  Also made hades.models.mcs4.i4001EditorFrame a standalone subclass
  again to remove the unnatural dependency on hades.models.mcore*.

N
  attempt to improve the schematics layout of the MCS4 circuits
  with clearly visible bus and aligned components.
  (webdemos/80-mcs4/add/addX.hds).

F
  remove setDebug(true) call from hades.models.mcs4.i4003

F
  fixed inconsistent port names and symbol names in hades.models.mcs4.
  i4003 (.java .sym). Also fixed the wrong port-ordering.
  The i4003 shifter demo and the MCS4 counter demo now work.

F
  fixed hades.models.mcs4.i4003 to not schedule output events on
  unconnected ports (these resulted in simulator-internal NPEs).

F
  better schematics layout for webdemos/80-mcs4/i4003/i4003-test.hds


19.07.05

N
  changed hades.gui.CreateSignalCommand and AddSegmentToSignalCommand
  to allow right-button mouse-clicks to cancel(). This means that you
  can now instantly cancel the operation after (accidentally) clicking
  on a simobject port and thus starting a create-signal operation.
  Not fully tested yet.
  
N
  new class hades.gui.ColibriCreateSubdesignCommand. This works similar
  to ColibriCreateCommand (for SimObjects) in that the subdesign is
  not automatically placed at the popup-menu position (or the origin
  when initiated via Colibri). Instead, the user has to manually place
  the new subdesign, which ensures a consistent feeling because 
  creating simobjects and subdesigns now behaves the same.

F
  fix hades.manager.HadesTreeCellRenderer.loadIcon() and hades.manager.
  tree.SortedTreeNode.loadIcon() to load the icon via their own classes
  instead of ImageIcon: HadesTreeCellRenderer.class.getResource() and
  SortedTreeNode.class.getResource instead of ImageIcon.class.getResource.
  This seems to fix the problem that the icon were not loaded when
  running in WebStart - probably because WebStarts uses different class
  loaders for ImageIcon (system classes) and Hades (user classes).


18.07.05

F
  make hades.gui.Editor.createSubDesign() public.

F
  update four-input gate CLBs to mention 'magnetic grid' instead of
  'cursor snapping'.

F
  change default font and size to 'Monospaced' '12pt' in hades.manager.
  InfoPanel for much better readability under Linux.

F
  refactor TreePopupMenu

F
  fix makefile to include hades/.clblist.txt in source and class archives

N
  new icons for the empty/invalid FileRootTreeNode.

F
  change hades.manager.Colibri.main to register the first instance
  as the singleton instance, too.

17.07.05

N
  added hades.gui.Editor.doPopupOpenBrowser() method and the corresponding
  popup-menu entry. This means that the user can (finally) open the 
  browser from within the Hades editor.

N
  new inner class hades.manager.Colibri.SetupDialog to display,
  apply, and save the user-directories.

N
  changed hades.manager.TreeManager.registerDirectory() to always 
  add a TreeNode, even for non-existing or empty directories.
  The motivation here is to indicate to the user that up to four
  directories can be specified via the 'Hades.Browser.UserDirectoryX'
  properties (e.g. via SetupDialog).
  We currently use the 'gear' icon, but this should be improved.

N
  Changed hades.manager.tree.FileRootTreeNode to add an 'empty' flag
  with corresponding setter method. The flag decides which icon is
  to be used for tree-cell rendering; this allows the user to sport
  invalid or empty user-directories at a glance (see item above).


16.07.05

F
  changed webdemos/MakeWebsite to also copy '.java.txt' files
  to the destination website directory. This allows us to include
  Java source-code files disguised as .txt in the applet descriptions.
  We don't use '.java' directly because most browsers and webservers
  don't support Java source-code out of the box, and also to avoid
  accidentally copying confidential source-code to the website.

N
  new webdemos/45-misc/50-displays/phrases demo (TextLCD driven
  by ROMs driven by 16-bit counter). The current phrases were taken
  from the Linux 'fortune' database, and the ROM generator program
  source code is included with the applet description.

I
  some experiments to run Hades and Colibri with the just-released
  Classpath-0.17. Much improved, but still not good enough...

15.07.05

F
  new webdemos/makefile target 'printout': this creates Postscript
  files for each applet 'chapter' via html2ps.

F
  changed MakeWebsite.writePrintPage() to insert extra space between
  logo and banner, and to write the logo-banner-row table explicitly
  instead of via jetty - in order to get the html2ps converter to
  recognize the page markup. This means that we can now write a
  more-or-less-acceptable Postscript version of the print pages
  for a full website printout.

14.07.05

N
  new menu structure and callbacks in hades.manager.Colibri.

N
  generated and edited the CLBs for all new image filters in
  hades/models/imaging.

F
  fix wrong path to $HOME/.hades/clblist.txt in hades.models.Colibri;
  also read global and user properties in main().

F
  fix webdemos/50-rtlib/90-prima/prima-fact.hds to reference the
  rom file via relative name.

13.07.05

N
  new class hades.manager.Colibri as a major re-factoring of the
  existing BrowserFrame. We now handle the builtin-CLBs via
  resource:// protocol, any classpath and extension directory CLBs,
  and (currently four) different user directories.
  Parsing the different locations and showing the tree works;
  menu structure and event handlers still need overhaul.

N
  new interface hades.manager.Browser as an abstraction between
  the SortedTreeNodes and the Browser.

11.07.05

F
  change MakeWebsite to left-align the applet banners

F
  fix typos throughout the webdemos hierarchy

N
  wrote webdemos/docs/colibri.include and cosimulation.include

N
  Berlin-Uhr demo
  

09.07.05

F
  some webdemos docs updates and error corrections

08.07.05

F
  changed hades.styx.WaveformViewer.about() to use a JOptionPane.

F
  make debug output in hades.styx.WaveformViewer conditional on
  new debug flag.

N
  add options to create/remove probes and to show/hide the waveform-
  viewer to the viewmode popup-menu.

F
  fix hades.gui.DeleteProbeFromSignalCommand to use findNearestWireSegment
  instead of findSymbolOrSignal (previously, it would find components and
  probe-symbols instead of the wiresegment for some mouse positions).

F
  fix hades.gui.AddProbeToSignalCommand to use findNearestWireSegment,
  and to check for and avoid adding multiple probes to a signal.

F
  fix webdemos/hades.css (remove 'active' for plain text)

N
  wrote webdemos/docs/jython.include

F
  re-enabled the Jython console (hades.gui.JythonConsole). 
  We now use reflection to construct the console, so that the editor
  can be used and compiled with or without Jython installed.


07.07.05

N
  major webpage overhaul: new welcome/gatelevel/rtlib/styx pages
  and updates to many other webpages. Lots of new screenshots and
  thumbnails; new website directory hierarchy setup.

05.07.05

F
  change the sobel-filter demonstration applet to use add instead
  of OR filters to combine the several edge-detection filters.

N
  implement the scstack(-auto) single-cycle clocked stack demos.

N
  wrote the 2-address and 3-address datapath demo docs.

N
  jtag-demo.fsm state-machine

F
  update the schematics for all PIC applet demos (72-pic/*/*.hds).


03.07.05

N
  new applet demos: byte-vs-word-address, user-defined ALU,
  accumulator-datapath.

N
  some work towards the JTAG (1149.1) demo applets.


01.07.05

N
  micropipeline demo stuff.

F 
  more bindkeys added to webdemos/00-intro/00-welcome/*.hds

F
  fix MakeWebsite to use the generated impressum.html for all
  impressum links.

F
  deactivate the 'open external window' and 'close external window'
  popup menu items from hades/gui/ViewModePopupMenu.txt.
  Most applet demos work fine with the current 690x500 pixel size
  anyway, and the users can always run the demos via webstart, 
  if they really need a full-screen editor.

30.06.05

F
  update hades.css and MakeWebsite.java to generate Mozilla and MSIE
  compatible HTML. We now specify the default height of the 'empty'
  rows in the standard webpage layout, and use text-style: nowrap
  for the navigation menus.
  
F
  use generated 'forbidden' pages instead of redirect pages (which
  don't work reliably in MSIE).

F
  use a border in hades.gui.EditorInApplet around the ObjectCanvas.
  This means we can get rid of the extra table used to provide a
  border around the applets in the applet pages.


29.06.05

F
  write useful xxx.applet entries and add short descriptions for
  all of the D*CORE demonstration applets. Note that the processor
  applet still comes up with empty microcode...

F
  fix hades.models.ttl74.SN74219 and SN74189 to accept 'XX' as
  values in parse() instead of exiting the parse method due to
  a NumberFormatException. FIXME: the code is currently duplicated;
  should be refactored into a common base class.

F
  changed jfig.gui.ImageHelper (jfig2!) to try a BufferedImage
  in ImageHelper.createImage. This fixes the icon bugs in hades.styx.
  WaveformViewer and hades.models.special.TextLCDCanvas.
  

27.06.05

N
  added several ACTEL ACT1 logic cell demos (now ACTEL MX family).


26.06.05

N
  new RTLIB demos and some docs: rom, ram, dpram

F
  fix IpinVector to actually save the selected number-format... a really
  bad case of geistige Umnachtung :-(

25.06.05

F
  fix IpinVector to actually use the selected number-format, instead
  of just reading it.

N
  new RTLIB demos: expand, merge-subset, bustap, latch, reg, ...

F
  updated several RTLIB component symbols (Mux21, Latch, LatchR, Reg,
  RegR, ...)


24.06.05

N
  first new RTLIB demos, including documentation: ipinvector, config,
  incr, add, sub, shift, rotate, logic, logic-word, compare.

23.06.05

F
  avoid multiple setSize-calls in hades.styx.WaveformViewer; 
  this should fix the extra Swing initialization delay encountered
  on Linux+X11+ctwm (and probably other window managers).

F
  fix NPE in hades.models.imaging.ImageViewer on mousePressed 
  with null image.

N
  new class hades.models.imaging.TriggeredFilter.

N
  change hades.models.imaging.ImageSource to implement assign().

N
  screenshots and docs for webdemos/misc/display/text-lcd.

22.06.05

N
  make tams-www.informatik.uni-hamburg.de/applets/hades/index.html 
  a redirection page to hades/html/index.html. The 'page-has-moved'
  page is now superfluous.

N
  refactoring in MakeWebsite.java; also write license/impressum/
  about pages and reference them via the 'usage row' from all 
  applet pages.

N
  new stub webpages for the display (ascii,matrix,muxed,text-lcd,...)
  applets.

N
  added the SN74590 counter demo applet and description.

21.06.05

N
  added documentation for the Microjava demo applet.

F
  fix the PRIMA demo applet docs.

19.06.05

F
  better layout of the 74181 circuit applet; including larger function
  table (readable at default zoom now, at least on large monitors).

N
  more applet demos documentation

16.06.05

F
  fix RAM structure and RAM latch demos to use the new BitlineBuffer
  instead of BufferSmall (which cannot be used anymore since the 10.06
  change).

N
  add 'writeAboutPage', 'writeFeedbackPage', and 'checkCreateRedirectPage'
  stuff to MakeWebsite.

N
  reorganized the 'intro' and 'std_logic_1164' applet demos; we now
  have a separate 'tool tips' applet and a 'basic gates' applet right
  after the 'switches' applet. The 'resolution function' and 'bus'
  stuff moved to the end of the chapter.

F 
  use null/empty tool-tips in hades.gui.JObjectCanvas, when the mouse
  position is over 'empty' space... also use a plain JToolTip instead
  of a custom JMultilineToolTip in this case.

F
  re-write Usage.include and FAQ.include, add browser compatibility
  table.

15.06.05

I
  Travemnde :-)

10.06.05

F
  changes hades.models.imaging.ImageSignal.getToolTip() to only
  print image class name and image size.

F
  added hades.models.StdLogic1164.BUF_TABLE and setToBuffered().

F
  changes hades.models.gates.Buffer to use setToBuffered() instead
  of setToCopy(). This means that a Buffer now generates 'X' for
  'Z' and 'W' inputs insteads of 'Z' and 'W'.

09.06.04

F
  many fixes and improvements (designs, descriptions, headers) 
  throughout the webdemos hierarchy.

05.06.05

N
  new class hades.symbols.TinyPortSymbol to be used for DelayNode.

N
  more webdemos updates, including webdemos/12-delay.


04.06.05

N
  updates (including Ipin bindkeys and corresponding symbols) to
  most designs files in webdemos/00-intro and webdemos/10-gates.

03.06.05

N
  several updates for hades.models.imaging.ImageViewer.

N
  removed the Frame stuff from hades.models.imaging.ImageSource;
  configure() now opens a standard property-sheet, mouse-clicking
  the standard file dialog (or the demo images dialog for applets).

N
  improved symbol files for all hades.models.imaging filters, added
  circles as visual indication for 'click' functions to ImageSource
  and ImageViewer.

02.06.05

N
  add bindkey, tooltip, propertysheet, and startIndex support to 
  hades.models.io.HexSwitch.

F
  fix hades.gui.JPropertySheet to avoid internal NPEs when some
  bean-pattern accessor methods don't exist.

N
  add bindkey support to hades.models.io.PowerOnReset, PulseSwitch,
  and ClockGen (with changed default behaviour of ClockGen).

F 
  updated hades.models.io.Ipin to use the new bindkey architecture

N
  utility method hades.utils.NameMangler.getBindkey(SimObject,String)

F
  changed hades.gui.KeyHandler to don't use 'backspace' (or control-h)
  as a bindkey for DeleteObjectCommand. This fixes the annoying
  typing control-H for change-grid-mode-alse-deletes-components-bug.

31.05.05

N
  support double-valued parameters in ParametrizedFilter (d0..d9).

N
  new hades.models.imaging.GridFilter, AffineTransformFilter

N
  make RotationFilter and GammaFilter uses double-values instead
  of scaled integers.

N
  add a menu-bar to hades.models.imaging.ImageViewer; implement
  doSaveAs (PNG and JPEG formats).

30.05.05

N
  new image filters: RandomFilter, ConstantColorFilter, CatHFilter,
  CatVFilter, chessboard demo.

F
  refactored TwoInputFilter to be a subclass of ParametrizedFilter.

F
  try to suppress multiple filter() calls from evaluate() in 
  hades.models.imaging.TwoInputFilter.
 


28.05.05

N
  changed hades.models.imaging.ImageSource to allow selection of a few
  sample images (lena, peppers, mandrill, etc) when file access is
  denied due to security settings.

N
  add the mult-add based chroma-keying to the webdemos applet list.

B
  for some reason, Java-plugin 1.4.2_b28 ALWAYS deadlocks in the applet
  version for the image-processing demos right now. Unknown reason;
  possibly a Swing thread-issue (inside Swing itself)...
  Java 1.5.0 works better (but looks ugly).

27.05.05

F
  changed hades.models.imaging.ImageSource to show a JOptionPane warning 
  message in case of SecurityExceptions in selectFile().

N
  new clases in hades.models.imaging: ThresholdFilter, InsideRangeFilter.
  Also fixed CropFilter and changed ImageSource to always return a
  BufferedImage (instead of a plain Image).

20.05.05

F
  after failing to find the annoying memory leak (when loading multiple
  files into either a single editor or multiple editors), I decided to
  add explicit 'tearDown' methods to hades.models.Design and 
  hades.signals.Signals*.


14.12.04

F
  fixed hades.gui.Editor.createObjectCanvas() to actually respect the
  'Hades.Editor.MagneticGrid' SetupManager property. The default 
  .hadesrc file now includes 'Hades.Editor.MagneticGrid' '1/8'  
  which makes the Editor behave like before. However, using '1/4'
  is now possible.

N
  new class hades.gui.T1Editor, customized for our WS'2004 T1 lecture 
  and exercises. It first reads the standard hades/.hadesrc file,
  then the additional hades/.hadesrc.ws2004 file which changes a few
  important properties: popup-menu /hades/gui/PopupMenuWS2004.txt,
  tool tips off, medium magnetic grid (1/4 inch), ...

11.03.04

N
  LogManager and LogPlaybackManager seem to work now - at least for
  the small tests that we tried so far. Unless you set the SetupManager
  property  "hades.gui.LogManager.enable"  to false, logging will be
  enabled by default. Just use Hades as usual, and the command log
  will be written to your .hades directory.

  Afterwards, use java hades.utils.LogPlaybackManager <logfile> 
  and wait until the GUI is up. Select the number of commands (=lines)
  to play back and the extra-delay between commands. To play back
  everything, use "steps=100000" and "delay=10". For interactive 
  mode use "delay=1000" or similar.

  Note that LogManager only logs the low-level events (mousePressed,
  mouseReleased, mouseMoved, keyPressed, keyTyped) on the ObjectCanvas,
  as well as the __call() method in hades.gui.Editor - which catches
  all ActionEvents from the editor's menu and the popup-menu.
  However, 'semantic' events generated by dialog windows etc. are
  not currently logged.

  Don't hesitate to provide logs when reporting bugs :-)  This will
  hopefully allow us to reproduce some of the nasty critters.
  

10.03.04

F
  new approach to LogManager: record mouse events in JObjectCanvas,
  not in Editor. Record mouse position for key events.


09.03.04

F
  fixed hades.models.mcs.i4001Decoder to not access the memory contents
  when a (invalid) two-word instruction is found at the last memory
  address. For example, the seven-segment decoder table used in our
  multiplexed-seven-segment-display demonstration triggers this situation.

08.03.04

F
  implemented most of LogPlaybackManager, several corresponding changes
  to hades.gui.LogManager. Also needed to add the setPopupPosition()
  method to hades.gui.ObjectCanvas, AWTObjectCanvas, and JObjectCanvas.


05.03.04

N
  new class hades.utils.LogPlaybackManager.


04.03.04

N
  new class hades.gui.LogManager; beginning to add corresponding calls
  to hades.gui.Editor and the editor command classes...

I
  some changes in jfig.objects and jfig.utils including a few new classes
  in hades.symbols baseclasses. Recompiling might be necessary.

19.02.04

N
  added recent-files support (Swing version only). The file list
  is kept in <user.home>/.hades/recent-files.txt

09.02.04

F
  changed the behaviour of the several RTLIB random access memory
  components to actually invalidate the memory contents when the
  data/address input are undefined during a write cycle...

18.12.03

N 
  changed MakeWebsite to include a static preview image in each
  applet page. Also, created 400x280 pixel preview images using
  CreateThumbnail. It is now possible to read the applet pages
  with Java turned off, too. Also, printing the pages results in
  readable output...

N
  changed hades.manager.CreateThumbnail to read a list of target
  filenames from an index file. Each line is expected to have the
  <width> <height> <type> <filename> 
  specifications, e.g. "200 140 -obj hades/models/io/ClockGen.class"
  to create a 200x140 pixel hades/models/io/ClockGen.gif output file.

F
  added missing symbol for hades.models.gates.Or6, several minor
  fixes in the symbol files for hades.models.gatter.*

F
  some beautifying of the symbols in hades.models.flipflops 

17.12.03

N
  wrote missing CLBs for all simulation models in dcf77, flipflops,
  gates, gatter, io, meta, rtl, rtlib/*, special. Also created the
  missing GIF thumbnails for use with the library browser.

15.12.03

I
  how to find Java classes without CLB file: 

  cd ~/java/hades
  find models | grep "\.java" | sort -u >> /tmp/hades-sources.txt
  find models | grep "\.clb" | sort -u  >> /tmp/hades-clbs.txt
  sed -e"s/.clb/.java/" /tmp/hades-clbs.txt > /tmp/hades-clbjava.txt
  diff -b /tmp/hades-sources.txt /tmp/hades-clbjava.txt

  Obviously, this list also includes files that have no CLB because
  they are not SimObjects (like most of the models.mips classes).


03.12.03

F
  changed hades.models.mcs4.i4004 and AbstractIntel4000 to support
  clock periods other than the default period of 1.35E-6 seconds.
  Note that (due to the internal implementation) of i4004, it is
  not sufficient to just drive the component with the corresponding
  two-phase clock signal. It is also required to tell the i4004 
  about the clock period via its (second) initialization parameter.
  As the corresponding setting is not included in the i4004's 
  PropertySheet, you HAVE TO EDIT the .hds design file and add the
  timing parameter manually (iff the clock period is not 1.35E-6 secs).

F
  fixed the initialization code of hades.models.mcs.i4001 to first
  create the i4001Decoder and only then the InternalRom. Previously,
  the wrong initialization sequence would break the disassembly view
  in the memory editor.

N
  included applet demonstrations for the MCS4/i4004 system
  in the Hades applet collection. Simulation models, documentation,
  and HTML sources written by Andreas Ruge.


28.11.03

F
  major (MAJOR) cleanup in all jfig and Hades packages and classes,
  due to Eclipse complaining a lot about unused imports, unused code,
  deprecated methods, etc.  

  At the moment, only one deprecated method call remains, because
  we want to keep JDK 1.1 compatibility.

12.11.03

N
  new class hades.models.ttl74.SN74219 (16x4 bit RAM)

F
  changed hades.models.ttl74.SN74189 to actually use the inverted
  outputs. For non-inverted outputs use SN74219 instead.

22.08.03

N
  new class hades.utils.MatlabAdapter for Matlab (5.3SE) interfacing

F
  changed the hades.gui.Editor constructor to check for the availability
  of the collections framework (java.util.LinkedList) and to reset
  "Hades.UseSwingGUI" to false if necessary. This lets us start the
  editor on the Microsoft VM again.


07.08.03

N
  integrated SelectURLDialog into DesignManager (with the select file
  option still disabled, though).

06.08.03

N
  support for SelectURLDialog in GUIFactory, corresponding subclasses
  AWTSelectURLDialog and JSelectURLDialog. 


F
  added menu item and callback for clearDecoderLabels() to
  hades.models.mcore.DcoreDisassemblerEditorFrame

F
  several fixes including the new GUI in hades.models.mcs4

05.08.03

N
  new (hierarchical) image viewer working

01.08.03

N
  re-implementation of hades.models.imaging.ImageViewer with many
  improvements (new GUI with position and RGB value display, 
  deferred GUI initialization, new JImageCanvas, ...)
  Still, calling (J)Frame.validate() is extremely slow on Linux.

31.07.03

N
  new base image filter class, hades.models.imaging.ParametrizedFilter,
  with support for up to eight integer parameters in the property sheet
  and I/O operations. New derived classes OffsetFilter, ResizeFilter,
  CropFilter, ImageWriter (only PPM format supported so far).

F
  fixed hades.models.imaging.ImageSource to remember the user-selected
  filename (and directory).


30.07.03

N
  new hades.models.imaging classes LookupFilter, InvertLookupFilter,
  OffsetFilter.

N
  renamed the archives directory to archive (also on tams-www).

29.07.03

N
  Hades K1707 Kurzanleitung updates



23.07.03

N
  working BCD-to-Sevensegment decoder program for the MCS4

N
  support DATA (.data) directive in MCS4Assembler, allowing
  to write ROM-based data tables.

22.07.03

N
  moved the new Image loading code (see below) from hades.models.
  imaging.ImageSource into hades.manager.DesignManager. This means
  that we finally have a method to find and load Images in one 
  central place. Note that the getImage() method will time-out after
  10 secs., returning as much of the image data as has been read.
  Corresponding update to ImageSource.

F
  some experiments to use asynchronous file system scan in BrowserFrame,
  including a DefaultTreeModel.reload() once the scan is ready.

18.07.03

N
  changed the Image loading code in hades.models.imaging.ImageSource
  to not rely on jfig.gui.ImageHelper (which has problems when accessing
  URLs). Instead we use the hard way with the following steps: getting
  an InputStream from DesignManager, preloading the Image data into
  a ByteArrayOutputStream for reliable buffering, then using Toolkit.
  createImage() to load the Image data, calling Toolkit.prepareImage()
  to start building a renderable Image, using a wait loop and Toolkit.
  checkImage() to wait until the AWT is ready. ARRGGGHHH. However, the
  image processing demos should now work both in the editor and the applet!
  
  Please let me know if the Java API has a better (and working) way
  to load Images... We cannot use ImageIO because this is still somewhat
  rare on client machines. 

F
  some minor updates (wording, fixed types, etc.) in webdemos/00-intro/
  00-welcome 

17.07.03

N
  added "Open URL..." menu time to JEditFrame and a callback doOpenURL()
  to hades.gui.Editor. Not fully functional yet, however, because the
  actual implementation via DesignManager relies on an AWT dialog 
  which misses keystrokes...

F
  re-enabled call to notifyReadListeners in hades.models.rtl.ROM_1Kx8.
  scheduleOutputs(), in order to get the read-highlighting working
  again in the memory editor. For some as-yet-unclear reason, the
  call was commented out in ROM_1Kx8.java

N
  new accelerator keys bindings in JEditFrame, namely:
  "F5": redraw (as before)
  "F6": show all layers
  "F7": show no layers
  "control G":  medium grid
  "control H":  no grid (as before)
  "control T":  toggle enable tooltips

F
  better status messages from hades.gui.CreateSignalCommand and
  hades.gui.AddSegmentToSignalCommand

F
  fix hades.manager.DesignManager.getInputStream() to actually use
  the pathname of a valid URL instead of the un-initialized tmpname ...

16.07.03

N
  new webdemos applet and text for the basic SRAM structure, similar
  to the RAM organization used in the Tanenbaum book.

N
  new class hades.models.gates.WeakBuffer (required for the SRAM demo)

F
  minor update in hades.gui.JObjectCanvas to get tooltips working 
  with the IBM JDK 1.4.0. We now ensure that the tooltip text is null
  whenever the tooltips enable flag is set to false. (it remains
  to be seen whether this introduces NPEs in other JVMs...)
  

15.07.03

N
  updated TTL 74189 SRAM demo, new CMOS 6116 SRAM demo and description

N
  new Hades webdemo for generic (4x4 bit) RAM, not finished yet
  

F
  fixed 2-pass address patching in MCS4Assembler; new test program
  i4004-sevensegment.asm to test wait loops, conditional jumps,
  serial communication to i4003 output expander.

14.07.03

N
  new class (hades.models.mcs4.) MCS4Assembler; a simple 2-pass
  assembler for the Intel i4004 / MCS4 architecture.

N 
  new webdemos applet pages for the 74189 and 6116 SRAM models;
  also preparations for a RAM structural demonstration.

11.07.03

F
  minor fixes in hades.models.mcs4.i4003 (output port names and ordering)

F
  implement hades.gui.JExportOptionsAdapter.doAutoSave() and 
  getFilename() - the simple way. Currently, we always return the
  hardcoded file name "hades-tmp.fig" for the intermediate FIG file
  and rely on the user to clean up this file...

10.07.03

N 
  new class hierarchy to support interfacing to jfig.gui.Export-
  OptionsDialog and JExportOptionsDialog, consisting of new
  interface hades.gui.ExportOptionsDialog, corresponding methods
  in GUIFactory, AWTFactory, SwingFactory.

N
  new adapter class hades.gui.JExportOptionsAdapter that implements
  the necessary functions to interface hades.gui.Editor (Swing mode)
  to jfig.gui.JExportOptionsDialog - which supports both fig2dev
  export and native image conversion to PPM and GIF format.
  Also re-activated the corresponding menu-items in JEditFrame.

F
  changed jfig.gui.JExportOptionsDialog.doAutoSave() to check and call
  its editor's doAutoSave() method, if that exists. This implies that
  jfig remains otherwise unchanged, but Hades gets the necessary 
  callback hook to save the current design to FIG format before calling
  the fig2dev utility.

B
  the AWT version of the export-stuff is not yet implemented.

09.07.03

N
  new interface hades.models.memory.InstructionDecoder as a placeholder
  to implement instruction / data decoders and disassemblers()
  for memory simulation models (DcoreRAM, i4001, MicroJava, ...)
  Corresponding changes in hades.models.mcore.DcoreRAM and
  hades.models.rtlib.memory.GenericMemory.

F
  fixes in hades.models.mcs4.* and the example i400*hds files.

08.07.03

N
  fixes and updates in models.mcs4.* 

F
  more work to get DesignManager working with relative file and
  resource names

N
  preliminary Webstart download page and code for our T1/T3
  lab courses (tams-www.informatik.uni-hamburg.de/applets/hades/
  t1-t3-praktikum/).

03.07.03

F
  changed webdemos/MakeWebsite to support multiple extra-JARs
  per applet (use comma-separated filenames in the archive= tag).

F
  removed the unused getSymbolResourceName() methods from the 
  hades.models.microjava classes. As a result, the microjava
  demonstration now runs as an applet.

N
  some more webdemos applet descriptions, 
  e.g. webdemos/50-rtlib/10-components/next-pc.txt.

02.07.03

N
  use hades.gui.JythonConsole (Swing version) instead of JPShell
  in hades.gui.Editor, EditFrame, and JEditFrame. Also check
  whether PyObject is available to decide whether to enable the
  "Jython Console" menu item in JEditFrame.

N
  Swing version of the waveform viewer classes, hades.styx.XXX.
  This in turn required to remove a lot of getGraphics() calls.
  Also changed the format of the waveform dumps to include the
  full name of a signal. The readObject() method should handle
  the case of old waveform dump files, but this is hard to guarantee,
  because I have no old waveform dumps left...

01.07.03

F
  remove obsolete class hades.utils.PrintManager; use jfig.gui.
  PrintManager instead, which also restores Java2D compatibility.

N
  new JK-flipflop applet demonstration using the AND-OR-DFF structure.

30.06.03

N
  improved list of default-classes in hades.utils.MakeJarFromClassList
  and "-editor" switch, allowing to create a standalone editor with
  full editing, viewing, an waveform viewer functionality but custom
  simulation model libraries. A first check with the FU Hagen KE15
  gate-level libraries resulted in approx 1MB file size for the
  complete JAR:

  Still not fully functional, however (e.g. export dialog and help
  menu callbacks still missing).

N
  new classes hades.models.gatter.Buffer, Nand4, Nor4, Tri.
  Also fixed wrong comments inside the hades.models.gatter.XXX
  Java source files.

F
  changed all references to the "Hades.UseSwingGUI" property to expect
  or use a default value of "true" 

27.06.03

N
  several improvements in hades.utils.TestLoadAllDesigns()

20.06.03

F
  new (thread-safe and Swing compliant) deferred redraw algorithm
  in hades.gui.JConsole; albeit, the new version relies on LinkedList
  and will not be JDK1.1 compatible any longer...

F
  changed repaint-logic in hades.gui.JSimControlPanel.SimTimePanel to
  avoid calling timeLabel.setText() from the paint() method itself ...

05.06.03

F
  some tweaks in MakeWebsite to ensure fully XHTML-1.0 compatible
  web pages. Seems to work now for the individual applet pages,
  as long as all included files are compatible, too.
  Also quote all applet parameters.
  One minor problem in toc.html with zero-sized chapters resulting
  in empty <ul></ul> lists.

04.06.03

B
  changed hades.gui.Editor.doCloseDesign() to also call SymbolManager.
  flushSymbolCache(). This should fix the annoying memory leak when
  loading many Hades design files; but it also adds a new bug because
  SymbolManager is currently not thread-safe: closing one design while
  parsing another may (but need not) result in corruption or uncaught
  exceptions. The risk is very small, however, because the doCloseDesign
  and doParseDesign operations are usually run in the single Swing
  event handler thread.

N
  new startup script for JSwat; first Swing-GUI based debugging sessions.
  The major memory leak observed when loading many designs is due
  to SymbolManager caching (Design@resourcename,Symbol_withParentSet),
  which means that it stores a reference to all previously loaded 
  subdesigns. The simplest workaround is to flush the symbolcache when
  loading a new design into the editor...
  Also, the hades.gui.JObjectCanvas.repaintArray seems to get messed up
  sometimes, storing references to FigObjects from old designs that
  have long since replaced by other designs. Reason is unclear, probably
  a race condition.

F
  fixed jfig.gui.ImageHelper.findResourceImage and hades.models.imaging.
  ImageSource to check for non-null but invalid (size -1 x -1) images;
  ImageHelper will also replace the invalid image with a null image.

F
  changed the resource names for the simple image processing applet 
  demos to a http-URL, namely tams-www/applets/images/lena_color256.jpg.
  This finally allows us to load the image processing demos.

03.06.03

N
  added the "GAL demonstration" applet to the webdemos tree, 
  including the explanatory texts for the GAL output cell, simple and
  more complex combinatorical functions, counter and traffic light
  FSMs.

01.06.03

N
  changed hades.models.imaging.ImageSource to use synchronous
  imaging loading via MediaTracker. This fixes the NPEs resulting
  from trying to process not-yet-completely-loaded images with
  the image filters...

F
  changed hades.models.imaging.ConvolutionFilter to avoid the super-
  fluous cloning of the input image. Instead, we use SimpleFilter.
  getBufferedImage() to ensure that we really have a buffered image,
  then use this directly as input to the ConvolveOp.

30.05.03

N
  more updates to MakeWebsite.java, including support for
  appletBannerStrings[] and integrated banner generator.
  Also checks for existing "appletname.hadesrc" and generates
  applet.getParameter() calls to update SetupManager.
  (Seems to work for the StimuliGenerator applet now!).

N
  changed hades.gui.EditorInApplet to make the additional hadesrc
  getParamter() call actually work in JDK 1.4.1: it seems that Sun
  has mixed up the definition of getCodeBase() and getDocumentBase()
  between implementation and JDK docs...

B
  here are three reasons for memory-leaks observed when opening many
  design files in one editor or using many editors (as in the applet
  case):  SymbolManager caches symbols, which in turn reference editors,
  UndoStack references commands which reference editors, and 
  SimObjectXXX cache simobjects, which reference simulators and editors.
  Note that the latter case is hard to fix in a multiple-simulator
  setup...

28.05.03

N
  many improvements in MakeWebsite: copying readme.txt, faq.txt,
  *.sti, *.sti.txt files now; complies with new TAMS layout,
  better formatting including minimum height to avoid mini pages,
  also fixed several typos in the webdemos/ applet files.

27.05.03

F
  changed hades.models.stimuli.StimuliParser to catch Throwable
  everywhere, which also allows us to handle thingks like ClassNot-
  FoundError for applet environments...

N
  added a first StimuliGenerator demonstration to the webdemos
  collection; corresponding makefile change to create the required
  hades-models-stimuli.jar archive file.

N
  added the FSK modulator and FSK modem circuits from the original
  B-Tutorium (by J.Bitterling and L.Larsson) to the webdemos 
  collection.

N
  updated MakeWebsite to include readme.txt and .sti.txt files.

F
  minor changes in hades.models.pic.ShowPic2, in order to get the
  GUI running on JDK1.1/MS jview/Swing 1.1.1 again. Currently,
  this means that the breakpoints window is not useable (because
  it relies on ArrayList now), but otherwise the GUI should work.
  Also, looks much better than the older AWT version.

F
  changed hades.gui.MemoryHexEditorField and MemoryEditorFrame to
  be compatible with JDK1.1/MS jview/Swing 1.1.1 again. This meant
  to get rid of the low-level AWTEventListener used to process the
  Tab-key navigation, but otherwise required only minor changes.

16.05.03

N
  changed hades.manager.TreePopupMenu to use Swing instead of AWT

F
  fixed hades.gui.MemoryEditorFrame.initMemoryWithRandomValues()
  to use a long mask (instead of int) which means that the function
  should now work with n_bits_per_word >= 32 ...

F
  re-implementation of hades.models.rtlib.memory.MRCanvas.paintAllData()
  to check Graphics.clipBounds() to only repaint the visible region.

F
  re-implementation of hades.models.mcore.DcoreDisassemblerOrHexCanvas.
  paintDisassembled() that uses Graphics.clipBounds() to only repaint
  the visible region of the memory.

14.05.03

F
  removed unused classes hades.models.pic.BitButton, MemoryDisView,
  and ShowDisList. These are replaced in the current GUI by
  MemoryDisassemblerView and ShowDisassemblerCanvas.


N
  Swing versions of hades.models.special.VT52Canvas,
  hades.models.special.ParallelTerminal, 
  hades.models.special.SerialTerminal.

13.05.03

F
  changed the Memory.setDataAt() method in all memory classes
  to mask out the unused (out-of-range) bits when writing.
  However, the memory still allows the value -1 (UNDEFINED, XXX)
  to be written. Changes in:
  hades.models.rtl.ROM_1Kx8 and subclasses
  hades.models.rtl.RAM_256x8 and subclasses
  hades.models.rtl.IDT6116 and subclasses
  hades.models.ttl74.SN74189
 

F
  changed hades.models.rtlib.memory.GenericMemory.setDataAt()
  to mask-out the upper (out-of-range) bits when writing.
  However, the memory still allows the value -1 (UNDEFINED, XXX)
  to be written.
  For example, all write operations to an 8-bit wide memory would
  be masked with 0x00FF.

12.05.03

F
  removed (currently un-implemented) "Help->Show Tip of the Day" menu 
  item from hades.gui.JEditFrame.

N
  new class hades.models.flipflops.Srff; changed SrffRtlib to derive
  from Srff.

N 
  rewrote hades.models.special.<Edge/Value/Hazard>Trigger to use 
  Swing GUI components.

N
  rewrote hades.models.special.Counter to use Swing GUI components.



10.05.03

N
  rewrote the GUI code in hades.utils.AudioPlayer and hades.models.
  meta.AudioPlayer to use Swing instead of AWT. Seems to work.

N
  rewrote the GUI code in hades.models.imaging.ImageViewer to use
  Swing components instead of AWT. Unfortunately, the resize options
  do not work reliably yet - sometimes, the ImageViewer resizing and
  repainting is very slow.

N
  new class hades.models.imaging.ConvolutionFilter which uses the
  java.awt.image.ConvolutionOp API from JDK 1.3+. Interestingly,
  the current Gaussian blur filter is almost ten times faster than
  the previous implementation in hades.models.imaging.GaussFilter

N
  rewrote the simple image filters in hades.models.imaging to
  use a synchronous behaviour built around BufferedImage, including:
  RedFilter, GreenFilter, BlueFilter, GrayFilter, InvertFilter

N
  changed hades.models.imaging.SimpleFilter to use a "synchronous"
  API instead of using ImageProducer/ImageConsumer. Also added 
  a few utility methods, e.g. getBufferedImage() and getClone().

09.05.03

B
  DcoreDisassemblerOrHexCanvas throws Exception (String out of bounds)
  when trying to edit the address field. Exact cause unknown.

N
  new Swing-versions of hades.models.rtlib.arith.UserDefinedALU.
  ConfigDialog and DcoreALU2.ConfigDialog.

N
  updated the hades.microjava demonstration (written by A.Walzcak)
  to better fit into the rest of Hades: moved the components into the
  new hades.models.microjava package, changed MROM to derive from 
  hades.models.rtlib.memory.MR, removed the now unnecessary separate
  MREditorFrame/MRCanvas/MRLabelCanvas classes, etc.

F
  changed hades.gui.MemoryHexEditorField.paintAllAddresses() to check
  for and respect a non-null address offset of the memoryObject.

08.05.03

F
  classdoc for method getAddrOffset() in hades.models.memory.Memory.

N
  updated hades.models.rtlib.memory.MR to add a FatLabel to its symbol,
  used to show the current state (label) in the symbol during simulation.
  Code taken from hades.microjava.MROM...

F
  updated hades.models.rtlib.memory.MR and MR20 to use the new
  GUI (MRCanvas, MRLabelCanvas, MREditorFrame). Also removed redundant
  overridden methods from MR20.

N
  added new constructor to hades.models.rtlib.memory.MRLabelCanvas,
  which automatically builds the labels[] Strings from the field
  name of a given MR microprogram ROM. Used in MREditorFrame
  to always show the field names for a microprogram ROM.

07.05.03

F
  fixed hades.models.pic.FastPic16F84 and SmartPic16F84 to use Swing
  for their clock period GUI; this should complete the conversion
  of all Pic components to an all-Swing GUI.

F
  changed hades.models.pic.HexMemoryCanvas to use a lightweight
  MemoryAdapter instead of hades.models.rtlib.GenericMemory.
  Also added a hack to display non-existent RAM register file cells
  as such in ShowPic2 via testing for PicNoReg instances in the
  PicRegBank.

F
  some more Swing merging: checked all classes in hades.models.rtlib.
  memory, RAM, ROM, ROMoe, ROMcs, DPRAM, RegBank seem to work.
  Fixed MipsRegBank (renaming from MipsRegbank).
  New demonstration designs in hades/examples/selftests/test_xxx.hds

  Also, hades.models.mcore.DcoreRAM and DcoreROM seem to work.

F
  fixed hades.manager.DesignManager to remember the last selected
  directory when using the Swing GUI (SwingFileChooser); also set
  the initial filename correctly, when specified.


06.05.03

N
  changed hades.manager.ExtensionFileFilter to handle both single
  extensions or an array of extensions (e.g. ".rom" ".hex"), when
  used with JFileChooser. Also reset the list of active extensions
  when requesting a new JFileChooser.

N
  changed hades.models.pic.ShowDisassemblerCanvas and MemoryDisassemblerView
  to highlight the currently active instruction. This is implemented
  via a new reference to the Pic PC-register.

F
  re-activated breakpoints support in hades.models.pic.Pic16C84.
  When reaching a breakpoint, simulator.pauseSimulation() is called.

F 
  use DesignManager.selectFileOrURLName in ShowPic2 instead of AWT
  FileDialog.

F
  changed hades.models.pic.ShowPic2 to use JTextViewer (Swing) instead of
  SimpleTextViewer (AWT) for the help text dialog windows.
  Also changed the layout of the components (program memory on the left)
  and replaced GridBagLayout with BorderLayout and BoxLayout, which 
  should work much better when resizing the window and avoid the GridBag-
  layout problems with some Unix/Linux window managers.
  Finally, WordButton is right-aligned now.

F
  hades.gui.Editor now starts with the Swing GUI by default, use "-noswing"
  or "-awt" flags to disable Swing. Note that the memory editor GUI
  now always needs Swing.

F
  changed the accelerator keys for window close (control-W) and exit
  (control-Q), in order for GUI behaviour consistent with Acroread
  and Netscape.

F
  several tweaks to get nice-looking fonts for JTextViewer, JPropertiesViewer,
  MemoryHexEditorField, etc.

N
  fixed hades.models.ttl74.SN74189 to use the new Swing based MemoryEditorFrame.

N
  remove (outdated and unused) old AWT stuff from hades.models.rtl.ROM_xxx,
  RAM_xxx, IDT6116, IDT6164, and hades.models.hagen.ROM_8x8 memory classes. 
  The Swing based MemoryEditorFrame is much better.

04.05.03

N
  merged the Swing GUI classes from Andreas into the main Hades source tree.



09.04.03

N 
  new classes hades.models.rtl.IDT6116 and IDT6164, the standard 2Kx8 bits 
  and 8Kx8 bits static CMOS SRAMs.

F
  fixed hades.models.ttl74.SN74189.setDataAt() to correctly use the
  lower 4-bits from the given data argument only.

F
  new, space-saving symbol for hades.models.ttl74.SN74244.
  Existing designs using the 74244 must be changed.

03.04.03

N
  new variants GAL-ocell.hds and GAL-xxx.hds of the GAL applet demo.
  The output cell now behaves like the PAL22V10 from AMD (plus the
  extra XOR gate after the OR gates). This allows to demonstrate both
  the synchronous (using the flipflop) as well as the combinatorical
  mode.

  Removed some debug output from hades.models.io.GalFuse.
  The AMD 1980 PAD databook states that unconnected OR input lines
  stay high, while OR input lines connected to both Xi and /Xi
  are low - consistent with the current implementation in GAL-xxx.hds.

F
  actually tri-state the SN74189 outputs during write operations.

02.04.03

N
  new model hades.models.ttl74.SN74189, a 16x4 bit RAM.

N
  added hades.models.mcore.DcoreDissassemblerEditorFrame.insertZeroWord()
  and corresponding GUI, to allow insertion of new instructions into the
  D*CORE code memory during the machine-level programming exercises
  in our T3 lab course. (Also updated t-praktikum.zip archive file).

12.03.03

F
  ignore Intel Hex file data record type 04 written by MPLAB 6.12
  (print a warning instead of exiting the parser).

F
  changed hades.models.pic.PicEprom (and PicEeprom etc) to check
  filename.toLower().endsWith( ".hex" ) to handle uppercase Windows 
  filenames like myprogram.HEX...


18.02.03

N
  Editor.doShowGreenStdLogic1164._0 method for better rendering on
  beamers and LCDs. This also required to add a setColor() method
  to StdLogic1164.

F
  changed JObjectCanvas.doSyncRedraw() to call invokeAndWait() 
  instead of invokeLater(), to ensure that the SyncRedrawTimer
  won't generate too many redraw requests. Also added a sleep()
  of 10 milliseconds after each redraw to give other Threads a
  chance to run.

N
  EditorInApplet.stop() now calls editor.doFlushSymbolCache() to 
  avoid out-of-memory conditions when opening many designs.

14.02.03

N
  Editor.doToggleSimControlPanel() for better view-mode support

N
  MakeWebSite reads applet chapter titles and uses them to format
  the table-of-contents page.

10.02.03

N
  Editor.doShowDefaultLayers() - useful in viewMode

F
  check for null labels in JMultiLineToolTip

F
  some debugging in CreateSignalCommand. Unfortunately, the unconnected-
  signal bug occurs only rarely and cannot easily be reproduced...

06.02.03

N
  new class hades.utils.IntegerFormatter with some utility functions
  for hex/dec/binary formatting of possibly large integers.

F
  fixed hades.models.pic.SmartPic to be compatible with VhdlSimKernel
  again. At the moment, VhdlSimKernel deletes the event it starts to
  process from the event list before it calls the event targets
  evaluate() method. This implies that SmartPic should no longer check
  for the second event (which previously was the SmartPic wakeup),
  but the first event.

F
  better tool-tip messages in hades.signals.SignalStdLogic1164 and
  SignalStdLogicVector.

04.02.03

N 
  new ROM webdemo, checked 74181 and 7492 demos - which seem to work as
  specified by the TI datasheets.

31.01.03

N
  new class hades.utils.JavaVersionCheck and use in hades.gui.Editor 
  and hades.gui.  EditorInApplet, to provide useful feedback to users 
  that try to run Hades with outdated JVMs.

N
  more webdemos work, including documentation and design updates,
  and some new pages.

N
  added new method destroyGUI() to hades.gui.Console, as another
  attempt to get the Swing console working reliably in the applet
  when using the Java plugin... called from EditorInApplet.stop().

30.01.03

N
  more webdemos: Mux, Demux, Adder, AddSub, 74154, 74181, ...


29.01.03

N
  first half-public webdemos test on tech-www

I
  some good, some bad private news

28.01.03

F
  added hades.models.fsm.FsmRenderer.paint( Graphics, FigTrafo2D )
  to keep up with the recent jfig refactoring. FSM rendering should
  now work again...

N
  wrote the missing classes hades.models.io.ConstantU .. ConstantW,
  used in new Hades applet demos.

N
  many new applets and documentation for the applet website, including
  basic std_logic introduction, std_logic tri-state driver and bus
  resolution function, more flipflops, counter circuits, working
  digital clock (a la Jutzi: Digitalschaltungen), etc.

N
  Changed all-gates-and-many-ios.hds to include the complex gates,
  And2Vertical, Nand2Metastable, ConstantU,X,0,1,Z,W,H,L,
  IpinStdLogic1164. However, also added those classes to classlist2.txt
  to regenerate hades-applet.zip directly.

27.01.03

N
  more webdemos stuff, including new delaypadding, gatedelaydemo,
  flipflopdemo, clocked SR latch, SR flipflop different layout,
  edge-triggered D flipflop, sqrt4 cas symbol reconstruction,
  Muller C-gate, D-latch and D-ff waveforms, 
  dozens new applet templates. 


23.01.03

F
  another attempt to get the scrollbars working in JCanvasScroller.
  Much better now.

N
  experimental support for negative x/y values in hades.gui.Editor.
  setInitialWindowPosAndSize, assuming the X11 semantics (relative
  to the bottom right screen borders). Seems to work with the Java
  plugin in Netscape - the applets are now out of the way in the bottom
  left screen corner.
  FIXME: this should include some sanity checks of the xywh values.

22.01.03

N
  transferred lots of example designs from /hades/examples* to
  /hades/webdemos, also wrote corresponding HTML documentation and
  applet specs.

N
  corrected the BILBO4 design example and added some frills...

N
  added new code to MakeWebsite to parse ".applet" files is found
  and read applet titles and short titles from those files. 
  Also a few minor tweaks to the layout and navigation links in the
  generated HTML files.

F
  tried some more desperate things in hades.gui.JConsole to avoid
  the curious dead-console bugs when using the Java plugin in Mozilla.
  No success so far; it appears that the Java plugin keeps the reference
  to the global console alive while creating a new AWT/Swing environment
  including event-queue for each new applet (which is CRAZY).


20.01.03

F
  added method setSimObject() to hades.symbols.FigWrapper and call 
  it from hades.models.FigObject during FigWrapper initialization.
  This allows DesignManager to find relative named FIG resources.

F
  fix hades.models.io.LED to initialize the symbol from elaborate().

F
  changed hades.gui.JImageButton to inherit from JPanel; also changed
  to paintComponent() method to work with j2sdk1.4.1 Java plugin.

F
  changed hades.gui.JSimControlPanel to not call jfig.gui.ImageHelper.
  createImage() or JPanel.createImage(), because both methods return
  null when used in the j2sdk1.4.1 Java plugin as applets (@!*&ARRGGH).
  Using new BufferedImage() seems to work for now...

N
  added makefile targets "appletzip" and "website", both of which
  currently use magic filenames.

N
  improved handling of the 'magic' resources and additional class files
  in hades.utils.MakeJarFromClassList. Most importantly, the new version
  checks before adding a file in order to avoid creating double or
  multiple entries (which would corrupt the output JAR archive).

N
  many improvements to MakeWebsite, which is now able to actually
  copy all required resources from the source tree to the target tree,
  and generates working applet HTML files with (mostly) relative
  URL references. This is a major step towards a working applet
  website!


19.01.03

N
  many changes to MakeWebsite, including the option to copy all
  resource files from the source to the target applet tree.

17.01.03

F
  fixed hades.gui.CreateByNameCommand to *not* repeat the Command
  unless explicitly canceled.

N
  more works towards the "webdemos" applet site

16.01.03

N 
  moved DidYouKnowFrame from hades.utils to hades.gui; also use
  reflection to load this class in hades.gui.Editor (which means
  that the class won't be loaded unless really needed).

15.01.03

N
  new abstract class hades.gui.GUIFactory and concrete subclasses
  hades.gui.AWTFactory and hades.gui.SwingFactory. Redirected
  all AWT/Swing dependecies from Editor and Dialog windows to
  GUIFactory for complete AWT/Swing separation.

N
  new class hades.utils.MakeJarFromClassList, which reads the input from
  a "java -verbose" run and creates a JAR archive file with only the
  listed classes (ignoring "java.", "javax.", "sun.", and "com.sun").
  A first attempt with parameters
  "java -verbose hades.gui.Editor -swing -file io-demo.hds"
  resulted in a 643KB archive file with all required classes, but
  excluding the icon images and all symbol files.
  Still, this looks promising for applet use.

N
  added hades.gui.Editor.createCommandByName() which creates commands
  via reflection. Use in Editor and KeyHandler.

14.01.03

N
  changed hades.models.meta.Label to construct and use
  jfig.gui.JEditTextDialog when in Swing mode.

13.01.03

F
  fixes to jfig.objects.FigBaseobject.setTrafo() and corresponding methods
  in FigPolyline and FigRectangle. This should fix the "offseted compound"
  problem in all cases (requires jfig-20030113 or newer).

N
  new classes hades.models.io.IpinLarge and OpinLarge - with larger
  symbols than the standard classes. This makes it easier to click and
  see the pins when working at small zoom factors.

F
  fixed a race condition in hades.simulator.SimKernel.continueSimulation.
  We now reset the "shouldStop" flag before (re-) starting the simulation
  thread - this avoids that the new simulation thread finds a "shouldStop" 
  before the control thread has reset the flag :-)


10.01.03

F
  fixed spurious references to Java2 methods and classes, in order
  to restore JDK 1.1.8 and MS jview compatibility.

F
  fixed hades.gui.Editor.addProbeToSignal and removeProbeFromSignal
  to check whether the Signal is visible (on the toplevel schematic),
  before creating or removing a ProbeSymbol for the signal.

09.01.03

N
  added Swing-based support for context sensitive help texts to
  hades.gui.JObjectCanvas; corresponding changes in hades.gui.Editor
  to enable/disable tool tips for either AWT or Swing.
  Note that JObjectCanvas uses the global Swing ToolTipManager,
  which will not update a showing tool tip unless the mouse is moved.

08.01.03

NF
  use the ColorSource interface for deferred attribute update
  for WireSegments and SolderDots in all hades.signal classes.
  This fixes one of the multithreading bugs - due to the simulation
  thread calling Signal.animate() resulting in setAttributes() and
  finally rebuild() while the AWT redraw thread accesses the objects
  during paint(). It also means much less work during simulation
  and therefore possibly higher performance.
  Corrosponding changes to hades.signal.Signal, SignalStdLogic1164,
  SignalStdLogicVector, and hades.signal.SignalInteger.

N
  added inner class hades.manager.DesignManager.SwingFileChooser
  as a wrapper to JFileChooser (plus new class ExtensionFileFilter).
  Also updated DesignManager.selectFileOrURL to check for the
  setup "UseSwingGUI" property to support both AWT and Swing.
 

03.01.03

F
  updated hades.models.special.Counter to use PortStdLogic1164; 
  this also fixes the "memory leak" when used with open inputs.

22.12.02

F
  removed "fat circle outline" from hades.models.io.Opin, introduced
  on 02.11.02 - simply doesn't look good.

F
  don't call createCustomNullCursor() in JObjectCanvas... simply
  doesn't look as good as originally expected.

F
  changed hades.gui.JPropertySheet.setHelpText() to correctly handle
  the case of an empty ("") string argument. We now call setVisible()
  on the topPanel, and not just the helpTextArea. The resulting
  property sheet dialog window is much smaller, and we don't lose
  any information if the component in question does not have any 
  good help text (e.g. GenericGate and subclasses).

F
  made hades.gui.JObjectCanvas.doSyncRedraw() to check for the
  calling Thread and use SwingUtilites.invokeLater, if necessary.
  This change should fix most thread-related problems under JDK 1.3.1,
  at the cost of slightly slower repaints.

F
  made hades.gui.JSimControlPanel.SimTimePanel compatible with the
  Swing single-thread rule by moving the code to retrieve and format
  the simulation time into paint(), and solely using repaint()
  from the update thread.

20.12.02

F
  replaced all calls to FigBbox.minDistanceInside() in hades.gui.Editor
  by calls to minDistanceInsideZero(), in order to restore a working 
  editor. The change to minDistanceInside() was necessary in jfig
  to improve the selection of stacked and abutted objects.

  However, for Hades we still rely on the old behaviour, which is to
  return a zero distance is the target point lies inside the given 
  bounding box. 

  This change means that Hades is now up-to-date with respect to the
  recent jfig changes; including the full separation between AWT and
  Swing rendering, with reduced memory overhead and improved render
  performance in Swing mode. You might also set the FIG "special"
  attribute on text labels, allowing to render attributed strings
  and simple TeX math.

09.12.02

F
   replaced direct .painter member accesses with getObjectPainter() 
   method calls in hades.signals.SignalXXX classes. This change is
   all that is required to support the (completely redesigned) new
   jfig class hierarchy in Hades.
 

06.11.02

F
   changed hades.models.io.SevenSegment.initDisplay() method to use 
   FIG cap_style CAP_ROUND instead of using SOLID_FILL. This makes 
   the symbol look *much* better (especially with anti-aliasing). 
   Similar change in HexDisplay and AsciiDisplay.

N
   implement hades.gui.JAboutDialog as a subclass of jfig.gui.JAbout-
   Dialog; use in hades.gui.Editor. Also changed wrong copyright 
   notice from fnh to University of Hamburg.


N
   calculate bounding box of all objects in repaintBuffer and used it
   for repaint()ing in hades.gui.JObjectCanvas.doSyncRedraw(). This
   speeds up redrawing a bit and also reduces flickering when the 
   cursor is outside the repaint region.

N
   new abstract class hades.gui.StringDialog and concrete subclasses
   AWTStringDialog and JStringDialog as the next step towards the 
   Swing transition.

04.11.02

N
   added factory method hades.gui.ConfirmDialog.createDialog(); use
   this method in OKtoQuit and SaveChangesDialog as the next step
   towards the AWT/Swing refactoring.

N
   changed hades.gui.Editor.updateWindowTitle to display the design name
   in the windows decoration and the design resource (=file) name in the
   status panel.

N
   support both AWT SimpleTextViewer and Swing jfig.gui.JTextViewer in
   help->FAQ and help->CHANGES via factory method createAndShowTextViewer.

F
   fixed the "old" mouse dragging behaviour inherited from FigSwingCanvas
   in hades.gui.JObjectCanvas.

F
   re-enabled the "simulation engine choice" itemListenerCallbacks
   from (J/AWT)SimControlPanel to the editor.

N
   new class hades.gui.JImageButton, necessary due to slight API
   differences between jfig.gui.JImageButton and the behaviour expected
   by JSimControlPanel.

N
   support for thread-safe println() and variants in JConsole. 
   Seems to work with JDK 1.1.8 and Swing 1.1.1, too.

F
   added missing accessor getVisibility() to hades.gui.LayerTable

F
   implemented last missing callbacks to hades.gui.JEditFrame and
   hades.gui.Editor. 

03.11.02

B
   Bug: Still have no clue while the JConsole constructor often
   fails to complete the layout. This is especially mysterious
   as the Swing single-thread rule would indicate that the whole
   GUI should hang after one window hangs; but the editor and
   object canvas behave normal even after the console is dead...

N  
   new factory method hades.gui.Console.createNewConsole() to
   create a new AWT or Swing based Console window. 

N
   implemented most of the callback methods in hades.gui.Editor
   required for the new editor<->menu interaction. The Swing-based
   editor is now almost complete (except for the layerTable stuff),
   while hades.gui.EditFrame (AWT) needs to be updated.

N
   update UndoStack to support AWT MenuItems and Swing JMenuItems.

F  
   removed the non-Swing-1.1.1 compatible calls to MenuItem.add-
   Accelerator from hades.gui.JEditFrame: Swing-1.1.1 cannot 
   parse lowercase letters in getKeyStroke()

F
   changed hades.gui.JConsole constructor to *not* call the default
   constructor of hades.gui.Console (which resulted in an incorrect 
   call to JConsole.getIcon() with the Console frame member variable).

F
   substitute calls to Double.parseDouble() across the hades.models
   hierarchy for JDK 1.1 compatibility. It seems that the only calls
   were in hades.models.stimuli.StimuliParser.jj (.java).

N
   preliminary support for a custom "empty" cursor on JObjectCanvas
   via the support in Toolkit.createCustomCursor(). Unfortunately,
   it seems that JDK 1.3.x on Linux is not able to create a 
   completely transparent system cursor. However, we get a white
   1x1 pixel cursor, which also efficiently supresses flickering
   during high-frequency repaints. Note that custom cursors are
   not available on JDK 1.1.x virtual machines.

N
   refactoring of the editor "status panel" GUI stuff. New interface
   hades.gui.StatusPanel with messages to set the filename and
   status messages, separate AWT and Swing implementations. 
   Removed all status panel stuff from EditFrame.

F
   use JScrollPane for the help text area in hades.gui.JPropertySheet,
   also use some borders for better looks

N
   new command line parameter "-swing" for hades.gui.Editor, and
   first code to switch between AWT and Swing based user interface.

01.11.02

F
   add some try-catch-Throwable blocks to JEditFrame to work around
   problems in JDK11/Swing111 (notably, KeyStroke bugs).

F
   replaced hades.gui.Editor.getEditFrame() with getFrame(), because
   no external classes should rely on the type of Frame used by Editor.

N
   new callback implementation for ItemEvents in hades.gui.Editor.
   This reduces the number of circular dependencies between the
   editor and EditFrame GUI components (like CheckBoxMenuItems).
   It is also next (and final) step towards a pluggable AWT or Swing 
   based user interface.

F
   fixed hades.simulator.EventList.insert() to insert a new node
   behind an existing last_insert_event with the same simulation time,
   in order to fix causality problems due to components with zero
   propagation delay (for example, in hierarchical desings with
   t_delay=0.0 Ipins, subdesigns would see events before their
   parent signals).

31.10.02

N
   new interface hades.gui.ObjectCanvas as a common base for the 
   AWT and Swing implementations of our object canvas. Corresponding
   renaming of the existing AWT ObjectCanvas to AWTObjectCanvas,
   and many minor updates in hades.gui.Editor and throughout the
   hades.gui.XXXCommand classes.

F  
   traced the annoying SimEvent1164.recycle: "doubly freed" memory
   leak when running with hades.simulator.RealTimeSimKernel.
   It turned out that the ordering of 

      eventList.first(),
      eventList.getData(), 
      SimEvent.evaluate(),  
      SimEvent.recycle(),
      eventList.deleteFirst()

   is broken, because SimEvent.evaluate() may directly generate
   other events, and especially events at the top of the event list,
   so that the final deleteFirst() would sometimes delete a new
   event from top of the list, while the already processed event
   stayed on the list (and got processed and eventually recycled 
   twice).

   While this bug is fixed and RealTimeSimKernel now works for 
   many circuits, running RealTimeSimKernel on the DCF77 clock
   design still results in undefined signals in subdesigns.

F
  removed harmful calls to Graphics.dispose() from jfig.canvas.Fig-
  SwingCanvas. The fixed version now runs with JDK1.1.x+Swing-1.1.1,
  which in turn implies that JObjectCanvas can now be used with Swing
  under JDK 1.1.x

30.10.02

N 
  almost complete Swing version hades.gui.JEditFrame of the main
  Hades schematics editor window. This includes the full (and
  slightly improved) menu bar, the status panel with filename and
  status message fields, and the main BorderLayout with 
  object canvas and simulator control panel.
  However, the layer menu callbacks are not implemented yet.

N
  working Swing version of hades.gui.JConsole, seamless integration
  into hades.gui.Console. We now support all three of non-GUI
  text-only operation, tradiational AWT GUI, and Swing GUI.

N
  use SetupManager property "Hades.UseSwingGUI" to decide whether
  to construct AWT or Swing variants of GUI classes like 
  PropertySheet or Console. Because the default value is still set 
  to "false", you have to set the property early during application
  startup whenever you want to enable Swing. 

N
  renamed hades.gui.PropertySheet to hades.gui.AWTPropertySheet;
  hades.gui.PropertySheet is now a simple interface with a factory
  method that will allow for both AWT and Swing implementations.
  Source code for all simulation models should remain unchanged, 
  but requires a recompilation due to the class hierarchy change.

F
  support for top-left rulers in jfig.gui.FigSwingCanvas allows a
  working version of hades.gui.JObjectCanvas.

29.10.02

N
  new class hades.gui.JCanvasScroller. This required a major rewrite,
  because Swing ScrollBars do not deliver UNIT_INCREMENT or PAGE_
  INCREMENT events, but instead always use TRACK events. The
  current implementation does not update the ScrollBars during
  scrolling, but only when the editor updates the bounding box
  or the zoom factor. (Note: this also fixes the StackOverflow-
  Exceptions due to Scrollbar.setValues() generating new tracking
  events which result in another call to ScrollBar.setValues()).
  At least for small drawings, canvas dragging seems fast enough.

N
  new class hades.gui.JPropertiesViewer, the Hades variant and 
  subclass of jfig.gui.JPropertiesViewer

N
  new class hades.gui.JSimControlPanel, the Swing version of
  SimControlPanel.

N
  changed SyncRedrawTimer to expect a FigCanvas instead of hades.gui.
  ObjectCanvas, in order to also support JObjectCanvas. Also removed
  long-obsolete debug code. Use ExceptionTracer to handle exception
  messages. Note: SyncRedrawTimer cannot any longer call canvas
  .bufferedSyncRedraw() (because FigCanvas doesn't have this method),
  but calls canvas.doSyncRedraw() instead. This should not be a
  problem, because hades.gui.ObjectCanvas implemented the same
  behaviour for both methods.

N
  new class hades.gui.JObjectCanvas, as a first step and experiment
  towards a working Swing-based Hades GUI. Derived from FigSwingCanvas.
  Bug: the left side slider is not drawn correctly, because this 
  means overriding FigSwingCanvas.mouseMoved()...

25.10.02

F
  implement doFullScreen() in hades.gui.Editor. Note that setBounds()
  and doLayout() may not work on all versions of the JDK.

F
  disable showing tool tips from ToolTipManager while the popup-menu on
  ObjectCanvas.isShowing() -- with a litte luck, the AWT will
  survive this possibly thread-unsafe meddling...

  Due to the, say, "minimal" API of java.awt.PopupMenu, there is no
  standard way to check whether the popup menu is showing. Instead,
  we set a isPopupShowingFlag in ObjectCanvas just before we call 
  popup.show(). Getting to know whether the menu has been closed,
  however, is impossible with the current API. Instead, we reset the
  flag on the next mouse motion event or moust event... 

  To locate the source code for this hack, grep for "-Q-" in 
  ObjectCanvas and ToolTipManager.

24.10.02

N
  changed hades.gui.EditFrame to check for editor.isViewMode().
  In viewmode, we construct the MenuBar, but we do not add it
  the the main EditFrame window.

F
  changed jfig.canvas.TopLeftRulerCanvas to allow to disable the
  rulers, which is needed for viewmode. Removed double declaration
  of "hasRulers" flag, and updated the ruler offset calculation 
  when the rulers are off. 
 
  Note: the ruler triangle markers are still alive...

N
  changed hades.gui.KeyHandler to check for editor.isViewMode()
  before dispatching callbacks to the editor. This effectively
  disables all editing key shortcuts, but leaves functions like
  zoom or toggle glowmode active. Note that the '0' and '1'
  shortcuts to interactively drive a signals are also still active.

N
  new hades.gui.Editor command line option "-viewmode" to disable
  most of the edit operations, while keeping zoom and display
  controls alive. This mode also switches the ObjectCanvas to
  disable the rulers and the grid; and it loads a minimal popupmenu
  from "/hades/gui/ViewModePopupMenu.txt".

30.08.02

N
  new classes hades.models.register.CounterRE, CounterRE8, and
  CounterRE16, a rising-edge triggered synchronous n-bit counter
  with reset and enable input, user settable counting limit,
  and carry output.

20.08.02

F
  new implementatin of MoveSelectionCommand
  

... several experiments with gcj and gcj optimization


30.07.02

F
  updated the "HADES-TODO" list; also re-assigned priorities...


29.07.02

I
  trying gcj -O2 -static on Hades BatchMode.java.

N
  next tutorial revision: fixed several types, index entry cleanups.

F
  changed hades.gui.Console to allow for non-GUI mode, in order to
  better support GCJ/libjava. The class is now no longer derived
  from java.awt.Frame, but instead uses a Frame.

  Added boolean SetupManager property hades.Console.UseAWT 
  property to select GUI mode (=true) or Stdout mode (=false).

27.02.02

N
  first time to get Hades (batch mode) running under GCJ/libjava.
  See my posting to java@gcc.gnu.org for first performance data.

26.07.02

N
  new attempt to (finally) get the selection stuff (cut,copy,paste)
  working. Again use hades.utils.Selection to hold the selected
  objects from hades.gui.SelectObjectCommand, SelectAllCommand,
  SelectRegionCommand.

N
  renamed several method in hades.utils.Selection for consistency 
  with the java.util API 


25.07.02

N
  checked the RaVi simulation models and example designs


24.07.02

F
  minor cleanup in hades.models.io.LED.evaluate()

F
  again, more tutorial fixes

23.07.02

N
  several experiments with GraphicsLCD and GraphicsLCDCanvas,
  trying to improve rendering performance. Also tried 
  BufferedImage.setRGB and getRGB instead of plain Image.

N 
  moved the 74LS590 into hades.models.ttl74, and the demo design
  into /hades/examples/ttl74/
  Warning: the timing parameters in the 74590 model are not yet
  correct; due to too long gate delays the maximum clock freq.
  is around 10 MHz (instead of the specified 20+ MHz).

F
  some more tutorial fixes (again, typos, and image readability)

22.07.02

N
  tutorial updates, mostly fixing typos. Also changed some
  screenshots to use blue instead of light gray for some wires
  in glow-mode; as this greatly improves readability on black
  and white printouts.mode; as this greatly improves readability 
  on black and white printouts.

N
  reported the results of the compiling-with-gcj experiment
  to java@gcc.gnu.org...

N
  another, almost successful attempt to compile Hades+jfig with
  gcj 3.1. The only remaining problems seem to be in Graphics2D
  areas (missing classes Stroke, BasicStroke, GeneralPath)
  and some typos (like the MemoryImageSource constructors).
  

19.07.02

N
  used TestLoadAllDesigns to check all demos and examples in
  the /hades/examples-midi, /hades/models/ttl74, /hades/examples
  hierarchies, fixing several minor (multiple connection) bugs.
  Note: due to classloader problems, the demos using the Python-
  wrapper simulation components will only work when started from
  the /hades directories.

N
  more tutorial updates, new index entries, documented Console
  file logging API, run-for bug explanation, ...

F
  added hades.models.imaging.ImageSource.getPropertySheet 



18.07.02

N
  used new class TestLoadAllDesigns to check all demo designs
  in the /hades/examples-unihh hierarchy, fixing several
  minor bugs.

N
  new class hades.utils.TestLoadAllDesigns to automatically
  generate a list of design files, and to load those design
  files while logging any initialization errors.

F
  for consistency, renamed all *Logfile* names to *LogFile*
  in hades.gui.Console; also changed the corresponding 
  SetupManager property to "Hades.Console.LogFileName"

17.07.02

N
  added the "implements Assignable" specification to all
  register simulation models in hades.models.rtlib.register.
  This means that you can now use assign() calls to update
  the register output values, for example from StimuliParser
  input files or interactively from the Jython shell:
  "PC <= 0xAFFE" or "accumulator.assign( 123, 4.0E-9 )"

N
  implemented assign(String value, double simTime) in class
  hades.models.rtlib.GenericRtlibObject. The method schedules
  the specified output event on the 'vectorOutputPort' pin
  and also schedules a WakeupEvent to update the internal
  'vector' variable at the specified time.

  Most standard RTLIB simulation models can now be made
  "Assignable" by just implementing hades.simulator.Assignable.

N
  changed the editor versionString (0.90), mainly to better allow
  tracing bug information 

N
  changed hades.models.Design.checkDesign() to take a boolean
  parameter whether also to highlight errors in the schematics.
  Added corresponding menu items to hades.gui.EditFrame and
  callbacks to hades.gui.Editor.

16.07.02

N
  new implementation of VhdlSimKernel.deleteAllEventsFromSource,
  using new inner classes DeleteAllEventsFromSourceCommand and
  NOP (no operation). The new implemenation executes in the 
  simulator Thread and should therefore be thread-safe. Also, it
  deletes events from both the event list and the pending events.

B
  finally checked why the hades.models.dcf77.Dcf77Sender is
  resistant against deleting itself from a Design. It turns out
  that this is due to a major design flaw in the current handling
  of WakeupEvents:  The scheduleWakeup() method in SimKernel does
  never set the "source" field in SimEvent, which implies that
  deleteAllEventsFromSource cannot handle WakeupEvents at all.

N
  Very ugly hack to Dcf77Sender to work around the problem
  mentioned above: the sender now checks whether it finds itself
  in the parent Design before scheduling events or updating its
  display.

N
  refactoring of the hades.models.flipflops class hierarchy. 
  Made the Q/NQ output ports members of GenericFlipflop and
  added the assign() method there to support the Assignable 
  functionality for the gate-level flipflops.

15.07.02

F
  added "$debug$" production to StimuliParser grammar, use debug
  flag to control info and error messages.

N
  partial SimKernel rewrites; try to clean-up the Thread issues.
  Added test design __pause_test.hds, seems to work now with
  VhdlSimKernel... 

  Also re-enabled the SimControlPanel runForButton via the new
  "Hades.Simulator.EnableRunFor" SetupManager property.
 

N
  more tutorial updates; finally documented core DesignManager
  functionality.

12.07.02

N
  new TTL 74LS590 synchronous counter (with output registers),
  based on hades.models.flipflops.JkffMetastable.

N
  more tutorial updates, including rudimentary explanations of 
  a Hades build setup (installation chapter) and DesignManager
  functions and usage (writing components).

10.07.02

F
  wrote and re-wrote dozens of class documentation entries all
  over the hades.models, hades.utils, and hades.simulator 
  package tree. 


N
  updated the tutorial: added StimuliGenerator, StimuliParser,
  DesignHierarchyNavigator, Assignable, several index entries,
  new screenshots, ...

09.07.02

N
  added new utility classes hades.models.rtlib.IpinVectorLarge 
  and OpinVectorLarge, which provide a larger graphical Symbol.
  Needed to avoid the current redrawing issues when binary
  representation is selected (the numbers often extend beyound 
  the Symbol bounding box for IpinVector and OpinVector).

  For compatibility with existing designs, the existing classes
  were left unchanged. Also, their more compact Symbol is usually
  big enough for both decimal and hex-formatted numbers.

F
  re-generated the whole classdoc tree and classdoc.zip

F
  tried to understand the SimKernel.pauseSimulation-deadlock
  issues. This is now really urgent, because StimuliParser
  needs to call pauseSimulation() from the simulation Thread
  itself. No solution short of a complete rewrite, yet.

08.07.02

N
  rewrote the grammar specification and most of the functions
  of StimuliParser. Among others, added the "wait until" and
  "pause" statements, allow assignments for both Signal and
  SimObject (=Assignable) targets, use DesignHierarchyNavigator.
  
  Also changed StimuliParser.main() to accept two parameters,
  a Design resourcename and a stimuli filename, to allow for
  standalone parser testing.

03.07.02

N
  new utility class hades.utils.DesignHierarchyNavigator for
  efficient access to Signals and SimObjects via relative or
  fully qualified hierarchical names.

N
  implemented assign() in hades.models.rtlib.io.IpinVector.
  Checked whether a simple redesign would allow to implement
  assign() in GenericRtlibObject.
  

N
  added the hades.simulator.Assignable tagging interface to mark
  SimObjects that fully support the assign() method. Corresponding
  changes to several hades.models.io classes.

02.07.02

N
  re-designed hades.models.io.DiodeSwitch, now with consistent
  state-encoding, fixed evaluate(), added the assign() method

N
  implemented assign() in hades.models.io.PulseSwitch and
  hades.models.io.HexSwitch, major cleanups in the latter class.
  (Still does not work for mirrored HexSwitch symbols, however).

01.07.02

N
  implemented assign() in hades.models.io.Ipin

N
  finally decided a substantial re-write for the major input
  SimObject's with support for external stimuli with matching
  GUI updates. The latter will be implemented via WakeupEvents
  and wakeup() calls, as introducing a new (third) kind of events
  just for the purpose of GUI-updates seems overkill. 
  In order to keep the GUI consistent, the value to be shown
  will be supplied in the WakeupEvent delivered to wakeup().

  The following simulation components will be upgraded ASAP:
  hades.models.io.Ipin, PulseSwitch, HexSwitch, DiodeSwitch,
  and hades.models.rtlib.io.IpinVector.

  For sake of a simple API and the ease of writing stimuli,
  a new method assign( String value, double simTime ) 
  will be added and used by all components. For example,
  you will be able to write:

  ipin.assign( "X", 1E-9 );
  ipin.assign( "0", 4E-7 );
  vector.assign( "0xaffe", 0.3 );

  Note that this change affects the class signatures of some
  classes (which now implement Wakeable), and that the wakeup()
  method in IpinVector changes.
  

26.06.02

N
  more work on StimuliGenerator (parser and grammar updates,
  enabled flag, fixes)

F
  changed hades.models.Design.addComponent to *not* call
  simobject.elaborate() any more. It should suffice if
  a new simulation component is elaborated later from 
  SimKernel.elaborate().

  However, there might be some SimObjects which rely on the
  old behaviour for their GUI initialization. Needs to be
  checked.
  

25.06.02

F
  handle 0 (zero) signal drivers same as a single driver in
  hades.signals.SignalStdLogicVector. This covers the case
  where the signal value is set directly via external events,
  for example by the StimuliGenerator or a Jython script.

N
  attempts to define a new clean API to assign input component
  (Ipin, PulseSwitch, HexSwitch, IpinVector, etc.) values 
  from StimuliGenerator or scripts. This should not be based
  on the Ipin.setValueAtTime hack, and provide a uniform API
  for (at least) StdLogic1164, StdLogicVector, Strings, Integers,...


N
  new simulation component hades.models.io.RomDiode, useful
  for demonstrating ROM and PLA like structures.

24.06.02

N
  first integration of StimuliParser.jj into new package
  hades.models.stimuli, corresponding makefile updates.
  Also first version of hades.models.stimuli.StimuliGenerator,
  which mostly works but needs better handling of finding
  components and signals in hierarchical designs.
  

23.06.02

N
  started working on the StimuliParser, using JavaCC to allow
  for a "VHDL"-like stimuli description

18.06.02

F
  check SecurityManager before calling System.exit in 
  hades.gui.Editor (applet compatibility)

F
  VhdlSimKernel now sets the "shouldStop" flag whenever an
  InterruptedException is caught in its sleep() method. 
  This means that the simulation Thread is correcty terminated
  in reaction to a JVM interrupt() call. 

F
  better Thread management in hades.gui.SyncRedrawTimer.
  Also, the Thread will now terminate when interrupted via the
  JVM (improved applet compatibility).

N
  slightly better formatting for hades.gui.PropertySheet; 
  resizing will now resize the textFields, but not the labels.

N
  new utility classes hades.models.io.Constant, Constant0,
  Constant1, ConstantH, ConstantL, ConstantW.

N
  new utility editor method "zoom out 0.9" and "zoom in 1.1",
  corresponding code taken from jfig.gui.PresentationViewer

17.06.02

I
  several (minor) jfig changes, see jfig CHANGES

F
  handle InterruptedException and check isInterrupted() in 
  classes hades.gui.SimControlPanel$SimTimePanel and 
  hades.utils.ToolTipManager 

14.06.02

F
  fix VhdlSimKernel.collectEvents() to avoid the double-event-
  evaluation-when-scheduling-at-time=now-problem...

F
  checks for SecurityManager in jfig.utils.SetupManager and
  jfig.gui.PropertiesViewer.

N
  improvements to RemoteIpin and RemoteOpin, also added 8-port
  subclasses RemoteIpin8 and RemoteOpin8

12.06.02

N
  better applet compatibility in jfig.utils.SetupManager; we now
  access individual system properties to avoid getting the null
  return value from System.getProperties due to the applet 
  security restrictions.

N
  use PPMWriter instead of GIFEncoder in WaveformViewer 
  (to avoid both license issues and applet problems in MSIE/jview)

N
  new class PrintBrowserPropertiesApplet, also
  deployed to tech-www for browser testing...

11.06.02

F
  callback fix in hades.styx.WaveformViewer (update waves)

N
  started reworking the EditorInApplet class, adding new
  applet parameters, Netscape checks, ...

08.06.02

N
  started exploring the org.mortbay.html utility package to auto-
  generate example applet web-pages.

07.06.02

F
  added missing write() and initialize() methods to classes RemoteOpin 
  and RemoteIpin.

06.06.02

N
  new classes hades.models.io.RemoteOpin and RemoteIpin, meant to
  interface Hades components to remote servers. The current
  implementation prototype uses a very simple URL protocol to
  encode parameters into a URL and parses the HTML data returned
  by the server. 

05.06.02

B
  found a new subtle bug in all variants of SimKernel, which
  may result in wrong simulation behaviour whenever new simulation
  events are scheduled with the current simulation time (found while
  writing and debugging RemoteOpin). Basically, VHDL-style delta
  cycles are not working properly. Needs to be fixed.

03.06.02

F 
  changed hades.models.meta.Label to update its Symbol bounding box
  after both text and attribute changes to its textObject member.
  This should fix the bug where the Hades editor would still use
  and display the previous bounding box after editing a text Label.

F
  added new load methods with (Object,String) arguments to classes 
  PicEprom and PicEEprom. These methods allow to pass through an
  Object argument to class DesignManager, which means that the
  Pic16C84.initialize (and the ShowPic2 GUI) can now use the new
  DesignManager API without further changes to the PIC core
  class hierarchy. 
  Update Pic16C84, Pic16C84Debug, FastPic16C84, SmartPic16C84 to
  use the new method.

F
  several fixes to the PIC16C84 design examples; most notably, 
  changed all .rom/.hex file references to use relative names
  starting with "/hades/..." Also deleted unused examples, unused
  signals, better component names, etc.

F
  minor cleanups in hades.models.pic.PicEprom and PicEEprom,
  corresponding changes in Pic16C84, FastPic16C84, SmartPic16C84

B
  bug/feature:  neither variant of the Pic16 core saves the EEPROM
  data file name to the Hades design file. That is, the EEPROM
  contents currently have to be re-loaded via the GUI or via a
  script every time the design file is loaded.

24.05.02

I
  EWME-2002: self-checking concept

23.05.02

I
  EWME-2002: applet presentation

06.05.02

N
  more tutorial (VHDL export)


03.05.02

N
  more tutorial work (hierarchical designs rewritten)


29.04.02

N
  and more ... (nutshell)

22.04.02

N
  more tutorial work (Java and Jython scripting)

15.04.02

N
  and more tutorial work (model libraries, waveforms, scripting)

12.04.02

N
  more tutorial updates (chapter model libraries)

09.04.02

F
  fixed hades.simulator.SimKernel.checkClearWaveforms to avoid NPE
  when editor is null (during batch-mode simulation).

08.04.02

N
  and more tutorial updates 

03.04.02

F
  changed hades.models.rtlib.io.IpinVector to fall back on the
  updateSymbol method and LabelFormatter architecture from
  GenericRtlibObject. This means that a IpinVector will now repaint
  its correct value after re-enabling RtlibAnimationFlag and
  a full redraw. Previously, the IpinVector symbol would only be
  updated on the next value change on the IpinVector.

N
  added a new interface hades.symbols.ColorSource and the 
  implementation DIN_IEC62_ColorSource. Changed hades.symbols.Label
  to use ColorSource (if set on the Label) and GenericRtlibObject
  to set ColorSource for the valueLabel.
  This saves the color-setting stuff in GenericRtlibObject.
  udpateSymbol() and also gets the color right after re-enabling
  RtlibAnimation.

N
  first text for the "library" chapter in the new tutorial 
  

02.04.02

N
  Kurzanleitung "pre-release" Version

B
  currently, IpinVector (and OpinVector) do not behave gracefully
  when RtlibAnimation is switched off and then switched on again,
  because the valueLabels are never updated to the current value.
  This needs to be fixed (via the TextSource mechanism already
  used for most other rtlib components).



11.03.02

I
  changed the .hadesrc defaults for EnableSelectionMenu to false, 
  as users complained about the missing functions. 
  Also set EnableDebugMenu to false for the "end user" distribution.

N
  KE15 Kurzanleitung started

08.03.02

F
  fixed Signal.splitIntoSubgraphs to initialize the "visible" status
  flag in the newly-created split signals.
  This fixes one long-standing GUI bug.

07.03.02

F
  some minor refinements to the quick-reference card.

F
  look into the "signals sometimes ignore glow-mode during editing"
  bug issue...

06.03.02

N
  complete rewrite of the (German) quick-reference card finished.

04.03.02

F
  documentation overhaul, tutorial and quick-reference card.

22.02.02

N
  support for "interactive" method calling via reflection and a
  StringDialog. See hades.gui.Editor.doCallMethod and inner class
  DoCallMethodListener. Also added corresponding MenuItem 
  EditFrame->Menu->Special->Call...

F
  changed hades.gui.Editor.setRtlibAnimationStatus to also change
  the SetupManager property "Hades.LayerTable.RtlibAnimation",
  in order to keep the GUI (EditFrame CheckboxMenuItem) and the
  objects in sync.

N
  prepare for using the org.mortbay.jetty.html package to auto-generate
  applet HTML pages.

N
  changed the default behaviour of IpinVector to avoid a frequent
  usage problem. Now, the whole symbol of the IpinVector is active
  to mouse clicks with the following behaviour:
  normal click:   increment value 0 : 1 : 2 ... maxvalue : 0 : 1
  shift+click:    decrement value 0 : maxvalue : maxvalue-1 ... 2 : 1 : 0
  cntl+click:     generate UUU : XXX : ZZZ values

20.02.02

N
  new class hades.models.rtlib.register.RegWithInitialValue

F
  fix hades.models.register.Register.show() to check whether a 
  valid Symbol is available, to avoid NPEs when using Register
  in a subdesign. a subdesign.

F
  fix hades.models.rtl.ROM_1Kx8.parse() to allow "#" comment lines
  in the ROM data file. 

N
  funstuff:  MakeIncrementROM, MakeBitWeightROM

19.02.02

N
  new classes hades.models.rtl.ROM_256x8, ROM_64x8 and symbols

18.02.02

N
  new class hades.models.rtlib.register.LFSR

N
  new classes (and symbols) for hades.models.register.LFSRAnalyzer24
  and LFSRAnalyzer32

N
  KE15 testbenches, using LFSRGenerator, LFSRAnalyzer and
  ClockGenWithAutoStop

15.02.02

N
  some more KE15 stuff

14.02.02

N
  custom popup menu structure for the KE15 exercises

N
  New classes hades.models.hagen.SimpleShiftRegister,
  hades.models.hagen.ROM_8x8 

N
  new package hades.models.hagen, put the Adder8 and Mux8 (Mux9)
  subdesign there.

F
  some fixes in hades.models.register.XXX. All of those classes
  stored references to external StdLogic1164 objects in the (wrong)
  assumption those objects were immutable. 
  The current implementation uses an additional copy() to get
  local objects. It would be slightly faster to store integers
  instead of the full objects.

13.02.02

N
  new classes hades.models.gates.Or6, hades.models.gatter.Or4,
  ..gatter.Or6, ..gatter.And4, ..gatter.And4Neg2, ..gatter.Demux14,
  used for the Univ. of Hagen "KE15" exercises


12.02.02

N
  some more tutorial work 

11.02.02

F
  changed hades.gui.Editor.actionPerformed() to check for null
  action commands, which unfortunately are used by MS jview 
  MenuShortCuts. If a null action command is found, we check
  for a MenuItem source and call getLabel() on the MenuItem...

N
  wrote the "applet installation" section for the tutorial,
  first text and RunHadesDemo source in the "scripting" chapter.

10.02.02

N
  mostly complete installation chapter in the tutorial

08.02.02

F
  fix ports initialization in hades.models.flipflops.DffrMetastable

F
  use trailing-spaces-hack in SimControlPanel.SimTimePanel.timeLabel
  to avoid premature cropping of the displayed time...

07.02.02

N
  wrote tutorial "demos" chapter, several tutorial FAQ updates

06.02.02

N
  more tutorial work, FAQ and installation chapters

05.02.02

F
  changed hades.utils.NameMangler.encode() and decode() to return
  null output values for null arguments, instead of throwing
  NullPointerExceptions

F
  new version number for hades.gui.Editor

N
  many more entries for the tutorial FAQ section,
  first documentation about .hadesrc in the FAQ

02.02.02

N
  full rewrite of the tutorial started in earnest

01.02.02

F
  don't add the useless (for the time being) execute-single-event-button
  to SimControlPanel.

31.01.02 

F
  handle null labelFormatter in GenericRtlibObject.getFormattedValue

F
  use slightly smaller radius for hades.gui.TrafficLight, to fit
  the default editor SimControlPanel to a 800x600 screen size.

N
  changed the layout of hades.gui.SimControlPanel and added 
  inner class SimTimePanel to display the current simulation time.
  Currently, the SimTimePanel is updated once per second, to 
  provide feedback about simulation status.

F
  hack to fix the "add probes" callbacks in hades.gui.EditFrame.
  Because the "add probes" sub-menuitems used the same labels as
  the "remove probes" sub-menuitems, the former callbacks were
  overwritten with the latter callbacks :-(  The quick fix consists
  of a few trailing spaces in the "add probes" menu item labels,
  to make the callbacks unique.

F
  print a warning message in hades.gui.Editor.addCallback() when
  overwriting an existing callback...

30.01.02

F
  fixed hades.models.special.SerialTerminal to transmit input
  characters even when the "enable_log" flag is off. This bug
  obviously survived for more than two years...

N
  added hades.gui.Editor.checkAllCallbacks method as a very basic
  check that all registered callback methods do exist. Note that
  the test does not call the callbacks, and neither does it check
  whether the callback arguments are correct.

N
  changed hades.gui.Editor to use the new ObjectCanvas and dynamical
  callbacks for the ObjectCanvas popup menu. The default popup menu
  description is loaded from "/hades/gui/PopupMenu.txt", but this
  resource can be changed via SetupManager property 
  "Hades.Gui.Editor.PopupMenuResource"

N
  rewrote hades.gui.ObjectCanvas, which now builds its PopupMenu
  dynamically from a user-specified resource file and uses reflection
  to set the Editor callback methods for the MenuItems.

  This offers no immediate advantage in functionality of the popup
  menu, but makes for a *lot* cleaner code in both ObjectCanvas
  and Editor. Also, it makes it very easy for users to modify
  the popup menu.


28.01.02

F
  wrote hades.models.flipflops.DffrMetastable, which was missing
  but already referenced by some of the TTL 74xx series models.

F
  fixed hades.utils.Parser to use NameMangler.decodeUnicodeEscapes
  after reading the (mangled) top-level Design name.

N
  several screenshots on Windows and Linux/KDE for the new tutorial

23.01.02

F
  removed the superfluous getSymbolResourceName() methods from dozens
  of hades.models.xxx.YYY classes.

N
  changed all example TTL 74xx series gate-level simulation models
  to use DffMetastable and JkffMetastable instead of Dff and Jkff.
  This was necessary to simulate several "legacy circuits" which
  did hardwire the flipflop reset inputs.

  Note that multiple simulation runs might give different results
  when the JkffMetastable (or any of the other metastable flipflops)
  is used in a circuit.

F
  rewrote EditFrame and Editor to use the new callback API for
  all EditFrame menu events. Note that this might have introduced
  some "dead" menu items right now...

N
  changed hades.gui.Editor and hades.gui.EditFrame to use a 
  reflection-based architecture to handle ActionEvents. 
  This allows to add event Editor callbacks without having to add
  each single one manually.

  Similar to the architecture used in jfig ModularEditor, we use
  a Hashtable __callbackTable to map "action event" Strings to
  editor methods. A second Hashtable is used top map to (optional)
  arguments for the corresponding method.

  Editor now also provides the addCallback( String eventName,
  String handlerMethodName, Object optionalArgument ) method 
  which allows to register new handlers at runtime.

22.01.02

N
  began work to access some demo designs via the editor help
  menu. Also corresponding re-structuring of the "tutorial"
  help menu items.
   

N
  several attemps to get DesignManager to run with JDK 1.3.1 on
  Windows ME. Currently, opening files seems to work reliably,
  but calling the AWT FileDialog in SAVE mode instantly crashes
  the JDK JVM.

F
  fixed DesignManager.checkAndAddFilenameExtension to actually
  add the extension when enabled via SetupManager (test was
  inverted).

F
  fixed DesignManager.getOutputStream to replace slashes ('/')
  with java.io.File.separatorChar in the output stream name.
  Also replace slashes before calling fileDialog.setFile().

  Introduced the "Hades.DesignManager.VerboseMessages" property
  to control (verbose) messages from the newer DesignManager
  functions...  Default value is currently "true", but the
  DesignManager will read the property at runtime, so it is 
  possible to change the setting via "show properties".
  

21.01.02

F
  always create a new FileDialog in hades.manager.DesignManager.
  checkCreateFileDialog to work around the JDK 1.3.1 Windows
  crash-when-reusing-a-FileDialog bug. This also required to 
  keep an instance variable for the (dummy) Frame.

F
  changed hades.symbols.Symbol.initializeFromResource to call
  DesignManager.getInputStream, as this allows us to profit
  from the newly made changes to DesignManager.

  Note that this breaks third-party simulation models which
  override (the working) getSymbolResourceName from SimObject
  and return a relative instead of the fully-qualified 
  symbol resource name. Please change those models to return 
  a String like "/com/foo/baz/Mux.sym" instead of "Mux.sym".


N
  new implementation of DesignManager.lookForInputStream(), which
  now checks for the special case of Hades resource names, when
  CLASSPATH is invalid or null. In that case, lookForInputStream
  steps up through the subdesign hierarchy, looking for a Design
  which was loaded from a non-CLASSPATH source and uses that to
  construct a valid filename. This allows to load all current
  Hades examples, even if CLASSPATH is not set. The only requirement
  is that the directory structure for the example designs is kept
  intact.

F
  update Signal.renameAfterDriver to check for "special" drivers 
  (currently hades.models.io.Ipin) and generate more appropriate names 
  in those special cases. Other candidates for special treatment
  are ClockGen, PowerOnReset, and IpinVector, but those are not yet
  implemented.
   

I
  some documentation updates. Among other thinks, collected the
  current list of Hades related BSc. and MSc. theses (Postscript),
  see /hades/doc/theses.

F
  fixed jfig.utils.SetupManager.loadGlobalProperties to allow 
  leading slashes ("/hades/.hadesrc") in the filename for the global
  properties resource file.

18.01.02

F
  several minor makefile fixes (e.g. pack .hadesrc into classzip and
  srczip, add new packages to make classdoczip, etc.)

N
  added hades.signals.Signal.renameAfterDriver()

N
  added hades.gui.Editor.renameToplevelSignalsAfterDrivers() and
  isDefaultSignalName().  No user-interface hook yet.

N
  new class RunHadesDemo which shows how to control and script the
  Hades editor, simulator, and waveform viewer from Java code.

N
  added new "-encode" and "-decode" options to the main() method in
  hades.utils.NameMangler, allow to encode and decode strings via
  the command line (for example for use in symbol Label strings or
  design names).

F
  added the (missing) symbol for hades.models.gatter.Inv, also added
  hades.models.gatter.InvVertical with a top-to-down oriented symbol.

17.01.02

B
  should change hades.models.Design.getEscapedResourceName() to
  return the relative instead of absolute path names, in order to
  allow moving and copying of design directories.

N
  new package hades.models.gatter with classes And2 .. Xor2, which
  are subclasses of the corresponding models in hades.models.gates
  without additional functionality. The difference is that the new
  classes have the DIN/IEC style symbols. While those symbols are
  not often used in CAD/EDA software, they are frequently found
  in German textbooks.

  Note that the symbols for hades.models.gatter.XXX and hades.models.
  gates.XXX have the same size, port names, and port locations.
  This allows to change the symbols for an existing design easily.
  Just change the gate package names in the design ".hds" file.
   

16.01.02

B 
  Note that hades.symbols.Label.writeAsResource will not currently
  write font index, point size index, and color index.

N
  improved hades.symbols.Label.initialize to include support for
  parsing the Label font index, point size, and color index.
  This means much greater flexibility when designing Hades symbols,
  without breaking compatibility. The new format is:
  hades.symbols.Label x y align font_index size_index color_index text
  
F
  call NameMangler.encodeWithUnicodeEscapes and decode... from
  hades.symbols.Label.writeAsResource and initialize.  This allows
  Label object texts with spaces and special chars in them.

N
  removed all references to "hades.cnf" configuration files for
  SetupManager and use ".hadesrc" instead. This is still a 
  problematic file name on Windows platforms (e.g. Windows XP
  explorer refuses to rename a file to such name), but it
  avoids conflicts with Windows modem setup files.

  SetupManager should probably also check for "_hadesrc" files 
  on Windows systems.

F
  fixed hades.utils.FigWriter.write_fig31_file to also call
  write_fig31_pseudocolors.

N
  added jfig.objects.FigAttribs.setLineColor and setFillColor.
  These utility methods take a java.awt.Color argument and create 
  a new FIG user color if the requested color was not registered
  previously.

  Please use these methods when setting a user-defined color
  for a Symbol or Symbol member. This is much simpler than the
  previous solution, at the cost of an additional hashtable
  lookup in jfig.gui.ColorCache.

15.01.02

N
  added support to save the *edited* properties from PropertiesViewer
  instead of the preloaded values. This should be much more user
  friendly, even if it can trigger the occasional exception due to
  illegally formatted inputs.

N
  new class hades.gui.PropertiesViewer to view all Java, jfig, Hades 
  SetupManager properties. The class also includes support to write
  user- and local-working-directory properties files. 
  Corresponding fixes in jfig.gui.PropertiesViewer to allow proteced
  instead of package access to variables.


14.01.02

N
  call DesignManger.checkAndAddFilenameExtension() from
  hades.gui.Editor.doSaveFileAs() and hades.gui.MemoryEditorFrame.
  saveDataToFileAs().

N
  added checkAndAddFilenameExtension to hades.manager.DesignManager.
  When enabled via the SetupManager "Hades.Manager.AutoAddExtension" 
  property, DesignManager will automagically append the appropriate
  extension to the user-selected filename for "save as" operations.

N
  new inner class ShowSignalNameListener in hades.styx.WaveformViewer
  to display the full (hierarchical) signal name of the selected
  waveform (via mouse position) in the WaveformViewer. This greatly
  improves the usability of the waveform viewer for all designs with
  many signals of more than one level or hierarchy...

F
  some changes to the hades.styx API:  added getFullName/setFullName
  to Waveform, use default- (zero-argument) constructors for
  Waveform and its subclasses, added range-checks to WaveCanvas.getName
  and getFullName methods, etc.

F
  more renaming and cleanups in all classes of hades.styx.
  Also added comments and updated the Styx README.

11.01.02

F
  cleanups and fixes in hades.styx.WaveformViewer.clearWaveData,
  updateTrafo, actionPerformed.

N
  automatically clear old waveforms when (re-) starting a simulation.
  A good place to trigger this action is during the elaboration phase
  of a new simulation, because this keeps the old data visible as 
  long as possible. 

  Therefore, hades.simulator.SimKernel.elaborateComponents now calls
  the new SimKernel.checkClearWaveforms() method directly after
  elaboration of the design. Unfortunately, SimKernel has no direct
  reference to the editor and its waveform viewer. The only path
  is via the design.getEditor() method, which should return a valid
  reference.

N
  added support for "delayed" re-enabling of the ObjectCanvas popup
  menu, to avoid the annoying conflict of the popup menu behaviour
  on Windows platforms and the right mouse button "cancel" function 
  used by some editor commands.

  The fix consists of the setEnablePopupOnNextMouseRelease() method
  in hades.gui.ObjectCanvas and the corresponding methods in
  hades.gui.Editor and the concerned hades.gui.XXCommand classes.

N
  new class hades.models.flipflops.JkffMetastable. This is a "legacy"
  flipflop which generates random 0/1 values instead of X/U values
  for undefined input signal combinations. This flipflop should not
  be used for simulation of new designs, but might be helpful for
  the simulation of "legacy circuits" like the TTL series counters
  with hardwired reset inputs.

  Note that multiple simulation runs might give different results
  when the JkffMetastable (or any of the other metastable flipflops)
  is used in a circuit.

F
  use NameMangler.encodeWithUnicodeEscapes() when writing instance 
  names to allow spaces etc. in hades.models.Design.write() and 
  decodeUnicodeEscapes in hades.utils.Parser.parseComponent().
  (Bug reported by Roland).

N
  new class hades.models.io.Iso8859Display (written by R. Illig)


10.01.02

N
  today begins the "great Hades overhaul" ...

F
  fixed two typos in the T3-1 lab course documentation:  changed the
  name of the "additional implementation registers" from MOE/MWE
  to nOE/nWE (Abb. 2), fixed the ALU opcode numbering (Abb. 4).

21.12.01 

N
  added support for either "Netscape/MSIE" or "traditional FileDialog"
  style to select file/URL names in hades.manager.DesignManager.
  Set "Hades.DesignManager.UseSelectDialog" to "true/false" to select
  the desired behaviour. Most of our test users prefer the traditional
  setting (=false).

F
  use repaint instead of paint(getGraphics()) in hades.gui.ImageButton

N
  changed all flipflop models in hades.models.flipflops to allow
  weak StdLogic1164 input values (0L,1H) on data and clock inputs.

13.12.01

N
  added a WindowCloser to hades.gui.SelectFileOrURLDialog to keep
  the Windows users happy.

N
  added a WindowCloser for hades.gui.ExportOptionsDialog to 
  hades.utils.Exporter (which manages all event handling for the 
  ExportOptionsDialog).

03.12.01

F
  fix hades.utils.vhdl.VHDLWriter to use the new DesignManager API
  (Bug uncovered by using new jikes for a total-recompile).


F
  fix non-JLS conform accesses to non-constant case-statement labels
  in hades.gui.CanvasScroller, hades.styx.WaveInteger and
  hades.styx.WaveStdLogicVector. This should also keep jikes happy.

27.11.01

F
  some more (this time, minor) fixes in the T3-cource documentation.

16.11.01

N
  more rewriting and fixes in the new T3-course documentation.
  Also changes in the T3 processor example designs.



12.11.01

F
  fixed wrong default extension (.sym instead of .hds) 
  in hades.gui.Editor.doSaveFileAs().

N
  updated hades.models.mcore.DcoreDisassemblerEditorFrame to use the
  current file name for openFile, mergeFile, and saveDataToFileAs().
  This uses the getDefaultResourceName() utility method to access the
  memory's current resource name.

N
  update hades.models.rtlib.memory.MREditorFrame.<<init>> to preset
  its 'resourcename' member variable from the memoryObject's resourcename
  for later use in openFile, mergeFile, and saveDAtaToFileAs().


09.11.01

F
  changed hades.gui.SelectFileOrURLName() to always create a new
  FileDialog (instead of re-using the previous one), in order to avoid
  spurious crashed on JDK 1.3.01 on Windows 9x. The new implementation
  seems to work on Linux and Windows with the JDK and the Microsoft VM.

N
  updated the example designs for our "T3" lab course in /hades/t3
  to match the current exercises. Also create new subdirectories
  /hades/t3/programs and /hades/t3/microcode, and put some simple
  test programs and the empty (but fully commented) microcode sample.

N
  finally implemented the first trivial bits of "lookForInputStream"
  in DesignManager. When called with a relative filename and a non-null
  SimObject, DesignManager now tries to find the SimObject's Design,
  the Design's resource name, merges that resourcename with the relative
  name, and calls getInputStream( null, mergedname ) to do the dirty work. 
  The null-parameter in the call avoids a possible infinite recursion.
  See DesignManager.getInputStreamFromRelativeName() for details.

F
  added checks for null filename in DesignManager.selectFileOrURLName
  to avoid NullPointerExceptions

F
  rewrote the DesignManager.getFilename() and getDirectory() methods
  to avoid calling unnecssary JDK 1.2+ methods. DesignManager is now
  again compatible with JDK 1.1.x and the Microsoft VM.

20.09.01

F
  use DesignManager in hades.models.mcore.DcoreDissassemblerEditorFrame
  and hades.gui.MemoryEditorFrame, hades.models.fsm.EditFrame,
  hades.models.fsm.FsmWrapper, hades.models.rtl.RAM/ROM*,
  hades.models.rtlib.memory.MREditorFrame, hades.models.pic.Pic*,
  etc.

F
  removed by-now unused class hades.utils.FileDialog

19.09.01

F
  minor fixes, symbol for hades.models.io.RandomBitGenerator,
  etc.

18.09.01

N
  more DesignManager cleanups

17.09.01

N
  more DesignManager API changes, first implementation of "error-
  tolerant" searching for files and URLs

F
  use new DesignManager API in other classes: converted
  hades.utils.DidYouKnowFrame,
  ...

F
  removed redundant getSymbolResourceName methods in several dozen
  hades.models.* classes, relying on the implementation in SimObject
  instead.

F
  improved class documentation for the simulation models in the
  hades.models.ttl74 package.

14.09.01

F
  use new DesignManager API in hades.gui.Editor

12.09.01

* operation

10.09.01

N
  new class hades.gui.SelectFileOrURLDialog in preparation for the
  pending Designmanager rewrite.

07.09.01

F
  more class-documentation updates all over hades.models.xxx 
  and across hades.symbols

N
  new classes and symbols hades.models.register.LFSRGenerator24
  and hades.models.register.LFSRGenerator32

N
  new class hades.models.io.RandomBitGenerator

06.09.01

F
  removed by-now-unused class and source hades.manager.ImageCanvas

F
  next attempt to improve DesignManager, in order to allow CLASSPATH-
  tolerant loading and saving of design files

F
  updated and created many class documentation entries across the
  whole Hades source tree.
  Note: due to changes in SimObject, GenericGate, and GenericFlipflop,
  it may be necessary to recompile the whole Hades-tree.

N
  started writing hades.models.io.ClockGenWithAutoStop

28.08.01

F
  improved the Hades selftest / LFSR signature-analysis example,
  new directory hades/examples/webassign. Updated the Jython
  driver script, added a README.

F
  fixed hades.gui.Editor.setGlowMode() to update the state of the
  "glow mode" Editor'Menu'CheckboxMenuItem as well.

F
  fixed the LFSRGenerator/LFSRAnalyzer demo design adder-testbench
  to drive the LFSR reset signals. Also prepared a variant with a
  gated clock to allow running standalone without the external
  "selftest.py" Jython script.

F
  fixed the missing ClassLabel entry in hades.models.register.
  LFSRAnalyzer8 and LFSRAnalyzer16


27.08.01

F
  fixed the symbol file for hades.models.ttl74.SN7405

F
  trace exceptions for "internal errors" in hades.gui.Editor 
  mousePressed() and keyPressed() methods

F
  comment in hades.signals.Signal explaining the "CoLa" bug 
  when (illegally) connecting to the top-level hierarchy connector ports
  on Ipin, Opin etc. from broken machine-generated .hds files.

F
  fixed "make gatelevelzip" to include NameMangler and the waveform viewer
  classes. This in turn required uncovered some remaining references
  to hades.utils.ValidName, which are now gone...

F
  documented where to improve getInputStreamXXX in DesignManager, in
  order to load input files even with not-fully-matching filenames.

24.08.01

N
  more tests in testsuite/simobjects/*

23.08.01

N
  wrote testsuite/simobjects/testSimObject.py to test basic functionality
  including configure() on SimObjects. Already found the first bugs
  on the fourth object tested...

F
  added getPropertySheet to hades.models.rtl.ROM_1Kx8 and
  hades.models.rtl.RAM_256x8

22.08.01

N
  added get/setLogfileName methods to hades.gui.Console

N
  first preparations for the Hades testsuite (which will use and
  require Jython)

21.08.01

N
  new class hades.models.meta.JythonScriptWrapper, which allows
  to execute Jython/JPython scripts during the simulator elaborate
  phase, e.g. to initialize other SimObjects in the same design
  or to show waveforms for selected signals.
  Note that the script currently has to be specified via a valid
  filename, not a resource name - due to Jython/JPython rescrictions,
  which should hopefully be resolved soon.

N
  work in progress to get more MIPS (IDT R3051) demos up and running.
  As a first step, trying to automate MemoryDispatcher setup.

F
  removed hades.models.meta.KvdWrapper: the KV-diagram applet 
  motivation (logic minimization demo) is not useful in a Hades
  simulation anyway...

20.08.01

N
  renamed (actually, copied) class hades.utils.ValidName to the better
  choice hades.utils.NameMangler while keeping the functionality.
  Also changed all hades.models.xxx classes to use NameMangler now.

N
  added two utility methods to hades.simulator.SimObject to allow better
  design management:
  boolean needsExternalResources() 
  String[] getExternalResources()

N
  added the needsExternalResources/getExternalResources methods to
  all hades.models.xxx. classes where appropriate.

F
  dozens of minor code and documentation fixes throughout the hades.models
  class hierarchy.

16.08.01

N
  added "move memory block" inner class to hades.gui.MemoryEditorFrame
  (note that this could also be called "copy memory block" right now).

01.08.01 .. 15.08.01

N
  major rewrite of the "T3" lab course exercises

23.07.01

F
  renamed Frill to hades.models.meta.Label, also minor code cleanups.

F
  another attempt to get ToolTipManager working reliably with different
  sized tooltips on several X11 window managers. At the moment, the
  code explicitly calls tipLabel.invalidate() and tipWindow.validate()
  to force a new layout of the tooltip. 
  Should implement a double-buffering for the tipLabel repaint...

19.07.01

N
  implemented the I/O stuff for hades.models.meta.Frill

18.07.01

N
  wrote the configure stuff for hades.models.meta.Frill via an
  interface to jfig.gui.EditTextDialog. 


16.07.01

N
  major website and documentation upgrade for jfig


13.07.01

F
  overhaul of the jfig.canvas.FigBasicCanvas redraw and grid-redraw
  algorithms. Should be JDK 1.4 beta compatible now.

19.06.01

N
  added menu item to toggle the Java2D "image rendering quality" hint
  to hades.gui.EditFrame and corresponding callback to hades.gui.Editor.
  Naturally, this works only when Java2D is available.
  Preset via the Hades.Editor.RenderQuality property.
 

18.06.01

N
  new class hades.models.meta.AudioPlayer, which allows to embed the
  basic hades.utils.AudioPlayer into Hades designs, and to control
  it via simulation events. This automatically also gives us the
  possibility to play sounds in sync with the "realtime" simulator,
  e.g. by connecting a power-on-reset component with the corresponding
  initial delay to the AudioPlayer.

N
  new classes hades.utils.AudioPlayer (GUI) and AudioFileLoader
  for minimal audio playback support via the JDK 1.2 applet methods.

N
  new minimal callback interface hades.utils.NameListener with a 
  single method nameChanged( String s )

F
  hopefully correct redraw strategy in hades.gui.ColibriCreateCommand.
  Also changed the editor to always calling ColibriCreateCommand instead
  of CreateCommand: this means that the user has manually to place a
  newly selected object (instead of using the popup menu position for
  the first object).

15.06.01

F
  AWT updates in hades.utils.ToolTipManager. In the hope that several
  of the JDK 1.1.4 workarounds are not longer needed (and won't help
  the Netscape VM anyway), we now use tipWindow.pack() again, which
  should result in correct-sized tooltip windows.

  However, unless the whole GUI is converted to Swing, the popup-windows-
  are-grabbing-the-focus-on-Windows problem is still a problem.

F
  updated hades.gui.EditorInApplet:  better exception checking in init(),
  added getParameterInfo() and getAppletInfo(), some formatting fixes.

F
  changed hades.styx.WaveformViewer.clearWaveData() to also reset
  the time transformation. This fixes the problems to zoom into
  a newly restarted simulation...

07.06.01

N
  added reset input to hades.models.register.LFSRGenerator and 
  hades.models.register.LFSRAnalyzer

17.05.01

N
  new class hades.utils.ISCAS89Converter to parse the original ISCAS'89
  benchmark circuit descriptions (.bench) and to convert them to Hades
  format (.hds and .sym).

  This seems to work for all of the original ISCAS89 circuits.

F
  changes in hades.models.Design to gracefully handle null Symbols: 
  the write method now simpley generates references to Symbols at the
  fixed position (0,0), which is suboptimal but at least runs.
  Similarly, createSymbol() sorts the input and output connectors by
  their index position in the Hashtables when no Symbol is found.
  Finally, moved the file I/O for the newly created Symbol to 
  hades.gui.Editor: we don't always want to save the new Symbol.

16.06.01

N
  changed hades.gui.SelectRegionCommand to handle whole-Signal selections.

N
  updates to hades.gui.DeleteSelectionCommand
   

15.05.01

N
  better support for object selection via new method findObjectAt()
  in hades.gui.Editor. This relies on changes in jfig.


14.05.01

F
  changed hades.gui.SelectObjectCommand to allow to select/deselect
  all visible objects on the editor canvas, not just SimObject Symbols.

10.05.01

F
  fixed the (harmless but very annoying) feature in DesignManager
  which resulted in resetting the current working directory after
  doing a "save as". Now, DesignManager just resets the filename,
  so it should still not overwrite a design accidentally.

F
  cleanups in the hades/examples-unihh/b-tutorium and b-tutorium-fnh
  example designs.
  

09.05.01

F
  better messages from hades.manager.DesignManager 

F
  better messages from hades.models.rtl.RAM/ROM* parse

F
  major overhaul and rewrite of the select/deselect commands.

F
  update to the popup-menu in hades.gui.ObjectCanvas

F
  fix symbol for hades.models.rtl.ROM_1Kx8

F
  fixes in all examples from hades/examples-unihh/b-tutorium: corrected
  GND/VCC connection, unconnected signals, off-grid objects, etc.



08.05.01

F
  renamed "cursor snapping" to "magnetic grid" in hades.gui.EditFrame.
  Also rearranged the menu items.

N
  new class hades.models.io.OpinWithLabel

F
  added useful getToolTip() method to hades.models.io.Opin

07.05.01

F
  fixed the cosmetic stacking order problem in hades.models.io.HexSwitch 
  symbol, introduced on 05.03.01

N
  new input switch hades.models.io.IpinStdLogic1164, which allows
  to generate all nine std_logic values (U/X/0/1/Z/L/H/W/D) 
  interactively. Simply click on the corresponding field in the
  switch symbol, or use <shift>+click to toggle through the values.
  Mirroring does not work on this SimObject.

F
  try to fix initialization problems with hades.gui.Console on some
  JVMs (like IBM JDK 1.3.0 for Linux).

04.05

F
  fixed background color and layout in hades.gui.AboutDialog

F
  fixed hades.signals.Signal to generate better (and much more readable)
  error messages for null SimObjects or null Ports

23.04.01

F
  long-overdue updates to hades/doc/README and hades/doc/FAQ.
  

N
  changed jfig to use X-splines introduced in xfig 3.2 instead of the
  older FIG 3.1 compatible splines. While this should not affect
  HADES directly, embedded FIG files with splines will be rendered
  a little bit differently that with previous versions of jfig.

17.04.01

F
  fixed a major parser bug in hades.models.flipflops.GenericFlipflip
  which resulted in lost pass/setup/hold time information.

03.04.01

N
  first signature based selftest: Testbench design adder-testbench.hds
  and corresponding script selftest.py

N
  first attempt at LSFR-based BILBO-type pseudorandom pattern
  generation and signature analysis for automatic selftest of
  circuits.

  Prepared base classes, 8-bit, and 16-bit implementations in
  hades.models.register.LFSRGenerator (-8, -16) and 
  hades.models.register.LFSRAnalyzer (-8, -16).

F
  added hades.gui.Editor.setAutoStartSimulation(boolean)

F
  Some cleanups in the hades.jpshell.JPShell initialization code,
  to improve window manager compatibility. 
  Also added the JPShell sources to the makefile.

F
  Removed unused and unneccessary function deleteSignalFully from
  hades.models.Design


02.04.01

F
  several fixes and cleanups in the /hades/examples/dcf77 designs,
  e.g. better signal and instance names, improved hierarchy,
  new toplevel design. Also removed some by-now-unneeded test
  inputs from dcf77block.hds. Added a README.
  
N
  new gate-level example /hades/examples/bilbo/bilbo4.hds for
  a 4-bit BILBO register. This allows to visualize the four
  functions of the "built-in logic block observer":
  parallel D-register, shift-register, pseudorandom pattern
  generator, signature analysis.

F
  fixed hades.models.FigObject and hades.models.meta.KvdWrapper
  (which is still incomplete) to adapt the recent SimObject
  getSymbolResourceName() change.

01.04.01

N
  changed hades.utils.vhdl.VHDLWriter to actually use a classmap
  file, if one is specified.

N
  experiments to speed up gate-level simulation.
  Added the last_insert_event stuff to hades.simulator.EventList
  with corresponding changes to insert() and deleteFirst() methods.

  Also replaced several EventNode accessor methods by direct field
  accesses in hades.simulator.EventList. 

  Both changes together result in almost 25% speed increase for the
  DCF77 gate-level simulation example on my K6-400 with JDK 1.3 Hotspot.
  Seems that Hotspot does _not_ inline even trivial functions...

F
  fixed hades.models.io.ClockGen to not generate the initial "X"
  event when the t_initial parameter was 0.0 seconds - due to the
  undefined execution order of the "0" and the "X" events at 0.0 time
  several circuits broke.

  In general, you should use PowerOnReset active times larger than
  the larger of ClockGen t_initial and t_period times.

31.03.01

N
  major cleanups in hades.simulator.SimObject and several model subclasses,
  namely hades.models.gates.GenericGate and all simple gates.
  Much shorter and more readable, VHDL-like code for the gates.

30.03.01

N
  got the VHDL export working for several designs, including the
  inverter chains and the dcf77 clock. Unfortunately, Synopsys VSS
  seems to run the dcf77 simulation about 2X faster than Hades.

N
  some performance tweaking in hades.signals.SignalStdLogic1164.

29.03.01

F
  some basic documentation fixes, corrected some typos in the
  VHDL export classes. First working VHDL netlist export for
  simple designs. 
 

25.03.01

N
  complete rewrite of the VHDL export classes. Renamed VHDL_exportable
  and VHDL_Writer to VHDLExportable and VHDLWriter, added new classes
  VHDLNameMangler and VHDLModelFactory.
  
  Basic VHDL netlist export is now possible for gate-level designs,
  given that the instance/signal names are more-or-less VHDL87
  compatible. While the VHDLNameMangler will try to construct fully
  valid VHDL87 names, it currently does not detect special cases
  like double underscores ("__") etc.



16.03.01

N
  fixed hades.manager.tree.SimObjectTreeNode to check and use
  the CLB type. It is now possible to load both standalone 
  simobjects and subdesigns via Colibri browser.

N
  changed hades.models.Design.initialize() to call DesignManager.
  getInputStreamXXX() when loading the design .hds file.
  This allows us to load designs from ZIP-files as well as from
  the filesystem.

F
  fixed some description and wrong icon/thumbnail references in
  the 74xx CLB files.

F
  added getDescription() to hades.gui.ColibriCreateCommand.
  Also added better exception handling and reporting.

15.03.01

N
  more CLB files and thumbnails images for the hades.models.ttl74 
  simobjects and subdesign. Also wrote some text descriptions the
  74xx models. Created example library t1-libraries/74xx with the
  models used in our T1 lab course.

13.03.01

N
  generated CLB files with short text description for all SimObjects
  in hades.models.gates, hades.models.io, hades.models.complexgates,
  and hades.models.flipflops. 

  Also added CLBs for some system-level simulation models.

N
  changed hades.gui.ColibriCreateCommand to allow for creation of
  multiple objects of the selected type.
 

12.03.01

N
  added setThumbnail() method to hades.manager.BrowserFrame

N
  changed hades.manager.tree.SimObjectTreeNode to load and use the
  ComponentInfo for the given simObject. Once the CLB is loaded,
  the corresponding name, author, version, and description data
  is displayed in the BrowserFrame's infoPanel.
   

09.03.01

N
  re-integrate hades.manager.ComponentInfo (taken from Colibri)
  into Hades

05.03.01

F
  force fixed layer for hades.symbols.Symbol and hades.symbols.FigWrapper
  to get correct z-ordering of objects

F
  fixed hades.models.ruge.IntegerSignal to correctly setup WireSegment
  lineWidth for Java2D, too

F
  added FatLabels to the TTL 74xx series symbols for easier recognition
  in schematics.

04.03.01

N
  more hades.manager.tree stuff, first event handlers for component,
  simobject, and text file selection and double click (=open).

N
  converted Colibri InfoPanel to a pure Swing version, integrated
  into hades.manager.InfoPanel

02.03.01

N
  better implementation of hades.utils.Exporter.createThumbnail()
  which uses the new "zoom fit" functions and generates even sized
  borders.

N
  new class hades.manager.CreateIconForDesign to create GIF icons
  from Hades designs or components.

F
  fix NullPointerException in hades.models.fsm.FsmRenderer when
  repainting() with Java2D enabled.

01.03.01

N
  new class hades.manager.BrowserFrame, based on the original 
  Colibri BrowserFrame, but with major cleanups. And without
  the event handlers, yet...

F
  many fixes in hades.manager.TreeManager to support and create
  the new TreeNode subclasses.

N
  new package hades.manager.tree to collect DefaultMutableTreeNode 
  subclasses: currently, we have SortedTreeNode, ZipRootTreeNode,
  FileRootTreeNode, DirectoryTreeNode, SimObjectTreeNode,
  DesignTreeNode, TextFileTreeNode. More to come.


28.02.01

N
  new class hades.manager.TreeManager to support all Colibri
  tree operations. It currently creates trees from ZIP file
  contents and file system contents, but lacks all real event
  handling.

  This class is based largely on the original Colibri implementation
  from TNode, TBuilder, and Browser.


26.02.01

N
  new SetupManager property "Hades.Exporter.PrintFitToA4" to select
  whether a Design should be fitted to A4 paper before printing.

21.02.01

N
  started the major DesignManager update...

N
  allow to insert new data values via hades.models.mcore.
  DcoreDisassemblerOrHexCanvas

20.02.01

F
  fixed jfig layer setup for hades.models.FigObject and 
  hades.symbols.FigWrapper. As specified, a FigObject now lies
  on (and possibly below) layer 85, which is below 'normal' hades
  symbols.

16.02.01

F
  fixed hades.signals.SignalStdLogicVector and SignalInteger
  to set correct WireSegment lineWidth for Java2D, too. 
  The additional call to update() makes initializiation a little slower.

F
  got hades.models.mcore.DcoreDisassemblerOrHexCanvas to display
  and disassemble invalid (XXXX) values again. Also updated
  DcoreDecoder to handle (XXXX).

F
  allow to resize the DcoreDisassemblerOrHexCanvas, and try to 
  update the memory display and scrollbar behaviour correspondingly.


14.02.01

N
  finally implemented the "right" behaviour for doZoomFit via changes
  to hades.gui.ObjectCanvas and hades.gui.Trafo2D.

N
  new GUI component hades.models.mcore.DcoreDisassemblerOrHexCanvas
  to provide a nice display of D*CORE memory contents. The component
  allows to switch between raw hex dump and disassembled D*CORE
  instructions. 

F
  fixed the T3 Praktikum template designs. Among other things, we now
  reference the subdesigns (addr decoder and instruction decoder)
  from /hades/models/mcore/DcoreAddrDecoder and DcoreFieldDecoder.

F
  fixed the "enable init signals menu" stuff in hades.gui.EditFrame.

15.01.01

F
  several changes in models.rtlib.memory.MR20 (D*CORE microcode ROM)
  to fix the "dead on load" bug: need to reset cached information when
  to ROM contents are read-in, merged-in, or otherwise set.

F
  disable the "Initialize all signals" menu by default to make the
  editor more foolproof: using the initialize command will easily
  lead to inconsistent data structures.
  Re-enable by editing hades.cnf / .hadesrc

N
  added SetupManager configuration from files ./.hadesrc and ~/.hadesrc
  as well as ./hades.cnf and ~/hades.cnf to hades.gui.Editor for better 
  Unix-style integration.



07.09.00

F
  change the TurboPic16C84 to use pre-allocated Integer's instead of 
  using new Integer()s.

04.09.00

N
  added the debug ports (INSTR, PC, W, ...) to the TurboPic16C84

N
  corresponding changes to some signal classes: moved IntegerSignal
  to hades.signals.SignalInteger, corresponding Port class, also
  added hades.models.string.PortSignal.

F
  changed hades.styx.WaveformViewer and WaveInteger to use hades.signals
  instead of hades.models.ruge as the correct package for SignalInteger.

02.09.00

N
  added support for loadHEX/loadROM to TurboPicCore, also some renaming
  and OO-style reorganization in TurboPicCore and TurboPic16C84

F
  long overdue fixes to hades.models.special.VT52Canvas. Among others,
  decode() calls paintCharAt() if isShowing() only for greatly improved
  performance when the terminal window is not visible.

F
  fixes to hades.models.pic.HexMemoryCanvas: show not-implemented memory
  locations as "--" instead of "00" for much better visualization.

31.08.00

F
  method stub for checkIRQs etc. in TurboPicCore

30.08.00

N
  first GUI support hades.models.pic.TurboPicGUI for the TurboPic16C84

N
  restructured hades.models.pic.TurboPicCore$PicInstruction,
  (opcode field), $Breakpoint, etc.

F
  fixed setTrisA/setTrisB in TurboPic16C84  

29.08.00

N
  first version of hades.models.pic.TurboPic16C84, added PORTA/B
  to hades.models.pic.TurboPicCore

28.08.00

N
  first version of the "compiled-mode" hades.models.pic.TurboPicCore
  for the PIC16XXX microcontrollers. Implemented the standalone core
  with all PIC instructions.





23.06.00

N
  new user-configurable address decoder with four (active-low) outputs,
  hades.models.rtlib.memory.AddressDecoder4

F
  minor cleanups in hades.gui.EditFrame (improved menu layout)

F
  removed AdjustmentEvent.TRACK call handlers from ScrollCanvas
  (workaround for KaffeVM event lockup, also avoids other JDK 
  scroll problems).

14.06.00

F
  better labelling on RAM/ROM symbols (hades.models.rtl.RAM_xx and ROM_xx)

F
  improved hades.models.StdLogicVector.parse( String ) to allow
  the special values "UUU", "XXX", "ZZZ" as displayed and used by
  many RTLIB objects.

09.06.00

N
  improved hades.gui.PropertySheet 

N
  "formattedValue" hack in hades.models.rtlib.GenericRtlibObject 
  to use the selected TextFormatter for the PropertySheet instead of the
  previous (integer only) solution. This also allow to correctly display
  vectors containing UXZD values.

N
  use "formattedValue" instead of "value" in the configure() methods of
  many Rtlib objects...
  

28.04.00

F
  several fixes in hades.models.pic.PicAssembler

27.04.00

N
  modified several classes in the hades.models.pic package to support
  better disassembly in the PIC user interface (ShowPic2).
  Most importantly, a .ROM file may now contain label information
  "#label hex-addr label-name" lines, which are used in the disassembly.

  Also changed the PicAssembler class to automatically generate those
  label lines for the .rom output file, and a separate .lbl output
  file which may be used together with .hex input files (first load 
  the .hex data into the PIC eprom, then use ShowPic2->menu->file->
  load labels... to load the .lbl file with the label information).

  Sorry, no support for the Microchip MPASM xref format yet.
  Also, still no support for register aliases in the disassembly.

xx.04.00

N
  several JPShell (scripting) improvements


02.03.00

F
  fixed calculation of chars_per_line in hades.utils.IntelHexFile.
  writeHexFileData16 to avoid out of bounds errors for certain file
  lengths

F
  hades.models.pic.PicAssembler writes .rom before .hex

09.02.00 - 01.03.00 

N
  many improvements to javafig


08.02.00

F
  implemented the cursor up/down callbacks in hades.styx.WaveformViewer

F
  implemented variable display sizes in hades.models.special.TextLCD.
  Still no GUI to specify the display size however (edit the .hds file
  instead).

F
  make createNewSimEvent() and recycle() synchronized in SimEvent1164
  and WakeupEvent, to allow multi-editor simulations again.

F
  call StdLogic1164.setToResolve() instead of StdLogic1164.resolve()
  to fix the 'memory leak' for multi-driver signals in hades.signals.
  SignalStdLogic1164. The Phraser-example now runs without consuming
  memory.

N
  better redraw strategy in hades.models.special.TextLCDCanvas.
  Hotspot2.0rc1 still crashes in the phraser example, however.

N
  u

05.02.00 - 07.02.00

N
  finally implemented SimEvent recycling to reduce memory usage and
  improve simulation performance. Changed most (almost all) 
  gate-level components from the hades.models.* hierarchy to use
  SimEvent1164 and Const1164. Large gate-level simulations with some
  ~10000 components should run up to 100% faster and use ~20% less memory.

N
  new subclass Const1164 of StdLogic1164 to implement constant value objects

N
  changed the SimEvent class hierarchy. hades.simulator.SimEvent is now
  used as the generic SimEvent class with an java.lang.Object workload.
  WakeupEvent and SimEvent1164 are fast subclasses for wakeup events and
  StdLogic1164 workload events, respectively. Both subclasses implement
  event recycling with their private SimEvent pool - which is NOT
  synchronized. Running multiple simulations at the same time will
  probably NOT work reliably.





10.01.00

N
  more forgiving parsers for hades.models.rtlib.memory.GenericMemory
  and MR20. Comment lines (starting with '#') are now allowed.
  Empty lines are (silently) ignored.  Errors are reported with line numbers.
  MR20 sets the correct microcode field names internally and ignores
  the name line while parsing.

N
  upgrades to 't3/processor.hds' to get the STW instruction working.

N
  new subclasses hades.models.flipflops.DffreRtlib and DffRtlib with
  RTLIB-style symbols for better integration with RTLIB designs
  like 't3/processor.hds'


09.01.00

F
  minor fixes to hades.models.rtlib.memory.MR20



04.01.00

F
  rewrote hades.models.rtlib.memory.ROMoe evaluate() method to 
  allow address changes while nWE active without creating XXX values
  at the output.

F
  added enableToolTipMI to hades.models.rtlib.memory.MREditorFrame
  to disable the ToolTip when editing on Windows systems - otherwise
  the tool-tips window gets the keyboard focus every time the tip
  appears

F
  better error messages in hades.models.StdLogicVector.parse()

N 
  restructured the hades.models.rtlib.memory.MR (microcode ROM)
  constructor and initialization methods. New subclass MR20
  with similar function but 20 individual single-bit outputs.
  Changed T3/processor.hds to use the MR20 microcode ROM.

N
  new class hades.models.rtlib.logic.N1Or for bitwise OR-ing 
  of a vector with a single bit.


03.01.00

F
  set FileDialog mode flag in hades.gui.MemoryEditorFrame and cousins
  to keep Windows users happy.

F
  changed the logic in IpinVector.setValue() to correctly create
  a new StdLogicVector instead of reusing the old one

F
  print the original exceptions in PropertySheet.applyValues


02.01.00

N
  new RTLIB designs sequencer.hds, and processor.hds, with corresponding
  fixes and improvements to RTLIB classes Add, IpinVector, MR, MRcanvas,
  DcoreALU, RegBank.

N
  removed the automatic repaint() calls from the memory 'Hex' style
  canvases like hades.gui.MemoryHexEditorCanvas from the 
  setReadHighlightAddress and setWriteHighlighAdress calls. 
  Nowe the parent / caller is responsible for repaint requests, resulting
  in much better performance


29.12.99

N
  new memory initialization options in hades.gui.MemoryEditorFrame:
  linear, and linear+2

N
  new RTLIB components for memories with chip select and separate output
  enable, classes hades.models.rtlib.memory.ROMoe and RAMoe

N
  fixes and some new functions in MREditorFrame and MemoryHexEditorFrame

F
  changed all RTLIB flipflops to generate XXX (instead of UUU)
  for undefined inputs during simulation. This includes high impedance
  inputs (ZZZ).

F 
  added property sheet to OpinVector to allow direct specification of
  number format. Naturally, clicking still works to toggle the number
  format.

28.12.99

B
  sometimes, hades.models.rtlib.muxes.Mux21 and Mux41 write inconsistent
  width info to the .hds design file, leading to a NullPointerException
  in StdLogicVector.parse(). Should be fixed in both places...

B
  selecting/saving a memory data file does not change the memory
  component's resource name. Should be fixed.

B
  DesignManager should - finally - allow relative file names instead
  of only resource names (to support multi-user environments better).

N
  added event handling to hades.models.rtlib.memory.MRCanvas for
  the microprogram ROM. This required another class for the configuration
  editor frame, MREditorFrame.

N
  implemented the logic in hades.models.rtlib.memory.MR, the microcode
  ROM with interactive editor, see T3-lab-course example 'sequencer.hds' 

F
  fixed NullPointerExceptions in hades.gui.DeleteComponentCommand
  on port declaration/symbol mismatch. Also print a useful error
  message in this case.

N
  some new RTLIB utility components, e.g. hades.models.rtlib.arith.Incr2


27.12.99

N
  new component hades.models.flipflops.Dffe (edge-triggered D-latch
  with enable, for pure synchronous designs like FPGAs).

N
  new RTLIB component hades.models.rtlib.memory.RegBank 

N
  several new RTLIB designs for the Uni.Hamburg 'T3' course
 
F
  fixed NullPointerException when construction a MemoryEditorField
  while the memory resource was not initialized.
 
F
  fixed StdLogicVector.toHexString() to display the correct number
  of chars when bus-width not a multiple of 4. Also changed the
  formatting for 'UUU', 'XXX', and 'ZZZ' values.

20.12.99

N
  major renaming following the JavaFIG reconstruction.

30.11.99

N
  new class hades.utils.MemoryMultiple2SingleConverter to convert
  memory files from the multiple-data-per-line Diglog style into the
  one-addr-data-pair-per-line format expected by the Hades components.

F
  corrected hades.gui.MemoryEditorFrame to call setDataAt() instead
  of accessing data[] directly in the initialize (0/X/random) methods.
  Initialization now works for RTLIB memories.
  

F
  use a separate makefile for the MIPS core in hades/models/mips/makefile

29.11.99

N
  new version of the IDTR3051 MIPS processor core - with working
  Hades interface



17.11.99

F
  changed the 'multiple connection to one port' warning in 
  hades.signals.Signals from error to warning status, because some
  users were too frightened by the error message. 
  Probably, I should fix the Hades examples instead :-)

F
  disabled the (useless) warning from hades.gui.KeyHandler about
  unknown bindkeys. Set KeyHandler.debug=true to re-enable these
  warnings.

N
  changed the 'save setup configuration' function in hades.gui.Editor
  to sort the SetupManager properties before dumping, resulting in
  a much more readable list...

16.11.99

F
  changed the SetupManager initialization in hades.gui.Editor to 
  really load the global configuration file, '/hades/hades.cnf',
  so that global initialization should now work independent of 
  the working directory. Customization is still possible by the
  user and local working directory config files.

N
  first attempt to get a cycle-based implementation of the PIC 
  microcontroller with integration into the Hades discrete-event
  world (class hades.models.pic.SmartPic16F84). Corresponding
  minor change to hades.simulator.EventList.

  This gives an average factor-of-two speedup vs. the FastPic16F84
  on most designs I tried. Profiling within Hotspot shows curious
  results, however (lots of cpu usage in PicExec.clock()).


N
  new version of the Idt 3041 controller; memory management with
  instruction and data caches, wait-cycles, and write-buffers
  is now implemented - but not yet tested.

02.11 - 12.11 
  
  Tempus workshop 


29.10.99

F
  changed hades.simulator.WakeupEvent.evaluate() to pass itself
  (instead of just the 'source' field) to the target.wakeup() call.
  This makes the handling of SimEvents and WakeupEvents transparent
  to the Simulator, and allows SimObjects better control about how
  to react to WakeupEvents.

  Corresponding changes to the WakeupEvent constructor and
  several SimObjects.

27.10.99

N
  added callback interface javafig.canvas.ZoomListener

N
  implemented ZoomListener method and callbacks in javafig.canvas.GE_canvas

N
  implemented ZoomListener in hades.gui.CanvasScroller, which is now
  functional. Removed (deactivated) the debug calls in CanvasScroller

N
  added utility class hades.gui.WindowCloser. Removed several 'window
  closer' inner classes from hades.models.* and hades.gui.* classes.

F
  fixed rubberband initialization in hades.gui.CopyCommand - the new
  symbol for the copied-object is now created at the position of the
  source object.



24.10.99

F
  removed several pack() calls from hades.gui.PropertySheet to work 
  around the IBM JDK 118 Linux crashes. PropertySheet layout seems
  to work now on all of JDK 1.1/1.2 Solaris, JDK 1.1/1.2 Windows,
  IBM JDK 1.1.8 Windows and Linux, and Jview.


15.10.99

N
  further cleanups in hades.models.pic.FastPic16F84


11.10.99

F
  changed Pic16C84 and Pic16C84Debug to use the new user interface
  hades.models.pic.ShowPic2

10.10.99

N
  new user interface for the Pic16C84 with classes hades.models.pic.ShowPic2,
  MemoryDisassemblerView, ShowDisassemblerCanvas.
 
F
  makefile cleanups, removed unused PIC classes like MultiBitButton etc.

09.10.99

N+F
  further performance improvements and Hades-interface bug fixes 
  for the hades.models.pic.FastPic16C84. Simulation speed reaches
  160.000 pic instructions/sec. on my K6-III/400 using Hotspot-2.

  The PicExec core model should now react correctly (but with a latency
  of up to 1 pic instruction cycle) to the Hades-interface events.


05.10.99 

N
  improve and debug 'Phrasendrescher' PIC design


28.09.99

F
  corrected the carry/digit carry flag calculation for the subwf/sublw
  operations in hades.models.pic.PicAlu.
  The 'mastermind solver' and the Microchip 'pic clock' designs now
  work out-of-the-box with the Pic16C84 simulation model.




22.09.99

F
  force the hades.styx.Xsroller and hades.styx.Yscroller scrollbar
  increments to values >= 1, to prevent IBM JDK 1.1.8 from dumping
  core.

21.09.99

F
  added 'isVisibleAddress()' to hades.models.special.TextLCDCanvas
  to avoid out-of-range-cursor-repaints.

N
  added 'checkAutoStartSimulation()' method to hades.gui.Editor to 
  control whether to start the simulator or not after loading a
  new design / creating a new editor, etc. 
  Set the SetupManager 'Hades.Editor.AutoStartSimulation' property
  to control this.

N
  added the 'messagePopupLevel' to hades.gui.Console to control the
  popup/toFront() behaviour of the console. For example, call 
  setMessagePopupLevel( POPUP_NEVER ) to disable automatic toFront()
  behaviour.

20.09.99

N
  new version of the hades.jpshell.XXX classes for the JPython scripting
  interface.

17.09.99

N
  added "Reload" function to hades.models.pic.ShowPic to
  allow for easy reloading of program updates.

F
  cosmetic fixes and cleanups in hades.models.special.TextLCD

F
  fixed the evaluate()/scheduleEvent() calls in hades.models.rtl.RAM_256x8


16.09.99

N
  rewrote the hades.models.rtl.ROM_<xxx>x8 classes for better
  reusability. Added class ROM_8Kx8.



15.09.99

N
  busy on new demo and test designs for the PIC microcontroller.


14.09.99

N
  preparation for generation/conversion of the design examples
  into WWW-examples via applet pages

N
  new class hades.models.rtl.ROM_64Kx8

F
  integrated major improvements into to the IDT 3041 ucontroller 
  (hades.models.mips.*)

10.09.99

F
  more changes to hades.styx.WaveformViewer, Waveform, WaveformXXX,
  and Wavecanvas. Searching should not work again.

09.09.99

F
  changes to hades.styx.WaveformViewer, Waveform, Timepanel, and
  Transform. Zooming should now work; also most shortcut keys are now
  active (may need JDK117 or higher).

F
  fixed to hades.styx.Timepanel to display the time ruler even for
  very large (100seconds) and small (picosecond) intervals.

F
  fixed the crosshair cursor repainting in hades.styx.Wavecanvas to
  work with the shortcut keys (i.e. without MouseEnter/MouseExit events).

08.09.99

F
  changes and cleanups to hades.styx.WaveformViewer, Wavafrom, Wavecanvas,
  and Transform to get canvas zooming working in a user-friendly and
  transparent way. Zoom Fit, Selection, 25%, 50%, 200%, and 400% do
  work now. Note that out-of-range times (less than 0.0 seconds or
  later than simulation end time) are silently clipped.




06.09.99

F
  changed the default layout of PropertySheet to conserve screen space


03.09.99

F
  fixed the evaluate() method in hades.models.io.Pullup to include
  the pullup's port instead of 'this' to fix NullPointerExceptions
  in SignalStdLogic1164.evaluate etc.


xx.08.99 - 03.09.99

F
  several new demo designs and assembler programs for the Pic16C84
  models.

N
  new scripting support with pwd(), ls(), cd() style commands for
  the Python interpreter.


19.08.99

F
  got the clkout signal on hades.models.pic.FastPic16F84 working

F
  fixed Waveform.paint() to avoid out-of-bounds accesses to the
  times[] and events[] arrays, also added a try/catch block for
  troubleshooting

F
  further cleanups to getToolTip(), from SimObject and Design to 
  GenericRtlibObject


18.08.99

F
  added addSegment() methods to Signal subclasses to set correct
  WireSegment attributes (e.g. lineWidth)

F
  cleanups to getToolTip() methods for several SimObjects

16.08.99

F
  fixed the output value buffering in classes hades.models.pic.Pic16C84
  and hades.models.pic.FastPic16F84.

N
  fixed times/event array reallocation in hades.styx.Waveform
  and WaveStdLogic1164. Also catch OutOfMemoryErrors and move events
  in the arrays (delete oldest events to make room for some new events).

N
  made class hades.styx.Waveform non-abstract, and moved the common
  paint() method from subclasses WaveInteger to WaveString into Waveform
  itself. Now, class Waveform may also be used as a generic waveform for
  any user-defined Signal classes without special Waveform subclass.

F 
  fixes hades.symbols.Symbol to call member.setTrafo() in addMember().




08.08.99 - 12.08.99

N
  lots of fixes and cleanups in the waveform viewer classes, package
  hades.styx.*. Implemented waveform serialization and de-serialization,
  GIF-export, got redraw working and faster, less initial memory usage,
  better array reallocation, fixes to the user-interface and better 
  layout strategy, hundreds of variable/object/function renamings to
  the Java naming convention, ...
  Event searching, however, may still not work in all cases.
   

05.08.99

N
  got hierarchical designs working in applets (MSIE and Netscape 4.5).
  Still slow in Netscape...

F
  more fixes in hades.styx.*. 



04.08.99

F
  many fixes in hades.styx.*

N
  new icons and button panel for the WaveformViewer


03.08.99

F
  major rewrite and cleanups in hades.styx.SmartWaves and hades.styx.*.




29.07.99

N
  implemented a std_logic_1164 compatible resolution function in classes
  StdLogicVector and SignalStdLogicVector. Also several minor cleanups 
  in StdLogicVector, and the color encoding for vector glow mode.

F
  improved the default-tooltips for Rtlib components in GenericRtlibObject

N
  first attempt at the 'Democom' demonstration computer


28.07.99

N
  finished the Rtlib-demonstration model of the 'PRIMA' (primitive machine)
  von-Neumann machine, with a nice (ugly) gating of the RAM write enable
  signals.
  


26.07.99

N
  new version of InteractiveSimKernel with working Thread interaction
  and non-deadlocking breakpoints. 

N
  new Rtlib classes hades.models.rtlib.io.SmallConstant and
  ZeroExtend

F
  several cleanups to GenericRtlibObject and UserDefinedALU



25.07.99

F
  fixed the CLA-generation logic in SN74181.hds and SN74181_pinout.hds

22.07.99

F
  minor cleanups in the highlighting stuff 

N
  new model for the 74390 dual 1:2:5 counter

21.07.99

N
   added highlighting support to the Editor, via new symbol classes
   hades.symbols.HighlightRectangle and hades.symbols.HighlightWireSegment.
   Added methods highlightComponent(), highlightSignal(), and
   removeHighlightMarkers() to the Editor.

N
   model for the 74182 CLA generator
 
F
   fixes and demo design for the 74181 ALU 


20.07.99



19.07.99

N
   first working version of the Python-Shell (hades.jpshell.MyEditor)

N
   model of the 74181 ALU

N
   several new MSI TTL models, several counters as well as the
   7474 and 7476 flipflops. Also several demo/test designs for these
   models.



15.07.99


N
   cleanups in the PIC16x84 classes for improved interaction with HADES.
   Now, the output ports only generate HADES events, when the logical
   value of the port register has changed.

N
   got the 'fast PIC' hades.models.pic.FastPic16F84 working. The model
   realizes both the PIC16F84 microcontroller core together with an
   internal clock generator. This allows to simulation the controller
   without the overhead of 12 clock events per 1 PIC instruction.

   The model runs about 2-3 times faster than the PIC with external clock.
   The drawback is, that interrupt conditions are checked one-half
   clock period late. Note that there is not yet an user-interface to
   specify the clock frequency - for now you have to edit the HADES 
   file with a text editor to change the default clock of 4MHz.

F
   changed return type of hades.simulator.SimObject.getPropertySheet
   to java.awt.Component, to allow for standard AWT configuration dialogs.
   Also, added corresponding getPropertySheet methods to all current
   simulation components with non-PropertySheet configuration dialogs,
   e.g. PIC16C84, SerialTerminal, UserDefinedALU, etc.
   Note that these dialogs should now be removed via setVisible(false)
   when closing a design.

F
   made the KS0108 controller an internal class in hades.models.GraphicsLCD.


14.07.99

N
   added get2ComplementAddOverflow() method to hades.models.StdLogicVector,
   use in hades.models.rtlib.arith.UserDefinedALU

N
   several fixes/cleanups/renames in SmartWaves, Wavecanvas, etc.

N
   added doCloseDesign() method to hades.gui.Editor to collect all
   actions necessary when closing a design: removing all signal probes,
   closing the PropertySheet editors, stopping the simulator, ...

09.07.99 

N
   got hades.models.rtlib.memory.MicroROM working  

02.07.99

F
   more robust cursor repainting in hades.models.special.VT52Canvas

01.07.99

N
   first attempt atfaster PIC microcontroller simulation (internal clocking)


28.06.99

F
   fixes simulator 'amnesia' when multiple events scheduled from simple
   gates.

N
   added 'toggleGlowModeForOneSignal to Editor 
   

22.06.99


21.06.99

F
   fixes to LCDisplay, busy and instruction timing should now work

F
   added WindowListener to MemoryEditorFrame

N
   first tests of the JPython interface and shell (but not yet in the 
   'public' release)


18.06.99

F
   major improvements in LCDisplay, implemented user-definable characters

F
   modified the Microchip AN587 for use with the Pic16C84 and LCDisplay
   components, first with plain 8-bit parallel interface only.
   Fixed the busy-read timing violation in AN587 code.


17.06.99

F
   minor cleanups in several GUI classes

F
   implementen some commands in LCDisplay


16.06.99

N
   new classes for a character-based 2-line LCD dot-matrix display,
   hades.models.special.LCDCanvas and hades.models.special.LCDisplay


14.06.99

N
   new class hades.models.pic.Pic16F84 to model the Arizona Microchip
   PIC16F84 microcontroller. Some changes to PicExec, PicRegBank, etc.
   to allow for subclasses with different memory size/layout and 
   corresponding initialization.

   The 16F84 has 68 bytes RAM instead of 32 bytes on the PIC16C84.


09.06.99

F 
    added ValidName.encode/decodeUnicodeEscapes to several components,
    to support filenames with spaces etc.

F
    minor cleanups in ValidName

N
    fixes to hades.models.special.SerialTerminal to improve robustness,
    also added a WindowListener for windowClosing()

N
    new class hades.models.special.MidiReceiver to dump MIDI messages
    from a 31.250 kbaud RS232 MIDI channel (see the MidiFootSwitch example
    design with the PIC16C84 Controller)


08.06.99

N
    added methods to class hades.utils.ValidName to encode and decode
    Unicode chars in Strings with '\uxxxx' Unicode escapes.
    Changed hades.models.Design to write file and resource names in
    escaped form only, to allow directory/file names with spaces and
    other special chars.


07.06.99

F
    several new configuration file entries to enable/disable editor
    menu items, the system properties dump, etc.

F
    renamed the properties to specfiy the StdLogic1164 glow mode colors


03.06.99

F
    minor cleanups in EventList

F
    cleanups to the master 'hades.cnf' configuration file, also added
    some new properties (e.g. Hades.Editor.EnableDebugMenu).

02.06.99

N
    new class VhdlBatchSimKernel as a subclass of VhdlSimKernel: a batch-mode
    simulation engine with VHDL-style two-list semantics.

F
    removed broken Font() constructors from hades.gui.ImageButton.


01.06.99

F
    changed the static use of 'Class SignalStdLogic1164' in Port to get
    HADES working with Microsoft VM: The default compiler inserted a
    method $class() with default protection to load the Class object;
    which impeded access from subclasses (like PortStdLogic1164).

    The current solution with the 'dummy' signal is not beautiful, but 
    it works.    

N
    changed EditFrame and Editor to switch the Rtlib animation enable flag
    via the corresponding menu item in the Display menu.

N
    added 'enableAnimationFlag' to GenericRtlibObject, with corresponding
    changes to all Rtlib subclasses. Now, if animation is disabled, the
    Rtlib object won't schedule the (time-consuming) wakeup-events to
    update symbols. Also, the updateSymbol() method will return instantly,
    unless animation is enabled.

F
    changed Dcf77Sender and Dcf77Clock to use PortStdLogic1164.

28.05.99

N
    changed SignalStdLogicVector to call simulator.addPendingEvent()
    instead of SimObject.evaluate() directly, to allow for VHDL-style
    simulation with StdLogicVector data.

N
    better checking and protection against virtual machine 'garbage
    collection too slow' in SimKernel and subclasses, to avoid the
    OutOfMemoryErrors when running with JDK 1.1.7/1.1.8 with JIT compilers
    enabled.

F
    cleanups and fixes in DesignManager: removed editorTable, use
    Design.hashCode instead of the Design itself in the designNameTable 
    and designDirTable. Together, this should get rid of the memory leak
    when opening many designs during one editor session.


27.05.99

F
    added calls setMode() on the FileDialog in DesignManager, to distinguish
    between loading and saving of SimObjects/Designs/etc.

F
    minor fixes and cleanups in VhdlSimKernel

N
    first support to disable animation (with corresponding very time-consuming
    repaints) in RTLIB objects.

I
    performance experiments with the new virtual machines ( IBM JDK 1.1.7,
    MS SDK 3.1/3.2, JDK 1.2.1, JDK 1.2.1 + Hotspot)


26.05.99

N
    got VhdlSimKernel for full two-list simulation working

21.05.99

F
    fixed AddSegmentToSignalCommand and CreateSignalCommand to check
    (victim!=signal) defore deleting the victim signal...
    This should remove one of the most sought-after bugs

F
    cleanups in hades.signals.Signal. Also added portPositionTable 
    and the corresponding methods to correcty rebuild the solder dots:
    Now, solder dots are inserted at all vertices with three or more
    edges, or (new) at port vertices with two edges.
    

21.04.99

F
    fixed merging in AddSegmentToSignalCommand and CreateSignalCommand.
    A new SolderDot is now created whenever the merging point is not
    already a vertex in the victim signal.

20.04.99

N
    allow merging of signals for AddSegmentToSignalCommand and
    CreateSignalCommand. If necessary, a new vertex is inserted into
    the victim signal.
    Note that undo() won't work correctly if merging is used.

F
    changed AddSegmentToSignalCommand to forward to CreateSignalCommand
    if the user clicks on an empty (unconnected) Port.

F
    updated DeleteComponentCommand.undo() to reconnect all Signals
    to the target SimObject

16.04.99

F
    tried to improve EventList performance

14.04.99

F
    changed ObjectCanvas to don't print repaintOverflow warnings.

F
    don't update a context tooltip unneccearily, if the tooltip
    hasn't changed (in hades.utils.ToolTipManager.updateToolTip()).

N
    major changes (rewrite) to the StdLogicVector data structure,
    which should result in much better performance for RTLIB 
    simulations.


07.04.99

N
    include new data field "value" in each Port to keep 'persistent'
    info about the Port data value.


06.04.99

N
    new classes hades.models.flipflops.LatchMetastable and
    hades.models.flipflops.DffMetastable to model metastable
    level-sensitive and edge-triggered flipflops. The models
    won't propagate 'U' or 'X' values, but generate random '0'/'1'
    values with a random (and potentially, large) delay.

05.04.99

F
    several fixes to the undo/redo mechanism in classes UndoStack,
    Editor, and many Command classes.

F
    fixed several bindkeys, but still problems due to platform
    dependencies. 


01.04.99

N
    new

F
    rewrote several GUI classes to use JavaFIG SimpleTextViewer to display
    help texts.

N
    new utility class javafig.gui.SimpleTextViewer (see JavaFIG).

F
    added ObjectCanvas popup-menu callbacks for 7483 (pinout) and Stimulus.

F
    fixed reversed bit-order in hades.models.io.Stimulus parseData/writeData.
    

26.03.99

25.03.99

N
    integrated hades.gui.StimuliEditor into hades.models.io.Stimulus

23.03.99

F
    first working version of hades.models.io.Stimulus, with I/O, symbol,
    parser/writer.


23.02.99 

N
   new class hades.models.io.Stimulus for a simple stimuli generator
   (8 outputs, user-specified number of time-steps, StdLogic1164).


xx.02.99

N
   new utility javafig.gui.PresentationViewer and related classes.

F
    major changes to JavaFIG,
    workarounds for many JDK 1.2 problems on Windows.





01.12.98

F
  added menu items and callbacks for the SN 74107, 74138, 74375

N
  new SimObjects hades.models.ttl74.SN74107A and SN74107A_pinout,
  SN74138, SN74138_pinout, SN74375_pinout (realized as subdesigns).


30.11.98

F
  better symbol for hades.models.io.DiodeSwitch

F
  fixed class hades.models.io.SevenSegment to support multiplexed 
  displays 

F
  renamed all 'pinout' variants from package hades.models.ttl74 to
  '_pinout' for better readability. This change includes all SN74xx
  symbols, FIGs, and examples.

29.11.98

F
  fixed the bug in hades.models.gates.Tri, introduced during
  simevent recycling.

F
  changed class SevenSegment to react to the 'kathode' input value

N
  new class hades.models.io.DiodeSwitch

N
  new class hades.models.gates.InvOpenCollector

27.11.98


23.10.98

N
  rewrote hades.models.dcf77.Dcf77Sender to recycle SimEvents

F
  fixed hades.models.flipflops.Jkff

22.10.98

N
  new intermediate class hades.models.flipflops.GenericFlipflop.
  Rewrote all classes from package hades.models.flipflops to reuse
  StdLogic1164 and to use PortStdLogic1164. Also, the flipflops will
  now check both setup- and hold-time violations.

21.10.98

N
  rewrote all classes from package hades.models.complexgates to reuse
  StdLogic1164 objects. Also, the complexgates now use PortStdLogic1164
  ports.

20.10.98

N
  added some performance monitoring code to hades.gui.ObjectCanvas,
  to track synchronous repaints.
 
N
  rewrote some classes from package hades.models.io to reuse StdLogic1164
  objects.

N
  rewrote all classes from package hades.models.gates to reuse StdLogic1164
  objects, in order to improve gate-level simulation speed. Also, all
  gates now use PortStdLogic1164 ports, for much cleaner code and the
  option for better VHDL export.

N
  added the menuitem and callbacks to create the Pic16C84 microcontroller
  to hades.gui.ObjectCanvas and hades.gui.Editor.

19.10.98

N
  added support for 'object reuse' to class hades.signals.SignalStdLogic1164,
  in order to support reused StdLogic1164 objects during simulation.
  
N
  added setter methods to hades.models.StdLogic1164. The class now has
  one 'create new object' and one 'reuse buffer object' method for
  each logical function. In general, the 'create new object' methods
  are safer to use, but the 'reuse objects' may be faster due to
  lower object creation and garbage collection overhead.

N
  added object recycling to classes hades.simulator.SimEvent, 
  WakeupEvent, EventListNode, and EventList to improve performance,
  memory usage, and to reduce garbage collection overhead.

10.09.98

N
  added utility methods scheduleAfter() and wakeupAfter() to SimObject.
  These methods incur a little runtime overhead, but greatly improve
  readability of SimObject's evaluate() methods.

N
  added support for 'tool tip updates' to class hades.utils.ToolTipManager.
  By default, a visible tool tip is updated once a second.


08.09.98

N
  new method getWidthString() in hades.models.StdLogicVector, to
  return a string of the format "<15:0>" etc.

N
  new class hades.styx.WaveStdLogicVector, corresponding changes
  to hades.styx.SmartWaves

07.09.98

F
  changed the 'file logging' capabilities in hades.gui.Console, so that
  the logging is off by default. Call 'enableFileLoggingGUI()' to activate
  the file logging GUI components.

F
  fixed to initSignals() in hades.gui.Editor to allow to initialize
  non-1164 Signals via the menu, too. Modified SignalStdLogicVector
  to allow '0', '1', 'U', and random initialization.

F
  added setValue(String) overload to hades.signals.Signal.
  Also implemented setValue(String) in SignalStdLogic1164 and
  SignalStdLogicVector.

F
  added 'remove probes' menu items to EditorMenuBar, corresponding
  callback methods in Editor.

F
  fixed NullPointerException in RTLIB Mux21. Also used Port subclasses
  and several cleanups in Mux21

F
  bug-fixes and cleanups in UserDefinedALU. Added getToolTip() method

F
  fixed the add() and sub() methods in class hades.models.StdLogicVector
  in order to avoid spurious XXX and UUU results

05.09.98

N
  new RTLIB class hades.models.rtlib.arith.UserDefinedALU, a 16-function ALU 
  with user-selectable mapping of functions to the 16 opcodes

04.09.98

N
  new RTLIB class hades.models.rtlib.register.ShiftRegR
  (n-bit shift-register with shift-enable and clear)

N
  new RTLIB class hades.models.rtlib.io.SubsetFlip which extracts a
  subset of the input bits with inverted (flipped) bit-order.

N
  new version of the Waveform viewer (Styx). Display of StdLogic1164
  values seems to work now.

03.09.98

N
  new RTLIB class hades.models.logic.N1And

N
  added method copy() (copy-constructor) to class StdLogic1164

N 
  new RTLIB class hades.models.rtlib.io.ExpandBit

F
  fixed RTLIB hades.models.rtlib.io.Constant to schedule an event on its
  output during elaborate(), in order to get Constants inside of subdesigns
  working

N
  new RTLIB register with reset, class hades.models.rtlib.register.RegR

F
  changed all RTLIB register model to use the Port (1164) subclasses,
  corresponding compact rewrites of all evalutate() methods.

F
  fixed NullPointerException in RTLIB Mux21 when not visible
  (in a subdesign)

F
  removed unnecessary wakeup()-calls in all RTLIB models with static symbols

F
  don't write an Exception trace after a SimObjectNotFoundException from
  CreateByNameCommand. Report the annyoing (not found) class name instead.

01.09.98

F
  several Colibri-related bug-fixes in DesignManager and related classes

31.08.98

N
  new package hades.models.gates.delaynode with classes DelayNode,
  DelayNode_LR, DelayNode_TB

29.08.98

N
  additional RTLIB classes BusTapRight and BusTapLeft. Functionally, these
  are equivalent to hades.models.rtlib.io.Subset, but the symbol is
  less big to improve readability of schematics with lots of bus taps.
  The name "bus tap" is taken from the SIGRED editor.

N
  RTLIB class for arithmetic two's-complement, hades.models.rtlib.arith.
  TwosComplement.

N
  new symbols for several RTLIB components

N
  new RTLIB memory models in hades.models.rtlib.memory: ROMcs (ROM with chip
  select), RAM (asynchronous RAM), DPRAM (dual-port RAM)

F
  fixed memory-resize and isConnected() bugs in hades.models.rtlib.GenericMemory

F
  improved layout for hades.gui.SimControlPanel

28.08.98

N
  new input semantics (separate U/X/Z and incr/decr) in RTLIB IpinVector
  mousePressed(). Also added support for hex/decimal/binary value display.

N
  major changes and cleanups in RTLIB IpinVector and OpinVector.

N
  further changes in GenericMemory

27.08.98

N
  major changes in GenericMemory and ROM

26.08.98

N
  first version of RTLIB memory classes GenericMemory and ROM, in package
  hades.models.rtlib.memory

N
  new class hades.symbols.HorizontalBarGraph

N
  changed Editor to version 0.51

N
  new RTLIB classes hades.models.rtlib.io.Expander, MergeBits, and Merge3

N
  finally introduced utility Port-subclasses: hades.models.PortStdLogic1164,
  hades.models.PortStdLogicVector.
  Note that similar subclasses for other signal types should not be added
  to package hades.models but to the package where the corresponding signal
  type is included.

25.08.98

F
  fixed the NullPointerExceptions in the RTLIB register classes when an
  input signal without driver was connected to the D input (classes
  hades.models.rtlib.Latch / LatchR / Reg / RegE / RegRE).

N
  new symbols for all rtlib components, using a top-down dataflow
  metaphor (all inputs on the top, all outputs on the bottom, control inputs
  on the left).

F
  fixed hades.gui.MoveSignals to catch the Exception thrown when the
  SimObject's port declaration didn't match it's symbol.

24.08.98

N
  added 'file logging' to class hades.gui.Console.
  Logging is controlled either interactively or via the SetupManager 
  properties "Hades.Console.LogfileName" and "Hades.Console.LogEnable"

N
  added double checking for <ESCAPE> key char and key code to 
  hades.gui.KeyHandler, to get JDK 1.1.6 working in the Editor

F
  changed the semantics of mouse clicks in the Editor: The editor now first
  checks, whether the mouse is on a port (and initiates a CreateSignalCommand).
  This allows to connect objects, whose PortSymbols are not exactly on their
  boundary (or even inside the object).
  If no port is found, the mouse click is propagated to the "mousePressed()"
  method of the corresponding object, if any.

N
  reorganized the editor menu bar. Added the "Signals" and "Special" menus,
  and several menu items to work-around the standard Java memory management.

22.08.98

N
  several changes to accomodate the most recent version of Colibri.

XXXXXXXXX XXXXXXXXX XXXXXXXXX
XXXXXXXXX XXXXXXXXX XXXXXXXXX
XXXXXXXXX XXXXXXXXX XXXXXXXXX
XXXXXXXXX XXXXXXXXX XXXXXXXXX
XXXXXXXXX XXXXXXXXX XXXXXXXXX
XXXXXXXXX XXXXXXXXX XXXXXXXXX
XXXXXXXXX XXXXXXXXX XXXXXXXXX
XXXXXXXXX XXXXXXXXX XXXXXXXXX
XXXXXXXXX XXXXXXXXX XXXXXXXXX

01.07.98

N
  new methods canConnect() and canMerge() in CreateSignalCommand and
  AddSegmentToSignalCommand. From now on, the Editor should not allow
  to connect or merge signals of different types or buses of different
  width.


26.06.98


F
  changes to the Java sources and object symbols as necessary by F--.

F
  moved the "colored by value" graphical objects from the hades.models.ruge
  package to hades.symbols package: ColoredRectangle, ColoredValueLabel,
  Color_DIN_IEC_62.

N
  first models of the "rechnerbaukasten" RT-level components:
  hades.models.rtlib.IpinVector, GenericRtlibObject, Incr, Adder

N
  new class SignalStdLogicVector to model buses of StdLogic1164 wires

N

  new class StdLogicVector modeled after Synopsys's std_logic_arith.vhd
  and std_logic_signed.vhd



03.04.98

N272
  new package 'hades.models.ruge' with SimObjects for the 'Lagemann/Ruge'
  design style: IntSignal, Color_DIN_IEC_62, Constant, Mux, Adder, Register

F271
  several fixes to hades.gui.CreateSubdesignCommand to check for null
  subdesigns or subdesigns with null symbols.

F270
  added method doOpenFile(Design) to hades.gui.Editor to support Colibri

F269
  allow FsmWrapper initialization without versionID.

N268
  included the 'ColibriCreateCommand' into hades.gui.

02.04.98
  
N267
  restructured the JavaFIG class hierarchy, with new package 'javafig.utils'.

01.04.98

F266
  restructured the JavaFIG class hierarchy. Removed all classes and references
  to the old (Java 1.0.2) editor and viewer, with corresponding changes to
  the FIG parser, FIG writer, exporter, etc.

31.03.98

N265
  implemented the 'state output' in 'hades.models.fsm.FsmWrapper'.
  This is the first model to use the 'StringSignal' from N304. See
  the 'examples/javaFSM/ampel.hds' design for an example.

30.03.98

N264
  new classes 'hades.models.string.StringSignal' and 'hades.models.string.
  StringDisplay' as a demonstration for signals that distribute Java String
  objects.

N263
  implemented the 'addProbesToAllSignals', 'addProbesToToplevelSignals',
  'addProbesToAllSignals' method in 'hades.gui.Editor'.

27.03.98

N262
  changed 'hades.gui.CreateSignalCommand' to create a Signal object
  corresponding to the connecting Ports default Signal type. It is  
  now possible to have several Signal types (SignalStdLogic1164, 
  ImageSignal, StringSignal, ...) in one Design.

N261
  added new field and methods to clas 'hades.simulator.Port' to specify
  the base Signal class to be connected by this Port. 
  To keep compatibility with existing Designs, the default Signal of a 
  Port is still of type SignalStdLogic1164, but this may be changed in
  the future.

F260
  several fixes to the image processing classes.

N259
  new synchronous image-filters, 'hades.models.imaging.GaussFilter',
  'hades.models.imaging.DifferenceFilter'


26.03.98

N258
  new package 'hades.models.imaging' with some demo classes for image
  processing, including the new Signal type 'ImageSignal', an image
  viewer 'ImageViewer', 'ImageSource', and several simple per-pixels
  filters ('RedFilter', ..., 'InvertFilter').

24.03.98

N257
  new methods createThumbnail() in hades.utils.Exporter, with corresponding
  menu item and callback code in hades.gui.EditFrame and Editor.

F256
  several changes to the JavaFIG objects and canvas classes to work around
  the "Windows timer resolution" bug, which broke zooming and panning on
  fast workstations.

20.03.98

F255
  fixed class hades.gui.SignalMovePointCommand to automatically (re)connect
  if the signal vertex is moved to a component's port.

N254
  new class hades.utils.TmpFile to create and manage temporary files.

17.03.98

N253
  added setClassLoader, getClassLoader, and getResourceAsStream
  to hades.simulator.SimObject, as a first support for the COLIBRI
  DesignManager.

05.03.98

N252
  new tutorial help pages for 'simcontrol' and 'bindkeys'. Also corrected
  (=deleted) some entries in the 'contents' page.

N251
  new bindkeys 'I', 'O', and 'V' to create an Ipin, Opin, or (small) Inverter
  directly. Changed bindkey for 'signal move point' from 'o' to 'M', to be
  consistent with the 'n' and 'N' bindkeys.
  Finally, changed the bindkey for 'show messages' from 'M' to 'Q'

04.03.98

F250
  fixed the mirrorX() and mirrorY() methods in javafig.objects.GE_rectangle
  and hades.symbols.PortSymbol to update the correct "origin" of the
  rectangle. For the GE_rectangle, we just set the new top-left corner as
  the new origin, while the origin of the PortSymbol has to stay at the
  center of the corresponding rectangle.
  Note that this fix is required to get the HADES "autoconnect" command
  working for SimObjects with mirrored Symbols. 

N259
  use class StringDialog as a WindowListener interface for its own 
  WindowEvents, so that the dialog returns "Cancel" automagically, 
  whenever the dialog window is "closed".

N258
  use 'M' as a bindkey for 'show messages', that is, bring the HADES
  console to front.

F257
  display the current design name in the 'Confirm changes' dialog window 
  (class OKtoQuit).

N256
  added standard Java 1.1 menu shortcuts to the ObjectCanvas popup-menu
  and the HADES EditFrame main menu. Note that the Java 1.1 keyboard
  acceleration uses key combinations of the form 'CNTL-XXX' or 'ALT-XXX',
  which usually requires both hands. Also note that some versions of JDK 1.1.x
  display the wrong accelerator combinations, e.g. Linux 1.1.3 displays
  'CNTL-A' but will react to 'ALT-A'.

  Fortunately, the standard HADES keyhandler will still react to the 
  one-handed keys 'XXX'.

N255
  new subclass hades.utils.FileDialog to specify font name and size for
  the FileDialog as well.
  Unfortunately, some Java implementions seem to ignore a 'setFont'
  on the system file dialog.

N254
  use SetupManager properties to specify font name and size for all
  independent top-level windows except the Waveform viewer:
  hades.gui.Console, 
  hades.gui.ExportOptionsDialog, 
  hades.utils.DidYouKnowFrame

  Corresponding changes to 'hades.cnf'

0.48g, 27.02.98

N253
  new menu items 'Edit -> Mirror object along x-axis' and '... y-axis'
  in hades.gui.EditFrame and corresponding callbacks in the Editor.

F252
  changed hades.gui.MirrorXCommand and MirrorYCommand to check whether
  the object to be mirrored is already connected. If so, the command
  is canceled.

25.02.98

N251
  first attempt at the Intel 8048 microcontroller model,
  hades.models.i8048.I8048.

N250
  support for mirrored (x/y) and rotated (planned) Symbols, with all
  necessary changes to classes hades.symbols.Symbol, hades.models.Design,
  and hades.utils.Parser.

  WARNING: The Hades file format had to be changed to allow for the extra
  symbol orientation information, which is encoded in a String starting
  with "@". Examples are "@N" (normal), "@XYR270" (mirrored x, mirrored y,
  rotated 270 degrees).
  The parser should be able to read old Design files.

  WARNING: Note that mirroring is not a useful operation for several
  components/symbols. For example, mirroring won't work 
  for hades.models.io.HexSwitch or hades.models.io.HexDisplay.

F249
  fixed all JavaFIG objects to support the mirrorX() and mirrorY()
  operations. Note that the current implementation for a 'text mirrorY()' 
  may be changed again.

24.02.98

N248
  new editor command objects 'MirrorXCommand' and 'MirrorYCommand'
  to mirror component's symbols.
  However, mirror'ed objects are not yet supported in .hds files.

 
N247
  new model hades.models.rtl.RAM_256x8 for a clocked-inputs SRAM with
  256 by 8 bits with nME, nWE, and nCS control inputs.

23.02.98

N246
  new model hades.models.gates.Demux14 for a simple 1:4 demultiplexer

F245
  fixed some bugs in the behaviour of hades.models.flipflops.DFFRS 

N244
  new model for an edge-triggered D flipflop with enable and reset,
  hades.models.flipflops.DFFRE

N243
  new menu item 'Show FAQ' and corresponding callback method(s) in
  hades.gui.Editor and hades.gui.EditFrame

F242
  added a 'try/catch' block to hades.gui.SyncRedrawTimer, in order to
  catch possible 'OutOfMemoryException's during repaints.


F241
  enlarged the 'display area' in hades.models.io.LED components,
  to improve the visual aspect of 'traffic light' and 'Laufschrift' designs. 

18.02.98

F240
  clear any existing waveforms when restarting a simulation or when
  changing the design. New method(s) clear() hades.waves.Waveform
  and hades.waves.SmartWaves.

  Also added a new menuitem 'Edit -> clear waves' to the HADES editor.

F239
  fixed all flipflop models in package hades.models.flipflops in order
  to inhibit the propagation of Z,X,U,D signals, and to report correct
  timing information together with setup-time violations.

N238
  further changes to the redraw algorithm in javafig.canvas.GE_canvas
  and hades.gui.ObjectCanvas. 

  Now, ObjectCanvas implements the synchronous repainting with a Hashtable, 
  so that multiple redraw requests on one graphical object are compressed 
  with only the last request remaining.
  This improves redraw performance in all situations, where multiple
  redraw requests per object/component are frequent, like seven-segment
  displays or clock signals. See 'examples/laufschrift.hds' for an example
  of the better performance.

17.02.98


F237
  further fixes in hades.gui.CreateSignalCommand,
  and additional NullPointer checks in hades.signals.Signal.merge()

16.02.98

N237
  several bug fixes and a new redraw mechanism in
  javafig.canvas.GE_canvas, javafig.canvas.ViewerCanvas, hades.gui.ObjectCanvas.
  Some finetuning of the redraw delay parameters.

F236
  several fixes in hades.gui.CreateSignalCommand

F235
  fixed a fatal logic bug in hades.models.StdLogic1164.OR_TABLE

13.02.98

F234
  fixed 'add segment to signal' and 'create signal' commands to allow
  signal merging, if the final signal point lies on an existing signal
  vertex. However, the user is required to <shift>+<click>, in order
  to avoid accidental signal merging

N233
  allow to merge two Signals, new method Signal.merge( Signal victim )

N232
  new bindkey 'v' for 'insert vertex' command

F231
  fixed several signal-editing command classes to watch out and prohibit
  or ignore length0 wire segments.

N230
  new command 'InsertVertexIntoSignalCommand'

11.02.98

N229
  allow the 'y' and 'Y' bindkeys as aliases for 'z' and 'Z' (zoom out/in)
  for better support on German keyboards.
  Also, use 'N' to change a Signal name.

N228
  use Signal.splitIntoSubgraphs in DeleteSegmentFromSignalCommand

F227
  don't allow wire segments with length 0 in CreateSignalCommand

version 0.47a, 10.02.98

F226
  fixed a bug with forgotten re-enable of the popup-menu introduced
  with N221 in the MoveCommand and CopyCommand classes

N225
  improved the internal algorithms in CreateSignalCommand and
  AddSegmentToSignalCommand. Also reduced the redraw frequency dramatically.

N224
  don't show the 'tip of the day' unless explicitly enabled

N223 
  use the 'x' bindkey to delete wire segments

09.02.98

F222
  fixed a major bug in the simulation models of the AOI33 and OAI33
  complex gates.

06.02.98

N221
  some users didn't like the MoveCommand and CopyCommand semantics,
  because the commands disabled all other editor functionality
  until they got a mouseclick over an object to move/copy.
  Now, the commands are automatically canceled when initiated outside
  a valid object.

N220
  new methods 'udpateEditorCloseMenuItems()' and 'enableCloseMenuItem'
  in hades.gui.Editor and EditFrame to enable/disable the 'File -> Close'
  menu item with the standard semantic.

27.01.98

N219
  added 'Cancel' menu item to the Editor, to allow for users who aren't
  accustomed to the 'ESC' key.

F218
  fix to F214

N217
  modified to DesignManager to automatically set pathname and filename
  (xxx.sym) in getFileOutputStreamForSymbol.

N216
  added configure() dialog to hades.models.io.Ipin to specify switch
  delay and default (start) value.

26.01.98

F215
  corrected 'Editor.doPrintEditorTable' method

F214
  fixed inconsistency between layer visibility attributes and corresponding
  menu items when 'hades.cnf' was not found during initialization

0.46a, 23.01.98

F213
  the 'Export->Print (Postscript/fig2dev)' command now uses the options
  for maginification/offsets specified in the 'export options dialog'
  window. Also cleaned up the messages from the Exporter.

N212
  new 'About' Dialog window

22.01.98

F211
  allow undo for the 'delete all' command

21.01.98

F210
  changed export behaviour for PowerOnReset to be consistent with Ipins.
  The current switch state is now colored (gray/red) on 'bw with colored IO'
  export.

F209
  improved default behaviour for the message console. The console will
  only become visible automatically for '-E-' and '-F-' messages.

F208
  new fix for default (export) filename for hades.utils.Exporter and
  hades.gui.ExportOptionsDialog. Default filenames are now 'noname.fig'
  and 'noname.ps'

N207
  new class
  hades.models.register.ShiftRegister (with shift and reset)

20.01.98

N206
  new classes:
  hades.models.register.RegisterR (with reset)
  hades.models.register.RegisterRE (with reset and enable)

F205
  Exporter now updates the 'x by y inches' display, if the magnification
  factor is changed by the user.

N204
  Console calls toFront() on '-E-' and '-F-' messages

F203
  fixed hades.symbols.Symbol to use the standard Hades message Console,
  and to generate an useful error-message when a symbol resource file
  cannot be found

F202
  fixed hades.models.Design to generate useful error-message when
  the (sub)design resource file cannot be found

F201
  fixed minor bug with '.unnamed.ps' filename in hades.utils.Exporter

19.01.98

F200
  introduced 'synchronized' blocks into javafig.canvas.GE_canvas to
  improve the MTBF for the grid-redraw-problem

N199
  new package 'hades.models.registers', intended for n-bit editable
  registers as required for visualization of arithmetic.
  New class 'hades.models.registers.Register' as a simple rising-edge
  triggered D-Register.

version 0.45f, 06.01.98

N198
  support setup properties to specify LED colors (hades.models.io.LED),
  via properties "Hades.LED.Color.<red/green/yellow/blue>"

N197
  support setup properties to specify initial colors for StdLogic1164 values
  and signals (in glow mode) via properties "StdLogic1164.Color.<_U/.../_D>"

N196
  support setup properties specify initial number of saved lines in Console 
  with "Hades.Console.SaveLines" property

F195
  changed all accessor methods in SetupManager to static methods,
  so that 'getSetupManager()' is no longer required.

version 0.45e, 30.12.97

N194
  some new 'tips' about properties/resources and their management

N193
  use resources (from SetupManager) to set Editor and Console fonts,
  Editor and Console window size and positions, to enable the 'tips' window.

N192
  renamed hades.utils.Setup to hades.utils.SetupManager,
  remodeled as a Singleton class with static 'load<X>( filename )' methods.
  Note that this allows you to mix/merge the resources of several
  applications, if necessary.

F191
  don't load new (empty) Designs directly, use the DesignManager.
  New method 'getNewDesign()' in DesignManager.

F190
  improved Exception reporting in hades.utils.Parser

version 0.45d, 19.12.97

N189
  allow to create new Editors (clones) via the "File" menu

F188
  fixed class hades.symbols.ClockArm initialization

F187
  improved class hades.gui.PropertySheet to behave more robust on SimObject's
  without valid Editor-reference

N186
  class Editor now keeps track of all open Editors, method getActiveEditor()
  to reference the top-most/focussed Editor

17.12.97

F185
  modified DesignManager to accept only ".sym" symbol file names 

16.12.97

F184
  changes to javafig.gui.GE_sbutton and GE_colorButton to support
  xfig-style 'update toggles'

15.12.97

F183
  removed Editor as an ActionListener from the Exporter in EditFrame.

F182
  use filename AND directory when exporting, in hades.utils.Exporter.
  Also improved/fixed lots of messages from Exporter.

N181
  new class hades.utils.Setup to manage program environment and properties
   la Synopsys VSS: system, global, user, local

14.12.97, version 045c

F180
  several improvements to hades.utils.Exporter 
  and hades.gui.ExportOptionsDialog. 
  Among others, the 'fit to page' command should now work for A4 paper.

N179
  renamed and improved hades.gui.FigExporter to hades.utils.FigWriter.
  The class now handles full colors, I/O colors, and black and white options.
  Also, the class doesn't any longer need a reference to a GE_olist
  for the list of all GE_object's. Instead, a simple Enumeration of the
  GE_object"s suffices.

11.12.97

N178
  new class hades.gui.ExportOptionsDialog to present the fig2dev options

F177
  changed Symbol for models.io.AsciiDisplay to support black&white export

F176
  BlackAndWhiteExporter supports BboxRectangles (filled with very light gray)

08.12.97

N176
  added method to limit the maximum number of lines in the HADES message
  console. Use 'setMaxLines( int n )' to set the desired limit.

F175
  fixed doClose() in hades.utils.DidYouKnowFrame to avoid null pointers
  when show()n for the second time.

F174
  fixed class and symbol for models.io.LED to use 'ColoredCircle' instead
  of 'Circle' for colored/b&w export

05.12.97

N173
  new class hades.utils.BlackAndWhiteExporter as a subclass of 
  javafig.objects.GE_figOut that exports all objects except
  ColoredCircle and ColoredLine in black and white.

  This allows to integrate HADES exported figures easily and in good
  quality into black-and-white documents (for printing, etc.).
  Note that you should switch off the 'BoundingBox' rectangles on all
  objects before exporting.

N172 
  new classes hades.symbols.ColoredCircle and hades.symbols.ColoredLine
  to tag objects that should be colored even on a 'black and white' export.

N171
  included 'black&white only' option in export dialog user interface 

F170
  automatically disconnect Signals from Ports, whenever the corresponding
  Signal vertex is moved away from the Port with a SignalMovePointCommand

03.12.97

N169
  new class hades.symbols.PersistentInstanceLabel. A label object of this
  class cannot be disabled via the layer control, which is useful to keep
  important labels like I/O names visible even when other labels are disabled.
  Changed symbols of classes Ipin/Opin/PulseSwitch correspondingly.

F168
  new class hades.models.ttl74.SN7432pinout with symbol

F167
  fixed useless warning message from models.io.LED after a copy() command

F166
  improved symbol for models.io.HexSwitch

02.12.97

N165
  new 8:1 and 16:1 multiplexer models, realized as subdesigns in
  models.rtl.Mux8_1 and models.rtl.Mux16_1.

F164
  changes multiplexer symbol labeling on models.gates.Mux21 and 
  models.gates.Mux41. The MSB inputs are now on top.

version 0.45a, 01.12.97

F163
  changed all 'scheduleEvent' calls from AWT driven (mousePressed etc.) events
  to 'scheduleInteractiveEvent' in classes models.io.Ipin, models.io.HexSwitch,
  models.io.PulseSwitch, and models.io.PowerOnReset.

F162
  new method 'scheduleInteractiveEvent' for synchronized (=asynchronous)
  interactive user event scheduling in class simulator.Simulator.
  This should fix the 'user event loss' bug, at negligible performance cost.

F161
  improved EventList.insert() to fix the synchronisation problem for
  interactive Event scheduling.

F160
  fixed ruler labeling in ObjectCanvas/GE_canvas for non-integral zoom-factors
  with new method getZoomFactor_MultipleOfTwo() in javafig.canvas.GE_trafo.

N159
  new menu item 'tip of the day' in the EditFrame 'help' menu

N158
  ObjectCanvas menu items and Editor callbacks for the 74xx series components

28.11.97

N157
  new classes and corresponding pinout symbols for TTL 74xx series 
  components:
  hades.models.ttl74.SN7400pinout
  hades.models.ttl74.SN7408pinout
  hades.models.ttl74.SN7449pinout   (model as before, but better Symbol)
  hades.models.ttl74.SN7486pinout
  These models will generate 'U' outputs unless the VCC/GND ports are 
  connected.

F156
  added Editor as WindowListener for EditFrames. Windows can now be closed
  via the WindowManager (e.g. Windows'95 'X' Button on the title bar).

version 0.44b 27.11.97

F155
  models.io.LED sets FIG attribute to export color corresponding to input value

F154
  models.io.Opin sets FIG attribute to export color corresponding to input value

N154
  new directory '/hades/examples/javaFSM/' with a few JavaFSM/FsmWrapper
  demo designs (RS232 sender, traffic light controller, ...)

F153
  added method 'getOutputStreamForSymbol()' to DesignManager, to allow
  the user to select the file name when writing subdesign Symbol's.

F152
  minor cleanups in FsmWrapper

26.11.97
  
F151 
  further improvements to FsmWrapper, rebuilds correct Symbol, reconnnects
  to all Signals. The algorithm still has problems when FSM I/O pins
  were permutated.

25.11.97

F150
  copy color of LEDs

F149
  allows FsmWrapper.copy

F148
  include 'bulb' icon with DidYouKnowFrame.

N147
  new class hades.gui.ImageCanvas to include GIF/JPEG images with AWT
  Panels and Frames. Naturally, the AWT should have such class.

F146
  first fix to the FsmWrapper rebuildFSM() mechanism, works as long as
  the FSM's I/O remains unchanged.

24.11.97

N145
  class hades.models.fsm.FsmRenderer for high-quality display of the
  JavaFSM icons in the HADES editor, with corresponding changes to
  FsmWrapper.

23.11.97

N144
  new class hades.utils.DidYouKnowFrame to present the 'tip of the day'.
  Wrote some two dozen tips, see file '/hades/doc/tips.txt'.
  (first programming on my new K6/200).

21.11.97

N143
  additional data structures and algorithms in class hades.signals.Signal
  to support the 'wire delete' command. 

F142
  fixed clock edge detection in SignalStdLogic.hasRisingEdge().
  This also fixes the simulation problem with JavaFSM state machines.

19.11.97

F141
  fixed several warnings by javadoc in the class documentation

N140
  added automatic calculation of all SolderDot positions on a Signal
  after 'create signal' and 'add segment to signal' operations

N139
  added internal data structures to hades.signal.Signal to allow for
  the 'delete wire' command and connectivity analysis.
  (vertexTable, vertexArray, ...)

18.11.97

F138
  fixed NullPointerException in signal.Signal due to un-initialized
  driverValues array (introduced by F134)

version 0.44a, 17.11.97

N137
  added several bindkeys for selection commands to KeyHandler
  ('s' 'S' 'R' 'D' 'P'), but the commands themselves are not yet
  operational...

F136
  disabled most of the (annoying) debug-messages from waves.SmartWaves
  and waves.WaveCanvas.
  Added support for Cursor-Keys to move/pan in SmartWaves.

N135
  allow to remove probes from a Signal during simulation, using new class
  hades.gui.DeleteProbeFromSignalCommand, corresponding menu items in the
  popup menu of ObjectCanvas, and event logic in hades.gui.Editor
 
F134
  fixed NullPointerExceptions in SignalStdLogic1164.resolve() because
  of un-initialized driver values. 

F133
  fixed filename handling in gui.Exporter. 
  The chosen filename and directory are now used to construct the
  name of the intermediate FIG-file. For example, after selecting
  'dlatch.ps' for Postscript output, the required corresponding FIG-file
  will be called 'dlatch.fig' (in the same directory).
  Note: Be careful not to overwrite existing FIG-files by accident.

version 0.43b, 14.11.97

N132
  first attempt to realize resolved Signals.
  Currently, class hades.signals.Signal contains an array to store
  the values of all its senders. Perhaps it might be better to store
  these values in the SimObjects or their output Ports?!

F131
  tried a new version of 'synchronous repaint' in ObjectCanvas.

F130
  fixed 'signal move point' command to exclude points outside the current
  canvas snap grid from moving.
  It is still impossible to separate n points after they were combined.

13.11.97

N129
  added method 'message()' to ExceptionTracer

N128
  new bindkeys in KeyHandler:
  'A' for autoconnect
  '!' for debug on/off

N127
  added package 'hades.fsm' with the complete JavaFSM state machine editor
  and class hades.fsm.FsmWrapper.
  Added corresponding 'create' methods to the HADES editor and object canvas

version 0.43, 12.11.97

F126
  finer granularity of try/catch blocks in Design.write() for better
  handling of I/O exceptions

N125
  new command line option "-cxywh" for hades.gui.Editor to set the
  initial position and size of the message console

N124
  added 'autoconnect' menu items to EditFrame and ObjectCanvas,
  event handling in hades.gui.Editor

N123
  new command hades.gui.AutoconnectCommand to connect a SimObject to
  all WireSegments near/on its Ports

10.11.97

N122
  class hades.utils.ExceptionTracer to allow on/off switching of 
  exception traces. Corresponding command line option -vv in gui.Editor

F121
  fixed DesignManager: stores file name for Designs in special Hashtable
  for automatic 'save file' command.

F120
  fixed DeleteCommand: finds Signals before SimObjects to allow
  deletion of Signals without intermediate vertices

F119
  fixed DeleteCommand: delete wire should not generate any more NullPointerEx.

F118
  fixed double insertion of WireSegments into the object list in
  CreateSignalCommand and AddSegmentToSignalCommand introduced by N105

F117
  fixed Signal external representation (double/multiple usage of Vcc/Gnd
  components)

F116
  fixed Signal addSegment() method from N105

N115
  new class
  hades.models.fsm.FsmWrapper
  first version

N114
  command line arguments for help, debugging, and initial window size. Try:
  java hades.gui.Editor -help


06.11.97

N113
  new classes and Symbols:
  hades.models.io.Pullup
  hades.models.gates.InvSmall

N112
  new interfaces to signal SimObjects which act as hierarchy connectors
  like Ipin and Opin:
  hades.models.InputConnector
  hades.models.OutputConnector

F111
  fixed flipflop evaluate() methods to avoid null pointers when inputs
  not connected, in classes:
  hades.models.flipflops.Dff
  hades.models.flipflops.Dffr
  hades.models.flipflops.Dffrs

F110
  fixed evaluate() methods to avoid null pointers during elaborate() in
  classes hades.models.ttl74.SN7449 and SN7449Pinout

F109
  new Symbol for class hades.models.gates.Mux21 with all Ports on 1/4 inch grid

F108
  fixed bounding box calculation for 'zoom fit' command

N107
  added command class 'MoveToPositiveQuadrantCommand' 
  to guarantee that all objects of a Design fit into the positive
  coordinate quadrant (especially useful for xfig export).

N106
  changed Signal graphical representation completely.
  All Signal are now constructed from separate two-point WireSegments.

N105
  allow Signal 'add segment' between vertices. 
  Fixed wire redraw during 'create' and 'add segment' operations.

N104
  allow 'unconnected' Signal creation, both at wire end (shift+click)
  and wire start ('W' bind key) points.

N103
  new Methods 'getEuclideanDistance()' in hades.symbols.WireSegment
  and 'findNearestWireSegment()' in hades.gui.Editor
  to better support the Signal 'add segment' command.

N102
  new animation-redraw model for JavaFIG/HADES.
  interface javafig.canvas.SyncPainter

N101
  split InteractiveSimKernel into:
  hades.simulator.RealTimeSimKernel             (as in 0.42)
  hades.simulator.InteractiveSimKernel          (freeze time if idle)

F0100
  new method 'processPendingRepaints()' in hades.simulator.SimKernel
  to support synchronous animation. Not yet fully functional.


----------------------------------------------------------------------
verion 0.42 and previous

* no revision info available
