Hi,
Just toying with an idea. Does anyone know how feasable it is to bypass the BIOS calls to access the SIO channel used for the memory cards and controllers? I'm thinking of Spi IO expanders or even a large SPI EEprom for data storage.
The Idea of an IO expander would be pretty cool to allow some GPIO for expansion and playing.
Any ideas?
Cheers
SIO Low Level Access
-
Shendo Verified
- C Programming Expert
- Posts: 250
- Joined: Mar 21, 2012
- I am a: Programmer
- Motto: Never settle
- PlayStation Model: SCPH-7502
- Discord: ShendoXT
- Location: Croatia, EU
It can be done, in fact Tails92's SDK is accessing gamepads directly without BIOS.
Get the source and check "pad.c" in src.
You can also check out Martin's awesome PSX documentation which has many things covered,
including SIO communication.
Get the source and check "pad.c" in src.
You can also check out Martin's awesome PSX documentation which has many things covered,
including SIO communication.
Dev console: SCPH-7502, FreePSXBoot, CH340 serial cable.
SIO means "Serial IO" -> uart (asynchronous)danhans42 wrote:Hi,
SIO channel used for the memory cards and controllers?
you probably mean "PAD" channel, which is similar to SPI (synchronous)
and your idea is a good idea!
Is it SONY custom hw and protocol ? I know the PAD signals and protocol from the memorycard point of view, i don't know how the playstation is generating and handling bits, from what i see there is a dedicated hw which simply require a control_status, and a buffer to read/write from/to. So ... i don't know if that hardware is a real SPI (common and standard protocol), or if it is a customized ASIC.
The CPU is marked as "SONY", mmm 
Code: Select all
/*
from BlackBag/Nagra PSX
0x1f801040 - unsigned char data;
0x1f801044 - unsigned short status;
0x1f80104a - unsigned short cntl;
0x1f80104e - unsigned short baud; not used???
*/
#define SIO_DATA(x) *((unsigned char*)(0x1f801040 + (x<<4)))
#define SIO_STATUS(x) *((unsigned short*)(0x1f801044 + (x<<4)))
#define SIO_CTRL(x) *((unsigned short*)(0x1f80104a + (x<<4)))
#define SIO_BAUD(x) *((unsigned short*)(0x1f80104e + (x<<4)))

Who is online
Users browsing this forum: No registered users and 2 guests