aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/include/psxapi.h
diff options
context:
space:
mode:
authorJohn Wilbert M. Villamor <lameguy64@gmail.com>2019-04-06 10:11:07 +0800
committerJohn Wilbert M. Villamor <lameguy64@gmail.com>2019-04-06 10:11:07 +0800
commitf3e040230772f978540a71aea43dfde200992922 (patch)
treebd8ca31b72dd01e24980b073854e263589530f56 /libpsn00b/include/psxapi.h
downloadpsn00bsdk-f3e040230772f978540a71aea43dfde200992922.tar.gz
First commit
Diffstat (limited to 'libpsn00b/include/psxapi.h')
-rw-r--r--libpsn00b/include/psxapi.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/libpsn00b/include/psxapi.h b/libpsn00b/include/psxapi.h
new file mode 100644
index 0000000..54b87ee
--- /dev/null
+++ b/libpsn00b/include/psxapi.h
@@ -0,0 +1,97 @@
+#ifndef __PSXAPI__
+#define __PSXAPI__
+
+typedef struct { // Device control block
+ char *name;
+ int flags;
+ int ssize;
+ char *desc;
+ void *f_init;
+ void *f_open;
+ void *f_inout;
+ void *f_close;
+ void *f_ioctl;
+ void *f_read;
+ void *f_write;
+ void *f_erase;
+ void *f_undelete;
+ void *f_firstfile;
+ void *f_nextfile;
+ void *f_format;
+ void *f_chdir;
+ void *f_rename;
+ void *f_remove;
+ void *f_testdevice;
+} DCB;
+
+typedef struct { // File control block
+ int status;
+ unsigned int diskid;
+ void *trns_addr;
+ unsigned int trns_len;
+ unsigned int filepos;
+ unsigned int flags;
+ unsigned int lasterr;
+ DCB *dcb;
+ unsigned int filesize;
+ unsigned int lba;
+ unsigned int fcbnum;
+} FCB;
+
+struct DIRENTRY { // Directory entry
+ char name[20];
+ int attr;
+ int size;
+ struct DIRENTRY *next;
+ int head;
+ char system[4];
+};
+
+// Not recommended to use these functions to install IRQ handlers
+
+typedef struct {
+ unsigned int* next;
+ unsigned int* func2;
+ unsigned int* func1;
+ unsigned int pad;
+} INT_RP;
+
+extern void SysEnqIntRP(int pri, INT_RP *rp);
+extern void SysDeqIntRP(int pri, INT_RP *rp);
+
+// Use event handlers instead
+
+extern int OpenEvent(unsigned int class, int spec, int mode, void (*func)());
+extern int CloseEvent(int ev_desc);
+extern int EnableEvent(int ev_desc);
+extern int DisableEvent(int ev_desc);
+
+// BIOS file functions
+
+extern int open(const char *name, int mode);
+extern int close(int fd);
+extern int seek(int fd, unsigned int offset, int mode);
+extern int read(int fd, char *buff, unsigned int len);
+extern int write(int fd, const char *buff, unsigned int len);
+extern int ioctl(int fd, int cmd, int arg);
+extern struct DIRENTRY *firstfile(const char *wildcard, struct DIRENTRY *entry);
+extern struct DIRENTRY *nextfile(struct DIRENTRY *entry);
+extern int erase(const char *name);
+extern int chdir(const char *path);
+
+#define delete( p ) erase( p )
+#define cd( p ) chdir( p ) // For compatibility
+
+int AddDev(DCB *dcb);
+int DelDev(const char *name);
+extern void ListDev();
+
+extern void EnterCriticalSection();
+extern void ExitCriticalSection();
+
+extern void _96_init();
+extern void _96_remove();
+
+extern void ChangeClearPAD(int mode);
+
+#endif