Jump to content
IGNORED

CONFIG misbehaves when a trackball is plugged in to port 1.


Recommended Posts

I don't expect it to work properly with a trackball. The cursor motion is erratic. This is fine.

 

However, when choosing a disk image once you select a drive slot it instantly selects read-only automatically. This happens when using only the keyboard for interacting.

 

You can get it to work normally by rolling the ball right and down carefully to get the X and Y codes both to 11 which is the same as the neutral joystick position. Or switch it to joystick mode. Or, of course, unplug it.

 

Config version: 0.5.aac1c104

 

Link to comment
Share on other sites

1 hour ago, _The Doctor__ said:

I'm sorry, I wasn't aware the config was trackball or mouse capable? Maybe I missed this feature? Control T maybe could be incorporated into config with trackball/mouse input routine? Is this the ask?

I mean it more as a bug report.

 

There is no trackball support and I'm not interested.

 

I had a trackball plugged in (and sitting to the side) because I had played some Missile Command this week. When I went to do some FujiNet changes the Config program was acting strange. I couldn't set a slot as R/W and needed to. As it was the only thing that was different from a properly working system I unplugged the trackball. And it worked again.

 

I messed with it some more and figured out it's sensitive to the joystick port not reading 15 (binary 1111). It does the same thing if you hold a joystick in a direction when you press enter. It's just that a trackball has one of 4 pins set to 0 most of the time even when idle.

  • Like 1
Link to comment
Share on other sites

that's useful information, something might be workable @mozzwald, @tschak909,

52 minutes ago, Teapot said:

I had a trackball plugged in (and sitting to the side) because I had played some Missile Command this week. When I went to do some FujiNet changes the Config program was acting strange. I couldn't set a slot as R/W and needed to. As it was the only thing that was different from a properly working system I unplugged the trackball. And it worked again.

 

I messed with it some more and figured out it's sensitive to the joystick port not reading 15 (binary 1111). It does the same thing if you hold a joystick in a direction when you press enter. It's just that a trackball has one of 4 pins set to 0 most of the time even when idle.

maybe trackball & mouse support could be added since a fix to keep a track ball in trackball mode and config not getting along is indeed a bug... I just verified it too. That does make sense.

Edited by _The Doctor__
Link to comment
Share on other sites

9 hours ago, tschak909 said:

Interesting... I'm curious to see how best to implement this, as we can't just assume trackball either.

 

-Thom

 

If you only want to avoid the error state, check the joystick state upon startup of config and disable joystick support if the stick is not centered. 

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

10 hours ago, DjayBee said:

If you only want to avoid the error state, check the joystick state upon startup of config and disable joystick support if the stick is not centered. 

This would solve the problem of having the trackball in a position that matches the joystick non-diagonal values and would only be a problem for impatient XEGS users.

 

 

The forced read-only bug is in fujinet-config/src/atari/input.c:input_select_slot_mode()

 

    if (k == 'W')
    {
      mode[0] = 2;
    }
    else
      mode[0] = 1;
  }

 

It should be "else if (k == KCODE_RETURN)"

 

Or the function could be rewritten to use a switch statement.

 

Link to comment
Share on other sites

7 hours ago, Teapot said:

The forced read-only bug is in fujinet-config/src/atari/input.c:input_select_slot_mode()

I've updated it to this:

unsigned char input_select_slot_mode(char *mode)
{
  unsigned char k = 0;

  while (1)
  {
    k = input_ucase();

    switch (k)
    {
    case KCODE_ESCAPE:
      return 0;
      break;
    case 'W':
      mode[0] = 2;
      return 1;
      break;
    case KCODE_RETURN:
    case 'R':
      mode[0] = 1;
      return 1;
      break;
    default:
      break;
    }
  }
}

 

  • Like 4
Link to comment
Share on other sites

12 hours ago, mozzwald said:

I've updated it to this:

unsigned char input_select_slot_mode(char *mode)
{
  unsigned char k = 0;

  while (1)
  {
    k = input_ucase();

    switch (k)
    {
    case KCODE_ESCAPE:
      return 0;
      break;
    case 'W':
      mode[0] = 2;
      return 1;
      break;
    case KCODE_RETURN:
    case 'R':
      mode[0] = 1;
      return 1;
      break;
    default:
      break;
    }
  }
}

 

Thanks, @mozzwald! :)

 

-Thom 

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...