Jump to content
IGNORED

Atari 800 + Incognito: Bringing back the HELP key...


Faicuai

Recommended Posts

Ever since I saw and "loved" the 1200XL for the first time (while being unaware its deeper short-comings) and after getting my 800XL (as an upgrade from my puny 400), I noticed that wonderful HELP key, as well as all the sweet things that could be done with it.

 

However, I also loved the "Fuji" logo key on the 400 / 800 series, which I found pretty cool and distinctive but, to my dismay, it disappeared from the keyboard with the introduction of XL series (!) So, I thought, why not bringing the best of both worlds to the uber-nice A800 // Incognito combo? After all, I have been missing that Help key for quite a while...

 

And that's just what I thought while going through Last Word's super nicely structured Help-screen layout, in which I also noticed the myriad of Shift, Control and Shift+Control combinations used to access its rich feature set.

 

After looking at Atari OS (XL/XE) maps from multiple versions, as well as some tiny sections of its Key-handler code, I noticed that:

  • the HELP key usage is handled with three (3) different key-codes (HELP, Ctrl+HELP, Shift-HELP)
  • an initial copy of these key-codes is loaded into both X and A registers, while the latter being filtered and checked, before reporting content of X to $02DC address

 

After a bit of work , I found a reasonable (and seemingly reliable) approach to re-map and enable the HELP key-code (being intercepted on $FC5C):

 

Before (@ $FC5C)

 

AND $#3F............. 29 3F

CMP #$11............ C9 11

BNE $FC90.......... D0 2E

STX $02DC.......... 8E DC 02

 

 

After (@ $FC5C)

EOR $#F6............. 49 F6

CMP #$11............ C9 11

BNE $FC90.......... D0 2E

STA $02DC.......... 8D DC 02

 

 

The advantages of the above changes:

  1. It re-maps the XL-series HELP key to [Shift + Control + Atari-key] on [Atari 800 + Incognito] setup.
  2. Does not interfere with Incognito Bios operation, as well as with any of the myriad of key combos of wonderful Last Word :-)
  3. Only three (3) bytes have been updated. Branch logic / flow remains intact.
  4. It is cycle-equivalent to timing of original ROM code (in case something out there depends on OS key handler's original timing)
  5. Could potentially be used / re-used to bring back other keys, like 1200XLs F1-F4, for which the original code is STILL there!

The disadvantages:

  1. [Control + HELP] or [shift + HELP] key-codes could not be handled with the current EOR mask. Therefore, they are simply ignored.

 

Attached is the modified OS ROM for use on [Atari 800 + Incognito]. The code-base is Rev03 XL/XE ROM and "signed" with the correct Low-region and High-region checksums (it will pass SuperSalt ROM checksum test):

 

AtariOS-800XE-Rev03-FastMath-Incognito.rom

 

As an added bonus, the above ROM includes high-speed Floating Point routines (2x to 5x faster) and with them there will be almost anything you cannot handle, without mentioning the litany of past-benchmarks (in or out of Basic) that you will just blow out of the water with absolutely no other HW changes... And now with a Help key to boot! :-)

 

Let me know if you find any issues with it. I simply could not! Cheers!

  • Like 6
Link to comment
Share on other sites

Update:

 

Managed to revive dormant 1200XL key-handler code, in charge of F1-F4 keys...

 

I can now Switch ON and OFF the ANTIC processor and KEY-click feedback, at will, with a simple keystroke! And all being handled by relic / vestiges of Atari's own code that somehow survived multiple OS generations, right from 1200XL era (!)

 

Testing for integrity now, and if everything turns out Ok., I will come back and post the updated ROM image... signed with correct Checksums... This will also be available for current XL users besides Incognito (like me, as well).

  • Like 5
Link to comment
Share on other sites

That code was left in with the idea that some of the other machines might use it again, though as you saw... never came to fruition...

How cool is it that you have made it useful across the entire line again!

I get excited when I see this sort of thing. :)

Edited by _The Doctor__
  • Like 3
Link to comment
Share on other sites

Transkey gives you all those keys in their stock locations in the key scanned matrix. So if you run an XL/XE OS they will be available from a PS/2 keyboard on a TK upgraded 400/800 machine. However with that said, the 800's stock keyboard is hard to beat, only surpassed in my opinion by the 1200XL's.

 

Transkey XL/XE OS key equivalents

-----------------------------------------------------------

F1-F4 mapped to PS/2 Function keys F1-F4

