Solution: MASTER SPY without covering whole screen (no other progs visible)

Anything QL Software or Programming Related.
User avatar
ql_freak
Super Gold Card
Posts: 566
Joined: Sun Jan 18, 2015 1:29 am

Solution: MASTER SPY without covering whole screen (no other progs visible)

Post by ql_freak »

 
I want besides MicroEMACS (the most powerful editor for the QL) another small editor. Albeit I formerly (20 years ago) used Metacomco ED (or) compatible editors like The Editor or Jan's QED, I now don't know the commands anymore. So I want an editor with optional menus.

On QPC2 I normally used Ralf's S_EDIT, but this does not work on Minerva and the old version, which is compatible with Minerva, cannot be repositioned. I formerly (20 years ago) was happy with MASTER SPY (extremly fast, has menus via F3), but it's not usable anymore, cause it covers the whole screen (i.e. no other program windows, Button Frame visible). But now I have succeeded to use it :‑D
masterspyWithoutGuardianWindow.png


http://peter-sulzer.bplaced.net
GERMAN! QL-Download page also available in English: GETLINE$() function, UNIX-like "ls" command, improved DIY-Toolkit function EDLINE$ - All with source. AND a good Python 3 Tutorial (German) for Win/UNIX :-)
User avatar
tofro
Font of All Knowledge
Posts: 3164
Joined: Sun Feb 13, 2011 10:53 pm
Location: SW Germany

Re: Solution: MASTER SPY without covering whole screen (no other progs visible)

Post by tofro »

What annoys me more than the window size (which is easily changed if you bother to read the manual) is that MasterSpy does not use default directories. If I get my head around it, I might develop a bodge that makes it do that - MasterSpy is such a nice editor that It would definitely be worth it.


ʎɐqǝ ɯoɹɟ ǝq oʇ ƃuᴉoƃ ʇou sᴉ pɹɐoqʎǝʞ ʇxǝu ʎɯ 'ɹɐǝp ɥO
User avatar
ql_freak
Super Gold Card
Posts: 566
Joined: Sun Jan 18, 2015 1:29 am

Re: Solution: MASTER SPY without covering whole screen (no other progs visible)

Post by ql_freak »

I have now tried to patch MasterSpy, so that it does not cover the whole screen, but didn't succeed. What I have found in the manual Section 11 is:

"1. Supported screen resolutions now include: 512 x 256. 512 x 288.512 x 384. 512 x 480. 640 x 200. 640
x 288,640 x 320, 640 x 350, 640 x 480, 768 x 288, 768 x 384, 768 x 480, 768 x 576, 800 x 600, 1024 x
288, 1024x480, 1024 x 512, 1024x576, 1024x768, 1152 x 864. 1152x882,1280x 1024, 1600 x
1200.1600 x 1280. 1880 x 1410. 1880 x 1440. and 2048 x 1536.
2. The screen mode is no longer automatically changed to mode 0 (4 colours) unless you request this (
check the Parameter List for flag CH )
3. The first window is now set to open to the full size of the available screen by default. you can overide
this by changing the dimensions in the Parameter List."

But in the Parameter List there is no parameter for the screen size. What I have tried (wanted to use 512x480): I changed all resolutions in the binary file (they are all near the top of the file) after the 512x480 to 512x480 (of course I changed the length byte before (to 15), and changed the bytes not used after it to 0 (for those resolutions which originally where longer than 15 bytes). I checked it a second time, that I does'nt have had a typo. But after these changes MasterSpy didn't start anymore.


http://peter-sulzer.bplaced.net
GERMAN! QL-Download page also available in English: GETLINE$() function, UNIX-like "ls" command, improved DIY-Toolkit function EDLINE$ - All with source. AND a good Python 3 Tutorial (German) for Win/UNIX :-)
User avatar
RalfR
QL Wafer Drive
Posts: 1227
Joined: Fri Jun 15, 2018 8:58 pm

Re: Solution: MASTER SPY without covering whole screen (no other progs visible)

Post by RalfR »

This is probably the only program for the QL that can be configured this way. An INI file would have been more effective here. Not to mention CONFIG.


7000 4E75
User avatar
tofro
Font of All Knowledge
Posts: 3164
Joined: Sun Feb 13, 2011 10:53 pm
Location: SW Germany

Re: Solution: MASTER SPY without covering whole screen (no other progs visible)

Post by tofro »

Note there is a reason why MasterSpy wants the whole screen: It is a multi-window text editor, and basically uses the whole screen as a desktop, offering multiple windows that can edit multiple files at the same time. This would obviously not work well (especially not with the PE) if the console is only of limited size. Press "<ctrl>"V" to open a new view and <F4> to resize and move the view, <CTRL>"Z" to close a view. MasterSpy effectively creates its own window manager without PE - that is why. (MasterSpy is a relatively early QL program and was released before the PE had got a foothold)

If you don't like this, you should use the less sophisticated "Spy" editor which has approximately the same feature set but without multiple window support (Spy can also edit multiple files at the same time, but shows them in the same window).

If you absolutely want to patch the program to use a smaller "root window", only changing the console names is not enough. You need to change the assignment to the x and y resolution variables as well.
  • Change only the first console name to your liking (in my version, this is at offset $228), for example "CON_512x256a0x0". Don't forget to adapt the string length (to 15, in my example)
  • Change the x resolution variable assignment for the first console size entry to the chosen x window size. (in my version, this is a word at offset $78c). Change this from $800 to your chosen x size (in my example, $200)
  • Change the y resolution variable assignment for the first console size entry to the chosen y window size (in my version, this is a word at offset $792). Change this from $600 to your chosen y size (in my example, $100)
