Jump to content
IGNORED

Is it possible to Make the 800XL Run Carts Only Without the PIA Chip?


Kjmann

Recommended Posts

Yes (if I understand you correctly)

 

I assume you're asking this because you're interested in programming cartridge images, bigger than 16kB, for one of your projects?

 

You can include a custom bank/memory controller to the cartridge hardware itself. Compare to the NES cartridges. Many of the bigger NES ROM carts contain an extra chip, which controls the banking. These controller chips themselves could be mapped as desired, at least, when keeping it simple. For example, as it's ROM, thus 'read only', we can use the 'write to cartridge ROM area' option to select a bank. See f.e. AtariMax flash cartridge.

 

Only if the cartridge size doesn't exceed 16 kbytes you can do without any external bank controller.

 

Anyway, what's your problem with PIA? I'm not sure what you're up to.

 

[Total rewrite edit (I was a bit confused)]

Edited by analmux
Link to comment
Share on other sites

I just yanked the virtual PIA out of my emulator, and unfortunately, the answer seems to be no. The PIA initializes all port lines to input on reset, so that's not a problem, but the OS ROM will try to checksum the self-test ROM on boot before invoking the cartridge. That fails without the PIA, and then the kernel crashes when it tries to invoke the self-test routine. I don't think this will work without either a custom OS ROM or a cartridge that boots in diagnostic mode.

Link to comment
Share on other sites

The other thing - what would a missing PIA do re banking the OS. The powerup default means ROM gets switched according to "1" appearing on all the PORTB lines, but what if no PIA is there?

All the PORTB lines are externally pulled to their default states for software that automatically sets PORTB to inputs.

Link to comment
Share on other sites

I just yanked the virtual PIA out of my emulator, and unfortunately, the answer seems to be no. The PIA initializes all port lines to input on reset, so that's not a problem, but the OS ROM will try to checksum the self-test ROM on boot before invoking the cartridge. That fails without the PIA, and then the kernel crashes when it tries to invoke the self-test routine. I don't think this will work without either a custom OS ROM or a cartridge that boots in diagnostic mode.

 

this is also true of a real XL/XE... i have done it, ran an XE without the PIA installed, accidentally tho...

 

if the OS select is managed in another way, then the the machine would work tho... you wouldnt be able to use the directionals on the joysticks as mentioned, but the joystick buttons, and the keyboard would be fine...

 

sloopy.

  • Like 1
Link to comment
Share on other sites

I just yanked the virtual PIA out of my emulator, and unfortunately, the answer seems to be no. The PIA initializes all port lines to input on reset, so that's not a problem, but the OS ROM will try to checksum the self-test ROM on boot before invoking the cartridge. That fails without the PIA, and then the kernel crashes when it tries to invoke the self-test routine. I don't think this will work without either a custom OS ROM or a cartridge that boots in diagnostic mode.

 

this is also true of a real XL/XE... i have done it, ran an XE without the PIA installed, accidentally tho...

 

if the OS select is managed in another way, then the the machine would work tho... you wouldnt be able to use the directionals on the joysticks as mentioned, but the joystick buttons, and the keyboard would be fine...

 

sloopy.

 

 

Hmmm. I thought Pokey Handled the Joysticks.

Link to comment
Share on other sites

The Main Idea is to Run an 800XL with No PIA and No Basic. Strictly as a Game Cartridge Machine.

 

the OS would have to be re-written, some games have issues if the basic ic is just removed, and the directionals are pins 2-9 on the PIA.

 

you do know Atari made such a thing... its called an 'Atari XE Game System' and works quite well...

 

edit:

POKEY handles the keyboard (except Option, Select, Start, which are handled by the GTIA), the paddles, and SIO, and of course... sound.

 

 

sloopy.

Edited by sloopy
  • Like 1
Link to comment
Share on other sites

removing the PIA from a 800XL and turning it into a cart based game machine would be doable, but any software for it would have to be written custom for it, or have to be modified to for keyboard control, or if you want to remove the keyboard, then wire up the keyboard matrices to the joysticks...

 

what would be the objective of this criteria?

 

sloopy.

  • Like 1
Link to comment
Share on other sites

removing the PIA from a 800XL and turning it into a cart based game machine would be doable, but any software for it would have to be written custom for it, or have to be modified to for keyboard control, or if you want to remove the keyboard, then wire up the keyboard matrices to the joysticks...

 

what would be the objective of this criteria?

 

sloopy.

