[front] : [uqlx] : [m89] : [deutsch]
W.r.t. bug fixes and code extensions in T6M89/T6M97 & M89T:
Copyright (C) 1999 by h-peter recktenwald, berlin, 14.Aug.1999, email:phpr@snafu.de
This mainly for those who are used to take others responsible for their own
thoughtless actions (drying their poodles in the microwave..., etc):
Despite M89 and T6 proved safe and
reliable in the authors QDOS systems, they are in an
experimental state, though, and might even lead to serious
damages, thus NO WARRANTY AT ALL applies!
T6 and M89 related code and texts may be given away non-commercially, with
the complete original archive(s´); modified versions may be supplied if
this notice and the archives are preserved. Incorporating parts of T6 or M89
into other works inplies that those are free to at least the same extent as T6
and/or M89 are, regardless of what might be stated with those products.
- tar-bzip2 packed because of the bzip2 superior
efficiency, i.e. up to 20% better than zip. -
archive "t6" |
28K |
|
|
qhpt6.txt qhpt6ex.txt |
deutschprachige beschreibungen |
|
e-qhpt6.txt e-qhpt6ex.txt |
this page(s), english explanations |
|
t6m89-92 |
t6 for minerva 1.89 |
|
t6m97-92 |
t6 for minerva 1.97 |
|
testxtcc_asm |
example to the extra job parameters |
archive "M89" |
60K |
|
|
m89m-12 |
m89, latest min.189 re-assembled code |
|
m89t-12-92 |
the UQLX system ROM of m89 with t6 |
Toolkit derived from an old TK2-version, de-bugged, extended, for the
UQLX with MINERVA 1.89 or 1.97, rsp, which will not be
working with other QDOS versions. Might be functional with the standard QL
hardware; was prepared for and tested with UQLX and Linux
2.2.xx/i586, only.
The maintainance - if there was any - and development of
TK2, which reportedly always was far from bug-free, was given
up by it's presumed author(s), long ago. Further legitimating this attempt, if
necessary, would be the facts that the code bears no hint on authorship at
all, so no one apparently claiming any rights and, that there is a TK2 version
freely available in the internet, already. Finally, which hopefully will not
become necessary, I could supply the T6 "modifications" by a patch file,
against the freely available TK2 version, which would involve some more and
otherwise useless work, but still work out to the desired results...
M89M is a slightly modified version of the MINERVA 1.89 ROM,
which is in the public domain - many thanks to the authors, which made the
publication of this special version possible. I'd change not much, just fixed
a bug to enable 16MB of RAM, and adjusted a few other things, mainly w.r.t.
the UQLX running more efficiently and with an over-sized screen display.
M89 was (and will be) tested with the UQLX and Linux,
only.
M89T is the bundled system ROM image of M89 with T6 for the
UQLX.
The T6 toolkit was started by the need to having some
sufficiently bug free equivalent to what is known as "toolkit 2" or, "TK2". It
follows the implementation state of TK2 2.13 to extending the MINERVA
1.89 or 1.97 ROMs for the UQLX,
re-done for best efficiency, false or useless stuff left off (re below),
preserving the MINERVA functionality and supplying several additional
features, (hopefully) more reliably as with TK2. Many extensions as known from
(and superior to) SMSQ/E which can be used non-conflicting in the UQLX and are
not supplied e.g. with IO2 comparably or more versatile, are included.
T6 cannot be run with other QDOS versions - where it is
expected to immediately crash the systems!
The bundled T6M89 & M89 (or MINERVA 1.89) and T6M97 & MINERVA 1.97
implement the genuine functionality of the ROMs concerned, plus everything the
TK2 additionally was supplying, with the exception of the ALTKEY procedure,
which anyway gets overwritten by the HOTKEYs extension, and with no MDV nor
QDOS NETwork related stuff - FSERVE etc. are supplied as dummy procedures just
to prevent programs from useless error breaks.
The following is a list of just the modifications and extensions:
Version
- TK2_EXT [ #channel ]
!
Any call with at least one (empty) parameter will display the T6 date and
version code.
- Date of assembly and version can be found within the first few bytes of
the code.
- v92: some bug fixes, code tidied up, nothing new.
Modifications, Overview
- Useless stuff removed, several bugs fixed.
- Codespace extended to 32K, T6 (v87+) can reside at any memory
address.
- ROM header corrected, and modified to self-initiating on startup.
- Corrupted names will not extend to beyond the S.Basic workspace
memory.
- Preserving the system's ROM functionality.
- Error messages will be sent to the S.Basic-job's own channel #0 and,
only if that failed to QDOS 000 (which is #0 of the first S.Basic
interpreter).
- Error handling improved, and more elaborate.
- WHEN-functionality preserved, according to MINERVA.
- COPY, DIR and the like can be interrupted (globally) with the
<ESC>ape key.
- WMON always returns error free.
- "SQ", additional rsp. extended
SMSQ/E specific keywords, for portability reasons.
Extended, Modified, Bugs fixed, Removed
- ALARM (job "server")
Caller becomes the job's owner.
- AJOB
of an already active job is not an error, and will re-set it's priority to
the new value.
- ALTKEY
Removed: The implemented procedure is
not adequately designed for a multitasking system - a more suitable one
being prepared; until then: The "hotkey" code is freely available, which
also defines an ALTKEY procedure...
- BGET
SQ, can also receive strings of bytes
into a string(-slice). -> Examples
- BPUT
SQ, can also send strings of
bytes.
- CALL
Removed: MINERVA already implements
the procedure properly.
- CLEAR
executing the the MINERVA procedure after an internal call to CLCHP.
- CLOCK
Caller becomes the job's owner.
- CLOSE
- Removed: MINERVA already implements the extended features,
properly.
- QDOS-channel 000 protected in T6M97 and in the M89 system ROM.
- S.Basic entry invalidated only if QDOS channel successfully
closed.
- Bugfix: CLOSE will not be
terminated by single false parameters in a parameter list.
- CONTINUE
Removed: MINERVA already implements
the extended features, properly, and doesn't need the - buggy - TK2 style
WHEN ERRor handling "correction".
- COPY, COPY_H, COPY_N
- files appending mode added, when called with the
"!" delimiter;
the destination file wiil be created if not present.
- date of source copied (instead of date of
copying).
- workspace can be extended - re
SB_BUF - for much higher transfer speed.
- an open destination channel, #channel, will remain
open.
- Bugfix: Empty files channels
orderly closed,
- Bugfix: channels orderly closed,
also, after termination by <CTR/SPC>.
- Bugfix: If passed by "#channel"
any of the source or destination channels remain open.
- DATAD$ etc.
Bugfix: Safely returning strings not
longer than S.Basic workspace permits - which otherwise would (did!) badly
corrupt the S.Basic system data.
- DEL_DEFB
will not be locked by sv_mdrun accidentally(?) being non-zero.
- DELETE
Removed: Left un-modified to prevent
accidental loss of data, because the TK2 default device setting is simply
not suited to a multi-tasking system, as the device name can be changed
globally at any time, by any program, un-predeterminably. - WDEL mode of
operation unchanged.
- DIR etc.
Bugfix: Safely returning strings not
longer than S.Basic workspace permits - which otherwise would (did!) badly
corrupt the S.Basic system data.
- DO
- Internal call to CLCHP removed to preserving allocated memory
workspace.
- S.Basic channel #0 =/= QDOS 000 will also remain open.
- ED
- Does not (uselessly) attempt to clear the QDOS-channel 000
window.
- Bugfix: Error texts will be sent
to the concerned S.Basic's channel #0, thus enabling the EDitor for
any S.Basic jobs, dispensing with the need of intermediately changing
to job 0 at startup time or after each error, just to (re-)enable
editting.
- The parameterless call will resume editting at the line which was
last editted (bv.edlin) or, at the line at bottom of the visible
editting area (bv.lsbas).
- ERNUM
Removed: M89 modified to full error
code return values as with MI-1.97, instead.
- ERR_DF
Removed: bugfix for MINERVA not
required.
- EX
- Caller will be owner of the new job.
- If the source file's header does not show the job-type and if an
XTcc field is present the
XTcc data will substitute the dataspace value and the
job-type flag.
- As an attempt to supply some source for the ARGV(0)
value of "C"-programs the jobfile header will be passed on
stack, additionally and in a (hopefully!) compatible manner
(at least, many tests did not reveal any problems). -> Details
- EX of TK2-"special jobs"
Removed: Nonsense, badly designed
and just useless...
- EXTRAS
can be terminated (globally) when pressing the <ESC>ape key.
- FDAT, FTYP
modified to evaluate an XTcc field if the file type in
the QDOS header was zero.
- FLEN
Bugfix: Returning the valid file
length, instead of out-dated header data.
- FOPEN FOP_DIR FOP_IN FOP_NEW FOP_OVER FTEST
Bugfix: Always execute without
termination, consistently, returning the error code.
- FPOS
read the current file pointer and, optionally, then set the position
according to the second parameter - instead of returning that - already
known - parameter's value.
- FSERVE
Empty: (until now) no network
fileserver for the UQLX exists. Returning error free without action, until
the planned substitute for the UQLX gets ready.
- FTYP, FUPDT, FDAT, FXTRA, FNAME$
the XTcc recognizing mode results to uncertain
filepointer values after header access - which all the above functions do.
This is not considered a newly introduced bug, because the standard ROMs
reset it to zero, while MINERVA and SQ(?) don't. Thus the value could not
reliably be used, anyway.
- date | ernum = FUPDT( kanal [ ,new-date ] )
read and, optionally, then write a new file's update date.
- INSTR_CASE
SQ, Empty: There are many tools
providing functions for extended and flexible string comparison.
- JOBS
Bugfix: a stack balance bug
fixed.
- KBD_TABLE LANG_USE
SQ, Empty: Avoiding the vast amount of
data for several languages where any but one are of no use at all. There
are many translation and keyboard tables supplied with the MINERVA
distribution which can be linked in by standard procedures which are
already provided.
- LANGUAGE LANGUAGE$
SQ, Empty: Useless, and NOT supported
(can easily be substituted by simple S.Basic functions).
- LRESPR
accepting ROM-images, and can be called while transient programs (jobs)
being active.
- MDV
Removed: Useless in the UQLX, and
MINERVA inplementing a much better state, anyway.
- MERGE
within an active program executes MRUN.
- NET
Removed: Useless in the UQLX - until
some reliable substitute will be found.
- NEW
- executing the the MINERVA procedure after an internal call to
CLCHP.
- Bugfix: TK2-ish WHEN handling
removed, left to the MINERVA routines.
- NFS_USE
returning error free without action, until the planned substitute for the
UQLX gets ready.
- value$ = PARSTR$
Bugfix: Can be concatenated error free
with other variables, functions or literal values.
- PARTYP
alternatively accept a "#"-preceded positional parameter, and does not
terminate on ANY sort of errors.
- PARUSE
alternatively accept a "#"-preceded positional parameter, and does not
terminate on ANY sort of errors.
- REPORT ernum
Removed: Implemented in the M89-ROM,
to saving some T6-ROM space.
- RUN
- executing the the MINERVA procedure after an internal call to
CLCHP.
- Bugfix: TK2-ish WHEN handling
removed, left to the MINERVA routines.
- RJOB
Bugfix: Removal of a job which doesn't
exist is not an error.
- RETRY
Bugfix, Removed: MINERVA already
implements the extended features, properly, and doesn't need the - buggy -
TK2 style WHEN ERRor handling "correction".
- SBYTES/.._O
will safely be terminated with fs_flush.
- SEXEC/.._O
appends an XTcc field and will safely be terminated with
fs_flush.
- SPL
- faster: workspace for copying extended to 2K+.
- Caller becomes job's owner.
- Bugfix: If passed as "#channel"
open channels remain open.
- STOP
Removed: MINERVA already implements
the extended features, properly, and doesn't need the - buggy - TK2 style
WHEN ERRor handling "correction".
- TK2_EXT
included in the systems startup procedure, for re-initiating of redefined
S.Basic names.
- VIEW
faster for files with long lines of text, or codefiles
- WCOPY
- preserving the source file(s)'s date(s).
- workspace can be extended (re below, SB_BUF).
- not overwriting the '.-UQLX-' and '.--LINUX--' files.
- WDEL
'.-UQLX-' & '.--LINUX--' preserved when in the "A"ll mode, where the
procedure will terminate with the "bad name" error if the keyboard request
was confirmed by "A"..
- WDIR etc
Bugfix: Character codes 160+ handling
fixed (accented and non-standard characters).
- WDIR DIR
WSTAT
- displaying (Sub-)Directories appended by ' ->'.
- Not locking the multitasking any more, nor interfering with other
jobs:
CON-output can job-specifically be continued after halt at full screen
by pressing any key, and may be terminated with the <ESC>ape
key.
- additionally displaying
different file types, selectively.
- WMON WTV
- Initiating the "outline" of window #0 if the PIF (PE) is
present.
- Extended to suit over-sized screens:
- with two or three integer parameters the last two of them will
be taken as the top left job windows origin (as set with the
"outline").
- the windows position on screen will be preserved if only the
MODE parameter, or none (then defaulting to MODE 4), was
passed.
- The windows position will also remain preserved in case of an "out
of screen area" error (-4), the call always returning error free.
- Always returning error free, useless (and silly) check for "legal"
number of parameters removed, to enabling the new extended parameter
list. Further modifications re above.
NEW
- ASCII, ASCII$, VAL, VAL$
reserved keywords.
CHAR_DEF lo_fount_adr,
hi_fount_adr
CHAR_DEF #channel
SQ, Setting the character founts
system defaults to the supplied address(es), -1 leaves the item concerned
unchanged, 0 restores it to the ROM's own address.
Passing a channel number will store that channels founts addresses to the
system defaults.
- date | ernum = FBKDT( channel [
,new-date ] )
Read and optionally adjust a file's backup date.
- ernum = FMAKE_DIR( filename
)
As MAKE_DIR, returning the error code instead of possible program
termination.
- date | ernum = FUPDT( channel [
,new-date] )
Read current and optionally then adjust the update date
of a file.
- version | ernum = FVERS( channel [
,new-version ] )
Read and (afterwards) optionally adjust the version
number of a file.
- HGET channel,flen,ftyp,faccess,fdat,fextra
SQ, fetch the channels
fileheader data into the supplied variables, which are
all optional.
- HPUT channel,flen,ftyp,faccess,fdat,fextra
SQ, set the channel's fileheader data
to those supplied by the variables of the parameterlist, which are all
optional. Non-supplied parameters leave the corresponding items
unchanged.
- HISTORY 1v27
Command line
history, by Boris Jakubith. - NOT the SMSQ-ish string
stack!
- LGET, LPUT
SQ, as BGET, BPUT, for 32bit (4 bytes)
integer values.
LGET with integer variable parameters ("name%") will discard the m.s.
16bit data word.
- MAKE_DIR name
Procedure to initiating an empty directory with an until then non-existent
name.
- MB
Starts a MINERVA MultiBasic job, caller wil be it's owner. ->
Details
- flag = PARHASH( parametername
)
Flag whether a parameter is preceded by a "#" number sign.
- number = PARSEPA( parametername
)
0:none, 1:comma, 2:semicolon, 3:backslash, 4:exclamation mark, 5:"TO"
- value = PARVAL
( name$ | #parameter-no. )
reading a variable's value by it's name in a string or by index of a
proc/fu parameter list.
- SB_BUF 32bit-number
extending the calling S.Basic's workspace (for COPY, INPUT, etc). Should
be executed with, at least, 2K before COPYing, etc, which then will run
significantly faster, i.e. in the UQLX with up to 3M/s, sometimes even
more, instead of less than 100K/s.
- TRACE w. SSTEP,
TRON, TROFF
S.Basic program tracing facility. -> Details
- WGET, WPUT
as BGET, BPUT, for 16bit (2 bytes) integer values ( "name%" vari.).
- WHEN_OFF
interactively or programmed terminates the (any) current WHEN ERRor
handling.
- code = Y_N ( [ #chan ] [ , [ text$ ] ]
)
Displays a message <text$> and " Y/N/A/Q?" to <chan>, then waiting
for a keystroke.
Return code after "Y"/"J"/"Z": 1, "N": 0, "A": 2, "Q": -1
<chan> defaults to #0, text$ to an empty string.
- .hpr'99 - t6m/m89 - eof -
[front][anfang] : [uqlx] : [m89] : [top]