Help key mapped to PS/2 Function key F10

-----------------------------------------------------------

  • Like 4
Link to comment
Share on other sites

UPDATE:

 

Well, after careful review of OS/ROM code (dating back all the way to 1200XL and up until last version, XEGS-v04), here's what've got:

 

  1. The following 1200XL & XL OS-Rom functions are NOW operational on both [ A800 / Incognito ] and [XL-XE / Ultimate ] (or equivalent multi-ROM mod).
  2. These will operate INDEPENDENTLY of your application, as long your application does not re-define or illegally breaks the OS key translation tables and / or its key-scanner / processor.
  3. Re-mapping strokes have been carefully chosen, as means of interfering as little as possible (or not at all) with other applications.
  4. You DO NOT need any additional or special HW to run these, other than being able to install (or re-flash) the provided ROMs.
  5. All changes / tweaks are cycle-exact with respect to original ROM, plus ensured compatibility with PORTB vector / content usage.
  6. All ROMS have been signed with correct checksums, and should pass any OS-checksum test.
  • HELP (1200XL and XL/XE series):
    • remapped to [ CONTROL + SHIFT + Fuji / Inverse ].
    • HELP key now available in [ 800 / Incognito ] environment.
    • Apps like Last Word, FlickerTerm, some sector copiers, and others now work better on this environment.
  • CONTROL-F1 (1200XL):
    • remapped to [ CONTROL + SHIFT + DEL-BackSp]
    • Toggles keyboard lock-out, but entire OS (and system + console keys) remain FULLY operational.
    • Operational in 800-Incognito, and XL / XE series.
  • CONTROL-F2 (1200XL):
    • remapped to [ CONTROL+ Fuji / Inverse ]
    • TURBO key. Toggles Antic ON / OFF, and re-directs 6502's full power to any computational-intensive task.
    • Up to +25%-40% gains in cpu-time reclaimed for CPU-intensive tasks. Ideal for some on-the-spot compiling, assembling, etc.
    • Screen is magically restored by simply.... touching ANY key (!!!)
    • Works well in SDX environment, with 40 or 80 col emulation, and in most apps. or even demos that allow access to OS key processor.
    • Operational in 800-Incognito, and XL / XE series.
  • CONTROL-F3 (1200XL):
    • remapped to [ SHIFT + Fuji / Inverse ]
    • TOGGLES keyboard's audible Key-Click. Change it instantly, at will (!)
    • Operational in 800-Incognito, and XL / XE series.
  • CONTROL-F4 (1200XL):
    • remapped to [ SHIFT + CONROL + CAPS/lower ]
    • Enables or disables INTERNATIONAL character set, on-the-fly, and instantly.
    • Good for immediate access of special punctuation, etc., right on the screen.
    • I have seen it working as far as in the middle of some DEMOS (!)
    • Operational in 800-Incognito, and XL / XE series.
    • NOTE:
      • in the provided high-speed FP rom variant, the entire screen will be masked with RAM data-patterns, because the built-in high-performance FP-package is extensive and ALSO replaces the international character set.
      • A separate ROM package is also provided to address this issue, but restoring original FP routines.

 

Here are the ROM images:

 

For INCOGNITO:

AtariOS-800XLXE-Rev03-FP-F1_F4_H-Incognito.rom

AtariOS-800XEGS-Rev04-F1_F4_H-Incognito.rom

 

For ULTIMATE (or equivalent Multi-Rom system):

AtariOS-800XLXE-Rev03-FP-F1_F4-Ultimate.rom

AtariOS-800XEGS-Rev04-F1_F4-Ultimate.rom

 

 

Hope it works for you as well as it works over here. If there are any issues, just chime in!

  • Like 7
  • Thanks 1
Link to comment
Share on other sites

Now this the sort of slick thing that takes me back to the glory days. Thank you.

 

It would be nice to get feedback on how it works out on a 32-in-1 from AtariMax, or straight rom burned replacements, etc... os on a cart translator style etc. I'd love to this spread across all various possible implementations...

Edited by _The Doctor__
  • Like 1
Link to comment
Share on other sites

Now this the sort of slick thing that takes me back to the glory days. Thank you.

 

It would be nice to get feedback on how it works out on a 32-in-1 from AtariMax, or straight rom burned replacements, etc... os on a cart translator style etc. I'd love to this spread across all various possible implementations...

 

For sure!

 

