Button Clock is a typical QL clock job. This one is designed to reside in
the QPac2 Button Frame.


Note: This is a silly little program, although I quite like it, myself. It uses way too many resources for what it does. There are plenty of alternatives out there that do pretty much the same at less than half the cost! It is designed for SMSQ/E, although you can squeeze it into Qdos/Minerva if you have an abundance of memory and anyway use the many extra systems extensions it requires. Look at it more as a POC rather than an ideal utility! Requirements ============ SMSQ/E (or Qdos/Minerva with TK2 V2.3+ *, ptrgen, Wman2 and probably the Hotkey system too. Also Homedir_bin). It also requires Qpac2's Button Frame, QLIB_run (or equivalent), and EasyPointer's ptrmen_cde. The program requires CLK_obj to reside in ButClk's Home Directory. Clearly, the program is made for systems where these "extras" are considered a matter of course. There are plenty of other clocks out there that dont need any of this! *) TK2 V 2.30 for the QL/Minerva added the EX_M command; however it also removed the CLOCK command due to lack of space. So if you use TK2 up to V2.13, you need to alter ButClk's EX_M command to EX (no big deal, really) and recompile. If you use TK2 V2.3+ you will need to load the CLOCK_cde toolkit (see below). You could, if you like, compile this in with the CLK program - or just LRESPR it separately for use system wide. The ButClk utility consists of the following components: ButClk_obj - this is the main executable, the program you launch at some time in your boot sequence. ButClk_bas - this is the S*BASIC source code for the above ButClk_txt - this document ButClk_cde - a toolkit required to recompile ButClk_bas. Not needed for normal operation of the compiled program ButClk_asm - the ButClk-specific source code for the above toolkit (the remaining code can be found in the toolkit section of Knoware.no) ButClk_link - the Qmake linker file for the above CLK_obj - this is a secondary program to display the detailed time and date. It acts as a hint popup to ButClk. It must reside in the same directory as ButClk_obj CLK_bas - the S*BASIC source code for the above CLK_CDE - the toolkit commands needed by CLK_bas, compiled in with the CLK_obj program CLK_asm the CLK-specific source code for the above PEHEAD_asm - bridging code to handle the PE component(s) for the above CLK_men - the menu definition for CLK CLK_men_rel - the above in SROFF format for inclusion in the CLK toolkit CLOCK_cde - not included here. Needed for Qdos/Minerva systems using TK2 V2.30 or above. Can be found at Knoware.no under toolkits/compatibility Use === ButClk cant be invoked with the usual BT_xxx commands, as the job has special requirements of the button window. Simply EX ButClk_obj at the point in your boot program (for example) when you want the program to appear in the Button Frame. The job takes a single, optional, prameter: exactly one digit between 0 and 3, representing the system palette number you require. If none - or a nonsensical value - is given, the palette reverts to 0. HITing the button opens a Hint window with a more detailed date and time display. Any keystroke or movement of the pointer terminates the detailed display. Pressing ESC while the pointer is in the button window terminates the job. The CLK program CAN be executed as a separate job, but it is intended to be invoked by ButClk. Details of parameters and use can, if required, be found in its S*BASIC source code. Program notes ============= Why go to all this trouble for a button clock?! Well, I needed a new one and I didnt particularly like any of the others on offer. And being a QLer, of course I had to make my own! However, it isnt all about fun and frivolity. There are a few things of note that MAY be found useful in other, more serious, contexts. First of all the is all the button stuff. This is explored more precisely in my Button toolkit, found here. Secondly, there is the external popup routine; one program calling up another to avoid the PE limitations of a job's display being confined to the outline of the main program. This is explored in more detail in my Poxology article and associated programs at Articles. Thirdly, there is the feature of one job outputting its display through the screen channel of another job. This only really works for simple text (not graphics) where the update frequency is slow and not required to be entirely regular. This is a feature of Tony Tebby's CLOCK command/program. The issue was discussed on QL forum some time ago under the topic "Passing channels to jobs". See the thread here for more information. Program status ============== The source code for the included toolkits can be found in my pick 'n' mix toolkit on Knoware.no Conditions and DISCLAIMER as per Knoware.no V0.01, pjw, 2021 Apr 19 V0.02, pjw, 2021 May 30, Click instead of hover for detailed display V0.02, pjw, 2022 Oct 05, programs moved to a different location. Source files adjusted to reflect that and reassembled & recompiled

Generated by QuickHTM, 2022 Oct 13