}

/********** to-do list **********

- pragma test assert cycles > n < m
- note the reserved words...
- derive in-out from use within the function body!
- and,or,xor folding is not correct for non-boolean values!
- > and < must take care of value size!
- handle pbasic
- now at can be 0 : 5 for bytes...
- __FILE__ __LINE__ __DATE__ __TIME__ : is dat zinnig?
- detect 'outside-independent' parts ->execute
- distinguish logical and from bitwise and (&& for logical)
- alternative implementations
- for [ [i in] x to ] y [step z] loop
- pragma optimization on/off, scope?, selectivity?
- loop exit
- 'local' global vars
- initialisation sections (if used...)
- arrays, indirect addressing (register array at 0)
- take address
- floating-point
- string handling
- remember flag effects
- temporary elimination
- unused var / scope elimination
- scope reduction
- var scope splitting
- within else the then-overwritten values should remain known...
- simulate parts which do not depend on external input?
- no location for "name already declared in current scope"
- no log after simulate...
- loop name, loop continue | exit
- once loop
- record type
- array type
- type declaration
- access type
- enumeration type with representation
- modules
- end <name>
- 'either' for constant code
- currying
- debug
- what to do with / 0
- check in squash will kill user-defined + : byte
- call depth for asm call ignored
- byte, word, long coercions needed (also from universal!)
- exclude reserved words from declarations
- how does location_string handle a bogus loc? (check in list??)
- open with "b"
- &&, ||
- an error should also show jal.c source loc (at least in verbose)
- show include stack? on error
- pbasic mode or front end
- c mode or front end
- jjlib monitor, serial, serial_modulated
- case/switch
- ~ => bit-wise invert
- simpeler token separation
- test = 0 <> 0 etc can be coded faster
- disallow assignment to IN parameter, allow reading non-volatile out parameter
- target_first_eeprom
- stack size check: assembley consumes lost of stack!
- out of mem: show how much already used
- check both put/get required, or use 'allowed set' (ook voor params!)
- 'put'get labels are base name!
- no universal-consts in the assembler output, not even as comments
- tests for squashing of complex expressions
- 'put or 'get with (more) parameters!
- should not hack the args in compile_one
- nr of steps does not really work correctly
- add a jal stack size killer to the test set
- call-once inlining
- reorder procedures to get 'bump into' chaining
- better 'assignment classification' in new_assign, out of the squasher
- gather virtuals only once
- use functional notation in the parser
- use functional notation in the code generator
- show_subtree should be improved
- improve simulation performance
- use only one transfer vector for in-only or out-only
- use precall in assembler output to print procedure header
- use w for transfer to a subroutine
- asm now can not access a bit variable (bsf, bcf)
- jal code inside assembler (for e.g. jumps around jal code)
- squash-temps in successive statements get parallel
- simulation should either maintain sim_* or the separate bits
- eeprom variables (pragma?)
- show call tree (main, indirect, interrupt )
- IR send and receive
- provide absolute cycles for assertions
- var ... is ... should be implemented by copying the ref
- optimize: don't call an empty procedure!
- use w for variable passing
- parameters at fixed location?
- tune library
- wisp should have "smooth" entry to tty
- ! sec delay is not accurate...
- remove unused transfer bit & byte
- better explanation for register allocation in asm
- x at y for 'put and 'get?
- translate djo course
- jpic bit assign to tris copy is now volatile, 1 code too much...
- named parameters
- address is not shown in print_tree
- add 24c64, philips, document
- asynch serial routines take too much code, input doesn't work well
- use of clock before pragma should be detected!
- manual: 16x84 pinout, better chip summary
- enumeration type
- a + = 1
- a ++
- single call inlining
- faster compiler
- less memory
- manual: user-defined operators
- jseven seven_degrees etc.
- test delays with a canned oscillator
- faster RTL, more asm?
- better *, / and %
- double declared variable complains at NAME and does not show previous location
- something wrong with reported stack use
- make bcf <bit variable> possible
- make movlw <variable> possible
- show # non-empty source lines (ex blanl, ex comment)
- code gebruikt pic_flag_zero etc. verkeerd!
- how come that the shifts << and >> are not in the rtl?
- test PIC flags in jal
- multiple interrupt procedures
- look at ASM output for comments
- movlw - ( overhead + 1 )
- s_elsif
- target clock could be shown in a better way!
- optimizer which walks the asm and discards superfluous code and page
- add selective SX assembler test (t0066)
- more flexible assert, test the delay times
- test the non-availability of some instructions
- efficient for has been eliminated.... use only with consts!
- t0078 ????
- transfer_size check is too optimistic!
- adapt assembler test with if... (t0066)
- code_code etc sets the 'preserve' default false, otherwise (asm) true
- a + 5 could be coded directly....
- save call page/bank bits on stack
- use call/return which saves the bits
- eliminate page/bank
- code_while is ugly for sx
- code_for is ugly for sx
- sx: goto __indrection_high is output even when it is not used
- the macro's can disabled the listing??
- array(x) of byte
- a=@y
- assert shoud show source line
- make test full stop at first error?
- SX interrupts
- look again at all tests
- interrupts don't work?
- interval does not work
- serial does not work
- busy send and receive via busy delays?
- internal osc configs; now allowed for 16x84
- @5670 be ashamed!
- look again at jpic 
- assembler output contains too much source comments, e.g. in jump table
- indirection code is not very efficient
- return as last statement should not have a goto
- use only 3 instead of 4 pages for SX!
- try external clock 16MHz
- test rindert's math
- code after a forever loop is dead...
- check stack size calc, list call tree
- @ to get the address of a variable?
- work\serial.asm
- use work\16c84.jpg in assignments!
- pragma label is not described?
- test serial again
- @5558 ( x + 1 ) << 1 does now call op_shift!
- for x loop can be optimized 1 or 2 instructions (pre-incr?)
- interval.jal mentions bug in the squasher
- boolean xor now squashes firts, even when it is small....

---------- for release

- test full OK at linux
- test full OK at linux
- adapt notes.html
- check version/date: manual, homepage, read.me, compiler

---------- to do

- make release-checklist?
- add e000? to compilation checks (SX error in e0004)
to do:
- e0005 for SX28 walking light with inline assembly
- how much gain?
- word: t0094
- file_put, file_get for SX

documentation / changes in next version:
- asm file shows page and bank overhead
- code, page prefix
- pragma preserve code, page
- SX code somewhat better, around 2* size of 16x84 code
- -oB
- w used for parameter passing, pragma optimize [no] w, -oW
- "at" for parameters, jpic.jal reworked (less code)
- bug in interval corrected (could hang serial routines)
- jal.doc
>>>> released as 0.4-15
- eliminate tail goto in procedure / function
- problem with passing 'put & 'get (introduced in 0.4-15) solved
>>>> released as 0.4-16
- eliminate asm goto p problem
- -r option
- pragma keep var ...
>>>> released as 0.4-17
- pass function result back in w
- use jumps for compound boolean expressions
- use dest-f opcodes


heat:
- heat.asm @219
- any verbose should stop source progress logging
- inline single called routines
- inline pragma
- inline very small routines
- pas in w also for a 'middle' parameter - requires reordening!
- code after a forever loop is dead

t0097
jal.doc (adapt release.bat, read.me)

- -rs : include that is NOT included must kill line!

- re-use w: down & back from 7725

***********/

