Added
08 Jul 1997 - GPU関連のいくつかのハードウェアレジスタ (0x1f80xxxx)
22 Jul 1997 - Fixed some typo's...
17 Oct 1997 - Changed a bit of 1f00xxx, and changed 1f80xxxx
04 Dec 1997 - Added memcard fields (1f801040)
- Added a link to a GPU document
Credits:
Foo Chen Hon - IO Device Driver Descriptor Table, some bits on file descs, and mental kicks.
Uxorious - For help on testing when i was psx-less, and some clues.
Me - for the the rest
- 0x00000000-0x001fffff - RAM
- 0x1f000000-0x1f?????? - 拡張端子にマップされたメモリ
- 0x1f800000-0x1f8003ff - スクラッチパッド (1kのみ)
- 0x1f801000-0x1f80???? - ハードウェアレジスタ, その他
- 0x80000000-0x801fffff - RAMのミラー
- 0xa0000000-0xa01fffff - RAMのミラー
- 0xbfc00000-0xbfc7ffff - ROM, カーネル, シェル
0x00000000-0x001fffff
相対オフセット:
Note: Address ranging from 0x00007xxx till 0x0000dfff are not shown, since they
are machine dependent. On a CEX1000 they might not be the same as on a CEX3000.
注:マシンに依存しているので、0x00007xxxから0x0000dfffの範囲のアドレスは示されません。CEX1000では、CEX3000と同じものではないかもしれません。
- 0x00000108 - タスクステートテーブルへのポインタ
- 0x0000010c - バイトサイズ
- 0x00000110 - タスクコールバックテーブルへのポインタ
- 0x00000114 - バイトサイズ
- 0x00000120 - イベントテーブルへのポインタ
- 0x00000124 - バイトサイズ
- 0x00000140 - ファイルディスクプリタテーブルへのポインタ。詳細は下を参照。
- 0x00000144 - バイトサイズ
- 0x00000150 - IOデバイスドライバディスクプリタテーブルへのポインタ。詳細は下を参照。
- 0x00000154 - バイトサイズ
- 0x0000e000 - 0x0000ffff - Start of Kernel Memory Pool.
ファイルディスクリプタ:
The kernel has allocated space for 16 fdescriptors, this means, you can not
have more than 16 files open, whatever devices they use...
カーネルは16個のファイルディスクプリタのスペースを割り当てます。これは、どのデバイスであれ、16以上のファイルをオープンできないことを意味します。
typedef struct _fdTbl_ {
long flag;
long dev_num;
void *buffer;
long numBlocks;
long position; /* the actual seek offset on the file */
long devflag;
long error;
iodd *dev; /* a pointer to a structure containing all
routines like read,write,close,etc... for a
specific device (cdrom,memcard,...) */
/* 特定デバイス(cdrom,メモリカード,..)の
read,write,close等のような全てのルーチンを
含む構造体へのポインタ */
long ???,???;
long handle;
} fdTbl;
IOデバイスドライバディスクプリタ:
typedef struct _iodd_ {
char *dev_name;
long devflag; /* Not sure */
long blockSize;
char *dev_desc; /* Pointer to description */
long init(); /* Init device Driver */
long open(int fd,char *fname) /* open device */
long ???;
long close(); /* close device */
long ioctl(); /* IO control on device */
long read(); /* read from the device */
long write(); /* write on the device */
long erase(); /* erase a file */
long undelete(); /* unerase a file */
long firstfile(); /* find first file matching pattern */
long nextfile(); /* find next file matching pattern */
long format(); /* format the device */
long cd(); /* change directory */
long rename; /* rename file */
long deinit; /* Deinit the device driver */
long ???;
} iodd;
0x1f000000-0x1f??????
相対オフセット:
- 0x1f000000 - リセットベクタ。CPUリセットの極めて初期に呼ばれる。
- 0x1f000004 - 'Licensed by Sony Computer Entertainment Inc.\0'
- 0x1f000080 - ブートベクタ。シェルが実行された直後に呼ばれる。
- 0x1f000084 - 'Licensed by Sony Computer Entertainment Inc.\0'
- 0x1f0000b4 - Code, data, psxに差し込んだデバイス何でも
0x1f801000-0x1f80xxxx
0xbfc00000-0xbfc7ffff
相対オフセット:
- 0x00000100 - ワード0x19951204、コンパイルされた日付を含む
- 0x00000104 - 'Sony Computer Entertainment Inc.'
- 0x0000012c - 'CEX-3000/1001/1002 by K.S.' (私の場合)
- 0x00000150 - 0x0000ffff - 多くのもの、いくつかのシステムコールの初期化
- 0x00010000 - 0x00017fff - This contains most of the kernel system calls code. It is
copied to RAM at 0xa0000500. After it is copied, the kernel jumps to 0xa0000500, where it
clears some memory, (used internally by kernel operations).
カーネルシステムコールコードのほとんどを含む。RAMの0xa0000500にコピーされ、コピー後、0xa0000500にジャンプする。
(カーネルオペレーションで内部的に使用される)いくらかのメモリをクリアする。
- 0x00018000-0x007fffff - This where the Shell is located (CD Player memory card
management,etc...). It is copied to main memory at address 0x80030000, and its there that
is decided what to do, do the country check, and stuff, and if it should return to kernel
to execute an exe file.
シェルが位置する場所(CDプレーヤ、メモリカードマネージャ、その他)。
メインメモリのアドレス0x80030000にコピーされ、
国コードチェックを行い、exeファイルを実行する
カーネルに戻る
si17911@ci.uminho.pt