Page 2 of 8

Re: QLCommander v 2.2.7- For Testers!

Posted: Thu Mar 13, 2025 3:04 pm
by Andrew
tofro wrote: Thu Mar 13, 2025 12:38 pm BTW: WMOV can also be useful on a QL running PE in standard resolution provided the window is small enough to be moved around.
That's not the case here - QLCommander needs all the screen in 512x256.
WMOV will work only on SMSQE, were is more probable to have larger resolutions.
tofro wrote: Thu Mar 13, 2025 12:38 pm But what Andrej obviously wants to achieve is a program that runs on any platform without providing special versions for each (which is a pain. The alternative, however, is a pain as well...).
It's simple with QLiberator, but it's a real pain with Turbo. Also, with Turbo, this adds a hefty bit to the program size :cry:
What the QL world really needs is some kind of standardisation. :!:

Re: QLCommander v 2.2.7- For Testers!

Posted: Thu Mar 13, 2025 4:07 pm
by pjw
Andrew wrote: Thu Mar 13, 2025 3:04 pm <>
What the QL world really needs is some kind of standardisation. :!:
A famous bug-bear of mine! ;)
One way of getting around this so you dont have to change your S*BASIC source file is to create dummies for the missing keywords. You still need to compile separate versions, one (or more!) for the platform that has the functional keywords, and one for the one that doesnt, but the source code stays the same. This is MUCH easier in Qlib, which has the EXT_PROC and EXT_FN directives..

Heres an example, that could be included in the Qdos compile (FI2_CALL is doubtful as that could easily exist in Qdos. WMOV might also be present in uQLx, etc. Effing nuisance all this!)

Code: Select all

* S(uper)BASIC proc/function header
*
* pjw, 2o24+
* All code is my own work except as and where stated
*
* V0.01
*
* Compatible with QDOS, Minerva and SMSQ/E unless stated
*
        section code

        include dev8_keys_qlv
        include dev8_mac_proc2
        include dev8_keys_err
        include dev8_keys_sbasic

        lea.l   key,a1
        move.w  sb.inipr,a2
        jmp     (a2)
*
key
*
        proc_stt
        proc_def COLOUR_QL
        proc_def COLOUR_PAL
        proc_def WMOV
        proc_end

        proc_stt
        proc_def HOME_DIR$
        proc_def F12_CALL
        proc_end
*
COLOUR_QL
COLOUR_PAL
HOME_DIR$
WMOV
F12_CALL

        moveq #err.nimp,d0
        rts
*
        end
Modify according to requirements, assemble it, and include it with the compile for the dysfunctional platform.

Re: QLCommander v 2.2.7- For Testers!

Posted: Thu Mar 13, 2025 10:56 pm
by Andrew
Install in directory win1_QLC227_ or in any other directory. If you install it in a different directory than win1_QLC227_ then you have to pass the directory as parameter, both under SMSQE and QDOS
Before first run use QLCconfig_bas to configure the program.
The executable QLCv227m2_exe is compiled with line numbers, so if/when it crashes it will show the line number. Please report in detail what you were doing at time of the crash and line number!
(also the help file is updated)

And guys, please, help me with the QA and test the program!

Re: QLCommander v 2.2.7- For Testers!

Posted: Fri Mar 14, 2025 9:42 am
by javier2112
Hi all.

I come back two days later and find much more than expected. I'll test the new version. Thank you!

Re: QLCommander v 2.2.7- For Testers!

Posted: Fri Mar 14, 2025 8:59 pm
by Andrew
I'm a happy bear!!
I fixed the Home_Dir$ issue - now it returns the home dir in SMSQE and returns an empty string in Minerva, without crashing the program!!
What can I say - it's good to read the Turbo manual 10 times ...and experiment!

Re: QLCommander v 2.2.7- For Testers!

Posted: Fri Mar 14, 2025 9:20 pm
by dilwyn
Andrew wrote: Fri Mar 14, 2025 8:59 pm I'm a happy bear!!
I fixed the Home_Dir$ issue - now it returns the home dir in SMSQE and returns an empty string in Minerva, without crashing the program!!
Good news. If it was a simple fix, could we see an example piece of code of how you worked around this?
Andrew wrote: Fri Mar 14, 2025 8:59 pm What can I say - it's good to read the Turbo manual 10 times ...and experiment!
Any questions on Turbo, Andrew's your man. Not only read the manual, but read it 10 times :ugeek:

Re: QLCommander v 2.2.7- For Testers!

Posted: Fri Mar 14, 2025 10:03 pm
by javier2112
Hello Andrew.

I've been testing QLCommander and I must say I'm very impressed with this version. Compared with the v2.1, the speed is significantly faster and there are a lot of new features.