/* 0.4-20
- repair the use of skips in if statements

*/


/* incr for SX is again disabled... */

/*
- return and retfie are accepted for 12c508!
- 'put that is only passed to a proc that does not use it is never var-allocated!
- t0087 assertion failure when used with SX
*/

/* to do for Jal 8K:
x- test c508
- page in interval interrupt
- especially bank phase takes a lot of time...
x- print-spaces should depend on other length...
- check debug output (autom. in test output?)
x- problem with virtuals
x- pass variables that do not have a virtual...
- reported code size (include gaps?)
- reported stack use
- reported var use
x- loop is now after the procedures...
- 2*put : b is a, both are used, hence have unqiue vectors
- test for generated 'put'get bit
- test for generated 'put'get for 'at' variables
*/                                               

/* 04-44
- target_chip bug (wrong ao. for 16f628) corrected        
- goto at end of interrupt routine bug corrected
- jdelay 20 Mhz corrected     
- variables in procedures that are only called in assembler
- variables in interrupts (NULL pointer) bug corrected
- note: previous workaround caused problems
*/         

/* -4-45
libraries: *i created
877 eeprom_write bug corrected (still sets gie)             
number of eeprom locations derived from target specification
*/  

/* 04-46
unneeded code page setting removed from 12c508  
code page settings for 12c509 corrected
*/

/*
04-52:
eliminate x = x
*/
