Thanks for all the suggestions guys, 220 IF TK_VER$<>"" THEN 230 PRINT "Done":STOP 240 ELSE 250 LRESPR win8_turbo_sms_code 260 END IF
this works exactly how I wanted it to, so 🎵 to Tobias. Many thanks to you all Lee Lee On Thu, Aug 17, 2017 at 11:47 AM, Tobias Fröschle via Ql-Users < ql-users@lists.q-v-d.com> wrote: > Lee, > > in case your question is really only Turbo Toolkit specific, you can very > well do away with a much simpler solution than WHEN ERRor clauses: > > 1000 IF TK_VER$ <> "" > 1010 REM do whatever you want to do when Turbo Toolkit is loaded > 1020 ELSE > 1030 REM Do whatever you want to do if it is not loaded > 1030 END IF > > This relies on the fact that the interpreter will interpret TK_VER$ as a > FUNCTION returning a string in case the toolkit is loaded, and an unset > string variable in case it is not. And unset string variables are by > convention "empty". > > Tobias > > > > Am 17.08.2017 um 12:37 schrieb Lee Privett via Ql-Users < > ql-users@lists.q-v-d.com>: > > > > Perhaps I should clarify this a little further. > > > > Using Q-emuLator, my boot first loads SMSQ_QEM and restarts with the same > > boot, I will always do this or use QPC2, I am not really looking for a > BBQL > > solution as it is development for other things. > > > > Where this > > > > [code]IF VER$<>"HBA" THEN > > LRESPR "WIN8_SMSQ_QEM" > > END IF[/code] > > > > loads SMSQ and fails the second time around (as designed, so all good) as > > the same boot loads again, I then load (still in the same boot) the > > TURBO_SMS_CODE appropriate for SMSQ based system. > > > > This is all fine, however, I am developing the boot for different setups > > and change them a lot depending on what project I decide to work on. > > > > This means re-running the boot several times in the one session to test > > what I am trying to do and I don't want to keep using up space re-LRESPR > > the TURBO toolkit. > > Using another toolkit to test for the existence of a keyword in the TURBO > > toolkit would then mean using another method to test for that additional > > Toolkit, a catch 22. > > > > So I may try the WHEN_ERR method as soon as I find the documentation on > it. > > > > Lee > > > > > > > > > > Lee > > > > > > > > > > On Thu, Aug 17, 2017 at 10:49 AM, Derek Stewart via Ql-Users < > > ql-users@lists.q-v-d.com> wrote: > > > >> Hi Tobias, > >> > >> The WHEN solution is great, but on some version of QODS, the WHEN ERRor > >> did not work. > >> > >> There are some people still using AH,JM, roms which may have problems > with > >> WHEN ERRor > >> > >> -- > >> Regards, > >> > >> Derek > >> > >> > >> On 17/08/17 10:39, Tobias Fröschle via Ql-Users wrote: > >> > >>> After I sent this, I realised a bit of explanation might be in order, > as > >>> WHEN ERRor is not so well-known: > >>> > >>> When the interpreter passes a WHEN ERRor/END WHEN pair during normal > >>> program execution, it doesn't do anything with the commands inside the > >>> clause but remembering "I should do this in case an error occurs". So, > line > >>> 1020 is not executed if no error occurs in line 1050. But in case > there is > >>> an error (the interpreter choking on the MANIFEST statement it doesn't > know > >>> when TT is not loaded), line 1020 is executed, telling us TT is not > loaded. > >>> > >>> After 1020 was executed, the program is continued at the point /after/ > >>> the error occurred. > >>> > >>> The empty WHEN ERRor clause (1060-1070) simply de-activates error > >>> processing back to "normal". > >>> > >>> Line 1080 will thus have the variable TurboTkLoaded to 1, if 1050 was > >>> executed without a problem, and set to 0 in case there was an error. > >>> Because we have made sure line 1050 is the only line that can be > executed > >>> while error processing is active, we clearly know the only problem in > 1050 > >>> can only be "bad name". So it is important to pick a "test command" > from > >>> the toolkit you are testing for that cannot choke on a different error > than > >>> "bad name". MANIFEST is pretty ideal for this. > >>> > >>> Tobias > >>> > >>> Am 17.08.2017 um 11:25 schrieb Tobias Fröschle via Ql-Users < > >>>> ql-users@lists.q-v-d.com>: > >>>> > >>>> Lee, > >>>> > >>>> there are a number of toolkits that allow you to check for specific > >>>> other toolkit commands loaded or not - But this is a bit useless as it > >>>> leaves you with a chicken-and-egg problem: How to check whether the > >>>> checking toolkit is loaded? > >>>> > >>>> Your best bet on SMSQ/E would be a WHEN ERRor clause you place just in > >>>> front of a Toolkit command you are about to execute: > >>>> > >>>> 1000 TurboTkLoaded = 1 > >>>> 1010 WHEN ERRor > >>>> 1020 TurboTkLoaded = 0 > >>>> 1030 END WHEN > >>>> 1040 REMark Execute a Toolkit command > >>>> 1050 MANIFEST : x = 100 > >>>> 1055 REMark de-activate error checker > >>>> 1060 WHEN ERRor > >>>> 1070 END WHEN > >>>> 1080 PRINT "Turbo Toolkit loaded:"!TurboTkLoaded > >>>> > >>>> On a QL with non-working WHEN ERRor commands (pre-MG) you are a bit > >>>> doomed, the only thing I could probably come up with is writing a > BASIC > >>>> program that PEEKs the name list, which is not quite so simple. > >>>> > >>>> Tobias > >>>> > >>>> > >>>> Am 17.08.2017 um 10:49 schrieb Lee Privett via Ql-Users < > >>>>> ql-users@lists.q-v-d.com>: > >>>>> > >>>>> I originally posted this on the forum: > >>>>> > >>>>> Hi community, I have searched for this on the forum but cannot find > an > >>>>> entry but I am sure this has been asked before. > >>>>> > >>>>> I currently test for the presence of the HBA ROM in a boot program > using > >>>>> VER$ and would like to test for other toolkits, specifically the > TURBO > >>>>> toolkit. Is there a way to do this automatically in a boot so that > when > >>>>> subsequent runs of the boot it is not loaded again in one session? > >>>>> > >>>>> e.g. for the HBA version I use: > >>>>> > >>>>> Code: Select all <http://qlforum.co.uk/viewtopic.php?f=3&t=2063#> > >>>>> IF VER$<>"HBA" THEN > >>>>> LRESPR "WIN8_SMSQ_QEM" > >>>>> END IF > >>>>> > >>>>> > >>>>> I feel there must be a way to test for TURBO toolkit, any ideas? > >>>>> > >>>>> A reply from Derek suggested the following: > >>>>> > >>>>> There is a keyword: TK_VER$, but only returns the version of Turbo > >>>>> Toolkit, > >>>>> which is the same for the SMS and QDOS versions. > >>>>> > >>>>> A simple way would be to add "SMS" in the version number. Which would > >>>>> mean > >>>>> a new version of Turbo Toolkit. > >>>>> > >>>>> The SMS version calls the SMSQ/E extended traps, where the QDOS does > >>>>> not, > >>>>> so maybe a test for SMSQ/E extended traps is the way, but I would > favour > >>>>> the about alteration to TK_VER$. > >>>>> > >>>>> George Gwilt used to maintain Turbo and maybe the Toolkit. I think > this > >>>>> message needs to be posted in the QL-USERS mailing list, George Gwilt > >>>>> reads > >>>>> that list. > >>>>> > >>>>> Any views at all? > >>>>> > >>>>> Regards Lee Privett > >>>>> _______________________________________________ > >>>>> QL-Users Mailing List > >>>>> > >>>> > >>>> _______________________________________________ > >>>> QL-Users Mailing List > >>>> > >>> > >>> _______________________________________________ > >>> QL-Users Mailing List > >>> > >>> _______________________________________________ > >> QL-Users Mailing List > > _______________________________________________ > > QL-Users Mailing List > > _______________________________________________ > QL-Users Mailing List > _______________________________________________ QL-Users Mailing List