I made various "compatibility toolkits" over the years so that
compiled programs that contained commands from SMSQ/E or Minerva could
still run under Qdos if the only thing preventing them from doing so
was the use of the odd command. Theres nothing stopping Qdos from
working with OUTLN, QUIT, ERT, various enhanced DATE commands,
SCR_xxx, DISP_TYPE, JOBID, FDEL, SUSJB, etc. (Some have since been
added to TK2.)
Having various sets like this available opens the field a bit, I find.
Theyre usually easy to do, and sometimes fun. Until now: I recently
discovered, to my annoyance, that my SCR_xxx suit (mainly extracted
from SMSQ/E sources and re-packaged) didnt work with unadulterated
Qdos but relied on the PI being present. So naturally I wanted to
remedy this.
In another toolkit I wrote I took the screen limits directly from
sys_clnk, and if that was zero just returned $02000100, ie QL
standard. But I feel this is a bit of a cop out. So this is how far I
got:
Code: Select all
... no PI, so try this..
xlim
moveq #sd_linel,d1
moveq #2,d2 word wanted
bsr.s chan xtop routine
moveq #0,d6 make word long
move.w d1,d6 save llen
bsr.s getmode
lsl.l #1,d6 nominally 128 x 2
cmpi.b #8,d1 done if mode 8
beq.s retfd6
lsl.l #1,d6 nominally 128 x 2 x 2
tst.b d1 ..provided mode 0
bne.s err_ni cant handle this (yet)
retfd6
bra l2frtrd6 float and return d6
ylim
err_ni
moveq #-19,d0
rts
For a toolkit to be creating trial windows in the background, even if
invisible, any time it is called, is not the thing, I think. Its ok
for a program, I guess. (Although one might ask why the hell it has
to!) Clearly, that sort of essential information should be presented
by the OS and provided by the platform implementers. They, after all,
must know the answer as it is determined by the platform and/or user
interaction.
But what all the sage heads here seem to be telling me, is that there
is no sane way to get this information except by going on a heuristic
rampage. Yet here we all are, OS designers and maintainers, platform-
implementers, and tinkerers. Cant we decide on a standard and see it
implemented in future iterations of updates? Some system variable, or
some under-used Channel Definition Block location to contain the at
all times prevalent screen limits? The method chosen would, obviously
have to cater for the fact that Qdos ROMs are locked forever, but
anything that can provide a variable screen geometry should also be
able to provide an accurate metric at a known location or by some
known method.