Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

#115 paste into bochs window

added_in_v1.4
closed
5
2012-10-15
2002-03-10
Bryce Denney
No

Allow pasting into the Bochs window.

Discussion

  • Bryce Denney
    Bryce Denney
    2002-03-11

    Logged In: YES
    user_id=185114

    It works and I checked it in. Paste requires key mapping to
    be enabled. I've only tested on linux with the US keymap.

     
  • Bryce Denney
    Bryce Denney
    2002-03-19

    Logged In: YES
    user_id=185114

    FR and DE keymaps have been updated now, thanks to Volker
    and Christophe. The only lingering issue is that I heard
    that Christophe had trouble pasting more than 14 chars. So
    I created a patch for him to try, called
    patch.paste-only-when-empty.

    Christophe, if you are still seeing the same problem, please
    try out the patch and let me know if it resolves it.
    Thanks!

     
  • Logged In: YES
    user_id=393999

    yes, still the same problem even with the
    patch.paste-when-empty.
    What is strange, is that some chars seem to be dropped, and
    for each of those dropped char i get in the log :
    00165851666i[PIT81] Changing GATE 2 to: 0
    00165898274i[PIT81] Changing GATE 2 to: 1

     
  • Bryce Denney
    Bryce Denney
    2002-03-21

    Logged In: YES
    user_id=185114

    My guess is that the "Changing GATE 2 to: n" message happens
    when Bochs tries to "beep". Sometimes you get beeps if the
    keyboard buffer overflows, but I don't know if this depends
    on the hardware, bios, or OS.

    Could there be a dependence on which guest OS you are
    running? I have done all my paste testing on DLX Linux.
    Maybe some OSes have a software keyboard buffer that is 16
    chars long...?

    The next step after the "paste-when-empty" patch would be to
    use bochs timers to schedule the next key event after some
    number of simulated microseconds seconds have gone by, and
    the delay would have to be adjustable in the bochsrc.
    Maybe it would work to move the

    if (BX_KEY_THIS s.kbd_internal_buffer.num_elements == 0 )
    {
    // if queue is empty, add more data from the paste
    buffer, if it exists.
    BX_KEY_THIS service_paste_buf ();
    }

    from the end of bx_keyb_c::periodic into the beginning just
    after handle_events(), like this

    if ( ++multiple==10)
    {
    multiple=0;
    bx_gui.handle_events();
    if (BX_KEY_THIS s.kbd_internal_buffer.num_elements == 0
    ) {
    // if queue is empty, add more data from the paste
    buffer, if it exists.
    BX_KEY_THIS service_paste_buf ();
    }
    }

    That would leave significantly more time for the OS to
    process each key, since it only considers adding another key
    every 10th time that periodic is called. This could be used
    with or without the patch.paste-when-empty.

    I'm runing out of ideas. I hope one of these helps.

     
  • Bryce Denney
    Bryce Denney
    2002-03-26

    Logged In: YES
    user_id=185114

    I checked in Christophe's patch.paste-for-dos. It turns out
    that adding the minimum delay didn't make Linux pasting any
    slower. It's just that Linux can handle tons of characters
    in its software keyboard buffer, while DOS only allowed 16.

    I just added the paste delay to the runtime configuration
    menu, so that you can tweak it without rebooting. And I
    removed the paste patches from the patches dir.

    I think this is all done! Thanks CB for your help.