This should make MasterSpy use a much smaller window. Next you will complain is: You cannot move that window... ;)


ʎɐqǝ ɯoɹɟ ǝq oʇ ƃuᴉoƃ ʇou sᴉ pɹɐoqʎǝʞ ʇxǝu ʎɯ 'ɹɐǝp ɥO
User avatar
ql_freak
Super Gold Card
Posts: 566
Joined: Sun Jan 18, 2015 1:29 am

Re: Solution: MASTER SPY without covering whole screen (no other progs visible)

Post by ql_freak »

Okay I see the advantage (I think i understand what you mean). But I think this must not be used so often (of course it's great!). But what IMHO more often is needed is something like this (and that is possible with my trick, and it seems to work):
ql2MasterSpyC1MonEtc.png
And one improvement would be, if the Window of MasterSpy would not fill the whole screen but would leave at least the Button Frame and the Sysmon visible at top.

BTW: Detected a bug in MasterSpy 3.3 (which as far as I can remember was not present in the version I have had used on my real Goldcard QL):

If you press a hotkey (e.g. my hotkey to wake the Wake menu), it does not work in MasterSpy. If you press it multiple times, you may have "luck" (the Wake menu comes up). Afterwards MasterSpy has crashed. Cursor Up/Down keys do not work correctly, some keys give strange results, ...

Tested on UQLX under WSL2 on Windows (Ubuntu) with Minerva.


http://peter-sulzer.bplaced.net
GERMAN! QL-Download page also available in English: GETLINE$() function, UNIX-like "ls" command, improved DIY-Toolkit function EDLINE$ - All with source. AND a good Python 3 Tutorial (German) for Win/UNIX :-)
User avatar
ql_freak
Super Gold Card
Posts: 566
Joined: Sun Jan 18, 2015 1:29 am

Re: Solution: MASTER SPY without covering whole screen (no other progs visible)

Post by ql_freak »

Unfortunately it seems, that 2 different jobs with different windows are not working. I have had misbehaviour in MasterSpy. With just one job (perhaps more, but with the same window size and position) it seems to work (to close the guardian window).


http://peter-sulzer.bplaced.net
GERMAN! QL-Download page also available in English: GETLINE$() function, UNIX-like "ls" command, improved DIY-Toolkit function EDLINE$ - All with source. AND a good Python 3 Tutorial (German) for Win/UNIX :-)
User avatar
RalfR
QL Wafer Drive
Posts: 1227
Joined: Fri Jun 15, 2018 8:58 pm

Re: Solution: MASTER SPY without covering whole screen (no other progs visible)

Post by RalfR »

I see, that you EXEC Masterspy twice. Have you tried to load it as a Thing then start it twice with a hotkey, so to just exec the code one time?


7000 4E75
User avatar
ql_freak
Super Gold Card
Posts: 566
Joined: Sun Jan 18, 2015 1:29 am

Re: Solution: MASTER SPY without covering whole screen (no other progs visible)

Post by ql_freak »

Not yet. But if it fails when started 2 times with ex ... it would IMHO most probably fail, if I start it as a thing (where the code is only loaded once). I'm happy that I can start it once and then close it's guardian window, which seems to work (you can load multiple files, even multiple views for the same file). Would be nice if SEDIT could be used with Minerva, would have the advantage, that the window could be repositioned at any time. With my trick you must first position the MasterSpy window first, then close the guardian window. After that you MUST NOT reposition/resize the MasterSpy window(!) with F4.

BTW: I don't know if MasterSpy is reentrant (can e.g. be HOT_CHPed without the "I"[gitit] option), but I think it is.
BTW2: Would be interessting what Compiler was used by PSION, cause the Psion Office programs where all reentrant and are written in C. AND they are larger than 32 KByte, which IMO is the limit for reentrant programs written with EJC (albeit here I'm not absolutely sure). Is XCHANGE also reentrant? Never tested it (IMHO not necessary, as it can handle multiple files).


http://peter-sulzer.bplaced.net
GERMAN! QL-Download page also available in English: GETLINE$() function, UNIX-like "ls" command, improved DIY-Toolkit function EDLINE$ - All with source. AND a good Python 3 Tutorial (German) for Win/UNIX :-)
User avatar
tofro
Font of All Knowledge
Posts: 3164
Joined: Sun Feb 13, 2011 10:53 pm
Location: SW Germany

Re: Solution: MASTER SPY without covering whole screen (no other progs visible)

Post by tofro »

ql_freak wrote: Thu Aug 07, 2025 11:25 pm BTW2: Would be interessting what Compiler was used by PSION, cause the Psion Office programs where all reentrant and are written in C. AND they are larger than 32 KByte, which IMO is the limit for reentrant programs written with EJC (albeit here I'm not absolutely sure). Is XCHANGE also reentrant? Never tested it (IMHO not necessary, as it can handle multiple files).
Wouldn't help you much unless you had a DEC VAX at home - Psion reportedly cross-compiled their 68k software there.


ʎɐqǝ ɯoɹɟ ǝq oʇ ƃuᴉoƃ ʇou sᴉ pɹɐoqʎǝʞ ʇxǝu ʎɯ 'ɹɐǝp ɥO
Post Reply