summaryrefslogtreecommitdiff
path: root/libpsx/src/syscalls.s
diff options
context:
space:
mode:
authorXavi Del Campo <xavi.dcr@tutanota.com>2020-01-31 10:32:23 +0100
committerXavi Del Campo <xavi.dcr@tutanota.com>2020-01-31 10:32:23 +0100
commit7c24e9a9b02b04dcaf9507acb94091ea70a2c02d (patch)
treec28d0748652ad4b4222309e46e6cfc82c0906220 /libpsx/src/syscalls.s
parenta2b7b6bb1cc2f4a3258b7b2dbc92399d151f864d (diff)
downloadpsxsdk-7c24e9a9b02b04dcaf9507acb94091ea70a2c02d.tar.gz
Imported pristine psxsdk-20190410 from official repo
Diffstat (limited to 'libpsx/src/syscalls.s')
-rw-r--r--libpsx/src/syscalls.s344
1 files changed, 344 insertions, 0 deletions
diff --git a/libpsx/src/syscalls.s b/libpsx/src/syscalls.s
new file mode 100644
index 0000000..305d03e
--- /dev/null
+++ b/libpsx/src/syscalls.s
@@ -0,0 +1,344 @@
+# PSX SDK System calls file
+
+.text
+
+# Console functions
+
+.global bios_putchar
+.global bios_puts
+.global printf
+.extern __stdio_direction
+.extern sio_printf
+
+bios_putchar:
+ li $9, 0x3c
+ j 0xa0
+ nop
+
+bios_puts:
+ li $9, 0x3e
+ j 0xa0
+ nop
+
+printf:
+ la $9, __stdio_direction
+ lw $10, 0($9)
+ beq $10, $0, use_bios_printf
+ nop
+ j sio_printf
+ nop
+use_bios_printf:
+ li $9, 0x3f
+ j 0xa0
+ nop
+
+# Memory functions
+# These are not used by PSXSDK, and are here just for completeness.
+
+.global InitHeap
+.global FlushCache
+
+InitHeap:
+ li $9, 0x39
+ j 0xa0
+ nop
+
+FlushCache:
+ li $9, 0x44
+ j 0xa0
+ nop
+
+# GPU functions
+.global GPU_dw
+.global mem2vram
+.global SendGPU
+.global GPU_cw
+.global GPU_cwb
+.global SendPrimitive
+.global GetGPUStatus
+
+GPU_dw:
+ li $9, 0x46
+ j 0xa0
+ nop
+
+mem2vram:
+ li $9, 0x47
+ j 0xa0
+ nop
+
+.global ResetEntryInt
+
+ResetEntryInt:
+ li $9, 0x18
+ j 0xb0
+ nop
+
+# ???
+.global GetKernelDate
+.global GetKernelRomVersion
+.global GetRamSize
+
+GetKernelDate:
+ li $9, 0xb4
+ li $4, 0
+ j 0xa0
+ nop
+
+GetKernelRomVersion:
+ li $9, 0xb4
+ li $4, 2
+ j 0xa0
+ nop
+
+GetRamSize:
+ li $9, 0xb4
+ li $4, 5
+ j 0xa0
+ nop
+
+# Event functions
+.global OpenEvent
+.global EnableEvent
+.global CloseEvent
+.global DisableEvent
+.global WaitEvent
+.global TestEvent
+.global DeliverEvent
+
+OpenEvent:
+ li $9, 0x08
+ j 0xb0
+ nop
+
+EnableEvent:
+ li $9, 0x0c
+ j 0xb0
+ nop
+
+CloseEvent:
+ li $9, 0x09
+ j 0xb0
+ nop
+
+DisableEvent:
+ li $9, 0x0d
+ j 0xb0
+ nop
+
+DeliverEvent:
+ li $9, 0x07
+ j 0xb0
+ nop
+
+WaitEvent:
+ li $9, 0x0a
+ j 0xb0
+ nop
+
+TestEvent:
+ li $9, 0x0b
+ j 0xb0
+ nop
+
+# File I/O functions
+.global open
+.global lseek
+.global read
+.global write
+.global close
+.global cd
+.global firstfile
+.global nextfile
+.global rename
+.global remove
+
+open:
+ li $9, 0x32
+ j 0xb0
+ nop
+
+lseek:
+ li $9, 0x33
+ j 0xb0
+ nop
+
+read:
+ li $9, 0x34
+ j 0xb0
+ nop
+
+write:
+ li $9, 0x35
+ j 0xb0
+ nop
+
+close:
+ li $9, 0x36
+ j 0xb0
+ nop
+
+cd:
+ li $9, 0x40
+ j 0xb0
+ nop
+
+firstfile:
+ li $9, 0x42
+ j 0xb0
+ nop
+
+nextfile:
+ li $9, 0x43
+ j 0xb0
+ nop
+
+rename:
+ li $9, 0x44
+ j 0xb0
+ nop
+
+remove:
+ li $9, 0x45
+ j 0xb0
+ nop
+
+# Exception / Interrupt functions
+
+.global EnterCriticalSection
+.global ExitCriticalSection
+.global SysEnqIntRP
+.global SysDeqIntRP
+
+EnterCriticalSection:
+ li $a0, 1
+ syscall
+ nop
+ jr $ra
+ nop
+
+ExitCriticalSection:
+ li $a0, 2
+ syscall
+ nop
+ jr $ra
+ nop
+
+SysEnqIntRP:
+ li $9, 0x02
+ j 0xc0
+ nop
+
+SysDeqIntRP:
+ li $9, 0x03
+ j 0xc0
+ nop
+
+# Filesystem functions
+
+.global _96_init
+.global _96_remove
+.global _bu_init
+
+_96_init:
+ li $9, 0x71
+ j 0xa0
+ nop
+
+_96_remove:
+ li $9, 0x72
+ j 0xa0
+ nop
+
+_bu_init:
+ li $9, 0x70
+ j 0xa0
+ nop
+
+# Executable loading functions
+
+.global LoadExec
+
+LoadExec:
+ li $9, 0x51
+ j 0xa0
+ nop
+
+# Memory card routines
+
+.global InitCARD
+.global StartCARD
+.global StopCARD
+.global _card_info
+.global _card_load
+.global _card_auto
+.global _card_write
+.global _card_read
+.global _card_status
+.global _new_card
+
+InitCARD:
+ li $9, 0x4a
+ j 0xb0
+ nop
+
+StartCARD:
+ li $9, 0x4b
+ j 0xb0
+ nop
+
+StopCARD:
+ li $9, 0x4c
+ j 0xb0
+ nop
+
+_card_info:
+ li $9, 0xab
+ j 0xa0
+ nop
+
+_card_load:
+ li $9, 0xac
+ j 0xa0
+ nop
+
+_card_auto:
+ li $9, 0xad
+ j 0xa0
+ nop
+
+_card_write:
+ li $9, 0x4e
+ j 0xb0
+ nop
+
+_card_read:
+ li $9, 0x4f
+ j 0xb0
+ nop
+
+_new_card:
+ li $9, 0x50
+ j 0xb0
+ nop
+
+_card_status:
+ li $9, 0x5c
+ j 0xb0
+ nop
+
+# Device functions
+
+.global PrintInstalledDevices
+
+PrintInstalledDevices:
+ li $9, 0x49
+ j 0xb0
+ nop
+
+.global BIOSWarmReboot
+
+BIOSWarmReboot:
+ li $9, 0xa0
+ nop
+ j 0xa0