Jump to content

mjmahon

Members
  • Content Count

    5
  • Joined

  • Last visited

Posts posted by mjmahon


  1. Note that any keyboard adapter will allow "users" to interfere with each other's "keystrokes".

     

    Each axis of a digital joystick has three permitted states, usually requiring two bits. Each button is another bit. Therefore, four single-axis joysticks with one button each require 12 independent bits (since they can all be operated asynchronously).

     

    An analog joystick joystick input can only be read reliably to within 1% or so--allowing a maximum of 6 independent bits to be read. (And, since any switch can be operated at any time, a sample-and-hold would be needed to guarantee no false reads as a result of a switch changing state in the middle of a read.)

     

    So analog sensing is out unless the inputs won't change during the read, and can reliably provide only about 6 independent bits of input per read.

     

    If you really need a lot of parallel inputs, use a general-purpose parallel port card with an external joystick adapter.


  2. That will get you 256 bytes of the EPROM.

     

    The rest of it is bank-switched into the $C800..$CFFF space when the slot is accessed.

     

    A short machine language program can:

    1) deselect any switched-in I/O expansion ROM by accessing $CFFF, then

    2) selecting the desired slot by referencing something in the $Csxx space, then

    3) copying $C800..$CFFF to a spot in RAM (like $4000).

     

    Make sure that you don't reference $CFFF until the last byte, or the ROM will be deselected. In fact, the byte read from $CFFF may be invalid!

     

    Each designer took a different approach to using I/O expansion space, so expect to spend some disassembly time figuring out how it's used.

     

    Some I/O EPROMS are larger than 2K, and use a further bank-switching scheme implemented on the card. Some cards (e.g.: Vulcan) also involved SRAM in the bank switching to provide on-board buffering.

    • Like 1
×
×
  • Create New...