Should work.... and maybe more intriguing, is how it works for XEGS, too, as this system is usually neglected or forgotten, yet it packs cool features... The Rev04 (Ultimate) ROM version that I attached should work well with it... I wish someone would test it there...

Cheers!

Link to comment
Share on other sites

Ever since I saw and "loved" the 1200XL for the first time (while being unaware its deeper short-comings) and after getting my 800XL (as an upgrade from my puny 400), I noticed that wonderful HELP key, as well as all the sweet things that could be done with it.

 

However, I also loved the "Fuji" logo key on the 400 / 800 series, which I found pretty cool and distinctive but, to my dismay, it disappeared from the keyboard with the introduction of XL series (!) So, I thought, why not bringing the best of both worlds to the uber-nice A800 // Incognito combo? After all, I have been missing that Help key for quite a while...

 

And that's just what I thought while going through Last Word's super nicely structured Help-screen layout, in which I also noticed the myriad of Shift, Control and Shift+Control combinations used to access its rich feature set.

 

After looking at Atari OS (XL/XE) maps from multiple versions, as well as some tiny sections of its Key-handler code, I noticed that:

  • the HELP key usage is handled with three (3) different key-codes (HELP, Ctrl+HELP, Shift-HELP)
  • an initial copy of these key-codes is loaded into both X and A registers, while the latter being filtered and checked, before reporting content of X to $02DC address

 

After a bit of work , I found a reasonable (and seemingly reliable) approach to re-map and enable the HELP key-code (being intercepted on $FC5C):

 

Before (@ $FC5C)

 

AND $#3F............. 29 3F

CMP #$11............ C9 11

BNE $FC90.......... D0 2E

STX $02DC.......... 8E DC 02

 

 

After (@ $FC5C)

EOR $#F6............. 49 F6

CMP #$11............ C9 11

BNE $FC90.......... D0 2E

STA $02DC.......... 8D DC 02

 

 

The advantages of the above changes:

  1. It re-maps the XL-series HELP key to [Shift + Control + Atari-key] on [Atari 800 + Incognito] setup.
  2. Does not interfere with Incognito Bios operation, as well as with any of the myriad of key combos of wonderful Last Word :-)
  3. Only three (3) bytes have been updated. Branch logic / flow remains intact.
  4. It is cycle-equivalent to timing of original ROM code (in case something out there depends on OS key handler's original timing)
  5. Could potentially be used / re-used to bring back other keys, like 1200XLs F1-F4, for which the original code is STILL there!

The disadvantages:

  1. [Control + HELP] or [shift + HELP] key-codes could not be handled with the current EOR mask. Therefore, they are simply ignored.

 

Attached is the modified OS ROM for use on [Atari 800 + Incognito]. The code-base is Rev03 XL/XE ROM and "signed" with the correct Low-region and High-region checksums (it will pass SuperSalt ROM checksum test):

 

attachicon.gifAtariOS-800XE-Rev03-FastMath-Incognito.rom

 

As an added bonus, the above ROM includes high-speed Floating Point routines (2x to 5x faster) and with them there will be almost anything you cannot handle, without mentioning the litany of past-benchmarks (in or out of Basic) that you will just blow out of the water with absolutely no other HW changes... And now with a Help key to boot! :-)

 

Let me know if you find any issues with it. I simply could not! Cheers!

 

I did the same thing, but with ctrl-shift-? as the help key.

 

http://atariage.com/forums/topic/222555-how-to-add-missing-help-key-to-800/?do=findComment&comment=2937400

Link to comment
Share on other sites

 

NICE to see that this has been tried before (never saw this, actually!)

 

