This file documents items removed from the TODO list as they were completed,
with the first release at which they are completed.

For other features of each release, see the release notes at
https://github.com/duncan-roe/q/releases
(some release notes have been updated to reflect current behaviour)

-- v58
Accomodate C23 bool type. Still define bool enum if C standard is lower
Fixed bug whereby Q$0 stopped working after Q in macro degraded to ^NU
Fixed bug whereby the ALU could set FBRIEF / FNONE when fm+v was asserted
Opcodes SBIN & SNBIN discover if q -b or not
Optimised writfl if no o/p conversion (binary or no fm+tw,+dw,+l,-s &c.)
Enabled Q to work in an open pipe (e.g. tail -f|q)
 - Nested main called in a loop
 - if poll(2) sees no data and have read at least 1 line, process lines read
 - Only happens if -Continuous option on command line
FReprompt command takes an optional message arg
There are catalogues of the foundation and word macro suites e.g. H FNDTN.CAT
There is a "contrib" directory for non-core macros
INTERNALS
	use stdint types where appropriate

-- v57
Opcode XMODE to set fmode from X-reg after command read (for ^N7)
Specify file for monitoring input (from any source)

-- v56
Regexp search mode for L & Y (but not FL & FY)
Opcodes PSHWDTH & PSHHGHT push screen width & height to R
Audit macros to not use alpha tab ids (preferably use tabs 75 - 80)
workfile.c, readfl.c & maybe others to have #pragma to turn off optimising
Do not visbell more than once every 1/10 sec
Add ~/bin/qm (list macros) to make install
Create man page for qm
q -v to not action FD Y (Changed to q -vv)
FB to use clock_gettime (replaces gettimeofday) for 1/5 second interval
FReprompt command to bring up q command line from w/in macro:
	Q continues macro; FQ abandons
	(Renamed from FRecurse)
Do Delete properly (i.e. entirely inside workfile.c)
INTERNALS
	Fix runindent label squashes
	More GIVE_UP macros - use error_exit as standard label
	rework asg2 blocks (including xistcs.c)
	Use meaningful names instead of logtmp &c.
	Tidy scmnrd.c in particular
	return bad_rdtk() once H & L are subroutinised
	Eliminate FTN COMMON in favour of extern / instantiate
	Re-organise q.c for static fns at end
	Maybe re-organise q.c for no internal fns

-- v55
New read-only ALU Q register for return values from Q
2 active pseudos to run a shell command and receive stdout/stderr (backtick)
	e.g. if n4014 & n4015
	n4014 {shell command} or n4015 {shell command}
	^ND^N^<4014> returns stdout (minus final Nl)
	^ND^N^<4015> returns stderr (minus final Nl)
	^NM^<4014> (or <4015>) as above
	If defined as n4014, error in cmd => error in macro
	If defined as n4015, command status returned in Q (0=good):
		macro continues
	Update HELP
	Update man page(s)
New basic pseudo ^NW<macro id> return length of macro in Q; -1 if undefined
Can test if a macro is defined: (done by ^NW)
Retire ^NY pseudomacro (do tab subtraction)
INTERNALS
	buf is always a local; utility buffer is ubuf

-- v54
man page for Q macros [ q_macros(5) ]
man page for Q opcodes [ q_opcodes(5) ]
FQVERSN opcode to push Q version to F

-- v53
New active pseudo to format output of integers (e.g. as hex / octal)
New active pseudo to output UTC time
Use GNU autotools so can package for Slackware
	(ended up with Makefile accepting config-like options)
tilde expansion works for any user name
INTERNALS
	Drop non-ANSI C support

-- v48
^F & ^B to stop after all whitespace chars, not just space
^G & ^NG space to optionally operate on all whitespace chars (new FMode mode)
Whithdraw k cmd in favour of unary !
INTERNALS
	alledit.h (now prototypes.h) prototypes to have variable names

-- v46
New opcodes to get (set) tab interval used by fm+t
^N^I &c. to use above opcode

-- v43
Macro catalogue for foundation macro set

-- v35
(Nothing from TODO)

-- v33
(Nothing from TODO)

-- v32
(Nothing from TODO)

-- v27 (FPU Complete)
(Nothing from TODO)

-- v19 (ALU COMPLETE)
Allow "/*" comments on n7ooo lines
Add reverse Polish calculator
update scmacs.info [now fndtn.cat] a lot (for pres'n)
Some option to display version

-- v6 (RUNS IN PIPE)
Xistcs command to work in a macro
Be able to run in pipe
	need -i first
	need -o functionality first
	At start: open temp file; cat stdin to it, q to it
	At end: s; cat temp file to stdout; rm temp file
INTERNALS
	Replace terminal ioctls with tc{g,s}etattr
