Derek_Stewart wrote:Hi Per,
Really excellent work.
No, really sloppy - compared to mk79's, at least..
Derek_Stewart wrote:I must admit to not using most or all the
command in QLIB_BIN, but the command commands should be documented
correctly.
These are not Qlib user toolkits. They are part of the compiler itself.
Most commands are pretty specialised and dont have much use outside
of Qlib itself. But yes, for the sake of understanding how Qlib works,
we need to document them.
Derek_Stewart wrote:I would not worry about compatibility, if
something does not work on older QDOS system, then it is not loaded,
unlike other OS systems, where they have to patch the system to bodge
the operation of out of date software.
Personally, I would not use anything other SMSQ/E or Minerva, mainly
due to the use of multi tasking basic, once used it is a total
miss.
I basically agree with you, but its not up to me; its
a "community effort".
I dont believe in backward compatibility at all costs, but nor do I
believe in riding roughshod over it. Its a balancing act.
mk79 wrote:Before you sink anymore time into this, these are my
diassemblies of the QLib_obj utilities that I did two years
ago.
My time wasnt wasted if it poked you into sharing your efforts
Very nice and useful analysis! Any more?
I "fixed" one of them up to make it Qmac compatible (movea.l
(sb.gtlin).w,a2 ! Wassat?! bsr.w ? Which assembler were you using?
I also removed some redundant commands and their code (BINPUT, BWRITE,
SINPUT, SWRITE, READSETUP). (It turns out ALCHP and RECHP are too
different from the TK2 versions to be removed without fiddling the
BASIC source as well.)
The two assembler source files you posted are now named Qlib1_asm and
Qlib2_asm to fit in with the current nomenclature. Theyre included
with the attachment, below.
I also added a few lines of code to the BASIC to save me (or anyone)
from having to load all those toolkits into memory before compiling
the compiler, not least of all because Qlib1_bin smashes ALCHP/RECHP:
Code: Select all
126 REMark Version 3.44a
127 :
128 EXT_PROC "CURDIS", "CURSEN", "Dnr", "FCOPY", "GENB", "GENfloat"
129 EXT_PROC "GENint", "GENL", "GENntd", "GENop", "GENsfloat", "GENstring"
130 EXT_PROC "GENtext", "GENW", "INITgen", "input_edit$", "LINT", "LSET_POS", "LWRITE"
131 EXT_PROC "NEXT_TOKEN", "PACK_N", "Q_ERR_LIST", "Q_ERR_OFF", "Q_ERR_ON", "READ_name"
132 EXT_PROC "RECHP", "RNAME", "SETPOS", "SETUP", "SMEM", "TSORT"
133 EXT_PROC "UNPACK_N", "WINPUT", "WM_Outln", "WM_Rptr", "WM_Sptr", "WM_wrsp"
134 EXT_PROC "WNAME", "WWRITE"
135 :
136 EXT_FN "_BPCOL", "_BUFFER", "_CUCOL", "_DICOL", "_HEAP", "_HELPF"
137 EXT_FN "_NRCHAN", "_SICOL", "_STACK", "_TICOL", "ALCHP", "b1"
138 EXT_FN "FINDNEXT", "FINDSYMBOL", "FREE", "Fwind", "GENSYMBOL"
139 EXT_FN "LPOS", "NEXTLINE", "ODD", "POS", "Q_ERR", "RA6"
140 EXT_FN "RMODE", "RP_ADDR", "SCRXLIM", "SCRYLIM", "SHORTF", "Tqueue"
141 EXT_FN "UNdef"
142 :
143 main
144 STOP
145 :
This is included in the attachment as Header_bas and could be dropped
right into the BASIC source file.
I used Qlib 3.44 to compile the resulting file (without loading any toolkits!),
using the new Qlib1_bin and Qlib2_bin. I used the resulting object code to
compile itself again (and again). While this is not proof that it is bug free,
it is a pretty good stress test. I wont muddy the waters by including the
result here. Interested parties have all they need to try it out for
themselves. I leave it to EmmBee to publish the "official versions".