However, I just tried it and I get random lock-ups on SDX prompt (works well of Self-Test, though)... and when launching Last Word, it does not seem to work either (Shift-Control-? is intercepted by Last Word's own key mapper, though, as that shows System Information, like SW version, extended ram presence and allocated / available memory banks).

 

I checked your code and you actually worked on a set of four instructions (6 bytes) with a modified branching point... I do like the simplicity of your Compare-approach.

 

Nevertheless, with the adjustments I performed, you keep the branch/flow logic intact, and only touch two op-codes, and one data byte (total of 3 bytes). And the plus is that the change works in basically all apps that I know of (including Last Word), as well as remaining cycle-exact to original ROM code due to the protection of the branch-points, and the CPU-cycles spent on the chosen / substitute op-codes.

 

Cheers!

  • Like 1
Link to comment
Share on other sites

IIRC, ctrl-shift-fuji was used by something and that's why I chose the ? key. I'll have to check it again and see if I can reproduce the SDX lockup issue. I don't remember an issue, but anything is possible.

 

Edit: typo.

Edited by Kyle22
Link to comment
Share on other sites

IIRC, ctrl-shift-fuji was used by something and that's why I chose the ? key. I'll have to check it again and see if I can reproduce the SDX lockup issue. I don't remember an issue, but anything is possible.

 

Edit: typo.

 

:thumbsup: :thumbsup: :thumbsup:

 

Check it out... before I started looking at this possibility, I checked quite a few apps. and their key mappings (not that many use HELP, though)... I took notes... if there is one (or the FIRST one) to check is Last Word... it has an extensive mapping / usage of [sHIFT + CONTROL + key ] combinations. And right there, at the very beginning, I remember that your key-stroke was taken (it is rendered inoperative in Last Word)...

 

At this point, I have not found a SINGLE title in my collection that uses [sHIFT + CONTROL + Fuji/Inverse] while still relying on the O/S key processor. There are cases (far in between) like SDRIVE (Nuxx) loader, which remaps the keys and locks the use of Fuji / Inverse key (by cancelling out SHIFT or CTRL strokes, but this means it bypasses OS key-processor, which suggests even the 1200XL itself may have trouble with).

 

If you find one, let me know !

 

Cheers!

Link to comment
Share on other sites

It looks like TLW observes the OS help key flag rather than scanning the raw key code (it's rather a long time since I wrote it). This could change in the future, however, since there are many things about TLW which deserve a complete re-write. ;)

 

To be honest, I don't see that much problem with LW's key-decoding / mapping approach, though.

 

The following example shows it nicely:

  1. The sequence [CTRL-SHIFT-INSERT] toggles the INSERT / OVERWRITE status on LW.
  2. Oddly enough, the [CTRL-SHIFT-DELETE/BackSP] does the EXACT same thing. We have a duplicate, here.
  3. I chose the latter to re-map 1200XL's CTRL-F1 (keyboard-lock toggle). Plus it is VERY RARELY used, anywhere.
  4. Now, in LW, when I press [CTRL-SHIFT-Dellete/BackSP], LW does not block it and allows the OS key-processor to take place (thus locking out the keyboard) exactly as originally programmed in ROM.

 

Well, the above means that, If I re-map in ROM a specific key-stroke sequence, and I am not careful enough, it will override whatever function LW has planned for it (which is the case of SHIFT+CTRL+?, as it will override's LW System Info. function). I do prefer this approach at the end, because it gives the wider latitude for re-using the keyboard in as many ways as possible. But it requires a more extensive / introspective review, before choosing the alternate key-strokes.

 

Other software, however, even bypass the OS key-mappings entirely, and there is nothing we can do, except what the SW designates. I really don't like that approach, because in part is the "I do what I want" type of mentality that plagued Atari SW development for decades...

 

Cheers!

  • Like 1
Link to comment
Share on other sites

I love they way it works, wouldn't change the way either are working, though key for info could change.... looks to be working flawlessly so far with everything... save that which was mentioned.

 

Interesting project to list all key combinations though.... :)

  • Like 1
Link to comment
Share on other sites

You can completely remap the keyboard in TLW but some of the processing is a bit inconsistent. I will be looking at it again in the future. There's a developmental branch of the program on my HDD here with a twenty-three line text window and numerous bug fixes. ;)

Edited by flashjazzcat
  • Like 3
Link to comment
Share on other sites

I love they way it works, wouldn't change the way either are working, though key for info could change.... looks to be working flawlessly so far with everything... save that which was mentioned.

 

Interesting project to list all key combinations though.... :)

 

There are also 88 bytes free / unused, starting at CBB0 through CC07 in OS / ROM (all images I posted, as well as original Atari image of R03 and R04).

 

It is tight, but we may be able to squeeze a Gr.0 screen with a short list of key mappings...

 

But debate here is whether to poke video ram directly, or include a Gr.0 DLI-setup, or go through CIO... don't know, but 88 bytes is all I see with absolutely no disruption.

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Just a quick update after weeks of testing...

 

EVERYTHING has been working really nice, and little or no mapping conflicts found in almost all of the SW tested.

 

HIGHLY recommended, considering that the functionality was already dormant, for decades, in first place !

 

:-)

  • Like 5
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...