However, I've discovered a bug when trying to rename a directory. Try this in a useless drive (after this test, maybe you'll have to format it):
1) Create a directory. For example, win2_test_.
2) Copy some files in it., let's say a boot file.
3) Use the rename directory option using a trailing underscore character and other characters, such as win2_qlc227_2.

Then QLCommander'll start to rename every file, trailing the string _2 recursively in each loop, this way:
win2_qlc227_2_boot
win2_qlc227_2_2_boot
win2_qlc227_2_2_2_boot
win2_qlc227_2_2_2_2_boot
win2_qlc227_2_2_2_2_2_boot
(...)

Until ir reaches the maximum path length (32?). Finally, a lot of thrash will displayed on screen and you'll not be able to delete the root directory win2_qlc227, neither with QLCommander nor QDOS specific commands.

Re: QLCommander v 2.2.7- For Testers!

Posted: Fri Mar 14, 2025 10:23 pm
by Andrew
javier2112 wrote: Fri Mar 14, 2025 10:03 pm Hello Andrew.

I've been testing QLCommander and I must say I'm very impressed with this version. Compared with the v2.1, the speed is significantly faster and there are a lot of new features.

However, I've discovered a bug when trying to rename a directory. Try this in a useless drive (after this test, maybe you'll have to format it):
1) Create a directory. For example, win2_test_.
2) Copy some files in it., let's say a boot file.
3) Use the rename directory option using a trailing underscore character and other characters, such as win2_qlc227_2.

Then QLCommander'll start to rename every file, trailing the string _2 recursively in each loop, this way:
win2_qlc227_2_boot
win2_qlc227_2_2_boot
win2_qlc227_2_2_2_boot
win2_qlc227_2_2_2_2_boot
win2_qlc227_2_2_2_2_2_boot
(...)

Until ir reaches the maximum path length (32?). Finally, a lot of thrash will displayed on screen and you'll not be able to delete the root directory win2_qlc227, neither with QLCommander nor QDOS specific commands.
Good catch!
I'll work on it!

Re: QLCommander v 2.2.7- For Testers!

Posted: Fri Mar 14, 2025 10:43 pm
by Andrew
dilwyn wrote: Fri Mar 14, 2025 9:20 pm Good news. If it was a simple fix, could we see an example piece of code of how you worked around this?
You have to declare a new function:

Code: Select all

31520 DEFine FuNction _HOME_DIR$
31530  LOCal ads
31540   ads=BASIC_ADR(BASIC_INDEX%("HOME_DIR$"))
31550   IF ads <> 0 THEN POKE_L TURBO_V(TURBO_DUMMY$),ads: ELSE RETurn "win1_qlc227_": END IF
31560   :
31570   RETurn TURBO_DUMMY$
31580   :
31590 END DEFine _HOME_DIR$
31600 :
In main program then you call _HOME_DIR$
On Minerva, line 31540 checks that Home_Dir$ doesn't exists in the name table, so at next line will return what is on ELSE
On SMSQE, line 31540 checks that Home_Dir$ exists in the name table, so it swaps the address of TURBO_DUMMY$ with the address of the actual Home_Dir$, so Home_Dir$ gets executed !
It's all documented in Simon's QL Turbo Manual, with examples, in CHAPTER S - ERROR TRAPPING AND RECOVERY, DEBUG and TURBO_V - Turbo_V section, pages 78 to 80.
The hard part is to pay attention to what you read and then cross-reference it with Simon's QL Turbo Toolkit User Manual.
There, in chapter 7, page 22, you find that BASIC_INDEX% is case sensitive and, for example "Home_Dir$" will not match "HOME_DIR$" !!! :D
dilwyn wrote: Fri Mar 14, 2025 9:20 pm Any questions on Turbo, Andrew's your man. Not only read the manual, but read it 10 times :ugeek:
Not really. I'm sure there are many more knowlegeable, but probably they were too busy or too modest to reply to this thread.

Re: QLCommander v 2.2.7- For Testers!

Posted: Sat Mar 15, 2025 3:18 pm
by EmmBee
Andrew wrote: Thu Mar 13, 2025 10:56 pm Install in directory win1_QLC227_ or in any other directory. If you install it in a different directory than win1_QLC227_ then you have to pass the directory as parameter, both under SMSQE and QDOS
Before first run use QLCconfig_bas to configure the program.
The executable QLCv227m2_exe is compiled with line numbers, so if/when it crashes it will show the line number. Please report in detail what you were doing at time of the crash and line number!
(also the help file is updated)

And guys, please, help me with the QA and test the program!
Hi Andrew,

I am trying to load your program. I've run the configurator
and then executed win1_QLC227_qlc227m2_exe.
It reports 7 "is not loaded" messages. These are RMODE MDALLOC MDGOOD MDFREE MDNAME$ MDFSIZE and CHAN_W%
After checking Dilwyn's namecheck program, these names appear to be from "Reserved" tookit. So, where can I find this, please?

EmmBee