I've come up with an idea for a "second shift" key on the 41. If you're like me, you rarely use the SIGMA+/- functions, so would appreciate using that key for something else instead (replace it with your most hated key if that's not the case).
Using the partial data entry routines it's relatively simple to make any key a launcher for other functions, as though they were assigned to the keys. Let's call it the RED shift key - blue is obviously taken by the Alpha keyboard). Its response is based on the pressed key codes, and it supports both shifted and unshifted selections (yellow shift).
Using other mainframe routines the behavior is identical to that of the native functions: the function name is read from the rom's FAT table and displayed while the key is depressed, and the NULL message is shown if maintained for the timeout time. A real charm, if you ask me.
On an emulator this scheme is easily completed by coloring the key and changing its face legend. I've got my 41V changed to that effect, and the legend is "Z" - as I use my red shift key to launch all the complex equivalent functions. Note that this only requires ONE key assignment, the function assigned to the RED key will do the selection work. Saves memory, your USER keyboard is free, and it's faster. You need to see it... will be added to the posted 41Z in a few days.
Now the finishing touches. I've been trying to use the "G" annunciator to flag this RED shift key usage. The idea is to have it come up while the key selection sequence is going on, and come off upon completion. Unfortunately so far I haven't managed - it's intimately linked to the RAD / GRAD selection, and it appears to have a life of its own despite my attempts to command its individual action.
In theory one can use WRITDATA with bit 9 set on C(S&X) - see Ken Emery's book - but that doesn't cut it. Not even the service ROM makes use of the "G" annunciator alone - I'm beginning to wonder whether it's possible at all?
Here's the routine I use to toggle its status - not working- , maybe you can spot the faulty bits:
(the display is enabled when calling it)
Quote:
178 READ 5(M)
23C RCR 2
3D8 C<>ST
30C ?FSET 1
01F JC +03
308 SETF 1
013 JNC +02
304 CLRF 1
3D8 C<>ST
37C RCR 12
2F0 WRIT DATA
3E0 RTN
Any ideas please?
Best,
ÁM
Edited: 29 Oct 2009, 4:33 a.m.