icd2: assert in progress when programming with icd2 debugger

TODO programmers:
* icd1/2: optimize programming/reading: only program/read what's necessary!!
* direct: alternate method to direct-program "Vdd first" chips (needed ?)
* pickit2: protocol for firmware 2.x
* support for other bootloaders (AN851, ...)
* look into xwisp2/avrdude
* pickit1/2: speed-up by not programming mask words and by programming 4/n words when possible...
* pickit2: now supports 16F886/887
* add promate2
* direct: support dsPIC
* add option to not autoload firmware (?)
* direct: support 16F88X devices
* icd2: 12F609/615 16F610 16F677(debug) 16F88X 30F1010/2020/2023
        famid for 18J devices
* pickit2: configuration to set target voltage to different values (?)
* icd2: progress for firmware uploading
* psp: add 18F support
* psp: detection of programmer type (PSP, JuPIC, or Warp13)
* psp: for Warp13, there are some differences for 18F devices...

TODO debuggers:
* gpsim: add stopwatch feature + clock speed config
* icd2: fix 16FXXX debugging: init + reset + ...
* 18F1330-ICD ?
* icd2: how to read PORTB from 16F7X7
* device power toggle action: problem while running/debugging... (?)
* should be able to read/verify/blankcheck while debugging: restart debug: ask ?
* icd2: support more than one breakpoint for 18F
* advanced breakpoints (register, function, ...)
* add icd1 debugging
* support sdcdb (?)
* support ICD from CCS
* PIC30: no disassembly in disassembly listing

TODO interface:
* set breakpoint in disassembly listing, close, reopen: not displayed...
* escaping in string register entry
* add serial terminal
* "read all" registers is slow (gui refresh for each read)
* add PC and goto PC in breakpoint list view (?)
* add "random/set_range/..." actions to each range in hex editor
* more filters in device selector
* undo/redo + better selection in hex editor
* .o view: more complete (?)
* renaming of source files
* COFF disassembly highlighting does not properly highlight multiline comments for C

TODO toolchains:
* support CC8E
* PICC: no need to compile and assemble in two steps for C files
* PICC: test debugging (from C or ASM files)
* mix different compiler and assembler in a project... (subproject ?)
* support for MPASM/MPLINK (mpasm freezes my version of wine...)
* error/warning filter for C30/PICC/JAL/C18
* syntax highlighting for JAL: highlight assembler blocks
* better syntax highlighting for Boost Basic
* PICC Lite windows executable crashes with wine
* support dsPICC: demo windows only and not working with wine
* support C2C, C2C++, P2C: exception in wine...
* support Proton Basic compiler
* library project: other toolchains ?

TODO generators:
* fix cname generation for BSSEC/BSSIZ SSSEC/SSSIZ (none supported yet by gputils/sdcc ?)
* add missing template generators
* config generator: add/fix config names for gpasm/sdcc (18F) + picc + ...

TODO command-line:
* add "merge" commands to "piklab-hex"
* add utility to disassemble (?)

TODO misc:
* if CTRL+D in konsole: should restart it...
* check endianness: it should be alright since we are reading from hex file and outputing strings (?)
* add log settings: log file / timestamp
* allow saving hex to other formats
* shouldn't we always use the IHX32 format for devices 18 and up ???
* Vdd-frequency graphs ignore different osc/modes...
* code for UserId disassembly doesn't seem to be right...

DEVICES:
- finish checking device XML with XML Schema...
- make an automatic parser for file "gpprocessor.c" of gputils to extract coff codes.
- check list of devices against MPLAB for missing devices and discrepencies.
- config bits: check config bits from MPLAB
- vdd/freq: not sure I understand the Vdd range in 30F datasheets
- sometimes "vpp" depends on "vdd"...
- revision names...
- 16F630-ICD has lower Vdd requirements for read/write
- for 18F1230/1330 16F88X: Vdd-F graphs not available yet...
- 12F6XX-16F6XX-ICD have lower Vdd requirements for bulk erase
- checksums:
    unknown             : 16C641/C661/C84 18J 18F2XXX/4XXX
    all wrong (?)       : 16CE923/CE925 30F
    protected wrong (?) : 16CR73/CR74/CR76/CR77 16F72/F73/F74/F76/F77 16F873A/874A
                          18F1230/1330
    datasheet wrong (?) : 12F508(Off:cc=DC68)
                          16C55A (All:cc=F332) 16C56A(All:not XOR4)
                          16C712(size=3FF)
                          16F616 (All:bc=FFBE cc=CBD8)
                          18F4331(same as 18F2331)
                          18F2439/4439/6520/8520 (wrong program size)
    blank value discrepencies : 18F6525
- 16C433: config bits datasheet do not agree with progsheet (used progsheet)
- 16CR54/16C557: status ?
- 16HV540: discrepency between datasheet and progsheet for CP bits
- 18F2585/4585/2680/4680: data sheet is wrong for block description (boot block size is variable)
- 18F6X10/6X90: discrepencies between datasheet and progsheet for PM and EBTR bits

- unknown devices (from gpasm) : 18F2681/F4681/F64J15/F84J15
- 16CR57A ?
- nr: PS501 PS810 PS700
- new devices:
    33F
    24F16/32/48
    18F6628/8628/6723/8723 (compatible 18F8722)
- future devices:
    16F526
    18F23K20/24K20/25K20/26K20
    18F43K20/44K20/45K20/46K20
    24FJ256GA110

GPUTILS: 0.13.5
- 16C54A: _CP_ON doesn't yield 0x007 [fixed in trunk]
- 16C715: _CP_75 is missing [fixed in trunk]
- 16F737/767/777 16F87/88: _FCMEN_OFF doesn't yield 0xFFE [submitted]
- 16F883/884/886/887: BORV_21 doesn't yield 0xEFF
- 17C42A/C43/C44: _PMC_MODE doesn't yield 0x7FAF
- 18F1230/1330: BORV doesn't have the correct values in .inc file
- 18F258/458: BORV_25 should be BORV_20
- 18F2510: using 12F510 lkr (?)
- 18F6X10/6X90/8X10/8X90: missing PM/EBTR (if they exists on these devices ??)
- 18J: config bits commented in "inc" file

SDCC: 2.7.0
- 16CR620A/CR73/CR74/CR76/CR77: missing include
- 16F616/F747/F946: missing include
- 16F737/767/777/87/88: cf gputils
- 16F886/887: missing DEBUG define [fixed in trunk]
- 18F1320/2320/2525/4525: missing include
- 18F2221/2321/4221/4320: not supported by GPUtils 0.13.5
- 18F4455/4550: missing ENICPORT_ON
- 18F4620: missing XINST
