Versions of Minerva =================== If it's really wanted, I could conceivably try to work out in detail what were the changes to Minnies prior to version 1.76, but this would in fact be quite horrendous to do. I didn't keep notes, and everything was changing quite rapidly as I cured massive system bugs that were preventing me from getting MultiBasic's working. I DO keep the source code for every version. Essentially, all versions 1.6x were preliminary to MultiBasic and were clearing out all the known bugs in earlier ROM's, plus a few(!) enhancements being added (like working graphics...). There is a chunky gap between 1.67 and 1.73, when none of the intermediate versions ever got out the door (well, some QMAS members had them inflicted on them at times!). This was the period where MultiBasic became (gradually) a working concept! I believe the changes up to 1.76 were then fairly minor, but if someone wants me to check out any detail prior to 1.76, I can do that moderately easily. Actually, we were guilty, just this once, of having two version 1.76's! While we were at, I think, Papworth I noticed the "stipple bug", and as it was a doddle to quickly patch it to work correctly, we did so. Naughty! Now for the detail: Key: a - avoidable c - crash possible e - enhancement u - upgrade needed w - essentially cosmetic problem Version 1.76 ac - LBYTES/LOAD/EXEC (FS.LOAD) from mdv was location sensitive. ac - VER$(n) had the old problem, as in "VER$(0)&'ouch!'". w - Graphics stipple pattern one row off. u - MultiBasic could sometimes hiccup when copying its ancestor's name table. Version 1.77 a - Serial output held up when input pending on other port. ae - Short and long tokens used in Basic to reduce prog size & increase speed. e - RENUM various bugs fixed, like it wasn't doing various BV line numbers. e - RENAME (FS.RENAM) on mdv used to change the file's date. e - Syntax changed to allow things like "DATA'x'", i.e. no space needed. e - Corrupt program files are less likely to crash SuperBasic. e - WHEN handling made more reliable. e - Parsing speed increased. e - PEEK/POKE[/_W/_L] enhanced to access SV and BV areas simply. e - Allow ANY expression to be string sliced, e.g. "(DATE$)(TO 4)" = year. e - CA.GTxxx no longer destroy any of D4, D6, A0 or A2. e - LIST/DLINE parameters are handled better. - Syntax allows curly brackets, but they don't do anything (yet!). Version 1.78 cu - Drivers using the SER vectors had problems. E.g. the MEM device. e - Add SX_TOE byte for turning off enhancements. e - Bit 128 in SX_TOE prevents the check for files open in FORMAT. e - Avoid bug in some versions of WMON/WTV which pass border width as a byte. e - Allow CTRL/space to get out of a DIR listing. e - Bootup screen includes memory size and version. e - ABC keyboard handling routine improved. - Didn't quite work with 68020 card. Version 1.79 e - IPC commands are actioned faster. E.g. BAUD 9600 functions 20% faster. e - BORDER with no parameters accepted (as per Jan Jones' book). e - BORDER parameters accepted on the end of a WINDOW command. Version 1.80 u - RENAME (FS.RENAM) was not validating its parameters correctly. w - SBYTES/SEXEC/SAVE now keep incomplete files (reverted to old system). e - Vectors for mdv handling added, like those shown in QDOS Technical Guide. - Soft reset made to work on 68020. Version 1.81 u - Correct OPEN/CLOSE which didn't like it if the #chan was already OPEN. u - Stop CLOSE from complaining when its #chan wasn't OPEN. e - Change inbuilt CLOSE to follow TK2 definition. - Another hiccup on the 68020 fixed. Version 1.82 au - Correct handling of file end on #0 for MultiBasic's, so they end the job. e - Add date, time and day to boot screen. e - Make quick reset FAST. (circa 2 secs on 896K Trump Card). Version 1.83 e - Add vectors $168 and $16A for clearing memory, like the MOVE vectors. e - Speed up MT.ALCHP, MM_ALCHP and DIM by using fast clear routines. e - Slight speed increase for the byte queueing mechanism. u - Change scheduler so that lots of QPac2 buttons don't slug the system. u - Restart recording SV_WP, in case anyone uses P26 on the IPC. e - Experimental recording of additional status bits from the IPC. u - Cure TRA bug ("a" was doing "-1,a" and ",b" was doing "b,-1"). u - Cure MT.CNTRY bug (D1.L=-1 set SV_TRAN, instead of leaving it alone). au - The ROM versions of SBYTES and SEXEC set the wrong file type. u - Allow LOAD and LRUN from inside PROC/FN calls. u - Cure some oddities in error handling of EDIT/RENUM/DLINE. e - Allow ANY size/position in SD.FILL and BLOCK, doing only bit in window. e - Cure microscopic positioning and FILL edge effect in MODE 8. Version 1.86 au - FILL 0 when fill was off was returning a positive error code. ce - Windows greater than 32K are now handled properly u - LOAD, LRUN, MERGE, MRUN we a little confused in programs. Version 1.87 e - add I2C routines for Mk2 Minerva Version 1.89 e - extend ramfail delay to 15 seconds, by clock, to make it useful on GC u - for GC, make routines use vectors, where GC might replace the code we - correct the single bug patched by GC, to allow more than 1.99MByte of RAM w - be more careful about microdrive "special case" sector handling e - improvement to floating point addition rounding (last bit of close values) e - improvement to circular and logarithm functions of large/small arguments cu - cure "block at edge of window" (BLOCK outside, but touching right/bottom) u - redefine II.raw (control buffer in A3 on exit). e - Do not even look at I2C when booting on a GC! Version 1.90 w - cut out erroneous extra 12 second delay on mdv FORMAT u - cure bug that could cause/stop ser1/ser2 transmission switchovers w - reduce code in mdv read a massive amount and improve drive speed tolerance e - Square root massively speeded up (fast as divide). PRECISE accuraccy. u - PAUSE allowed, even if channel (default #0) is invalid (i.e. "scr") e - ACOT(y,x) made to give the same answer as ATAN(x,y), to be consistent Version 1.91 u - Look for GC "Gold" at $4000A at initial boot, to stop duff I2C attempt Version 1.92 u - Correct STOP in I2C driver (it wasn't sending it!) cu - Tolerate SEL variable which is given as int, but is a fp parameter u - FOR variable reused as REP released to little space u - Inline IF handling corrected (long standing bug) Version 1.93 e - Re-introduce IPC interrupt, to get 19200 receive working full speed e - Support separate output baud rates for Hermes e - Make DIR listing more sentitive to "Break". e - Second screen handling improved. e - Speed up by string compare and INSTR by 25% (now about 15% faster than JS) u - Correct bugs in string compare (decimal point at end of string) e - Line edit (IO.EDLIN) vastly enhanced (word move/delete, scrolling, etc) e - EXEC and EXEC_W allowed to pass channels and a string e - Long queues and pipes supported e - ID pipes added, allowing multiple connections, etc. e - Throwaway device added e - MultiBasic built in, allow a bare QL to multitask copies of SuperBasic cu - Correct missing ENDDEF & error break out problems Version 1.94 e - Correct bugs in handling of independent serial baud rates e - Gold Card compatible handling of serial port switching Version 1.95 - Revert to simpler 2nd screen handling, for pointer interface Version 1.96 e - Allow OVER[#chan] to default to OVER[#chan,]0 e - Support editted input e - Support array READ and INPUT u - Some un-quoted filename strings got junk, bad params could hiccup w - Reject DLINE with invalid channel e - Network driver verifies stop bits on incoming bytes e - Clear args in reverse order (cures problems with DEFFN silly(x,x)) c - Adding m/c proc/fns while inside SB proc/fns could cause problem at CLEAR e - Slicing multiple lengths from string arrays now makes a proper array slice e - Correct bug when slicing variable with invalid range e - Make COS/SIN/TAN/COT return zero for huge arguments (why not?) eu- SQRT(4^x*(1-2^-31)) was returning -4^x (after all, it is +/-) e - Don't RESTORE 0 when a bad parameter is given e - Totally free DIM or LOCal before reallocation (stops more fragmentation) e - MT.FLOOD (FILL) uses window height: saves space and allows tall screens Version 1.97 e - Add facility to extend supervisor stack size with a software reset e - Add mt.extop (3) for compatible, but better method than using trap #0 c - Concatenatiing to make a string longer than 32764 could corrupt basic c - FILL$ was allowed to produce a string of 32765..32767 characters c - DLINE to the last line could screw up the program and crash a - The extended pipe driver was mixing up p/t for permanent/temporary a - The new id pipes did get a null link word on quick Mark 2 power up u - The ERR_xx routines were returning true if any higher error had happened u - The BEEPING extension was not functioning correctly u - The I2C read to buffer with acknowledged last byte always sent a STOP u - Yet faster movement around SuperBasic programs - in all situations u - LIST screen management considerably improved u - Accept unquoted file names in yet another obscure situation a - Correct bugs in format microdrive (found by Miracle Systems) - Downgrade: accept 3 params for CURSOR, and hope! (JS bug & fudgers) - Downgrade: accept numbers with no digits, bad... but people expect it - Downgrade: preserve a6 across io routine calls, undocumented JS feature! Version 1.98 Currently known problem areas: D.P.'s CHARGE works badly. It constructs "pseudo"-BV_NT/VV/RI inside BV_BF. FLASHBACK has some minor funnies in the "view" option. We're told the French Minitel loses data when sending at BAUD 1200 to "seri". QPtr EDSPR has a couple of problems. The ancient "Fast Load" stuff (FBOOT/FSAVE/FLOAD) is shaky. People who don't read the manual...