Yes, or perhaps a normal A8 with the PIA removed and custom games using only the analog ports and key/GTIA inputs. (in the context of a reorganized system -ie a different incarnation of the 5200- there's potential to use the keyboard and GTIA I/O in other manners as well as the 8 POT lines but from a strict A8 lacking a PIA and no other modding, the situation is more limited).

 

One interesting possibility would be to do everything through the analog ports plus the GTIA trigger lines... with the existing 4 controller ports, you could potentially have custom controllers using 2 ports each for 2 GTIA buttons and the analog inputs treated as on/off pseudo digital lines (4 lines per controller), though for 2 port models that's not really workable without modification. Or of course you could just use 1 button analog joysticks or pseudo digital joysticks mapping 8 directions (plus neutral) to 2 analog axes with pull up resistors, or even have multiple buttons and/or keys via a wider range of analog values using more resistors -the latter would be less practical if using a full throw pot based joystick rather than the pull up resistor method. (of course, you'd want to space those values wide enough to reliably differentiate each and possibly require software to do a quick calibration at start-up -require the user to push each button and direction)

Link to comment
Share on other sites

I just yanked the virtual PIA out of my emulator, and unfortunately, the answer seems to be no. The PIA initializes all port lines to input on reset, so that's not a problem, but the OS ROM will try to checksum the self-test ROM on boot before invoking the cartridge. That fails without the PIA, and then the kernel crashes when it tries to invoke the self-test routine. I don't think this will work without either a custom OS ROM or a cartridge that boots in diagnostic mode.

 

this is also true of a real XL/XE... i have done it, ran an XE without the PIA installed, accidentally tho...

 

if the OS select is managed in another way, then the the machine would work tho... you wouldnt be able to use the directionals on the joysticks as mentioned, but the joystick buttons, and the keyboard would be fine...

 

sloopy.

 

 

Hmmm. I thought Pokey Handled the Joysticks.

 

When I test my joystick ports with:

10 ?PEEK(54016),PADDLE(0),PADDLE(1),STRIG(0):GOTO 10

 

That uses PIA, POKEY, and GTIA. I think A8 w/o PIA should boot up but may just need some jumpers on the socket to get the signals to states that won't cause OS or other software to hang.

 

One other issue I can think of without PIA would be doing output through the joystick ports. Doing output through POTs is limited.

Link to comment
Share on other sites

