On Wed, Aug 10, 2011 at 12:53 PM, Blue Swirl <blauwirbel@gmail.com> wrote:
On Tue, Aug 9, 2011 at 9:54 PM, William Hahne <will07c5@gmail.com> wrote:
> "get-key-map" is a Forth word that provides a map of all the keys currently
> pressed on the keyboard. Since it is only used by BootX to determine if one
> of the shortcuts for verbose or single user mode is pressed. It is a waste
> of time to provide a full implementation. This just hands out a dummy key
> map which specifies verbose mode.
> Index: drivers/adb_kbd.c
> ===================================================================
> --- drivers/adb_kbd.c (revision 1041)
> +++ drivers/adb_kbd.c (working copy)
> @@ -43,10 +43,13 @@
>
>  static void keyboard_read(void);
>
> +static void keyboard_get_key_map(void);
> +
>  NODE_METHODS( keyboard ) = {
>   { "open", keyboard_open },
>   { "close", keyboard_close },
>   { "read",               keyboard_read },
> + { "get-key-map", keyboard_get_key_map },
>  };
>
>  /* VT100 escape sequences */
> @@ -566,3 +569,18 @@
>   }
>   PUSH(i);
>  }
> +
> +static unsigned char fake_keymap[32] = {

Can this be 'const'?

Yes
 

> + 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
> +};
> +
> +static void keyboard_get_key_map(void)
> +{
> + /* This is a bit of a hack since BootX requires a get-key-map word.
> +    In the future this should be changed to give the actual current
> keymap,
> +    but since this only effects keyboard input in BootX it isn't a
> priority. */
> + PUSH( (int)fake_keymap );

'long' would not truncate on 64 bit host with 64 bit cells.


Oops, thanks for catching that. :) Revised patch at the bottom.
 
> +}
> --
> OpenBIOS                 http://openbios.org/
> Mailinglist:  http://lists.openbios.org/mailman/listinfo
> Free your System - May the Forth be with you
>

--
OpenBIOS                 http://openbios.org/
Mailinglist:  http://lists.openbios.org/mailman/listinfo
Free your System - May the Forth be with you

Index: drivers/adb_kbd.c
===================================================================
--- drivers/adb_kbd.c   (revision 1046)
+++ drivers/adb_kbd.c   (working copy)
@@ -43,10 +43,13 @@

 static void keyboard_read(void);

+static void keyboard_get_key_map(void);
+
 NODE_METHODS( keyboard ) = {
        { "open",               keyboard_open           },
        { "close",              keyboard_close          },
        { "read",               keyboard_read           },
+       { "get-key-map",        keyboard_get_key_map    },
 };

 /* VT100 escape sequences */
@@ -566,3 +569,18 @@
        }
        PUSH(i);
 }
+
+static const unsigned char fake_keymap[32] = {
+       0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+       0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
+};
+
+static void keyboard_get_key_map(void)
+{
+       /* This is a bit of a hack since BootX requires a get-key-map word.
+          In the future this should be changed to give the actual current keymap,
+          but since this only effects keyboard input in BootX it isn't a priority. */
+       PUSH( (ucell)fake_keymap );
+}