RichardBrown384 / Eichhoernchen

Acorn Archimedes A3000 Emulator in C++23
https://github.com/RichardBrown384/archimedes
MIT License
14 stars 0 forks source link

[BUG] Attempting to configure the keyboard in RISC OS 3 locks up the emulator #4

Closed RichardBrown384 closed 2 months ago

RichardBrown384 commented 2 months ago

Describe the bug Attempting to configure the keyboard using the RISC OS 3 !Configure App locks up the emulator

To Reproduce Steps to reproduce the behaviour:

  1. Start Emulator
  2. Double click on Apps
  3. Double click on !Configure
  4. Click on the !Configure App in the Icon Bar
  5. Click on the Keyboard icon
  6. Emulator locks up

Expected behaviour When the keyboard icon is clicked upon the keyboard configuration window should appear.

Please complete the following information

Additional context None

RichardBrown384 commented 2 months ago

Immediately prior to opening the keyboard configuration window the OS accesses CMOS addresses 0x4d, 0x4c and 0x4b.

Subtracting 64 from these addresses gives us CMOS locations 13 (keyboard auto repeat), 12 (keyboard delay) and 11 (misc configuration). RISC OS documentation.

The one that makes a difference is location 11 which contains the Shift Caps, No Caps and Caps settings.

The valid bit patterns are

Bits Setting
001 Shift Caps
010 No Caps
100 Caps 

With a CMOS that is all zero, none of these bit patterns match and this is likely the reason that the window locks up trying to set the appropriate, non-existent, radio button.

This is connected to #2 and #9

RichardBrown384 commented 2 months ago

Resolved by #26