Pokey could be used with 2 digital sticks (fightin' words, I know) by tying them the to the paddle inputs and then seeing if they immediately latch after POTGO or not.

 

But PIA is what normally reads the stick directions. PORTA was used for ports 1&2, and PORTB for 3&4. When the XL's came out, PORTB was reassigned to system control duties. Atari was able to eliminate the PIA from the 5200 by making the joystick buttons work like a keyboard (except for the main fire button, which goes to GTIA), and using an analog stick. Pokey stands for Pots and Keys, so there you go.

Edited by Bryan
Link to comment
Share on other sites

Pokey could be used with 2 digital sticks (fightin' words, I know) by tying them the to the paddle inputs and then seeing if they immediately latch after POTGO or not.

 

But PIA is what normally reads the stick directions. PORTA was used for ports 1&2, and PORTB for 3&4. When the XL's came out, PORTB was reassigned to system control duties. Atari was able to eliminate the PIA from the 5200 by making the joystick buttons work like a keyboard (except for the main fire button, which goes to GTIA), and using an analog stick. Pokey stands for Pots and Keys, so there you go.

 

Ah I see. It's Obviously More Trouble than it's worth. Thanks For the insight.

 

 

you do know Atari made such a thing... its called an 'Atari XE Game System' and works quite well...

 

I'm aware of that. The XEGS in my opinion was a POS. I prefer the 800XL.

Link to comment
Share on other sites

Pokey could be used with 2 digital sticks (fightin' words, I know) by tying them the to the paddle inputs and then seeing if they immediately latch after POTGO or not.

 

But PIA is what normally reads the stick directions. PORTA was used for ports 1&2, and PORTB for 3&4. When the XL's came out, PORTB was reassigned to system control duties. Atari was able to eliminate the PIA from the 5200 by making the joystick buttons work like a keyboard (except for the main fire button, which goes to GTIA), and using an analog stick. Pokey stands for Pots and Keys, so there you go.

 

Ah I see. It's Obviously More Trouble than it's worth. Thanks For the insight.

 

 

you do know Atari made such a thing... its called an 'Atari XE Game System' and works quite well...

 

I'm aware of that. The XEGS in my opinion was a POS. I prefer the 800XL.

 

 

so what were you planning?

 

and yes the XEGS has its issues, but overall not a bad machine...

 

sloopy.

Link to comment
Share on other sites

Pokey could be used with 2 digital sticks (fightin' words, I know) by tying them the to the paddle inputs and then seeing if they immediately latch after POTGO or not.

 

But PIA is what normally reads the stick directions. PORTA was used for ports 1&2, and PORTB for 3&4. When the XL's came out, PORTB was reassigned to system control duties. Atari was able to eliminate the PIA from the 5200 by making the joystick buttons work like a keyboard (except for the main fire button, which goes to GTIA), and using an analog stick. Pokey stands for Pots and Keys, so there you go.

 

What do you mean by "immediately latch after POTGO"? You have to wait around for the hardware to sample the input unlike PORTA.

 

I guess Atari knew they could use the POT lines as in Atari 5200 but still continued with PIA-based joysticks and the design is very clever in that they allowed merging multiple ports so it can be used like an 8-bit bidirectional parallel port before PC ever got a bidirectional parallel port or even a unidirectional one which was a piece of crap.

Link to comment
Share on other sites

In theory the +5 Volts coming direct to a Pot input would charge very quickly so you could just use fast-scan mode, do POTGO then just wait several cycles.

 

You could probably even just read the ALLPOT register in the exact way you'd look at PORTA to get the stick values rather than having to interrogate each POT register.

 

Problem is you could do the directions by running the +5 V through what's normally the GND line to the joysticks but that'd screw up the TRIG inputs.

 

If you were going to that sort of trouble, you could probably multiplex 2 or more inputs per POT anyway, that'd free up capability to have multiple fire buttons.

Link to comment
Share on other sites

In theory the +5 Volts coming direct to a Pot input would charge very quickly so you could just use fast-scan mode, do POTGO then just wait several cycles.

 

You could probably even just read the ALLPOT register in the exact way you'd look at PORTA to get the stick values rather than having to interrogate each POT register.

 

Problem is you could do the directions by running the +5 V through what's normally the GND line to the joysticks but that'd screw up the TRIG inputs.

 

If you were going to that sort of trouble, you could probably multiplex 2 or more inputs per POT anyway, that'd free up capability to have multiple fire buttons.

 

All the POT inputs are voltage comparators that wait for a cap to charge to a certain point and then the POT timer is latched for that input. You only have to worry about charge time if the external capacitors are present. Otherwise, POTGO would clear all the input bits of ALLPOT and then they'd immediately latch for anything that was pulled up.

 

So, it basically becomes a latched input port (although latch on low would be more useful for joysticks since the common contact is GND). I think all channels eventually latch when the timer expires too.

Link to comment
Share on other sites

In theory the +5 Volts coming direct to a Pot input would charge very quickly so you could just use fast-scan mode, do POTGO then just wait several cycles.

 

You could probably even just read the ALLPOT register in the exact way you'd look at PORTA to get the stick values rather than having to interrogate each POT register.

 

Problem is you could do the directions by running the +5 V through what's normally the GND line to the joysticks but that'd screw up the TRIG inputs.

 

If you were going to that sort of trouble, you could probably multiplex 2 or more inputs per POT anyway, that'd free up capability to have multiple fire buttons.

 

According to one of the Atari's reference manual, fast pot scan (which is two scanlines) is inferior to slow pot scan. And ALLPOT can't be used since there's no account for three states (left, center, right) or (up, center, down).

Link to comment
Share on other sites

I'm getting confused. I'm only talking about using the 8 pot inputs as digital inputs which can be easily done with ALLPOT (4 bits per stick). If you're going to try to use the joystick in a pseudo-analog way, then you're going to need the charging circuits intact and different resistors inline with the different direction bits. Then you'd read the POT value instead of using ALLPOT. That method would be prone to errors while the stick was being moved, though.

 

EDIT: Has anyone ever used fast pot-scan mode? I understand that it speeds up the pot counter, but without corresponding changes to the external charging components I don't see how it would actually work.

Edited by Bryan
Link to comment
Share on other sites

Fast scan is less precise - where you might get jitter that jumps among 3 values in standard, in fast it would likely be closer to a dozen.

But in the context of wanting a true/false value it doesn't matter.

 

I imagine that in fast scan, the comparitor voltage would be scaled down, or maybe there's some sort of impedence that can be switched on and off for each POT.

Edited by Rybags
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...