Welcome, Guest!

Here are some links you may find helpful

More detailed info about the PS1 PIO expansion port?

ejack

Member
Original poster
Registered
Aug 25, 2019
12
0
1
Hi all!

I'd like to have more info about the expansion port: I see it used by cheat devices and PSIO so obviously it has great power but I can't find info as to why.
Of course I looked at Nocash's specs and it gives the pin names but I don't know more precisely what is possible, how to use it, etc.
Maybe my google-fu failed me on this one.
Thanks a lot for any info or link you may have for me.
 

FREE_WORLD

Active member
Registered
May 30, 2019
31
6
8
AGName
davesandell
AG Join Date
October 2nd 2012
Work backwards - what are you trying to achieve? Then how can you get from a stock system to your required result? i.e. Does the expansion port hold the gateway to what you are wanting to do with the system? If so - then what do the pins do? Will this then allow you to get the results that you are seeking from the system...
 

Trimesh

Donator
Donator
Registered
May 30, 2019
244
209
43
AGName
Trimesh
AG Join Date
Jul 4, 2008
It's basically just an extension of one of the internal buses in the console - it's got the lower 24 bits of the address bus, a 16 bit data bus and the necessary I/O strobes (read, write, chip select).

It's also got an interrupt line, DMA request and grant, an extra write strobe (apparently used for debug serial on the original target box) and an audio input (digital, basically Sony style 16 bit linear PCM running in slave transmitter mode).

The easiest way to use it is to just connect a ROM to CS0/ and make sure you have the correct magic data in the first 256 bytes - the boot ROM checks for the existence of a "Licensed by Sony Computer Entertainment Inc." string at a specific ROM address and if it's found will jump to the user supplied code.

Note that if you get control of the system using the hook at 0x1f000080 in the ROM it's in a half-initialized state and most of the system services won't work.
 

ejack

Member
Original poster
Registered
Aug 25, 2019
12
0
1
Thank you for your answers.
I'm currently working on the CD drive and didn't have time to learn about PIO from zero.
As a first try I thought I would edit the RAM like giving infinite life to a character as it's easy to see the result and I thought editing one byte would be easy, but I'll also look at what I can do with a ROM.
Thanks to you Trimesh I read about DMA and found some info about it so it will be enough for some time, I'll come back when I'm stuck again.
 

Trimesh

Donator
Donator
Registered
May 30, 2019
244
209
43
AGName
Trimesh
AG Join Date
Jul 4, 2008
Thank you for your answers.
I'm currently working on the CD drive and didn't have time to learn about PIO from zero.
As a first try I thought I would edit the RAM like giving infinite life to a character as it's easy to see the result and I thought editing one byte would be easy, but I'll also look at what I can do with a ROM.
Thanks to you Trimesh I read about DMA and found some info about it so it will be enough for some time, I'll come back when I'm stuck again.

Just for clarity, although DMA is supported on the expansion port, it does not support an external bus master. The DMA has to be set up by the R3K and once it's running the DMA controller itself is the bus master. Basically, you can copy data from the expansion space to or from system memory without CPU intervention - but the process still has to be set up by the CPU first.
 
  • Like
Reactions: pool7

ejack

Member
Original poster
Registered
Aug 25, 2019
12
0
1
Thank you for the precision, playing with a ROM is indeed the simplest thing to do now.
Also I realized that injecting executables from the PIO would greatly help my other projects so maybe I'll change my priorities.
Sadly nearly each time I find subjects about this, they actually are about injecting code using devices like AR or Xploder
 
Last edited:

danhans42

Love PSX :-D
Registered
May 31, 2019
42
47
18
psx0.wordpress.com
AGName
danhans115
AG Join Date
15th September, 2007
I made a DIY romcart and it works fine with Sicklebricks ROMprod and EXE's (I tested sioload with it). Only issue is there is no switch functionality.
 

danhans42

Love PSX :-D
Registered
May 31, 2019
42
47
18
psx0.wordpress.com
AGName
danhans115
AG Join Date
15th September, 2007
256kb. It's just a bare rom, no logic on there or anything and ROMprod is designed for the Xplorer so expects the switch mapped to the xplorer addresses so wouldn't expect it to work.

I could disable the ROM with OE, CE or whatever if needed but haven't bothered.
 

Damian

New member
Sep 15, 2019
4
2
3
AGName
Damian
AG Join Date
Feb 19, 2019
Was it possible to use parallel port as external storage? Something like you pop cartridge into port and after starting console you'll see a new menu that would allow to play audio CD's and manage memcards but also new menu where you can check what is installed and how much space was left. Then after starting for example Tekken 3 in options you can install important game data like sounds, models, textures and so on while FMVs and music is still played from CD?
 

danhans42

Love PSX :-D
Registered
May 31, 2019
42
47
18
psx0.wordpress.com
AGName
danhans115
AG Join Date
15th September, 2007
No link, just forum posts on here and on psxdev.

Just wire up the ROM to the data and address lines, and CE OE etc and that's it.
 

ejack

Member
Original poster
Registered
Aug 25, 2019
12
0
1
No link, just forum posts on here and on psxdev.

Just wire up the ROM to the data and address lines, and CE OE etc and that's it.
I still haven't been able to try by myself but all that is needed for booting a ROM is D0-7, A0-18 (if 512kB), RD and CE, right?
 

ejack

Member
Original poster
Registered
Aug 25, 2019
12
0
1
And second question, what is the timeout for the bus, i.e what is the maximum delay between /RD begin brought low and the actual reading of the data?
I thought it'd be in nocash's specs but it doesn't look like so
 

Trimesh

Donator
Donator
Registered
May 30, 2019
244
209
43
AGName
Trimesh
AG Join Date
Jul 4, 2008
And second question, what is the timeout for the bus, i.e what is the maximum delay between /RD begin brought low and the actual reading of the data?
I thought it'd be in nocash's specs but it doesn't look like so

The wait states on the various I/O regions are programmable in a rather complex and confusing way - using the defaults that are set up by the boot ROM (which is what you need for an expansion ROM), the accesses are fairly slow and anything with an access time of 150ns or better is OK.
 
  • Like
Reactions: ejack and pool7

Make a donation